+ {userContext.authType !== AuthType.ResourceToken && databases.length > 0 && (
+
+
setSearchText(data?.value || "")}
+ size="small"
+ contentBefore={
}
+ style={{ flex: 1 }}
+ />
+
:
}
+ onClick={toggleSortOrder}
+ />
+
+ )}
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "standardCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "Open Cassandra Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Table",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "",
- "isSelected": [Function],
- "label": "Rows",
- "onClick": [Function],
- },
- {
- "isSelected": [Function],
- "label": "Conflicts",
- "onClick": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "Open Cassandra Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Table",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "conflictsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Table",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Keyspace",
- "onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "standardDb",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "iconSrc":
,
- "id": "",
- "isSelected": [Function],
- "label": "Scale",
- "onClick": [Function],
- },
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "Open Cassandra Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Table",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "sampleItems",
- "isSelected": [Function],
- "label": "Rows",
- "onClick": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "Open Cassandra Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Table",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sampleItemsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Table",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Keyspace",
- "onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sharedDatabase",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
{
"children": [
{
@@ -323,6 +114,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Ca
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Table",
@@ -345,6 +141,225 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Ca
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
+ {
+ "children": [
+ {
+ "iconSrc":
,
+ "id": "",
+ "isSelected": [Function],
+ "label": "Scale",
+ "onClick": [Function],
+ },
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "sampleItems",
+ "isSelected": [Function],
+ "label": "Rows",
+ "onClick": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sampleItemsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Table",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Keyspace",
+ "onClick": [Function],
+ "styleClass": "deleteDatabaseMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sharedDatabase",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "",
+ "isSelected": [Function],
+ "label": "Rows",
+ "onClick": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "standardCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "",
+ "isSelected": [Function],
+ "label": "Rows",
+ "onClick": [Function],
+ },
+ {
+ "isSelected": [Function],
+ "label": "Conflicts",
+ "onClick": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Open Cassandra Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Table",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "conflictsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Table",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Keyspace",
+ "onClick": [Function],
+ "styleClass": "deleteDatabaseMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "standardDb",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
]
`;
@@ -384,6 +399,61 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
"label": "Scale & Settings",
"onClick": [Function],
},
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "street",
+ },
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: true",
+ },
+ ],
+ "label": "line2",
+ },
+ {
+ "children": [
+ {
+ "label": "number",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "zip",
+ },
+ ],
+ "label": "address",
+ },
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "orderId",
+ },
+ ],
+ "label": "Schema",
+ "onClick": [Function],
+ },
],
"className": "collectionNode",
"contextMenu": [
@@ -409,83 +479,25 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
/>,
"isExpanded": true,
"isSelected": [Function],
- "label": "standardCollection",
+ "label": "schemaCollection",
"onClick": [Function],
"onCollapsed": [Function],
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
{
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Open Mongo Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Collection",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "",
- "isSelected": [Function],
- "label": "Documents",
- "onClick": [Function],
- },
- {
- "id": "",
- "isSelected": [Function],
- "label": "Scale & Settings",
- "onClick": [Function],
- },
- {
- "isSelected": [Function],
- "label": "Conflicts",
- "onClick": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Open Mongo Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Collection",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "conflictsCollection",
+ "className": "loadMoreNode",
+ "label": "load more",
"onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
},
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Collection",
@@ -503,7 +515,7 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
/>,
"isExpanded": true,
"isSelected": [Function],
- "label": "standardDb",
+ "label": "giganticDatabase",
"onCollapsed": [Function],
"onContextMenuOpen": [Function],
"onExpanded": [Function],
@@ -585,6 +597,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Collection",
@@ -641,6 +658,169 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
"label": "Scale & Settings",
"onClick": [Function],
},
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Open Mongo Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Collection",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "standardCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Open Mongo Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Collection",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "",
+ "isSelected": [Function],
+ "label": "Documents",
+ "onClick": [Function],
+ },
+ {
+ "id": "",
+ "isSelected": [Function],
+ "label": "Scale & Settings",
+ "onClick": [Function],
+ },
+ {
+ "isSelected": [Function],
+ "label": "Conflicts",
+ "onClick": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Open Mongo Shell",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Collection",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "conflictsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Collection",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Database",
+ "onClick": [Function],
+ "styleClass": "deleteDatabaseMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "standardDb",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+]
+`;
+
+exports[`createDatabaseTreeNodes generates the correct tree structure for the SQL API, on Fabric non read-only (native) 1`] = `
+[
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "",
+ "isSelected": [Function],
+ "label": "Items",
+ "onClick": [Function],
+ },
+ {
+ "id": "",
+ "isSelected": [Function],
+ "label": "Settings",
+ "onClick": [Function],
+ },
{
"children": [
{
@@ -701,17 +881,12 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
"contextMenu": [
{
"iconSrc": {},
- "label": "New Query",
+ "label": "New SQL Query",
"onClick": [Function],
},
{
"iconSrc": {},
- "label": "Open Mongo Shell",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Collection",
+ "label": "Delete Container",
"onClick": [Function],
"styleClass": "deleteCollectionMenuItem",
},
@@ -737,14 +912,13 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the Mo
"contextMenu": [
{
"iconSrc": {},
- "label": "New Collection",
+ "label": "Pin to top",
"onClick": [Function],
},
{
"iconSrc": {},
- "label": "Delete Database",
+ "label": "New Container",
"onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
},
],
"iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sampleItemsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Container",
+ "onClick": [Function],
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sharedDatabase",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
{
"children": [
{
@@ -878,6 +1126,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Container",
@@ -894,36 +1147,15 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
+]
+`;
+
+exports[`createDatabaseTreeNodes generates the correct tree structure for the SQL API, on Fabric read-only (mirrored) 1`] = `
+[
{
"children": [
{
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "sampleItems",
- "isSelected": [Function],
- "label": "Items",
- "onClick": [Function],
- },
- {
- "id": "sampleSettings",
- "isSelected": [Function],
- "label": "Settings",
- "onClick": [Function],
- },
- ],
+ "children": undefined,
"className": "collectionNode",
"contextMenu": [
{
@@ -931,141 +1163,6 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"label": "New SQL Query",
"onClick": [Function],
},
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sampleItemsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Container",
- "onClick": [Function],
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sharedDatabase",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "",
- "isSelected": [Function],
- "label": "Items",
- "onClick": [Function],
- },
- {
- "id": "",
- "isSelected": [Function],
- "label": "Settings",
- "onClick": [Function],
- },
- {
- "children": [
- {
- "children": [
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "street",
- },
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: true",
- },
- ],
- "label": "line2",
- },
- {
- "children": [
- {
- "label": "number",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "zip",
- },
- ],
- "label": "address",
- },
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "orderId",
- },
- ],
- "label": "Schema",
- "onClick": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
],
"iconSrc":
,
@@ -1102,11 +1193,42 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
-]
-`;
-
-exports[`createDatabaseTreeNodes generates the correct tree structure for the SQL API, on Fabric read-only (mirrored) 1`] = `
-[
+ {
+ "children": [
+ {
+ "children": undefined,
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sampleItemsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": undefined,
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sharedDatabase",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
{
"children": [
{
@@ -1164,10 +1286,126 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
+]
+`;
+
+exports[`createDatabaseTreeNodes generates the correct tree structure for the SQL API, on Portal 1`] = `
+[
{
"children": [
{
- "children": undefined,
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Stored Procedure",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "",
+ "isSelected": [Function],
+ "label": "Items",
+ "onClick": [Function],
+ },
+ {
+ "id": "",
+ "isSelected": [Function],
+ "label": "Scale & Settings",
+ "onClick": [Function],
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "street",
+ },
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: true",
+ },
+ ],
+ "label": "line2",
+ },
+ {
+ "children": [
+ {
+ "label": "number",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "zip",
+ },
+ ],
+ "label": "address",
+ },
+ {
+ "children": [
+ {
+ "label": "string",
+ },
+ {
+ "label": "HasNulls: false",
+ },
+ ],
+ "label": "orderId",
+ },
+ ],
+ "label": "Schema",
+ "onClick": [Function],
+ },
+ {
+ "children": [],
+ "label": "Stored Procedures",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "User Defined Functions",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "Triggers",
+ "onExpanded": [Function],
+ },
+ ],
"className": "collectionNode",
"contextMenu": [
{
@@ -1175,42 +1413,27 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"label": "New SQL Query",
"onClick": [Function],
},
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sampleItemsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": undefined,
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sharedDatabase",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "children": undefined,
- "className": "collectionNode",
- "contextMenu": [
{
"iconSrc": {},
- "label": "New SQL Query",
+ "label": "New Stored Procedure",
"onClick": [Function],
},
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
],
"iconSrc":
,
@@ -1241,11 +1481,145 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
-]
-`;
-
-exports[`createDatabaseTreeNodes generates the correct tree structure for the SQL API, on Portal 1`] = `
-[
+ {
+ "children": [
+ {
+ "iconSrc":
,
+ "id": "",
+ "isSelected": [Function],
+ "label": "Scale",
+ "onClick": [Function],
+ },
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Stored Procedure",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "sampleItems",
+ "isSelected": [Function],
+ "label": "Items",
+ "onClick": [Function],
+ },
+ {
+ "id": "sampleSettings",
+ "isSelected": [Function],
+ "label": "Settings",
+ "onClick": [Function],
+ },
+ {
+ "children": [],
+ "label": "Stored Procedures",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "User Defined Functions",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "Triggers",
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Stored Procedure",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sampleItemsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Container",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Database",
+ "onClick": [Function],
+ "styleClass": "deleteDatabaseMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sharedDatabase",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
{
"children": [
{
@@ -1491,6 +1865,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Container",
@@ -1513,140 +1892,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
- {
- "children": [
- {
- "iconSrc":
,
- "id": "",
- "isSelected": [Function],
- "label": "Scale",
- "onClick": [Function],
- },
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "sampleItems",
- "isSelected": [Function],
- "label": "Items",
- "onClick": [Function],
- },
- {
- "id": "sampleSettings",
- "isSelected": [Function],
- "label": "Settings",
- "onClick": [Function],
- },
- {
- "children": [],
- "label": "Stored Procedures",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "User Defined Functions",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "Triggers",
- "onExpanded": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sampleItemsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Container",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Database",
- "onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sharedDatabase",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
+]
+`;
+
+exports[`createDatabaseTreeNodes using NoSQL API on Hosted Platform creates expected tree 1`] = `
+[
{
"children": [
{
@@ -1810,6 +2060,11 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
],
"className": "databaseNode",
"contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
{
"iconSrc": {},
"label": "New Container",
@@ -1832,11 +2087,145 @@ exports[`createDatabaseTreeNodes generates the correct tree structure for the SQ
"onContextMenuOpen": [Function],
"onExpanded": [Function],
},
-]
-`;
-
-exports[`createDatabaseTreeNodes using NoSQL API on Hosted Platform creates expected tree 1`] = `
-[
+ {
+ "children": [
+ {
+ "iconSrc":
,
+ "id": "",
+ "isSelected": [Function],
+ "label": "Scale",
+ "onClick": [Function],
+ },
+ {
+ "children": [
+ {
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Stored Procedure",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "id": "sampleItems",
+ "isSelected": [Function],
+ "label": "Items",
+ "onClick": [Function],
+ },
+ {
+ "id": "sampleSettings",
+ "isSelected": [Function],
+ "label": "Settings",
+ "onClick": [Function],
+ },
+ {
+ "children": [],
+ "label": "Stored Procedures",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "User Defined Functions",
+ "onExpanded": [Function],
+ },
+ {
+ "children": [],
+ "label": "Triggers",
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "collectionNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "New SQL Query",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Stored Procedure",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New UDF",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Trigger",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Container",
+ "onClick": [Function],
+ "styleClass": "deleteCollectionMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sampleItemsCollection",
+ "onClick": [Function],
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
+ ],
+ "className": "databaseNode",
+ "contextMenu": [
+ {
+ "iconSrc": {},
+ "label": "Pin to top",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "New Container",
+ "onClick": [Function],
+ },
+ {
+ "iconSrc": {},
+ "label": "Delete Database",
+ "onClick": [Function],
+ "styleClass": "deleteDatabaseMenuItem",
+ },
+ ],
+ "iconSrc":
,
+ "isExpanded": true,
+ "isSelected": [Function],
+ "label": "sharedDatabase",
+ "onCollapsed": [Function],
+ "onContextMenuOpen": [Function],
+ "onExpanded": [Function],
+ },
{
"children": [
{
@@ -2079,138 +2468,9 @@ exports[`createDatabaseTreeNodes using NoSQL API on Hosted Platform creates expe
"contextMenu": [
{
"iconSrc": {},
- "label": "New Container",
+ "label": "Pin to top",
"onClick": [Function],
},
- {
- "iconSrc": {},
- "label": "Delete Database",
- "onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "standardDb",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "iconSrc":
,
- "id": "",
- "isSelected": [Function],
- "label": "Scale",
- "onClick": [Function],
- },
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "sampleItems",
- "isSelected": [Function],
- "label": "Items",
- "onClick": [Function],
- },
- {
- "id": "sampleSettings",
- "isSelected": [Function],
- "label": "Settings",
- "onClick": [Function],
- },
- {
- "children": [],
- "label": "Stored Procedures",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "User Defined Functions",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "Triggers",
- "onExpanded": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "sampleItemsCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
{
"iconSrc": {},
"label": "New Container",
@@ -2228,192 +2488,7 @@ exports[`createDatabaseTreeNodes using NoSQL API on Hosted Platform creates expe
/>,
"isExpanded": true,
"isSelected": [Function],
- "label": "sharedDatabase",
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "children": [
- {
- "children": [
- {
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "id": "",
- "isSelected": [Function],
- "label": "Items",
- "onClick": [Function],
- },
- {
- "id": "",
- "isSelected": [Function],
- "label": "Scale & Settings",
- "onClick": [Function],
- },
- {
- "children": [
- {
- "children": [
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "street",
- },
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: true",
- },
- ],
- "label": "line2",
- },
- {
- "children": [
- {
- "label": "number",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "zip",
- },
- ],
- "label": "address",
- },
- {
- "children": [
- {
- "label": "string",
- },
- {
- "label": "HasNulls: false",
- },
- ],
- "label": "orderId",
- },
- ],
- "label": "Schema",
- "onClick": [Function],
- },
- {
- "children": [],
- "label": "Stored Procedures",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "User Defined Functions",
- "onExpanded": [Function],
- },
- {
- "children": [],
- "label": "Triggers",
- "onExpanded": [Function],
- },
- ],
- "className": "collectionNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New SQL Query",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Stored Procedure",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New UDF",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "New Trigger",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Container",
- "onClick": [Function],
- "styleClass": "deleteCollectionMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "schemaCollection",
- "onClick": [Function],
- "onCollapsed": [Function],
- "onContextMenuOpen": [Function],
- "onExpanded": [Function],
- },
- {
- "className": "loadMoreNode",
- "label": "load more",
- "onClick": [Function],
- },
- ],
- "className": "databaseNode",
- "contextMenu": [
- {
- "iconSrc": {},
- "label": "New Container",
- "onClick": [Function],
- },
- {
- "iconSrc": {},
- "label": "Delete Database",
- "onClick": [Function],
- "styleClass": "deleteDatabaseMenuItem",
- },
- ],
- "iconSrc":
,
- "isExpanded": true,
- "isSelected": [Function],
- "label": "giganticDatabase",
+ "label": "standardDb",
"onCollapsed": [Function],
"onContextMenuOpen": [Function],
"onExpanded": [Function],
diff --git a/src/Explorer/Tree/treeNodeUtil.test.ts b/src/Explorer/Tree/treeNodeUtil.test.ts
index 64cc3a6c2..c64f9276e 100644
--- a/src/Explorer/Tree/treeNodeUtil.test.ts
+++ b/src/Explorer/Tree/treeNodeUtil.test.ts
@@ -363,7 +363,7 @@ describe("createDatabaseTreeNodes", () => {
},
} as never,
});
- nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab);
+ nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab, "");
});
it("creates expected tree", () => {
@@ -445,6 +445,7 @@ describe("createDatabaseTreeNodes", () => {
isNotebookEnabled,
useDatabases.getState().databases,
refreshActiveTab,
+ "",
);
expect(nodes).toMatchSnapshot();
},
@@ -455,7 +456,7 @@ describe("createDatabaseTreeNodes", () => {
// The goal is to cover some key behaviors like loading child nodes, opening tabs/side panels, etc.
it("adds new collections to database as they appear", () => {
- const nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab);
+ const nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab, "");
const giganticDbNode = nodes.find((node) => node.label === giganticDb.id());
expect(giganticDbNode).toBeDefined();
expect(giganticDbNode.children.map((node) => node.label)).toStrictEqual(["schemaCollection", "load more"]);
@@ -487,7 +488,7 @@ describe("createDatabaseTreeNodes", () => {
},
} as unknown as DataModels.DatabaseAccount,
});
- nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab);
+ nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab, "");
standardDbNode = nodes.find((node) => node.label === standardDb.id());
sharedDbNode = nodes.find((node) => node.label === sharedDb.id());
giganticDbNode = nodes.find((node) => node.label === giganticDb.id());
@@ -642,7 +643,7 @@ describe("createDatabaseTreeNodes", () => {
setup();
// Rebuild the nodes after changing the user/config context.
- nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab);
+ nodes = createDatabaseTreeNodes(explorer, false, useDatabases.getState().databases, refreshActiveTab, "");
standardDbNode = nodes.find((node) => node.label === standardDb.id());
standardCollectionNode = standardDbNode.children.find((node) => node.label === standardCollection.id());
diff --git a/src/Explorer/Tree/treeNodeUtil.tsx b/src/Explorer/Tree/treeNodeUtil.tsx
index 04eafed3f..224542755 100644
--- a/src/Explorer/Tree/treeNodeUtil.tsx
+++ b/src/Explorer/Tree/treeNodeUtil.tsx
@@ -1,11 +1,17 @@
-import { DatabaseRegular, DocumentMultipleRegular, EyeRegular, SettingsRegular } from "@fluentui/react-icons";
+import {
+ DatabaseRegular,
+ DocumentMultipleRegular,
+ EyeRegular,
+ Pin16Filled,
+ SettingsRegular,
+} from "@fluentui/react-icons";
import { TreeNode } from "Explorer/Controls/TreeComponent/TreeNodeComponent";
import { collectionWasOpened } from "Explorer/MostRecentActivity/MostRecentActivity";
import TabsBase from "Explorer/Tabs/TabsBase";
import StoredProcedure from "Explorer/Tree/StoredProcedure";
import Trigger from "Explorer/Tree/Trigger";
import UserDefinedFunction from "Explorer/Tree/UserDefinedFunction";
-import { useDatabases } from "Explorer/useDatabases";
+import { DatabaseSortOrder, useDatabases } from "Explorer/useDatabases";
import { isFabric, isFabricMirrored, isFabricNative, isFabricNativeReadOnly } from "Platform/Fabric/FabricUtil";
import { getItemName } from "Utils/APITypeUtils";
import { isServerlessAccount } from "Utils/CapabilityUtils";
@@ -27,7 +33,10 @@ export const shouldShowScriptNodes = (): boolean => {
const TreeDatabaseIcon =
;
const TreeSettingsIcon =
;
const TreeCollectionIcon =
;
-const GlobalSecondaryIndexCollectionIcon =
; //check icon
+const GlobalSecondaryIndexCollectionIcon =
;
+
+const pinnedIconStyle: React.CSSProperties = { display: "inline-flex", alignItems: "center", gap: "2px" };
+const pinnedBadgeStyle: React.CSSProperties = { color: "var(--colorBrandForeground1)" };
export const createSampleDataTreeNodes = (sampleDataResourceTokenCollection: ViewModels.CollectionBase): TreeNode[] => {
const updatedSampleTree: TreeNode = {
@@ -131,8 +140,31 @@ export const createDatabaseTreeNodes = (
isNotebookEnabled: boolean,
databases: ViewModels.Database[],
refreshActiveTab: (comparator: (tab: TabsBase) => boolean) => void,
+ searchText = "",
+ sortOrder: DatabaseSortOrder = "az",
+ pinnedDatabaseIds: Set
= new Set(),
): TreeNode[] => {
- const databaseTreeNodes: TreeNode[] = databases.map((database: ViewModels.Database) => {
+ // Filter databases based on search text (cache lowercase to avoid repeated conversion)
+ const lowerSearch = searchText.toLowerCase();
+ const filteredDatabases = searchText
+ ? databases.filter((db) => db.id().toLowerCase().includes(lowerSearch))
+ : databases;
+
+ // Sort: pinned first, then by name (A-Z or Z-A) within each group
+ const orderedDatabases = [...filteredDatabases].sort((first, second) => {
+ const isFirstPinned = pinnedDatabaseIds.has(first.id());
+ const isSecondPinned = pinnedDatabaseIds.has(second.id());
+ if (isFirstPinned !== isSecondPinned) {
+ return isFirstPinned ? -1 : 1;
+ }
+ const firstName = first.id();
+ const secondName = second.id();
+ return sortOrder === "az"
+ ? firstName.localeCompare(secondName, undefined, { sensitivity: "base" })
+ : secondName.localeCompare(firstName, undefined, { sensitivity: "base" });
+ });
+
+ const databaseTreeNodes: TreeNode[] = orderedDatabases.map((database: ViewModels.Database) => {
const buildDatabaseChildNodes = (databaseNode: TreeNode) => {
databaseNode.children = [];
if (database.isDatabaseShared() && configContext.platform !== Platform.Fabric) {
@@ -170,13 +202,24 @@ export const createDatabaseTreeNodes = (
}
};
+ const isPinned = pinnedDatabaseIds.has(database.id());
+
+ const databaseIcon = isPinned ? (
+
+
+
+
+ ) : (
+ TreeDatabaseIcon
+ );
+
const databaseNode: TreeNode = {
label: database.id(),
className: "databaseNode",
children: [],
isSelected: () => useSelectedNode.getState().isDataNodeSelected(database.id()),
contextMenu: ResourceTreeContextMenuButtonFactory.createDatabaseContextMenu(container, database.id()),
- iconSrc: TreeDatabaseIcon,
+ iconSrc: databaseIcon,
onExpanded: async () => {
useSelectedNode.getState().setSelectedNode(database);
if (!databaseNode.children || databaseNode.children?.length === 0) {
@@ -192,7 +235,6 @@ export const createDatabaseTreeNodes = (
isExpanded: database.isDatabaseExpanded(),
onCollapsed: () => {
database.collapseDatabase();
- // useCommandBar.getState().setContextButtons([]);
useDatabases.getState().updateDatabase(database);
},
};
@@ -242,13 +284,13 @@ export const buildCollectionNode = (
(tab: TabsBase) =>
tab.collection?.id() === collection.id() && tab.collection.databaseId === collection.databaseId,
);
- useDatabases.getState().updateDatabase(database);
-
- // If we're showing script nodes, start loading them.
+ // If we're showing script nodes, start loading them in parallel.
if (shouldShowScriptNodes()) {
- await collection.loadStoredProcedures();
- await collection.loadUserDefinedFunctions();
- await collection.loadTriggers();
+ await Promise.all([
+ collection.loadStoredProcedures(),
+ collection.loadUserDefinedFunctions(),
+ collection.loadTriggers(),
+ ]);
}
useDatabases.getState().updateDatabase(database);
@@ -257,7 +299,6 @@ export const buildCollectionNode = (
onContextMenuOpen: () => useSelectedNode.getState().setSelectedNode(collection),
onCollapsed: () => {
collection.collapseCollection();
- // useCommandBar.getState().setContextButtons([]);
useDatabases.getState().updateDatabase(database);
},
isExpanded: collection.isCollectionExpanded(),
diff --git a/src/Explorer/useDatabases.ts b/src/Explorer/useDatabases.ts
index b6420647e..1d24a545f 100644
--- a/src/Explorer/useDatabases.ts
+++ b/src/Explorer/useDatabases.ts
@@ -1,15 +1,25 @@
-import _ from "underscore";
import create, { UseStore } from "zustand";
import * as Constants from "../Common/Constants";
import * as ViewModels from "../Contracts/ViewModels";
+import * as LocalStorageUtility from "../Shared/LocalStorageUtility";
+import { StorageKey } from "../Shared/StorageUtility";
import { userContext } from "../UserContext";
import { useSelectedNode } from "./useSelectedNode";
+export type DatabaseSortOrder = "az" | "za";
+
interface DatabasesState {
databases: ViewModels.Database[];
resourceTokenCollection: ViewModels.CollectionBase;
sampleDataResourceTokenCollection: ViewModels.CollectionBase;
databasesFetchedSuccessfully: boolean; // Track if last database fetch was successful
+ searchText: string;
+ sortOrder: DatabaseSortOrder;
+ pinnedDatabaseIds: Set;
+ setSearchText: (searchText: string) => void;
+ setSortOrder: (sortOrder: DatabaseSortOrder) => void;
+ togglePinDatabase: (databaseId: string) => void;
+ isPinned: (databaseId: string) => boolean;
updateDatabase: (database: ViewModels.Database) => void;
addDatabases: (databases: ViewModels.Database[]) => void;
deleteDatabase: (database: ViewModels.Database) => void;
@@ -27,11 +37,41 @@ interface DatabasesState {
validateCollectionId: (databaseId: string, collectionId: string) => Promise;
}
+const loadPinnedDatabases = (): Set => {
+ const stored = LocalStorageUtility.getEntryObject(StorageKey.PinnedDatabases);
+ return new Set(Array.isArray(stored) ? stored : []);
+};
+
+const loadSortOrder = (): DatabaseSortOrder => {
+ const stored = LocalStorageUtility.getEntryString(StorageKey.DatabaseSortOrder);
+ return stored === "az" || stored === "za" ? stored : "az";
+};
+
export const useDatabases: UseStore = create((set, get) => ({
databases: [],
resourceTokenCollection: undefined,
sampleDataResourceTokenCollection: undefined,
databasesFetchedSuccessfully: false,
+ searchText: "",
+ sortOrder: loadSortOrder(),
+ pinnedDatabaseIds: loadPinnedDatabases(),
+ setSearchText: (searchText: string) => set({ searchText }),
+ setSortOrder: (sortOrder: DatabaseSortOrder) => {
+ LocalStorageUtility.setEntryString(StorageKey.DatabaseSortOrder, sortOrder);
+ set({ sortOrder });
+ },
+ togglePinDatabase: (databaseId: string) => {
+ const current = get().pinnedDatabaseIds;
+ const updated = new Set(current);
+ if (updated.has(databaseId)) {
+ updated.delete(databaseId);
+ } else {
+ updated.add(databaseId);
+ }
+ LocalStorageUtility.setEntryObject(StorageKey.PinnedDatabases, [...updated]);
+ set({ pinnedDatabaseIds: updated });
+ },
+ isPinned: (databaseId: string) => get().pinnedDatabaseIds.has(databaseId),
updateDatabase: (updatedDatabase: ViewModels.Database) =>
set((state) => {
const updatedDatabases = state.databases.map((database: ViewModels.Database) => {
@@ -45,29 +85,27 @@ export const useDatabases: UseStore = create((set, get) => ({
}),
addDatabases: (databases: ViewModels.Database[]) =>
set((state) => ({
- databases: [...state.databases, ...databases].sort((db1, db2) => db1.id().localeCompare(db2.id())),
+ databases: [...state.databases, ...databases],
})),
deleteDatabase: (database: ViewModels.Database) =>
- set((state) => ({ databases: state.databases.filter((db) => database.id() !== db.id()) })),
+ set((state) => {
+ const updated = new Set(state.pinnedDatabaseIds);
+ if (updated.delete(database.id())) {
+ LocalStorageUtility.setEntryObject(StorageKey.PinnedDatabases, [...updated]);
+ }
+ return {
+ databases: state.databases.filter((db) => database.id() !== db.id()),
+ pinnedDatabaseIds: updated,
+ };
+ }),
clearDatabases: () => set(() => ({ databases: [] })),
isSaveQueryEnabled: () => {
- const savedQueriesDatabase: ViewModels.Database = _.find(
- get().databases,
- (database: ViewModels.Database) => database.id() === Constants.SavedQueries.DatabaseName,
+ const savedQueriesDatabase = get().databases.find(
+ (database) => database.id() === Constants.SavedQueries.DatabaseName,
);
- if (!savedQueriesDatabase) {
- return false;
- }
- const savedQueriesCollection: ViewModels.Collection =
- savedQueriesDatabase &&
- _.find(
- savedQueriesDatabase.collections(),
- (collection: ViewModels.Collection) => collection.id() === Constants.SavedQueries.CollectionName,
- );
- if (!savedQueriesCollection) {
- return false;
- }
- return true;
+ return !!savedQueriesDatabase
+ ?.collections()
+ ?.find((collection) => collection.id() === Constants.SavedQueries.CollectionName);
},
findDatabaseWithId: (databaseId: string, isSampleDatabase?: boolean) => {
return isSampleDatabase === undefined
@@ -100,44 +138,24 @@ export const useDatabases: UseStore = create((set, get) => ({
return true;
},
loadDatabaseOffers: async () => {
- await Promise.all(
- get().databases?.map(async (database: ViewModels.Database) => {
- await database.loadOffer();
- }),
- );
+ await Promise.all(get().databases.map((database: ViewModels.Database) => database.loadOffer()));
},
loadAllOffers: async () => {
await Promise.all(
- get().databases?.map(async (database: ViewModels.Database) => {
- await database.loadOffer();
- await database.loadCollections();
+ get().databases.map(async (database: ViewModels.Database) => {
+ await Promise.all([database.loadOffer(), database.loadCollections()]);
await Promise.all(
- (database.collections() || []).map(async (collection: ViewModels.Collection) => {
- await collection.loadOffer();
- }),
+ (database.collections() || []).map((collection: ViewModels.Collection) => collection.loadOffer()),
);
}),
);
},
isFirstResourceCreated: () => {
const databases = get().databases;
-
- if (!databases || databases.length === 0) {
+ if (databases.length === 0) {
return false;
}
-
- return databases.some((database) => {
- // user has created at least one collection
- if (database.collections()?.length > 0) {
- return true;
- }
- // user has created a database with shared throughput
- if (database.offer()) {
- return true;
- }
- // use has created an empty database without shared throughput
- return false;
- });
+ return databases.some((database) => database.collections()?.length > 0 || !!database.offer());
},
findSelectedDatabase: (): ViewModels.Database => {
const selectedNode = useSelectedNode.getState().selectedNode;
@@ -145,7 +163,7 @@ export const useDatabases: UseStore = create((set, get) => ({
return undefined;
}
if (selectedNode.nodeKind === "Database") {
- return _.find(get().databases, (database: ViewModels.Database) => database.id() === selectedNode.id());
+ return get().databases.find((database) => database.id() === selectedNode.id());
}
if (selectedNode.nodeKind === "Collection") {
diff --git a/src/Index.tsx b/src/Index.tsx
index d660eaed0..cfdf5cf6a 100644
--- a/src/Index.tsx
+++ b/src/Index.tsx
@@ -1,3 +1,4 @@
+import "./i18n";
import React, { useState } from "react";
import ReactDOM from "react-dom";
import Arrow from "../images/Arrow.svg";
diff --git a/src/Localization/LocProject.json b/src/Localization/LocProject.json
new file mode 100644
index 000000000..c8af39c3f
--- /dev/null
+++ b/src/Localization/LocProject.json
@@ -0,0 +1,14 @@
+{
+ "Projects": [
+ {
+ "LanguageSet": "Azure_LanguagesExt",
+ "LocItems": [
+ {
+ "SourceFile": "src\\Localization\\en\\Resources.json",
+ "CopyOption": "LangIDOnPath",
+ "OutputPath": "src\\Localization"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/Localization/cs/Resources.json b/src/Localization/cs/Resources.json
new file mode 100644
index 000000000..f61df6033
--- /dev/null
+++ b/src/Localization/cs/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Zrušit",
+ "close": "Zavřít",
+ "save": "Uložit",
+ "delete": "Odstranit",
+ "update": "Aktualizovat",
+ "discard": "Zahodit",
+ "execute": "Provést",
+ "loading": "Načítání",
+ "loadingEllipsis": "Načítání…",
+ "next": "Další",
+ "previous": "Předchozí",
+ "yes": "Ano",
+ "no": "Ne",
+ "result": "Výsledek",
+ "learnMore": "Další informace",
+ "getStarted": "Začínáme",
+ "retry": "Zkusit znovu",
+ "apply": "Použít",
+ "refresh": "Aktualizovat",
+ "copy": "Kopírovat",
+ "create": "Vytvořit",
+ "confirm": "Potvrdit",
+ "open": "Otevřít",
+ "rename": "Přejmenovat",
+ "download": "Stáhnout",
+ "upload": "Nahrát",
+ "connect": "Připojit",
+ "remove": "Odebrat",
+ "load": "Načíst",
+ "publish": "Publikovat",
+ "browse": "Procházet",
+ "increaseValueBy1": "Zvýšit hodnotu o 1",
+ "decreaseValueBy1": "Snížit hodnotu o 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Vítá vás Azure Cosmos DB",
+ "postgres": "Vítá vás Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Vítá vás Azure DocumentDB (s kompatibilitou MongoDB)"
+ },
+ "subtitle": {
+ "default": "Globálně distribuovaná databázová služba s více modely pro libovolné škálování",
+ "getStarted": "Začněte s našimi ukázkovými datovými sadami, dokumentací a dalšími nástroji."
+ },
+ "quickStart": {
+ "title": "Spustit rychlý start",
+ "description": "Spusťte kurz rychlého startu a začněte pracovat s ukázkovými daty"
+ },
+ "newCollection": {
+ "title": "Nové: {{collectionName}}",
+ "description": "Vytvořit nový kontejner pro úložiště a propustnost"
+ },
+ "samplesGallery": {
+ "title": "Galerie ukázek Azure Cosmos DB",
+ "description": "Prohlédněte si ukázky, které představují škálovatelné a inteligentní vzory aplikací. Vyzkoušejte si to hned a uvidíte, jak rychle můžete s Cosmos DB přejít od konceptu ke kódu."
+ },
+ "connectCard": {
+ "title": "Připojit",
+ "description": "Dáváte přednost používání vlastních nástrojů? Najděte připojovací řetězec, který potřebujete k připojení",
+ "pgAdmin": {
+ "title": "Připojit pomocí pgAdmin",
+ "description": "Upřednostňujete pgAdmin? Tady najdete připojovací řetězce."
+ },
+ "vsCode": {
+ "title": "Připojení pomocí VS Code",
+ "description": "Dotazujte se na své clustery MongoDB a DocumentDB a spravujte je ve Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Prostředí PostgreSQL",
+ "description": "Vytvoření tabulky a interakce s daty pomocí rozhraní prostředí PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Prostředí Mongo",
+ "description": "Vytvořte kolekci a pracujte s daty pomocí rozhraní prostředí MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Začínáte s Cosmos DB PGSQL?",
+ "body": "Vítejte! Pokud s Cosmos DB PGSQL začínáte a potřebujete pomoc s prvními kroky, najdete tady ukázková data a dotazy."
+ },
+ "resetPassword": {
+ "headline": "Vytvořte si heslo",
+ "body": "Pokud jste si ještě nezměnili heslo, změňte si ho teď."
+ },
+ "coachMark": {
+ "headline": "Začít s ukázkou {{collectionName}}",
+ "body": "Provedeme vás vytvořením ukázkového kontejneru s ukázkovými daty. Pak vás provedeme průzkumníkem dat. Můžete také zrušit spuštění této prohlídky a prozkoumat si vše sami"
+ }
+ },
+ "sections": {
+ "recents": "Poslední",
+ "clearRecents": "Vymazat poslední",
+ "top3": "3 nejdůležitější věci, které potřebujete vědět",
+ "learningResources": "Studijní materiály",
+ "nextSteps": "Další kroky",
+ "tipsAndLearnMore": "Tipy a další informace",
+ "notebook": "Poznámkový blok",
+ "needHelp": "Potřebujete pomoc?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Pokročilé vzory modelování",
+ "description": "Seznamte se s pokročilými strategiemi pro optimalizaci databáze."
+ },
+ "partitioning": {
+ "title": "Osvědčené postupy vytváření oddílů",
+ "description": "Naučte se používat strategie datového modelu a rozdělení na oddíly"
+ },
+ "resourcePlanning": {
+ "title": "Naplánujte si požadavky na zdroje",
+ "description": "Seznamte se s různými možnostmi konfigurace."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Co je rozhraní MongoDB API?",
+ "description": "Seznamte se se službou Azure Cosmos DB for MongoDB a s jejími funkcemi."
+ },
+ "features": {
+ "title": "Funkce a syntaxe",
+ "description": "Objevte výhody a funkce"
+ },
+ "migrate": {
+ "title": "Migrovat data",
+ "description": "Kroky před migrací pro přesun dat"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Vytvořte aplikaci Java",
+ "description": "Vytvořte aplikaci v Javě pomocí sady SDK."
+ },
+ "partitioning": {
+ "title": "Osvědčené postupy vytváření oddílů",
+ "description": "Zjistěte, jak funguje dělení na oddíly."
+ },
+ "requestUnits": {
+ "title": "Jednotky žádosti (RU)",
+ "description": "Vysvětlení poplatků za RU"
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modelování dat",
+ "description": "Doporučení k modelování dat grafu"
+ },
+ "partitioning": {
+ "title": "Osvědčené postupy vytváření oddílů",
+ "description": "Zjistěte, jak funguje dělení na oddíly"
+ },
+ "queryData": {
+ "title": "Data dotazu",
+ "description": "Dotazování na data pomocí Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Co je Table API?",
+ "description": "Seznamte se se službou Azure Cosmos DB for Table a s jejími funkcemi"
+ },
+ "migrate": {
+ "title": "Migrujte svá data",
+ "description": "Informace o migraci dat"
+ },
+ "faq": {
+ "title": "Nejčastější dotazy k Azure Cosmos DB for Table",
+ "description": "Běžné otázky k Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Klávesové zkratky Data Exploreru",
+ "description": "Naučte se klávesové zkratky pro navigaci v Data Exploreru."
+ },
+ "liveTv": {
+ "title": "Naučte se základy",
+ "description": "Podívejte se na úvodní videa a videa s postupy Azure Cosmos DB Live TV."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Začínáme s používáním sady SDK",
+ "description": "Přečtěte si o sadě Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Migrovat data",
+ "description": "Migrujte data pomocí služeb Azure a opensourcových řešení."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Vytvořit aplikaci s Node.js",
+ "description": "Vytvořte aplikaci Node.js."
+ },
+ "gettingStarted": {
+ "title": "Úvodní příručka",
+ "description": "Seznamte se se základy, které vám pomůžou začít."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Vytvořit kontejner",
+ "description": "Seznamte se s možnostmi vytvoření kontejneru."
+ },
+ "throughput": {
+ "title": "Zřídit propustnost",
+ "description": "Zjistěte, jak nakonfigurovat propustnost."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Začínáme ",
+ "description": "Vytvoření, dotaz a procházení pomocí konzoly Gremlin"
+ },
+ "importData": {
+ "title": "Importovat data grafu",
+ "description": "Naučte se hromadně přijímat data pomocí BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Vytvoření aplikace .NET",
+ "description": "Jak získat přístup k Azure Cosmos DB for Table z aplikace .NET"
+ },
+ "java": {
+ "title": "Vytvořte aplikaci Java",
+ "description": "Vytvořte aplikaci Azure Cosmos DB for Table se sadou Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modelování dat",
+ "distributionColumn": "Jak zvolit sloupec pro distribuci",
+ "buildApps": "Vytvářejte aplikace pomocí Pythonu, Javy nebo Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrovat data",
+ "vectorSearch": "Vytvářejte AI aplikace pomocí vektorového vyhledávání",
+ "buildApps": "Vytvářejte aplikace pomocí Node.js"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Optimalizace výkonu",
+ "diagnosticQueries": "Užitečné diagnostické dotazy",
+ "sqlReference": "Referenční informace k distribuovanému SQL"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vektorové vyhledávání",
+ "textIndexing": "Indexování textu",
+ "troubleshoot": "Řešení častých problémů"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Vytvořit databázi",
+ "useTitle": "Použijte svou databázi",
+ "newContainer": {
+ "title": "Nový kontejner",
+ "description": "Vytvořit cílový kontejner pro uložení dat"
+ },
+ "sampleData": {
+ "title": "Ukázková data",
+ "description": "Načtěte ukázková data do své databáze"
+ },
+ "sampleVectorData": {
+ "title": "Ukázková vektorová data",
+ "description": "Načíst ukázková vektorová data pomocí text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Vývoj aplikací",
+ "description": "Začněte tady, pokud chcete k vytváření aplikací použít sadu SDK"
+ },
+ "sampleGallery": {
+ "title": "Galerie ukázek",
+ "description": "Získejte komplexní ukázky z reálného světa"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Ukázková data",
+ "startButton": "Spustit",
+ "createPrompt": "Vytvořte kontejner {{containerName}} a importujte do něj ukázková data. Může to trvat několik minut.",
+ "creatingContainer": "Vytváří se kontejner {{containerName}}...",
+ "importingData": "Importují se data do {{containerName}}...",
+ "success": "{{containerName}} – úspěšně vytvořeno s ukázkovými daty",
+ "errorContainerExists": "Kontejner {{containerName}} v databázi {{databaseName}} už existuje. Odstraňte ho prosím a zkuste to znovu.",
+ "errorCreateContainer": "Nepovedlo se vytvořit kontejner: {{error}}",
+ "errorImportData": "Nepovedlo se naimportovat data: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nový kontejner {{containerName}}",
+ "restoreContainer": "Obnovit kontejner {{containerName}}",
+ "deleteDatabase": "Odstranit databázi {{databaseName}}",
+ "deleteContainer": "Odstranit kontejner {{containerName}}",
+ "newSqlQuery": "Nový dotaz SQL",
+ "newQuery": "Nový dotaz",
+ "openMongoShell": "Otevřít Mongo Shell",
+ "newShell": "Nové prostředí",
+ "openCassandraShell": "Otevřít prostředí Cassandra",
+ "newStoredProcedure": "Nová uložená procedura",
+ "newUdf": "Nové UDF",
+ "newTrigger": "Nová aktivační událost",
+ "deleteStoredProcedure": "Odstranit uloženou proceduru",
+ "deleteTrigger": "Odstranit aktivační událost",
+ "deleteUdf": "Odstranit uživatelem definovanou funkci"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nová položka",
+ "newDocument": "Nový dokument",
+ "uploadItem": "Nahrát položku",
+ "applyFilter": "Použít filtr",
+ "unsavedChanges": "Neuložené změny",
+ "unsavedChangesMessage": "Vaše neuložené změny se ztratí. Chcete pokračovat?",
+ "createDocumentFailed": "Vytvoření dokumentu se nezdařilo",
+ "updateDocumentFailed": "Nepovedlo se aktualizovat dokument",
+ "documentDeleted": "Dokument se úspěšně odstranil.",
+ "deleteDocumentDialogTitle": "Odstranit dokument",
+ "deleteDocumentsDialogTitle": "Odstranit dokumenty",
+ "throttlingError": "Některé dokumenty se nepovedlo odstranit kvůli chybě omezení rychlosti. Zkuste to prosím znovu později. Pokud tomu chcete v budoucnu zabránit, zvažte zvýšení propustnosti vašeho kontejneru nebo databáze.",
+ "deleteFailed": "Odstranění dokumentů (celkem {{error}}) se nezdařilo",
+ "missingShardProperty": "V dokumentu chybí vlastnost extentu: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Nepovedlo se aktualizovat mřížku dokumentů",
+ "confirmDelete": "Opravdu chcete odstranit dokument {{documentName}}?",
+ "confirmDeleteTitle": "Potvrdit odstranění",
+ "selectedItems": "vybrané položky (celkem {{count}})",
+ "selectedItem": "vybraná položka",
+ "selectedDocuments": "vybrané dokumenty (celkem {{count}})",
+ "selectedDocument": "vybraný dokument",
+ "deleteDocumentFailedLog": "Nepovedlo se odstranit dokument {{documentId}} se stavovým kódem {{statusCode}}",
+ "deleteSuccessLog": "Dokumenty (celkem {{count}}) se úspěšně odstranily",
+ "deleteThrottledLog": "Nepovedlo se odstranit tento počet dokumentů: {{count}}, protože došlo k chybě „Žádost je příliš velká“ (429). Opakování…",
+ "missingShardKeyLog": "Nepovedlo se uložit nový dokument: Klíč extentu dokumentu není definovaný",
+ "filterTooltip": "Zadejte predikát dotazu nebo ho vyberte ze seznamu.",
+ "loadMore": "Načíst další",
+ "documentEditor": "Editor dokumentů",
+ "savedFilters": "Uložené filtry",
+ "defaultFilters": "Výchozí filtry",
+ "abort": "Přerušit",
+ "deletingDocuments": "Odstraňují se dokumenty (celkem {{count}})",
+ "deletedDocumentsSuccess": "Dokumenty (celkem {{count}}) se úspěšně odstranily.",
+ "deleteAborted": "Odstraňování dokumentů bylo přerušeno.",
+ "failedToDeleteDocuments": "Nepovedlo se odstranit dokumenty (celkem {{count}}).",
+ "requestTooLargeBase": "Některé žádosti o odstranění selhaly kvůli výjimce „Žádost je příliš velká“ (429)",
+ "retriedSuccessfully": "Bylo ale úspěšně opakováno.",
+ "retryingNow": "Probíhá opakovaný pokus.",
+ "increaseThroughputTip": "Pokud tomu chcete v budoucnu zabránit, zvažte zvýšení propustnosti vašeho kontejneru nebo databáze.",
+ "numberOfSelectedDocuments": "Počet vybraných dokumentů: {{count}}",
+ "mongoFilterPlaceholder": "Zadejte predikát dotazu (např. {\"id\":\"foo\"}) nebo zvolte některý z rozevíracího seznamu, případně to ponechte prázdné pro dotazování všech dokumentů.",
+ "sqlFilterPlaceholder": "Zadejte predikát dotazu (např. WHERE c.id=\"1\") nebo zvolte některý z rozevíracího seznamu, případně to ponechte prázdné pro dotazování všech dokumentů.",
+ "error": "Chyba",
+ "warning": "Upozornění"
+ },
+ "query": {
+ "executeQuery": "Spustit dotaz",
+ "executeSelection": "Spustit výběr",
+ "saveQuery": "Uložit dotaz",
+ "downloadQuery": "Stáhnout dotaz",
+ "cancelQuery": "Zrušit dotaz",
+ "openSavedQueries": "Otevřít uložené dotazy",
+ "vertical": "Svislé",
+ "horizontal": "Vodorovné",
+ "view": "Zobrazit",
+ "editingQuery": "Upravuje se dotaz"
+ },
+ "storedProcedure": {
+ "id": "ID uložené procedury",
+ "idPlaceholder": "Zadejte nové ID uložené procedury",
+ "idAriaLabel": "ID uložené procedury",
+ "body": "Text uložené procedury",
+ "bodyAriaLabel": "Text uložené procedury",
+ "successfulExecution": "Úspěšné spuštění uložené procedury",
+ "resultAriaLabel": "Spustit výsledek uložené procedury",
+ "logsAriaLabel": "Spustit protokoly uložených procedur",
+ "errors": "Chyby:",
+ "errorDetailsAriaLabel": "Odkaz na podrobnosti o chybě",
+ "moreDetails": "Více podrobností",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID aktivační události",
+ "idPlaceholder": "Zadejte nové ID aktivační události",
+ "type": "Typ aktivační události",
+ "operation": "Operace aktivační události",
+ "body": "Tělo aktivační události",
+ "bodyAriaLabel": "Text aktivační události",
+ "pre": "Před",
+ "post": "Publikovat",
+ "all": "Vše",
+ "operationCreate": "Vytvořit",
+ "operationDelete": "Odstranit",
+ "operationReplace": "Nahradit"
+ },
+ "udf": {
+ "id": "ID uživatelem definované funkce",
+ "idPlaceholder": "Zadejte nové ID uživatelem definované funkce",
+ "body": "Text uživatelem definované funkce",
+ "bodyAriaLabel": "Text uživatelem definované funkce"
+ },
+ "conflicts": {
+ "unsavedChanges": "Neuložené změny",
+ "changesWillBeLost": "Změny budou ztraceny. Chcete pokračovat?",
+ "resolveConflictFailed": "Vyřešení konfliktu se nezdařilo",
+ "deleteConflictFailed": "Odstranění konfliktu se nezdařilo",
+ "refreshGridFailed": "Nepovedlo se aktualizovat mřížku dokumentů"
+ },
+ "mongoShell": {
+ "title": "Prostředí Mongo"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Z jakého důvodu tuto databázi {{databaseName}} odstraňujete?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Odstranit {{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!",
+ "feedbackReason": "Z jakého důvodu tento kontejner {{collectionName}} odstraňujete?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Databáze {{suffix}}",
+ "databaseIdLabel": "ID databáze",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} ID, příklad: {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Zvolte existující ID {{databaseName}}",
+ "existingDatabasePlaceholder": "Zvolte existující ID {{databaseName}}",
+ "indexing": "Indexování",
+ "turnOnIndexing": "Zapnout indexování",
+ "automatic": "Automatické",
+ "turnOffIndexing": "Vypnout indexování",
+ "off": "Vypnuto",
+ "sharding": "Sharding",
+ "shardingTooltip": "Kolekce shardů rozdělují data mezi více sad replik (shardů), aby bylo možné dosáhnout neomezené škálovatelnosti. Kolekce shardů vyžadují výběr klíče shardu (pole) pro rovnoměrné rozdělení dat.",
+ "unsharded": "Neshardované",
+ "unshardedLabel": "Neshardované (limit 20 GB)",
+ "sharded": "Shardované",
+ "addPartitionKey": "Přidat hierarchický klíč oddílu",
+ "hierarchicalPartitionKeyInfo": "Tato funkce vám umožňuje rozdělit data pomocí až tří úrovní klíčů, což zajišťuje rovnoměrnější rozložení dat. Vyžaduje .NET V3, Java V4 SDK nebo JavaScript V3 SDK Preview.",
+ "provisionDedicatedThroughput": "Zřídit vyhrazenou propustnost pro {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Volitelně můžete zřídit vyhrazenou propustnost pro {{collectionName}} v rámci databáze se zřízenou propustností. Tato vyhrazená propustnost se nebude sdílet s jinými {{collectionNamePlural}} v databázi a nezapočítává se do propustnosti, kterou jste pro databázi zřídili. Tato hodnota propustnosti se bude účtovat navíc k propustnosti, kterou jste zřídili na úrovni databáze.",
+ "uniqueKeysPlaceholderMongo": "Čárkami oddělené cesty, například firstName, address.zipCode",
+ "uniqueKeysPlaceholderSql": "Čárkami oddělené cesty, např. /firstName,/address/zipCode",
+ "addUniqueKey": "Přidat jedinečný klíč",
+ "enableAnalyticalStore": "Povolit analytické úložiště",
+ "disableAnalyticalStore": "Zakázat analytické úložiště",
+ "on": "Zapnuto",
+ "analyticalStoreSynapseLinkRequired": "Pro vytvoření analytického úložiště {{collectionName}} je vyžadována funkce Azure Synapse Link. Povolte Synapse Link pro tento účet Cosmos DB.",
+ "enable": "Povolit",
+ "containerVectorPolicy": "Zásady vektoru kontejneru",
+ "containerFullTextSearchPolicy": "Zásady fulltextového vyhledávání kontejneru",
+ "advanced": "Rozšířené",
+ "mongoIndexingTooltip": "Pole _id je ve výchozím nastavení indexováno. Vytvoření indexu se zástupnými znaky pro všechna pole optimalizuje dotazy a doporučuje se pro vývoj.",
+ "createWildcardIndex": "Vytvořit index se zástupnými znaky pro všechna pole",
+ "legacySdkCheckbox": "Moje aplikace používá starší verzi Cosmos .NET nebo Java SDK (.NET V1 nebo Java V2)",
+ "legacySdkInfo": "Aby byla zajištěna kompatibilita se staršími sadami SDK, vytvořený kontejner bude používat starší schéma dělení na oddíly, které podporuje hodnoty klíče oddílu o velikosti pouze do 101 bajtů. Pokud je tato možnost povolená, nebudete moct používat hierarchické klíče oddílu.",
+ "indexingOnInfo": "Ve výchozím nastavení budou všechny vlastnosti ve vašich dokumentech indexovány, aby bylo možné provádět flexibilní a efektivní dotazy.",
+ "indexingOffInfo": "Indexování bude vypnuto. Doporučuje se, pokud nepotřebujete spouštět dotazy nebo máte jenom operace s hodnotou klíče.",
+ "indexingOffWarning": "Pokud tento kontejner vytvoříte s vypnutým indexováním, nebudete moct provádět žádné změny zásad indexování. Změny indexování se povolují jenom u kontejnerů se zásadami indexování.",
+ "acknowledgeSpendErrorMonthly": "Potvrďte prosím odhadované měsíční výdaje.",
+ "acknowledgeSpendErrorDaily": "Potvrďte prosím odhadované denní výdaje.",
+ "unshardedMaxRuError": "Neshardované kolekce podporují až 10 000 RU.",
+ "acknowledgeShareThroughputError": "Potvrďte prosím odhadované náklady na tuto vyhrazenou propustnost.",
+ "vectorPolicyError": "Opravte prosím chyby v zásadě vektoru kontejneru.",
+ "fullTextSearchPolicyError": "Opravte prosím chyby v zásadě fulltextového vyhledávání kontejneru.",
+ "addingSampleDataSet": "Přidává se ukázková sada dat.",
+ "databaseFieldLabelName": "Název databáze",
+ "databaseFieldLabelId": "ID databáze",
+ "newDatabaseIdPlaceholder": "Zadejte nové ID databáze",
+ "newDatabaseIdAriaLabel": "Nové ID databáze. Zadejte nové ID databáze.",
+ "createNewDatabaseAriaLabel": "Vytvořit novou databázi",
+ "useExistingDatabaseAriaLabel": "Použít stávající databázi",
+ "chooseExistingDatabase": "Zvolit stávající databázi",
+ "teachingBubble": {
+ "step1Headline": "Vytvoření ukázkové databáze",
+ "step1Body": "Databáze je nadřazená kontejneru. Můžete vytvořit novou databázi nebo použít existující. V tomto kurzu vytváříme novou databázi s názvem SampleDB.",
+ "step1LearnMore": "Získejte další informace o prostředcích.",
+ "step2Headline": "Nastavení propustnosti",
+ "step2Body": "Cosmos DB doporučuje sdílet propustnost mezi databázemi. Automatické škálování vám poskytne flexibilní objem propustnosti podle maximální hodnoty RU/s (Request Unit), kterou nastavíte.",
+ "step2LearnMore": "Další informace o RU/s",
+ "step3Headline": "Pojmenování kontejneru",
+ "step3Body": "Pojmenujte svůj kontejner",
+ "step4Headline": "Nastavení klíče oddílu",
+ "step4Body": "Poslední krok: Budete muset definovat klíč oddílu pro svou kolekci. V tomto konkrétním příkladu byl zvolen klíč oddílu /address. Správný klíč oddílu by měl mít širokou škálu možných hodnot.",
+ "step4CreateContainer": "Vytvořit kontejner",
+ "step5Headline": "Vytváří se ukázkový kontejner",
+ "step5Body": "Právě se vytváří ukázkový kontejner a přidáváme pro vás ukázková data. Mělo by to trvat přibližně 1 minutu.",
+ "step5BodyFollowUp": "Po vytvoření ukázkového kontejneru zkontrolujte ukázkovou datovou sadu a postupujte podle dalších kroků.",
+ "stepOfTotal": "Krok {{current}} z(e) {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Klíč shardu (pole) se používá k rozdělení dat mezi více sad replik (shardů), aby bylo možné dosáhnout neomezené škálovatelnosti. Je důležité zvolit pole, které bude rovnoměrně distribuovat vaše data.",
+ "partitionKeyTooltip": "{{partitionKeyName}} se používá k automatické distribuci dat mezi oddíly pro zajištění škálovatelnosti. Zvolte vlastnost v dokumentu JSON, která má širokou škálu hodnot a rovnoměrně distribuuje objem žádostí.",
+ "partitionKeyTooltipSqlSuffix": " Pro malé úlohy s převahou čtení nebo úlohy s převahou zápisu libovolné velikosti je často vhodnou volbou id.",
+ "shardKeyLabel": "Klíč shardu",
+ "partitionKeyLabel": "Klíč oddílu",
+ "shardKeyPlaceholder": "např. categoryId",
+ "partitionKeyPlaceholderDefault": "např. /address",
+ "partitionKeyPlaceholderFirst": "Povinné – první klíč oddílu, např. /TenantId",
+ "partitionKeyPlaceholderSecond": "druhý klíč oddílu, například /UserId",
+ "partitionKeyPlaceholderThird": "třetí klíč oddílu, například /SessionId",
+ "partitionKeyPlaceholderGraph": "např. /address/zipCode",
+ "uniqueKeysTooltip": "Jedinečné klíče poskytují vývojářům možnost přidat do své databáze vrstvu integrity dat. Vytvořením zásad jedinečného klíče při vytvoření kontejneru zajistíte jedinečnost jedné nebo více hodnot na klíč oddílu.",
+ "uniqueKeysLabel": "Jedinečné klíče",
+ "analyticalStoreLabel": "Analytické úložiště",
+ "analyticalStoreTooltip": "Schopnost analytického úložiště umožňuje provádět analýzy provozních dat téměř v reálném čase, aniž by to mělo vliv na výkon transakčních úloh.",
+ "analyticalStoreDescription": "Schopnost analytického úložiště umožňuje provádět analýzy provozních dat téměř v reálném čase, aniž by to mělo vliv na výkon transakčních úloh.",
+ "vectorPolicyTooltip": "Popište všechny vlastnosti v datech, které obsahují vektory, aby je bylo možné zpřístupnit pro dotazy podobnosti."
+ },
+ "settings": {
+ "pageOptions": "Možnosti stránky",
+ "pageOptionsDescription": "Pokud chcete zadat pevný počet výsledků dotazu, které se mají zobrazit, zvolte Vlastní. Pokud chcete zobrazit co nejvíce výsledků dotazu na stránku, zvolte Neomezeno.",
+ "queryResultsPerPage": "Výsledky dotazu na stránku",
+ "queryResultsPerPageTooltip": "Zadejte počet výsledků dotazu, které se mají zobrazit na stránce.",
+ "customQueryItemsPerPage": "Položky vlastního dotazu na stránku",
+ "custom": "Vlastní",
+ "unlimited": "Neomezené",
+ "entraIdRbac": "Povolit RBAC Entra ID",
+ "entraIdRbacDescription": "Pokud chcete povolit RBAC ID Entra automaticky, zvolte Automaticky. True/False, pokud chcete vynutit povolení nebo zakázání RBAC Entra ID",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "Výběr oblasti",
+ "regionSelectionDescription": "Změní oblast, kterou klient Cosmos používá pro přístup k účtu.",
+ "selectRegion": "Vybrat oblast",
+ "selectRegionTooltip": "Změní koncový bod účtu použitý k provádění operací klienta.",
+ "globalDefault": "Globální (výchozí)",
+ "readWrite": "(Čtení/zápis)",
+ "read": "(Čtení)",
+ "queryTimeout": "Časový limit dotazu",
+ "queryTimeoutDescription": "Když dotaz dosáhne zadaného časového limitu, zobrazí se automaticky otevírané okno s možností zrušení dotazu, pokud není povolené automatické zrušení.",
+ "enableQueryTimeout": "Povolit časový limit dotazu",
+ "queryTimeoutMs": "Časový limit dotazu (ms)",
+ "automaticallyCancelQuery": "Automaticky zrušit dotaz po vypršení časového limitu",
+ "ruLimit": "Limit počtu jednotek RU",
+ "ruLimitDescription": "Pokud dotaz překročí nakonfigurovaný limit počtu jednotek RU, dotaz se přeruší.",
+ "enableRuLimit": "Povolit limit RU",
+ "ruLimitLabel": "Limit počtu jednotek RU (RU)",
+ "defaultQueryResults": "Výchozí zobrazení výsledků dotazu",
+ "defaultQueryResultsDescription": "Vyberte výchozí zobrazení, které se má použít při zobrazování výsledků dotazu.",
+ "retrySettings": "Nastavení opakování",
+ "retrySettingsDescription": "Zásady opakování přidružené k omezeným požadavkům během dotazů CosmosDB",
+ "maxRetryAttempts": "Maximální počet opakovaných pokusů",
+ "maxRetryAttemptsTooltip": "Maximální počet opakovaných pokusů, které se mají provést pro požadavek. Výchozí hodnota je 9.",
+ "fixedRetryInterval": "Pevný interval opakování (ms)",
+ "fixedRetryIntervalTooltip": "Pevný interval opakování v milisekundách, po který se má čekat mezi jednotlivými pokusy, přičemž se ignoruje hodnota retryAfter vrácená jako součást odpovědi. Výchozí hodnota je 0 milisekund.",
+ "maxWaitTime": "Maximální doba čekání (s)",
+ "maxWaitTimeTooltip": "Maximální doba čekání v sekundách na požadavek během opakovaných pokusů. Výchozí hodnota 30 sekund.",
+ "enableContainerPagination": "Povolit stránkování kontejnerů",
+ "enableContainerPaginationDescription": "Načte 50 kontejnerů najednou. Kontejnery se v současné době nenačítají v alfanumerickém pořadí.",
+ "enableCrossPartitionQuery": "Povolit dotaz mezi oddíly",
+ "enableCrossPartitionQueryDescription": "Při provádění dotazu odešlete více než jeden požadavek. Pokud dotaz není omezen na jednu hodnotu klíče oddílu, je nutné odeslat více než jeden požadavek.",
+ "maxDegreeOfParallelism": "Maximální stupeň paralelismu",
+ "maxDegreeOfParallelismDescription": "Získá nebo nastaví počet souběžných operací spuštěných na straně klienta během paralelního provádění dotazu. Kladná hodnota vlastnosti omezuje počet souběžných operací na nastavenou hodnotu. Pokud je nastavená hodnota menší než 0, systém automaticky rozhodne o počtu souběžných operací, které se mají spustit.",
+ "maxDegreeOfParallelismQuery": "Dotazovat až do maximálního stupně paralelismu",
+ "priorityLevel": "Úroveň priority",
+ "priorityLevelDescription": "Nastaví úroveň priority pro požadavky na rovinu dat z Data Exploreru při použití provádění založeného na prioritách. Pokud je vybraná možnost Žádné, Data Explorer neurčí úroveň priority a použije se výchozí úroveň priority na straně serveru.",
+ "displayGremlinQueryResults": "Zobrazit výsledky dotazu Gremlin jako:",
+ "displayGremlinQueryResultsDescription": "Vyberte Graph, chcete-li výsledky dotazu automaticky vizualizovat jako graf, nebo JSON, chcete-li výsledky zobrazit jako JSON.",
+ "graph": "Graf",
+ "json": "JSON",
+ "graphAutoVisualization": "Automatická vizualizace grafu",
+ "enableSampleDatabase": "Povolit ukázkovou databázi",
+ "enableSampleDatabaseDescription": "Jedná se o ukázkovou databázi a kontejner se syntetickými produktovými daty, které můžete použít k prozkoumání práce s dotazy NoSQL. V uživatelském rozhraní Data Exploreru se zobrazí jako další databáze, kterou vytváří a spravuje Microsoft, a to bez jakýchkoli nákladů z vaší strany.",
+ "enableSampleDbAriaLabel": "Povolit ukázkovou databázi pro průzkum dotazů",
+ "guidRepresentation": "Reprezentace identifikátoru GUID",
+ "guidRepresentationDescription": "GuidRepresentation v MongoDB označuje způsob, jakým se globálně jedinečné identifikátory (GUID) serializují a deserializují při ukládání do dokumentů BSON. Toto platí pro všechny operace s dokumenty.",
+ "advancedSettings": "Upřesňující nastavení",
+ "ignorePartitionKey": "Ignorovat klíč oddílu při aktualizaci dokumentu",
+ "ignorePartitionKeyTooltip": "Pokud je zaškrtnuto, hodnota klíče oddílu nebude použita k vyhledání dokumentu během operací aktualizace. Tuto možnost použijte pouze v případě, že aktualizace dokumentu selhávají kvůli neobvyklému klíči oddílu.",
+ "clearHistory": "Vymazat historii",
+ "clearHistoryConfirm": "Opravdu chcete pokračovat?",
+ "clearHistoryDescription": "Tato akce vymaže všechna vlastní nastavení pro tento účet v tomto prohlížeči, včetně:",
+ "clearHistoryTabLayout": "Resetovat přizpůsobené rozložení karet včetně pozic rozdělovače",
+ "clearHistoryTableColumns": "Vymažte předvolby sloupců tabulky, včetně všech vlastních sloupců.",
+ "clearHistoryFilters": "Vymazání historie filtrů",
+ "clearHistoryRegion": "Obnovit výběr oblasti na globální",
+ "increaseValueBy1000": "Zvýšit hodnotu o 1000",
+ "decreaseValueBy1000": "Snížit hodnotu o 1000",
+ "none": "Žádné",
+ "low": "Nízká",
+ "high": "Vysoké",
+ "automatic": "Automatické",
+ "enhancedQueryControl": "Pokročilé možnosti ovládání dotazů",
+ "enableQueryControl": "Povolit ovládání dotazů",
+ "explorerVersion": "Verze Exploreru",
+ "accountId": "ID účtu",
+ "sessionId": "ID relace",
+ "popupsDisabledError": "Nepovedlo se nám vytvořit autorizaci pro tento účet kvůli zakázání automaticky otevíraných oken v prohlížeči.\nPovolte automaticky otevíraná okna pro tento web a klikněte na tlačítko Přihlášení pro Entra ID.",
+ "failedToAcquireTokenError": "Nepodařilo se automaticky získat autorizační token. Pokud chcete povolit operace RBAC Entra ID, klikněte prosím na tlačítko Přihlášení pro Entra ID."
+ },
+ "saveQuery": {
+ "panelTitle": "Uložit dotaz",
+ "setupCostMessage": "Z důvodu dodržování předpisů ukládáme dotazy do kontejneru ve vašem účtu Azure Cosmos v samostatné databázi s názvem {{databaseName}}. Aby bylo možné pokračovat, je nutné ve vašem účtu vytvořit kontejner. Odhadované dodatečné náklady jsou 0,77 USD denně.",
+ "completeSetup": "Dokončit nastavení",
+ "noQueryNameError": "Nebyl zadán žádný název dotazu.",
+ "invalidQueryContentError": "Byl zadán neplatný obsah dotazu.",
+ "failedToSaveQueryError": "Nepovedlo se uložit dotaz {{queryName}}.",
+ "failedToSetupContainerError": "Nepovedlo se nastavit kontejner pro uložené dotazy.",
+ "accountNotSetupError": "Uložení dotazu se nezdařilo: účet není nastaven pro ukládání dotazů.",
+ "name": "Název"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nebyl zadán žádný soubor.",
+ "failedToLoadQueryError": "Dotaz se nepovedlo načíst.",
+ "failedToLoadQueryFromFileError": "Nepovedlo se načíst dotaz ze souboru {{fileName}}",
+ "selectFilesToOpen": "Výběr dokumentu dotazu",
+ "browseFiles": "Procházet"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Zadejte vstupní parametry (pokud nějaké jsou)",
+ "key": "Klíč",
+ "param": "Parametr",
+ "partitionKeyValue": "Hodnota klíče oddílu",
+ "value": "Hodnota",
+ "addNewParam": "Přidat nový parametr",
+ "addParam": "Přidat parametr",
+ "deleteParam": "Odstranit parametr",
+ "invalidParamError": "Byl zadán neplatný parametr: {{invalidParam}}.",
+ "invalidParamConsoleError": "Byl zadán neplatný parametr: {{invalidParam}} není platná hodnota literálu.",
+ "stringType": "Řetězec",
+ "customType": "Vlastní"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Nezadal se žádný soubor. Zadejte prosím aspoň jeden soubor.",
+ "selectJsonFiles": "Vybrat soubory JSON",
+ "selectJsonFilesTooltip": "Vyberte jeden nebo více souborů JSON, které chcete nahrát. Každý soubor může obsahovat jeden dokument JSON nebo pole dokumentů JSON. Celková velikost všech souborů v jednotlivých operacích nahrávání musí být menší než 2 MB. U větších datových sad můžete provádět více operací nahrávání.",
+ "fileNameColumn": "NÁZEV SOUBORU",
+ "statusColumn": "STAV",
+ "uploadStatus": "Vytvořeno: {{numSucceeded}}, omezeno: {{numThrottled}}, počet chyb: {{numFailed}}",
+ "uploadedFiles": "Nahrané soubory"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Nepovedlo se zkopírovat {{name}} do {{destination}}",
+ "uploadFailedError": "Nepodařilo se nahrát {{name}}",
+ "location": "Umístění",
+ "locationAriaLabel": "Umístění",
+ "selectLocation": "Vyberte umístění poznámkového bloku ke kopírování.",
+ "name": "Název"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Publikování do galerie se {{notebookName}} nezdařilo.",
+ "publishDescription": "Po publikování se tento poznámkový blok zobrazí ve veřejné galerii poznámkových bloků Azure Cosmos DB. Před publikováním se ujistěte, že jste odebrali všechna citlivá data nebo výstup.",
+ "publishPrompt": "Chcete {{name}} publikovat a nasdílet do galerie?",
+ "coverImage": "Titulní obrázek",
+ "coverImageUrl": "Adresa URL titulního obrázku",
+ "name": "Název",
+ "description": "Popis",
+ "tags": "Značky",
+ "tagsPlaceholder": "Volitelná značka 1, volitelná značka 2",
+ "preview": "Náhled",
+ "urlType": "Adresa URL",
+ "customImage": "Vlastní image",
+ "takeScreenshot": "Pořídit snímek obrazovky",
+ "useFirstDisplayOutput": "Použít první zobrazený výstup",
+ "failedToCaptureOutput": "Nepovedlo se zachytit první výstup.",
+ "outputDoesNotExist": "Pro žádnou z buněk neexistuje výstup.",
+ "failedToConvertError": "Nepovedlo se převést {{fileName}} do formátu base64",
+ "failedToUploadError": "Nepodařilo se nahrát {{fileName}}."
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Nepovedlo se spustit úlohu přenosu dat.",
+ "suboptimalPartitionKeyError": "Upozornění: Systém zjistil, že vaše kolekce pravděpodobně používá neoptimální klíč oddílu.",
+ "description": "Při změně klíče oddílu kontejneru bude nutné vytvořit cílový kontejner se správným klíčem oddílu. Můžete také vybrat existující cílový kontejner.",
+ "sourceContainerId": "ID zdrojového kontejneru {{collectionName}}",
+ "destinationContainerId": "ID cílového {{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",
+ "collectionIdAriaLabel": "{{collectionName}} ID, příklad: {{collectionName}}1",
+ "existingContainers": "Existující kontejnery",
+ "partitionKeyWarning": "Cílový kontejner ještě nesmí existovat. Data Explorer pro vás vytvoří nový cílový kontejner."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Název prostoru klíčů",
+ "keyspaceTooltip": "Vyberte existující prostor klíčů nebo zadejte ID nového prostoru klíčů.",
+ "tableIdLabel": "Zadáním příkazu CQL vytvořte tabulku.",
+ "enterTableId": "Zadejte ID tabulky",
+ "tableSchemaAriaLabel": "Schéma tabulky",
+ "provisionDedicatedThroughput": "Zřídit vyhrazenou propustnost pro tuto tabulku",
+ "provisionDedicatedThroughputTooltip": "Volitelně můžete zřídit vyhrazenou propustnost pro tabulku v rámci prostoru klíčů, který má zřízenou propustnost. Tato vyhrazená propustnost se nebude sdílet s jinými tabulkami v prostoru klíčů a nezapočítává se do propustnosti, kterou jste pro prostor klíčů zřídili. Tato hodnota propustnosti se bude účtovat navíc k propustnosti, kterou jste zřídili na úrovni prostoru klíčů."
+ },
+ "tables": {
+ "addProperty": "Přidat vlastnost",
+ "addRow": "Přidat řádek",
+ "addEntity": "Přidat entitu",
+ "back": "zpět",
+ "nullFieldsWarning": "Upozornění: Pole s hodnotou null nebudou zobrazena pro úpravy.",
+ "propertyEmptyError": "{{property}} nemůže být prázdné. Zadejte prosím hodnotu pro {{property}}.",
+ "whitespaceError": "{{property}} nemůže obsahovat prázdné znaky. Zadejte prosím hodnotu pro {{property}} bez prázdných znaků.",
+ "propertyTypeEmptyError": "Typ vlastnosti nemůže být prázdný. Vyberte prosím typ z rozevíracího seznamu pro vlastnost {{property}}."
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Vyberte sloupce, na které se chcete dotázat.",
+ "availableColumns": "Dostupné sloupce"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Vyberte sloupce, které se mají zobrazit v zobrazení položek v kontejneru.",
+ "searchFields": "Prohledat pole",
+ "reset": "Resetovat",
+ "partitionKeySuffix": " (klíč oddílu)"
+ },
+ "newVertex": {
+ "addProperty": "Přidat vlastnost"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "ID kontejneru globálního sekundárního indexu",
+ "globalSecondaryIndexIdPlaceholder": "např. indexbyEmailId",
+ "projectionQuery": "Dotaz projekce",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Zjistěte více o definování globálních sekundárních indexů.",
+ "disabledTitle": "Globální sekundární index se už vytváří. Než spustíte vytváření jiného, počkejte, až se dokončí vytváření toho aktuálního."
+ },
+ "stringInput": {
+ "inputMismatchError": "Vstup s {{input}} neodpovídá vybranému {{selectedId}}."
+ },
+ "panelInfo": {
+ "information": "Informace",
+ "moreDetails": "Více podrobností"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Škálování",
+ "conflictResolution": "Řešení konfliktu",
+ "settings": "Nastavení",
+ "indexingPolicy": "Zásada indexování",
+ "partitionKeys": "Klíče oddílu",
+ "partitionKeysPreview": "Klíče oddílů (Preview)",
+ "computedProperties": "Vypočítané vlastnosti",
+ "containerPolicies": "Zásady kontejneru",
+ "throughputBuckets": "Kbelíky propustnosti",
+ "globalSecondaryIndexPreview": "Globální sekundární index (Preview)",
+ "maskingPolicyPreview": "Zásada maskování (Preview)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Vyberte prosím typ pro každý index.",
+ "enterFieldNameError": "Zadejte prosím název pole.",
+ "wildcardPathError": "V názvu pole se nenachází cesta se zástupným znakem. Použijte například vzor "
+ },
+ "partitionKey": {
+ "shardKey": "Klíč shardu",
+ "partitionKey": "Klíč oddílu",
+ "shardKeyTooltip": "Klíč shardu (pole) se používá k rozdělení dat mezi více sad replik (shardů), aby bylo možné dosáhnout neomezené škálovatelnosti. Je důležité zvolit pole, které bude rovnoměrně distribuovat vaše data.",
+ "partitionKeyTooltip": "se používá k automatické distribuci dat mezi oddíly pro zajištění škálovatelnosti. Zvolte vlastnost v dokumentu JSON, která má širokou škálu hodnot a rovnoměrně distribuuje objem žádostí.",
+ "sqlPartitionKeyTooltipSuffix": " Pro malé úlohy s převahou čtení nebo úlohy s převahou zápisu libovolné velikosti je často vhodnou volbou id.",
+ "partitionKeySubtext": "U malých úloh je ID položky vhodnou volbou pro klíč oddílu.",
+ "mongoPlaceholder": "např. categoryId",
+ "gremlinPlaceholder": "např. /address",
+ "sqlFirstPartitionKey": "Povinné – první klíč oddílu, např. /TenantId",
+ "sqlSecondPartitionKey": "druhý klíč oddílu, například /UserId",
+ "sqlThirdPartitionKey": "třetí klíč oddílu, například /SessionId",
+ "defaultPlaceholder": "např. /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Odhad nákladů*",
+ "howWeCalculate": "Jak to vypočítáváme",
+ "updatedCostPerMonth": "Aktualizované náklady za měsíc",
+ "currentCostPerMonth": "Aktuální náklady na měsíc",
+ "perRu": "/RU",
+ "perHour": "/h",
+ "perDay": "/den",
+ "perMonth": "/měs."
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Počáteční maximální hodnota RU/s pro automatické škálování bude určena systémem na základě nastavení aktuální manuální propustnosti a úložiště vašeho prostředku. Po povolení automatického škálování můžete změnit maximální počet RU/s.",
+ "ttlWarningText": "Systém bude položky automaticky odstraňovat na základě hodnoty TTL (v sekundách), kterou zadáte, aniž by klientská aplikace musela výslovně provést operaci odstranění. Další informace viz",
+ "ttlWarningLinkText": "Hodnota TTL (Time to Live) v Azure Cosmos DB",
+ "unsavedIndexingPolicy": "zásada indexování",
+ "unsavedDataMaskingPolicy": "zásada maskování dat",
+ "unsavedComputedProperties": "vypočítané vlastnosti",
+ "unsavedEditorWarningPrefix": "Neuložili jste nejnovější změny provedené ve vašem",
+ "unsavedEditorWarningSuffix": ". Kliknutím na Uložit potvrďte provedené změny.",
+ "updateDelayedApplyWarning": "Chystáte se požádat o zvýšení propustnosti nad rámec předem přidělené kapacity. Dokončení této operace bude nějakou dobu trvat.",
+ "scalingUpDelayMessage": "Vertikální navýšení kapacity bude trvat 4–6 hodin, protože při současném počtu fyzických oddílů přesahuje okamžité možnosti služby Azure Cosmos DB. Propustnost můžete okamžitě zvýšit na {{instantMaximumThroughput}} nebo pokračovat s touto hodnotou a počkat, než se dokončí vertikální navýšení kapacity.",
+ "exceedPreAllocatedMessage": "Vaše žádost o zvýšení propustnosti překračuje předem přidělenou kapacitu, takže její zpracování může trvat déle, než by se očekávalo. Můžete si vybrat ze tří možností, jak pokračovat:",
+ "instantScaleOption": "Kapacitu můžete okamžitě vertikálně navýšit až na {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Propustnost můžete asynchronně vertikálně navýšit až na libovolnou hodnotu pod {{maximumThroughput}} RU/s během 4–6 hodin.",
+ "quotaMaxOption": "Aktuální maximální kvóta je {{maximumThroughput}} RU/s. Pokud chcete tento limit překročit, musíte požádat o navýšení kvóty a tým Azure Cosmos DB vaši žádost posoudí.",
+ "belowMinimumMessage": "Nemůžete snížit propustnost pod aktuální minimum {{minimum}} RU/s. Další informace o tomto limitu najdete v naší dokumentaci k nabídce služeb.",
+ "saveThroughputWarning": "Změna nastavení propustnosti ovlivní výši vaší faktury. Před uložením změn si prosím projděte aktualizovaný odhad nákladů uvedený níže.",
+ "currentAutoscaleThroughput": "Aktuální propustnost automatického škálování:",
+ "targetAutoscaleThroughput": "Cílová propustnost automatického škálování:",
+ "currentManualThroughput": "Aktuální manuální propustnost:",
+ "targetManualThroughput": "Cílová manuální propustnost:",
+ "applyDelayedMessage": "Žádost o zvýšení propustnosti se úspěšně odeslala. Dokončení této operace bude trvat 1 až 3 pracovní dny. Nejnovější stav najdete v části Oznámení.",
+ "databaseLabel": "Databáze:",
+ "containerLabel": "Kontejner:",
+ "applyShortDelayMessage": "V tuto chvíli se zpracovává žádost o zvýšení propustnosti. Dokončení této operace bude nějakou dobu trvat.",
+ "applyLongDelayMessage": "V tuto chvíli se zpracovává žádost o zvýšení propustnosti. Dokončení této operace bude trvat 1 až 3 pracovní dny. Nejnovější stav najdete v části Oznámení.",
+ "throughputCapError": "Váš účet je aktuálně nakonfigurovaný s celkovým limitem propustnosti {{throughputCap}} RU/s. Tato aktualizace není možná, protože by zvýšila celkovou propustnost na {{newTotalThroughput}} RU/s. Ve správě nákladů změňte limit celkové propustnosti.",
+ "throughputIncrementError": "Hodnota propustnosti musí být v přírůstcích po 1000."
+ },
+ "conflictResolution": {
+ "lwwDefault": "Poslední zápis rozhoduje (výchozí)",
+ "customMergeProcedure": "Procedura sloučení (vlastní)",
+ "mode": "Režim",
+ "conflictResolverProperty": "Vlastnost řešení konfliktů",
+ "storedProcedure": "Uložená procedura",
+ "lwwTooltip": "Získá nebo nastaví název celočíselné vlastnosti ve vašich dokumentech, která se používá pro schéma řešení konfliktů na základě principu Poslední zápis rozhoduje (LWW). Ve výchozím nastavení systém používá systémem definovanou vlastnost časového razítka _ts k určení, která z konfliktních verzí dokumentu má přednost. Pokud chcete přepsat výchozí řešení konfliktů založené na časovém razítku, zadejte vlastní celočíselnou vlastnost.",
+ "customTooltip": "Získá nebo nastaví název uložené procedury (neboli procedury sloučení) pro řešení konfliktů. Můžete napsat logiku definovanou aplikací, která rozhodne, která z konfliktních verzí dokumentu bude zachována. Uložená procedura se na straně serveru provede transakčně a právě jednou. Pokud neposkytnete uloženou proceduru, konflikty se zaznamenají do:",
+ "customTooltipConflictsFeed": " kanál konfliktů",
+ "customTooltipSuffix": ". Uloženou proceduru můžete kdykoli aktualizovat nebo znovu zaregistrovat."
+ },
+ "changeFeed": {
+ "label": "Zásady uchovávání informací protokolu kanálu změn",
+ "tooltip": "Povolte zásadu uchovávání informací protokolu kanálu změn, která ve výchozím nastavení uchovává posledních 10 minut historie položek v kontejneru. Aby to bylo možné zajistit, bude se poplatek za jednotky požadavků (RU) pro zápisy do tohoto kontejneru násobit koeficientem 2. Čtení nejsou ovlivněna."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Pro dotazy, které filtrují podle více vlastností, vytvořte místo složeného indexu více jednosloupcových indexů.",
+ "disclaimerCompoundIndexesLink": " Složené indexy ",
+ "disclaimerSuffix": "se používají jenom pro řazení výsledků dotazu. Pokud potřebujete přidat složený index, můžete ho vytvořit pomocí prostředí Mongo Shell.",
+ "compoundNotSupported": "Kolekce se složenými indexy se v editoru indexování ještě nepodporují. Pokud chcete upravit zásadu indexování pro tuto kolekci, použijte Mongo Shell.",
+ "aadError": "Pokud chcete použít editor zásad indexování, přihlaste se prosím k:",
+ "aadErrorLink": "Azure Portal.",
+ "refreshingProgress": "Aktualizuje se průběh transformace indexu.",
+ "canMakeMoreChangesZero": "Další změny indexování můžete provést, jakmile bude dokončena aktuální transformace indexu. ",
+ "refreshToCheck": "Aktualizujte zobrazení a zkontrolujte, zda je proces dokončen.",
+ "canMakeMoreChangesProgress": "Po dokončení aktuální transformace indexu můžete provést další změny indexování. Je dokončeno {{progress}} %. ",
+ "refreshToCheckProgress": "Pokud chcete zkontrolovat průběh, aktualizujte zobrazení.",
+ "definitionColumn": "Definice",
+ "typeColumn": "Typ",
+ "dropIndexColumn": "Odstranit index",
+ "addIndexBackColumn": "Přidat index zpět",
+ "deleteIndexButton": "Tlačítko Odstranit index",
+ "addBackIndexButton": "Tlačítko Přidat zpět index",
+ "currentIndexes": "Aktuální indexy",
+ "indexesToBeDropped": "Indexy k odstranění",
+ "indexFieldName": "Název pole indexu",
+ "indexType": "Typ indexu",
+ "selectIndexType": "Vyberte typ indexu.",
+ "undoButton": "Tlačítko zpět"
+ },
+ "subSettings": {
+ "timeToLive": "Hodnota TTL (Time to Live)",
+ "ttlOff": "Vypnuto",
+ "ttlOnNoDefault": "Zapnuto (žádná výchozí hodnota)",
+ "ttlOn": "Zapnuto",
+ "seconds": "s",
+ "timeToLiveInSeconds": "Hodnota TTL (Time to Live) v sekundách",
+ "analyticalStorageTtl": "Hodnota TTL (Time to Live) analytického úložiště",
+ "geospatialConfiguration": "Geoprostorová konfigurace",
+ "geography": "Geografická lokalita",
+ "geometry": "Geometrie",
+ "uniqueKeys": "Jedinečné klíče",
+ "mongoTtlMessage": "Pokud chcete povolit hodnotu TTL (Time to Live) pro vaši kolekci nebo dokumenty,",
+ "mongoTtlLinkText": "vytvořit index TTL",
+ "partitionKeyTooltipTemplate": "Tento {{partitionKeyName}} slouží k rozdělení dat mezi více oddílů za účelem škálování. Hodnota {{partitionKeyValue}} určuje, jak jsou dokumenty rozděleny do oddílů.",
+ "largePartitionKeyEnabled": "Velký klíč oddílu {{partitionKeyName}} byl povolen.",
+ "hierarchicalPartitioned": "Kontejner rozdělený na oddíly hierarchickým způsobem",
+ "nonHierarchicalPartitioned": "Kontejner rozdělený na oddíly nehierarchickým způsobem"
+ },
+ "scale": {
+ "freeTierInfo": "S úrovní Free získáte první(ch) {{ru}} RU/s a {{storage}} GB úložiště v tomto účtu zdarma. Aby váš účet zůstal bezplatný, udržujte celkový počet RU/s ve všech prostředcích v rámci účtu do {{ru}} RU/s.",
+ "freeTierLearnMore": "Získejte další informace.",
+ "throughputRuS": "Propustnost (Jednotka žádosti/s)",
+ "autoScaleCustomSettings": "Váš účet má vlastní nastavení, která brání nastavení propustnosti na úrovni kontejneru. Pokud chcete provést změny, obraťte se na svého kontaktního pracovníka z technického týmu Cosmos DB.",
+ "keyspaceSharedThroughput": "Sdílená propustnost této tabulky je nakonfigurovaná v prostoru klíčů.",
+ "throughputRangeLabel": "Propustnost ({{min}} – {{max}} RU/s)",
+ "unlimited": "bez omezení"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Změnit: {{partitionKeyName}}",
+ "currentPartitionKey": "Aktuální {{partitionKeyName}}",
+ "partitioning": "Dělení na oddíly",
+ "hierarchical": "Hierarchický",
+ "nonHierarchical": "Nehierarchický",
+ "safeguardWarning": "Abyste zachovali integritu dat kopírovaných do nového kontejneru, zajistěte, aby po celou dobu procesu změny klíče oddílu nebyly ve zdrojovém kontejneru prováděny žádné aktualizace.",
+ "changeDescription": "Pokud chcete změnit klíč oddílu, musíte vytvořit nový cílový kontejner nebo vybrat existující cílový kontejner. Data se pak zkopírují do cílového kontejneru.",
+ "changeButton": "Změnit",
+ "changeJob": "Úloha změny {{partitionKeyName}}",
+ "cancelButton": "Zrušit",
+ "documentsProcessed": "(počet zpracovaných dokumentů: {{processedCount}} z {{totalCount}})"
+ },
+ "computedProperties": {
+ "ariaLabel": "Vypočítané vlastnosti",
+ "learnMorePrefix": "o tom, jak definovat počítané vlastnosti a jak je používat."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Zásada indexování"
+ },
+ "dataMasking": {
+ "ariaLabel": "Zásada maskování dat",
+ "validationFailed": "Ověření selhalo:",
+ "includedPathsRequired": "IncludedPaths je povinné.",
+ "includedPathsMustBeArray": "includedPaths musí být pole.",
+ "excludedPathsMustBeArray": "excludedPaths musí být pole, pokud je zadáno"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Zásada vektoru",
+ "fullTextPolicy": "Zásada fulltextového vyhledávání",
+ "createFullTextPolicy": "Vytvořit novou zásadu fulltextového vyhledávání"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Pro tento kontejner jsou definované následující indexy.",
+ "learnMoreSuffix": "o tom, jak definovat globální sekundární indexy a jak je používat.",
+ "jsonAriaLabel": "JSON globálního sekundárního indexu",
+ "addIndex": "Přidat index",
+ "settingsTitle": "Nastavení globálního sekundárního indexu",
+ "sourceContainer": "Zdrojový kontejner",
+ "indexDefinition": "Definice globálního sekundárního indexu"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Nepovedlo se aktualizovat průběh transformace indexu."
+ },
+ "throughputInput": {
+ "autoscale": "Automaticky škálovat",
+ "manual": "Ručně",
+ "minimumRuS": "Minimální RU/s",
+ "maximumRuS": "Maximální RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Kapacita úložiště",
+ "fixed": "Fixní",
+ "unlimited": "Neomezené",
+ "instant": "Okamžité",
+ "fourToSixHrs": "4–6 hodin",
+ "autoscaleDescription": "Na základě využití se vaše propustnost {{resourceType}} bude škálovat od",
+ "freeTierWarning": "Fakturace začne, pokud zřídíte více než {{ru}} RU/s manuální propustnosti nebo pokud se prostředek při automatickém škálování bude škálovat nad {{ru}} RU/s.",
+ "capacityCalculator": "Odhadněte požadovanou hodnotu RU/s pomocí",
+ "capacityCalculatorLink": " kalkulačka kapacity",
+ "fixedStorageNote": "Při použití kolekce s pevnou kapacitou úložiště můžete nastavit až 10 000 RU/s.",
+ "min": "min",
+ "max": "max."
+ },
+ "throughputBuckets": {
+ "label": "Kbelíky propustnosti",
+ "bucketLabel": "Kbelík {{id}}",
+ "dataExplorerQueryBucket": " (Kbelík dotazů Data Exploreru)",
+ "active": "Aktivní",
+ "inactive": "Neaktivní"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/de/Resources.json b/src/Localization/de/Resources.json
new file mode 100644
index 000000000..3e28ce867
--- /dev/null
+++ b/src/Localization/de/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Abbrechen",
+ "close": "Schließen",
+ "save": "Speichern",
+ "delete": "Löschen",
+ "update": "Aktualisieren",
+ "discard": "Verwerfen",
+ "execute": "Ausführen",
+ "loading": "Wird geladen",
+ "loadingEllipsis": "Wird geladen...",
+ "next": "Weiter",
+ "previous": "Zurück",
+ "yes": "Ja",
+ "no": "Nein",
+ "result": "Ergebnis",
+ "learnMore": "Weitere Informationen",
+ "getStarted": "Erste Schritte",
+ "retry": "Wiederholen",
+ "apply": "Anwenden",
+ "refresh": "Aktualisieren",
+ "copy": "Kopieren",
+ "create": "Erstellen",
+ "confirm": "Bestätigen",
+ "open": "Öffnen",
+ "rename": "Umbenennen",
+ "download": "Herunterladen",
+ "upload": "Hochladen",
+ "connect": "Verbinden",
+ "remove": "Entfernen",
+ "load": "Laden",
+ "publish": "Veröffentlichen",
+ "browse": "Durchsuchen",
+ "increaseValueBy1": "Wert um 1 erhöhen",
+ "decreaseValueBy1": "Wert um 1 verringern"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Willkommen bei Azure Cosmos DB",
+ "postgres": "Willkommen bei Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Willkommen bei Azure DocumentDB (mit MongoDB-Kompatibilität)"
+ },
+ "subtitle": {
+ "default": "Global verteilter Datenbankdienst mit Unterstützung mehrerer Datenmodelle in jeder Größenordnung",
+ "getStarted": "Erste Schritte mit unseren Beispieldatensätzen, der Dokumentation und weiteren Tools."
+ },
+ "quickStart": {
+ "title": "Schnellstart starten",
+ "description": "Starten Sie ein Schnellstarttutorial, um mit Beispieldaten zu beginnen."
+ },
+ "newCollection": {
+ "title": "Neue {{collectionName}}",
+ "description": "Neuen Container für Speicher und Durchsatz erstellen"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB-Beispielgalerie",
+ "description": "Entdecken Sie Beispiele, die skalierbare, intelligente App-Muster zeigen. Probieren Sie jetzt eines aus, um zu sehen, wie schnell Sie mit Cosmos DB vom Konzept zum Code gelangen."
+ },
+ "connectCard": {
+ "title": "Verbinden",
+ "description": "Bevorzugen Sie Ihre eigene Toolauswahl? Finden Sie die Verbindungszeichenfolge, die Sie für die Verbindung benötigen.",
+ "pgAdmin": {
+ "title": "Verbindung mit pgAdmin herstellen",
+ "description": "pgAdmin bevorzugen? Hier finden Sie Ihre Verbindungszeichenfolgen."
+ },
+ "vsCode": {
+ "title": "Mit VS Code verbinden",
+ "description": "Abfragen und Verwalten Ihrer MongoDB- und DocumentDB-Cluster in Visual Studio Code."
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL-Shell",
+ "description": "Erstellen Sie eine Tabelle und interagieren Sie mit Daten über die Shellschnittstelle von PostgreSQL."
+ },
+ "vcoreMongo": {
+ "title": "Mongo-Shell",
+ "description": "Erstellen Sie eine Sammlung und interagieren Sie mit Daten über die Shellschnittstelle von MongoDB."
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Neu bei Cosmos DB PGSQL?",
+ "body": "Willkommen! Wenn Sie neu bei Cosmos DB PGSQL sind und Hilfe beim Einstieg benötigen, finden Sie hier Beispieldaten und Abfragen."
+ },
+ "resetPassword": {
+ "headline": "Ihr Kennwort erstellen",
+ "body": "Wenn Sie Ihr Kennwort noch nicht geändert haben, ändern Sie es jetzt."
+ },
+ "coachMark": {
+ "headline": "Mit Beispiel „{{collectionName}}“ starten",
+ "body": "Sie werden angeleitet, einen Beispielcontainer mit Beispieldaten zu erstellen. Anschließend erhalten Sie eine Tour durch den Datenexplorer. Sie können die Tour auch abbrechen und selbst erkunden."
+ }
+ },
+ "sections": {
+ "recents": "Zuletzt verwendet",
+ "clearRecents": "Zuletzt verwendete Elemente löschen",
+ "top3": "Die drei wichtigsten Dinge, die Sie wissen sollten",
+ "learningResources": "Lernressourcen",
+ "nextSteps": "Nächste Schritte",
+ "tipsAndLearnMore": "Tipps und weitere Informationen",
+ "notebook": "Notebook",
+ "needHelp": "Benötigen Sie Hilfe?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Erweiterte Modellierungsmuster",
+ "description": "Erfahren Sie mehr über fortgeschrittene Strategien zur Optimierung Ihrer Datenbank."
+ },
+ "partitioning": {
+ "title": "Best Practices für die Partitionierung",
+ "description": "Lernen Sie, Datenmodell- und Partitionierungsstrategien anzuwenden."
+ },
+ "resourcePlanning": {
+ "title": "Ihre Ressourcenanforderungen planen",
+ "description": "Machen Sie sich mit den verschiedenen Konfigurationsmöglichkeiten vertraut."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Was ist die MongoDB-API?",
+ "description": "Verstehen Sie Azure Cosmos DB for MongoDB und seine Funktionen."
+ },
+ "features": {
+ "title": "Funktionen und Syntax",
+ "description": "Entdecken Sie die Vorteile und Funktionen"
+ },
+ "migrate": {
+ "title": "Ihre Daten migrieren",
+ "description": "Vorbereitende Schritte zur Datenmigration"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Java-App erstellen",
+ "description": "Java-App mithilfe eines SDK erstellen."
+ },
+ "partitioning": {
+ "title": "Best Practices für die Partitionierung",
+ "description": "Erfahren Sie, wie Partitionierung funktioniert."
+ },
+ "requestUnits": {
+ "title": "Anforderungseinheiten (RUs)",
+ "description": "RU-Gebühren verstehen"
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Datenmodellierung",
+ "description": "Empfehlungen zur Graphdatenmodellierung"
+ },
+ "partitioning": {
+ "title": "Best Practices für die Partitionierung",
+ "description": "Erfahren Sie, wie Partitionierung funktioniert"
+ },
+ "queryData": {
+ "title": "Daten abfragen",
+ "description": "Daten mit Gremlin abfragen"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Was ist die Table-API?",
+ "description": "Verstehen Sie Azure Cosmos DB for Table und seine Funktionen."
+ },
+ "migrate": {
+ "title": "Ihre Daten migrieren",
+ "description": "Erfahren Sie, wie Sie Ihre Daten migrieren."
+ },
+ "faq": {
+ "title": "Häufig gestellte Fragen zu Azure Cosmos DB for Table",
+ "description": "Häufige Fragen zu Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Tastenkombinationen im Datenexplorer",
+ "description": "Lernen Sie Tastenkombinationen zur Navigation im Datenexplorer."
+ },
+ "liveTv": {
+ "title": "Grundlagen erlernen",
+ "description": "Sehen Sie sich die Einführung und Anleitungsvideos der Azure Cosmos DB Live TV-Sendung an."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Erste Schritte mit einem SDK",
+ "description": "Mehr über das Azure Cosmos DB SDK erfahren."
+ },
+ "migrate": {
+ "title": "Ihre Daten migrieren",
+ "description": "Migrieren Sie Daten mit Azure-Diensten und Open-Source-Lösungen."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "App mit Node.js erstellen",
+ "description": "Node.js-App erstellen."
+ },
+ "gettingStarted": {
+ "title": "Leitfaden für erste Schritte",
+ "description": "Lernen Sie die Grundlagen für den Einstieg kennen."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Container erstellen",
+ "description": "Erfahren Sie mehr über die Optionen zum Erstellen eines Containers."
+ },
+ "throughput": {
+ "title": "Durchsatz bereitstellen",
+ "description": "Erfahren Sie, wie Sie den Durchsatz konfigurieren."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Erste Schritte ",
+ "description": "Erstellen, Abfragen und Durchlaufen mithilfe der Gremlin-Konsole"
+ },
+ "importData": {
+ "title": "Graphdaten importieren",
+ "description": "Massendatenaufnahme mit BulkExecutor erlernen"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": ".NET-App erstellen",
+ "description": "So greifen Sie mit einer .NET-App auf Azure Cosmos DB for Table zu."
+ },
+ "java": {
+ "title": "Java-App erstellen",
+ "description": "Erstellen Sie eine Azure Cosmos DB for Table-App mit dem Java SDK. "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Datenmodellierung",
+ "distributionColumn": "So wählen Sie eine Verteilungsspalte aus.",
+ "buildApps": "Apps mit Python/Java/Django erstellen"
+ },
+ "vcoreMongo": {
+ "migrateData": "Daten migrieren",
+ "vectorSearch": "KI-Apps mit Vektorsuche erstellen",
+ "buildApps": "Apps mit Node.js erstellen"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Leistungsoptimierung",
+ "diagnosticQueries": "Nützliche Diagnoseabfragen",
+ "sqlReference": "Referenz für verteiltes SQL"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vektorsuche",
+ "textIndexing": "Textindizierung",
+ "troubleshoot": "Häufige Probleme beheben"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Ihre Datenbank erstellen",
+ "useTitle": "Ihre Datenbank nutzen",
+ "newContainer": {
+ "title": "Neuer Container",
+ "description": "Zielcontainer zum Speichern Ihrer Daten erstellen."
+ },
+ "sampleData": {
+ "title": "Beispieldaten",
+ "description": "Beispieldaten in Ihrer Datenbank laden"
+ },
+ "sampleVectorData": {
+ "title": "Beispielvektordaten",
+ "description": "Beispielvektordaten mit text-embedding-ada-002 laden"
+ },
+ "appDevelopment": {
+ "title": "App-Entwicklung",
+ "description": "Starten Sie hier, um ein SDK zum Erstellen Ihrer Apps zu verwenden."
+ },
+ "sampleGallery": {
+ "title": "Beispielgalerie",
+ "description": "End-to-End-Beispiele aus der Praxis ansehen"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Beispieldaten",
+ "startButton": "Starten",
+ "createPrompt": "Erstellen Sie einen Container „{{containerName}}“ und importieren Sie Beispieldaten. Dies kann einige Minuten dauern.",
+ "creatingContainer": "Container „{{containerName}}“ wird erstellt...",
+ "importingData": "Daten werden in „{{containerName}}“ importiert...",
+ "success": "„{{containerName}}“ wurde erfolgreich mit Beispieldaten erstellt.",
+ "errorContainerExists": "Der Container „{{containerName}}“ in der Datenbank „{{databaseName}}“ existiert bereits. Bitte löschen Sie ihn und versuchen Sie es erneut.",
+ "errorCreateContainer": "Fehler beim Erstellen des Containers: {{error}}",
+ "errorImportData": "Fehler beim Importieren von Daten: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Neu: {{containerName}}",
+ "restoreContainer": "{{containerName}} wiederherstellen",
+ "deleteDatabase": "{{databaseName}} löschen",
+ "deleteContainer": "{{containerName}} löschen",
+ "newSqlQuery": "Neue SQL-Abfrage",
+ "newQuery": "Neue Abfrage",
+ "openMongoShell": "Mongo Shell öffnen",
+ "newShell": "Neue Shell",
+ "openCassandraShell": "Cassandra Shell öffnen",
+ "newStoredProcedure": "Neue gespeicherte Prozedur",
+ "newUdf": "Neue UDF",
+ "newTrigger": "Neuer Trigger",
+ "deleteStoredProcedure": "Gespeicherte Prozedur löschen",
+ "deleteTrigger": "Trigger löschen",
+ "deleteUdf": "Benutzerdefinierte Funktion löschen"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Neues Element",
+ "newDocument": "Neues Dokument",
+ "uploadItem": "Element hochladen",
+ "applyFilter": "Filter anwenden",
+ "unsavedChanges": "Nicht gespeicherte Änderungen",
+ "unsavedChangesMessage": "Ihre nicht gespeicherten Änderungen gehen verloren. Möchten Sie fortfahren?",
+ "createDocumentFailed": "Fehler beim Erstellen des Dokuments",
+ "updateDocumentFailed": "Fehler beim Aktualisieren des Dokuments",
+ "documentDeleted": "Das Dokument wurde erfolgreich gelöscht.",
+ "deleteDocumentDialogTitle": "Dokument löschen",
+ "deleteDocumentsDialogTitle": "Dokumente löschen",
+ "throttlingError": "Einige Dokumente konnten aufgrund einer Ratenbegrenzung nicht gelöscht werden. Versuchen Sie es später erneut. Um dies künftig zu vermeiden, sollten Sie den Durchsatz Ihres Containers oder Ihrer Datenbank erhöhen.",
+ "deleteFailed": "Fehler beim Löschen von Dokumenten ({{error}}).",
+ "missingShardProperty": "Im Dokument fehlt die Shardeigenschaft: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Fehler beim Aktualisieren des Dokumentrasters",
+ "confirmDelete": "Möchten Sie {{documentName}} wirklich löschen?",
+ "confirmDeleteTitle": "Löschen bestätigen",
+ "selectedItems": "die ausgewählten {{count}} Elemente",
+ "selectedItem": "das ausgewählte Element",
+ "selectedDocuments": "die ausgewählten {{count}} Dokumente",
+ "selectedDocument": "das ausgewählte Dokument",
+ "deleteDocumentFailedLog": "Fehler beim Löschen des Dokuments {{documentId}} mit Statuscode {{statusCode}}.",
+ "deleteSuccessLog": "{{count}} Dokument(e) wurde(n) erfolgreich gelöscht.",
+ "deleteThrottledLog": "Fehler beim Löschen von {{count}} Dokument(en) aufgrund des Fehlers „Anforderung zu groß“ (429) Vorgang wird wiederholt …",
+ "missingShardKeyLog": "Fehler beim Speichern des neuen Dokuments: Der Shardschlüssel des Dokuments ist nicht definiert.",
+ "filterTooltip": "Geben Sie ein Abfrageprädikat ein oder wählen Sie eines aus der Liste aus.",
+ "loadMore": "Mehr laden",
+ "documentEditor": "Dokumenteneditor",
+ "savedFilters": "Gespeicherte Filter",
+ "defaultFilters": "Standardfilter",
+ "abort": "Abbrechen",
+ "deletingDocuments": "{{count}} Dokument(e) wird/werden gelöscht",
+ "deletedDocumentsSuccess": "{{count}} Dokument(e) wurde(n) erfolgreich gelöscht.",
+ "deleteAborted": "Das Löschen von Dokumenten wurde abgebrochen.",
+ "failedToDeleteDocuments": "Fehler beim Löschen von {{count}} Dokument(en).",
+ "requestTooLargeBase": "Einige Löschanforderungen sind aufgrund einer Ausnahme „Anforderung zu groß“ (429) fehlgeschlagen.",
+ "retriedSuccessfully": "wurden jedoch erfolgreich wiederholt.",
+ "retryingNow": "Der Vorgang wird jetzt wiederholt.",
+ "increaseThroughputTip": "Um dies künftig zu vermeiden, sollten Sie den Durchsatz Ihres Containers oder Ihrer Datenbank erhöhen.",
+ "numberOfSelectedDocuments": "Anzahl der ausgewählten Dokumente: {{count}}",
+ "mongoFilterPlaceholder": "Geben Sie ein Abfrageprädikat (z. B. {\"id\":\"foo\"}) ein, wählen Sie eines aus der Dropdownliste oder lassen Sie das Feld leer, um alle Dokumente abzufragen.",
+ "sqlFilterPlaceholder": "Geben Sie ein Abfrageprädikat (z. B. WHERE c.id=\"1\") ein, wählen Sie eines aus der Dropdownliste oder lassen Sie das Feld leer, um alle Dokumente abzufragen.",
+ "error": "Fehler",
+ "warning": "Warnung"
+ },
+ "query": {
+ "executeQuery": "Abfrage ausführen",
+ "executeSelection": "Auswahl ausführen",
+ "saveQuery": "Abfrage speichern",
+ "downloadQuery": "Abfrage herunterladen",
+ "cancelQuery": "Abfrage abbrechen",
+ "openSavedQueries": "Gespeicherte Abfragen öffnen",
+ "vertical": "Vertikal",
+ "horizontal": "Horizontal",
+ "view": "Ansicht",
+ "editingQuery": "Abfrage wird bearbeitet"
+ },
+ "storedProcedure": {
+ "id": "ID der gespeicherten Prozedur",
+ "idPlaceholder": "Geben Sie die ID der neuen gespeicherten Prozedur ein.",
+ "idAriaLabel": "ID der gespeicherten Prozedur",
+ "body": "Text der gespeicherten Prozedur",
+ "bodyAriaLabel": "Text der gespeicherten Prozedur",
+ "successfulExecution": "Die gespeicherte Prozedur wurde erfolgreich ausgeführt.",
+ "resultAriaLabel": "Ergebnis der gespeicherten Prozedur ausführen",
+ "logsAriaLabel": "Protokolle für gespeicherte Prozedur ausführen",
+ "errors": "Fehler:",
+ "errorDetailsAriaLabel": "Link zu Fehlerdetails",
+ "moreDetails": "Weitere Details",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Trigger-ID",
+ "idPlaceholder": "Geben Sie die neue Trigger-ID ein.",
+ "type": "Triggertyp",
+ "operation": "Triggervorgang",
+ "body": "Triggertext",
+ "bodyAriaLabel": "Triggertext",
+ "pre": "Vor",
+ "post": "Beitrag",
+ "all": "Alle",
+ "operationCreate": "Erstellen",
+ "operationDelete": "Löschen",
+ "operationReplace": "Ersetzen"
+ },
+ "udf": {
+ "id": "ID der benutzerdefinierten Funktion",
+ "idPlaceholder": "Geben Sie die ID der neuen benutzerdefinierten Funktion ein.",
+ "body": "Text der benutzerdefinierten Funktion",
+ "bodyAriaLabel": "Text der benutzerdefinierten Funktion"
+ },
+ "conflicts": {
+ "unsavedChanges": "Nicht gespeicherte Änderungen",
+ "changesWillBeLost": "Nicht gespeicherte Änderungen gehen verloren. Möchten Sie fortfahren?",
+ "resolveConflictFailed": "Fehler beim Auflösen des Konflikts",
+ "deleteConflictFailed": "Fehler beim Löschen des Konflikts.",
+ "refreshGridFailed": "Fehler beim Aktualisieren des Dokumentrasters"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Aus welchem Grund löschen Sie diese {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "{{collectionName}} löschen",
+ "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!",
+ "feedbackReason": "Aus welchem Grund löschen Sie diese {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Datenbank {{suffix}}",
+ "databaseIdLabel": "Datenbank-ID",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} ID, Beispiel {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Vorhandene {{databaseName}}-ID auswählen",
+ "existingDatabasePlaceholder": "Vorhandene {{databaseName}}-ID auswählen",
+ "indexing": "Indizierung",
+ "turnOnIndexing": "Indizierung aktivieren",
+ "automatic": "Automatisch",
+ "turnOffIndexing": "Indizierung deaktivieren",
+ "off": "Aus",
+ "sharding": "Sharding",
+ "shardingTooltip": "Shardsammlungen teilen Ihre Daten auf viele Replikatgruppen (Shards) auf, um unbegrenzte Skalierbarkeit zu erzielen. Shardsammlungen erfordern die Auswahl eines Shardschlüssels (Felds), um Ihre Daten gleichmäßig zu verteilen.",
+ "unsharded": "Ohne Sharding",
+ "unshardedLabel": "Ohne Sharding (20-GB-Limit)",
+ "sharded": "Mit Sharding",
+ "addPartitionKey": "Hierarchischen Partitionsschlüssel hinzufügen",
+ "hierarchicalPartitionKeyInfo": "Mit diesem Feature können Sie Ihre Daten mit bis zu drei Schlüsselebenen partitionieren, um eine bessere Datenverteilung zu erzielen. Erfordert .NET V3, Java V4 SDK oder JavaScript V3 SDK (Vorschauversion).",
+ "provisionDedicatedThroughput": "Dedizierten Durchsatz für {{collectionName}} bereitstellen",
+ "provisionDedicatedThroughputTooltip": "Sie können optional dedizierten Durchsatz für eine {{collectionName}} in einer Datenbank bereitstellen, für die Durchsatz bereitgestellt wurde. Dieser dedizierte Durchsatz wird nicht für andere {{collectionNamePlural}} in der Datenbank freigegeben und zählt nicht zum Durchsatz, den Sie für die Datenbank bereitgestellt haben. Diese Durchsatzmenge wird zusätzlich zu dem Durchsatz, den Sie auf Datenbankebene bereitgestellt haben, in Rechnung gestellt.",
+ "uniqueKeysPlaceholderMongo": "Durch Trennzeichen getrennte Pfade, z. B. firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Durch Trennzeichen getrennte Pfade, z. B. /firstName,/address/zipCode",
+ "addUniqueKey": "Eindeutigen Schlüssel hinzufügen",
+ "enableAnalyticalStore": "Analysespeicher aktivieren",
+ "disableAnalyticalStore": "Analysespeicher deaktivieren",
+ "on": "Ein",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link ist zum Erstellen eines Analysespeichers {{collectionName}}erforderlich. Aktivieren Sie Synapse Link für dieses Cosmos DB-Konto.",
+ "enable": "Aktivieren",
+ "containerVectorPolicy": "Containervektorrichtlinie",
+ "containerFullTextSearchPolicy": "Richtlinie für Container-Volltextsuche",
+ "advanced": "Erweitert",
+ "mongoIndexingTooltip": "Das Feld _id wird standardmäßig indiziert. Das Erstellen eines Platzhalterindexes für alle Felder wird für die Entwicklung empfohlen, weil dadurch Abfragen optimiert werden.",
+ "createWildcardIndex": "Platzhalterindex für alle Felder erstellen",
+ "legacySdkCheckbox": "Meine Anwendung verwendet eine ältere Cosmos .NET- oder Java SDK-Version (.NET V1 oder Java V2).",
+ "legacySdkInfo": "Um die Kompatibilität mit älteren SDKs sicherzustellen, verwendet der erstellte Container ein Legacypartitionierungsschema, das Partitionsschlüsselwerte nur mit einer Größe von bis zu 101 Bytes unterstützt. Wenn dies aktiviert ist, können Sie keine hierarchischen Partitionsschlüssel verwenden.",
+ "indexingOnInfo": "Alle Eigenschaften in Ihren Dokumenten werden standardmäßig für flexible und effiziente Abfragen indiziert.",
+ "indexingOffInfo": "Die Indizierung wird deaktiviert. Empfohlen, wenn Sie keine Abfragen ausführen müssen oder nur Schlüsselwertvorgänge ausführen müssen.",
+ "indexingOffWarning": "Wenn Sie diesen Container mit deaktivierter Indizierung erstellen, können Sie keine Änderungen an der Indizierungsrichtlinie vornehmen. Indizierungsänderungen sind nur an einem Container mit einer Indizierungsrichtlinie zulässig.",
+ "acknowledgeSpendErrorMonthly": "Bestätigen Sie die geschätzten monatlichen Ausgaben.",
+ "acknowledgeSpendErrorDaily": "Bestätigen Sie die geschätzten täglichen Ausgaben.",
+ "unshardedMaxRuError": "Sammlungen ohne Sharding unterstützen bis zu 10.000 RUs.",
+ "acknowledgeShareThroughputError": "Bestätigen Sie die geschätzten Kosten für diesen dedizierten Durchsatz.",
+ "vectorPolicyError": "Beheben Sie Fehler in der Containervektorrichtlinie.",
+ "fullTextSearchPolicyError": "Beheben Sie Fehler in der Richtlinie für die Container-Volltextsuche.",
+ "addingSampleDataSet": "Beispieldataset wird hinzugefügt",
+ "databaseFieldLabelName": "Datenbankname",
+ "databaseFieldLabelId": "Datenbank-ID",
+ "newDatabaseIdPlaceholder": "Geben Sie eine neue Datenbank-ID ein.",
+ "newDatabaseIdAriaLabel": "Neue Datenbank-ID; Geben Sie eine neue Datenbank-ID ein.",
+ "createNewDatabaseAriaLabel": "Neue Datenbank erstellen",
+ "useExistingDatabaseAriaLabel": "Vorhandene Datenbank verwenden",
+ "chooseExistingDatabase": "Vorhandene Datenbank auswählen",
+ "teachingBubble": {
+ "step1Headline": "Beispieldatenbank erstellen",
+ "step1Body": "Die Datenbank ist das übergeordnete Element eines Containers. Sie können eine neue Datenbank erstellen oder eine vorhandene verwenden. In diesem Tutorial erstellen wir eine neue Datenbank namens SampleDB.",
+ "step1LearnMore": "Weitere Informationen zu Ressourcen",
+ "step2Headline": "Durchsatz festlegen",
+ "step2Body": "Cosmos DB empfiehlt, den Durchsatz über die Datenbank hinweg zu teilen. Die Autoskalierung bietet Ihnen einen flexiblen Durchsatz basierend auf dem festgelegten maximalen RU/s-Wert (Request Units).",
+ "step2LearnMore": "Weitere Informationen zu RU/s.",
+ "step3Headline": "Container wird benannt",
+ "step3Body": "Container benennen",
+ "step4Headline": "Partitionsschlüssel wird festgelegt",
+ "step4Body": "Letzter Schritt: Sie müssen einen Partitionsschlüssel für Ihre Sammlung festlegen. Für dieses Beispiel wurde /address ausgewählt. Ein guter Partitionsschlüssel sollte eine breite Palette möglicher Werte abdecken.",
+ "step4CreateContainer": "Container erstellen",
+ "step5Headline": "Beispielcontainer wird erstellt",
+ "step5Body": "Es wird jetzt ein Beispielcontainer erstellt, und wir fügen Beispieldaten für Sie hinzu. Das dauert etwa eine Minute.",
+ "step5BodyFollowUp": "Nachdem der Beispielcontainer erstellt wurde, überprüfen Sie Ihren Beispieldatensatz und folgen Sie den nächsten Schritten.",
+ "stepOfTotal": "Schritt {{current}} von {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Der Shardschlüssel (Feld) wird verwendet, um Ihre Daten auf viele Replikatgruppen (Shards) aufzuteilen, um unbegrenzte Skalierbarkeit zu erzielen. Es ist wichtig, ein Feld auszuwählen, das Ihre Daten gleichmäßig verteilt.",
+ "partitionKeyTooltip": "{{partitionKeyName}} wird verwendet, um Daten aus Gründen der Skalierbarkeit automatisch auf Partitionen zu verteilen. Wählen Sie in Ihrem JSON-Dokument eine Eigenschaft, die eine große Bandbreite an Werten aufweist und das Anforderungsvolumen gleichmäßig verteilt.",
+ "partitionKeyTooltipSqlSuffix": " Bei kleinen Workloads mit vielen Lese- oder Schreibvorgängen beliebiger Größe ist die ID häufig eine gute Wahl.",
+ "shardKeyLabel": "Shardschlüssel",
+ "partitionKeyLabel": "Partitionsschlüssel",
+ "shardKeyPlaceholder": "Beispiel: categoryId",
+ "partitionKeyPlaceholderDefault": "Beispiel: /address",
+ "partitionKeyPlaceholderFirst": "Erforderlich – erster Partitionsschlüssel, z. B. /TenantId",
+ "partitionKeyPlaceholderSecond": "zweiter Partitionsschlüssel, z. B. /UserId",
+ "partitionKeyPlaceholderThird": "Dritter Partitionsschlüssel, z. B. /SessionId",
+ "partitionKeyPlaceholderGraph": "Beispiel: /address/zipCode",
+ "uniqueKeysTooltip": "Eindeutige Schlüssel bieten Entwicklern die Möglichkeit, ihrer Datenbank eine Ebene der Datenintegrität hinzuzufügen. Indem Sie beim Erstellen eines Containers eine Richtlinie für eindeutige Schlüssel erstellen, stellen Sie die Eindeutigkeit eines oder mehrerer Werte pro Partitionsschlüssel sicher.",
+ "uniqueKeysLabel": "Eindeutige Schlüssel",
+ "analyticalStoreLabel": "Analysespeicher",
+ "analyticalStoreTooltip": "Aktivieren Sie die Analysespeicherfunktion, um Analysen ihrer operativen Daten nahezu in Echtzeit durchzuführen, ohne die Leistung von Transaktionsworkloads zu beeinträchtigen.",
+ "analyticalStoreDescription": "Aktivieren Sie die Analysespeicherfunktion, um Analysen ihrer operativen Daten nahezu in Echtzeit durchzuführen, ohne die Leistung von Transaktionsworkloads zu beeinträchtigen.",
+ "vectorPolicyTooltip": "Beschreiben Sie alle Eigenschaften in Ihren Daten, die Vektoren enthalten, damit sie für Ähnlichkeitsabfragen verfügbar gemacht werden können."
+ },
+ "settings": {
+ "pageOptions": "Seitenoptionen",
+ "pageOptionsDescription": "Wählen Sie „Benutzerdefiniert“ aus, um eine feste Anzahl anzuzeigender Abfrageergebnisse anzugeben, oder wählen Sie „Unbegrenzt“ aus, um beliebig viele Abfrageergebnisse pro Seite anzuzeigen.",
+ "queryResultsPerPage": "Abfrageergebnisse pro Seite",
+ "queryResultsPerPageTooltip": "Geben Sie die Anzahl der Abfrageergebnisse ein, die pro Seite angezeigt werden sollen.",
+ "customQueryItemsPerPage": "Benutzerdefinierte Abfrageelemente pro Seite",
+ "custom": "Benutzerdefiniert",
+ "unlimited": "Unbegrenzt",
+ "entraIdRbac": "RBAC für Entra ID aktivieren",
+ "entraIdRbacDescription": "Wählen Sie „Automatisch“ aus, um RBAC für Entra ID automatisch zu aktivieren. True/False, um das Aktivieren/Deaktivieren von RBAC für Entra ID zu erzwingen.",
+ "true": "Wahr",
+ "false": "Falsch",
+ "regionSelection": "Bereichsauswahl",
+ "regionSelectionDescription": "Ändert die Region, die der Cosmos-Client für den Zugriff auf das Konto verwendet.",
+ "selectRegion": "Region auswählen",
+ "selectRegionTooltip": "Ändert den Kontoendpunkt, der zum Ausführen von Clientvorgängen verwendet wird.",
+ "globalDefault": "Global (Standard)",
+ "readWrite": "(Lesen/Schreiben)",
+ "read": "(Lesen)",
+ "queryTimeout": "Abfragetimeout",
+ "queryTimeoutDescription": "Wenn eine Abfrage ein angegebenes Zeitlimit erreicht, wird ein Popup mit einer Option zum Abbrechen der Abfrage angezeigt, es sei denn, der automatische Abbruch wurde aktiviert.",
+ "enableQueryTimeout": "Abfragetimeout aktivieren",
+ "queryTimeoutMs": "Abfragetimeout (ms)",
+ "automaticallyCancelQuery": "Abfrage nach Timeout automatisch abbrechen",
+ "ruLimit": "RU-Limit",
+ "ruLimitDescription": "Wenn eine Abfrage ein konfiguriertes RU-Limit überschreitet, wird die Abfrage abgebrochen.",
+ "enableRuLimit": "RU-Limit aktivieren",
+ "ruLimitLabel": "RU-Limit (RU)",
+ "defaultQueryResults": "Standardansicht der Abfrageergebnisse",
+ "defaultQueryResultsDescription": "Wählen Sie die Standardansicht aus, die zum Anzeigen von Abfrageergebnissen verwendet werden soll.",
+ "retrySettings": "Wiederholungseinstellungen",
+ "retrySettingsDescription": "Wiederholungsrichtlinie, die gedrosselten Anforderungen während CosmosDB-Abfragen zugeordnet ist.",
+ "maxRetryAttempts": "Max. Wiederholungsversuche",
+ "maxRetryAttemptsTooltip": "Maximale Anzahl von Wiederholungen, die für eine Anforderung ausgeführt werden sollen. Standardwert: 9.",
+ "fixedRetryInterval": "Festes Wiederholungsintervall (ms)",
+ "fixedRetryIntervalTooltip": "Festes Wiederholungsintervall in Millisekunden, das zwischen den einzelnen Wiederholungsversuchen abgewartet wird, wobei das als Teil der Antwort zurückgegebene retryAfter ignoriert wird. Der Standardwert beträgt 0 Millisekunden.",
+ "maxWaitTime": "Maximale Wartezeit (s)",
+ "maxWaitTimeTooltip": "Maximale Wartezeit in Sekunden für eine Anforderung während der Wiederholungsversuche. Standardwert: 30 Sekunden.",
+ "enableContainerPagination": "Containerpaginierung aktivieren",
+ "enableContainerPaginationDescription": "Laden Sie jeweils 50 Container. Derzeit werden Container nicht in alphanumerischer Reihenfolge abgerufen.",
+ "enableCrossPartitionQuery": "Partitionsübergreifende Abfrage aktivieren",
+ "enableCrossPartitionQueryDescription": "Senden Sie während der Ausführung einer Abfrage mehrere Anforderungen. Wenn die Abfrage nicht auf einen einzelnen Partitionsschlüsselwert beschränkt ist, sind mehrere Anforderungen erforderlich.",
+ "maxDegreeOfParallelism": "Max. Grad an Parallelität",
+ "maxDegreeOfParallelismDescription": "Ruft die Anzahl gleichzeitiger Vorgänge ab, die während der parallelen Abfrageausführung clientseitig ausgeführt werden, oder legt diese fest. Ein positiver Eigenschaftswert schränkt die Anzahl gleichzeitiger Vorgänge auf den festgelegten Wert ein. Wenn der Wert auf weniger als 0 festgelegt ist, entscheidet das System automatisch, wie viele gleichzeitige Vorgänge ausgeführt werden sollen.",
+ "maxDegreeOfParallelismQuery": "Bis zum maximalen Grad an Parallelität abfragen.",
+ "priorityLevel": "Prioritätsstufe",
+ "priorityLevelDescription": "Legt die Prioritätsstufe für Datenebenenanforderungen von Daten-Explorer fest, wenn die prioritätsbasierte Ausführung verwendet wird. Wenn „Keine“ ausgewählt ist, gibt Daten-Explorer keine Prioritätsstufe an, und die serverseitige Standardprioritätsstufe wird verwendet.",
+ "displayGremlinQueryResults": "Gremlin-Abfrageergebnisse anzeigen als:",
+ "displayGremlinQueryResultsDescription": "Wählen Sie „Graph“ aus, um die Abfrageergebnisse automatisch als Graph zu visualisieren, oder wählen Sie „JSON“ aus, um die Ergebnisse als JSON anzuzeigen.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Automatische Graphvisualisierung",
+ "enableSampleDatabase": "Beispieldatenbank aktivieren",
+ "enableSampleDatabaseDescription": "Dies ist eine Beispieldatenbank und Sammlung mit synthetischen Produktdaten, die Sie mithilfe von NoSQL-Abfragen untersuchen können. Dies wird als eine weitere Datenbank auf der Daten-Explorer-Benutzeroberfläche angezeigt und von Microsoft erstellt und kostenlos für Sie verwaltet.",
+ "enableSampleDbAriaLabel": "Beispieldatenbank für die Abfrageuntersuchung aktivieren",
+ "guidRepresentation": "GUID-Darstellung",
+ "guidRepresentationDescription": "GuidRepresentation in MongoDB bezieht sich darauf, wie GUIDs (Globally Unique Identifiers) serialisiert und deserialisiert werden, wenn sie in BSON-Dokumenten gespeichert werden. Dies gilt für alle Dokumentvorgänge.",
+ "advancedSettings": "Erweiterte Einstellungen",
+ "ignorePartitionKey": "Partitionsschlüssel bei Dokumentaktualisierung ignorieren",
+ "ignorePartitionKeyTooltip": "Wenn diese Option aktiviert ist, wird der Partitionsschlüsselwert nicht verwendet, um das Dokument während Aktualisierungsvorgängen zu finden. Verwenden Sie diese Option nur, wenn Dokumentaktualisierungen aufgrund eines ungewöhnlichen Partitionsschlüssels fehlschlagen.",
+ "clearHistory": "Verlauf löschen",
+ "clearHistoryConfirm": "Möchten Sie fortfahren?",
+ "clearHistoryDescription": "Durch diese Aktion werden alle Anpassungen für dieses Konto in diesem Browser gelöscht, einschließlich:",
+ "clearHistoryTabLayout": "Setzen Sie Ihre benutzerdefinierten Registerkartenlayouts zurück, einschließlich der Splitterpositionen",
+ "clearHistoryTableColumns": "Löschen Sie Ihre Tabellenspalteneinstellungen, einschließlich aller benutzerdefinierten Spalten",
+ "clearHistoryFilters": "Filterverlauf löschen",
+ "clearHistoryRegion": "Bereichsauswahl auf „Global“ zurücksetzen",
+ "increaseValueBy1000": "Wert um 1000 erhöhen",
+ "decreaseValueBy1000": "Wert um 1000 verringern",
+ "none": "Kein(e)",
+ "low": "Niedrig",
+ "high": "Hoch",
+ "automatic": "Automatisch",
+ "enhancedQueryControl": "Erweitertes Abfragesteuerelement",
+ "enableQueryControl": "Abfragesteuerelement aktivieren",
+ "explorerVersion": "Explorer-Version",
+ "accountId": "Konto-ID",
+ "sessionId": "Sitzungs-ID",
+ "popupsDisabledError": "Wir konnten keine Autorisierung für dieses Konto einrichten, weil Popups im Browser deaktiviert wurden.\nAktivieren Sie Popups für diese Website, und klicken Sie auf die Schaltfläche „Anmeldung für Entra-ID“.",
+ "failedToAcquireTokenError": "Fehler beim automatischen Abrufen des Autorisierungstokens. Klicken Sie auf die Schaltfläche „Anmeldung für Entra-ID“, um RBAC-Vorgänge für Entra ID zu aktivieren."
+ },
+ "saveQuery": {
+ "panelTitle": "Abfrage speichern",
+ "setupCostMessage": "Aus Compliancegründen speichern wir Abfragen in einem Container in Ihrem Azure Cosmos-Konto in einer separaten Datenbank namens „{{databaseName}}“. Um fortzufahren, müssen wir einen Container in Ihrem Konto erstellen. Die geschätzten zusätzlichen Kosten betragen 0,77 USD pro Tag.",
+ "completeSetup": "Einrichtung abschließen",
+ "noQueryNameError": "Kein Abfragename angegeben",
+ "invalidQueryContentError": "Ungültiger Abfrageinhalt angegeben",
+ "failedToSaveQueryError": "Fehler beim Speichern der Abfrage {{queryName}}",
+ "failedToSetupContainerError": "Fehler beim Einrichten eines Containers für gespeicherte Abfragen",
+ "accountNotSetupError": "Fehler beim Speichern der Abfrage: Konto zum Speichern von Abfragen nicht eingerichtet",
+ "name": "Name"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Keine Datei angegeben",
+ "failedToLoadQueryError": "Fehler beim Laden der Abfrage.",
+ "failedToLoadQueryFromFileError": "Fehler beim Laden der Abfrage aus der Datei {{fileName}}",
+ "selectFilesToOpen": "Abfragedokument auswählen",
+ "browseFiles": "Durchsuchen"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Eingabeparameter eingeben (falls vorhanden)",
+ "key": "Schlüssel",
+ "param": "Param.",
+ "partitionKeyValue": "Partitionsschlüsselwert",
+ "value": "Wert",
+ "addNewParam": "Neuen Parameter hinzufügen",
+ "addParam": "Parameter hinzufügen",
+ "deleteParam": "Parameter löschen",
+ "invalidParamError": "Ungültiger Parameter angegeben: {{invalidParam}}",
+ "invalidParamConsoleError": "Ungültiger Parameter angegeben: {{invalidParam}} ist kein gültiger Literalwert.",
+ "stringType": "Zeichenfolge",
+ "customType": "Benutzerdefiniert"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Es wurden keine Dateien angegeben. Geben Sie mindestens eine Datei ein.",
+ "selectJsonFiles": "JSON-Dateien auswählen",
+ "selectJsonFilesTooltip": "Wählen Sie mindestens eine JSON-Datei zum Hochladen aus. Jede Datei kann ein einzelnes JSON-Dokument oder ein Array von JSON-Dokumenten enthalten. Die kombinierte Größe aller Dateien in einem einzelnen Uploadvorgang muss kleiner als 2 MB sein. Sie können mehrere Uploadvorgänge für größere Datasets ausführen.",
+ "fileNameColumn": "DATEINAME",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} erstellt, {{numThrottled}} gedrosselt, {{numFailed}} Fehler",
+ "uploadedFiles": "Hochgeladene Dateien"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Fehler beim Kopieren von {{name}} nach {{destination}}",
+ "uploadFailedError": "Fehler beim Hochladen von „{{name}}“",
+ "location": "Speicherort",
+ "locationAriaLabel": "Speicherort",
+ "selectLocation": "Notizbuchspeicherort zum Kopieren auswählen",
+ "name": "Name"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Fehler beim Veröffentlichen von {{notebookName}} im Katalog",
+ "publishDescription": "Nach der Veröffentlichung wird dieses Notebook im öffentlichen Katalog Azure Cosmos DB Notebooks angezeigt. Stellen Sie sicher, dass Sie alle vertraulichen Daten oder Ausgaben vor der Veröffentlichung entfernt haben.",
+ "publishPrompt": "Möchten Sie „{{name}}“ im Katalog veröffentlichen und freigeben?",
+ "coverImage": "Titelbild",
+ "coverImageUrl": "Titelbild-URL",
+ "name": "Name",
+ "description": "Beschreibung",
+ "tags": "Kategorien",
+ "tagsPlaceholder": "Optionales Tag 1, optionales Tag 2",
+ "preview": "Vorschau",
+ "urlType": "URL",
+ "customImage": "Benutzerdefiniertes Image",
+ "takeScreenshot": "Screenshot erstellen",
+ "useFirstDisplayOutput": "Erste Anzeigeausgabe verwenden",
+ "failedToCaptureOutput": "Fehler beim Erfassen der ersten Ausgabe",
+ "outputDoesNotExist": "Für keine der Zellen ist eine Ausgabe vorhanden.",
+ "failedToConvertError": "Fehler beim Konvertieren von {{fileName}} in das Base64-Format",
+ "failedToUploadError": "Fehler beim Hochladen von „{{fileName}}“"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Fehler beim Starten des Datenübertragungsauftrags",
+ "suboptimalPartitionKeyError": "Warnung: Das System hat festgestellt, dass Ihre Sammlung möglicherweise keinen optimalen Partitionsschlüssel verwendet.",
+ "description": "Wenn Sie den Partitionsschlüssel eines Containers ändern, müssen Sie einen Zielcontainer mit dem richtigen Partitionsschlüssel erstellen. Sie können auch einen vorhandenen Zielcontainer auswählen.",
+ "sourceContainerId": "Quell-{{collectionName}}-ID",
+ "destinationContainerId": "Ziel-{{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",
+ "collectionIdAriaLabel": "{{collectionName}} ID, Beispiel {{collectionName}}1",
+ "existingContainers": "Vorhandene Container",
+ "partitionKeyWarning": "Der Zielcontainer darf nicht bereits vorhanden sein. Daten-Explorer erstellt einen neuen Zielcontainer für Sie."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Keyspacename",
+ "keyspaceTooltip": "Wählen Sie einen vorhandenen Keyspace aus, oder geben Sie eine neue Keyspace-ID ein.",
+ "tableIdLabel": "Geben Sie den CQL-Befehl ein, um die Tabelle zu erstellen.",
+ "enterTableId": "Tabellen-ID eingeben",
+ "tableSchemaAriaLabel": "Tabellenschema",
+ "provisionDedicatedThroughput": "Dedizierten Durchsatz für diese Tabelle bereitstellen",
+ "provisionDedicatedThroughputTooltip": "Sie können optional dedizierten Durchsatz für eine Tabelle in einem Keyspace bereitstellen, in dem Durchsatz bereitgestellt wurde. Diese dedizierte Durchsatzmenge wird nicht für andere Tabellen im Keyspace freigegeben und wird nicht auf den Durchsatz angerechnet, den Sie für den Keyspace bereitgestellt haben. Diese Durchsatzmenge wird zusätzlich zu dem Durchsatz in Rechnung gestellt, den Sie auf Keyspaceebene bereitgestellt haben."
+ },
+ "tables": {
+ "addProperty": "Eigenschaft hinzufügen",
+ "addRow": "Zeile hinzufügen",
+ "addEntity": "Entität hinzufügen",
+ "back": "zurück",
+ "nullFieldsWarning": "Warnung: Nullfelder werden nicht zum Bearbeiten angezeigt.",
+ "propertyEmptyError": "{{property}} darf nicht leer sein. Geben Sie einen Wert für {{property}} ein.",
+ "whitespaceError": "{{property}} darf keine Leerzeichen enthalten. Geben Sie einen Wert für {{property}} ohne Leerzeichen ein.",
+ "propertyTypeEmptyError": "Der Eigenschaftentyp darf nicht leer sein. Wählen Sie einen Typ aus der Dropdownliste für die Eigenschaft {{property}} aus."
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Wählen Sie die Spalten aus, die abgefragt werden sollen.",
+ "availableColumns": "Verfügbare Spalten"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Wählen Sie aus, welche Spalten in der Ansicht der Elemente in Ihrem Container angezeigt werden sollen.",
+ "searchFields": "Suchfelder",
+ "reset": "Zurücksetzen",
+ "partitionKeySuffix": " (Partitionsschlüssel)"
+ },
+ "newVertex": {
+ "addProperty": "Eigenschaft hinzufügen"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Container-ID des globalen sekundären Indexes",
+ "globalSecondaryIndexIdPlaceholder": "Beispiel: indexbyEmailId",
+ "projectionQuery": "Projektionsabfrage",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Erfahren Sie mehr über das Definieren globaler sekundärer Indizes.",
+ "disabledTitle": "Ein globaler sekundärer Index wird bereits erstellt. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie einen weiteren erstellen."
+ },
+ "stringInput": {
+ "inputMismatchError": "Die Eingabe {{input}} stimmt nicht mit der ausgewählten {{selectedId}} überein."
+ },
+ "panelInfo": {
+ "information": "Informationen",
+ "moreDetails": "Weitere Details"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Skalieren",
+ "conflictResolution": "Konfliktauflösung",
+ "settings": "Einstellungen",
+ "indexingPolicy": "Indizierungsrichtlinie",
+ "partitionKeys": "Partitionsschlüssel",
+ "partitionKeysPreview": "Partitionsschlüssel (Vorschau)",
+ "computedProperties": "Berechnete Eigenschaften",
+ "containerPolicies": "Containerrichtlinien",
+ "throughputBuckets": "Durchsatzbuckets",
+ "globalSecondaryIndexPreview": "Globaler sekundärer Index (Vorschau)",
+ "maskingPolicyPreview": "Maskierungsrichtlinie (Vorschau)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Bitte wählen Sie für jeden Index einen Typ aus.",
+ "enterFieldNameError": "Geben Sie einen Feldnamen ein.",
+ "wildcardPathError": "Im Feldnamen ist kein Platzhalterpfad vorhanden. Verwenden Sie ein Muster wie "
+ },
+ "partitionKey": {
+ "shardKey": "Shardschlüssel",
+ "partitionKey": "Partitionsschlüssel",
+ "shardKeyTooltip": "Der Shardschlüssel (Feld) wird verwendet, um Ihre Daten auf viele Replikatgruppen (Shards) aufzuteilen, um unbegrenzte Skalierbarkeit zu erzielen. Es ist wichtig, ein Feld auszuwählen, das Ihre Daten gleichmäßig verteilt.",
+ "partitionKeyTooltip": "wird verwendet, um Daten automatisch über Partitionen zu verteilen und so die Skalierbarkeit zu gewährleisten. Wählen Sie in Ihrem JSON-Dokument eine Eigenschaft, die eine große Bandbreite an Werten aufweist und das Anforderungsvolumen gleichmäßig verteilt.",
+ "sqlPartitionKeyTooltipSuffix": " Bei kleinen Workloads mit vielen Lese- oder Schreibvorgängen beliebiger Größe ist die ID häufig eine gute Wahl.",
+ "partitionKeySubtext": "Für kleine Workloads ist die Element-ID eine geeignete Wahl als Partitionsschlüssel.",
+ "mongoPlaceholder": "Beispiel: categoryId",
+ "gremlinPlaceholder": "Beispiel: /address",
+ "sqlFirstPartitionKey": "Erforderlich – erster Partitionsschlüssel, z. B. /TenantId",
+ "sqlSecondPartitionKey": "zweiter Partitionsschlüssel, z. B. /UserId",
+ "sqlThirdPartitionKey": "Dritter Partitionsschlüssel, z. B. /SessionId",
+ "defaultPlaceholder": "Beispiel: /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Kostenschätzung*",
+ "howWeCalculate": "So berechnen wir das",
+ "updatedCostPerMonth": "Aktualisierte Kosten pro Monat",
+ "currentCostPerMonth": "Aktuelle Kosten pro Monat",
+ "perRu": "/RU",
+ "perHour": "/Std.",
+ "perDay": "/Tag",
+ "perMonth": "/Mo."
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Die maximale RU/s-Anzahl für die Autoskalierung wird vom System basierend auf den aktuellen manuellen Durchsatzeinstellungen und dem Speicher Ihrer Ressource festgelegt. Nachdem die Autoskalierung aktiviert wurde, können Sie die maximale RU/s-Anzahl ändern.",
+ "ttlWarningText": "Das System löscht Elemente automatisch auf Grundlage des von Ihnen angegebenen TTL-Werts (in Sekunden), ohne dass eine Löschoperation explizit von einer Clientanwendung angefordert werden muss. Weitere Informationen finden Sie unter",
+ "ttlWarningLinkText": "Gültigkeitsdauer (TTL) in Azure Cosmos DB",
+ "unsavedIndexingPolicy": "Indizierungsrichtlinie",
+ "unsavedDataMaskingPolicy": "Datenmaskierungsrichtlinie",
+ "unsavedComputedProperties": "berechnete Eigenschaften",
+ "unsavedEditorWarningPrefix": "Sie haben die neuesten Änderungen an",
+ "unsavedEditorWarningSuffix": ". Klicken Sie auf „Speichern“, um die Änderung zu bestätigen.",
+ "updateDelayedApplyWarning": "Sie sind dabei, eine Erhöhung des Durchsatzes über die vorab zugeordnete Kapazität hinaus anzufordern. Dieser Vorgang kann eine Weile dauern.",
+ "scalingUpDelayMessage": "Das Hochskalieren dauert 4–6 Stunden, da es die sofortige Unterstützung von Azure Cosmos DB basierend auf Ihrer Anzahl physischer Partitionen übersteigt. Sie können Ihren Durchsatz sofort auf {{instantMaximumThroughput}} erhöhen oder mit dem aktuellen Wert fortfahren und warten, bis das Hochskalieren abgeschlossen ist.",
+ "exceedPreAllocatedMessage": "Ihre Anfrage zur Erhöhung des Durchsatzes übersteigt die vorab zugewiesene Kapazität, was zu einer längeren Bearbeitungszeit als erwartet führen kann. Sie können aus drei Optionen wählen, um fortzufahren:",
+ "instantScaleOption": "Sie können sofort auf {{instantMaximumThroughput}} RU/s hochskalieren.",
+ "asyncScaleOption": "Sie können asynchron innerhalb von 4–6 Stunden auf einen beliebigen Wert unter {{maximumThroughput}} RU/s skalieren.",
+ "quotaMaxOption": "Ihr aktuelles Kontingent liegt bei {{maximumThroughput}} RU/s. Um dieses Limit zu überschreiten, müssen Sie eine Kontingenterhöhung anfordern und das Azure Cosmos DB-Team wird diese prüfen.",
+ "belowMinimumMessage": "Sie können den Durchsatz nicht unter den aktuellen Mindestwert von {{minimum}} RU/s senken. Weitere Informationen zu diesem Limit finden Sie in unserer Dokumentation zum Serviceangebot.",
+ "saveThroughputWarning": "Ihre Rechnung wird sich ändern, wenn Sie Ihre Durchsatzeinstellungen aktualisieren. Bitte überprüfen Sie die untenstehende aktualisierte Kostenschätzung, bevor Sie Ihre Änderungen speichern.",
+ "currentAutoscaleThroughput": "Aktueller Durchsatz der Autoskalierung:",
+ "targetAutoscaleThroughput": "Zieldurchsatz für Autoskalierung:",
+ "currentManualThroughput": "Aktueller manueller Durchsatz:",
+ "targetManualThroughput": "Manueller Zieldurchsatz:",
+ "applyDelayedMessage": "Die Anforderung zur Erhöhung des Durchsatzes wurde erfolgreich übermittelt. Dieser Vorgang dauert 1–3 Werktage. Die neuesten Statusinformationen finden Sie in den Benachrichtigungen.",
+ "databaseLabel": "Datenbank:",
+ "containerLabel": "Container:",
+ "applyShortDelayMessage": "Zurzeit wird eine Anforderung zur Erhöhung des Durchsatzes ausgeführt. Dieser Vorgang kann eine Weile dauern.",
+ "applyLongDelayMessage": "Zurzeit wird eine Anforderung zur Erhöhung des Durchsatzes ausgeführt. Dieser Vorgang dauert 1–3 Werktage. Die neuesten Statusinformationen finden Sie in den Benachrichtigungen.",
+ "throughputCapError": "Ihr Konto ist derzeit mit einem Gesamtdurchsatzlimit von {{throughputCap}} RU/s konfiguriert. Dieses Update ist nicht möglich, da es den Gesamtdurchsatz auf {{newTotalThroughput}} RU/s erhöhen würde. Ändern Sie das Gesamtdurchsatzlimit in der Kostenverwaltung.",
+ "throughputIncrementError": "Der Durchsatzwert muss in 1.000er-Schritten angegeben werden."
+ },
+ "conflictResolution": {
+ "lwwDefault": "Letzter Schreibvorgang gewinnt (Standard)",
+ "customMergeProcedure": "Mergeprozedur (benutzerdefiniert)",
+ "mode": "Modus",
+ "conflictResolverProperty": "Eigenschaft des Konfliktlösers",
+ "storedProcedure": "Gespeicherte Prozedur",
+ "lwwTooltip": "Ruft den Namen einer ganzzahligen Eigenschaft in Ihren Dokumenten ab oder legt diesen fest, der für das Konfliktlösungsschema „Last Write Wins“ (LWW, Letzter Schreibvorgang gewinnt) verwendet wird. Standardmäßig verwendet das System die systemdefinierte Zeitstempel-Eigenschaft „_ts“, um den Gewinner bei widersprüchlichen Versionen des Dokuments zu ermitteln. Geben Sie Ihre eigene Integer-Eigenschaft an, wenn Sie die standardmäßige Konfliktlösung auf Basis des Zeitstempels überschreiben möchten.",
+ "customTooltip": "Ruft den Namen einer gespeicherten Prozedur (auch bekannt als Merge-Prozedur) zum Auflösen von Konflikten ab oder legt diesen fest. Sie können anwendungsdefinierte Logik schreiben, um den Gewinner der widersprüchlichen Versionen eines Dokuments zu ermitteln. Die gespeicherte Prozedur wird transaktional, genau einmal, auf der Serverseite ausgeführt. Wenn Sie keine gespeicherte Prozedur bereitstellen, werden die Konflikte in",
+ "customTooltipConflictsFeed": " Konfliktfeed",
+ "customTooltipSuffix": ". Sie können die gespeicherte Prozedur jederzeit aktualisieren oder erneut registrieren."
+ },
+ "changeFeed": {
+ "label": "Aufbewahrungsrichtlinie für Änderungsfeedprotokolle ändern",
+ "tooltip": "Aktivieren Sie die Richtlinie zur Aufbewahrung von Änderungsfeedprotokollen, um standardmäßig die letzten 10 Minuten des Verlaufs für Elemente im Container aufzubewahren. Um dies zu ermöglichen, wird die Anforderungseinheit (RU, Request Unit) für diesen Container bei Schreibvorgängen mit dem Faktor zwei multipliziert. Lesevorgänge sind davon nicht betroffen."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Für Abfragen, die nach mehreren Eigenschaften filtern, erstellen Sie mehrere Einzelfeldindizes anstelle eines zusammengesetzten Index.",
+ "disclaimerCompoundIndexesLink": " Zusammengesetzte Indizes ",
+ "disclaimerSuffix": "werden nur zum Sortieren von Abfrageergebnissen verwendet. Wenn Sie einen zusammengesetzten Index hinzufügen müssen, können Sie diesen mit der Mongo Shell erstellen.",
+ "compoundNotSupported": "Sammlungen mit zusammengesetzten Indizes werden im Indizierungseditor derzeit noch nicht unterstützt. Um die Indizierungsrichtlinie für diese Sammlung zu ändern, verwenden Sie die Mongo Shell.",
+ "aadError": "Um den Indexierungsrichtlinien-Editor zu verwenden, melden Sie sich bei",
+ "aadErrorLink": "Azure-Portal.",
+ "refreshingProgress": "Fortschritt der Indextransformation wird aktualisiert",
+ "canMakeMoreChangesZero": "Sobald die aktuelle Indextransformation abgeschlossen ist, können Sie weitere Änderungen an der Indizierung vornehmen. ",
+ "refreshToCheck": "Aktualisieren Sie, um zu überprüfen, ob der Vorgang abgeschlossen ist.",
+ "canMakeMoreChangesProgress": "Sie können weitere Indizierungsänderungen vornehmen, sobald die aktuelle Indextransformation abgeschlossen ist. Sie ist zu {{progress}} % abgeschlossen. ",
+ "refreshToCheckProgress": "Aktualisieren, um den Fortschritt zu überprüfen",
+ "definitionColumn": "Definition",
+ "typeColumn": "Typ",
+ "dropIndexColumn": "Index löschen",
+ "addIndexBackColumn": "Index wieder hinzufügen",
+ "deleteIndexButton": "Schaltfläche „Index löschen“",
+ "addBackIndexButton": "Schaltfläche „Index wieder hinzufügen“",
+ "currentIndexes": "Aktuelle Indizes",
+ "indexesToBeDropped": "Zu löschende Indizes",
+ "indexFieldName": "Indexfeldname",
+ "indexType": "Indextyp",
+ "selectIndexType": "Indextyp auswählen",
+ "undoButton": "Schaltfläche „Rückgängig“"
+ },
+ "subSettings": {
+ "timeToLive": "Gültigkeitsdauer",
+ "ttlOff": "Aus",
+ "ttlOnNoDefault": "Ein (Kein Standard)",
+ "ttlOn": "Ein",
+ "seconds": "Sekunde(n)",
+ "timeToLiveInSeconds": "Gültigkeitsdauer in Sekunden",
+ "analyticalStorageTtl": "Gültigkeitsdauer des analytischen Speichers",
+ "geospatialConfiguration": "Geodatenkonfiguration",
+ "geography": "Geografie",
+ "geometry": "Geometrie",
+ "uniqueKeys": "Eindeutige Schlüssel",
+ "mongoTtlMessage": "Um die Time-to-Live (TTL) für Ihre Sammlung/Dokumente zu aktivieren,",
+ "mongoTtlLinkText": "TTL-Index erstellen",
+ "partitionKeyTooltipTemplate": "Diese {{partitionKeyName}} wird verwendet, um Daten zur Skalierbarkeit auf mehrere Partitionen zu verteilen. Der Wert „{{partitionKeyValue}}“ bestimmt, wie Dokumente partitioniert werden.",
+ "largePartitionKeyEnabled": "Das große „{{partitionKeyName}}“ wurde aktiviert.",
+ "hierarchicalPartitioned": "Hierarchisch partitionierter Container",
+ "nonHierarchicalPartitioned": "Nicht hierarchisch partitionierter Container."
+ },
+ "scale": {
+ "freeTierInfo": "Im kostenlosen Tarif erhalten Sie die ersten {{ru}} RU/s und {{storage}} GB Speicher in diesem Konto kostenlos. Damit Ihr Konto kostenlos bleibt, begrenzen Sie den gesamten RU/s-Wert aller Ressourcen im Konto auf {{ru}} RU/s.",
+ "freeTierLearnMore": "Weitere Informationen.",
+ "throughputRuS": "Durchsatz (RU/s)",
+ "autoScaleCustomSettings": "Ihr Konto verfügt über benutzerdefinierte Einstellungen, die die Festlegung des Durchsatzes auf Containerebene verhindern. Bitte wenden Sie sich für Änderungen an Ihren Ansprechpartner im Cosmos DB-Entwicklungsteam.",
+ "keyspaceSharedThroughput": "Dieser gemeinsame Durchsatz der Tabelle wird im Keyspace konfiguriert.",
+ "throughputRangeLabel": "Durchsatz ({{min}}–{{max}} RU/s)",
+ "unlimited": "unbegrenzt"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "„{{partitionKeyName}}“ ändern",
+ "currentPartitionKey": "Aktueller {{partitionKeyName}}",
+ "partitioning": "Partitionierung",
+ "hierarchical": "Hierarchisch",
+ "nonHierarchical": "Nicht-hierarchisch",
+ "safeguardWarning": "Um die Integrität der Daten zu gewährleisten, die in den neuen Container kopiert werden, stellen Sie sicher, dass während des gesamten Prozesses der Änderung des Partitionsschlüssels keine Aktualisierungen am Quellcontainer vorgenommen werden.",
+ "changeDescription": "Um den Partitionsschlüssel zu ändern, muss ein neuer Zielcontainer erstellt oder ein vorhandener Zielcontainer ausgewählt werden. Anschließend werden die Daten in den Zielcontainer kopiert.",
+ "changeButton": "Ändern",
+ "changeJob": "{{partitionKeyName}} Auftrag ändern",
+ "cancelButton": "Abbrechen",
+ "documentsProcessed": "({{processedCount}} von {{totalCount}} Dokumenten verarbeitet)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Berechnete Eigenschaften",
+ "learnMorePrefix": "über die Definition berechneter Eigenschaften und deren Verwendung."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Indizierungsrichtlinie"
+ },
+ "dataMasking": {
+ "ariaLabel": "Richtlinie für Datenmaskierung",
+ "validationFailed": "Fehler bei Überprüfung:",
+ "includedPathsRequired": "includedPaths ist erforderlich.",
+ "includedPathsMustBeArray": "includedPaths muss ein Array sein.",
+ "excludedPathsMustBeArray": "excludedPaths muss ein Array sein, wenn es angegeben ist."
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vektorrichtlinie",
+ "fullTextPolicy": "Richtlinie für Volltextsuche",
+ "createFullTextPolicy": "Neue Volltextsuchrichtlinie erstellen"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Für diesen Container sind die folgenden Indizes definiert.",
+ "learnMoreSuffix": "über die Definition globaler Sekundärindizes und deren Verwendung.",
+ "jsonAriaLabel": "JSON für globalen sekundären Index",
+ "addIndex": "Index hinzufügen",
+ "settingsTitle": "Globale Einstellungen für sekundären Index",
+ "sourceContainer": "Quellcontainer",
+ "indexDefinition": "Definition des globalen sekundären Index"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Fehler beim Aktualisieren des Fortschritts der Indextransformation"
+ },
+ "throughputInput": {
+ "autoscale": "Autoskalierung",
+ "manual": "Manuell",
+ "minimumRuS": "Minimaler RU/s",
+ "maximumRuS": "Maximale Anzahl von RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Speicherkapazität",
+ "fixed": "Korrigiert",
+ "unlimited": "Unbegrenzt",
+ "instant": "Sofort",
+ "fourToSixHrs": "4–6 Stunden",
+ "autoscaleDescription": "Basierend auf der Nutzung wird Ihr {{resourceType}}-Durchsatz von",
+ "freeTierWarning": "Die Abrechnung erfolgt, wenn Sie mehr als {{ru}} RU/s manuellen Durchsatz bereitstellen oder wenn die Ressource mit Autoscale über {{ru}} RU/s skaliert.",
+ "capacityCalculator": "Schätzen Sie Ihren erforderlichen RU/s mit",
+ "capacityCalculatorLink": " Kapazitätsrechner",
+ "fixedStorageNote": "Wenn Sie eine Sammlung mit fester Speicherkapazität verwenden, können Sie bis zu 10.000 RU/s festlegen.",
+ "min": "Min.",
+ "max": "Max."
+ },
+ "throughputBuckets": {
+ "label": "Durchsatzbuckets",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Daten-Explorer-Abfragebucket)",
+ "active": "Aktiv",
+ "inactive": "Inaktiv"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/en/Resources.json b/src/Localization/en/Resources.json
new file mode 100644
index 000000000..55a823113
--- /dev/null
+++ b/src/Localization/en/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Cancel",
+ "close": "Close",
+ "save": "Save",
+ "delete": "Delete",
+ "update": "Update",
+ "discard": "Discard",
+ "execute": "Execute",
+ "loading": "Loading",
+ "loadingEllipsis": "Loading...",
+ "next": "Next",
+ "previous": "Previous",
+ "yes": "Yes",
+ "no": "No",
+ "result": "Result",
+ "learnMore": "Learn more",
+ "getStarted": "Get started",
+ "retry": "Retry",
+ "apply": "Apply",
+ "refresh": "Refresh",
+ "copy": "Copy",
+ "create": "Create",
+ "confirm": "Confirm",
+ "open": "Open",
+ "rename": "Rename",
+ "download": "Download",
+ "upload": "Upload",
+ "connect": "Connect",
+ "remove": "Remove",
+ "load": "Load",
+ "publish": "Publish",
+ "browse": "Browse",
+ "increaseValueBy1": "Increase value by 1",
+ "decreaseValueBy1": "Decrease value by 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Welcome to Azure Cosmos DB",
+ "postgres": "Welcome to Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Welcome to Azure DocumentDB (with MongoDB compatibility)"
+ },
+ "subtitle": {
+ "default": "Globally distributed, multi-model database service for any scale",
+ "getStarted": "Get started with our sample datasets, documentation, and additional tools."
+ },
+ "quickStart": {
+ "title": "Launch quick start",
+ "description": "Launch a quick start tutorial to get started with sample data"
+ },
+ "newCollection": {
+ "title": "New {{collectionName}}",
+ "description": "Create a new container for storage and throughput"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB Samples Gallery",
+ "description": "Discover samples that showcase scalable, intelligent app patterns. Try one now to see how fast you can go from concept to code with Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Connect",
+ "description": "Prefer using your own choice of tooling? Find the connection string you need to connect",
+ "pgAdmin": {
+ "title": "Connect with pgAdmin",
+ "description": "Prefer pgAdmin? Find your connection strings here"
+ },
+ "vsCode": {
+ "title": "Connect with VS Code",
+ "description": "Query and Manage your MongoDB and DocumentDB clusters in Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "Create table and interact with data using PostgreSQL's shell interface"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "Create a collection and interact with data using MongoDB's shell interface"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "New to Cosmos DB PGSQL?",
+ "body": "Welcome! If you are new to Cosmos DB PGSQL and need help with getting started, here is where you can find sample data, query."
+ },
+ "resetPassword": {
+ "headline": "Create your password",
+ "body": "If you haven't changed your password yet, change it now."
+ },
+ "coachMark": {
+ "headline": "Start with sample {{collectionName}}",
+ "body": "You will be guided to create a sample container with sample data, then we will give you a tour of data explorer. You can also cancel launching this tour and explore yourself"
+ }
+ },
+ "sections": {
+ "recents": "Recents",
+ "clearRecents": "Clear Recents",
+ "top3": "Top 3 things you need to know",
+ "learningResources": "Learning Resources",
+ "nextSteps": "Next steps",
+ "tipsAndLearnMore": "Tips & learn more",
+ "notebook": "Notebook",
+ "needHelp": "Need help?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Advanced Modeling Patterns",
+ "description": "Learn advanced strategies to optimize your database."
+ },
+ "partitioning": {
+ "title": "Partitioning Best Practices",
+ "description": "Learn to apply data model and partitioning strategies."
+ },
+ "resourcePlanning": {
+ "title": "Plan Your Resource Requirements",
+ "description": "Get to know the different configuration choices."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "What is the MongoDB API?",
+ "description": "Understand Azure Cosmos DB for MongoDB and its features."
+ },
+ "features": {
+ "title": "Features and Syntax",
+ "description": "Discover the advantages and features"
+ },
+ "migrate": {
+ "title": "Migrate Your Data",
+ "description": "Pre-migration steps for moving data"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Build a Java App",
+ "description": "Create a Java app using an SDK."
+ },
+ "partitioning": {
+ "title": "Partitioning Best Practices",
+ "description": "Learn how partitioning works."
+ },
+ "requestUnits": {
+ "title": "Request Units (RUs)",
+ "description": "Understand RU charges."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Data Modeling",
+ "description": "Graph data modeling recommendations"
+ },
+ "partitioning": {
+ "title": "Partitioning Best Practices",
+ "description": "Learn how partitioning works"
+ },
+ "queryData": {
+ "title": "Query Data",
+ "description": "Querying data with Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "What is the Table API?",
+ "description": "Understand Azure Cosmos DB for Table and its features"
+ },
+ "migrate": {
+ "title": "Migrate your data",
+ "description": "Learn how to migrate your data"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table FAQs",
+ "description": "Common questions about Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Data Explorer keyboard shortcuts",
+ "description": "Learn keyboard shortcuts to navigate Data Explorer."
+ },
+ "liveTv": {
+ "title": "Learn the Fundamentals",
+ "description": "Watch Azure Cosmos DB Live TV show introductory and how to videos."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Get Started using an SDK",
+ "description": "Learn about the Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Migrate Your Data",
+ "description": "Migrate data using Azure services and open-source solutions."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Build an app with Node.js",
+ "description": "Create a Node.js app."
+ },
+ "gettingStarted": {
+ "title": "Getting Started Guide",
+ "description": "Learn the basics to get started."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Create a Container",
+ "description": "Get to know the create a container options."
+ },
+ "throughput": {
+ "title": "Provision Throughput",
+ "description": "Learn how to configure throughput."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Get Started ",
+ "description": "Create, query, and traverse using the Gremlin console"
+ },
+ "importData": {
+ "title": "Import Graph Data",
+ "description": "Learn Bulk ingestion data using BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Build a .NET App",
+ "description": "How to access Azure Cosmos DB for Table from a .NET app."
+ },
+ "java": {
+ "title": "Build a Java App",
+ "description": "Create a Azure Cosmos DB for Table app with Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Data Modeling",
+ "distributionColumn": "How to choose a Distribution Column",
+ "buildApps": "Build Apps with Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrate Data",
+ "vectorSearch": "Build AI apps with Vector Search",
+ "buildApps": "Build Apps with Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Performance Tuning",
+ "diagnosticQueries": "Useful Diagnostic Queries",
+ "sqlReference": "Distributed SQL Reference"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vector Search",
+ "textIndexing": "Text Indexing",
+ "troubleshoot": "Troubleshoot common issues"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Build your database",
+ "useTitle": "Use your database",
+ "newContainer": {
+ "title": "New container",
+ "description": "Create a destination container to store your data"
+ },
+ "sampleData": {
+ "title": "Sample Data",
+ "description": "Load sample data in your database"
+ },
+ "sampleVectorData": {
+ "title": "Sample Vector Data",
+ "description": "Load sample vector data with text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "App development",
+ "description": "Start here to use an SDK to build your apps"
+ },
+ "sampleGallery": {
+ "title": "Sample Gallery",
+ "description": "Get real-world end-to-end samples"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Sample Data",
+ "startButton": "Start",
+ "createPrompt": "Create a container \"{{containerName}}\" and import sample data into it. This may take a few minutes.",
+ "creatingContainer": "Creating container \"{{containerName}}\"...",
+ "importingData": "Importing data into \"{{containerName}}\"...",
+ "success": "Successfully created \"{{containerName}}\" with sample data.",
+ "errorContainerExists": "The container \"{{containerName}}\" in database \"{{databaseName}}\" already exists. Please delete it and retry.",
+ "errorCreateContainer": "Failed to create container: {{error}}",
+ "errorImportData": "Failed to import data: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "New {{containerName}}",
+ "restoreContainer": "Restore {{containerName}}",
+ "deleteDatabase": "Delete {{databaseName}}",
+ "deleteContainer": "Delete {{containerName}}",
+ "newSqlQuery": "New SQL Query",
+ "newQuery": "New Query",
+ "openMongoShell": "Open Mongo Shell",
+ "newShell": "New Shell",
+ "openCassandraShell": "Open Cassandra Shell",
+ "newStoredProcedure": "New Stored Procedure",
+ "newUdf": "New UDF",
+ "newTrigger": "New Trigger",
+ "deleteStoredProcedure": "Delete Stored Procedure",
+ "deleteTrigger": "Delete Trigger",
+ "deleteUdf": "Delete User Defined Function"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "New Item",
+ "newDocument": "New Document",
+ "uploadItem": "Upload Item",
+ "applyFilter": "Apply Filter",
+ "unsavedChanges": "Unsaved changes",
+ "unsavedChangesMessage": "Your unsaved changes will be lost. Do you want to continue?",
+ "createDocumentFailed": "Create document failed",
+ "updateDocumentFailed": "Update document failed",
+ "documentDeleted": "Document successfully deleted.",
+ "deleteDocumentDialogTitle": "Delete document",
+ "deleteDocumentsDialogTitle": "Delete documents",
+ "throttlingError": "Some documents failed to delete due to a rate limiting error. Please try again later. To prevent this in the future, consider increasing the throughput on your container or database.",
+ "deleteFailed": "Deleting document(s) failed ({{error}})",
+ "missingShardProperty": "The document is lacking the shard property: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Refresh documents grid failed",
+ "confirmDelete": "Are you sure you want to delete {{documentName}}?",
+ "confirmDeleteTitle": "Confirm delete",
+ "selectedItems": "the selected {{count}} items",
+ "selectedItem": "the selected item",
+ "selectedDocuments": "the selected {{count}} documents",
+ "selectedDocument": "the selected document",
+ "deleteDocumentFailedLog": "Failed to delete document {{documentId}} with status code {{statusCode}}",
+ "deleteSuccessLog": "Successfully deleted {{count}} document(s)",
+ "deleteThrottledLog": "Failed to delete {{count}} document(s) due to \"Request too large\" (429) error. Retrying...",
+ "missingShardKeyLog": "Failed to save new document: Document shard key not defined",
+ "filterTooltip": "Type a query predicate or choose one from the list.",
+ "loadMore": "Load more",
+ "documentEditor": "Document editor",
+ "savedFilters": "Saved filters",
+ "defaultFilters": "Default filters",
+ "abort": "Abort",
+ "deletingDocuments": "Deleting {{count}} document(s)",
+ "deletedDocumentsSuccess": "Successfully deleted {{count}} document(s).",
+ "deleteAborted": "Deleting document(s) was aborted.",
+ "failedToDeleteDocuments": "Failed to delete {{count}} document(s).",
+ "requestTooLargeBase": "Some delete requests failed due to a \"Request too large\" exception (429)",
+ "retriedSuccessfully": "but were successfully retried.",
+ "retryingNow": "Retrying now.",
+ "increaseThroughputTip": "To prevent this in the future, consider increasing the throughput on your container or database.",
+ "numberOfSelectedDocuments": "Number of selected documents: {{count}}",
+ "mongoFilterPlaceholder": "Type a query predicate (e.g., {\"id\":\"foo\"}), or choose one from the drop down list, or leave empty to query all documents.",
+ "sqlFilterPlaceholder": "Type a query predicate (e.g., WHERE c.id=\"1\"), or choose one from the drop down list, or leave empty to query all documents.",
+ "error": "Error",
+ "warning": "Warning"
+ },
+ "query": {
+ "executeQuery": "Execute Query",
+ "executeSelection": "Execute Selection",
+ "saveQuery": "Save Query",
+ "downloadQuery": "Download Query",
+ "cancelQuery": "Cancel query",
+ "openSavedQueries": "Open Saved Queries",
+ "vertical": "Vertical",
+ "horizontal": "Horizontal",
+ "view": "View",
+ "editingQuery": "Editing Query"
+ },
+ "storedProcedure": {
+ "id": "Stored Procedure Id",
+ "idPlaceholder": "Enter the new stored procedure id",
+ "idAriaLabel": "Stored procedure id",
+ "body": "Stored Procedure Body",
+ "bodyAriaLabel": "Stored procedure body",
+ "successfulExecution": "Successful execution of stored procedure",
+ "resultAriaLabel": "Execute stored procedure result",
+ "logsAriaLabel": "Execute stored procedure logs",
+ "errors": "Errors:",
+ "errorDetailsAriaLabel": "Error details link",
+ "moreDetails": "More details",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Trigger Id",
+ "idPlaceholder": "Enter the new trigger id",
+ "type": "Trigger Type",
+ "operation": "Trigger Operation",
+ "body": "Trigger Body",
+ "bodyAriaLabel": "Trigger body",
+ "pre": "Pre",
+ "post": "Post",
+ "all": "All",
+ "operationCreate": "Create",
+ "operationDelete": "Delete",
+ "operationReplace": "Replace"
+ },
+ "udf": {
+ "id": "User Defined Function Id",
+ "idPlaceholder": "Enter the new user defined function id",
+ "body": "User Defined Function Body",
+ "bodyAriaLabel": "User defined function body"
+ },
+ "conflicts": {
+ "unsavedChanges": "Unsaved changes",
+ "changesWillBeLost": "Changes will be lost. Do you want to continue?",
+ "resolveConflictFailed": "Resolve conflict failed",
+ "deleteConflictFailed": "Delete conflict failed",
+ "refreshGridFailed": "Refresh documents grid failed"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "What is the reason why you are deleting this {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Delete {{collectionName}}",
+ "confirmPrompt": "Confirm by typing the {{collectionName}} id",
+ "inputMismatch": "Input id {{input}} does not match the selected {{selectedId}}",
+ "feedbackTitle": "Help us improve Azure Cosmos DB!",
+ "feedbackReason": "What is the reason why you are deleting this {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Database {{suffix}}",
+ "databaseIdLabel": "Database id",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} id, Example {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Choose existing {{databaseName}} id",
+ "existingDatabasePlaceholder": "Choose existing {{databaseName}} id",
+ "indexing": "Indexing",
+ "turnOnIndexing": "Turn on indexing",
+ "automatic": "Automatic",
+ "turnOffIndexing": "Turn off indexing",
+ "off": "Off",
+ "sharding": "Sharding",
+ "shardingTooltip": "Sharded collections split your data across many replica sets (shards) to achieve unlimited scalability. Sharded collections require choosing a shard key (field) to evenly distribute your data.",
+ "unsharded": "Unsharded",
+ "unshardedLabel": "Unsharded (20GB limit)",
+ "sharded": "Sharded",
+ "addPartitionKey": "Add hierarchical partition key",
+ "hierarchicalPartitionKeyInfo": "This feature allows you to partition your data with up to three levels of keys for better data distribution. Requires .NET V3, Java V4 SDK, or preview JavaScript V3 SDK.",
+ "provisionDedicatedThroughput": "Provision dedicated throughput for this {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "You can optionally provision dedicated throughput for a {{collectionName}} within a database that has throughput provisioned. This dedicated throughput amount will not be shared with other {{collectionNamePlural}} in the database and does not count towards the throughput you provisioned for the database. This throughput amount will be billed in addition to the throughput amount you provisioned at the database level.",
+ "uniqueKeysPlaceholderMongo": "Comma separated paths e.g. firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Comma separated paths e.g. /firstName,/address/zipCode",
+ "addUniqueKey": "Add unique key",
+ "enableAnalyticalStore": "Enable analytical store",
+ "disableAnalyticalStore": "Disable analytical store",
+ "on": "On",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link is required for creating an analytical store {{collectionName}}. Enable Synapse Link for this Cosmos DB account.",
+ "enable": "Enable",
+ "containerVectorPolicy": "Container Vector Policy",
+ "containerFullTextSearchPolicy": "Container Full Text Search Policy",
+ "advanced": "Advanced",
+ "mongoIndexingTooltip": "The _id field is indexed by default. Creating a wildcard index for all fields will optimize queries and is recommended for development.",
+ "createWildcardIndex": "Create a Wildcard Index on all fields",
+ "legacySdkCheckbox": "My application uses an older Cosmos .NET or Java SDK version (.NET V1 or Java V2)",
+ "legacySdkInfo": "To ensure compatibility with older SDKs, the created container will use a legacy partitioning scheme that supports partition key values of size only up to 101 bytes. If this is enabled, you will not be able to use hierarchical partition keys.",
+ "indexingOnInfo": "All properties in your documents will be indexed by default for flexible and efficient queries.",
+ "indexingOffInfo": "Indexing will be turned off. Recommended if you don't need to run queries or only have key value operations.",
+ "indexingOffWarning": "By creating this container with indexing turned off, you will not be able to make any indexing policy changes. Indexing changes are only allowed on a container with a indexing policy.",
+ "acknowledgeSpendErrorMonthly": "Please acknowledge the estimated monthly spend.",
+ "acknowledgeSpendErrorDaily": "Please acknowledge the estimated daily spend.",
+ "unshardedMaxRuError": "Unsharded collections support up to 10,000 RUs",
+ "acknowledgeShareThroughputError": "Please acknowledge the estimated cost of this dedicated throughput.",
+ "vectorPolicyError": "Please fix errors in container vector policy",
+ "fullTextSearchPolicyError": "Please fix errors in container full text search policy",
+ "addingSampleDataSet": "Adding sample data set",
+ "databaseFieldLabelName": "Database name",
+ "databaseFieldLabelId": "Database id",
+ "newDatabaseIdPlaceholder": "Type a new database id",
+ "newDatabaseIdAriaLabel": "New database id, Type a new database id",
+ "createNewDatabaseAriaLabel": "Create new database",
+ "useExistingDatabaseAriaLabel": "Use existing database",
+ "chooseExistingDatabase": "Choose an existing database",
+ "teachingBubble": {
+ "step1Headline": "Create sample database",
+ "step1Body": "Database is the parent of a container. You can create a new database or use an existing one. In this tutorial we are creating a new database named SampleDB.",
+ "step1LearnMore": "Learn more about resources.",
+ "step2Headline": "Setting throughput",
+ "step2Body": "Cosmos DB recommends sharing throughput across database. Autoscale will give you a flexible amount of throughput based on the max RU/s set (Request Units).",
+ "step2LearnMore": "Learn more about RU/s.",
+ "step3Headline": "Naming container",
+ "step3Body": "Name your container",
+ "step4Headline": "Setting partition key",
+ "step4Body": "Last step - you will need to define a partition key for your collection. /address was chosen for this particular example. A good partition key should have a wide range of possible value",
+ "step4CreateContainer": "Create container",
+ "step5Headline": "Creating sample container",
+ "step5Body": "A sample container is now being created and we are adding sample data for you. It should take about 1 minute.",
+ "step5BodyFollowUp": "Once the sample container is created, review your sample dataset and follow next steps",
+ "stepOfTotal": "Step {{current}} of {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "The shard key (field) is used to split your data across many replica sets (shards) to achieve unlimited scalability. It's critical to choose a field that will evenly distribute your data.",
+ "partitionKeyTooltip": "The {{partitionKeyName}} is used to automatically distribute data across partitions for scalability. Choose a property in your JSON document that has a wide range of values and evenly distributes request volume.",
+ "partitionKeyTooltipSqlSuffix": " For small read-heavy workloads or write-heavy workloads of any size, id is often a good choice.",
+ "shardKeyLabel": "Shard key",
+ "partitionKeyLabel": "Partition key",
+ "shardKeyPlaceholder": "e.g., categoryId",
+ "partitionKeyPlaceholderDefault": "e.g., /address",
+ "partitionKeyPlaceholderFirst": "Required - first partition key e.g., /TenantId",
+ "partitionKeyPlaceholderSecond": "second partition key e.g., /UserId",
+ "partitionKeyPlaceholderThird": "third partition key e.g., /SessionId",
+ "partitionKeyPlaceholderGraph": "e.g., /address/zipCode",
+ "uniqueKeysTooltip": "Unique keys provide developers with the ability to add a layer of data integrity to their database. By creating a unique key policy when a container is created, you ensure the uniqueness of one or more values per partition key.",
+ "uniqueKeysLabel": "Unique keys",
+ "analyticalStoreLabel": "Analytical Store",
+ "analyticalStoreTooltip": "Enable analytical store capability to perform near real-time analytics on your operational data, without impacting the performance of transactional workloads.",
+ "analyticalStoreDescription": "Enable analytical store capability to perform near real-time analytics on your operational data, without impacting the performance of transactional workloads.",
+ "vectorPolicyTooltip": "Describe any properties in your data that contain vectors, so that they can be made available for similarity queries."
+ },
+ "settings": {
+ "pageOptions": "Page Options",
+ "pageOptionsDescription": "Choose Custom to specify a fixed amount of query results to show, or choose Unlimited to show as many query results per page.",
+ "queryResultsPerPage": "Query results per page",
+ "queryResultsPerPageTooltip": "Enter the number of query results that should be shown per page.",
+ "customQueryItemsPerPage": "Custom query items per page",
+ "custom": "Custom",
+ "unlimited": "Unlimited",
+ "entraIdRbac": "Enable Entra ID RBAC",
+ "entraIdRbacDescription": "Choose Automatic to enable Entra ID RBAC automatically. True/False to force enable/disable Entra ID RBAC.",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "Region Selection",
+ "regionSelectionDescription": "Changes region the Cosmos Client uses to access account.",
+ "selectRegion": "Select Region",
+ "selectRegionTooltip": "Changes the account endpoint used to perform client operations.",
+ "globalDefault": "Global (Default)",
+ "readWrite": "(Read/Write)",
+ "read": "(Read)",
+ "queryTimeout": "Query Timeout",
+ "queryTimeoutDescription": "When a query reaches a specified time limit, a popup with an option to cancel the query will show unless automatic cancellation has been enabled.",
+ "enableQueryTimeout": "Enable query timeout",
+ "queryTimeoutMs": "Query timeout (ms)",
+ "automaticallyCancelQuery": "Automatically cancel query after timeout",
+ "ruLimit": "RU Limit",
+ "ruLimitDescription": "If a query exceeds a configured RU limit, the query will be aborted.",
+ "enableRuLimit": "Enable RU limit",
+ "ruLimitLabel": "RU Limit (RU)",
+ "defaultQueryResults": "Default Query Results View",
+ "defaultQueryResultsDescription": "Select the default view to use when displaying query results.",
+ "retrySettings": "Retry Settings",
+ "retrySettingsDescription": "Retry policy associated with throttled requests during CosmosDB queries.",
+ "maxRetryAttempts": "Max retry attempts",
+ "maxRetryAttemptsTooltip": "Max number of retries to be performed for a request. Default value 9.",
+ "fixedRetryInterval": "Fixed retry interval (ms)",
+ "fixedRetryIntervalTooltip": "Fixed retry interval in milliseconds to wait between each retry ignoring the retryAfter returned as part of the response. Default value is 0 milliseconds.",
+ "maxWaitTime": "Max wait time (s)",
+ "maxWaitTimeTooltip": "Max wait time in seconds to wait for a request while the retries are happening. Default value 30 seconds.",
+ "enableContainerPagination": "Enable container pagination",
+ "enableContainerPaginationDescription": "Load 50 containers at a time. Currently, containers are not pulled in alphanumeric order.",
+ "enableCrossPartitionQuery": "Enable cross-partition query",
+ "enableCrossPartitionQueryDescription": "Send more than one request while executing a query. More than one request is necessary if the query is not scoped to single partition key value.",
+ "maxDegreeOfParallelism": "Max degree of parallelism",
+ "maxDegreeOfParallelismDescription": "Gets or sets the number of concurrent operations run client side during parallel query execution. A positive property value limits the number of concurrent operations to the set value. If it is set to less than 0, the system automatically decides the number of concurrent operations to run.",
+ "maxDegreeOfParallelismQuery": "Query up to the max degree of parallelism.",
+ "priorityLevel": "Priority Level",
+ "priorityLevelDescription": "Sets the priority level for data-plane requests from Data Explorer when using Priority-Based Execution. If \"None\" is selected, Data Explorer will not specify priority level, and the server-side default priority level will be used.",
+ "displayGremlinQueryResults": "Display Gremlin query results as:",
+ "displayGremlinQueryResultsDescription": "Select Graph to automatically visualize the query results as a Graph or JSON to display the results as JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Graph Auto-visualization",
+ "enableSampleDatabase": "Enable sample database",
+ "enableSampleDatabaseDescription": "This is a sample database and collection with synthetic product data you can use to explore using NoSQL queries. This will appear as another database in the Data Explorer UI, and is created by, and maintained by Microsoft at no cost to you.",
+ "enableSampleDbAriaLabel": "Enable sample db for query exploration",
+ "guidRepresentation": "Guid Representation",
+ "guidRepresentationDescription": "GuidRepresentation in MongoDB refers to how Globally Unique Identifiers (GUIDs) are serialized and deserialized when stored in BSON documents. This will apply to all document operations.",
+ "advancedSettings": "Advanced Settings",
+ "ignorePartitionKey": "Ignore partition key on document update",
+ "ignorePartitionKeyTooltip": "If checked, the partition key value will not be used to locate the document during update operations. Only use this if document updates are failing due to an abnormal partition key.",
+ "clearHistory": "Clear History",
+ "clearHistoryConfirm": "Are you sure you want to proceed?",
+ "clearHistoryDescription": "This action will clear the all customizations for this account in this browser, including:",
+ "clearHistoryTabLayout": "Reset your customized tab layout, including the splitter positions",
+ "clearHistoryTableColumns": "Erase your table column preferences, including any custom columns",
+ "clearHistoryFilters": "Clear your filter history",
+ "clearHistoryRegion": "Reset region selection to global",
+ "increaseValueBy1000": "Increase value by 1000",
+ "decreaseValueBy1000": "Decrease value by 1000",
+ "none": "None",
+ "low": "Low",
+ "high": "High",
+ "automatic": "Automatic",
+ "enhancedQueryControl": "Enhanced query control",
+ "enableQueryControl": "Enable query control",
+ "explorerVersion": "Explorer Version",
+ "accountId": "Account ID",
+ "sessionId": "Session ID",
+ "popupsDisabledError": "We were unable to establish authorization for this account, due to pop-ups being disabled in the browser.\nPlease enable pop-ups for this site and click on \"Login for Entra ID\" button",
+ "failedToAcquireTokenError": "Failed to acquire authorization token automatically. Please click on \"Login for Entra ID\" button to enable Entra ID RBAC operations"
+ },
+ "saveQuery": {
+ "panelTitle": "Save Query",
+ "setupCostMessage": "For compliance reasons, we save queries in a container in your Azure Cosmos account, in a separate database called \u201c{{databaseName}}\u201d. To proceed, we need to create a container in your account, estimated additional cost is $0.77 daily.",
+ "completeSetup": "Complete setup",
+ "noQueryNameError": "No query name specified",
+ "invalidQueryContentError": "Invalid query content specified",
+ "failedToSaveQueryError": "Failed to save query {{queryName}}",
+ "failedToSetupContainerError": "Failed to setup a container for saved queries",
+ "accountNotSetupError": "Failed to save query: account not setup to save queries",
+ "name": "Name"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "No file specified",
+ "failedToLoadQueryError": "Failed to load query",
+ "failedToLoadQueryFromFileError": "Failed to load query from file {{fileName}}",
+ "selectFilesToOpen": "Select a query document",
+ "browseFiles": "Browse"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Enter input parameters (if any)",
+ "key": "Key",
+ "param": "Param",
+ "partitionKeyValue": "Partition key value",
+ "value": "Value",
+ "addNewParam": "Add New Param",
+ "addParam": "Add param",
+ "deleteParam": "Delete param",
+ "invalidParamError": "Invalid param specified: {{invalidParam}}",
+ "invalidParamConsoleError": "Invalid param specified: {{invalidParam}} is not a valid literal value",
+ "stringType": "String",
+ "customType": "Custom"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "No files were specified. Please input at least one file.",
+ "selectJsonFiles": "Select JSON Files",
+ "selectJsonFilesTooltip": "Select one or more JSON files to upload. Each file can contain a single JSON document or an array of JSON documents. The combined size of all files in an individual upload operation must be less than 2 MB. You can perform multiple upload operations for larger data sets.",
+ "fileNameColumn": "FILE NAME",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} created, {{numThrottled}} throttled, {{numFailed}} errors",
+ "uploadedFiles": "Uploaded files"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Failed to copy {{name}} to {{destination}}",
+ "uploadFailedError": "Failed to upload {{name}}",
+ "location": "Location",
+ "locationAriaLabel": "Location",
+ "selectLocation": "Select a notebook location to copy",
+ "name": "Name"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Failed to publish {{notebookName}} to gallery",
+ "publishDescription": "When published, this notebook will appear in the Azure Cosmos DB notebooks public gallery. Make sure you have removed any sensitive data or output before publishing.",
+ "publishPrompt": "Would you like to publish and share \"{{name}}\" to the gallery?",
+ "coverImage": "Cover image",
+ "coverImageUrl": "Cover image url",
+ "name": "Name",
+ "description": "Description",
+ "tags": "Tags",
+ "tagsPlaceholder": "Optional tag 1, Optional tag 2",
+ "preview": "Preview",
+ "urlType": "URL",
+ "customImage": "Custom Image",
+ "takeScreenshot": "Take Screenshot",
+ "useFirstDisplayOutput": "Use First Display Output",
+ "failedToCaptureOutput": "Failed to capture first output",
+ "outputDoesNotExist": "Output does not exist for any of the cells.",
+ "failedToConvertError": "Failed to convert {{fileName}} to base64 format",
+ "failedToUploadError": "Failed to upload {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Failed to start data transfer job",
+ "suboptimalPartitionKeyError": "Warning: The system has detected that your collection may be using a suboptimal partition key",
+ "description": "When changing a container\u2019s partition key, you will need to create a destination container with the correct partition key. You may also select an existing destination container.",
+ "sourceContainerId": "Source {{collectionName}} id",
+ "destinationContainerId": "Destination {{collectionName}} id",
+ "collectionIdTooltip": "Unique identifier for the {{collectionName}} and used for id-based routing through REST and all SDKs.",
+ "collectionIdPlaceholder": "e.g., {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} id, Example {{collectionName}}1",
+ "existingContainers": "Existing Containers",
+ "partitionKeyWarning": "The destination container must not already exist. Data Explorer will create a new destination container for you."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Keyspace name",
+ "keyspaceTooltip": "Select an existing keyspace or enter a new keyspace id.",
+ "tableIdLabel": "Enter CQL command to create the table.",
+ "enterTableId": "Enter table Id",
+ "tableSchemaAriaLabel": "Table schema",
+ "provisionDedicatedThroughput": "Provision dedicated throughput for this table",
+ "provisionDedicatedThroughputTooltip": "You can optionally provision dedicated throughput for a table within a keyspace that has throughput provisioned. This dedicated throughput amount will not be shared with other tables in the keyspace and does not count towards the throughput you provisioned for the keyspace. This throughput amount will be billed in addition to the throughput amount you provisioned at the keyspace level."
+ },
+ "tables": {
+ "addProperty": "Add Property",
+ "addRow": "Add Row",
+ "addEntity": "Add Entity",
+ "back": "back",
+ "nullFieldsWarning": "Warning: Null fields will not be displayed for editing.",
+ "propertyEmptyError": "{{property}} cannot be empty. Please input a value for {{property}}",
+ "whitespaceError": "{{property}} cannot have whitespace. Please input a value for {{property}} without whitespace",
+ "propertyTypeEmptyError": "Property type cannot be empty. Please select a type from the dropdown for property {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Select the columns that you want to query.",
+ "availableColumns": "Available Columns"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Select which columns to display in your view of items in your container.",
+ "searchFields": "Search fields",
+ "reset": "Reset",
+ "partitionKeySuffix": " (partition key)"
+ },
+ "newVertex": {
+ "addProperty": "Add Property"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Global secondary index container id",
+ "globalSecondaryIndexIdPlaceholder": "e.g., indexbyEmailId",
+ "projectionQuery": "Projection query",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Learn more about defining global secondary indexes.",
+ "disabledTitle": "A global secondary index is already being created. Please wait for it to complete before creating another one."
+ },
+ "stringInput": {
+ "inputMismatchError": "Input {{input}} does not match the selected {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Information",
+ "moreDetails": "More details"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Scale",
+ "conflictResolution": "Conflict Resolution",
+ "settings": "Settings",
+ "indexingPolicy": "Indexing Policy",
+ "partitionKeys": "Partition Keys",
+ "partitionKeysPreview": "Partition Keys (preview)",
+ "computedProperties": "Computed Properties",
+ "containerPolicies": "Container Policies",
+ "throughputBuckets": "Throughput Buckets",
+ "globalSecondaryIndexPreview": "Global Secondary Index (Preview)",
+ "maskingPolicyPreview": "Masking Policy (preview)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Please select a type for each index.",
+ "enterFieldNameError": "Please enter a field name.",
+ "wildcardPathError": "Wildcard path is not present in the field name. Use a pattern like "
+ },
+ "partitionKey": {
+ "shardKey": "Shard key",
+ "partitionKey": "Partition key",
+ "shardKeyTooltip": "The shard key (field) is used to split your data across many replica sets (shards) to achieve unlimited scalability. It's critical to choose a field that will evenly distribute your data.",
+ "partitionKeyTooltip": "is used to automatically distribute data across partitions for scalability. Choose a property in your JSON document that has a wide range of values and evenly distributes request volume.",
+ "sqlPartitionKeyTooltipSuffix": " For small read-heavy workloads or write-heavy workloads of any size, id is often a good choice.",
+ "partitionKeySubtext": "For small workloads, the item ID is a suitable choice for the partition key.",
+ "mongoPlaceholder": "e.g., categoryId",
+ "gremlinPlaceholder": "e.g., /address",
+ "sqlFirstPartitionKey": "Required - first partition key e.g., /TenantId",
+ "sqlSecondPartitionKey": "second partition key e.g., /UserId",
+ "sqlThirdPartitionKey": "third partition key e.g., /SessionId",
+ "defaultPlaceholder": "e.g., /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Cost estimate*",
+ "howWeCalculate": "How we calculate this",
+ "updatedCostPerMonth": "Updated cost per month",
+ "currentCostPerMonth": "Current cost per month",
+ "perRu": "/RU",
+ "perHour": "/hr",
+ "perDay": "/day",
+ "perMonth": "/mo"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "The starting autoscale max RU/s will be determined by the system, based on the current manual throughput settings and storage of your resource. After autoscale has been enabled, you can change the max RU/s.",
+ "ttlWarningText": "The system will automatically delete items based on the TTL value (in seconds) you provide, without needing a delete operation explicitly issued by a client application. For more information see,",
+ "ttlWarningLinkText": "Time to Live (TTL) in Azure Cosmos DB",
+ "unsavedIndexingPolicy": "indexing policy",
+ "unsavedDataMaskingPolicy": "data masking policy",
+ "unsavedComputedProperties": "computed properties",
+ "unsavedEditorWarningPrefix": "You have not saved the latest changes made to your",
+ "unsavedEditorWarningSuffix": ". Please click save to confirm the changes.",
+ "updateDelayedApplyWarning": "You are about to request an increase in throughput beyond the pre-allocated capacity. This operation will take some time to complete.",
+ "scalingUpDelayMessage": "Scaling up will take 4-6 hours as it exceeds what Azure Cosmos DB can instantly support currently based on your number of physical partitions. You can increase your throughput to {{instantMaximumThroughput}} instantly or proceed with this value and wait until the scale-up is completed.",
+ "exceedPreAllocatedMessage": "Your request to increase throughput exceeds the pre-allocated capacity which may take longer than expected. There are three options you can choose from to proceed:",
+ "instantScaleOption": "You can instantly scale up to {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "You can asynchronously scale up to any value under {{maximumThroughput}} RU/s in 4-6 hours.",
+ "quotaMaxOption": "Your current quota max is {{maximumThroughput}} RU/s. To go over this limit, you must request a quota increase and the Azure Cosmos DB team will review.",
+ "belowMinimumMessage": "You are not able to lower throughput below your current minimum of {{minimum}} RU/s. For more information on this limit, please refer to our service quote documentation.",
+ "saveThroughputWarning": "Your bill will be affected as you update your throughput settings. Please review the updated cost estimate below before saving your changes",
+ "currentAutoscaleThroughput": "Current autoscale throughput:",
+ "targetAutoscaleThroughput": "Target autoscale throughput:",
+ "currentManualThroughput": "Current manual throughput:",
+ "targetManualThroughput": "Target manual throughput:",
+ "applyDelayedMessage": "The request to increase the throughput has successfully been submitted. This operation will take 1-3 business days to complete. View the latest status in Notifications.",
+ "databaseLabel": "Database:",
+ "containerLabel": "Container:",
+ "applyShortDelayMessage": "A request to increase the throughput is currently in progress. This operation will take some time to complete.",
+ "applyLongDelayMessage": "A request to increase the throughput is currently in progress. This operation will take 1-3 business days to complete. View the latest status in Notifications.",
+ "throughputCapError": "Your account is currently configured with a total throughput limit of {{throughputCap}} RU/s. This update isn't possible because it would increase the total throughput to {{newTotalThroughput}} RU/s. Change total throughput limit in cost management.",
+ "throughputIncrementError": "Throughput value must be in increments of 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Last Write Wins (default)",
+ "customMergeProcedure": "Merge Procedure (custom)",
+ "mode": "Mode",
+ "conflictResolverProperty": "Conflict Resolver Property",
+ "storedProcedure": "Stored procedure",
+ "lwwTooltip": "Gets or sets the name of a integer property in your documents which is used for the Last Write Wins (LWW) based conflict resolution scheme. By default, the system uses the system defined timestamp property, _ts to decide the winner for the conflicting versions of the document. Specify your own integer property if you want to override the default timestamp based conflict resolution.",
+ "customTooltip": "Gets or sets the name of a stored procedure (aka merge procedure) for resolving the conflicts. You can write application defined logic to determine the winner of the conflicting versions of a document. The stored procedure will get executed transactionally, exactly once, on the server side. If you do not provide a stored procedure, the conflicts will be populated in the",
+ "customTooltipConflictsFeed": " conflicts feed",
+ "customTooltipSuffix": ". You can update/re-register the stored procedure at any time."
+ },
+ "changeFeed": {
+ "label": "Change feed log retention policy",
+ "tooltip": "Enable change feed log retention policy to retain last 10 minutes of history for items in the container by default. To support this, the request unit (RU) charge for this container will be multiplied by a factor of two for writes. Reads are unaffected."
+ },
+ "mongoIndexing": {
+ "disclaimer": "For queries that filter on multiple properties, create multiple single field indexes instead of a compound index.",
+ "disclaimerCompoundIndexesLink": " Compound indexes ",
+ "disclaimerSuffix": "are only used for sorting query results. If you need to add a compound index, you can create one using the Mongo shell.",
+ "compoundNotSupported": "Collections with compound indexes are not yet supported in the indexing editor. To modify indexing policy for this collection, use the Mongo Shell.",
+ "aadError": "To use the indexing policy editor, please login to the",
+ "aadErrorLink": "azure portal.",
+ "refreshingProgress": "Refreshing index transformation progress",
+ "canMakeMoreChangesZero": "You can make more indexing changes once the current index transformation is complete. ",
+ "refreshToCheck": "Refresh to check if it has completed.",
+ "canMakeMoreChangesProgress": "You can make more indexing changes once the current index transformation has completed. It is {{progress}}% complete. ",
+ "refreshToCheckProgress": "Refresh to check the progress.",
+ "definitionColumn": "Definition",
+ "typeColumn": "Type",
+ "dropIndexColumn": "Drop Index",
+ "addIndexBackColumn": "Add index back",
+ "deleteIndexButton": "Delete index Button",
+ "addBackIndexButton": "Add back Index Button",
+ "currentIndexes": "Current index(es)",
+ "indexesToBeDropped": "Index(es) to be dropped",
+ "indexFieldName": "Index Field Name",
+ "indexType": "Index Type",
+ "selectIndexType": "Select an index type",
+ "undoButton": "Undo Button"
+ },
+ "subSettings": {
+ "timeToLive": "Time to Live",
+ "ttlOff": "Off",
+ "ttlOnNoDefault": "On (no default)",
+ "ttlOn": "On",
+ "seconds": "second(s)",
+ "timeToLiveInSeconds": "Time to live in seconds",
+ "analyticalStorageTtl": "Analytical Storage Time to Live",
+ "geospatialConfiguration": "Geospatial Configuration",
+ "geography": "Geography",
+ "geometry": "Geometry",
+ "uniqueKeys": "Unique keys",
+ "mongoTtlMessage": "To enable time-to-live (TTL) for your collection/documents,",
+ "mongoTtlLinkText": "create a TTL index",
+ "partitionKeyTooltipTemplate": "This {{partitionKeyName}} is used to distribute data across multiple partitions for scalability. The value \"{{partitionKeyValue}}\" determines how documents are partitioned.",
+ "largePartitionKeyEnabled": "Large {{partitionKeyName}} has been enabled.",
+ "hierarchicalPartitioned": "Hierarchically partitioned container.",
+ "nonHierarchicalPartitioned": "Non-hierarchically partitioned container."
+ },
+ "scale": {
+ "freeTierInfo": "With free tier, you will get the first {{ru}} RU/s and {{storage}} GB of storage in this account for free. To keep your account free, keep the total RU/s across all resources in the account to {{ru}} RU/s.",
+ "freeTierLearnMore": "Learn more.",
+ "throughputRuS": "Throughput (RU/s)",
+ "autoScaleCustomSettings": "Your account has custom settings that prevents setting throughput at the container level. Please work with your Cosmos DB engineering team point of contact to make changes.",
+ "keyspaceSharedThroughput": "This table shared throughput is configured at the keyspace",
+ "throughputRangeLabel": "Throughput ({{min}} - {{max}} RU/s)",
+ "unlimited": "unlimited"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Change {{partitionKeyName}}",
+ "currentPartitionKey": "Current {{partitionKeyName}}",
+ "partitioning": "Partitioning",
+ "hierarchical": "Hierarchical",
+ "nonHierarchical": "Non-hierarchical",
+ "safeguardWarning": "To safeguard the integrity of the data being copied to the new container, ensure that no updates are made to the source container for the entire duration of the partition key change process.",
+ "changeDescription": "To change the partition key, a new destination container must be created or an existing destination container selected. Data will then be copied to the destination container.",
+ "changeButton": "Change",
+ "changeJob": "{{partitionKeyName}} change job",
+ "cancelButton": "Cancel",
+ "documentsProcessed": "({{processedCount}} of {{totalCount}} documents processed)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Computed properties",
+ "learnMorePrefix": "about how to define computed properties and how to use them."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Indexing Policy"
+ },
+ "dataMasking": {
+ "ariaLabel": "Data Masking Policy",
+ "validationFailed": "Validation failed:",
+ "includedPathsRequired": "includedPaths is required",
+ "includedPathsMustBeArray": "includedPaths must be an array",
+ "excludedPathsMustBeArray": "excludedPaths must be an array if provided"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vector Policy",
+ "fullTextPolicy": "Full Text Policy",
+ "createFullTextPolicy": "Create new full text search policy"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "This container has the following indexes defined for it.",
+ "learnMoreSuffix": "about how to define global secondary indexes and how to use them.",
+ "jsonAriaLabel": "Global Secondary Index JSON",
+ "addIndex": "Add index",
+ "settingsTitle": "Global Secondary Index Settings",
+ "sourceContainer": "Source container",
+ "indexDefinition": "Global secondary index definition"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Refreshing index transformation progress failed"
+ },
+ "throughputInput": {
+ "autoscale": "Autoscale",
+ "manual": "Manual",
+ "minimumRuS": "Minimum RU/s",
+ "maximumRuS": "Maximum RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Storage capacity",
+ "fixed": "Fixed",
+ "unlimited": "Unlimited",
+ "instant": "Instant",
+ "fourToSixHrs": "4-6 hrs",
+ "autoscaleDescription": "Based on usage, your {{resourceType}} throughput will scale from",
+ "freeTierWarning": "Billing will apply if you provision more than {{ru}} RU/s of manual throughput, or if the resource scales beyond {{ru}} RU/s with autoscale.",
+ "capacityCalculator": "Estimate your required RU/s with",
+ "capacityCalculatorLink": " capacity calculator",
+ "fixedStorageNote": "When using a collection with fixed storage capacity, you can set up to 10,000 RU/s.",
+ "min": "min",
+ "max": "max"
+ },
+ "throughputBuckets": {
+ "label": "Throughput Buckets",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Data Explorer Query Bucket)",
+ "active": "Active",
+ "inactive": "Inactive"
+ }
+ }
+ }
+}
diff --git a/src/Localization/es/Resources.json b/src/Localization/es/Resources.json
new file mode 100644
index 000000000..a1623c00c
--- /dev/null
+++ b/src/Localization/es/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "Aceptar",
+ "cancel": "Cancelar",
+ "close": "Cerrar",
+ "save": "Guardar",
+ "delete": "Eliminar",
+ "update": "Actualizar",
+ "discard": "Descartar",
+ "execute": "Ejecutar",
+ "loading": "Cargando",
+ "loadingEllipsis": "Cargando…",
+ "next": "Siguiente",
+ "previous": "Anterior",
+ "yes": "Sí",
+ "no": "No",
+ "result": "Resultado",
+ "learnMore": "Más información",
+ "getStarted": "Comenzar",
+ "retry": "Reintentar",
+ "apply": "Aplicar",
+ "refresh": "Actualizar",
+ "copy": "Copiar",
+ "create": "Crear",
+ "confirm": "Confirmar",
+ "open": "Abrir",
+ "rename": "Cambiar nombre",
+ "download": "Descargar",
+ "upload": "Cargar",
+ "connect": "Conectar",
+ "remove": "Quitar",
+ "load": "Cargar",
+ "publish": "Publicar",
+ "browse": "Examinar",
+ "increaseValueBy1": "Aumentar valor en 1",
+ "decreaseValueBy1": "Disminuir valor en 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Le presentamos Azure Cosmos DB",
+ "postgres": "Le damos la bienvenida a Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Le damos la bienvenida a Azure DocumentDB (con compatibilidad con MongoDB)"
+ },
+ "subtitle": {
+ "default": "Servicio de base de datos multimodelo distribuido globalmente para cualquier escala",
+ "getStarted": "Introducción a nuestros conjuntos de datos de ejemplo, documentación y herramientas adicionales."
+ },
+ "quickStart": {
+ "title": "Inicio rápido",
+ "description": "Iniciar un tutorial de inicio rápido para empezar a trabajar con datos de ejemplo"
+ },
+ "newCollection": {
+ "title": "Nuevo elemento: {{collectionName}}",
+ "description": "Creación de un nuevo contenedor para el almacenamiento y el rendimiento"
+ },
+ "samplesGallery": {
+ "title": "Galería de ejemplos de Azure Cosmos DB",
+ "description": "Descubra ejemplos que muestran patrones de aplicaciones inteligentes y escalables. Pruebe una ahora para ver la rapidez con la que puede pasar del concepto al código con Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Conectar",
+ "description": "¿Prefiere usar sus propias herramientas? Busque la cadena de conexión que necesita para conectarse.",
+ "pgAdmin": {
+ "title": "Conexión con pgAdmin",
+ "description": "¿Prefiere pgAdmin? Busque las cadenas de conexión aquí"
+ },
+ "vsCode": {
+ "title": "Conectar con VS Code",
+ "description": "Consulta y administración de los clústeres de MongoDB y DocumentDB en Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "Creación de una tabla e interacción con datos mediante la interfaz de shell de PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "Creación de una colección e interacción con datos mediante la interfaz de shell de MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "¿Es nuevo en Cosmos DB PGSQL?",
+ "body": "Le damos la bienvenida Si no está familiarizado con Cosmos DB PGSQL y necesita ayuda para empezar, aquí puede encontrar datos de ejemplo y consultarlos."
+ },
+ "resetPassword": {
+ "headline": "Crear la contraseña",
+ "body": "Si aún no ha cambiado la contraseña, cámbiela ahora."
+ },
+ "coachMark": {
+ "headline": "Empezar con el ejemplo {{collectionName}}",
+ "body": "Se le guiará para crear un contenedor de ejemplo con datos de ejemplo y, a continuación, le ofreceremos un paseo por el explorador de datos. También puede cancelar la reserva de esta excursión y explorarla por su cuenta."
+ }
+ },
+ "sections": {
+ "recents": "Recientes",
+ "clearRecents": "Borrar recientes",
+ "top3": "3 cosas principales que debes saber",
+ "learningResources": "Recursos de aprendizaje",
+ "nextSteps": "Siguientes pasos",
+ "tipsAndLearnMore": "Sugerencias y más información",
+ "notebook": "Notebook",
+ "needHelp": "¿Necesita ayuda?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Patrones de modelado avanzados",
+ "description": "Obtenga información acerca de las estrategias avanzadas para optimizar la base de datos."
+ },
+ "partitioning": {
+ "title": "procedimientos recomendados de creación de particiones",
+ "description": "Aprenda a aplicar estrategias de creación de particiones y modelo de datos."
+ },
+ "resourcePlanning": {
+ "title": "Planear los requisitos de recursos",
+ "description": "Conozca las distintas opciones de configuración."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "¿Qué es MongoDB API?",
+ "description": "Comprenda Azure Cosmos DB de MongoDB y sus características."
+ },
+ "features": {
+ "title": "Características y sintaxis",
+ "description": "Descubra las ventajas y características"
+ },
+ "migrate": {
+ "title": "Migrar los datos",
+ "description": "Pasos previos a la migración para mover datos"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Compilación de una aplicación java",
+ "description": "Cree una aplicación java mediante un SDK."
+ },
+ "partitioning": {
+ "title": "procedimientos recomendados de creación de particiones",
+ "description": "Obtenga información acerca de cómo funciona la creación de particiones."
+ },
+ "requestUnits": {
+ "title": "Unidades de solicitud (RU)",
+ "description": "Descripción de los cargos de RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modelado de datos",
+ "description": "Recomendaciones de modelado de datos de grafos"
+ },
+ "partitioning": {
+ "title": "procedimientos recomendados de creación de particiones",
+ "description": "Obtenga información sobre cómo funciona la creación de particiones"
+ },
+ "queryData": {
+ "title": "Consultar datos",
+ "description": "Consulta de datos con Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "¿Cuál es el Table API?",
+ "description": "Descripción de Azure Cosmos DB para Table y sus características"
+ },
+ "migrate": {
+ "title": "Migrar los datos",
+ "description": "Obtenga información sobre cómo migrar sus datos"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB para preguntas más frecuentes sobre tablas",
+ "description": "Preguntas comunes sobre Azure Cosmos DB para table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Explorador de datos métodos abreviados de teclado",
+ "description": "Obtenga información acerca de los métodos abreviados de teclado para navegar por Explorador de datos."
+ },
+ "liveTv": {
+ "title": "Conozca los aspectos básicos",
+ "description": "Vea Azure Cosmos DB introducción a programas de TV en vivo y vídeos de procedimientos."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Introducción al uso de un SDK",
+ "description": "Obtenga información acerca del SDK de Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Migrar los datos",
+ "description": "Migre datos mediante servicios de Azure y soluciones de código abierto."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Compilación de una aplicación con Node.js",
+ "description": "Cree una aplicación Node.js."
+ },
+ "gettingStarted": {
+ "title": "Guía de introducción",
+ "description": "Conozca los conceptos básicos para empezar."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Crear un contenedor",
+ "description": "Conozca las opciones de creación de un contenedor."
+ },
+ "throughput": {
+ "title": "Aprovisionar rendimiento",
+ "description": "Aprenda a configurar el rendimiento."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Introducción ",
+ "description": "Creación, consulta y recorrido mediante la consola de Gremlin"
+ },
+ "importData": {
+ "title": "Importar datos del gráfico",
+ "description": "Información sobre los datos de ingesta masiva mediante BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Compilación de una aplicación .NET",
+ "description": "Cómo acceder a Azure Cosmos DB para Table desde una aplicación .NET."
+ },
+ "java": {
+ "title": "Compilación de una aplicación java",
+ "description": "Creación de una Azure Cosmos DB para la aplicación Table con el SDK de Java "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modelado de datos",
+ "distributionColumn": "Cómo elegir una columna de distribución",
+ "buildApps": "Compilación de aplicaciones con Python, Java y Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrar datos",
+ "vectorSearch": "Creación de aplicaciones de inteligencia artificial con Vector Search",
+ "buildApps": "Compilación de aplicaciones con Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Ajuste de rendimiento",
+ "diagnosticQueries": "Consultas de diagnóstico útiles",
+ "sqlReference": "Referencia de SQL distribuida"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vector de búsqueda",
+ "textIndexing": "Indización de texto",
+ "troubleshoot": "Solucionar problemas comunes"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Compilación de la base de datos",
+ "useTitle": "Uso de la base de datos",
+ "newContainer": {
+ "title": "Nuevo contenedor",
+ "description": "Creación de un contenedor de destino para almacenar los datos"
+ },
+ "sampleData": {
+ "title": "Datos de ejemplo",
+ "description": "Carga de datos de ejemplo en la base de datos"
+ },
+ "sampleVectorData": {
+ "title": "Datos vectoriales de ejemplo",
+ "description": "Carga de datos vectoriales de ejemplo con text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Desarrollo de aplicaciones",
+ "description": "Empiece aquí para usar un SDK para compilar sus aplicaciones"
+ },
+ "sampleGallery": {
+ "title": "Galería de ejemplos",
+ "description": "Obtener ejemplos de un extremo a otro del mundo real"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Datos de ejemplo",
+ "startButton": "Inicio",
+ "createPrompt": "Cree un contenedor \"{{containerName}}\" e importe datos de ejemplo en él. Esto podría tardar unos minutos.",
+ "creatingContainer": "Creando contenedor \"{{containerName}}\"...",
+ "importingData": "Importando datos en \"{{containerName}}\"...",
+ "success": "Se ha creado correctamente \"{{containerName}}\" con datos de ejemplo.",
+ "errorContainerExists": "El contenedor \"{{containerName}}\" de la base de datos \"{{databaseName}}\" ya existe. Elimínelo y vuelva a intentarlo.",
+ "errorCreateContainer": "Error al crear el contenedor: {{error}}",
+ "errorImportData": "No se pudieron importar los datos: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nuevo {{containerName}}",
+ "restoreContainer": "Restaurar {{containerName}}",
+ "deleteDatabase": "Eliminar {{databaseName}}",
+ "deleteContainer": "Eliminar {{containerName}}",
+ "newSqlQuery": "Nueva consulta de SQL",
+ "newQuery": "Nueva consulta",
+ "openMongoShell": "Abrir Shell de Mongo",
+ "newShell": "Nuevo shell",
+ "openCassandraShell": "Abrir Shell de Cassandra",
+ "newStoredProcedure": "Nuevo procedimiento almacenado",
+ "newUdf": "Nueva UDF",
+ "newTrigger": "Nuevo desencadenador",
+ "deleteStoredProcedure": "Eliminar procedimiento almacenado",
+ "deleteTrigger": "Eliminar desencadenador",
+ "deleteUdf": "Eliminar función definida por el usuario"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nuevo elemento",
+ "newDocument": "Nuevo documento",
+ "uploadItem": "Cargar elemento",
+ "applyFilter": "Aplicar filtro",
+ "unsavedChanges": "Cambios sin guardar",
+ "unsavedChangesMessage": "Se perderán los cambios no guardados. ¿Quiere continuar?",
+ "createDocumentFailed": "Error al crear el documento",
+ "updateDocumentFailed": "Error al actualizar el documento",
+ "documentDeleted": "El documento se eliminó correctamente.",
+ "deleteDocumentDialogTitle": "Eliminar documento",
+ "deleteDocumentsDialogTitle": "Eliminar documentos",
+ "throttlingError": "Algunos documentos no se pudieron eliminar debido a un error de limitación de velocidad. Inténtelo de nuevo más tarde. Para evitar esto en el futuro, considere la posibilidad de aumentar el rendimiento en el contenedor o la base de datos.",
+ "deleteFailed": "Error al eliminar documentos ({{error}})",
+ "missingShardProperty": "El documento carece de la propiedad de partición: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Error al actualizar la cuadrícula de documentos",
+ "confirmDelete": "¿Seguro que desea eliminar {{documentName}}?",
+ "confirmDeleteTitle": "Confirmar eliminación",
+ "selectedItems": "los elementos seleccionados {{count}}",
+ "selectedItem": "el elemento seleccionado",
+ "selectedDocuments": "los documentos seleccionados {{count}} ",
+ "selectedDocument": "el documento seleccionado",
+ "deleteDocumentFailedLog": "No se pudo eliminar el documento {{documentId}} con código de estado {{statusCode}}",
+ "deleteSuccessLog": "Documentos eliminados {{count}} correctamente",
+ "deleteThrottledLog": "No se pudieron eliminar {{count}} documentos debido al error \"Solicitud demasiado grande\" (429). Reintentando...",
+ "missingShardKeyLog": "No se pudo guardar el nuevo documento: clave de partición de documento no definida",
+ "filterTooltip": "Escriba un predicado de consulta o elija uno de la lista.",
+ "loadMore": "Cargar más",
+ "documentEditor": "Editor de documentos",
+ "savedFilters": "Filtros guardados",
+ "defaultFilters": "Filtros predeterminados",
+ "abort": "Anular",
+ "deletingDocuments": "Eliminando {{count}} documentos",
+ "deletedDocumentsSuccess": "Los documentos se eliminaron {{count}} correctamente.",
+ "deleteAborted": "Se anuló la eliminación de documentos.",
+ "failedToDeleteDocuments": "No se pudieron eliminar {{count}} documentos.",
+ "requestTooLargeBase": "Error en algunas solicitudes de eliminación debido a una excepción \"Solicitud demasiado grande\" (429)",
+ "retriedSuccessfully": "pero se reintentaron correctamente.",
+ "retryingNow": "Reintentar ahora.",
+ "increaseThroughputTip": "Para evitar esto en el futuro, considere la posibilidad de aumentar el rendimiento en el contenedor o la base de datos.",
+ "numberOfSelectedDocuments": "Número de documentos seleccionados: {{count}}",
+ "mongoFilterPlaceholder": "Escriba un predicado de consulta (por ejemplo, {\"id\":\"foo\"}), elija uno de la lista desplegable o déjelo vacío para consultar todos los documentos.",
+ "sqlFilterPlaceholder": "Escriba un predicado de consulta (por ejemplo, WHERE c.id=\"1\"), elija uno de la lista desplegable o déjelo vacío para consultar todos los documentos.",
+ "error": "Error",
+ "warning": "Advertencia"
+ },
+ "query": {
+ "executeQuery": "Ejecutar la consulta",
+ "executeSelection": "Ejecutar selección",
+ "saveQuery": "Guardar consulta",
+ "downloadQuery": "Descargar consulta",
+ "cancelQuery": "Cancelar consulta",
+ "openSavedQueries": "Abrir consultas guardadas",
+ "vertical": "Vertical",
+ "horizontal": "Horizontal",
+ "view": "Vista",
+ "editingQuery": "Editar consulta"
+ },
+ "storedProcedure": {
+ "id": "Id. de procedimiento almacenado",
+ "idPlaceholder": "Escriba el nuevo identificador de procedimiento almacenado",
+ "idAriaLabel": "Id. de procedimiento almacenado",
+ "body": "Cuerpo del procedimiento almacenado",
+ "bodyAriaLabel": "Cuerpo del procedimiento almacenado",
+ "successfulExecution": "Ejecución correcta del procedimiento almacenado",
+ "resultAriaLabel": "Ejecutar resultado de procedimiento almacenado",
+ "logsAriaLabel": "Ejecución de registros de procedimientos almacenados",
+ "errors": "Errores:",
+ "errorDetailsAriaLabel": "Vínculo de detalles del error",
+ "moreDetails": "Más detalles",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Id. de desencadenador",
+ "idPlaceholder": "Escriba el nuevo identificador del desencadenador",
+ "type": "Tipo de desencadenador",
+ "operation": "Operación del desencadenador",
+ "body": "Cuerpo del desencadenador",
+ "bodyAriaLabel": "Cuerpo del desencadenador",
+ "pre": "Previo",
+ "post": "Publicar",
+ "all": "Todo",
+ "operationCreate": "Crear",
+ "operationDelete": "Eliminar",
+ "operationReplace": "Reemplazar"
+ },
+ "udf": {
+ "id": "Id. de función definida por el usuario",
+ "idPlaceholder": "Escriba el nuevo identificador de función definido por el usuario",
+ "body": "Cuerpo de la función definida por el usuario",
+ "bodyAriaLabel": "Cuerpo de la función definida por el usuario"
+ },
+ "conflicts": {
+ "unsavedChanges": "Cambios sin guardar",
+ "changesWillBeLost": "Se perderán los cambios. ¿Quiere continuar?",
+ "resolveConflictFailed": "Error al resolver el conflicto",
+ "deleteConflictFailed": "Error al eliminar el conflicto",
+ "refreshGridFailed": "Error al actualizar la cuadrícula de documentos"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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.",
+ "feedbackReason": "¿Cuál es el motivo por el que está eliminando esto {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Eliminar {{collectionName}}",
+ "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.",
+ "feedbackReason": "¿Cuál es el motivo por el que está eliminando esto {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Base de datos {{suffix}}",
+ "databaseIdLabel": "Id. de base de datos",
+ "keyspaceIdLabel": "Id. de espacio de claves",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} id., ejemplo {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Elegir id. existente {{databaseName}} ",
+ "existingDatabasePlaceholder": "Elegir id. existente {{databaseName}} ",
+ "indexing": "Indexación",
+ "turnOnIndexing": "Activar la indexación",
+ "automatic": "Automático",
+ "turnOffIndexing": "Desactivar la indexación",
+ "off": "Desactivado",
+ "sharding": "Particionamiento",
+ "shardingTooltip": "Las colecciones particionadas dividen sus datos entre varios conjuntos de réplicas (shards) para lograr una escalabilidad ilimitada. Las colecciones particionadas requieren elegir una clave de partición (campo) para distribuir uniformemente los datos.",
+ "unsharded": "Sin cambios",
+ "unshardedLabel": "Sin cambios (límite de 20 GB)",
+ "sharded": "Particionado",
+ "addPartitionKey": "Agregar clave de partición jerárquica",
+ "hierarchicalPartitionKeyInfo": "Esta característica permite particionar los datos con hasta tres niveles de claves para una mejor distribución de los datos. Requiere .NET V3, el SDK de Java V4, o la versión preliminar del SDK de JavaScript V3.",
+ "provisionDedicatedThroughput": "Aprovisionar rendimiento dedicado para esto {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Opcionalmente, puede aprovisionar un rendimiento dedicado para una {{collectionName}} base de datos que tenga el rendimiento aprovisionado. Esta cantidad de rendimiento dedicado no se compartirá con otros {{collectionNamePlural}} usuarios de la base de datos y no se contabilizará para el rendimiento aprovisionado para la base de datos. Esta cantidad de rendimiento se facturará además de la cantidad de rendimiento que aprovisionó en el nivel de base de datos.",
+ "uniqueKeysPlaceholderMongo": "Rutas de acceso separadas por comas, por ejemplo, firstName, address.zipCode",
+ "uniqueKeysPlaceholderSql": "Rutas de acceso separadas por comas, por ejemplo, /firstName,/address/zipCode",
+ "addUniqueKey": "Agregar clave única",
+ "enableAnalyticalStore": "Habilitar almacén analítico",
+ "disableAnalyticalStore": "Deshabilitar almacén analítico",
+ "on": "Activado",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link es necesario para crear un almacén analítico {{collectionName}}. Habilite Azure Synapse Link para esta cuenta de Cosmos DB.",
+ "enable": "Habilitar",
+ "containerVectorPolicy": "Directiva de vector de contenedor",
+ "containerFullTextSearchPolicy": "Directiva de búsqueda de texto completo del contenedor",
+ "advanced": "Avanzado",
+ "mongoIndexingTooltip": "El campo _id está indexado de forma predeterminada. La creación de un índice de caracteres comodín para todos los campos optimizará las consultas y se recomienda para el desarrollo.",
+ "createWildcardIndex": "Crear un índice de caracteres comodín en todos los campos",
+ "legacySdkCheckbox": "Mi aplicación usa una versión anterior del SDK de .NET o Java de Cosmos (.NET V1 o Java V2)",
+ "legacySdkInfo": "Para garantizar la compatibilidad con los SDK anteriores, el contenedor creado usará un esquema de partición heredado que admite valores de clave de partición de hasta 101 bytes de tamaño. Si esta opción está habilitada, no podrá usar claves de partición jerárquicas.",
+ "indexingOnInfo": "Todas las propiedades de los documentos se indexarán de forma predeterminada para que las consultas sean flexibles y eficaces.",
+ "indexingOffInfo": "La indexación se desactivará. Se recomienda si no necesita ejecutar consultas o solo tiene operaciones de valor de clave.",
+ "indexingOffWarning": "Al crear este contenedor con la indexación desactivada, no podrá realizar ningún cambio en la directiva de indexación. Los cambios de indexación solo se permiten en un contenedor con una directiva de indexación.",
+ "acknowledgeSpendErrorMonthly": "Confirme el gasto mensual estimado.",
+ "acknowledgeSpendErrorDaily": "Confirme el gasto diario estimado.",
+ "unshardedMaxRuError": "Las colecciones sin cambios admiten hasta 10 000 RU",
+ "acknowledgeShareThroughputError": "Confirme el coste estimado de este rendimiento dedicado.",
+ "vectorPolicyError": "Corrija los errores en la directiva de vector de contenedor",
+ "fullTextSearchPolicyError": "Corrija los errores en la directiva de búsqueda de texto completo del contenedor",
+ "addingSampleDataSet": "Adición de un conjunto de datos de ejemplo",
+ "databaseFieldLabelName": "Nombre de la base de datos",
+ "databaseFieldLabelId": "Id. de base de datos",
+ "newDatabaseIdPlaceholder": "Escriba un nuevo identificador de base de datos",
+ "newDatabaseIdAriaLabel": "Nuevo identificador de base de datos, escriba un nuevo identificador de base de datos",
+ "createNewDatabaseAriaLabel": "Crear nueva base de datos",
+ "useExistingDatabaseAriaLabel": "Usar base de datos existente",
+ "chooseExistingDatabase": "Elegir una base de datos existente",
+ "teachingBubble": {
+ "step1Headline": "Crear base de datos de ejemplo",
+ "step1Body": "La base de datos es el elemento primario de un contenedor. Puede crear una nueva base de datos o usar una existente. En este tutorial vamos a crear una nueva base de datos denominada SampleDB.",
+ "step1LearnMore": "Obtenga más información sobre los recursos.",
+ "step2Headline": "Estableciendo el rendimiento",
+ "step2Body": "Cosmos DB recomienda compartir el rendimiento entre bases de datos. La escalabilidad automática le proporcionará una cantidad flexible de rendimiento en función del número máximo de RU/s establecido (unidades de solicitud).",
+ "step2LearnMore": "Más información sobre RU/s.",
+ "step3Headline": "Contenedor de nomenclatura",
+ "step3Body": "Asigne un nombre al contenedor",
+ "step4Headline": "Estableciendo clave de partición",
+ "step4Body": "Último paso: tendrá que definir una clave de partición para la colección. Se eligió /address para este ejemplo concreto. Una buena clave de partición debe tener una amplia gama de valores posibles",
+ "step4CreateContainer": "Crear contenedor",
+ "step5Headline": "Creando contenedor de ejemplo",
+ "step5Body": "Ahora se está creando un contenedor de ejemplo y estamos agregando datos de ejemplo. Debería tardar aproximadamente 1 minuto.",
+ "step5BodyFollowUp": "Una vez creado el contenedor de ejemplo, revise el conjunto de datos de ejemplo y siga los pasos siguientes",
+ "stepOfTotal": "Paso {{current}} de {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "La clave de partición (campo) se usa para dividir los datos entre muchos conjuntos de réplicas (particiones) para lograr una escalabilidad ilimitada. Es fundamental elegir un campo que distribuya uniformemente los datos.",
+ "partitionKeyTooltip": "El {{partitionKeyName}} se usa para distribuir datos automáticamente entre particiones con fines de escalabilidad. Elija una propiedad en el documento JSON que tenga una amplia gama de valores y distribuya uniformemente el volumen de solicitudes.",
+ "partitionKeyTooltipSqlSuffix": " En el caso de las cargas de trabajo de lectura intensiva o de escritura intensiva de cualquier tamaño, el identificador suele ser una buena opción.",
+ "shardKeyLabel": "Clave de partición",
+ "partitionKeyLabel": "Clave de partición",
+ "shardKeyPlaceholder": "por ejemplo, categoryId",
+ "partitionKeyPlaceholderDefault": "por ejemplo, /address",
+ "partitionKeyPlaceholderFirst": "Requerido: primera clave de partición, por ejemplo, /TenantId",
+ "partitionKeyPlaceholderSecond": "segunda clave de partición, p. ej., /UserId",
+ "partitionKeyPlaceholderThird": "tercera clave de partición, por ejemplo, /SessionId",
+ "partitionKeyPlaceholderGraph": "por ejemplo, /address/zipCode",
+ "uniqueKeysTooltip": "Las claves únicas proporcionan a los desarrolladores la capacidad de agregar una capa de integridad de datos a su base de datos. Al crear una directiva de clave única cuando se crea un contenedor, se garantiza la unicidad de uno o varios valores por clave de partición.",
+ "uniqueKeysLabel": "Claves únicas",
+ "analyticalStoreLabel": "Almacén analítico",
+ "analyticalStoreTooltip": "Habilite la funcionalidad de almacén analítico para realizar análisis casi en tiempo real de los datos operativos, sin afectar al rendimiento de las cargas de trabajo transaccionales.",
+ "analyticalStoreDescription": "Habilite la funcionalidad de almacén analítico para realizar análisis casi en tiempo real de los datos operativos, sin afectar al rendimiento de las cargas de trabajo transaccionales.",
+ "vectorPolicyTooltip": "Describir las propiedades de los datos que contienen vectores, de modo que se puedan poner a disposición de las consultas de similitud."
+ },
+ "settings": {
+ "pageOptions": "Opciones de página",
+ "pageOptionsDescription": "Elija Personalizar para especificar una cantidad fija de resultados de consulta para mostrar o elija Ilimitado para mostrar tantos resultados de consulta por página.",
+ "queryResultsPerPage": "Resultados de la consulta por página",
+ "queryResultsPerPageTooltip": "Escriba el número de resultados de la consulta que se deben mostrar por página.",
+ "customQueryItemsPerPage": "Elementos de consulta personalizados por página",
+ "custom": "Personalizado",
+ "unlimited": "Sin límites",
+ "entraIdRbac": "Habilitar RBAC de Entra ID",
+ "entraIdRbacDescription": "Elija Automático para habilitar RBAC de Entra ID automáticamente. True/False para forzar la activación o desactivación de RBAC de Entra ID.",
+ "true": "Verdadero",
+ "false": "Falso",
+ "regionSelection": "Selección de región",
+ "regionSelectionDescription": "Cambia la región que usa el cliente de Cosmos para acceder a la cuenta.",
+ "selectRegion": "Seleccionar región",
+ "selectRegionTooltip": "Cambia el punto de conexión de cuenta usado para realizar operaciones de cliente.",
+ "globalDefault": "Global (predeterminado)",
+ "readWrite": "(Lectura y escritura)",
+ "read": "(Lectura)",
+ "queryTimeout": "Tiempo de espera de consulta",
+ "queryTimeoutDescription": "Cuando una consulta alcanza un límite de tiempo especificado, se mostrará un elemento emergente con una opción para cancelar la consulta, a menos que se haya habilitado la cancelación automática.",
+ "enableQueryTimeout": "Habilitar tiempo de espera de consulta",
+ "queryTimeoutMs": "Tiempo de espera de consulta (ms)",
+ "automaticallyCancelQuery": "Cancelar automáticamente la consulta después del tiempo de espera",
+ "ruLimit": "Límite de RU",
+ "ruLimitDescription": "Si una consulta supera un límite de RU configurado, se anulará la consulta.",
+ "enableRuLimit": "Habilitar límite de RU",
+ "ruLimitLabel": "Límite de RU (RU)",
+ "defaultQueryResults": "Vista de resultados de consulta predeterminada",
+ "defaultQueryResultsDescription": "Seleccione la vista predeterminada que se va a usar al mostrar los resultados de la consulta.",
+ "retrySettings": "Configuración de reintentos",
+ "retrySettingsDescription": "Directiva de reintentos asociada a solicitudes limitadas durante las consultas de CosmosDB.",
+ "maxRetryAttempts": "Número máximo de reintentos",
+ "maxRetryAttemptsTooltip": "Número máximo de reintentos que se van a realizar para una solicitud. Valor predeterminado 9.",
+ "fixedRetryInterval": "Intervalo de reintento fijo (ms)",
+ "fixedRetryIntervalTooltip": "Se ha corregido el intervalo de reintentos en milisegundos para esperar entre cada reintento omitiendo el retryAfter devuelto como parte de la respuesta. El valor predeterminado es 0 milisegundos.",
+ "maxWaitTime": "Tiempo de espera máximo (s)",
+ "maxWaitTimeTooltip": "Tiempo de espera máximo en segundos para esperar una solicitud mientras se producen los reintentos. Valor predeterminado de 30 segundos.",
+ "enableContainerPagination": "Habilitar paginación de contenedor",
+ "enableContainerPaginationDescription": "Cargue 50 contenedores a la vez. Actualmente, los contenedores no se extraen en orden alfanumérico.",
+ "enableCrossPartitionQuery": "Habilitar consulta entre particiones",
+ "enableCrossPartitionQueryDescription": "Enviar más de una solicitud mientras se ejecuta una consulta. Se necesita más de una solicitud si la consulta no tiene como ámbito un valor de clave de partición única.",
+ "maxDegreeOfParallelism": "Grado máximo de paralelismo",
+ "maxDegreeOfParallelismDescription": "Obtiene o establece el número de operaciones simultáneas que se ejecutan en el lado cliente durante la ejecución de consultas en paralelo. Un valor de propiedad positivo limita el número de operaciones simultáneas al valor establecido. Si se establece en menos de 0, el sistema decide automáticamente el número de operaciones simultáneas que se van a ejecutar.",
+ "maxDegreeOfParallelismQuery": "Consultar hasta el grado máximo de paralelismo.",
+ "priorityLevel": "Nivel de prioridad",
+ "priorityLevelDescription": "Establece el nivel de prioridad para las solicitudes de plano de Data Explorer al usar la ejecución basada en prioridad. Si se selecciona \"Ninguno\", Data Explorer no especificará nivel de prioridad y se usará el nivel predeterminado del servidor.",
+ "displayGremlinQueryResults": "Mostrar los resultados de la consulta de Gremlin como:",
+ "displayGremlinQueryResultsDescription": "Seleccione Graph para visualizar automáticamente los resultados de la consulta como un gráfico o JSON para mostrar los resultados como JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualización automática de Graph",
+ "enableSampleDatabase": "Habilitar base de datos de ejemplo",
+ "enableSampleDatabaseDescription": "Se trata de una base de datos de ejemplo y una colección con datos de productos sintéticos que puede usar para explorar mediante consultas NoSQL. Aparecerá como otra base de datos en la interfaz de Data Explorer y es creada y mantenida por Microsoft sin coste para usted.",
+ "enableSampleDbAriaLabel": "Habilitación de la base de datos de ejemplo para la exploración de consultas",
+ "guidRepresentation": "Representación de GUID",
+ "guidRepresentationDescription": "GuidRepresentation en MongoDB hace referencia a cómo se serializan y deserializan los identificadores únicos globales (GUID) cuando se almacenan en documentos BSON. Esto se aplicará a todas las operaciones de documento.",
+ "advancedSettings": "Configuración avanzada",
+ "ignorePartitionKey": "Omitir clave de partición en la actualización del documento",
+ "ignorePartitionKeyTooltip": "Si se activa, el valor de clave de partición no se usará para buscar el documento durante las operaciones de actualización. Use esta opción solo si se producen errores en las actualizaciones del documento debido a una clave de partición anómala.",
+ "clearHistory": "Borrar historial",
+ "clearHistoryConfirm": "¿Seguro que quiere continuar?",
+ "clearHistoryDescription": "Esta acción borrará todas las personalizaciones de esta cuenta en este explorador, incluidas:",
+ "clearHistoryTabLayout": "Restablecer el diseño de pestaña personalizado, incluidas las posiciones divisora",
+ "clearHistoryTableColumns": "Borrar las preferencias de columna de la tabla, incluidas las columnas personalizadas",
+ "clearHistoryFilters": "Borrar el historial de filtros",
+ "clearHistoryRegion": "Restablecer selección de región a global",
+ "increaseValueBy1000": "Aumentar valor en 1 000",
+ "decreaseValueBy1000": "Disminuir valor en 1 000",
+ "none": "Ninguno",
+ "low": "Bajo",
+ "high": "Alto",
+ "automatic": "Automático",
+ "enhancedQueryControl": "Control de consulta mejorado",
+ "enableQueryControl": "Habilitar control de consulta",
+ "explorerVersion": "Versión del explorador",
+ "accountId": "Id. de cuenta",
+ "sessionId": "Id. de sesión",
+ "popupsDisabledError": "No se pudo establecer la autorización para esta cuenta debido a que los elementos emergentes se deshabilitaron en el explorador.\nHabilite los elementos emergentes para este sitio y haga clic en el botón \"Iniciar sesión para Entra ID\"",
+ "failedToAcquireTokenError": "No se pudo adquirir automáticamente el token de autorización. Haga clic en el botón \"Iniciar sesión para Entra ID\" para habilitar las operaciones RBAC de Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Guardar consulta",
+ "setupCostMessage": "Por motivos de cumplimiento, guardamos las consultas en un contenedor de la cuenta de Azure Cosmos, en una base de datos independiente denominada \"{{databaseName}}\". Para continuar, necesitamos crear un contenedor en su cuenta, el coste adicional estimado es de 0,77 USD al día.",
+ "completeSetup": "Completar instalación",
+ "noQueryNameError": "No se especificó ningún nombre de consulta",
+ "invalidQueryContentError": "Contenido de consulta especificado no válido",
+ "failedToSaveQueryError": "No se pudo guardar la consulta {{queryName}}",
+ "failedToSetupContainerError": "No se pudo configurar un contenedor para las consultas guardadas",
+ "accountNotSetupError": "No se pudo guardar la consulta: la cuenta no está configurada para guardar consultas",
+ "name": "Nombre"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "No se especificó ningún archivo",
+ "failedToLoadQueryError": "No se pudo cargar la consulta.",
+ "failedToLoadQueryFromFileError": "No se pudo cargar la consulta desde el archivo {{fileName}}",
+ "selectFilesToOpen": "Seleccionar un documento de consulta",
+ "browseFiles": "Examinar"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Escriba los parámetros de entrada (si los hay)",
+ "key": "Clave",
+ "param": "Param",
+ "partitionKeyValue": "Valor de la clave de partición",
+ "value": "Valor",
+ "addNewParam": "Agregar nuevo parámetro",
+ "addParam": "Agregar parámetro",
+ "deleteParam": "Eliminar parámetro",
+ "invalidParamError": "Parámetro especificado no válido: {{invalidParam}}",
+ "invalidParamConsoleError": "Parámetro especificado no válido: {{invalidParam}} no es un valor literal válido",
+ "stringType": "Cadena",
+ "customType": "Personalizado"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "No se especificó ningún archivo. Escriba al menos un archivo.",
+ "selectJsonFiles": "Seleccionar archivos JSON",
+ "selectJsonFilesTooltip": "Seleccione uno o varios archivos JSON para cargar. Cada archivo puede contener un único documento JSON o una matriz de documentos JSON. El tamaño combinado de todos los archivos de una operación de carga individual debe ser inferior a 2 MB. Puede realizar varias operaciones de carga para conjuntos de datos más grandes.",
+ "fileNameColumn": "NOMBRE DE ARCHIVO",
+ "statusColumn": "ESTADO",
+ "uploadStatus": "{{numSucceeded}} creado, {{numThrottled}} limitado, {{numFailed}} errores",
+ "uploadedFiles": "Archivos cargados"
+ },
+ "copyNotebook": {
+ "copyFailedError": "No se pudo copiar {{name}} en {{destination}}",
+ "uploadFailedError": "Error al cargar {{name}}.",
+ "location": "Ubicación",
+ "locationAriaLabel": "Ubicación",
+ "selectLocation": "Seleccionar una ubicación de bloc de notas para copiar",
+ "name": "Nombre"
+ },
+ "publishNotebook": {
+ "publishFailedError": "No se pudo publicar {{notebookName}} en la galería",
+ "publishDescription": "Cuando se publique, este bloc de notas aparecerá en la galería pública de blocs de notas de Azure Cosmos DB. Asegúrese de que ha quitado los datos confidenciales o la salida antes de la publicación.",
+ "publishPrompt": "¿Desea publicar y compartir \"{{name}}\" en la galería?",
+ "coverImage": "Imagen de portada",
+ "coverImageUrl": "Dirección URL de la imagen de portada",
+ "name": "Nombre",
+ "description": "Descripción",
+ "tags": "Etiquetas",
+ "tagsPlaceholder": "Etiqueta opcional 1, etiqueta opcional 2",
+ "preview": "Versión preliminar",
+ "urlType": "URL",
+ "customImage": "Imagen personalizada",
+ "takeScreenshot": "Obtener recorte de pantalla",
+ "useFirstDisplayOutput": "Usar la primera salida de pantalla",
+ "failedToCaptureOutput": "No se pudo capturar la primera salida",
+ "outputDoesNotExist": "La salida no existe para ninguna de las celdas.",
+ "failedToConvertError": "No se pudo convertir {{fileName}} al formato base64",
+ "failedToUploadError": "No se pudo cargar {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "No se pudo iniciar el trabajo de transferencia de datos",
+ "suboptimalPartitionKeyError": "Advertencia: el sistema ha detectado que la colección puede estar usando una clave de partición poco óptima",
+ "description": "Al cambiar la clave de partición de un contenedor, deberá crear un contenedor de destino con la clave de partición correcta. También puede seleccionar un contenedor de destino existente.",
+ "sourceContainerId": "Id. de origen {{collectionName}} ",
+ "destinationContainerId": "Id. de destino {{collectionName}}",
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} id., ejemplo {{collectionName}}1",
+ "existingContainers": "Contenedores existentes",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Agregar propiedad",
+ "addRow": "Agregar fila",
+ "addEntity": "Agregar entidad",
+ "back": "atrás",
+ "nullFieldsWarning": "Advertencia: los campos nulos no se mostrarán para su edición.",
+ "propertyEmptyError": "{{property}} no puede estar vacío. Escriba un valor para {{property}}",
+ "whitespaceError": "{{property}} no puede tener espacios en blanco. Escriba un valor para {{property}} sin espacios en blanco",
+ "propertyTypeEmptyError": "El tipo de propiedad no puede estar vacío. Seleccione un tipo en la lista desplegable para la propiedad {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Seleccione las columnas que quiere consultar.",
+ "availableColumns": "Columnas disponibles"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Seleccione las columnas que se mostrarán en la vista de elementos del contenedor.",
+ "searchFields": "Buscar campos",
+ "reset": "Restablecer",
+ "partitionKeySuffix": " (clave de partición)"
+ },
+ "newVertex": {
+ "addProperty": "Agregar propiedad"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Id. de contenedor de índice secundario global",
+ "globalSecondaryIndexIdPlaceholder": "por ejemplo, indexbyEmailId",
+ "projectionQuery": "Consulta de proyección",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Obtenga más información sobre cómo definir índices secundarios globales.",
+ "disabledTitle": "Ya se está creando un índice secundario global. Espere a que se complete antes de crear otra."
+ },
+ "stringInput": {
+ "inputMismatchError": "La entrada {{input}} no coincide con la seleccionada {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Información",
+ "moreDetails": "Más detalles"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Escalar",
+ "conflictResolution": "Resolución de conflictos",
+ "settings": "Configuración",
+ "indexingPolicy": "Directiva de indexación",
+ "partitionKeys": "Claves de partición",
+ "partitionKeysPreview": "Claves de partición (versión preliminar)",
+ "computedProperties": "Propiedades calculadas",
+ "containerPolicies": "Directivas de contenedor",
+ "throughputBuckets": "Depósitos de rendimiento",
+ "globalSecondaryIndexPreview": "Índice secundario global (versión preliminar)",
+ "maskingPolicyPreview": "Directiva de enmascaramiento (versión preliminar)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Seleccione un tipo para cada índice.",
+ "enterFieldNameError": "Introduzca un nombre de campo.",
+ "wildcardPathError": "La ruta de acceso con caracteres comodín no está presente en el nombre del campo. Usar un patrón como "
+ },
+ "partitionKey": {
+ "shardKey": "Clave de partición",
+ "partitionKey": "Clave de partición",
+ "shardKeyTooltip": "La clave de partición (campo) se usa para dividir los datos entre muchos conjuntos de réplicas (particiones) para lograr una escalabilidad ilimitada. Es fundamental elegir un campo que distribuya uniformemente los datos.",
+ "partitionKeyTooltip": "se usa para distribuir automáticamente los datos entre las particiones con fines de escalabilidad. Elija una propiedad en el documento JSON que tenga una amplia gama de valores y distribuya uniformemente el volumen de solicitudes.",
+ "sqlPartitionKeyTooltipSuffix": " En el caso de las cargas de trabajo de lectura intensiva o de escritura intensiva de cualquier tamaño, el identificador suele ser una buena opción.",
+ "partitionKeySubtext": "Para cargas de trabajo pequeñas, el identificador de elemento es una opción adecuada para la clave de partición.",
+ "mongoPlaceholder": "por ejemplo, categoryId",
+ "gremlinPlaceholder": "por ejemplo, /address",
+ "sqlFirstPartitionKey": "Requerido: primera clave de partición, por ejemplo, /TenantId",
+ "sqlSecondPartitionKey": "segunda clave de partición, p. ej., /UserId",
+ "sqlThirdPartitionKey": "tercera clave de partición, por ejemplo, /SessionId",
+ "defaultPlaceholder": "por ejemplo, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Estimación de costes*",
+ "howWeCalculate": "Cómo calculamos esto",
+ "updatedCostPerMonth": "Coste actualizado al mes",
+ "currentCostPerMonth": "Coste actual al mes",
+ "perRu": "/RU",
+ "perHour": "/hr",
+ "perDay": "/día",
+ "perMonth": "/mo"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "El sistema determinará el número máximo de RU/s de escalabilidad automática inicial, en función de la configuración de rendimiento manual actual y del almacenamiento del recurso. Una vez habilitada la escalabilidad automática, puede cambiar el número máximo de RU/s.",
+ "ttlWarningText": "El sistema eliminará automáticamente los elementos en función del valor de TTL (en segundos) que proporcione, sin necesidad de una operación de eliminación emitida explícitamente por una aplicación cliente. Para obtener más información, consulte",
+ "ttlWarningLinkText": "Período de vida (TTL) en Azure Cosmos DB",
+ "unsavedIndexingPolicy": "directiva de indexación",
+ "unsavedDataMaskingPolicy": "directiva de enmascaramiento de datos",
+ "unsavedComputedProperties": "propiedades calculadas",
+ "unsavedEditorWarningPrefix": "No ha guardado los últimos cambios realizados en su",
+ "unsavedEditorWarningSuffix": ". Haga clic en Guardar para confirmar los cambios.",
+ "updateDelayedApplyWarning": "Va a solicitar un aumento del rendimiento más allá de la capacidad preasignada. Esta operación tardará algún tiempo en completarse.",
+ "scalingUpDelayMessage": "El escalado vertical tardará entre 4 y 6 horas, ya que supera lo que Azure Cosmos DB puede admitir al instante en función del número de particiones físicas. Puede aumentar el rendimiento al {{instantMaximumThroughput}} instante o continuar con este valor y esperar hasta que se complete el escalado vertical.",
+ "exceedPreAllocatedMessage": "La solicitud para aumentar el rendimiento supera la capacidad preasignada, que puede tardar más de lo esperado. Hay tres opciones entre las que puede elegir para continuar:",
+ "instantScaleOption": "Puede escalar verticalmente al instante hasta {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Puede escalar verticalmente de forma asincrónica hasta cualquier valor en {{maximumThroughput}} RU/s en 4-6 horas.",
+ "quotaMaxOption": "El máximo de cuota actual es {{maximumThroughput}} de RU/s. Para superar este límite, debe solicitar un aumento de cuota y el equipo de Azure Cosmos DB lo revisará.",
+ "belowMinimumMessage": "No puede reducir el rendimiento por debajo del mínimo actual de {{minimum}} RU/s. Para obtener más información sobre este límite, consulte la documentación de nuestra oferta de servicio.",
+ "saveThroughputWarning": "La factura se verá afectada a medida que actualice la configuración de rendimiento. Revise la estimación de costes actualizada a continuación antes de guardar los cambios",
+ "currentAutoscaleThroughput": "Rendimiento de escalabilidad automática actual:",
+ "targetAutoscaleThroughput": "Rendimiento de escalabilidad automática de destino:",
+ "currentManualThroughput": "Rendimiento manual actual:",
+ "targetManualThroughput": "Rendimiento manual de destino:",
+ "applyDelayedMessage": "La solicitud para aumentar el rendimiento se ha enviado correctamente. Esta operación tardará entre 1 y 3 días laborables en completarse. Vea el estado más reciente en Notificaciones.",
+ "databaseLabel": "Base de datos:",
+ "containerLabel": "Contenedor:",
+ "applyShortDelayMessage": "Actualmente hay una solicitud para aumentar el rendimiento. Esta operación tardará algún tiempo en completarse.",
+ "applyLongDelayMessage": "Actualmente hay una solicitud para aumentar el rendimiento. Esta operación tardará entre 1 y 3 días laborables en completarse. Vea el estado más reciente en Notificaciones.",
+ "throughputCapError": "Su cuenta está configurada actualmente con un límite de rendimiento total de {{throughputCap}} RU/s. Esta actualización no es posible porque aumentaría el rendimiento total para {{newTotalThroughput}} RU/s. Cambiar el límite de rendimiento total en la administración de costes.",
+ "throughputIncrementError": "El valor de rendimiento debe estar en incrementos de 1 000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Wins de última escritura (valor predeterminado)",
+ "customMergeProcedure": "Procedimiento de combinación (personalizado)",
+ "mode": "Modo",
+ "conflictResolverProperty": "Propiedad Solucionador de conflictos",
+ "storedProcedure": "Procedimiento almacenado",
+ "lwwTooltip": "Obtiene o establece el nombre de una propiedad de entero en los documentos que se usa para el esquema de resolución de conflictos basado en Last Write Wins (LWW). De forma predeterminada, el sistema usa la propiedad de marca de tiempo definida por el sistema, _ts para decidir el ganador de las versiones en conflicto del documento. Especifique su propia propiedad de entero si desea invalidar la resolución de conflictos basada en marca de tiempo predeterminada.",
+ "customTooltip": "Obtiene o establece el nombre de un procedimiento almacenado (también conocido como procedimiento de combinación) para resolver los conflictos. Puede escribir lógica definida por la aplicación para determinar el ganador de las versiones en conflicto de un documento. El procedimiento almacenado se ejecutará transaccionalmente, exactamente una vez, en el lado servidor. Si no proporciona un procedimiento almacenado, los conflictos se rellenarán en el",
+ "customTooltipConflictsFeed": " fuente de conflictos",
+ "customTooltipSuffix": ". Puede actualizar o volver a registrar el procedimiento almacenado en cualquier momento."
+ },
+ "changeFeed": {
+ "label": "Directiva de retención de registros de fuente de cambios",
+ "tooltip": "Habilite la directiva de retención de registros de fuente de cambios para conservar los últimos 10 minutos del historial de los elementos del contenedor de forma predeterminada. Para admitir esto, el cargo de unidad de solicitud (RU) para este contenedor se multiplicará por un factor de dos para las escrituras. Las lecturas no se ven afectadas."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Para las consultas que filtran por varias propiedades, cree varios índices de campo único en lugar de un índice compuesto.",
+ "disclaimerCompoundIndexesLink": " Índices compuestos ",
+ "disclaimerSuffix": "solo se usan para ordenar los resultados de la consulta. Si necesita agregar un índice compuesto, puede crear uno mediante el shell de Mongo.",
+ "compoundNotSupported": "Las colecciones con índices compuestos aún no se admiten en el editor de indexación. Para modificar la directiva de indexación de esta colección, use el shell de Mongo.",
+ "aadError": "Para usar el editor de directivas de indexación, inicie sesión en el",
+ "aadErrorLink": "Azure Portal.",
+ "refreshingProgress": "Actualizando el progreso de transformación del índice",
+ "canMakeMoreChangesZero": "Puede realizar más cambios de indexación una vez completada la transformación del índice actual. ",
+ "refreshToCheck": "Actualice para comprobar si se ha completado.",
+ "canMakeMoreChangesProgress": "Puede realizar más cambios de indexación una vez completada la transformación del índice actual. Está completado al {{progress}}%. ",
+ "refreshToCheckProgress": "Actualice para comprobar el progreso.",
+ "definitionColumn": "Definición",
+ "typeColumn": "Tipo",
+ "dropIndexColumn": "Quitar índice",
+ "addIndexBackColumn": "Volver a agregar índice",
+ "deleteIndexButton": "Botón Eliminar índice",
+ "addBackIndexButton": "Botón Agregar nuevo índice",
+ "currentIndexes": "Índices actuales",
+ "indexesToBeDropped": "Índices que se van a quitar",
+ "indexFieldName": "Nombre del campo de índice",
+ "indexType": "Tipo de índice",
+ "selectIndexType": "Seleccionar un tipo de índice",
+ "undoButton": "Botón Deshacer"
+ },
+ "subSettings": {
+ "timeToLive": "Período de vida",
+ "ttlOff": "Desactivado",
+ "ttlOnNoDefault": "Activado (valor no predeterminado)",
+ "ttlOn": "Activado",
+ "seconds": "segundo(s)",
+ "timeToLiveInSeconds": "Período de vida en segundos",
+ "analyticalStorageTtl": "Período de vida del almacenamiento analítico",
+ "geospatialConfiguration": "Configuración geoespacial",
+ "geography": "Geografía",
+ "geometry": "Geometría",
+ "uniqueKeys": "Claves únicas",
+ "mongoTtlMessage": "Para habilitar el período de vida (TTL) para la colección o los documentos,",
+ "mongoTtlLinkText": "crear un índice TTL",
+ "partitionKeyTooltipTemplate": "Se {{partitionKeyName}} usa para distribuir datos entre varias particiones con fines de escalabilidad. El valor \"{{partitionKeyValue}}\" determina cómo se particionan los documentos.",
+ "largePartitionKeyEnabled": "Se ha habilitado el tamaño grande {{partitionKeyName}}.",
+ "hierarchicalPartitioned": "Contenedor con particiones jerárquicas.",
+ "nonHierarchicalPartitioned": "Contenedor con particiones no jerárquicas."
+ },
+ "scale": {
+ "freeTierInfo": "Con el nivel Gratis, obtendrá las primeras {{ru}} RU/s y {{storage}} GB de almacenamiento de esta cuenta de forma gratuita. Para mantener su cuenta libre, mantenga el total de RU/s en todos los recursos de la cuenta {{ru}} en RU/s.",
+ "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",
+ "throughputRangeLabel": "Rendimiento ({{min}} - {{max}} RU/s)",
+ "unlimited": "ilimitado"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Cambiar {{partitionKeyName}}",
+ "currentPartitionKey": "Actual {{partitionKeyName}}",
+ "partitioning": "Creación de particiones",
+ "hierarchical": "Jerárquico",
+ "nonHierarchical": "No jerárquico",
+ "safeguardWarning": "Para proteger la integridad de los datos que se copian en el nuevo contenedor, asegúrese de que no se realiza ninguna actualización en el contenedor de origen durante todo el proceso de cambio de clave de partición.",
+ "changeDescription": "Para cambiar la clave de partición, se debe crear un nuevo contenedor de destino o seleccionar un contenedor de destino existente. Después, los datos se copiarán en el contenedor de destino.",
+ "changeButton": "Cambiar",
+ "changeJob": "{{partitionKeyName}} trabajo de cambio",
+ "cancelButton": "Cancelar",
+ "documentsProcessed": "({{processedCount}} de {{totalCount}} documentos procesados)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Propiedades calculadas",
+ "learnMorePrefix": "sobre cómo definir propiedades calculadas y cómo usarlas."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Directiva de indexación"
+ },
+ "dataMasking": {
+ "ariaLabel": "Directiva de enmascaramiento de datos",
+ "validationFailed": "Error en la validación:",
+ "includedPathsRequired": "se requiere includedPaths",
+ "includedPathsMustBeArray": "includedPaths debe ser una matriz",
+ "excludedPathsMustBeArray": "excludedPaths debe ser una matriz si se proporciona"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Directiva de vectores",
+ "fullTextPolicy": "Directiva de texto completo",
+ "createFullTextPolicy": "Crear nueva directiva de búsqueda de texto completo"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Este contenedor tiene definidos los siguientes índices.",
+ "learnMoreSuffix": "sobre cómo definir índices secundarios globales y cómo usarlos.",
+ "jsonAriaLabel": "JSON de índice secundario global",
+ "addIndex": "Agregar índice",
+ "settingsTitle": "Configuración del índice secundario global",
+ "sourceContainer": "Contenedor de origen",
+ "indexDefinition": "Definición de índice secundario global"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Error al actualizar el progreso de transformación del índice"
+ },
+ "throughputInput": {
+ "autoscale": "Escalabilidad automática",
+ "manual": "Manual",
+ "minimumRuS": "Mínimo de RU/s",
+ "maximumRuS": "Máximo de RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Capacidad de almacenamiento",
+ "fixed": "Corregido",
+ "unlimited": "Sin límites",
+ "instant": "Instantánea",
+ "fourToSixHrs": "4-6 horas",
+ "autoscaleDescription": "En función del uso, el {{resourceType}} rendimiento se escalará desde",
+ "freeTierWarning": "La facturación se aplicará si aprovisiona más {{ru}} de RU/s de rendimiento manual o si el recurso se escala más allá {{ru}} de RU/s con escalabilidad automática.",
+ "capacityCalculator": "Calcule las RU/s necesarias con",
+ "capacityCalculatorLink": " calculadora de capacidad",
+ "fixedStorageNote": "Al usar una colección con capacidad de almacenamiento fija, puede configurar hasta 10 000 RU/s.",
+ "min": "min",
+ "max": "máx"
+ },
+ "throughputBuckets": {
+ "label": "Depósitos de rendimiento",
+ "bucketLabel": "Depósito {{id}}",
+ "dataExplorerQueryBucket": " (Depósito de consultas de Data Explorer)",
+ "active": "Activo",
+ "inactive": "Inactivo"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/fr/Resources.json b/src/Localization/fr/Resources.json
new file mode 100644
index 000000000..3a8f6a11f
--- /dev/null
+++ b/src/Localization/fr/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Annuler",
+ "close": "Fermer",
+ "save": "Enregistrer",
+ "delete": "Supprimer",
+ "update": "Mettre à jour",
+ "discard": "Abandonner",
+ "execute": "Exécuter",
+ "loading": "Chargement",
+ "loadingEllipsis": "Chargement en cours...",
+ "next": "Suivant",
+ "previous": "Précédent",
+ "yes": "Oui",
+ "no": "Non",
+ "result": "Résultat",
+ "learnMore": "En savoir plus",
+ "getStarted": "Démarrage",
+ "retry": "Réessayer",
+ "apply": "Appliquer",
+ "refresh": "Actualiser",
+ "copy": "Copier",
+ "create": "Créer",
+ "confirm": "Confirmer",
+ "open": "Ouvrir",
+ "rename": "Renommer",
+ "download": "Télécharger",
+ "upload": "Charger",
+ "connect": "Connexion",
+ "remove": "Supprimer",
+ "load": "Charger",
+ "publish": "Publier",
+ "browse": "Parcourir",
+ "increaseValueBy1": "Augmenter la valeur de 1",
+ "decreaseValueBy1": "Diminuer la valeur de 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Bienvenue dans Azure Cosmos DB",
+ "postgres": "Bienvenue à Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Bienvenue à Azure DocumentDB (avec compatibilité MongoDB)"
+ },
+ "subtitle": {
+ "default": "Service de base de données multimodèle, mondialement distribuée et disponible à toute échelle",
+ "getStarted": "Commencez avec nos jeux de données d’exemple, notre documentation et nos outils supplémentaires."
+ },
+ "quickStart": {
+ "title": "Lancer le démarrage rapide",
+ "description": "Lancer un didacticiel de démarrage rapide pour prendre en main les données d’exemple"
+ },
+ "newCollection": {
+ "title": "Nouvelle {{collectionName}}",
+ "description": "Créer un nouveau conteneur pour le stockage et le débit"
+ },
+ "samplesGallery": {
+ "title": "Galerie d’échantillons Azure Cosmos DB",
+ "description": "Découvrez des exemples qui présentent des modèles d’application évolutifs et intelligents. Essayez-en un tout de suite pour voir à quelle vitesse vous pouvez passer du concept au code grâce à Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Connecter",
+ "description": "Vous préférez utiliser vos propres outils ? Trouvez la chaîne de connexion dont vous avez besoin pour vous connecter",
+ "pgAdmin": {
+ "title": "Se connecter avec pgAdmin",
+ "description": "Préférez-vous pgAdmin ? Trouvez vos chaînes de connexion ici"
+ },
+ "vsCode": {
+ "title": "Connecter avec VS Code",
+ "description": "Interroger et gérer vos clusters MongoDB et DocumentDB dans Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Interpréteur de commandes PostgreSQL",
+ "description": "Créer un tableau et interagir avec les données à l’aide de l’interface d’interpréteur PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Interpréteur de commandes Mongo",
+ "description": "Créer une collection et interagir avec les données à l’aide de l’interface d’interpréteur MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Vous débutez avec Cosmos DB PGSQL ?",
+ "body": "Bienvenue ! Si vous débutez avec Cosmos DB PGSQL et avez besoin d’aide pour démarrer, voici où trouver des échantillons de données et des requêtes."
+ },
+ "resetPassword": {
+ "headline": "Créer votre mot de passe",
+ "body": "Si vous n’avez pas encore modifié votre mot de passe, faites-le maintenant."
+ },
+ "coachMark": {
+ "headline": "Commencer par l’exemple {{collectionName}}",
+ "body": "Nous vous guiderons dans la création d’un conteneur d’exemple avec des échantillons de données, puis nous vous ferons visiter l’explorateur de données. Vous pouvez également annuler cette visite et explorer par vous-même"
+ }
+ },
+ "sections": {
+ "recents": "Récents",
+ "clearRecents": "Effacer les éléments récents",
+ "top3": "Les 3 principales choses à savoir",
+ "learningResources": "Ressources pédagogiques",
+ "nextSteps": "Étapes suivantes",
+ "tipsAndLearnMore": "Conseils et plus d’informations",
+ "notebook": "Bloc-notes",
+ "needHelp": "Avez-vous besoin d’aide ?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Motifs de modélisation avancés",
+ "description": "Découvrez des stratégies avancées pour optimiser votre base de données."
+ },
+ "partitioning": {
+ "title": "Les meilleures pratiques de partitionnement",
+ "description": "Apprenez à appliquer des stratégies de modélisation des données et de partitionnement."
+ },
+ "resourcePlanning": {
+ "title": "Planifier vos besoins en ressources",
+ "description": "Découvrez les différentes options de configuration."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Qu’est-ce que l’API MongoDB ?",
+ "description": "Comprenez Azure Cosmos DB for MongoDB et ses fonctionnalités."
+ },
+ "features": {
+ "title": "Fonctionnalités et syntaxe",
+ "description": "Découvrir les avantages et les fonctionnalités"
+ },
+ "migrate": {
+ "title": "Migrer vos données",
+ "description": "Étapes pré-migration pour le déplacement des données"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Créer une application Java",
+ "description": "Créez une application Java avec un SDK."
+ },
+ "partitioning": {
+ "title": "Les meilleures pratiques de partitionnement",
+ "description": "Découvrez comment fonctionne le partitionnement."
+ },
+ "requestUnits": {
+ "title": "Unités de requêtes (RU)",
+ "description": "Comprendre les frais de RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modélisation des données",
+ "description": "Recommandations pour la modélisation des données de Graph"
+ },
+ "partitioning": {
+ "title": "Les meilleures pratiques de partitionnement",
+ "description": "Découvrir comment fonctionne le partitionnement"
+ },
+ "queryData": {
+ "title": "Données de requête",
+ "description": "Interroger des données avec Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Qu’est-ce que l’API Table ?",
+ "description": "Comprendre Azure Cosmos DB for Table et ses fonctionnalités"
+ },
+ "migrate": {
+ "title": "Migrer vos données",
+ "description": "Découvrir comment migrer vos données"
+ },
+ "faq": {
+ "title": "FAQ Azure Cosmos DB for Table",
+ "description": "Questions courantes sur Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Raccourcis clavier pour Data Explorer",
+ "description": "Découvrez les raccourcis clavier pour naviguer dans Data Explorer."
+ },
+ "liveTv": {
+ "title": "Découvrir les principes de base",
+ "description": "Regardez l’émission de télé en direct Azure Cosmos DB pour découvrir des vidéos d’introduction et des tutos."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Prise en main d’un SDK",
+ "description": "En savoir plus sur le SDK Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Migrer vos données",
+ "description": "Migrez des données avec les services Azure et des solutions open source."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Générer une application avec Node.js",
+ "description": "Créez une application Node.js."
+ },
+ "gettingStarted": {
+ "title": "Guide de prise en main",
+ "description": "Apprenez les notions de base pour démarrer."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Créer un conteneur",
+ "description": "Découvrez les options de création de conteneurs."
+ },
+ "throughput": {
+ "title": "Débit d’approvisionnement",
+ "description": "Découvrir comment configurer le débit."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Prise en main ",
+ "description": "Créer, interroger et parcourir avec la console Gremlin"
+ },
+ "importData": {
+ "title": "Importer les données de Graph",
+ "description": "Apprendre l’ingestion de données en bloc avec BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Créer une application .NET",
+ "description": "Comment accéder à Azure Cosmos DB for Table depuis une application .NET."
+ },
+ "java": {
+ "title": "Créer une application Java",
+ "description": "Créez une application Azure Cosmos DB for Table avec le SDK Java "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modélisation des données",
+ "distributionColumn": "Comment choisir une colonne de distribution",
+ "buildApps": "Créer des applications avec Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrer des données",
+ "vectorSearch": "Créer des applications d’IA avec la recherche vectorielle",
+ "buildApps": "Générer des applications avec Node.js"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Optimisation des performances",
+ "diagnosticQueries": "Requêtes de diagnostic utiles",
+ "sqlReference": "Référence SQL distribuée"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Recherche vectorielle",
+ "textIndexing": "Indexation de texte",
+ "troubleshoot": "Résoudre des problèmes courants"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Générer votre base de données",
+ "useTitle": "Utiliser votre base de données",
+ "newContainer": {
+ "title": "Nouveau conteneur",
+ "description": "Créer un conteneur de destination pour stocker vos données"
+ },
+ "sampleData": {
+ "title": "Échantillons de données",
+ "description": "Charger des échantillons de données dans votre base de données"
+ },
+ "sampleVectorData": {
+ "title": "Échantillons de données vectorielles",
+ "description": "Charger des exemples de données vectorielles avec text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Développer des applications",
+ "description": "Commencer ici pour utiliser un SDK afin de créer vos applications"
+ },
+ "sampleGallery": {
+ "title": "Galerie d’échantillons",
+ "description": "Obtenez des échantillons réels de bout en bout"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Échantillons de données",
+ "startButton": "Commencer",
+ "createPrompt": "Créez un conteneur « {{containerName}} » et importez-y des échantillons de données. Cela peut prendre quelques minutes.",
+ "creatingContainer": "Création en cours du conteneur « {{containerName}} »...",
+ "importingData": "Importation en cours de données dans « {{containerName}} »...",
+ "success": "Vous avez bien créé « {{containerName}} » avec des échantillons de données.",
+ "errorContainerExists": "Le conteneur « {{containerName}} » dans la base de données « {{databaseName}} » existe déjà. Supprimez-le, puis réessayez.",
+ "errorCreateContainer": "Nous n’avons pas pu créer le conteneur : {{error}}",
+ "errorImportData": "Nous n’avons pas pu importer les données : {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nouveau {{containerName}}",
+ "restoreContainer": "Restaurer {{containerName}}",
+ "deleteDatabase": "Supprimer {{databaseName}}",
+ "deleteContainer": "Supprimer {{containerName}}",
+ "newSqlQuery": "Nouvelle requête SQL",
+ "newQuery": "Nouvelle requête",
+ "openMongoShell": "Ouvrir l’interpréteur de commandes Mongo",
+ "newShell": "Nouvel interpréteur de commandes",
+ "openCassandraShell": "Ouvrir l’interpréteur de commandes Cassandra",
+ "newStoredProcedure": "Nouvelle procédure stockée",
+ "newUdf": "Nouvelle UDF",
+ "newTrigger": "Nouveau déclencheur",
+ "deleteStoredProcedure": "Supprimer la procédure stockée",
+ "deleteTrigger": "Supprimer le déclencheur",
+ "deleteUdf": "Supprimer une fonction définie par l’utilisateur"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nouvel élément",
+ "newDocument": "Nouveau document",
+ "uploadItem": "Charger l’élément",
+ "applyFilter": "Appliquer le filtre",
+ "unsavedChanges": "Modifications non enregistrées",
+ "unsavedChangesMessage": "Vos modifications non enregistrées seront perdues. Voulez-vous continuer ?",
+ "createDocumentFailed": "Nous n’avons pas pu créer le document",
+ "updateDocumentFailed": "Nous n’avons pas pu mettre à jour le document",
+ "documentDeleted": "Nous avons bien supprimé le document.",
+ "deleteDocumentDialogTitle": "Supprimer le document",
+ "deleteDocumentsDialogTitle": "Supprimer des documents",
+ "throttlingError": "Nous n’avons pas pu supprimer certains documents en raison d’une erreur de limitation de débit. Réessayez plus tard. Pour éviter ce cas de figure à l’avenir, envisagez d’augmenter le débit de votre conteneur ou de votre base de données.",
+ "deleteFailed": "Nous n’avons pas pu supprimer le ou les documents ({{error}})",
+ "missingShardProperty": "Le document ne contient pas la propriété de partition : {{partitionKeyProperty}}",
+ "refreshGridFailed": "Nous n’avons pas pu actualiser la grille des documents",
+ "confirmDelete": "Voulez-vous vraiment supprimer {{documentName}} ?",
+ "confirmDeleteTitle": "Confirmer la suppression",
+ "selectedItems": "les {{count}} éléments sélectionnés",
+ "selectedItem": "l’élément sélectionné",
+ "selectedDocuments": "les {{count}} documents sélectionnés",
+ "selectedDocument": "le document sélectionné",
+ "deleteDocumentFailedLog": "Nous n’avons pas pu supprimer le document {{documentId}} avec le code d’état {{statusCode}}",
+ "deleteSuccessLog": "Nous avons bien supprimé {{count}} document(s)",
+ "deleteThrottledLog": "Nous n’avons pas pu supprimer {{count}} document(s) en raison de l’erreur « Requête trop volumineuse » (429). Nouvelle tentative...",
+ "missingShardKeyLog": "Nous n’avons pas pu enregistrer le nouveau document : clé de partition du document non définie",
+ "filterTooltip": "Tapez un prédicat de requête ou choisissez-en un dans la liste.",
+ "loadMore": "Charger plus",
+ "documentEditor": "Éditeur de document",
+ "savedFilters": "Filtres enregistrés",
+ "defaultFilters": "Filtres par défaut",
+ "abort": "Abandonner",
+ "deletingDocuments": "Suppression en cours de {{count}} document(s)",
+ "deletedDocumentsSuccess": "Nous avons bien supprimé {{count}} document(s).",
+ "deleteAborted": "La suppression du ou des documents a été abandonnée.",
+ "failedToDeleteDocuments": "Nous n’avons pas pu supprimer {{count}} document(s).",
+ "requestTooLargeBase": "Certaines requêtes de suppression ont échoué en raison d’une exception « Demande trop volumineuse » (429)",
+ "retriedSuccessfully": "mais ont bien été réessayés.",
+ "retryingNow": "Nouvelle tentative en cours.",
+ "increaseThroughputTip": "Pour éviter ce cas de figure à l’avenir, envisagez d’augmenter le débit de votre conteneur ou de votre base de données.",
+ "numberOfSelectedDocuments": "Nombre de documents sélectionnés : {{count}}",
+ "mongoFilterPlaceholder": "Tapez un prédicat de requête (p. ex. {\"id\":\"foo\"}), choisissez-en un dans la liste déroulante, ou laissez le champ vide pour interroger tous les documents.",
+ "sqlFilterPlaceholder": "Tapez un prédicat de requête (p. ex. WHERE c.id=\"1\"), choisissez-en un dans la liste déroulante, ou laissez le champ vide pour interroger tous les documents.",
+ "error": "Erreur",
+ "warning": "Avertissement"
+ },
+ "query": {
+ "executeQuery": "Exécuter la requête",
+ "executeSelection": "Exécuter la sélection",
+ "saveQuery": "Enregistrer la requête",
+ "downloadQuery": "Télécharger la requête",
+ "cancelQuery": "Annuler la requête",
+ "openSavedQueries": "Ouvrir les requêtes enregistrées",
+ "vertical": "Verticale",
+ "horizontal": "Horizontale",
+ "view": "Afficher",
+ "editingQuery": "Modification en cours de la requête"
+ },
+ "storedProcedure": {
+ "id": "ID de procédure stockée",
+ "idPlaceholder": "Entrer le nouvel ID de procédure stockée",
+ "idAriaLabel": "ID de procédure stockée",
+ "body": "Corps de procédure stockée",
+ "bodyAriaLabel": "Corps de procédure stockée",
+ "successfulExecution": "Nous avons réussi l’exécution de la procédure stockée",
+ "resultAriaLabel": "Exécuter le résultat de la procédure stockée",
+ "logsAriaLabel": "Exécuter les journaux d’activité de la procédure stockée",
+ "errors": "Erreurs :",
+ "errorDetailsAriaLabel": "Lien vers les détails d’erreur",
+ "moreDetails": "Plus de détails",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID de déclencheur",
+ "idPlaceholder": "Entrer le nouvel ID de déclencheur",
+ "type": "Type de déclencheur",
+ "operation": "Déclencher l’opération",
+ "body": "Corps de déclencheur",
+ "bodyAriaLabel": "Corps de déclencheur",
+ "pre": "Avant",
+ "post": "Publier",
+ "all": "Tous",
+ "operationCreate": "Créer",
+ "operationDelete": "Supprimer",
+ "operationReplace": "Remplacer"
+ },
+ "udf": {
+ "id": "ID de fonction définie par l’utilisateur",
+ "idPlaceholder": "Entrer le nouvel ID de fonction définie par l’utilisateur",
+ "body": "Corps de fonction défini par l’utilisateur",
+ "bodyAriaLabel": "Corps de fonction définie par l’utilisateur"
+ },
+ "conflicts": {
+ "unsavedChanges": "Modifications non enregistrées",
+ "changesWillBeLost": "Les modifications seront perdues. Voulez-vous continuer ?",
+ "resolveConflictFailed": "Échec de la résolution de conflit",
+ "deleteConflictFailed": "Nous n’avons pas pu résoudre le conflit",
+ "refreshGridFailed": "Nous n’avons pas pu actualiser la grille des documents"
+ },
+ "mongoShell": {
+ "title": "Interpréteur de commandes Mongo"
+ }
+ },
+ "panes": {
+ "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.",
+ "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 !",
+ "feedbackReason": "Pourquoi supprimez-vous {{databaseName}} ?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Supprimer {{collectionName}}",
+ "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 !",
+ "feedbackReason": "Pourquoi supprimez-vous {{collectionName}} ?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Base de données {{suffix}}",
+ "databaseIdLabel": "ID de base de données",
+ "keyspaceIdLabel": "ID d’espace clé",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "ID {{collectionName}}, Exemple {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Choisir un id existant de {{databaseName}}",
+ "existingDatabasePlaceholder": "Choisir un id existant de {{databaseName}}",
+ "indexing": "Indexation",
+ "turnOnIndexing": "Activer l’indexation",
+ "automatic": "Automatique",
+ "turnOffIndexing": "Désactiver l’indexation",
+ "off": "Désactivé",
+ "sharding": "Partitionnement",
+ "shardingTooltip": "Les collections partitionnées fractionnent vos données entre de nombreux jeux de réplicas (partitions) pour atteindre une scalabilité illimitée. Les collections partitionnées vous obligent à choisir une clé de partition (champ) pour distribuer uniformément vos données.",
+ "unsharded": "Non partitionné",
+ "unshardedLabel": "Non partitionné (limite de 20 Go)",
+ "sharded": "Partitionné",
+ "addPartitionKey": "Ajouter une clé de partition hiérarchique",
+ "hierarchicalPartitionKeyInfo": "Cette fonctionnalité vous permet de partitionner vos données avec jusqu’à trois niveaux de clés pour une meilleure distribution des données. Nécessite .NET V3, le SDK Java V4 ou la préversion du SDK JavaScript V3.",
+ "provisionDedicatedThroughput": "Approvisionner le débit dédié pour {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Vous pouvez éventuellement approvisionner un débit dédié pour un {{collectionName}} dans un espace de clés dont le débit est approvisionné. Ce débit dédié ne sera pas partagé avec les autres {{collectionNamePlural}} de la base de données et ne sera pas pris en compte dans le débit que vous approvisionnez pour la base de données. Cette quantité de débit sera facturée en plus du débit que vous approvisionnez au niveau de la base de données.",
+ "uniqueKeysPlaceholderMongo": "Chemins séparés par des virgules, p. ex. firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Chemins séparés par des virgules, p. ex. /firstName,/address/zipCode",
+ "addUniqueKey": "Ajouter une clé unique",
+ "enableAnalyticalStore": "Activer le magasin analytique",
+ "disableAnalyticalStore": "Désactiver le magasin analytique",
+ "on": "Activé",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link est obligatoire pour créer un magasin analytique de {{collectionName}}. Activez Synapse Link pour ce compte Cosmos DB.",
+ "enable": "Activer",
+ "containerVectorPolicy": "Stratégie de vecteur de conteneur",
+ "containerFullTextSearchPolicy": "Stratégie de recherche en texte intégral du conteneur",
+ "advanced": "Avancé",
+ "mongoIndexingTooltip": "Le champ _id est indexé par défaut. La création d’un index générique pour tous les champs optimise les requêtes. Elle est recommandée pour le développement.",
+ "createWildcardIndex": "Créer un index générique sur tous les champs",
+ "legacySdkCheckbox": "Mon application utilise une version antérieure de Cosmos .NET ou du SDK Java (.NET V1 ou Java V2)",
+ "legacySdkInfo": "Pour garantir la compatibilité avec les anciens Kits de développement logiciels (SDK), le conteneur créé utilise un schéma de partitionnement hérité qui prend en charge des valeurs de clés de partition d’une taille maximale de 101 octets. Si cette option est activée, vous ne pouvez pas utiliser de clés de partition hiérarchiques.",
+ "indexingOnInfo": "Toutes les propriétés de vos documents seront indexées par défaut pour permettre des requêtes flexibles et efficaces.",
+ "indexingOffInfo": "L’indexation sera désactivée. Nous recommandons cette option si vous n’avez pas besoin d’exécuter des requêtes ou si vous n’effectuez que des opérations clé-valeur.",
+ "indexingOffWarning": "En créant ce conteneur avec l’indexation désactivée, vous ne pouvez pas modifier la stratégie d’indexation. Les modifications d’indexation ne sont autorisées que sur un conteneur disposant d’une stratégie d’indexation.",
+ "acknowledgeSpendErrorMonthly": "Prenez en compte l’estimation des dépenses mensuelles.",
+ "acknowledgeSpendErrorDaily": "Prenez en compte l’estimation des dépenses quotidiennes.",
+ "unshardedMaxRuError": "Les collections non partitionnées prennent en charge un maximum de 10 000 RU",
+ "acknowledgeShareThroughputError": "N’oubliez pas de prendre en compte le coût estimé de ce débit dédié.",
+ "vectorPolicyError": "Corriger les erreurs dans la stratégie de vecteur du conteneur",
+ "fullTextSearchPolicyError": "Corrigez les erreurs dans la stratégie de recherche en texte intégral du conteneur",
+ "addingSampleDataSet": "Ajout en cours d’un exemple de jeu de données",
+ "databaseFieldLabelName": "Nom de base de données",
+ "databaseFieldLabelId": "ID de base de données",
+ "newDatabaseIdPlaceholder": "Saisir un nouvel ID de base de données",
+ "newDatabaseIdAriaLabel": "Nouvel ID de base de données, Saisir un nouvel ID de base de données",
+ "createNewDatabaseAriaLabel": "Créer une base de données",
+ "useExistingDatabaseAriaLabel": "Utiliser une base de données existante",
+ "chooseExistingDatabase": "Choisir une base de données existante",
+ "teachingBubble": {
+ "step1Headline": "Créer un échantillon de base de données",
+ "step1Body": "La base de données est le parent d’un conteneur. Vous pouvez créer une base de données ou utiliser une base existante. Dans ce didacticiel, nous créons une nouvelle base de données nommée SampleDB.",
+ "step1LearnMore": "En savoir plus sur les ressources.",
+ "step2Headline": "Définir le débit",
+ "step2Body": "Cosmos DB recommande de partager le débit au sein de la base de données. La mise à l’échelle automatique vous offre un débit flexible en fonction du nombre maximal de RU/s (unités de requête) défini.",
+ "step2LearnMore": "En savoir plus sur les RU/s.",
+ "step3Headline": "Nommer le conteneur",
+ "step3Body": "Nommer votre conteneur",
+ "step4Headline": "Configuration d’une clé de partition",
+ "step4Body": "Dernière étape : vous devez définir une clé de partition pour votre collection. /address a été choisie pour cet exemple spécifique. Une bonne clé de partition doit offrir un large choix de valeurs possibles",
+ "step4CreateContainer": "Créer un conteneur",
+ "step5Headline": "Création d’un échantillon de conteneur",
+ "step5Body": "Nous créons actuellement un échantillon de conteneur et nous vous ajoutons des données d’échantillon. Cela devrait prendre environ 1 minute.",
+ "step5BodyFollowUp": "Une fois l’échantillon de conteneur créé, vérifier votre échantillon de jeu de données et suivre les étapes suivantes",
+ "stepOfTotal": "Étape {{current}} sur {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Utilisez les clés de partition (champ) pour fractionner vos données entre de nombreux jeux de réplicas (partitions) pour atteindre une scalabilité illimitée. Il est essentiel de choisir un champ qui répartit uniformément vos données.",
+ "partitionKeyTooltip": "La {{partitionKeyName}} est utilisée pour distribuer automatiquement les données entre les partitions à des fins de scalabilité. Choisissez une propriété dans votre document JSON qui propose un grand éventail de valeurs et distribue uniformément le volume des requêtes.",
+ "partitionKeyTooltipSqlSuffix": " Pour les charges de travail de petite taille à lecture intensive ou les charges de travail à écriture intensive de toute taille, l’ID est souvent un choix judicieux.",
+ "shardKeyLabel": "Clé de partition",
+ "partitionKeyLabel": "Clé de partition",
+ "shardKeyPlaceholder": "p. ex. categoryId",
+ "partitionKeyPlaceholderDefault": "p. ex. /address",
+ "partitionKeyPlaceholderFirst": "Obligatoire : première clé de partition, p. ex. /TenantId",
+ "partitionKeyPlaceholderSecond": "deuxième clé de partition, par exemple, /UserId",
+ "partitionKeyPlaceholderThird": "troisième clé de partition, p. ex. /SessionId",
+ "partitionKeyPlaceholderGraph": "p. ex. /address/zipCode",
+ "uniqueKeysTooltip": "Les clés uniques permettent aux développeurs d’ajouter une couche d’intégrité des données à leur base de données. En créant une stratégie de clé unique lors de la création d’un conteneur, vous garantissez l’unicité d’une ou plusieurs valeurs par clé de partition.",
+ "uniqueKeysLabel": "Clés uniques",
+ "analyticalStoreLabel": "Magasin analytique",
+ "analyticalStoreTooltip": "Activez la fonctionnalité de magasin analytique pour effectuer des analyses en quasi-temps réel sur vos données opérationnelles, sans impacter les performances des charges de travail transactionnelles.",
+ "analyticalStoreDescription": "Activez la fonctionnalité de magasin analytique pour effectuer des analyses en quasi-temps réel sur vos données opérationnelles, sans impacter les performances des charges de travail transactionnelles.",
+ "vectorPolicyTooltip": "Décrivez n’importe quelle propriété de vos données qui contient des vecteurs afin qu’elles puissent être utilisées pour des requêtes de similarité."
+ },
+ "settings": {
+ "pageOptions": "Options de page",
+ "pageOptionsDescription": "Choisissez Personnalisé pour spécifier un nombre fixe de résultats de requête à afficher, ou Illimité pour afficher autant de résultats que possible par page.",
+ "queryResultsPerPage": "Résultats de requête par page",
+ "queryResultsPerPageTooltip": "Entrez le nombre de résultats de requête à afficher par page.",
+ "customQueryItemsPerPage": "Le nombre d’éléments de requête personnalisés par page",
+ "custom": "Personnalisé",
+ "unlimited": "Illimité",
+ "entraIdRbac": "Activer le RBAC d’Entra ID",
+ "entraIdRbacDescription": "Choisissez Automatique pour activer automatiquement le RBAC d’Entra ID. True/False pour forcer l’activation ou la désactivation du RBAC d’Entra ID.",
+ "true": "True",
+ "false": "Faux",
+ "regionSelection": "Sélection de zone",
+ "regionSelectionDescription": "Modifie la région utilisée par le client Cosmos pour accéder au compte.",
+ "selectRegion": "Sélectionner une région",
+ "selectRegionTooltip": "Modifie le point de terminaison du compte utilisé pour effectuer des opérations client.",
+ "globalDefault": "Global (par défaut)",
+ "readWrite": "(En lecture et en écriture)",
+ "read": "(Lecture)",
+ "queryTimeout": "Expiration de la requête",
+ "queryTimeoutDescription": "Lorsqu’une requête atteint une limite de temps spécifiée, une fenêtre contextuelle proposant d’annuler la requête s’affiche, sauf si l’annulation automatique est activée.",
+ "enableQueryTimeout": "Activer le délai d’expiration de requête",
+ "queryTimeoutMs": "Délai d’expiration de la requête (ms)",
+ "automaticallyCancelQuery": "Annuler automatiquement la requête après expiration du délai d’attente",
+ "ruLimit": "Limite de RU",
+ "ruLimitDescription": "Si une requête dépasse une limite de RU configurée, elle sera annulée.",
+ "enableRuLimit": "Activer la limite de RU",
+ "ruLimitLabel": "Limite de RU (RU)",
+ "defaultQueryResults": "Affichage par défaut des résultats de la requête",
+ "defaultQueryResultsDescription": "Sélectionnez l’affichage par défaut à utiliser pour montrer les résultats de la requête.",
+ "retrySettings": "Paramètres de nouvelle tentative",
+ "retrySettingsDescription": "La stratégie de nouvelles tentatives associée aux requêtes limitées lors des requêtes CosmosDB.",
+ "maxRetryAttempts": "Maximum de nouvelles tentatives",
+ "maxRetryAttemptsTooltip": "Nombre maximal de tentatives à effectuer pour une requête. Valeur par défaut 9.",
+ "fixedRetryInterval": "Intervalle fixe avant nouvelle tentative (ms)",
+ "fixedRetryIntervalTooltip": "Intervalle fixe avant nouvelle tentative, en millisecondes, en ignorant la valeur retryAfter retournée dans la réponse. La valeur par défaut est de 0 milliseconde.",
+ "maxWaitTime": "Temps d’attente maximal (s)",
+ "maxWaitTimeTooltip": "Le temps d’attente maximal en secondes pour une requête pendant les nouvelles tentatives. La valeur par défaut est de 30 secondes.",
+ "enableContainerPagination": "Activer la pagination du conteneur",
+ "enableContainerPaginationDescription": "Chargez 50 conteneurs à la fois. Actuellement, les conteneurs ne sont pas tirés (pulled) dans l’ordre alphanumérique.",
+ "enableCrossPartitionQuery": "Activer les requêtes entre les partitions",
+ "enableCrossPartitionQueryDescription": "Envoyez plusieurs requêtes lors de l’exécution d’une requête. Plusieurs requêtes sont nécessaires si la requête ne cible pas une seule valeur de clé de partition.",
+ "maxDegreeOfParallelism": "Degré maximal de parallélisme",
+ "maxDegreeOfParallelismDescription": "Récupère ou définit le nombre d’opérations simultanées exécutées côté client lors de l’exécution parallèle d’une requête. Une valeur positive limite le nombre d’opérations simultanées à cette valeur. Si elle est inférieure à 0, le système détermine automatiquement le nombre d’opérations simultanées à exécuter.",
+ "maxDegreeOfParallelismQuery": "Interrogez jusqu’au degré maximal de parallélisme.",
+ "priorityLevel": "Niveau de priorité",
+ "priorityLevelDescription": "Définit le niveau de priorité des requêtes du plan de données provenant de l’Explorateur de données lors de l’utilisation de l’exécution basée sur la priorité. Si « Aucun » est sélectionné, l’Explorateur de données ne spécifie pas de niveau de priorité et le niveau de priorité par défaut côté serveur est utilisé.",
+ "displayGremlinQueryResults": "Afficher les résultats de la requête Gremlin sous forme de :",
+ "displayGremlinQueryResultsDescription": "Sélectionnez Graphique pour visualiser automatiquement les résultats de la requête sous forme de graphique ou JSON pour afficher les résultats au format JSON.",
+ "graph": "Graphique",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualisation automatique du graphique",
+ "enableSampleDatabase": "Activer l’exemple de données",
+ "enableSampleDatabaseDescription": "Il s’agit d’un exemple de base de données et de collection avec des données de produit synthétiques que vous pouvez utiliser pour découvrir les requêtes NoSQL. Elle apparaîtra comme toute autre base de données dans l’IU d’Explorateur de données. Elle est gratuitement créée et maintenue par Microsoft.",
+ "enableSampleDbAriaLabel": "Activer l’exemple de base de données pour explorer les requêtes",
+ "guidRepresentation": "Représentation de GUID",
+ "guidRepresentationDescription": "GuidRepresentation dans MongoDB désigne la manière dont les identifiants uniques globaux (GUID) sont sérialisés et désérialisés lorsqu’ils sont stockés dans des documents BSON. Cela s’applique à toutes les opérations de documents.",
+ "advancedSettings": "Paramètres avancés",
+ "ignorePartitionKey": "Ignorer la clé de partition lors de la mise à jour du document",
+ "ignorePartitionKeyTooltip": "Si cette option est cochée, la valeur de la clé de partition n’est pas utilisée pour localiser le document lors des opérations de mise à jour. Utilisez cette option uniquement si les mises à jour de document échouent à cause d’une clé de partition anormale.",
+ "clearHistory": "Effacer l’historique",
+ "clearHistoryConfirm": "Voulez-vous vraiment continuer ?",
+ "clearHistoryDescription": "Cette action efface toutes les personnalisations pour ce compte dans ce navigateur, notamment :",
+ "clearHistoryTabLayout": "Réinitialiser votre disposition d’onglets personnalisée, y compris les positions de séparateurs",
+ "clearHistoryTableColumns": "Effacez les préférences de colonnes de votre tableau, y compris les colonnes personnalisées",
+ "clearHistoryFilters": "Effacer votre historique de filtres",
+ "clearHistoryRegion": "Réinitialiser la sélection de région à globale",
+ "increaseValueBy1000": "Augmenter la valeur de 1 000",
+ "decreaseValueBy1000": "Diminuer la valeur de 1 000",
+ "none": "Aucun",
+ "low": "Faible",
+ "high": "Élevé",
+ "automatic": "Automatique",
+ "enhancedQueryControl": "Contrôle de requête amélioré",
+ "enableQueryControl": "Activer le contrôle de requête",
+ "explorerVersion": "Version d’Explorer",
+ "accountId": "ID de compte",
+ "sessionId": "ID de session",
+ "popupsDisabledError": "Nous n’avons pas pu établir l’autorisation pour ce compte, car les fenêtres contextuelles sont désactivées dans le navigateur.\nActiver les fenêtres contextuelles pour ce site et cliquer sur le bouton « Connexion avec Entra ID »",
+ "failedToAcquireTokenError": "Nous n’avons pas pu obtenir automatiquement le jeton d’autorisation. Cliquer sur le bouton « Connexion à Entra ID » pour activer les opérations de RBAC d’Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Enregistrer la requête",
+ "setupCostMessage": "Pour des raisons de conformité, nous enregistrons les requêtes dans un conteneur de votre compte Azure Cosmos, au sein d’une base de données distincte appelée « {{databaseName}} ». Pour continuer, nous devons créer un conteneur dans votre compte. Le coût supplémentaire estimé est de 0,77 $ par jour.",
+ "completeSetup": "Terminer la configuration",
+ "noQueryNameError": "Aucun nom de requête n’est spécifié",
+ "invalidQueryContentError": "Le contenu de requête spécifié n’est pas valide",
+ "failedToSaveQueryError": "Nous n’avons pas pu enregistrer la requête {{queryName}}",
+ "failedToSetupContainerError": "Nous n’avons pas pu configurer un conteneur pour les requêtes enregistrées",
+ "accountNotSetupError": "Nous n’avons pas pu enregistrer la requête : le compte n’est pas configuré pour enregistrer les requêtes",
+ "name": "Nom"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Aucun fichier n’est spécifié",
+ "failedToLoadQueryError": "Impossible de charger la requête",
+ "failedToLoadQueryFromFileError": "Nous n’avons pas pu charger la requête à partir du fichier {{fileName}}",
+ "selectFilesToOpen": "Sélectionner un document de requête",
+ "browseFiles": "Parcourir"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Saisir les paramètres d’entrée (le cas échéant)",
+ "key": "Clé",
+ "param": "Paramètre",
+ "partitionKeyValue": "Valeur de la clé de partition",
+ "value": "Valeur",
+ "addNewParam": "Ajouter un nouveau paramètre",
+ "addParam": "Ajouter un paramètre",
+ "deleteParam": "Supprimer le paramètre",
+ "invalidParamError": "Paramètre non valide spécifié : {{invalidParam}}",
+ "invalidParamConsoleError": "Paramètre non valide spécifié : {{invalidParam}} n’est pas une valeur littérale valide",
+ "stringType": "Chaîne",
+ "customType": "Personnalisé"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Aucun fichier n’est spécifié. Indiquez au moins un fichier.",
+ "selectJsonFiles": "Sélectionner des fichiers JSON",
+ "selectJsonFilesTooltip": "Sélectionnez un ou plusieurs fichiers JSON à charger. Chaque fichier peut contenir un document JSON unique ou un groupe de documents JSON. La taille combinée de tous les fichiers lors d’une opération de chargement individuelle doit être inférieure à 2 Mo. Vous pouvez effectuer plusieurs opérations de chargement pour des ensembles de données plus volumineux.",
+ "fileNameColumn": "NOM DE FICHIER",
+ "statusColumn": "ÉTAT",
+ "uploadStatus": "{{numSucceeded}} créé(s), {{numThrottled}} limité(s), {{numFailed}} erreur(s)",
+ "uploadedFiles": "Fichiers chargés"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Nous n’avons pas pu copier {{name}} vers {{destination}}",
+ "uploadFailedError": "Nous n’avons pas pu charger {{name}}",
+ "location": "Emplacement",
+ "locationAriaLabel": "Emplacement",
+ "selectLocation": "Sélectionner un emplacement de bloc-notes vers lequel effectuer une copie",
+ "name": "Nom"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Nous n’avons pas pu publier {{notebookName}} dans la galerie",
+ "publishDescription": "Une fois publié, ce bloc-notes apparaîtra dans la galerie publique de bloc-notes d’Azure Cosmos DB. Veillez à bien supprimer toutes les données sensibles et tout résultat avant la publication.",
+ "publishPrompt": "Voulez-vous publier et partager « {{name}} » dans la galerie ?",
+ "coverImage": "Image de couverture",
+ "coverImageUrl": "URL d’image de couverture",
+ "name": "Nom",
+ "description": "Description",
+ "tags": "Balises",
+ "tagsPlaceholder": "Balise facultative 1, Balise facultative 2",
+ "preview": "Aperçu",
+ "urlType": "URL",
+ "customImage": "Image personnalisée",
+ "takeScreenshot": "Prendre une capture d’écran",
+ "useFirstDisplayOutput": "Utiliser le résultat du premier affichage",
+ "failedToCaptureOutput": "Nous n’avons pas pu capturer le premier résultat",
+ "outputDoesNotExist": "Aucune des cellules ne présente de résultats.",
+ "failedToConvertError": "Nous n’avons pas pu convertir {{fileName}} au format base64",
+ "failedToUploadError": "Nous n’avons pas pu charger {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Nous n’avons pas pu démarrer la tâche de transfert de données",
+ "suboptimalPartitionKeyError": "Avertissement : Le système a détecté que votre collection utilise peut-être une clé de partition sous-optimale",
+ "description": "Lorsque vous modifiez la clé de partition d’un conteneur, vous devez créer un conteneur de destination avec la bonne clé de partition. Vous pouvez également sélectionner un conteneur de destination existant.",
+ "sourceContainerId": "ID de source de {{collectionName}}",
+ "destinationContainerId": "ID de destination 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",
+ "collectionIdAriaLabel": "ID {{collectionName}}, Exemple {{collectionName}}1",
+ "existingContainers": "Conteneurs existants",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Ajouter une propriété",
+ "addRow": "Ajouter une ligne",
+ "addEntity": "Ajouter une entité",
+ "back": "retour",
+ "nullFieldsWarning": "Avertissement : Les champs nuls ne sont pas affichés pour la modification.",
+ "propertyEmptyError": "{{property}} ne peut pas être vide. Entrer une valeur pour {{property}}",
+ "whitespaceError": "{{property}} ne peut pas contenir d’espace. Saisir une valeur pour {{property}}, sans espaces",
+ "propertyTypeEmptyError": "Le type de propriété ne peut pas être vide. Sélectionner un type dans la liste déroulante pour la propriété {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Sélectionnez les colonnes à interroger.",
+ "availableColumns": "Colonnes disponibles"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Sélectionnez les colonnes à afficher dans la vue des éléments de votre conteneur.",
+ "searchFields": "Champs de recherche",
+ "reset": "Réinitialiser",
+ "partitionKeySuffix": " (clé de partition)"
+ },
+ "newVertex": {
+ "addProperty": "Ajouter une propriété"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "ID de conteneur d’index secondaire global",
+ "globalSecondaryIndexIdPlaceholder": "p. ex. indexbyEmailId",
+ "projectionQuery": "Requête de projection",
+ "projectionQueryPlaceholder": "SÉLECTIONNER c.email, c.accountId DE c",
+ "projectionQueryTooltip": "En savoir plus sur la définition des index secondaires globaux.",
+ "disabledTitle": "Un index secondaire global est déjà en cours de création. Attendez qu’il soit terminé avant d’en créer un nouveau."
+ },
+ "stringInput": {
+ "inputMismatchError": "L’entrée {{input}} ne correspond pas à l’ID {{selectedId}} sélectionné"
+ },
+ "panelInfo": {
+ "information": "Informations",
+ "moreDetails": "Plus de détails"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Mise à l’échelle",
+ "conflictResolution": "Résolution des conflits",
+ "settings": "Paramètres",
+ "indexingPolicy": "Stratégie d'indexation",
+ "partitionKeys": "Clés de partition",
+ "partitionKeysPreview": "Clés de partition (aperçu)",
+ "computedProperties": "Propriétés calculées",
+ "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)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Veuillez sélectionner un type pour chaque index.",
+ "enterFieldNameError": "Entrez un nom de champ.",
+ "wildcardPathError": "Le chemin générique n'est pas présent dans le nom du champ. Utiliser un motif comme "
+ },
+ "partitionKey": {
+ "shardKey": "Clé de partition",
+ "partitionKey": "Clé de partition",
+ "shardKeyTooltip": "Utilisez les clés de partition (champ) pour fractionner vos données entre de nombreux jeux de réplicas (partitions) pour atteindre une scalabilité illimitée. Il est essentiel de choisir un champ qui répartit uniformément vos données.",
+ "partitionKeyTooltip": "est utilisé pour répartir automatiquement les données entre les partitions afin d'assurer l'évolutivité. Choisissez dans votre document JSON une propriété qui présente une large gamme de valeurs et qui répartit uniformément le volume des requêtes.",
+ "sqlPartitionKeyTooltipSuffix": " Pour les charges de travail de petite taille à lecture intensive ou les charges de travail à écriture intensive de toute taille, l’ID est souvent un choix judicieux.",
+ "partitionKeySubtext": "Pour les charges de travail faibles, l'ID de l'élément est un choix approprié pour la clé de partition.",
+ "mongoPlaceholder": "p. ex. categoryId",
+ "gremlinPlaceholder": "par exemple, /adresse",
+ "sqlFirstPartitionKey": "Obligatoire : première clé de partition, p. ex. /TenantId",
+ "sqlSecondPartitionKey": "deuxième clé de partition, par exemple, /UserId",
+ "sqlThirdPartitionKey": "troisième clé de partition, p. ex. /SessionId",
+ "defaultPlaceholder": "par exemple, /adresse/code postal"
+ },
+ "costEstimate": {
+ "title": "Estimation des coûts*",
+ "howWeCalculate": "Comment calculons-nous cela ?",
+ "updatedCostPerMonth": "Coût mensuel actualisé",
+ "currentCostPerMonth": "Coût actuel par mois",
+ "perRu": "/RU",
+ "perHour": "/h",
+ "perDay": "/jour",
+ "perMonth": "/mois"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Le débit maximal initial de RU/s de mise à l'échelle automatique sera déterminé par le système, en fonction des paramètres de débit manuels actuels et du stockage de votre ressource. Une fois la mise à l'échelle automatique activée, vous pouvez modifier le nombre maximal d'unités de requête par seconde (RU/s).",
+ "ttlWarningText": "Le système supprimera automatiquement les éléments en fonction de la valeur TTL (en secondes) que vous fournissez, sans qu'une opération de suppression explicite soit nécessaire de la part d'une application cliente. Pour plus d'informations, consultez,",
+ "ttlWarningLinkText": "Durée de vie (TTL) dans Azure Cosmos DB",
+ "unsavedIndexingPolicy": "stratégie d'indexation",
+ "unsavedDataMaskingPolicy": "Stratégie de masquage des données",
+ "unsavedComputedProperties": "propriétés calculées",
+ "unsavedEditorWarningPrefix": "Vous n'avez pas enregistré les dernières modifications apportées à votre",
+ "unsavedEditorWarningSuffix": ". Veuillez cliquer sur Enregistrer pour confirmer les modifications.",
+ "updateDelayedApplyWarning": "Vous êtes sur le point de demander une augmentation du débit au-delà de la capacité pré-allouée. Cette opération prendra un certain temps.",
+ "scalingUpDelayMessage": "La mise à l'échelle prendra entre 4 et 6 heures, car elle dépasse ce qu'Azure Cosmos DB peut prendre en charge instantanément actuellement en fonction du nombre de vos partitions physiques. Vous pouvez augmenter votre {{instantMaximumThroughput}} instantanément ou conserver cette valeur et attendre que la mise à l'échelle soit terminée.",
+ "exceedPreAllocatedMessage": "Votre requête d'augmentation du débit dépasse la capacité pré-allouée, ce qui peut prendre plus de temps que prévu. Vous avez le choix entre trois options pour continuer :",
+ "instantScaleOption": "Vous pouvez instantanément augmenter la capacité jusqu'à {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Vous pouvez augmenter de manière asynchrone n'importe quelle valeur inférieure à {{maximumThroughput}} RU/s en 4 à 6 heures.",
+ "quotaMaxOption": "Votre quota maximal actuel est de {{maximumThroughput}} RU/s. Pour dépasser cette limite, vous devez demander une augmentation de quota, qui sera examinée par l'équipe Azure Cosmos DB.",
+ "belowMinimumMessage": "Vous ne pouvez pas réduire le débit en dessous de votre minimum actuel de {{minimum}} RU/s. Pour plus d'informations sur cette limite, veuillez consulter notre documentation de devis de service.",
+ "saveThroughputWarning": "Votre facture sera impactée lorsque vous mettrez à jour vos paramètres de débit. Veuillez consulter l'estimation des coûts mise à jour ci-dessous avant d'enregistrer vos modifications",
+ "currentAutoscaleThroughput": "Débit de mise à l'échelle automatique actuel :",
+ "targetAutoscaleThroughput": "Débit cible de mise à l'échelle automatique :",
+ "currentManualThroughput": "Débit manuel actuel :",
+ "targetManualThroughput": "Débit manuel cible :",
+ "applyDelayedMessage": "La requête d'augmentation du débit a été soumise avec succès. Cette opération prendra de 1 à 3 jours ouvrables. Consultez les dernières mises à jour dans les Notifications.",
+ "databaseLabel": "Base de données :",
+ "containerLabel": "Conteneur :",
+ "applyShortDelayMessage": "Une requête d'augmentation du débit est actuellement en cours. Cette opération prendra un certain temps.",
+ "applyLongDelayMessage": "Une requête d'augmentation du débit est actuellement en cours. Cette opération prendra de 1 à 3 jours ouvrables. Consultez les dernières mises à jour dans les Notifications.",
+ "throughputCapError": "Votre compte est actuellement configuré avec une limite de débit total de {{throughputCap}} RU/s. Cette mise à jour n'est pas possible car elle augmenterait le débit total à {{newTotalThroughput}} RU/s. Modifier la limite de débit total dans la gestion des coûts.",
+ "throughputIncrementError": "La valeur du débit doit être exprimée par incréments de 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Le dernier texte écrit l'emporte (par défaut)",
+ "customMergeProcedure": "Procédure de fusion (personnalisée)",
+ "mode": "Mode",
+ "conflictResolverProperty": "Propriété de résolution des conflits",
+ "storedProcedure": "Procédure stockée",
+ "lwwTooltip": "Obtient ou définit le nom d'une propriété entière dans vos documents qui est utilisée pour le schéma de résolution des conflits basé sur Last Write Wins (LWW). Par défaut, le système utilise la propriété d'horodatage définie par le système, _ts, pour déterminer la version gagnante en cas de conflit entre les documents. Spécifiez votre propre propriété entière si vous souhaitez remplacer la résolution des conflits par défaut basée sur l'horodatage.",
+ "customTooltip": "Obtient ou définit le nom d'une procédure stockée (également appelée procédure de fusion) permettant de résoudre les conflits. Vous pouvez écrire une logique définie par l'application pour déterminer la version gagnante parmi les versions conflictuelles d'un document. La procédure stockée sera exécutée de manière transactionnelle, une seule fois, côté serveur. Si vous ne fournissez pas de procédure stockée, les conflits seront renseignés dans le",
+ "customTooltipConflictsFeed": " flux de conflits",
+ "customTooltipSuffix": ". Vous pouvez mettre à jour/réenregistrer la procédure stockée à tout moment."
+ },
+ "changeFeed": {
+ "label": "Stratégie de conservation des journaux de flux modifiée",
+ "tooltip": "Activez la stratégie de conservation des journaux de flux de modifications pour conserver par défaut les 10 dernières minutes d'historique des éléments du conteneur. Pour soutenir cela, les frais d'unité de requête (RU) pour ce conteneur seront multipliés par un facteur de deux pour les écritures. Les lectures ne sont pas affectées."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Pour les requêtes qui filtrent sur plusieurs propriétés, créez plusieurs index à champ unique au lieu d'un index composé.",
+ "disclaimerCompoundIndexesLink": " Indices composés ",
+ "disclaimerSuffix": "ne servent qu'à trier les résultats des requêtes. Si vous devez ajouter un index composé, vous pouvez en créer un à l'aide du shell Mongo.",
+ "compoundNotSupported": "Les collections avec index composés ne sont pas encore prises en charge dans l'éditeur d'indexation. Pour modifier la stratégie d'indexation de cette collection, utilisez le shell Mongo.",
+ "aadError": "Pour utiliser l'éditeur de stratégie d'indexation, veuillez vous connecter à",
+ "aadErrorLink": "Portail Azure.",
+ "refreshingProgress": "Actualisation de la progression de la transformation de l'index",
+ "canMakeMoreChangesZero": "Vous pourrez apporter d'autres modifications d'indexation une fois la transformation d'index actuelle terminée. ",
+ "refreshToCheck": "Actualisez la page pour vérifier si l'opération est terminée.",
+ "canMakeMoreChangesProgress": "Vous pourrez apporter d'autres modifications d'indexation une fois la transformation d'index actuelle terminée. {{progress}} % terminé. ",
+ "refreshToCheckProgress": "Actualisez la page pour vérifier la progression.",
+ "definitionColumn": "Définition",
+ "typeColumn": "Type",
+ "dropIndexColumn": "Supprimer l’index",
+ "addIndexBackColumn": "Ajouter l'index",
+ "deleteIndexButton": "Bouton Supprimer l'index",
+ "addBackIndexButton": "Ajouter le bouton Index",
+ "currentIndexes": "Indice(s) actuel(s)",
+ "indexesToBeDropped": "Index à supprimer",
+ "indexFieldName": "Nom du champ d'index",
+ "indexType": "Type d'index",
+ "selectIndexType": "Sélectionner un type d'index",
+ "undoButton": "Bouton Annuler"
+ },
+ "subSettings": {
+ "timeToLive": "Il est temps de vivre",
+ "ttlOff": "Désactivé",
+ "ttlOnNoDefault": "Activé (pas par défaut)",
+ "ttlOn": "Activé",
+ "seconds": "seconde(s)",
+ "timeToLiveInSeconds": "Le temps de vivre en quelques secondes",
+ "analyticalStorageTtl": "Durée de conservation analytique",
+ "geospatialConfiguration": "Configuration géospatiale",
+ "geography": "Géographie",
+ "geometry": "Géométrie",
+ "uniqueKeys": "Clés uniques",
+ "mongoTtlMessage": "Pour activer la durée de vie (TTL) de votre collection/vos documents,",
+ "mongoTtlLinkText": "créer un index TTL",
+ "partitionKeyTooltipTemplate": "Ce {{partitionKeyName}} permet de répartir les données sur plusieurs partitions pour assurer l'évolutivité. La valeur « {{partitionKeyValue}} » détermine comment les documents sont partitionnés.",
+ "largePartitionKeyEnabled": "Grand {{partitionKeyName}} a été activée.",
+ "hierarchicalPartitioned": "Conteneur à partitionnement hiérarchique.",
+ "nonHierarchicalPartitioned": "Conteneur à partitionnement non hiérarchique."
+ },
+ "scale": {
+ "freeTierInfo": "Avec le niveau gratuit, vous obtenez gratuitement les premières ru/s {{ru}} et {{storage}} Go de stockage dans ce compte. Pour que votre compte reste gratuit, maintenez le total RU/s sur toutes les ressources du compte à {{ru}} RU/s.",
+ "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",
+ "throughputRangeLabel": "Débit ({{min}} à {{max}} RU/s)",
+ "unlimited": "illimité"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Modifier {{partitionKeyName}}",
+ "currentPartitionKey": "{{partitionKeyName}} actuel(le)",
+ "partitioning": "Partitionnement",
+ "hierarchical": "Hiérarchique",
+ "nonHierarchical": "Non hiérarchique",
+ "safeguardWarning": "Pour préserver l'intégrité des données copiées dans le nouveau conteneur, assurez-vous qu'aucune mise à jour ne soit effectuée sur le conteneur source pendant toute la durée du processus de modification de la clé de partition.",
+ "changeDescription": "Pour modifier la clé de partition, il faut créer un nouveau conteneur de destination ou sélectionner un conteneur de destination existant. Les données seront ensuite copiées dans le conteneur de destination.",
+ "changeButton": "Modifier",
+ "changeJob": "{{partitionKeyName}} changer d'emploi",
+ "cancelButton": "Annuler",
+ "documentsProcessed": "({{processedCount}} de {{totalCount}} documents traités)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Propriétés calculées",
+ "learnMorePrefix": "sur la manière de définir les propriétés calculées et de les utiliser."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Stratégie d'indexation"
+ },
+ "dataMasking": {
+ "ariaLabel": "Stratégie de masquage des données",
+ "validationFailed": "Échec de la validation :",
+ "includedPathsRequired": "includedPaths est requis",
+ "includedPathsMustBeArray": "includedPaths doit être un tableau",
+ "excludedPathsMustBeArray": "excludedPaths doit être un tableau s'il est fourni"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Stratégie vectorielle",
+ "fullTextPolicy": "Stratégie de texte intégral",
+ "createFullTextPolicy": "Créer une nouvelle stratégie de recherche en texte intégral"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Ce conteneur possède les index suivants définis pour lui.",
+ "learnMoreSuffix": "sur la manière de définir les index secondaires globaux et de les utiliser.",
+ "jsonAriaLabel": "Index secondaire mondial JSON",
+ "addIndex": "Ajouter un index",
+ "settingsTitle": "Paramètres d'indexation secondaire globale",
+ "sourceContainer": "Conteneur source",
+ "indexDefinition": "Définition globale des indices secondaires"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "L'actualisation de la progression de la transformation de l'index a échoué"
+ },
+ "throughputInput": {
+ "autoscale": "Mise à l’échelle automatique",
+ "manual": "Manuel",
+ "minimumRuS": "RU/s minimum",
+ "maximumRuS": "RU/s maximum",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Capacité de stockage",
+ "fixed": "Corrigé",
+ "unlimited": "Illimité",
+ "instant": "Immédiat",
+ "fourToSixHrs": "4 à 6 heures",
+ "autoscaleDescription": "En fonction de l'utilisation, votre {{resourceType}} évoluera à partir de",
+ "freeTierWarning": "La facturation s'appliquera si vous provisionnez plus de {{ru}} RU/s de débit manuel, ou si la ressource évolue au-delà de {{ru}} RU/s avec la mise à l'échelle automatique.",
+ "capacityCalculator": "Estimez votre besoin en RU/s avec",
+ "capacityCalculatorLink": " calculateur de capacité",
+ "fixedStorageNote": "Lors de l'utilisation d'une collection avec une capacité de stockage fixe, vous pouvez configurer jusqu'à 10 000 exécutions.",
+ "min": "min",
+ "max": "max"
+ },
+ "throughputBuckets": {
+ "label": "Bacs de débit",
+ "bucketLabel": "Compartiment {{id}}",
+ "dataExplorerQueryBucket": " (Compartiment de requêtes de Data Explorer)",
+ "active": "Actif",
+ "inactive": "Inactif"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/hu/Resources.json b/src/Localization/hu/Resources.json
new file mode 100644
index 000000000..a7aee6d76
--- /dev/null
+++ b/src/Localization/hu/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Mégse",
+ "close": "Bezárás",
+ "save": "Mentés",
+ "delete": "Törlés",
+ "update": "Frissítés",
+ "discard": "Elvetés",
+ "execute": "Végrehajtás",
+ "loading": "Betöltés folyamatban",
+ "loadingEllipsis": "Betöltés...",
+ "next": "Következő",
+ "previous": "Előző",
+ "yes": "Igen",
+ "no": "Nem",
+ "result": "Eredmény",
+ "learnMore": "További információ",
+ "getStarted": "Első lépések",
+ "retry": "Újrapróbálkozás",
+ "apply": "Alkalmaz",
+ "refresh": "Frissítés",
+ "copy": "Másolás",
+ "create": "Létrehozás",
+ "confirm": "Megerősítés",
+ "open": "Megnyitás",
+ "rename": "Átnevezés",
+ "download": "Letöltés",
+ "upload": "Feltöltés",
+ "connect": "Kapcsolódás",
+ "remove": "Eltávolítás",
+ "load": "Betöltés",
+ "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"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Üdvözli az Azure Cosmos DB",
+ "postgres": "Üdvözli az Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Üdvözli az Azure DocumentDB (MongoDB-kompatibilitással)"
+ },
+ "subtitle": {
+ "default": "Globálisan elosztott, többmodelles adatbázis-szolgáltatás bármilyen mérethez",
+ "getStarted": "Ismerje meg a minta adathalmazok, a dokumentáció és a további eszközök használatának első lépéseit."
+ },
+ "quickStart": {
+ "title": "A Rövid útmutató elindítása",
+ "description": "Gyors üzembe helyezési oktatóanyag indítása a mintaadatok használatának első lépéseihez"
+ },
+ "newCollection": {
+ "title": "Új {{collectionName}}",
+ "description": "Új tároló létrehozása a tároláshoz és az átviteli sebességhez"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB minták gyűjteménye",
+ "description": "Fedezzen fel skálázható, intelligens alkalmazásmintákat. Próbálja ki most, hogy lássa, milyen gyorsan válthat a fogalmakról a kódolásra a Cosmos DB használatával"
+ },
+ "connectCard": {
+ "title": "Csatlakozás",
+ "description": "Inkább a saját eszközeit használná? Találja meg a kapcsolati sztringet, amire a csatlakozáshoz szüksége van",
+ "pgAdmin": {
+ "title": "Kapcsolódás pgAdmin használatával",
+ "description": "Előnyben részesíti a pgAdmin-t? Itt találja a kapcsolati sztringeket"
+ },
+ "vsCode": {
+ "title": "Csatlakozás VS Code használatával",
+ "description": "MongoDB- és DocumentDB-fürtök lekérdezése és kezelése Visual Studio Code-ban"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "Tábla létrehozása és az adatok kezelése a PostgreSQL shell felület használatával"
+ },
+ "vcoreMongo": {
+ "title": "Mongo shell",
+ "description": "Gyűjtemény létrehozása és az adatok kezelése a MongoDB felületének használatával"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Most ismerkedik a Cosmos DB PGSQL-lel?",
+ "body": "Üdvözöljük! Ha most ismerkedik a Cosmos DB PGSQL használatával és segítségre van szüksége az első lépésekhez, itt találhat mintaadatokat, lekérdezéseket."
+ },
+ "resetPassword": {
+ "headline": "Jelszó létrehozása",
+ "body": "Ha még nem módosította a jelszavát, módosítsa most."
+ },
+ "coachMark": {
+ "headline": "Kezdje a(z) {{collectionName}} mintával",
+ "body": "Végigvezetjük egy mintatároló létrehozásán mintaadatokkal, majd bemutatjuk az adatkezelőt. A bemutató indítását meg is szakíthatja, és felfedezheti önállóan"
+ }
+ },
+ "sections": {
+ "recents": "Legutóbbiak",
+ "clearRecents": "Legutóbbiak törlése",
+ "top3": "A 3 legfontosabb tudnivaló",
+ "learningResources": "Tanulási források",
+ "nextSteps": "Következő lépések",
+ "tipsAndLearnMore": "Tippek és további információ",
+ "notebook": "Jegyzetfüzet",
+ "needHelp": "Segítségre van szüksége?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Speciális modellezési minták",
+ "description": "Ismerjen meg speciális stratégiákat z adatbázis optimalizálásához."
+ },
+ "partitioning": {
+ "title": "Ajánlott particionálási eljárások",
+ "description": "Tudja meg, hogyan alkalmazhat adatmodellt és particionálási stratégiákat."
+ },
+ "resourcePlanning": {
+ "title": "Az erőforrás-követelmények megtervezése",
+ "description": "Ismerkedjen meg a különböző konfigurációs lehetőségekkel."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Mi az a MongoDB API?",
+ "description": "Ismerje meg az Azure Cosmos DB for MongoDB használatát és funkcióit."
+ },
+ "features": {
+ "title": "Funkciók és szintaxis",
+ "description": "Az előnyök és funkciók felfedezése"
+ },
+ "migrate": {
+ "title": "Adatok áttelepítése",
+ "description": "Áttelepítés előtti lépések az adatok áthelyezéséhez"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Java-alkalmazás létrehozása",
+ "description": "Java-alkalmazás létrehozása SDK használatával."
+ },
+ "partitioning": {
+ "title": "Ajánlott particionálási eljárások",
+ "description": "Ismerje meg a particionálás működését."
+ },
+ "requestUnits": {
+ "title": "Kérelemegységek (RU-k)",
+ "description": "A kérelemegység-díjak ismertetése."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Adatmodellezés",
+ "description": "Gráfadatok modellezésével kapcsolatos javaslatok"
+ },
+ "partitioning": {
+ "title": "Ajánlott particionálási eljárások",
+ "description": "Ismerje meg a particionálás működését"
+ },
+ "queryData": {
+ "title": "Adatok lekérdezése",
+ "description": "Adatok lekérdezése a Gremlinnel"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Mi a tábla-API?",
+ "description": "Ismerje meg az Azure Cosmos DB for Table használatát és funkcióit"
+ },
+ "migrate": {
+ "title": "Adatok áttelepítése",
+ "description": "Ismerje meg, hogyan telepítheti át az adatait"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table GYIK",
+ "description": "Gyakori kérdések a Azure Cosmos DB for Table kapcsán"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Adatkezelő billentyűparancsok",
+ "description": "Ismerje meg a Data Explorer navigálásához használható billentyűparancsokat."
+ },
+ "liveTv": {
+ "title": "Az alapok megismerése",
+ "description": "Nézze meg Azure Cosmos DB élő tv-műsor bevezető videóit és videóit."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Az SDK használatának első lépései",
+ "description": "Tudnivalók a Azure Cosmos DB SDK-ról."
+ },
+ "migrate": {
+ "title": "Adatok áttelepítése",
+ "description": "Adatok áttelepítése Azure-szolgáltatásokkal és nyílt forráskódú megoldásokkal."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Alkalmazás készítése Node.js használatával",
+ "description": "Hozzon létre egy Node.js alkalmazást."
+ },
+ "gettingStarted": {
+ "title": "Első lépéseket ismertető útmutató",
+ "description": "Első lépésként ismerkedjen meg az alapokkal."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Tároló létrehozása",
+ "description": "Ismerje meg a tárolók létrehozásának lehetőségeit."
+ },
+ "throughput": {
+ "title": "Átviteli sebesség kiosztása",
+ "description": "Útmutató az átviteli sebesség konfigurálásához."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Első lépések ",
+ "description": "Létrehozás, lekérdezés és bejárás a Gremlin-konzol használatával"
+ },
+ "importData": {
+ "title": "Gráfadatok importálása",
+ "description": "Tömeges betöltési adatok megismerése a BulkExecutor használatával"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": ".NET-alkalmazás létrehozása",
+ "description": "Az Azure Cosmos DB for Table elérése .NET-alkalmazásból."
+ },
+ "java": {
+ "title": "Java-alkalmazás létrehozása",
+ "description": "Azure Cosmos DB for Table alkalmazás létrehozása Java SDK használatával "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Adatmodellezés",
+ "distributionColumn": "Terjesztési oszlop kiválasztása",
+ "buildApps": "Alkalmazások készítése Python/Java/Django használatával"
+ },
+ "vcoreMongo": {
+ "migrateData": "Adatok áttelepítése",
+ "vectorSearch": "AI-alkalmazások létrehozása vektor keresés használatával",
+ "buildApps": "Alkalmazások létrehozása a Nodejs használatával"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Teljesítményhangolás",
+ "diagnosticQueries": "Hasznos diagnosztikai lekérdezések",
+ "sqlReference": "Elosztott SQL-referencia"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vektor keresés",
+ "textIndexing": "Szövegindexelés",
+ "troubleshoot": "A leggyakoribb problémák elhárítása"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Adatbázis létrehozása",
+ "useTitle": "Saját adatbázis használata",
+ "newContainer": {
+ "title": "Új tároló",
+ "description": "Céltároló létrehozása az adatok tárolásához"
+ },
+ "sampleData": {
+ "title": "Mintaadatok",
+ "description": "Mintaadatok betöltése az adatbázisban"
+ },
+ "sampleVectorData": {
+ "title": "Mintavektoradatok",
+ "description": "Mintavektoradatok betöltése text-embedding-ada-002 használatával"
+ },
+ "appDevelopment": {
+ "title": "Alkalmazásfejlesztés",
+ "description": "Kezdje itt az alkalmazások SDK-val történő létrehozásához"
+ },
+ "sampleGallery": {
+ "title": "Mintagyűjtemény",
+ "description": "Valós, teljes körű minták"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Mintaadatok",
+ "startButton": "Kezdés",
+ "createPrompt": "Hozzon létre egy {{containerName}} tárolót, és importálja a mintaadatokat. Ez több percet is igénybe vehet.",
+ "creatingContainer": "A(z) {{containerName}} tároló létrehozása...",
+ "importingData": "Adatok importálása a következőbe: {{containerName}}...",
+ "success": "A(z) {{containerName}} sikeresen létrehozva mintaadatokkal.",
+ "errorContainerExists": "A(z) {{containerName}} tároló már létezik a(z) {{databaseName}} adatbázisban. Törölje, majd próbálkozzon újra.",
+ "errorCreateContainer": "Nem sikerült létrehozni a tárolót: {{error}}",
+ "errorImportData": "Nem sikerült az adatok importálása: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Új {{containerName}}",
+ "restoreContainer": "{{containerName}} visszaállítása",
+ "deleteDatabase": "{{databaseName}} törlése",
+ "deleteContainer": "{{containerName}} törlése",
+ "newSqlQuery": "Új SQL-lekérdezés",
+ "newQuery": "Új lekérdezés",
+ "openMongoShell": "Mongo-felület megnyitása",
+ "newShell": "Új felület",
+ "openCassandraShell": "Cassandra-felület megnyitása",
+ "newStoredProcedure": "Új tárolt eljárás",
+ "newUdf": "Új UDF",
+ "newTrigger": "Új eseményindító",
+ "deleteStoredProcedure": "Tárolt eljárás törlése",
+ "deleteTrigger": "Trigger törlése",
+ "deleteUdf": "Felhasználó által definiált függvény törlése"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Új elem",
+ "newDocument": "Új dokumentum",
+ "uploadItem": "Elem feltöltése",
+ "applyFilter": "Szűrő alkalmazása",
+ "unsavedChanges": "Nem mentett módosítások",
+ "unsavedChangesMessage": "A nem mentett módosítások elvesznek. Folytatja?",
+ "createDocumentFailed": "A dokumentum létrehozása nem sikerült",
+ "updateDocumentFailed": "A dokumentum frissítése nem sikerült",
+ "documentDeleted": "A dokumentum törlése sikerült.",
+ "deleteDocumentDialogTitle": "Dokumentum törlése",
+ "deleteDocumentsDialogTitle": "Dokumentumok törlése",
+ "throttlingError": "Néhány dokumentum törlése sebességkorlátozási hiba miatt nem sikerült. Próbálkozzon újra később. A jövőben a hasonló esetek elkerülése érdekében fontolja meg a tároló vagy az adatbázis átviteli sebességének növelését.",
+ "deleteFailed": "Nem sikerült törölni a dokumentum(oka)t ({{error}})",
+ "missingShardProperty": "A dokumentumból hiányzik a szegmens tulajdonság: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Nem sikerült frissíteni a dokumentumrácsot",
+ "confirmDelete": "Biztosan törli a következőt: {{documentName}}?",
+ "confirmDeleteTitle": "Törlés megerősítése",
+ "selectedItems": "a kijelölt {{count}} elemek",
+ "selectedItem": "a kijelölt elem",
+ "selectedDocuments": "a kijelölt {{count}} dokumentumok",
+ "selectedDocument": "a kijelölt dokumentum",
+ "deleteDocumentFailedLog": "Nem sikerült törölni a(z) {{statusCode}} állapotkóddal rendelkező {{documentId}} dokumentumot",
+ "deleteSuccessLog": "{{count}} dokumentum törlése sikerült",
+ "deleteThrottledLog": "Nem sikerült törölni {{count}} dokumentumot a „Túl nagy kérés” (429) hiba miatt. Újrapróbálkozás...",
+ "missingShardKeyLog": "Nem sikerült menteni az új dokumentumot: a dokumentum szegmenskulcsa nincs megadva",
+ "filterTooltip": "Írjon be egy lekérdezési predikátumot, vagy válasszon egyet a listából.",
+ "loadMore": "Továbbiak betöltése",
+ "documentEditor": "Dokumentumszerkesztő",
+ "savedFilters": "Mentett szűrők",
+ "defaultFilters": "Alapértelmezett szűrők",
+ "abort": "Megszakítás",
+ "deletingDocuments": "{{count}} dokumentum törlése",
+ "deletedDocumentsSuccess": "{{count}} dokumentum törlése sikerült.",
+ "deleteAborted": "A dokumentum(ok) törlése megszakadt.",
+ "failedToDeleteDocuments": "Nem sikerült törölni {{count}} dokumentumot.",
+ "requestTooLargeBase": "Néhány törlési kérés sikertelen volt a „Túl nagy kérés” kivétel (429) miatt",
+ "retriedSuccessfully": "de a rendszer sikeresen újrapróbálkozott.",
+ "retryingNow": "Újrapróbálkozás most.",
+ "increaseThroughputTip": "A jövőben a hasonló esetek elkerülése érdekében fontolja meg a tároló vagy az adatbázis átviteli sebességének növelését.",
+ "numberOfSelectedDocuments": "A kijelölt dokumentumok száma: {{count}}",
+ "mongoFilterPlaceholder": "Írjon be egy lekérdezési feltételt (pl. {\"id\":\"foo\"}), válasszon egyet a legördülő listából, vagy hagyja üresen az összes dokumentum lekérdezéséhez.",
+ "sqlFilterPlaceholder": "Írjon be egy lekérdezési feltételt (pl. WHERE c.id=\"1\"), válasszon egyet a legördülő listából, vagy hagyja üresen az összes dokumentum lekérdezéséhez.",
+ "error": "Hiba",
+ "warning": "Figyelmeztetés"
+ },
+ "query": {
+ "executeQuery": "Lekérdezés végrehajtása",
+ "executeSelection": "Kijelölés végrehajtása",
+ "saveQuery": "Lekérdezés mentése",
+ "downloadQuery": "Lekérdezés letöltése",
+ "cancelQuery": "Lekérdezés megszakítása",
+ "openSavedQueries": "Mentett lekérdezések megnyitása",
+ "vertical": "Ágazat",
+ "horizontal": "Vízszintes",
+ "view": "Megtekintés",
+ "editingQuery": "Lekérdezés szerkesztése"
+ },
+ "storedProcedure": {
+ "id": "Tárolt eljárás azonosítója",
+ "idPlaceholder": "Adja meg az új tárolt eljárás azonosítóját",
+ "idAriaLabel": "Tárolt eljárás azonosítója",
+ "body": "Tárolt eljárás törzse",
+ "bodyAriaLabel": "Tárolt eljárás törzse",
+ "successfulExecution": "A tárolt eljárás sikeres végrehajtása",
+ "resultAriaLabel": "Tárolt eljárás végrehajtásának eredménye",
+ "logsAriaLabel": "Tárolt eljárásnaplók végrehajtása",
+ "errors": "Hibák:",
+ "errorDetailsAriaLabel": "Hiba részleteinek hivatkozása",
+ "moreDetails": "További részletek",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Eseményindító azonosítója",
+ "idPlaceholder": "Adja meg az új eseményindító azonosítóját",
+ "type": "Eseményindító típusa",
+ "operation": "Triggerművelet",
+ "body": "Triggertörzs",
+ "bodyAriaLabel": "Eseményindító törzse",
+ "pre": "Előzetes",
+ "post": "Közzététel",
+ "all": "Az összes",
+ "operationCreate": "Létrehozás",
+ "operationDelete": "Törlés",
+ "operationReplace": "Lecserélés"
+ },
+ "udf": {
+ "id": "Felhasználó által meghatározott függvény azonosítója",
+ "idPlaceholder": "Adja meg az új, felhasználó által meghatározott függvény azonosítóját",
+ "body": "Felhasználó által meghatározott függvény törzse",
+ "bodyAriaLabel": "Felhasználó által meghatározott függvény törzse"
+ },
+ "conflicts": {
+ "unsavedChanges": "Nem mentett módosítások",
+ "changesWillBeLost": "Az összes módosítás elveszik. Folytatja?",
+ "resolveConflictFailed": "Az ütközés feloldása meghiúsult",
+ "deleteConflictFailed": "Az ütközés törlése nem sikerült",
+ "refreshGridFailed": "Nem sikerült frissíteni a dokumentumrácsot"
+ },
+ "mongoShell": {
+ "title": "Mongo-felület"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Mi a(z) {{databaseName}} törlésének oka?"
+ },
+ "deleteCollection": {
+ "panelTitle": "A(z) {{collectionName}} törlése",
+ "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!",
+ "feedbackReason": "Mi a(z) {{collectionName}} törlésének oka?"
+ },
+ "addDatabase": {
+ "databaseLabel": "{{suffix}} adatbázis",
+ "databaseIdLabel": "Adatbázis-azonosító",
+ "keyspaceIdLabel": "Kulcstér 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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}}-azonosító, {{collectionName}}1. példa",
+ "existingDatabaseAriaLabel": "Meglévő {{databaseName}}-azonosító kiválasztása",
+ "existingDatabasePlaceholder": "Meglévő {{databaseName}}-azonosító kiválasztása",
+ "indexing": "Indexelés",
+ "turnOnIndexing": "Indexelés bekapcsolása",
+ "automatic": "Automatikus",
+ "turnOffIndexing": "Indexelés kikapcsolása",
+ "off": "Ki",
+ "sharding": "Horizontális skálázás",
+ "shardingTooltip": "A horizontálisan skálázott gyűjtemények több replikakészletre (szegmensre) osztják fel az adatokat a korlátlan méretezhetőség érdekében. A horizontálisan skálázott gyűjtemények esetében ki kell választani egy szegmenskulcsot (mezőt) az adatok egyenletes elosztásához.",
+ "unsharded": "Horizontálisan nem skálázott",
+ "unshardedLabel": "Horizontálisan nem skálázott (20 GB-os korlát)",
+ "sharded": "Horizontálisan skálázott",
+ "addPartitionKey": "Hierarchikus partíciókulcs hozzáadása",
+ "hierarchicalPartitionKeyInfo": "Ez a funkció lehetővé teszi, hogy akár három kulcsszinttel particionálja az adatokat a jobb adatelosztás érdekében. A használatához .NET V3, Java V4 SDK vagy előzetes verziójú JavaScript V3 SDK szükséges.",
+ "provisionDedicatedThroughput": "Dedikált átviteli sebesség kiépítése ehhez: {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Opcionálisan dedikált átviteli sebességet is kioszthat egy {{collectionName}} elemhez egy kiépített átviteli sebességgel rendelkező adatbázison belül. Ez a dedikált átviteli sebesség-mennyiség nem lesz megosztva a kulcstér más {{collectionNamePlural}} elemeivel, és nem számít bele az adatbázis kiosztott átviteli sebességbe. Ezt az átviteli sebességet az adatbázis szintjén kiosztott átviteli sebességen felül számlázzuk.",
+ "uniqueKeysPlaceholderMongo": "Vesszővel elválasztott elérési utak, például firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Vesszővel elválasztott elérési utak, például /firstName,/address/zipCode",
+ "addUniqueKey": "Egyedi kulcs hozzáadása",
+ "enableAnalyticalStore": "Elemzési tár engedélyezése",
+ "disableAnalyticalStore": "Elemzési tár letiltása",
+ "on": "Be",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link szükséges a(z) {{collectionName}} elemzési tár létrehozásához. Engedélyezze a Synapse Link szolgáltatást ehhez a Cosmos DB fiókhoz.",
+ "enable": "Engedélyezés",
+ "containerVectorPolicy": "Tárolóvektor-házirend",
+ "containerFullTextSearchPolicy": "Tároló teljes szöveges keresési szabályzata",
+ "advanced": "Speciális",
+ "mongoIndexingTooltip": "Az _id mező alapértelmezés szerint indexelve van. Egy helyettesítő karakteres index létrehozása az összes mezőhöz optimalizálja a lekérdezéseket; ez ajánlott a fejlesztéshez.",
+ "createWildcardIndex": "Helyettesítő karakteres index létrehozása az összes mezőhöz",
+ "legacySdkCheckbox": "Az alkalmazásom egy régebbi Cosmos .NET- vagy Java SDK-verziót (.NET V1 vagy Java V2) használ",
+ "legacySdkInfo": "A régebbi SDK-kkal való kompatibilitás biztosítása érdekében a létrehozott tároló egy örökölt particionálási sémát fog használni, amely legfeljebb 101 bájt méretű partíciókulcs-értékeket támogat. Ha ez engedélyezve van, nem használhat hierarchikus partíciókulcsokat.",
+ "indexingOnInfo": "A dokumentumok összes tulajdonsága alapértelmezés szerint indexelve lesz a rugalmas és hatékony lekérdezések érdekében.",
+ "indexingOffInfo": "Az indexelés ki lesz kapcsolva. Akkor ajánlott, ha nem kell lekérdezéseket futtatnia, vagy csak kulcsérték-műveletekkel rendelkezik.",
+ "indexingOffWarning": "Ha úgy hozza létre ezt a tárolót, hogy az indexelés ki van kapcsolva, nem fogja tudni módosítani az indexelési szabályzatot. Az indexelési módosítások csak indexelési szabályzattal rendelkező tárolókon engedélyezettek.",
+ "acknowledgeSpendErrorMonthly": "Nyugtázza a becsült havi ráfordítást.",
+ "acknowledgeSpendErrorDaily": "Nyugtázza a becsült napi ráfordítást.",
+ "unshardedMaxRuError": "A horizontálisan nem skálázott gyűjtemények legfeljebb 10 000 kérelemegységet támogatnak",
+ "acknowledgeShareThroughputError": "Nyugtázza a dedikált átviteli sebesség becsült költségét.",
+ "vectorPolicyError": "Javítsa ki a tároló vektorházirendjének hibáit",
+ "fullTextSearchPolicyError": "Javítsa ki a tároló teljes szöveges keresési szabályzatának hibáit",
+ "addingSampleDataSet": "Mintaadatkészlet hozzáadása",
+ "databaseFieldLabelName": "Adatbázis neve",
+ "databaseFieldLabelId": "Adatbázis-azonosító",
+ "newDatabaseIdPlaceholder": "Írjon be egy új adatbázis-azonosítót",
+ "newDatabaseIdAriaLabel": "Új adatbázis-azonosító, új adatbázis-azonosító beírása",
+ "createNewDatabaseAriaLabel": "Új adatbázis létrehozása",
+ "useExistingDatabaseAriaLabel": "Meglévő adatbázis használata",
+ "chooseExistingDatabase": "Meglévő adatbázis kiválasztása",
+ "teachingBubble": {
+ "step1Headline": "Mintaadatbázis létrehozása",
+ "step1Body": "Az adatbázis a tároló szülője. Létrehozhat egy új adatbázist, vagy használhat egy meglévőt. Ebben az oktatóanyagban egy új, SampleDB nevű adatbázist hozunk létre.",
+ "step1LearnMore": "További információ az erőforrásokról.",
+ "step2Headline": "Átviteli sebesség beállítása",
+ "step2Body": "Cosmos DB azt javasolja, hogy ossza meg az átviteli sebességet az adatbázisok között. Az automatikus skálázás rugalmas átviteli sebességet biztosít a maximális RU/s készlet (kérelemegység) alapján.",
+ "step2LearnMore": "További információ a RU/mp értékről.",
+ "step3Headline": "Tároló elnevezése",
+ "step3Body": "Nevezze el a tárolót",
+ "step4Headline": "Partíciókulcs beállítása:",
+ "step4Body": "Utolsó lépés – meg kell határoznia egy partíciókulcsot a gyűjteményhez. Ehhez a példához a /address lett kiválasztva. Egy jó partíciókulcsnak számos lehetséges értékkel kell rendelkeznie",
+ "step4CreateContainer": "Tároló létrehozása",
+ "step5Headline": "Mintatároló létrehozása",
+ "step5Body": "Most létrehozunk egy mintatárolót, és felveszünk bele mintaadatokat Önnek. Ez körülbelül 1 percet vesz igénybe.",
+ "step5BodyFollowUp": "A mintatároló létrehozása után tekintse át a mintaadatkészletet, majd kövesse a következő lépéseket",
+ "stepOfTotal": "{{current}}/{{total}}. lépés"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "A szegmenskulcs (mező) az adatok több replikakészletre (szegmensre) való felosztására szolgál a korlátlan méretezhetőség érdekében. Kritikus fontosságú olyan mezőt választani, amely egyenletesen osztja el az adatokat.",
+ "partitionKeyTooltip": "A(z) {{partitionKeyName}} automatikusan elosztja az adatokat a partíciók között a méretezhetőség érdekében. Válasszon egy olyan tulajdonságot a JSON-dokumentumban, amely számos értékkel rendelkezik, és egyenletesen osztja el a kérések mennyiségét.",
+ "partitionKeyTooltipSqlSuffix": " A kisméretű olvasásigényes, vagy bármilyen méretű írásigényes számítási feladatok esetében az azonosító gyakran jó választás.",
+ "shardKeyLabel": "Szegmenskulcs",
+ "partitionKeyLabel": "Partíciókulcs",
+ "shardKeyPlaceholder": "például categoryId",
+ "partitionKeyPlaceholderDefault": "például /address",
+ "partitionKeyPlaceholderFirst": "Kötelező – első partíciókulcs, például /TenantId",
+ "partitionKeyPlaceholderSecond": "második partíciókulcs, például /UserId",
+ "partitionKeyPlaceholderThird": "harmadik partíciókulcs, például /SessionId",
+ "partitionKeyPlaceholderGraph": "például, /address/zipCode",
+ "uniqueKeysTooltip": "Az egyedi kulcsok lehetővé teszik a fejlesztők számára, hogy adatintegritási réteget adjanak az adatbázisukhoz. Egy tároló létrehozásakor egy egyedi kulcsszabályzat létrehozásával biztosítja egy vagy több érték egyediségét partíciókulcsonként.",
+ "uniqueKeysLabel": "Egyedi kulcsok",
+ "analyticalStoreLabel": "Elemzési tár",
+ "analyticalStoreTooltip": "Engedélyezze az elemzési tár képességet, hogy közel valós idejű elemzéseket végezhessen az operatív adatokon anélkül, hogy az hatással lenne a tranzakciós számítási feladatok teljesítményére.",
+ "analyticalStoreDescription": "Engedélyezze az elemzési tár képességet, hogy közel valós idejű elemzéseket végezhessen az operatív adatokon anélkül, hogy az hatással lenne a tranzakciós számítási feladatok teljesítményére.",
+ "vectorPolicyTooltip": "Ismertesse az adataiban a vektorokat tartalmazó tulajdonságokat, hogy elérhetővé lehessen tenni azokat hasonlósági lekérdezésekhez."
+ },
+ "settings": {
+ "pageOptions": "Lapbeállítások",
+ "pageOptionsDescription": "Válassza az Egyéni lehetőséget a megjelenítendő lekérdezési eredmények rögzített mennyiségének megadásához, vagy válassza a Korlátlan lehetőséget, ha oldalanként annyi lekérdezési eredményt szeretne megjeleníteni.",
+ "queryResultsPerPage": "Lekérdezési eredmények oldalanként",
+ "queryResultsPerPageTooltip": "Adja meg az oldalanként megjelenítendő lekérdezési eredmények számát.",
+ "customQueryItemsPerPage": "Egyéni lekérdezéselemek oldalanként",
+ "custom": "Egyéni",
+ "unlimited": "Korlátlan",
+ "entraIdRbac": "Entra ID RBAC engedélyezése",
+ "entraIdRbacDescription": "Válassza az Automatikus lehetőséget az Entra ID RBAC automatikus engedélyezéséhez. Igaz/Hamis az Entra ID RBAC engedélyezésének/letiltásának kényszerítéséhez.",
+ "true": "Igaz",
+ "false": "Hamis",
+ "regionSelection": "Régió kiválasztása",
+ "regionSelectionDescription": "A Cosmos-ügyfél által a fiók eléréséhez használt régiót módosítja.",
+ "selectRegion": "Régió kiválasztása",
+ "selectRegionTooltip": "Módosítja az ügyfélműveletek végrehajtásához használt fiókvégpontot.",
+ "globalDefault": "Globális (alapértelmezett)",
+ "readWrite": "(Olvasás/írás)",
+ "read": "(Olvasás)",
+ "queryTimeout": "Lekérdezés időkorlátja",
+ "queryTimeoutDescription": "Ha egy lekérdezés eléri a megadott időkorlátot, megjelenik egy, a lekérdezés megszakítására szolgáló előugró ablak, kivéve, ha engedélyezve van az automatikus megszakítás.",
+ "enableQueryTimeout": "Lekérdezés időtúllépésének engedélyezése",
+ "queryTimeoutMs": "Lekérdezés időkorlátja (ms)",
+ "automaticallyCancelQuery": "Lekérdezés automatikus megszakítása időtúllépés után",
+ "ruLimit": "RU-korlát",
+ "ruLimitDescription": "Ha egy lekérdezés túllépi a konfigurált RU-korlátot, a rendszer megszakítja a lekérdezést.",
+ "enableRuLimit": "RU-korlát bekapcsolása",
+ "ruLimitLabel": "RU-korlát (RU)",
+ "defaultQueryResults": "Lekérdezési eredmények alapértelmezett nézete",
+ "defaultQueryResultsDescription": "Válassza ki a lekérdezés eredményeinek megjelenítésekor használandó alapértelmezett nézetet.",
+ "retrySettings": "Ismétlések beállításai",
+ "retrySettingsDescription": "Szabályozott kérelmekhez társított újrapróbálkozási szabályzat a CosmosDB-lekérdezések során.",
+ "maxRetryAttempts": "Újrapróbálkozások maximális száma",
+ "maxRetryAttemptsTooltip": "A kérelmekhez végrehajtandó újrapróbálkozások maximális száma. Alapértelmezett érték: 9.",
+ "fixedRetryInterval": "Rögzített újrapróbálkozási időköz (ms)",
+ "fixedRetryIntervalTooltip": "Kijavítottuk az egyes újrapróbálkozások közötti várakozáshoz ezredmásodpercben megadott újrapróbálkozási időközt amely, figyelmen kívül hagyta a válasz részeként visszaadott retryAfter értéket. Az alapértelmezett érték 0 ezredmásodperc.",
+ "maxWaitTime": "Maximális várakozási idő (s)",
+ "maxWaitTimeTooltip": "Maximális várakozási idő másodpercben, amíg a rendszer egy kérelemre várakozik, amíg az újrapróbálkozások történnek. Alapértelmezett érték: 30 másodperc.",
+ "enableContainerPagination": "Tároló oldalakra tördelésének engedélyezése",
+ "enableContainerPaginationDescription": "Egyszerre 50 tároló betöltése. A tárolók lekérése jelenleg nem alfanumerikus sorrendben történik.",
+ "enableCrossPartitionQuery": "Partíciók közötti lekérdezés engedélyezése",
+ "enableCrossPartitionQueryDescription": "Lekérdezés végrehajtása során több kérés is küldhető. Egynél több kérésre van szükség, ha a lekérdezés hatóköre nincs egyetlen partíciókulcs-értékre korlátozva.",
+ "maxDegreeOfParallelism": "Párhuzamosság maximális foka",
+ "maxDegreeOfParallelismDescription": "Lekérdezi vagy beállítja az egyidejűleg futtatott műveletek számát az ügyféloldalon a párhuzamos lekérdezés-végrehajtás során. A pozitív tulajdonságérték az egyidejű műveletek számát a beállított értékre korlátozza. Ha 0-nál kisebb értékre van állítva, a rendszer automatikusan eldönti az egyidejű futtatandó műveletek számát.",
+ "maxDegreeOfParallelismQuery": "Lekérdezés a párhuzamosság maximális mértékéig.",
+ "priorityLevel": "Prioritásszint",
+ "priorityLevelDescription": "Beállítja a prioritási szintet a Data Explorerből érkező adatsík-kérelmekhez prioritásalapú végrehajtás használatakor. Ha a Nincs érték van kiválasztva, a Data Explorer nem adja meg a prioritási szintet, és a kiszolgálóoldali alapértelmezett prioritási szintet fogja használni.",
+ "displayGremlinQueryResults": "Gremlin-lekérdezés eredményeinek megjelenítése a következőként:",
+ "displayGremlinQueryResultsDescription": "Válassza a Graph lehetőséget a lekérdezés eredményeinek automatikusan gráfként, vagy a JSON lehetőséget JSON-ként való megjelenítéséhez.",
+ "graph": "Gráf",
+ "json": "JSON",
+ "graphAutoVisualization": "Gráf automatikus vizualizációja",
+ "enableSampleDatabase": "Mintaadatbázis engedélyezése",
+ "enableSampleDatabaseDescription": "Ez egy mintaadatbázis és -gyűjtemény szintetikus termékadatokkal, amelyeket NoSQL-lekérdezésekkel való felderítésre használhat. Ez egy másik adatbázisként jelenik meg a Data Explorer felhasználói felületén, amelyet a Microsoft hoz létre és tart karban díjmentesen.",
+ "enableSampleDbAriaLabel": "Mintaadatbázis engedélyezése a lekérdezések feltárásához",
+ "guidRepresentation": "GUID-ábrázolás",
+ "guidRepresentationDescription": "A MongoDB GuidRepresentation tulajdonsága arra utal, hogy a globálisan egyedi azonosítók (GUID-ok) szerializálása és deszerializálása hogyan történik BSON-dokumentumokban való tárolás esetén. Ez minden dokumentumműveletre érvényes lesz.",
+ "advancedSettings": "Speciális beállítások",
+ "ignorePartitionKey": "Partíciókulcs figyelmen kívül hagyása a dokumentum frissítésekor",
+ "ignorePartitionKeyTooltip": "Ha be van jelölve, a rendszer nem használja a partíciókulcs értékét a dokumentum megkereséséhez a frissítési műveletek során. Csak akkor használja, ha a dokumentumfrissítések rendellenes partíciókulcs miatt meghiúsulnak.",
+ "clearHistory": "Előzmények törlése",
+ "clearHistoryConfirm": "Biztosan folytatja?",
+ "clearHistoryDescription": "Ez a művelet törli a fiók összes testreszabását ebben a böngészőben, beleértve a következőket:",
+ "clearHistoryTabLayout": "A testre szabott lapelrendezés alaphelyzetbe állítása, beleértve az elválasztóhelyeket is",
+ "clearHistoryTableColumns": "A táblázat oszlopbeállításainak törlése, beleértve az egyéni oszlopokat is",
+ "clearHistoryFilters": "Szűrőelőzmények törlése",
+ "clearHistoryRegion": "Régiókiválasztás visszaállítása globálisra",
+ "increaseValueBy1000": "Érték növelése 1000-rel",
+ "decreaseValueBy1000": "Érték csökkentése 1000-rel",
+ "none": "Nincs",
+ "low": "Alacsony",
+ "high": "Magas",
+ "automatic": "Automatikus",
+ "enhancedQueryControl": "Továbbfejlesztett lekérdezésvezérlő",
+ "enableQueryControl": "Lekérdezésvezérlő engedélyezése",
+ "explorerVersion": "Explorer verziója",
+ "accountId": "Fiókazonosító",
+ "sessionId": "Munkamenet-azonosító",
+ "popupsDisabledError": "Nem sikerült hitelesítést létrehozni ehhez a fiókhoz, mert a böngészőben le vannak tiltva az előugró ablakok.\nEngedélyezze az előugró ablakokat ehhez a webhelyhez, majd kattintson az Entra ID bejelentkezés gombra",
+ "failedToAcquireTokenError": "Nem sikerült automatikusan beszerezni az engedélyezési jogkivonatot. Kattintson az Entra ID bejelentkezés gombra az Entra ID RBAC-műveletek engedélyezéséhez"
+ },
+ "saveQuery": {
+ "panelTitle": "Lekérdezés mentése",
+ "setupCostMessage": "Megfelelőségi okokból a lekérdezéseket egy tárolóba mentjük az Azure Cosmos-fiókjában, egy különálló, {{databaseName}} nevű adatbázisban. A folytatáshoz létre kell hoznunk egy tárolót a fiókjában. A becsült további költség naponta 0,77 USD.",
+ "completeSetup": "Beállítás befejezése",
+ "noQueryNameError": "Nincs megadva lekérdezésnév",
+ "invalidQueryContentError": "Érvénytelen lekérdezési tartalom megadva",
+ "failedToSaveQueryError": "A(z) {{queryName}} lekérdezés mentése nem sikerült",
+ "failedToSetupContainerError": "Nem sikerült beállítani tárolót a mentett lekérdezésekhez",
+ "accountNotSetupError": "Nem sikerült menteni a lekérdezést: a fiók nincs beállítva a lekérdezések mentéséhez",
+ "name": "Név"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nincs megadva fájl",
+ "failedToLoadQueryError": "Nem sikerült betölteni a lekérdezést",
+ "failedToLoadQueryFromFileError": "Nem sikerült betölteni a lekérdezést (z) {{fileName}} fájlból",
+ "selectFilesToOpen": "Lekérdezési dokumentum kiválasztása",
+ "browseFiles": "Tallózás"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Adja meg a bemeneti paramétereket (ha vannak ilyenek)",
+ "key": "Kulcs",
+ "param": "Paraméter",
+ "partitionKeyValue": "Partíciókulcs értéke",
+ "value": "Érték",
+ "addNewParam": "Új paraméter hozzáadása",
+ "addParam": "Paraméter hozzáadása",
+ "deleteParam": "Paraméter törlése",
+ "invalidParamError": "Érvénytelen paraméter megadva: {{invalidParam}}",
+ "invalidParamConsoleError": "Érvénytelen paraméter megadva: a(z) {{invalidParam}} nem érvényes konstansérték",
+ "stringType": "Sztring",
+ "customType": "Egyéni"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Nincs megadva fájl. Adjon meg legalább egy fájlt.",
+ "selectJsonFiles": "JSON-fájlok kiválasztása",
+ "selectJsonFilesTooltip": "Jelöljön ki egy vagy több feltöltendő JSON-fájlt. Minden fájl egyetlen JSON-dokumentumot vagy egy JSON-dokumentumtömböt tartalmazhat. Az egyes feltöltési műveletek összes fájljának összesített méretének 2 MB alatt kell lennie. Nagyobb adatkészletek esetében több feltöltési műveletet is végrehajthat.",
+ "fileNameColumn": "FÁJLNÉV",
+ "statusColumn": "ÁLLAPOT",
+ "uploadStatus": "{{numSucceeded}} létrehozva, {{numThrottled}} szabályozva, {{numFailed}} hiba",
+ "uploadedFiles": "Feltöltött fájlok"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Nem sikerült a(z) {{name}} másolása ide: {{destination}}",
+ "uploadFailedError": "Nem sikerült a(z) {{name}} feltöltése",
+ "location": "Hely",
+ "locationAriaLabel": "Hely",
+ "selectLocation": "Jegyzetfüzet másolási helyének kiválasztása",
+ "name": "Név"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Nem sikerült a(z) {{notebookName}} közzététele a katalógusban",
+ "publishDescription": "Közzétételkor ez a jegyzetfüzet megjelenik a Azure Cosmos DB jegyzetfüzetek nyilvános katalógusában. A közzététel előtt győződjön meg arról, hogy eltávolította a bizalmas adatokat vagy kimeneteket.",
+ "publishPrompt": "Közzéteszi és megosztja a(z) {{name}} dokumentumot a katalógusban?",
+ "coverImage": "Borítókép",
+ "coverImageUrl": "Borítókép URL-címe",
+ "name": "Név",
+ "description": "Leírás",
+ "tags": "Címkék",
+ "tagsPlaceholder": "Nem kötelező címke 1, nem kötelező címke 2",
+ "preview": "Előzetes verzió",
+ "urlType": "URL-cím",
+ "customImage": "Egyéni rendszerkép",
+ "takeScreenshot": "Képernyőkép készítése",
+ "useFirstDisplayOutput": "Első megjelenítési kimenet használata",
+ "failedToCaptureOutput": "Nem sikerült rögzíteni az első kimenetet",
+ "outputDoesNotExist": "A kimenet nem létezik egyik cellához sem.",
+ "failedToConvertError": "Nem sikerült a(z) {{fileName}} base64 formátumra való konvertálása",
+ "failedToUploadError": "Nem sikerült a(z) {{fileName}} feltöltése"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Nem sikerült elindítani az adatátviteli feladatot",
+ "suboptimalPartitionKeyError": "Figyelmeztetés: A rendszer úgy észlelte, hogy a gyűjtemény valószínűleg nem optimális partíciókulcsot használ",
+ "description": "A tároló partíciókulcsának módosításakor létre kell hoznia egy céltárolót a megfelelő partíciókulccsal. Kiválaszthat egy meglévő céltárolót is.",
+ "sourceContainerId": "Forrás {{collectionName}}-azonosítója",
+ "destinationContainerId": "Cél {{collectionName}}-azonosítója",
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}}-azonosító, {{collectionName}}1. példa",
+ "existingContainers": "Meglévő tárolók",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Tulajdonság hozzáadása",
+ "addRow": "Sor hozzáadása",
+ "addEntity": "Entitás hozzáadása",
+ "back": "vissza",
+ "nullFieldsWarning": "Figyelmeztetés: A null értékű mezők nem jelennek meg szerkesztésre.",
+ "propertyEmptyError": "A(z) {{property}} nem lehet üres. Adjon meg egy értéket a(z) {{property}} tulajdonsághoz",
+ "whitespaceError": "a(z) {{property}} nem rendelkezhet szóközzel. Adjon meg egy szóköz nélküli értéket a(z) {{property}} számára",
+ "propertyTypeEmptyError": "A tulajdonságtípus nem lehet üres. Válasszon típust a(z) {{property}}tulajdonság legördülő listájából"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Válassza ki a lekérdezni kívánt oszlopokat.",
+ "availableColumns": "Elérhető oszlopok"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Válassza ki, hogy mely oszlopok jelenjenek meg a tároló elemeinek nézetében.",
+ "searchFields": "Mezők keresése",
+ "reset": "Alaphelyzetbe állítás",
+ "partitionKeySuffix": " (partíciókulcs)"
+ },
+ "newVertex": {
+ "addProperty": "Tulajdonság hozzáadása"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Globális másodlagos index tárolóazonosítója",
+ "globalSecondaryIndexIdPlaceholder": "például indexbyEmailId",
+ "projectionQuery": "Leképezési lekérdezés",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "További információ a globális másodlagos indexek definiálásáról.",
+ "disabledTitle": "Már folyamatban van egy globális másodlagos index létrehozása. Várja meg, amíg befejeződik, mielőtt egy másikat hozna létre."
+ },
+ "stringInput": {
+ "inputMismatchError": "A(z) {{input}} bemenet nem egyezik a kijelölt {{selectedId}} értékével"
+ },
+ "panelInfo": {
+ "information": "Információ",
+ "moreDetails": "További részletek"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Skálázás",
+ "conflictResolution": "Ütközésfeloldás",
+ "settings": "Beállítások",
+ "indexingPolicy": "Indexelési szabályzat",
+ "partitionKeys": "Partíciókulcsok",
+ "partitionKeysPreview": "Partíciókulcsok (előzetes verzió)",
+ "computedProperties": "Számított tulajdonságok",
+ "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ó)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Válasszon típust az egyes indexekhez.",
+ "enterFieldNameError": "Adjon meg egy mezőnevet.",
+ "wildcardPathError": "A helyettesítő karakteres elérési út nem szerepel a mezőnévben. A következőhöz hasonló mintát használjon: "
+ },
+ "partitionKey": {
+ "shardKey": "Szegmenskulcs",
+ "partitionKey": "Partíciókulcs",
+ "shardKeyTooltip": "A szegmenskulcs (mező) az adatok több replikakészletre (szegmensre) való felosztására szolgál a korlátlan méretezhetőség érdekében. Kritikus fontosságú olyan mezőt választani, amely egyenletesen osztja el az adatokat.",
+ "partitionKeyTooltip": "automatikusan elosztja az adatokat a partíciók között a méretezhetőség érdekében. Válasszon egy olyan tulajdonságot a JSON-dokumentumban, amely számos értékkel rendelkezik, és egyenletesen osztja el a kérések mennyiségét.",
+ "sqlPartitionKeyTooltipSuffix": " A kisméretű olvasásigényes, vagy bármilyen méretű írásigényes számítási feladatok esetében az azonosító gyakran jó választás.",
+ "partitionKeySubtext": "Kisebb számítási feladatok esetén az elemazonosító megfelelő választás a partíciókulcsnak.",
+ "mongoPlaceholder": "például categoryId",
+ "gremlinPlaceholder": "például /address",
+ "sqlFirstPartitionKey": "Kötelező – első partíciókulcs, például /TenantId",
+ "sqlSecondPartitionKey": "második partíciókulcs, például /UserId",
+ "sqlThirdPartitionKey": "harmadik partíciókulcs, például /SessionId",
+ "defaultPlaceholder": "például, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Költségbecslés*",
+ "howWeCalculate": "Hogyan számítjuk ki ezt",
+ "updatedCostPerMonth": "Frissített havi költség",
+ "currentCostPerMonth": "Aktuális havi költség",
+ "perRu": "/RU",
+ "perHour": "/óra",
+ "perDay": "/nap",
+ "perMonth": "/hó"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Az automatikus skálázás kezdő maximális RU/s értékét a rendszer határozza meg az erőforrás aktuális manuális átviteli sebességbeállításai és tárterülete alapján. Az automatikus skálázás engedélyezése után módosíthatja a maximális RU/s értékét.",
+ "ttlWarningText": "A rendszer automatikusan töröl elemeket a megadott TTL-érték alapján (másodpercben) anélkül, hogy egy ügyfélalkalmazás által explicit módon kiadott törlési műveletet kellene végrehajtania. További információért lásd:",
+ "ttlWarningLinkText": "Élettartam (TTL) az Azure Cosmos DB-ben",
+ "unsavedIndexingPolicy": "indexelési házirend",
+ "unsavedDataMaskingPolicy": "adatmaszkolási házirend",
+ "unsavedComputedProperties": "számított tulajdonságok",
+ "unsavedEditorWarningPrefix": "Nem mentette a legutóbbi módosításokat itt:",
+ "unsavedEditorWarningSuffix": ". A módosítás megerősítéséhez kattintson a Mentés gombra.",
+ "updateDelayedApplyWarning": "Az előre lefoglalt kapacitáson túli átviteli sebességnövelését készül kérni. A művelet végrehajtása hosszabb időt vesz igénybe.",
+ "scalingUpDelayMessage": "A vertikális felskálázás 4–6 órát vesz igénybe, mivel meghaladja az Azure Cosmos DB által jelenleg azonnal támogathatót a fizikai partíciók száma alapján. Azonnal növelheti {{instantMaximumThroughput}} értékre az átviteli sebességet, vagy folytathatja ezzel az értékkel és megvárhatja, amíg a vertikális felskálázás befejeződik.",
+ "exceedPreAllocatedMessage": "Az átviteli sebesség növelésére irányuló kérelme meghaladja az előre lefoglalt kapacitást, ami a vártnál hosszabb időt vehet igénybe. A folytatáshoz három lehetőség közül választhat:",
+ "instantScaleOption": "Azonnal felskálázhat {{instantMaximumThroughput}} RU/s-ra.",
+ "asyncScaleOption": "Aszinkron módon bármilyen értékre felskálázhat {{maximumThroughput}} RU/s alatt 4–6 óra alatt.",
+ "quotaMaxOption": "Az aktuális kvóta maximuma {{maximumThroughput}} RU/s. A korlát túllépéséhez kvótanövelést kell kérnie, amelyet az Azure Cosmos DB csapata áttekinti.",
+ "belowMinimumMessage": "Az átviteli sebesség nem csökkenthető az aktuális minimális {{minimum}} RU/s érték alá. A korláttal kapcsolatos további információért tekintse meg a szolgáltatás ajánlati dokumentációját.",
+ "saveThroughputWarning": "Az átviteli sebesség beállításainak frissítése hatással lesz a számlájára. A módosítások mentése előtt tekintse át az alábbi frissített költségbecslést",
+ "currentAutoscaleThroughput": "Aktuális automatikus skálázási átviteli sebesség:",
+ "targetAutoscaleThroughput": "Cél automatikus skálázási átviteli sebesség:",
+ "currentManualThroughput": "Aktuális manuális átviteli sebesség:",
+ "targetManualThroughput": "Cél manuális átviteli sebesség:",
+ "applyDelayedMessage": "Az átviteli sebesség növelésére irányuló kérelem sikeresen elküldve. A művelet végrehajtása 1–3 munkanapot vesz igénybe. Tekintse meg a legújabb állapotot az Értesítések területen.",
+ "databaseLabel": "Adatbázis:",
+ "containerLabel": "Tároló:",
+ "applyShortDelayMessage": "Az átviteli sebesség növelésére irányuló kérelem jelenleg folyamatban van. A művelet végrehajtása hosszabb időt vesz igénybe.",
+ "applyLongDelayMessage": "Az átviteli sebesség növelésére irányuló kérelem jelenleg folyamatban van. A művelet végrehajtása 1–3 munkanapot vesz igénybe. Tekintse meg a legújabb állapotot az Értesítések területen.",
+ "throughputCapError": "Fiókja jelenleg{{throughputCap}} RU/s teljes átviteli sebességkorláttal van konfigurálva. Ez a frissítés nem lehetséges, mert a teljes átviteli sebességet {{newTotalThroughput}} RU/s értékre növelné. Módosítsa a teljes átviteli sebesség korlátját az Azure Cost Managementben.",
+ "throughputIncrementError": "Az átviteli sebesség értékének 1000-es növekményekben kell lennie"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Utolsó írás győz (alapértelmezett)",
+ "customMergeProcedure": "Egyesítési eljárás (egyéni)",
+ "mode": "Mód",
+ "conflictResolverProperty": "Ütközésfeloldó tulajdonság",
+ "storedProcedure": "Tárolt eljárás",
+ "lwwTooltip": "Lekérdezi vagy beállítja a dokumentumokban az utolsó írás győz (LWW) alapú ütközésfeloldási sémához használt egész szám típusú tulajdonság nevét. Alapértelmezés szerint a rendszer a rendszer által definiált timestamp (_ts) tulajdonságot használja a dokumentum ütköző verziói nyertesének kiválasztásához. Adja meg a saját egész szám típusú tulajdonságát, ha felül szeretné bírálni az alapértelmezett időbélyeg-alapú ütközésfeloldást.",
+ "customTooltip": "Lekérdezi vagy beállítja egy tárolt eljárás (más néven egyesítési eljárás) nevét az ütközések feloldásához. Írhat alkalmazás által definiált logikát a dokumentum ütköző verziói közül a nyertes meghatározására. A tárolt eljárás tranzakcionálisan, pontosan egyszer lesz végrehajtva kiszolgálói oldalon. Ha nem ad meg tárolt eljárást, az ütközések bekerülnek a",
+ "customTooltipConflictsFeed": " ütköző hírcsatorna",
+ "customTooltipSuffix": ". A tárolt eljárást bármikor frissítheti vagy újra regisztrálhatja."
+ },
+ "changeFeed": {
+ "label": "Változáscsatorna-napló adatmegőrzési házirendje",
+ "tooltip": "Engedélyezze a változáscsatorna naplómegőrzési szabályzatát, hogy alapértelmezés szerint megőrizze a tárolóban lévő elemek utolsó 10 percnyi előzményeit. Ennek támogatása érdekében a tároló kérelemegységének (RU) díja kettes tényezővel meg lesz szorozva az írások esetében. Az olvasásokra nincs hatással."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Több tulajdonságra szűrő lekérdezések esetén összetett index helyett hozzon létre több egymezős indexet.",
+ "disclaimerCompoundIndexesLink": " Összetett indexek ",
+ "disclaimerSuffix": "csak a lekérdezési eredmények rendezésére szolgál. Ha összetett indexet kell hozzáadnia, a Mongo-felület használatával hozhat létre egyet.",
+ "compoundNotSupported": "Az összetett indexekkel rendelkező gyűjtemények még nem támogatottak az indexelőszerkesztőben. A gyűjtemény indexelési házirendjének módosításához használja a Mongo-felületet.",
+ "aadError": "Az indexelési házirendszerkesztő használatához jelentkezzen be:",
+ "aadErrorLink": "Azure Portal.",
+ "refreshingProgress": "Az indexátalakítási folyamat frissítése",
+ "canMakeMoreChangesZero": "Az aktuális indexátalakítás befejezése után további indexelési módosításokat is végezhet. ",
+ "refreshToCheck": "Frissítsen annak ellenőrzéséhez, hogy befejeződött-e.",
+ "canMakeMoreChangesProgress": "Az aktuális indexátalakítás befejezése után további indexelési módosításokat is végezhet. {{progress}}% kész. ",
+ "refreshToCheckProgress": "Frissítsen az állapot ellenőrzéséhez.",
+ "definitionColumn": "Definíció",
+ "typeColumn": "Típus",
+ "dropIndexColumn": "Index elvetése",
+ "addIndexBackColumn": "Index visszaadása",
+ "deleteIndexButton": "Index törlése gomb",
+ "addBackIndexButton": "Index visszaadása gomb",
+ "currentIndexes": "Aktuális index(ek)",
+ "indexesToBeDropped": "Eldobandó index(ek)",
+ "indexFieldName": "Indexmező neve",
+ "indexType": "Index típusa",
+ "selectIndexType": "Indextípus kiválasztása",
+ "undoButton": "Visszavonás gomb"
+ },
+ "subSettings": {
+ "timeToLive": "Élettartam",
+ "ttlOff": "Ki",
+ "ttlOnNoDefault": "Bekapcsolva (nincs alapértelmezett érték)",
+ "ttlOn": "Be",
+ "seconds": "másodperc",
+ "timeToLiveInSeconds": "Az élettartam másodpercben megadva",
+ "analyticalStorageTtl": "Elemzési tár élettartama",
+ "geospatialConfiguration": "Térinformatikai konfiguráció",
+ "geography": "Földrajzi hely",
+ "geometry": "Geometria",
+ "uniqueKeys": "Egyedi kulcsok",
+ "mongoTtlMessage": "Az élettartam (TTL) engedélyezéséhez a gyűjteményhez/dokumentumokhoz",
+ "mongoTtlLinkText": "TTL-index létrehozása",
+ "partitionKeyTooltipTemplate": "Ez a(z) {{partitionKeyName}} az adatok több partíció közötti elosztására szolgál a skálázhatóság érdekében. A(z) {{partitionKeyValue}} érték határozza meg a dokumentumok particionálásának módját.",
+ "largePartitionKeyEnabled": "A nagyméretű {{partitionKeyName}} engedélyezve.",
+ "hierarchicalPartitioned": "Hierarchikusan particionált tároló.",
+ "nonHierarchicalPartitioned": "Nem hierarchikusan particionált tároló."
+ },
+ "scale": {
+ "freeTierInfo": "Az ingyenes szinttel ingyenesen kapja az első {{ru}} RU/s-t és {{storage}} GB tárterületet ebben a fiókban. A fiók ingyenességének megőrzéséhez tartsa meg fiók összes erőforrásának RU/s mennyiségét {{ru}} RU/s értéken.",
+ "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",
+ "throughputRangeLabel": "Átviteli sebesség ({{min}}-{{max}} RU/mp)",
+ "unlimited": "korlátlan"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "{{partitionKeyName}} módosítása",
+ "currentPartitionKey": "Aktuális {{partitionKeyName}}",
+ "partitioning": "Particionálás",
+ "hierarchical": "Hierarchikus",
+ "nonHierarchical": "Nem hierarchikus",
+ "safeguardWarning": "Az új tárolóba másolt adatok integritásának védelme érdekében győződjön meg arról, hogy a partíciókulcs-módosítási folyamat teljes időtartama alatt nem történik frissítés a forrástárolón.",
+ "changeDescription": "A partíciókulcs módosításához létre kell hozni egy új céltárolót, vagy ki kell választani egy meglévő céltárolót. Az adatok ezután át lesznek másolva a céltárolóba.",
+ "changeButton": "Módosítás",
+ "changeJob": "{{partitionKeyName}} feladat módosítása",
+ "cancelButton": "Mégse",
+ "documentsProcessed": "({{processedCount}}/{{totalCount}} dokumentum feldolgozva)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Számított tulajdonságok",
+ "learnMorePrefix": "a számított tulajdonságok definiálásáról és azok használatáról."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Indexelési szabályzat"
+ },
+ "dataMasking": {
+ "ariaLabel": "Adatmaszkolási házirend",
+ "validationFailed": "Sikertelen ellenőrzés:",
+ "includedPathsRequired": "Az includedPaths megadása kötelező",
+ "includedPathsMustBeArray": "Az includedPaths paraméternek tömbnek kell lennie",
+ "excludedPathsMustBeArray": "Az excludedPaths paraméternek tömbnek kell lennie, ha meg van adva"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vektorszabályzat",
+ "fullTextPolicy": "Teljes szöveges házirend",
+ "createFullTextPolicy": "Új teljes szöveges keresési szabályzat létrehozása"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Ehhez a tárolóhoz a következő indexek vannak definiálva.",
+ "learnMoreSuffix": "a globális másodlagos indexek definiálásáról és használatáról.",
+ "jsonAriaLabel": "Globális másodlagos index JSON-fájlja",
+ "addIndex": "Index hozzáadása",
+ "settingsTitle": "Globális másodlagos index beállításai",
+ "sourceContainer": "Forrástároló",
+ "indexDefinition": "Globális másodlagos indexdefiníció"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Az indexátalakítási folyamat frissítése nem sikerült"
+ },
+ "throughputInput": {
+ "autoscale": "Automatikus skálázás",
+ "manual": "Manuális",
+ "minimumRuS": "Minimális RU/s érték",
+ "maximumRuS": "Maximális RU/s érték",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Tárolókapacitás",
+ "fixed": "Javítva",
+ "unlimited": "Korlátlan",
+ "instant": "Azonnali",
+ "fourToSixHrs": "4-6 óra",
+ "autoscaleDescription": "A használat alapján a(z) {{resourceType}} átviteli sebessége a következőről lesz skálázva:",
+ "freeTierWarning": "A számlázás akkor lesz alkalmazva, ha több mint {{ru}} RU/s manuális átviteli sebességet épít ki, vagy ha az erőforrás az automatikus skálázással túllépi a(z) {{ru}} RU/s mennyiséget.",
+ "capacityCalculator": "Becsülje meg a szükséges RU/s értékét a következővel:",
+ "capacityCalculatorLink": " kapacitáskalkulátor",
+ "fixedStorageNote": "Ha rögzített tárolási kapacitású gyűjteményt használ, legfeljebb 10 000 RU/s állítható be.",
+ "min": "perc",
+ "max": "max"
+ },
+ "throughputBuckets": {
+ "label": "Átviteli sebesség gyűjtői",
+ "bucketLabel": "Gyűjtő {{id}}",
+ "dataExplorerQueryBucket": " (Adatkezelő lekérdezésgyűjtő)",
+ "active": "Aktív",
+ "inactive": "Inaktív"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/id/Resources.json b/src/Localization/id/Resources.json
new file mode 100644
index 000000000..6b77be09d
--- /dev/null
+++ b/src/Localization/id/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Batal",
+ "close": "Tutup",
+ "save": "Simpan",
+ "delete": "Hapus",
+ "update": "Perbarui",
+ "discard": "Buang",
+ "execute": "Jalankan",
+ "loading": "Memuat",
+ "loadingEllipsis": "Memuat...",
+ "next": "Berikutnya",
+ "previous": "Sebelumnya",
+ "yes": "Ya",
+ "no": "Tidak",
+ "result": "Hasil",
+ "learnMore": "Pelajari selengkapnya",
+ "getStarted": "Mulai",
+ "retry": "Coba lagi",
+ "apply": "Terapkan",
+ "refresh": "Refresh",
+ "copy": "Salin",
+ "create": "Buat",
+ "confirm": "Konfirmasi",
+ "open": "Buka",
+ "rename": "Ganti nama",
+ "download": "Unduh",
+ "upload": "Unggah",
+ "connect": "Sambungkan",
+ "remove": "Hapus",
+ "load": "Muat",
+ "publish": "Terbitkan",
+ "browse": "Telusuri",
+ "increaseValueBy1": "Tambah nilai sebesar 1",
+ "decreaseValueBy1": "Kurangi nilai sebesar 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Selamat Datang di Azure Cosmos DB",
+ "postgres": "Selamat datang di Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Selamat datang di Azure DocumentDB (dengan kompatibilitas MongoDB)"
+ },
+ "subtitle": {
+ "default": "Layanan database multimodel yang didistribusikan secara global untuk skala apa saja",
+ "getStarted": "Mulai dengan himpunan data sampel, dokumentasi, dan alat tambahan kami."
+ },
+ "quickStart": {
+ "title": "Luncurkan mulai cepat",
+ "description": "Mulai tutorial cepat untuk memulai dengan data sampel"
+ },
+ "newCollection": {
+ "title": "{{collectionName}} baru",
+ "description": "Buat kontainer baru untuk penyimpanan dan throughput"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB Samples Gallery",
+ "description": "Temukan sampel yang menampilkan pola aplikasi cerdas yang dapat diskalakan. Coba sekarang untuk melihat seberapa cepat Anda bisa beralih dari konsep ke kode dengan Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Sambungkan",
+ "description": "Lebih suka menggunakan alat pilihan sendiri? Temukan string koneksi yang diperlukan untuk menyambung",
+ "pgAdmin": {
+ "title": "Sambungkan dengan pgAdmin",
+ "description": "Lebih suka pgAdmin? Temukan string koneksi di sini"
+ },
+ "vsCode": {
+ "title": "Sambungkan dengan Visual Studio Code",
+ "description": "Kueri dan kelola klaster MongoDB dan DocumentDB di Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "Buat tabel dan interaksi dengan data menggunakan antarmuka shell PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "Buat koleksi dan interaksi dengan data menggunakan antarmuka shell MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Baru menggunakan Cosmos DB PGSQL?",
+ "body": "Selamat datang! Jika baru menggunakan Cosmos DB PGSQL dan butuh bantuan memulai, di sini Anda dapat menemukan data sampel dan kueri."
+ },
+ "resetPassword": {
+ "headline": "Buat kata sandi Anda",
+ "body": "Jika belum mengubah kata sandi, ubah sekarang."
+ },
+ "coachMark": {
+ "headline": "Mulai dengan sampel {{collectionName}}",
+ "body": "Anda akan dipandu membuat kontainer sampel dengan data sampel, lalu kami akan memberikan tur penjelajah data. Anda juga bisa membatalkan tur ini dan menjelajah sendiri"
+ }
+ },
+ "sections": {
+ "recents": "Terbaru",
+ "clearRecents": "Bersihkan Riwayat Terbaru",
+ "top3": "3 Hal Terpenting yang Perlu Diketahui",
+ "learningResources": "Sumber Daya Pembelajaran",
+ "nextSteps": "Langkah berikutnya",
+ "tipsAndLearnMore": "Tips & pelajari selengkapnya",
+ "notebook": "Buku catatan",
+ "needHelp": "Perlu bantuan?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Pola Pemodelan Lanjutan",
+ "description": "Pelajari strategi lanjutan untuk mengoptimalkan database."
+ },
+ "partitioning": {
+ "title": "Praktik Terbaik Pemartisian",
+ "description": "Pelajari cara menerapkan model data dan strategi pemartisian."
+ },
+ "resourcePlanning": {
+ "title": "Rencanakan Kebutuhan Sumber Daya Anda",
+ "description": "Kenali Berbagai Pilihan Konfigurasi."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Apa itu API MongoDB?",
+ "description": "Pahami Azure Cosmos DB for MongoDB dan fitur-fiturnya."
+ },
+ "features": {
+ "title": "Fitur dan Sintaks",
+ "description": "Temukan Keunggulan dan Fitur"
+ },
+ "migrate": {
+ "title": "Migrasikan Data",
+ "description": "Langkah Pra-migrasi untuk Memindahkan Data"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Buat Aplikasi Java",
+ "description": "Buat aplikasi Java menggunakan SDK."
+ },
+ "partitioning": {
+ "title": "Praktik Terbaik Pemartisian",
+ "description": "Pelajari cara kerja pemartisian."
+ },
+ "requestUnits": {
+ "title": "Unit Permintaan (RU)",
+ "description": "Pahami Biaya RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Pemodelan Data",
+ "description": "Rekomendasi Pemodelan Data Grafik"
+ },
+ "partitioning": {
+ "title": "Praktik Terbaik Pemartisian",
+ "description": "Pelajari cara kerja partisi"
+ },
+ "queryData": {
+ "title": "Data Kueri",
+ "description": "Mengkueri data dengan Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Apa itu Table API?",
+ "description": "Memahami Azure Cosmos DB for Table dan fiturnya"
+ },
+ "migrate": {
+ "title": "Migrasikan data Anda",
+ "description": "Pelajari cara memigrasikan data Anda"
+ },
+ "faq": {
+ "title": "Tanya Jawab Umum Azure Cosmos DB for Table",
+ "description": "Pertanyaan umum tentang Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Pintasan keyboard Data Explorer",
+ "description": "Pelajari pintasan keyboard untuk menavigasi Data Explorer."
+ },
+ "liveTv": {
+ "title": "Pelajari Dasar",
+ "description": "Tonton video perkenalan dan tutorial Azure Cosmos DB Live TV."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Mulai menggunakan SDK",
+ "description": "Pelajari tentang Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Migrasikan Data",
+ "description": "Migrasikan data menggunakan layanan Azure dan solusi sumber terbuka."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Buat aplikasi dengan Node.js",
+ "description": "Buat aplikasi Node.js."
+ },
+ "gettingStarted": {
+ "title": "Panduan Persiapan",
+ "description": "Pelajari dasar untuk memulai."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Buat Kontainer",
+ "description": "Kenali opsi buat kontainer."
+ },
+ "throughput": {
+ "title": "Throughput Penyediaan",
+ "description": "Pelajari cara mengonfigurasi throughput."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Mulai ",
+ "description": "Buat, kueri, dan jelajahi menggunakan konsol Gremlin"
+ },
+ "importData": {
+ "title": "Impor Data Graf",
+ "description": "Pelajari penyerapan massal data menggunakan BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Buat Aplikasi .NET",
+ "description": "Cara mengakses Azure Cosmos DB for Table dari aplikasi .NET."
+ },
+ "java": {
+ "title": "Buat Aplikasi Java",
+ "description": "Buat aplikasi Azure Cosmos DB for Table dengan Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Pemodelan Data",
+ "distributionColumn": "Cara memilih Kolom Distribusi",
+ "buildApps": "Buat Aplikasi dengan Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrasikan Data",
+ "vectorSearch": "Buat aplikasi AI dengan Pencarian Vektor",
+ "buildApps": "Buat Aplikasi dengan Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Penyetelan Performa",
+ "diagnosticQueries": "Kueri Diagnostik yang Berguna",
+ "sqlReference": "Referensi SQL Terdistribusi"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Pencarian Vektor",
+ "textIndexing": "Pengindeksan Teks",
+ "troubleshoot": "Pecahkan masalah umum"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Bangun database Anda",
+ "useTitle": "Gunakan database Anda",
+ "newContainer": {
+ "title": "Kontainer baru",
+ "description": "Buat kontainer tujuan untuk menyimpan data"
+ },
+ "sampleData": {
+ "title": "Data Sampel",
+ "description": "Muat data sampel ke database"
+ },
+ "sampleVectorData": {
+ "title": "Data Vektor Sampel",
+ "description": "Muat data vektor sampel dengan text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Pengembangan aplikasi",
+ "description": "Mulai di sini untuk menggunakan SDK membangun aplikasi"
+ },
+ "sampleGallery": {
+ "title": "Galeri Sampel",
+ "description": "Dapatkan sampel menyeluruh dunia nyata"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Data Sampel",
+ "startButton": "Mulai",
+ "createPrompt": "Buat kontainer \"{{containerName}}\" dan impor data sampel ke dalamnya. Proses ini memerlukan waktu beberapa menit.",
+ "creatingContainer": "Membuat kontainer \"{{containerName}}\"...",
+ "importingData": "Mengimpor data ke \"{{containerName}}\"...",
+ "success": "Berhasil membuat \"{{containerName}}\" dengan data sampel.",
+ "errorContainerExists": "Kontainer \"{{containerName}}\" di database \"{{databaseName}}\" sudah ada. Hapus dan coba lagi.",
+ "errorCreateContainer": "Gagal membuat kontainer: {{error}}",
+ "errorImportData": "Gagal mengimpor data: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "{{containerName}} baru",
+ "restoreContainer": "Pulihkan {{containerName}}",
+ "deleteDatabase": "Hapus {{databaseName}}",
+ "deleteContainer": "Hapus {{containerName}}",
+ "newSqlQuery": "Kueri SQL Baru",
+ "newQuery": "Kueri Baru",
+ "openMongoShell": "Buka Mongo Shell",
+ "newShell": "Shell Baru",
+ "openCassandraShell": "Buka Cassandra Shell",
+ "newStoredProcedure": "Prosedur Tersimpan Baru",
+ "newUdf": "UDF baru",
+ "newTrigger": "Pemicu Baru",
+ "deleteStoredProcedure": "Hapus Prosedur tersimpan",
+ "deleteTrigger": "Hapus Pemicu",
+ "deleteUdf": "Hapus Fungsi yang Ditentukan Pengguna"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Item Baru",
+ "newDocument": "Dokumen Baru",
+ "uploadItem": "Unggah Item",
+ "applyFilter": "Terapkan Filter",
+ "unsavedChanges": "Perubahan yang belum disimpan",
+ "unsavedChangesMessage": "Perubahan yang belum disimpan akan hilang. Lanjutkan?",
+ "createDocumentFailed": "Gagal membuat dokumen",
+ "updateDocumentFailed": "Gagal memperbarui dokumen",
+ "documentDeleted": "Dokumen berhasil dihapus.",
+ "deleteDocumentDialogTitle": "Hapus dokumen",
+ "deleteDocumentsDialogTitle": "Hapus dokumen",
+ "throttlingError": "Beberapa dokumen gagal dihapus karena kesalahan pembatasan laju. Coba lagi nanti. Untuk mencegah hal ini terjadi lagi, coba tambah throughput di kontainer atau database Anda.",
+ "deleteFailed": "Gagal menghapus dokumen ({{error}})",
+ "missingShardProperty": "Dokumen tidak memiliki properti shard: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Gagal me-refresh kisi dokumen",
+ "confirmDelete": "Yakin ingin menghapus {{documentName}}?",
+ "confirmDeleteTitle": "Konfirmasikan penghapusan",
+ "selectedItems": "{{count}} item yang dipilih",
+ "selectedItem": "item yang dipilih",
+ "selectedDocuments": "{{count}} dokumen yang dipilih",
+ "selectedDocument": "dokumen yang dipilih",
+ "deleteDocumentFailedLog": "Gagal menghapus dokumen {{documentId}} dengan kode status {{statusCode}}",
+ "deleteSuccessLog": "{{count}} dokumen berhasil dihapus",
+ "deleteThrottledLog": "Gagal menghapus {{count}} dokumen karena kesalahan \"Permintaan terlalu besar\" (429). Mencoba lagi...",
+ "missingShardKeyLog": "Gagal menyimpan dokumen baru: Kunci shard dokumen tidak ditentukan",
+ "filterTooltip": "Ketik predikat kueri atau pilih salah satu dari daftar.",
+ "loadMore": "Muat lainnya",
+ "documentEditor": "Editor dokumen",
+ "savedFilters": "Filter tersimpan",
+ "defaultFilters": "Filter default",
+ "abort": "Batalkan",
+ "deletingDocuments": "Menghapus {{count}} dokumen",
+ "deletedDocumentsSuccess": "Berhasil menghapus {{count}} dokumen.",
+ "deleteAborted": "Penghapusan dokumen dibatalkan.",
+ "failedToDeleteDocuments": "Gagal menghapus {{count}} dokumen.",
+ "requestTooLargeBase": "Beberapa permintaan penghapusan gagal karena pengecualian \"Permintaan terlalu besar\" (429)",
+ "retriedSuccessfully": "tetapi berhasil dicoba ulang.",
+ "retryingNow": "Mencoba lagi sekarang.",
+ "increaseThroughputTip": "Untuk mencegah hal ini terjadi lagi, coba tambah throughput di kontainer atau database Anda.",
+ "numberOfSelectedDocuments": "Jumlah dokumen yang dipilih: {{count}}",
+ "mongoFilterPlaceholder": "Ketik predikat kueri (misalnya, {\"id\":\"foo\"}), atau pilih salah satu dari daftar menurun, atau biarkan kosong untuk mengkueri semua dokumen.",
+ "sqlFilterPlaceholder": "Ketik predikat kueri (misalnya, WHERE c.id=\"1\"), atau pilih salah satu dari daftar menurun, atau kosongkan untuk mengkueri semua dokumen.",
+ "error": "Kesalahan",
+ "warning": "Peringatan"
+ },
+ "query": {
+ "executeQuery": "Jalankan Kueri",
+ "executeSelection": "Jalankan Pilihan",
+ "saveQuery": "Simpan Kueri",
+ "downloadQuery": "Unduh Kueri",
+ "cancelQuery": "Batalkan kueri",
+ "openSavedQueries": "Buka Kueri Tersimpan",
+ "vertical": "Vertikal",
+ "horizontal": "Horizontal",
+ "view": "Tampilkan",
+ "editingQuery": "Mengedit Kueri"
+ },
+ "storedProcedure": {
+ "id": "ID Prosedur Tersimpan",
+ "idPlaceholder": "Masukkan ID prosedur baru yang disimpan",
+ "idAriaLabel": "ID prosedur tersimpan",
+ "body": "Isi Prosedur Tersimpan",
+ "bodyAriaLabel": "Isi prosedur tersimpan",
+ "successfulExecution": "Eksekusi prosedur tersimpan berhasil",
+ "resultAriaLabel": "Jalankan hasil prosedur tersimpan",
+ "logsAriaLabel": "Jalankan log prosedur tersimpan",
+ "errors": "Kesalahan:",
+ "errorDetailsAriaLabel": "Tautan detail kesalahan",
+ "moreDetails": "Detail selengkapnya",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID Pemicu",
+ "idPlaceholder": "Masukkan ID pemicu baru",
+ "type": "Tipe Pemicu",
+ "operation": "Operasi Pemicu",
+ "body": "Isi Pemicu",
+ "bodyAriaLabel": "Isi pemicu",
+ "pre": "Pra",
+ "post": "Posting",
+ "all": "Semua",
+ "operationCreate": "Buat",
+ "operationDelete": "Hapus",
+ "operationReplace": "Ganti"
+ },
+ "udf": {
+ "id": "ID Fungsi yang Ditentukan Pengguna",
+ "idPlaceholder": "Masukkan ID fungsi yang ditentukan pengguna baru",
+ "body": "Isi Fungsi yang Ditentukan Pengguna",
+ "bodyAriaLabel": "Isi fungsi yang ditentukan pengguna"
+ },
+ "conflicts": {
+ "unsavedChanges": "Perubahan yang belum disimpan",
+ "changesWillBeLost": "Perubahan akan hilang. Lanjutkan?",
+ "resolveConflictFailed": "Gagal mengatasi konflik",
+ "deleteConflictFailed": "Gagal menghapus konflik",
+ "refreshGridFailed": "Gagal me-refresh kisi dokumen"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Apa alasan menghapus {{databaseName}} ini?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Hapus {{collectionName}}",
+ "confirmPrompt": "Konfirmasikan dengan mengetik id {{collectionName}}",
+ "inputMismatch": "Id input {{input}} tidak cocok dengan {{selectedId}} yang dipilih",
+ "feedbackTitle": "Bantuan kami meningkatkan Azure Cosmos DB!",
+ "feedbackReason": "Apa alasan menghapus {{collectionName}} ini?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Database {{suffix}}",
+ "databaseIdLabel": "Id database",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} id, Contoh {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Pilih id {{databaseName}} yang sudah ada",
+ "existingDatabasePlaceholder": "Pilih id {{databaseName}} yang sudah ada",
+ "indexing": "Mengindeks",
+ "turnOnIndexing": "Aktifkan pengindeksan",
+ "automatic": "Otomatis",
+ "turnOffIndexing": "Nonaktifkan pengindeksan",
+ "off": "Nonaktif",
+ "sharding": "Pecahan",
+ "shardingTooltip": "Koleksi yang dipecah membagi data Anda ke banyak set replika (shard) untuk mencapai skalabilitas tanpa batas. Koleksi yang dipecah mengharuskan pemilihan kunci shard (bidang) untuk mendistribusikan data secara merata.",
+ "unsharded": "Tidak dipecah",
+ "unshardedLabel": "Tidak dipecah (batas 20GB)",
+ "sharded": "Dipecah",
+ "addPartitionKey": "Tambahkan kunci partisi hierarkis",
+ "hierarchicalPartitionKeyInfo": "Fitur ini memungkinkan partisi data dengan maksimal tiga tingkat kunci untuk distribusi data yang lebih baik. Memerlukan .NET V3, Java V4 SDK, atau pratinjau JavaScript V3 SDK.",
+ "provisionDedicatedThroughput": "Provisikan throughput khusus untuk {{collectionName}} ini",
+ "provisionDedicatedThroughputTooltip": "Anda juga dapat memprovisikan throughput khusus untuk {{collectionName}} dalam ruang kunci yang sudah memiliki provisi throughput. Jumlah throughput khusus ini tidak akan dibagikan dengan {{collectionNamePlural}} lain dalam ruang kunci dan tidak dihitung ke dalam throughput yang Anda provisikan untuk ruang kunci tersebut. Jumlah throughput ini akan ditagih di luar throughput yang Anda provisikan di tingkat database.",
+ "uniqueKeysPlaceholderMongo": "Jalur yang dipisahkan koma, misalnya firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Jalur yang dipisahkan koma, misalnya /firstName,/address/zipCode",
+ "addUniqueKey": "Tambahkan kunci unik",
+ "enableAnalyticalStore": "Aktifkan penyimpanan analitik",
+ "disableAnalyticalStore": "Nonaktifkan penyimpanan analitik",
+ "on": "Aktif",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link diperlukan untuk membuat penyimpanan analitik {{collectionName}}. Aktifkan Azure Synapse Link untuk akun Cosmos DB ini.",
+ "enable": "Aktifkan",
+ "containerVectorPolicy": "Kebijakan Vektor Kontainer",
+ "containerFullTextSearchPolicy": "Kebijakan Pencarian Teks Lengkap Kontainer",
+ "advanced": "Tingkat lanjut",
+ "mongoIndexingTooltip": "Field _id diindeks secara default. Membuat indeks wildcard untuk semua bidang akan mengoptimalkan kueri dan disarankan untuk pengembangan.",
+ "createWildcardIndex": "Buat Indeks Wildcard di semua bidang",
+ "legacySdkCheckbox": "Aplikasi saya menggunakan versi Cosmos .NET atau Java SDK lama (.NET V1 atau Java V2)",
+ "legacySdkInfo": "Untuk memastikan kompatibilitas dengan SDK lama, kontainer yang dibuat akan menggunakan skema partisi lama yang mendukung nilai kunci partisi dengan ukuran maksimal 101 byte. Jika diaktifkan, Anda tidak dapat menggunakan kunci partisi hierarkis.",
+ "indexingOnInfo": "Semua properti dalam dokumen akan diindeks secara default untuk kueri yang fleksibel dan efisien.",
+ "indexingOffInfo": "Pengindeksan akan dinonaktifkan. Disarankan jika Anda tidak perlu menjalankan kueri atau hanya melakukan operasi nilai kunci.",
+ "indexingOffWarning": "Dengan membuat kontainer ini dengan pengindeksan dinonaktifkan, Anda tidak dapat mengubah kebijakan pengindeksan. Perubahan pengindeksan hanya diperbolehkan terhadap kontainer dengan kebijakan pengindeksan.",
+ "acknowledgeSpendErrorMonthly": "Setujui perkiraan pengeluaran bulanan.",
+ "acknowledgeSpendErrorDaily": "Setujui perkiraan pengeluaran harian.",
+ "unshardedMaxRuError": "Koleksi yang tidak dipecah mendukung hingga 10.000 RU",
+ "acknowledgeShareThroughputError": "Setujui perkiraan biaya throughput khusus ini.",
+ "vectorPolicyError": "Perbaiki kesalahan dalam kebijakan vektor kontainer",
+ "fullTextSearchPolicyError": "Perbaiki kesalahan dalam kebijakan pencarian teks lengkap kontainer",
+ "addingSampleDataSet": "Menambahkan sampel himpunan data",
+ "databaseFieldLabelName": "Nama database",
+ "databaseFieldLabelId": "Id database",
+ "newDatabaseIdPlaceholder": "Ketik id database baru",
+ "newDatabaseIdAriaLabel": "ID database baru, ketik ID database baru",
+ "createNewDatabaseAriaLabel": "Buat database baru",
+ "useExistingDatabaseAriaLabel": "Gunakan database yang ada",
+ "chooseExistingDatabase": "Pilih database yang ada",
+ "teachingBubble": {
+ "step1Headline": "Buat database sampel",
+ "step1Body": "Database adalah induk dari sebuah kontainer. Anda dapat membuat database baru atau menggunakan yang sudah ada. Dalam tutorial ini, kami membuat database baru bernama SampleDB.",
+ "step1LearnMore": "Pelajari selengkapnya tentang sumber daya.",
+ "step2Headline": "Mengatur throughput",
+ "step2Body": "Cosmos DB merekomendasikan berbagi throughput di seluruh database. Autoscale memberikan jumlah throughput yang fleksibel berdasarkan maksimum RU/s (Request Units) yang ditetapkan.",
+ "step2LearnMore": "Pelajari selengkapnya tentang RU/dtk.",
+ "step3Headline": "Penamaan kontainer",
+ "step3Body": "Beri nama kontainer Anda",
+ "step4Headline": "Mengatur kunci partisi",
+ "step4Body": "Langkah terakhir - Anda perlu menentukan kunci partisi untuk koleksi Anda. /address dipilih untuk contoh khusus ini. Kunci partisi yang baik harus memiliki rentang nilai yang luas",
+ "step4CreateContainer": "Buat kontainer",
+ "step5Headline": "Membuat kontainer sampel",
+ "step5Body": "Kontainer sampel sedang dibuat dan data sampel sedang ditambahkan untuk Anda. Proses ini akan memakan waktu sekitar 1 menit.",
+ "step5BodyFollowUp": "Setelah kontainer sampel dibuat, tinjau dataset sampel Anda dan lanjutkan ke langkah berikutnya",
+ "stepOfTotal": "Langkah {{current}} dari {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Kunci shard (bidang) digunakan untuk membagi data Anda ke banyak set replika (shard) untuk mencapai skalabilitas tanpa batas. Penting memilih bidang yang mendistribusikan data secara merata.",
+ "partitionKeyTooltip": "{{partitionKeyName}} digunakan untuk mendistribusikan data secara otomatis di seluruh partisi untuk skalabilitas. Pilih properti dalam dokumen JSON Anda yang memiliki berbagai nilai dan mendistribusikan volume permintaan secara merata.",
+ "partitionKeyTooltipSqlSuffix": " Untuk beban kerja baca berat atau beban kerja tulis berat yang kecil dengan ukuran apa pun, id sering menjadi pilihan yang baik.",
+ "shardKeyLabel": "Tombol shard",
+ "partitionKeyLabel": "Kunci partisi",
+ "shardKeyPlaceholder": "misalnya, categoryId",
+ "partitionKeyPlaceholderDefault": "misalnya, /address",
+ "partitionKeyPlaceholderFirst": "Wajib - kunci partisi pertama misalnya, /TenantId",
+ "partitionKeyPlaceholderSecond": "kunci partisi kedua misalnya, /UserId",
+ "partitionKeyPlaceholderThird": "kunci partisi ketiga misalnya, /SessionId",
+ "partitionKeyPlaceholderGraph": "misalnya /address/zipCode",
+ "uniqueKeysTooltip": "Kunci unik memberi pengembang kemampuan menambahkan lapisan integritas data ke database. Dengan membuat kebijakan kunci unik saat kontainer dibuat, Anda memastikan keunikan satu atau beberapa nilai per kunci partisi.",
+ "uniqueKeysLabel": "Kunci unik",
+ "analyticalStoreLabel": "Penyimpanan Analitik",
+ "analyticalStoreTooltip": "Aktifkan kemampuan penyimpanan analitik untuk melakukan analitik mendekati real-time terhadap data operasional tanpa memengaruhi performa beban kerja transaksional.",
+ "analyticalStoreDescription": "Aktifkan kemampuan penyimpanan analitik untuk melakukan analitik mendekati real-time terhadap data operasional tanpa memengaruhi performa beban kerja transaksional.",
+ "vectorPolicyTooltip": "Jelaskan properti dalam data Anda yang berisi vektor agar dapat disediakan untuk kueri kemiripan."
+ },
+ "settings": {
+ "pageOptions": "Opsi Halaman",
+ "pageOptionsDescription": "Pilih Kustom untuk menentukan jumlah hasil kueri tetap yang akan ditampilkan, atau pilih Tak Terbatas untuk menampilkan sebanyak mungkin hasil kueri per halaman.",
+ "queryResultsPerPage": "Hasil kueri per halaman",
+ "queryResultsPerPageTooltip": "Masukkan jumlah hasil kueri yang harus ditampilkan per halaman.",
+ "customQueryItemsPerPage": "Item kueri kustom per halaman",
+ "custom": "Kustom",
+ "unlimited": "Tidak terbatas",
+ "entraIdRbac": "Aktifkan RBAC Entra ID",
+ "entraIdRbacDescription": "Pilih Otomatis untuk mengaktifkan RBAC Entra ID secara otomatis. True/False untuk mengaktifkan atau menonaktifkan RBAC Entra ID secara paksa.",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "Pemilihan Wilayah",
+ "regionSelectionDescription": "Mengubah wilayah yang digunakan Klien Cosmos untuk mengakses akun.",
+ "selectRegion": "Pilih Wilayah",
+ "selectRegionTooltip": "Mengubah titik akhir akun yang digunakan untuk melakukan operasi klien.",
+ "globalDefault": "Global (Default)",
+ "readWrite": "(Baca/Tulis)",
+ "read": "(Baca)",
+ "queryTimeout": "Batas Waktu Kueri",
+ "queryTimeoutDescription": "Saat kueri mencapai batas waktu yang ditentukan, popup dengan opsi untuk membatalkan kueri akan muncul kecuali pembatalan otomatis telah diaktifkan.",
+ "enableQueryTimeout": "Aktifkan batas waktu kueri",
+ "queryTimeoutMs": "Batas waktu kueri (mdtk)",
+ "automaticallyCancelQuery": "Batalkan kueri secara otomatis setelah batas waktu",
+ "ruLimit": "RU Limit",
+ "ruLimitDescription": "Jika kueri melebihi batas RU yang dikonfigurasi, kueri akan dibatalkan.",
+ "enableRuLimit": "Aktifkan batas RU",
+ "ruLimitLabel": "RU Limit (RU)",
+ "defaultQueryResults": "Tampilan Hasil Kueri Default",
+ "defaultQueryResultsDescription": "Pilih tampilan default untuk digunakan saat menampilkan hasil kueri.",
+ "retrySettings": "Pengaturan Coba Lagi",
+ "retrySettingsDescription": "Kebijakan percobaan kembali yang terkait dengan permintaan yang dibatasi selama kueri CosmosDB.",
+ "maxRetryAttempts": "Upaya percobaan kembali maks",
+ "maxRetryAttemptsTooltip": "Jumlah maks percobaan kembali yang akan dilakukan untuk sebuah permintaan. Nilai default 9.",
+ "fixedRetryInterval": "Interval percobaan kembali tetap (mdtk)",
+ "fixedRetryIntervalTooltip": "Interval percobaan kembali tetap dalam milidetik untuk menunggu di antara setiap percobaan kembali, mengabaikan retryAfter yang dihasilkan sebagai bagian dari respons. Nilai default-nya adalah 0 milidetik.",
+ "maxWaitTime": "Waktu tunggu maks (dtk)",
+ "maxWaitTimeTooltip": "Waktu tunggu maks dalam detik untuk menunggu permintaan selama percobaan kembali berlangsung. Nilai default 30 detik.",
+ "enableContainerPagination": "Aktifkan penomoran halaman kontainer",
+ "enableContainerPaginationDescription": "Muat 50 kontainer sekaligus. Saat ini, kontainer tidak dimuat dalam urutan alfanumerik.",
+ "enableCrossPartitionQuery": "Aktifkan kueri partisi silang",
+ "enableCrossPartitionQueryDescription": "Kirim lebih dari satu permintaan saat menjalankan kueri. Lebih dari satu permintaan diperlukan jika kueri tidak dibatasi pada satu nilai kunci partisi.",
+ "maxDegreeOfParallelism": "Tingkat paralelisme maksimum",
+ "maxDegreeOfParallelismDescription": "Mengambil atau mengatur jumlah operasi serentak yang dijalankan di sisi klien selama eksekusi kueri paralel. Nilai properti positif membatasi jumlah operasi serentak sesuai nilai yang ditetapkan. Jika diatur kurang dari 0, sistem menentukan secara otomatis jumlah operasi serentak yang dijalankan.",
+ "maxDegreeOfParallelismQuery": "Kueri hingga tingkat paralelisme maks.",
+ "priorityLevel": "Tingkat Prioritas",
+ "priorityLevelDescription": "Menetapkan tingkat prioritas untuk permintaan data-plane dari Data Explorer saat menggunakan Eksekusi Berbasis Prioritas. Jika dipilih \"Tidak ada\", Data Explorer tidak akan menentukan tingkat prioritas dan tingkat prioritas default sisi server akan digunakan.",
+ "displayGremlinQueryResults": "Tampilkan hasil kueri Gremlin sebagai:",
+ "displayGremlinQueryResultsDescription": "Pilih Grafik untuk memvisualisasikan hasil kueri secara otomatis sebagai Grafik atau JSON untuk menampilkan hasil sebagai JSON.",
+ "graph": "Grafik",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualisasi Otomatis Grafik",
+ "enableSampleDatabase": "Aktifkan sampel database",
+ "enableSampleDatabaseDescription": "Ini adalah database dan koleksi sampel dengan data produk sintetis yang dapat digunakan untuk menjelajahi kueri NoSQL. Ini akan muncul sebagai database lain di UI Data Explorer, dibuat dan dikelola oleh Microsoft tanpa biaya untuk Anda.",
+ "enableSampleDbAriaLabel": "Aktifkan db sampel untuk penjelajahan kueri",
+ "guidRepresentation": "Representasi Guid",
+ "guidRepresentationDescription": "GuidRepresentation di MongoDB mengacu pada cara Pengidentifikasi Unik Global (GUID) diserialisasi dan dideserialisasi saat disimpan dalam dokumen BSON. Ini berlaku untuk semua operasi dokumen.",
+ "advancedSettings": "Pengaturan Tingkat Lanjut",
+ "ignorePartitionKey": "Abaikan kunci partisi saat memperbarui dokumen",
+ "ignorePartitionKeyTooltip": "Jika dicentang, nilai kunci partisi tidak akan digunakan untuk menemukan dokumen selama operasi pembaruan. Gunakan hanya jika pembaruan dokumen gagal karena kunci partisi yang tidak normal.",
+ "clearHistory": "Hapus Riwayat",
+ "clearHistoryConfirm": "Yakin ingin melanjutkan?",
+ "clearHistoryDescription": "Tindakan ini akan menghapus semua kustomisasi untuk akun ini di browser ini, termasuk:",
+ "clearHistoryTabLayout": "Atur ulang tata letak tab yang dikustomisasi, termasuk posisi pemisah",
+ "clearHistoryTableColumns": "Hapus preferensi kolom tabel Anda, termasuk kolom kustom apa pun",
+ "clearHistoryFilters": "Hapus riwayat filter Anda",
+ "clearHistoryRegion": "Atur ulang pilihan wilayah ke global",
+ "increaseValueBy1000": "Naikkan nilai sebesar 1000",
+ "decreaseValueBy1000": "Kurangi nilai sebesar 1000",
+ "none": "Tidak ada",
+ "low": "Rendah",
+ "high": "Tinggi",
+ "automatic": "Otomatis",
+ "enhancedQueryControl": "Kontrol kueri yang disempurnakan",
+ "enableQueryControl": "Aktifkan kontrol kueri",
+ "explorerVersion": "Versi Explorer",
+ "accountId": "ID Akun",
+ "sessionId": "ID Sesi",
+ "popupsDisabledError": "Kami tidak dapat melakukan otorisasi untuk akun ini karena pop-up dinonaktifkan di browser.\nAktifkan pop-up untuk situs ini dan klik tombol \"Masuk untuk ID Entra\"",
+ "failedToAcquireTokenError": "Gagal memperoleh token otorisasi secara otomatis. Klik tombol \"Masuk untuk Entra ID\" untuk mengaktifkan operasi RBAC Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Simpan Kueri",
+ "setupCostMessage": "Untuk alasan kepatuhan, kami menyimpan kueri dalam kontainer di akun Azure Cosmos Anda, di database terpisah bernama \"{{databaseName}}\". Untuk melanjutkan, kami perlu membuat kontainer di akun Anda, dengan perkiraan biaya tambahan $0,77 per hari.",
+ "completeSetup": "Selesaikan penyiapan",
+ "noQueryNameError": "Tidak ada nama kueri yang ditentukan",
+ "invalidQueryContentError": "Konten kueri yang ditentukan tidak valid",
+ "failedToSaveQueryError": "Gagal menyimpan kueri {{queryName}}",
+ "failedToSetupContainerError": "Gagal menyiapkan kontainer untuk kueri tersimpan",
+ "accountNotSetupError": "Gagal menyimpan kueri: akun tidak disiapkan untuk menyimpan kueri",
+ "name": "Nama"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Tidak ada file yang ditentukan",
+ "failedToLoadQueryError": "Gagal memuat kueri.",
+ "failedToLoadQueryFromFileError": "Gagal memuat kueri dari file {{fileName}}",
+ "selectFilesToOpen": "Pilih dokumen kueri",
+ "browseFiles": "Telusuri"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Masukkan parameter input (jika ada)",
+ "key": "Kunci",
+ "param": "Param",
+ "partitionKeyValue": "Nilai kunci partisi",
+ "value": "Nilai",
+ "addNewParam": "Tambahkan Parameter Baru",
+ "addParam": "Tambahkan parameter",
+ "deleteParam": "Hapus parameter",
+ "invalidParamError": "Parameter yang ditentukan tidak valid: {{invalidParam}}",
+ "invalidParamConsoleError": "Parameter yang ditentukan tidak valid: {{invalidParam}} bukan nilai literal yang valid",
+ "stringType": "String",
+ "customType": "Kustom"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Tidak ada file yang ditentukan. Masukkan setidaknya satu file.",
+ "selectJsonFiles": "Pilih Files JSON",
+ "selectJsonFilesTooltip": "Pilih satu atau beberapa file JSON untuk diunggah. Setiap file dapat berisi satu dokumen JSON atau susunan dokumen JSON. Ukuran gabungan semua file dalam satu operasi pengunggahan harus kurang dari 2 MB. Anda dapat melakukan beberapa operasi pengunggahan untuk himpunan data yang lebih besar.",
+ "fileNameColumn": "NAMA FILE",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} dibuat, {{numThrottled}} dibatasi, {{numFailed}} kesalahan",
+ "uploadedFiles": "File yang diunggah"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Gagal menyalin {{name}} ke {{destination}}",
+ "uploadFailedError": "Gagal mengunggah {{name}}",
+ "location": "Lokasi",
+ "locationAriaLabel": "Lokasi",
+ "selectLocation": "Pilih lokasi buku catatan untuk disalin",
+ "name": "Nama"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Gagal menerbitkan {{notebookName}} ke galeri",
+ "publishDescription": "Saat diterbitkan, buku catatan ini akan muncul di galeri publik buku catatan Azure Cosmos DB. Pastikan Anda telah menghapus data atau output sensitif sebelum menerbitkan.",
+ "publishPrompt": "Apakah Anda ingin menerbitkan dan membagikan \"{{name}}\" ke galeri?",
+ "coverImage": "Gambar sampul",
+ "coverImageUrl": "Url gambar sampul",
+ "name": "Nama",
+ "description": "Deskripsi",
+ "tags": "Tag",
+ "tagsPlaceholder": "Tag opsional 1, Tag opsional 2",
+ "preview": "Pratinjau",
+ "urlType": "URL",
+ "customImage": "Gambar Kustom",
+ "takeScreenshot": "Ambil Cuplikan Layar",
+ "useFirstDisplayOutput": "Gunakan Output Tampilan Pertama",
+ "failedToCaptureOutput": "Gagal mengambil output pertama",
+ "outputDoesNotExist": "Output tidak ada untuk sel mana pun.",
+ "failedToConvertError": "Gagal mengonversi {{fileName}} ke format base64",
+ "failedToUploadError": "Gagal mengunggah {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Gagal memulai tugas transfer data",
+ "suboptimalPartitionKeyError": "Peringatan: Sistem mendeteksi bahwa koleksi Anda mungkin menggunakan kunci partisi yang kurang optimal",
+ "description": "Saat mengubah kunci partisi kontainer, Anda harus membuat kontainer tujuan dengan kunci partisi yang benar. Anda juga dapat memilih kontainer tujuan yang sudah ada.",
+ "sourceContainerId": "ID {{collectionName}} sumber",
+ "destinationContainerId": "Id {{collectionName}} tujuan",
+ "collectionIdTooltip": "Pengidentifikasi unik untuk {{collectionName}} dan digunakan untuk perutean berbasis id melalui REST dan semua SDK.",
+ "collectionIdPlaceholder": "misalnya, {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} id, Contoh {{collectionName}}1",
+ "existingContainers": "Kontainer yang Sudah Ada",
+ "partitionKeyWarning": "Kontainer tujuan tidak boleh sudah ada. Data Explorer akan membuat kontainer tujuan baru untuk Anda."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Nama ruang kunci",
+ "keyspaceTooltip": "Pilih ruang kunci yang sudah ada atau masukkan ID ruang kunci baru.",
+ "tableIdLabel": "Masukkan perintah CQL untuk membuat tabel.",
+ "enterTableId": "Masukkan id tabel",
+ "tableSchemaAriaLabel": "Skema tabel",
+ "provisionDedicatedThroughput": "Provisikan throughput khusus untuk tabel ini",
+ "provisionDedicatedThroughputTooltip": "Anda juga dapat memprovisikan throughput khusus untuk tabel dalam ruang kunci yang sudah memiliki provisi throughput. Jumlah throughput khusus ini tidak akan dibagikan dengan tabel lain dalam ruang kunci dan tidak dihitung ke dalam throughput yang Anda provisikan untuk ruang kunci tersebut. Jumlah throughput ini akan ditagih di luar throughput yang Anda provisikan di tingkat ruang kunci."
+ },
+ "tables": {
+ "addProperty": "Tambahkan Properti",
+ "addRow": "Tambahkan Baris",
+ "addEntity": "Tambahkan Entitas",
+ "back": "kembali",
+ "nullFieldsWarning": "Peringatan: Field null tidak akan ditampilkan untuk pengeditan.",
+ "propertyEmptyError": "{{property}} tidak boleh kosong. Masukkan nilai untuk {{property}}",
+ "whitespaceError": "{{property}} tidak boleh berisi spasi. Masukkan nilai untuk {{property}} tanpa spasi",
+ "propertyTypeEmptyError": "Jenis properti tidak boleh kosong. Pilih tipe dari dropdown untuk properti {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Pilih kolom yang ingin dikueri.",
+ "availableColumns": "Kolom yang Tersedia"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Pilih kolom yang akan ditampilkan dalam tampilan item di kontainer Anda.",
+ "searchFields": "Bidang pencarian",
+ "reset": "Atur ulang",
+ "partitionKeySuffix": " (kunci partisi)"
+ },
+ "newVertex": {
+ "addProperty": "Tambahkan Properti"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Id kontainer indeks sekunder global",
+ "globalSecondaryIndexIdPlaceholder": "misalnya, indexbyEmailId",
+ "projectionQuery": "Kueri proyeksi",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Pelajari lebih lanjut tentang mendefinisikan indeks sekunder global.",
+ "disabledTitle": "Indeks sekunder global sedang dibuat. Tunggu hingga selesai sebelum memulai yang lain."
+ },
+ "stringInput": {
+ "inputMismatchError": "Input {{input}} tidak cocok dengan {{selectedId}} yang dipilih"
+ },
+ "panelInfo": {
+ "information": "Informasi",
+ "moreDetails": "Detail selengkapnya"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Skalakan",
+ "conflictResolution": "Resolusi Konflik",
+ "settings": "Pengaturan",
+ "indexingPolicy": "Kebijakan Pengindeksan",
+ "partitionKeys": "Kunci Partisi",
+ "partitionKeysPreview": "Kunci Partisi (pratinjau)",
+ "computedProperties": "Properti Terkomputasi",
+ "containerPolicies": "Kebijakan Kontainer",
+ "throughputBuckets": "Wadah Throughput",
+ "globalSecondaryIndexPreview": "Indeks Sekunder Global (Pratinjau)",
+ "maskingPolicyPreview": "Kebijakan Penyembunyian (pratinjau)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Pilih tipe untuk setiap indeks.",
+ "enterFieldNameError": "Masukkan nama bidang.",
+ "wildcardPathError": "Jalur wildcard tidak ada dalam nama bidang. Gunakan pola seperti "
+ },
+ "partitionKey": {
+ "shardKey": "Tombol shard",
+ "partitionKey": "Kunci partisi",
+ "shardKeyTooltip": "Kunci shard (bidang) digunakan untuk membagi data Anda ke banyak set replika (shard) untuk mencapai skalabilitas tanpa batas. Penting memilih bidang yang mendistribusikan data secara merata.",
+ "partitionKeyTooltip": "digunakan untuk mendistribusikan data secara otomatis di seluruh partisi untuk skalabilitas. Pilih properti dalam dokumen JSON Anda yang memiliki berbagai nilai dan mendistribusikan volume permintaan secara merata.",
+ "sqlPartitionKeyTooltipSuffix": " Untuk beban kerja baca berat atau beban kerja tulis berat yang kecil dengan ukuran apa pun, id sering menjadi pilihan yang baik.",
+ "partitionKeySubtext": "Untuk beban kerja kecil, ID item adalah pilihan yang cocok untuk kunci partisi.",
+ "mongoPlaceholder": "misalnya, categoryId",
+ "gremlinPlaceholder": "misalnya, /address",
+ "sqlFirstPartitionKey": "Wajib - kunci partisi pertama misalnya, /TenantId",
+ "sqlSecondPartitionKey": "kunci partisi kedua misalnya, /UserId",
+ "sqlThirdPartitionKey": "kunci partisi ketiga misalnya, /SessionId",
+ "defaultPlaceholder": "misalnya /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Perkiraan biaya*",
+ "howWeCalculate": "Cara menghitung",
+ "updatedCostPerMonth": "Biaya per bulan yang baru",
+ "currentCostPerMonth": "Biaya per bulan saat ini",
+ "perRu": "/RU",
+ "perHour": "/jam",
+ "perDay": "/hari",
+ "perMonth": "/bln"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "RU/dtk maks skala otomatis awal akan ditentukan oleh sistem, berdasarkan pengaturan throughput manual saat ini dan penyimpanan sumber daya Anda. Setelah skala otomatis diaktifkan, Anda dapat mengubah maksimum RU/dtk.",
+ "ttlWarningText": "Sistem akan secara otomatis menghapus item berdasarkan nilai TTL (dalam detik) yang Anda berikan, tanpa perlu operasi penghapusan yang dikeluarkan secara eksplisit oleh aplikasi klien. Untuk informasi selengkapnya, lihat,",
+ "ttlWarningLinkText": "Masa Pakai (TTL) di Azure Cosmos DB",
+ "unsavedIndexingPolicy": "kebijakan pengindeksan",
+ "unsavedDataMaskingPolicy": "kebijakan penyembunyian data",
+ "unsavedComputedProperties": "properti terkomputasi",
+ "unsavedEditorWarningPrefix": "Anda belum menyimpan perubahan terbaru yang dibuat di",
+ "unsavedEditorWarningSuffix": ". Klik simpan untuk mengonfirmasi perubahan.",
+ "updateDelayedApplyWarning": "Anda akan meminta penambahan throughput di atas kapasitas yang dialokasikan sebelumnya. Operasi ini akan memakan waktu beberapa saat.",
+ "scalingUpDelayMessage": "Penskalaan akan memakan waktu 4-6 jam karena melebihi apa yang dapat langsung didukung Azure Cosmos DB berdasarkan jumlah partisi fisik Anda. Anda dapat menaikkan throughput untuk {{instantMaximumThroughput}} langsung atau melanjutkan dengan nilai ini dan menunggu hingga peningkatan skala selesai.",
+ "exceedPreAllocatedMessage": "Permintaan Anda untuk menambah throughput melebihi kapasitas yang dialokasikan sebelumnya yang mungkin memerlukan waktu lebih lama dari yang diharapkan. Ada tiga opsi yang dapat Anda pilih untuk melanjutkan:",
+ "instantScaleOption": "Anda dapat langsung menaikkan skala hingga {{instantMaximumThroughput}} RU/dtk.",
+ "asyncScaleOption": "Anda dapat menaikkan skala secara asinkron ke nilai apa pun di bawah {{maximumThroughput}} RU/dtk dalam 4-6 jam.",
+ "quotaMaxOption": "Maksimum kuota Anda saat ini adalah {{maximumThroughput}} RU/dtk. Untuk menambah di atas batas ini, Anda harus mengajukan permintaan penambahan kuota dan tim Azure Cosmos DB akan meninjaunya.",
+ "belowMinimumMessage": "Anda tidak dapat menurunkan throughput di bawah minimum {{minimum}} RU/dtk saat ini. Untuk informasi selengkapnya tentang batas ini, lihat dokumentasi kutipan layanan kami.",
+ "saveThroughputWarning": "Tagihan Anda akan terpengaruh jika Anda memperbarui pengaturan throughput. Periksa perkiraan biaya yang baru di bawah ini sebelum menyimpan perubahan Anda",
+ "currentAutoscaleThroughput": "Throughput skala otomatis saat ini:",
+ "targetAutoscaleThroughput": "Throughput skala otomatis target:",
+ "currentManualThroughput": "Throughput manual saat ini:",
+ "targetManualThroughput": "Throughput manual target:",
+ "applyDelayedMessage": "Permintaan untuk menambah throughput berhasil dikirimkan. Operasi ini akan memakan waktu 1-3 hari kerja. Tampilkan status terbaru di Pemberitahuan.",
+ "databaseLabel": "Database:",
+ "containerLabel": "Kontainer:",
+ "applyShortDelayMessage": "Permintaan untuk menambah throughput saat ini sedang berlangsung. Operasi ini akan memakan waktu beberapa saat.",
+ "applyLongDelayMessage": "Permintaan untuk menambah throughput saat ini sedang berlangsung. Operasi ini akan memakan waktu 1-3 hari kerja. Tampilkan status terbaru di Pemberitahuan.",
+ "throughputCapError": "Akun Anda saat ini dikonfigurasi dengan total batas throughput {{throughputCap}} RU/dtk. Pembaruan ini tidak dapat dilakukan karena akan menaikkan total throughput menjadi {{newTotalThroughput}} RU/dtk. Ubah total batas throughput di manajemen biaya.",
+ "throughputIncrementError": "Kenaikan nilai throughput harus dalam kelipatan 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Last Write Wins (default)",
+ "customMergeProcedure": "Prosedur Penggabungan (kustom)",
+ "mode": "Mode",
+ "conflictResolverProperty": "Properti Pemecah Konflik",
+ "storedProcedure": "Prosedur tersimpan",
+ "lwwTooltip": "Mengambil atau mengatur nama properti bilangan bulat dalam dokumen Anda yang digunakan untuk skema resolusi konflik berbasis Last Write Wins (LWW). Secara default, sistem menggunakan properti stempel waktu yang ditentukan sistem, _ts untuk memutuskan pemenang untuk versi dokumen yang berkonflik. Tentukan properti bilangan bulat Anda sendiri jika Anda ingin menimpa resolusi konflik berbasis stempel waktu default.",
+ "customTooltip": "Mengambil atau mengatur nama prosedur tersimpan (alias prosedur penggabungan) untuk mengatasi konflik. Anda dapat menulis logika yang ditentukan aplikasi untuk menentukan pemenang versi dokumen yang berkonflik. Prosedur tersimpan akan dijalankan secara transaksi, tepat satu kali, di sisi server. Jika Anda tidak memberikan prosedur tersimpan, konflik akan diisi di",
+ "customTooltipConflictsFeed": " umpan konflik",
+ "customTooltipSuffix": ". Anda dapat memperbarui/mendaftarkan ulang prosedur tersimpan kapan saja."
+ },
+ "changeFeed": {
+ "label": "Ubah kebijakan penyimpanan log umpan",
+ "tooltip": "Memungkinkan kebijakan retensi log umpan perubahan untuk menyimpan riwayat item dalam kontainer hingga 10 menit terakhir secara default. Untuk mendukung hal ini, biaya unit permintaan (RU) untuk kontainer ini akan dikalikan dua untuk penulisan. Pembacaan tidak terpengaruh."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Untuk kueri yang memfilter beberapa properti, buat beberapa indeks bidang tunggal, daripada indeks gabungan.",
+ "disclaimerCompoundIndexesLink": " Indeks gabungan ",
+ "disclaimerSuffix": "hanya digunakan untuk mengurutkan hasil kueri. Jika perlu menambahkan indeks gabungan, Anda dapat membuatnya menggunakan shell Mongo.",
+ "compoundNotSupported": "Koleksi dengan indeks gabungan belum didukung di editor pengindeksan. Untuk mengubah kebijakan pengindeksan untuk koleksi ini, gunakan Mongo Shell.",
+ "aadError": "Untuk menggunakan editor kebijakan pengindeksan, masuk ke",
+ "aadErrorLink": "portal azure.",
+ "refreshingProgress": "Menyegarkan kemajuan transformasi indeks",
+ "canMakeMoreChangesZero": "Anda dapat membuat perubahan pengindeksan lainnya setelah transformasi indeks saat ini selesai. ",
+ "refreshToCheck": "Refresh untuk memeriksa apakah telah selesai.",
+ "canMakeMoreChangesProgress": "Anda dapat membuat perubahan pengindeksan lainnya setelah transformasi indeks saat ini selesai. Proses telah selesai {{progress}}%. ",
+ "refreshToCheckProgress": "Refresh untuk memeriksa kemajuan.",
+ "definitionColumn": "Definisi",
+ "typeColumn": "Tipe",
+ "dropIndexColumn": "Drop indeks",
+ "addIndexBackColumn": "Tambahkan indeks kembali",
+ "deleteIndexButton": "Tombol Hapus Indeks",
+ "addBackIndexButton": "Tombol Tambahkan Kembali Indeks",
+ "currentIndexes": "Indeks saat ini",
+ "indexesToBeDropped": "Indeks yang akan didrop",
+ "indexFieldName": "Nama Bidang Indeks",
+ "indexType": "Tipe Indeks",
+ "selectIndexType": "Pilih tipe indeks",
+ "undoButton": "Tombol Batalkan"
+ },
+ "subSettings": {
+ "timeToLive": "Masa Pakai",
+ "ttlOff": "Nonaktif",
+ "ttlOnNoDefault": "Aktif (tidak ada default)",
+ "ttlOn": "Pada",
+ "seconds": "detik",
+ "timeToLiveInSeconds": "Masa pakai dalam detik",
+ "analyticalStorageTtl": "Masa Pakai Penyimpanan Analitik",
+ "geospatialConfiguration": "Konfigurasi Geospasial",
+ "geography": "Geografi",
+ "geometry": "Geometri",
+ "uniqueKeys": "Kunci unik",
+ "mongoTtlMessage": "Untuk mengaktifkan masa pakai (TTL) untuk koleksi/dokumen Anda,",
+ "mongoTtlLinkText": "buat indeks TTL",
+ "partitionKeyTooltipTemplate": "{{partitionKeyName}} ini digunakan untuk mendistribusikan data ke beberapa partisi untuk skalabilitas. Nilai \"{{partitionKeyValue}}\" menentukan bagaimana dokumen dipartisi.",
+ "largePartitionKeyEnabled": "{{partitionKeyName}} besar telah diaktifkan.",
+ "hierarchicalPartitioned": "Kontainer yang dipartisi secara hierarkis.",
+ "nonHierarchicalPartitioned": "Kontainer yang tidak dipartisi secara hierarki."
+ },
+ "scale": {
+ "freeTierInfo": "Dengan tingkat gratis, Anda akan mendapatkan {{ru}} RU/dtk pertama dan penyimpanan {{storage}} GB di akun ini secara gratis. Agar akun Anda tetap gratis, simpan total RU di semua sumber daya di akun ke {{ru}} RU.",
+ "freeTierLearnMore": "Pelajari selengkapnya.",
+ "throughputRuS": "Throughput (RU/dtk)",
+ "autoScaleCustomSettings": "Akun Anda memiliki pengaturan kustom yang mencegah pengaturan throughput pada tingkat kontainer. Diskusikan dengan titik kontak tim rekayasawan Cosmos DB Anda untuk membuat perubahan.",
+ "keyspaceSharedThroughput": "Throughput bersama tabel ini dikonfigurasi di keyspace",
+ "throughputRangeLabel": "Throughput ({{min}} - {{max}} RU/dtk)",
+ "unlimited": "tidak terbatas"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Ubah {{partitionKeyName}}",
+ "currentPartitionKey": "{{partitionKeyName}} saat Ini",
+ "partitioning": "Pemartisian",
+ "hierarchical": "Hierarkis",
+ "nonHierarchical": "Non-hierarkis",
+ "safeguardWarning": "Untuk melindungi integritas data yang disalin ke kontainer baru, pastikan tidak ada pembaruan yang dibuat ke kontainer sumber selama seluruh durasi proses perubahan kunci partisi.",
+ "changeDescription": "Untuk mengubah kunci partisi, kontainer tujuan baru harus dibuat atau kontainer tujuan yang sudah ada dipilih. Data kemudian akan disalin ke kontainer tujuan.",
+ "changeButton": "Ubah",
+ "changeJob": "{{partitionKeyName}} mengubah tugas",
+ "cancelButton": "Batal",
+ "documentsProcessed": "({{processedCount}} dari {{totalCount}} dokumen diproses)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Properti terkomputasi",
+ "learnMorePrefix": "tentang cara menentukan properti terkomputasi dan cara menggunakannya."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Kebijakan Pengindeksan"
+ },
+ "dataMasking": {
+ "ariaLabel": "Kebijakan Penyembunyian Data",
+ "validationFailed": "Validasi gagal:",
+ "includedPathsRequired": "includedPaths diperlukan",
+ "includedPathsMustBeArray": "includedPaths harus berupa array",
+ "excludedPathsMustBeArray": "excludedPaths harus berupa array jika diberikan"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Kebijakan Vektor",
+ "fullTextPolicy": "Kebijakan Teks Lengkap",
+ "createFullTextPolicy": "Buat kebijakan pencarian teks lengkap baru"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Kontainer ini memiliki indeks yang ditentukan untuknya sebagai berikut.",
+ "learnMoreSuffix": "tentang cara menentukan indeks sekunder global dan cara menggunakannya.",
+ "jsonAriaLabel": "JSON Indeks Sekunder Global",
+ "addIndex": "Tambahkan indeks",
+ "settingsTitle": "Pengaturan Indeks Sekunder Global",
+ "sourceContainer": "Kontainer sumber",
+ "indexDefinition": "Definisi indeks sekunder global"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Penyegaran kemajuan transformasi indeks gagal"
+ },
+ "throughputInput": {
+ "autoscale": "Penskalaan otomatis",
+ "manual": "Manual",
+ "minimumRuS": "RU/dtk minimum",
+ "maximumRuS": "RU/dtk maksimum",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Kapasitas penyimpanan",
+ "fixed": "Tetap",
+ "unlimited": "Tidak terbatas",
+ "instant": "Instan",
+ "fourToSixHrs": "4-6 jam",
+ "autoscaleDescription": "Berdasarkan penggunaan, throughput {{resourceType}} Anda akan diskalakan dari",
+ "freeTierWarning": "Tagihan akan berlaku jika Anda menyediakan lebih dari {{ru}} RU/dtk throughput manual, atau jika sumber daya menaikkan skala melebihi {{ru}} RU/dtk dengan penskalaan otomatis.",
+ "capacityCalculator": "Perkirakan RU/dtk yang Anda perlukan dengan",
+ "capacityCalculatorLink": " kalkulator kapasitas",
+ "fixedStorageNote": "Jika menggunakan koleksi dengan kapasitas penyimpanan tetap, Anda dapat menyiapkan hingga 10.000 RU/dtk.",
+ "min": "min",
+ "max": "maks"
+ },
+ "throughputBuckets": {
+ "label": "Wadah Throughput",
+ "bucketLabel": "Wadah {{id}}",
+ "dataExplorerQueryBucket": " (Wadah Kueri Data Explorer)",
+ "active": "Aktif",
+ "inactive": "Tidak aktif"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/index.ts b/src/Localization/index.ts
new file mode 100644
index 000000000..dd2976d6d
--- /dev/null
+++ b/src/Localization/index.ts
@@ -0,0 +1,2 @@
+export { Keys } from "./Keys.generated";
+export { t } from "./t";
diff --git a/src/Localization/it/Resources.json b/src/Localization/it/Resources.json
new file mode 100644
index 000000000..aeb0c49fd
--- /dev/null
+++ b/src/Localization/it/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Annulla",
+ "close": "Chiudi",
+ "save": "Salva",
+ "delete": "Elimina",
+ "update": "Aggiorna",
+ "discard": "Rimuovi",
+ "execute": "Esegui",
+ "loading": "Caricamento",
+ "loadingEllipsis": "Caricamento...",
+ "next": "Avanti",
+ "previous": "Indietro",
+ "yes": "Sì",
+ "no": "No",
+ "result": "Risultato",
+ "learnMore": "Altre informazioni",
+ "getStarted": "Attività iniziali",
+ "retry": "Riprova",
+ "apply": "Applica",
+ "refresh": "Aggiorna",
+ "copy": "Copia",
+ "create": "Crea",
+ "confirm": "Conferma",
+ "open": "Apri",
+ "rename": "Rinomina",
+ "download": "Scarica",
+ "upload": "Carica",
+ "connect": "Connetti",
+ "remove": "Rimuovi",
+ "load": "Carica",
+ "publish": "Pubblica",
+ "browse": "Sfoglia",
+ "increaseValueBy1": "Aumentare il valore di 1",
+ "decreaseValueBy1": "Diminuisci il valore di 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Benvenuto in Azure Cosmos DB",
+ "postgres": "Benvenuti in Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Benvenuti in Azure DocumentDB (con compatibilità MongoDB)"
+ },
+ "subtitle": {
+ "default": "Servizio database multimodello distribuito a livello globale a qualsiasi livello di scalabilità",
+ "getStarted": "Inizia con i nostri set di dati di esempio, la documentazione e gli strumenti aggiuntivi."
+ },
+ "quickStart": {
+ "title": "Avviare l'avvio rapido",
+ "description": "Avvia un'esercitazione di avvio rapido per iniziare con i dati di esempio"
+ },
+ "newCollection": {
+ "title": "Nuova {{collectionName}}",
+ "description": "Crea un nuovo contenitore per archiviazione e velocità effettiva"
+ },
+ "samplesGallery": {
+ "title": "Galleria di esempi di Azure Cosmos DB",
+ "description": "Scoprire esempi che mostrano modelli di app scalabili e intelligenti. Prova subito uno di questi esempi per vedere quanto velocemente puoi passare dal concetto al codice con Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Connetti",
+ "description": "Preferisci usare gli strumenti che scegli tu? Trova la stringa di connessione necessaria per collegarti",
+ "pgAdmin": {
+ "title": "Connettiti con pgAdmin",
+ "description": "Preferisci pgAdmin? Trovare le stringhe di connessione qui"
+ },
+ "vsCode": {
+ "title": "Connetti con VS Code",
+ "description": "Esegui query e gestisci i cluster MongoDB e DocumentDB in Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Shell di PostgreSQL",
+ "description": "Creare una tabella e interagire con i dati usando l'interfaccia shell di PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Shell Mongo",
+ "description": "Creare una raccolta e interagire con i dati usando l'interfaccia shell di MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Nuovo utente di Cosmos DB PGSQL?",
+ "body": "Ti diamo il benvenuto! Se non si ha familiarità con Cosmos DB PGSQL e si ha bisogno di assistenza per iniziare, qui è possibile trovare dati di esempio ed eseguire query."
+ },
+ "resetPassword": {
+ "headline": "Crea la password",
+ "body": "Se la password non è ancora stata modificata, modificarla ora."
+ },
+ "coachMark": {
+ "headline": "Inizia con l'esempio {{collectionName}}",
+ "body": "L'utente verrà guidato nella creazione di un contenitore di esempio con dati di esempio, quindi verrà visualizzata una presentazione di Esplora dati. È anche possibile annullare l'avvio di questa presentazione ed eseguire l'esplorazione da soli"
+ }
+ },
+ "sections": {
+ "recents": "Recenti",
+ "clearRecents": "Cancella recenti",
+ "top3": "Le 3 cose principali da sapere",
+ "learningResources": "Risorse di formazione",
+ "nextSteps": "Passaggi successivi",
+ "tipsAndLearnMore": "Suggerimenti e altre informazioni",
+ "notebook": "Notebook",
+ "needHelp": "Serve aiuto?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Modelli di modellazione avanzati",
+ "description": "Informazioni sulle strategie avanzate per ottimizzare il database."
+ },
+ "partitioning": {
+ "title": "Procedure consigliate per il partizionamento",
+ "description": "Informazioni su come applicare il modello di dati e le strategie di partizionamento."
+ },
+ "resourcePlanning": {
+ "title": "Pianifica i requisiti delle risorse",
+ "description": "Informazioni sulle diverse opzioni di configurazione."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Cos'è l'API MongoDB?",
+ "description": "Informazioni su Azure Cosmos DB for MongoDB e le relative funzionalità."
+ },
+ "features": {
+ "title": "Funzionalità e sintassi",
+ "description": "Scoprire i vantaggi e le funzionalità"
+ },
+ "migrate": {
+ "title": "Esegui la migrazione dei dati",
+ "description": "Passaggi preliminari per la migrazione dei dati"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Crea un'app Java",
+ "description": "Crea un'app Java usando un SDK."
+ },
+ "partitioning": {
+ "title": "Procedure consigliate per il partizionamento",
+ "description": "Informazioni sul funzionamento del partizionamento."
+ },
+ "requestUnits": {
+ "title": "Unità richiesta",
+ "description": "Informazioni sugli addebiti per le UR."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modellazione dei dati",
+ "description": "Raccomandazioni per la modellazione dei dati di Graph"
+ },
+ "partitioning": {
+ "title": "Procedure consigliate per il partizionamento",
+ "description": "Informazioni sul funzionamento del partizionamento"
+ },
+ "queryData": {
+ "title": "Esegui query sui dati",
+ "description": "Esecuzione di query sui dati con Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Cos'è l'API Table?",
+ "description": "Informazioni su Azure Cosmos DB for Table e le relative funzionalità"
+ },
+ "migrate": {
+ "title": "Esegui la migrazione dei dati",
+ "description": "Informazioni su come eseguire la migrazione dei dati"
+ },
+ "faq": {
+ "title": "Domande frequenti su Azure Cosmos DB for Table",
+ "description": "Domande comuni su Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Scelte rapide da tastiera di Esplora dati",
+ "description": "Informazioni sulle scelte rapide da tastiera per spostarsi in Esplora dati."
+ },
+ "liveTv": {
+ "title": "Informazioni sulle nozioni fondamentali",
+ "description": "Guarda il programma Azure Cosmos DB Live TV e i video introduttivi e dimostrativi."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Attività iniziali con un SDK",
+ "description": "Informazioni sull'SDK di Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Esegui la migrazione dei dati",
+ "description": "Esegui la migrazione dei dati con i servizi di Azure e le soluzioni open source."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Crea un'app con Node.js",
+ "description": "Crea un'app Node.js."
+ },
+ "gettingStarted": {
+ "title": "Guida introduttiva",
+ "description": "Informazioni di base per iniziare."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Crea un contenitore",
+ "description": "Informazioni sulle opzioni di creazione di un contenitore."
+ },
+ "throughput": {
+ "title": "Provisioning velocità effettiva",
+ "description": "Informazioni su come configurare la velocità effettiva."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Attività iniziali ",
+ "description": "Crea, esegui query e naviga usando la console Gremlin"
+ },
+ "importData": {
+ "title": "Importa dati di Graph",
+ "description": "Informazioni sull'inserimento di dati in blocco con BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Crea un'app .NET",
+ "description": "Come accedere ad Azure Cosmos DB for Table da un'app .NET."
+ },
+ "java": {
+ "title": "Crea un'app Java",
+ "description": "Crea un'app Azure Cosmos DB for Table con Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modellazione dei dati",
+ "distributionColumn": "Come scegliere una colonna di distribuzione",
+ "buildApps": "Crea app con Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Esegui la migrazione dei dati",
+ "vectorSearch": "Crea app IA con Ricerca vettoriale",
+ "buildApps": "Crea app con Node.js"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Ottimizzazione delle prestazioni",
+ "diagnosticQueries": "Query diagnostiche utili",
+ "sqlReference": "Riferimento SQL distribuito"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Ricerca vettoriale",
+ "textIndexing": "Indicizzazione del testo",
+ "troubleshoot": "Risolvere i problemi comuni"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Crea il database",
+ "useTitle": "Usa il database",
+ "newContainer": {
+ "title": "Nuovo contenitore",
+ "description": "Crea un contenitore di destinazione per archiviare i dati"
+ },
+ "sampleData": {
+ "title": "Dati di esempio",
+ "description": "Carica i dati di esempio nel database"
+ },
+ "sampleVectorData": {
+ "title": "Dati vettoriali di esempio",
+ "description": "Carica dati vettoriali di esempio con text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Sviluppo di app",
+ "description": "Inizia da qui per usare un SDK per creare le app"
+ },
+ "sampleGallery": {
+ "title": "Raccolta di esempi",
+ "description": "Ottieni esempi end-to-end reali"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Dati di esempio",
+ "startButton": "Avvia",
+ "createPrompt": "Crea un contenitore \"{{containerName}}\" e importa al suo interno i dati di esempio. L'operazione potrebbe richiedere alcuni minuti.",
+ "creatingContainer": "Creazione del contenitore \"{{containerName}}\"...",
+ "importingData": "Importazione dei dati in \"{{containerName}}\"...",
+ "success": "Creazione di \"{{containerName}}\" con dati di esempio completata.",
+ "errorContainerExists": "Il contenitore \"{{containerName}}\" nel database \"{{databaseName}}\" esiste già. Eliminarlo e riprovare.",
+ "errorCreateContainer": "Non è possibile creare il contenitore {{error}}",
+ "errorImportData": "Non è possibile importare i dati: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nuovo {{containerName}}",
+ "restoreContainer": "Ripristina {{containerName}}",
+ "deleteDatabase": "Elimina {{databaseName}}",
+ "deleteContainer": "Elimina {{containerName}}",
+ "newSqlQuery": "Nuova query SQL",
+ "newQuery": "Nuova query",
+ "openMongoShell": "Apri shell Mongo",
+ "newShell": "Nuova Shell",
+ "openCassandraShell": "Apri shell Cassandra",
+ "newStoredProcedure": "Nuova stored procedure",
+ "newUdf": "Nuova funzione definita dall'utente",
+ "newTrigger": "Nuovo trigger",
+ "deleteStoredProcedure": "Elimina stored procedure",
+ "deleteTrigger": "Elimina trigger",
+ "deleteUdf": "Elimina funzione definita dall'utente"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nuovo elemento",
+ "newDocument": "Nuovo documento",
+ "uploadItem": "Carica elemento",
+ "applyFilter": "Applica filtro",
+ "unsavedChanges": "Modifiche non salvate",
+ "unsavedChangesMessage": "Le modifiche non salvate andranno perse. Continuare?",
+ "createDocumentFailed": "Non è possibile creare il documento",
+ "updateDocumentFailed": "Non è possibile aggiornare il documento",
+ "documentDeleted": "Documento eliminato correttamente.",
+ "deleteDocumentDialogTitle": "Eliminare il documento",
+ "deleteDocumentsDialogTitle": "Elimina documenti",
+ "throttlingError": "Alcuni documenti non sono stati eliminati a causa di un errore di limitazione della velocità. Riprova più tardi. Per evitare che si ripeta in futuro, valuta la possibilità di aumentare la velocità effettiva nel tuo contenitore o database.",
+ "deleteFailed": "Eliminazione documento/i non riuscita ({{error}})",
+ "missingShardProperty": "Nel documento manca la proprietà di partizione: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Aggiornamento griglia documenti non riuscito",
+ "confirmDelete": "Eliminare {{documentName}}?",
+ "confirmDeleteTitle": "Conferma eliminazione",
+ "selectedItems": "i {{count}} elementi selezionati",
+ "selectedItem": "l'elemento selezionato",
+ "selectedDocuments": "i {{count}} documenti selezionati",
+ "selectedDocument": "il documento selezionato",
+ "deleteDocumentFailedLog": "Non è possibile eliminare il documento {{documentId}} con codice di stato {{statusCode}}",
+ "deleteSuccessLog": "Eliminazione di {{count}} documento/i eseguita correttamente",
+ "deleteThrottledLog": "Non è possibile eliminare {{count}} documento/i a causa di un errore di tipo \"Richiesta troppo grande\" (429). Nuovo tentativo in corso...",
+ "missingShardKeyLog": "Non è possibile salvare il nuovo documento: chiave di partizione del documento non definita",
+ "filterTooltip": "Digitare un predicato di query o sceglierne uno dall'elenco.",
+ "loadMore": "Carica altro",
+ "documentEditor": "Editor di documenti",
+ "savedFilters": "Filtri salvati",
+ "defaultFilters": "Filtri predefiniti",
+ "abort": "Interrompi",
+ "deletingDocuments": "Eliminazione di {{count}} documento/i",
+ "deletedDocumentsSuccess": "Eliminazione di {{count}} documento/i eseguita correttamente.",
+ "deleteAborted": "L'eliminazione di uno o più documenti è stata interrotta.",
+ "failedToDeleteDocuments": "Non è possibile eliminare {{count}} documento/i.",
+ "requestTooLargeBase": "Non è possibile eliminare alcune richieste a causa di un'eccezione di tipo \"Richiesta troppo grande\" (429)",
+ "retriedSuccessfully": "ma un nuovo tentativo è andato a buon fine.",
+ "retryingNow": "Nuovo tentativo in corso.",
+ "increaseThroughputTip": "Per evitare che si ripeta in futuro, valuta la possibilità di aumentare la velocità effettiva nel tuo contenitore o database.",
+ "numberOfSelectedDocuments": "Numero di documenti selezionati: {{count}}",
+ "mongoFilterPlaceholder": "Digitare un predicato di query (ad esempio {\"id\":\"foo\"}), sceglierne uno dall'elenco a discesa oppure lasciare vuoto il campo per eseguire la query su tutti i documenti.",
+ "sqlFilterPlaceholder": "Digitare un predicato di query (ad esempio WHERE c.id=\"1\"), sceglierne uno dall'elenco a discesa oppure lasciare vuoto il campo per eseguire la query su tutti i documenti.",
+ "error": "Errore",
+ "warning": "Avviso"
+ },
+ "query": {
+ "executeQuery": "Esegui query",
+ "executeSelection": "Esegui selezione",
+ "saveQuery": "Salva query",
+ "downloadQuery": "Scarica query",
+ "cancelQuery": "Annulla query",
+ "openSavedQueries": "Apri query salvate",
+ "vertical": "Verticale",
+ "horizontal": "Orizzontale",
+ "view": "Visualizza",
+ "editingQuery": "Modifica della query"
+ },
+ "storedProcedure": {
+ "id": "ID stored procedure",
+ "idPlaceholder": "Immettere il nuovo ID stored procedure",
+ "idAriaLabel": "ID stored procedure",
+ "body": "Corpo della stored procedure",
+ "bodyAriaLabel": "Corpo stored procedure",
+ "successfulExecution": "Stored procedure eseguita correttamente",
+ "resultAriaLabel": "Eseguire il risultato della stored procedure",
+ "logsAriaLabel": "Eseguire log delle stored procedure",
+ "errors": "Errori:",
+ "errorDetailsAriaLabel": "Collegamento dettagli errori",
+ "moreDetails": "Altri dettagli",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID trigger",
+ "idPlaceholder": "Immettere il nuovo ID trigger",
+ "type": "Tipo di trigger",
+ "operation": "Operazione trigger",
+ "body": "Corpo trigger",
+ "bodyAriaLabel": "Corpo del trigger",
+ "pre": "Pre",
+ "post": "Pubblicare",
+ "all": "Tutti",
+ "operationCreate": "Crea",
+ "operationDelete": "Elimina",
+ "operationReplace": "Sostituisci"
+ },
+ "udf": {
+ "id": "ID funzione definita dall'utente",
+ "idPlaceholder": "Immettere l'ID della nuova funzione definita dall'utente",
+ "body": "Corpo della funzione definita dall'utente",
+ "bodyAriaLabel": "Corpo della funzione definita dall'utente"
+ },
+ "conflicts": {
+ "unsavedChanges": "Modifiche non salvate",
+ "changesWillBeLost": "Le modifiche andranno perse. Continuare?",
+ "resolveConflictFailed": "Risoluzione conflitto non riuscita",
+ "deleteConflictFailed": "Non è possibile eliminare il conflitto",
+ "refreshGridFailed": "Aggiornamento griglia documenti non riuscito"
+ },
+ "mongoShell": {
+ "title": "Shell Mongo"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Qual è il motivo per cui si sta eliminando {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Elimina {{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!",
+ "feedbackReason": "Qual è il motivo per cui si sta eliminando {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Database {{suffix}}",
+ "databaseIdLabel": "ID database",
+ "keyspaceIdLabel": "ID spazio chiavi",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "ID {{collectionName}}, esempio {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Sceglierne un id {{databaseName}} esistente",
+ "existingDatabasePlaceholder": "Sceglierne un id {{databaseName}} esistente",
+ "indexing": "Indicizzazione",
+ "turnOnIndexing": "Attiva indicizzazione",
+ "automatic": "Automatico",
+ "turnOffIndexing": "Disattiva indicizzazione",
+ "off": "Disattivato",
+ "sharding": "Partizionamento orizzontale",
+ "shardingTooltip": "Le raccolte partizionate distribuiscono i dati su molti set di repliche (partizioni) per ottenere scalabilità illimitata. Le raccolte partizionate richiedono la scelta di una chiave di partizione (campo) per distribuire uniformemente i dati.",
+ "unsharded": "Non partizionato",
+ "unshardedLabel": "Non partizionato (limite di 20 GB)",
+ "sharded": "Partizionato",
+ "addPartitionKey": "Aggiungi chiave di partizione gerarchica",
+ "hierarchicalPartitionKeyInfo": "Questa funzionalità consente di partizionare i dati con fino a tre livelli di chiavi per una migliore distribuzione dei dati. Richiede .NET V3, Java V4 SDK o JavaScript V3 SDK in anteprima.",
+ "provisionDedicatedThroughput": "Eseguire il provisioning della velocità effettiva dedicata per {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "È possibile effettuare facoltativamente il provisioning di una velocità effettiva dedicata per un {{collectionName}} di un database che ha già una velocità effettiva con provisioning. Questa velocità effettiva dedicata non sarà condivisa con altri {{collectionNamePlural}} nel database e non verrà conteggiata nella velocità effettiva con provisioning per il database. Questa velocità effettiva verrà fatturata in aggiunta a quella con provisioning a livello di database.",
+ "uniqueKeysPlaceholderMongo": "Percorsi separati da virgole, ad esempio, firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Percorsi separati da virgole, ad esempio /firstName,/address/zipCode",
+ "addUniqueKey": "Aggiungi chiave univoca",
+ "enableAnalyticalStore": "Abilita archivio analitico",
+ "disableAnalyticalStore": "Disabilita archivio analitico",
+ "on": "Attivato",
+ "analyticalStoreSynapseLinkRequired": "Il Collegamento ad Azure Synapse è necessario per creare un archivio analitico {{collectionName}}. Abilita Collegamento ad Azure Synapse per questo account Cosmos DB.",
+ "enable": "Abilita",
+ "containerVectorPolicy": "Criteri vettore contenitore",
+ "containerFullTextSearchPolicy": "Criterio di ricerca full-text contenitore",
+ "advanced": "Avanzate",
+ "mongoIndexingTooltip": "Il campo _id è indicizzato per impostazione predefinita. La creazione di un indice di caratteri jolly per tutti i campi ottimizza le query ed è consigliata per lo sviluppo.",
+ "createWildcardIndex": "Creare un indice di caratteri jolly su tutti i campi",
+ "legacySdkCheckbox": "L'applicazione usa una versione precedente di Cosmos .NET o Java SDK (.NET V1 o Java V2)",
+ "legacySdkInfo": "Per garantire la compatibilità con SDK meno recenti, il contenitore creato utilizzerà uno schema di partizionamento legacy che supporta valori di chiave di partizione di dimensioni di fino a 101 byte. Se questa opzione è abilitata, non sarà possibile usare chiavi di partizione gerarchiche.",
+ "indexingOnInfo": "Tutte le proprietà nei documenti verranno indicizzate per impostazione predefinita per query flessibili ed efficienti.",
+ "indexingOffInfo": "L'indicizzazione verrà disattivata. Consigliato se non è necessario eseguire query o se si effettuano solo operazioni chiave-valore.",
+ "indexingOffWarning": "Creando questo contenitore con indicizzazione disattivata, non sarà possibile modificare i criteri di indicizzazione. Le modifiche sono consentite solo su contenitori con un criterio di indicizzazione attivo.",
+ "acknowledgeSpendErrorMonthly": "Confermare la spesa mensile stimata.",
+ "acknowledgeSpendErrorDaily": "Confermare la spesa giornaliera stimata.",
+ "unshardedMaxRuError": "Le raccolte non partizionate supportano fino a 10.000 UR",
+ "acknowledgeShareThroughputError": "Confermare il costo stimato di questa velocità effettiva dedicata.",
+ "vectorPolicyError": "Correggere gli errori nei criteri sul vettore contenitore",
+ "fullTextSearchPolicyError": "Correggere gli errori nei criteri di ricerca full-text del contenitore",
+ "addingSampleDataSet": "Aggiunta dei set di dati di esempio",
+ "databaseFieldLabelName": "Nome del database",
+ "databaseFieldLabelId": "ID database",
+ "newDatabaseIdPlaceholder": "Digitare un nuovo ID database",
+ "newDatabaseIdAriaLabel": "Nuovo ID database. Digitare un nuovo ID database",
+ "createNewDatabaseAriaLabel": "Creare nuovo database",
+ "useExistingDatabaseAriaLabel": "Usare database esistente",
+ "chooseExistingDatabase": "Utilizza un database esistente",
+ "teachingBubble": {
+ "step1Headline": "Creare set di dati campione",
+ "step1Body": "Il database è l'elemento principale di un contenitore. È possibile creare un nuovo database o usarne uno esistente. In questo tutorial creeremo un nuovo database denominato SampleDB.",
+ "step1LearnMore": "Altre informazioni sulle risorse.",
+ "step2Headline": "Impostazione della velocità effettiva",
+ "step2Body": "Cosmos DB consiglia di condividere la velocità effettiva tra i database. La scalabilità automatica offre una velocità effettiva flessibile basata sul valore massimo di UR/s impostato (unità di richiesta).",
+ "step2LearnMore": "Altre informazioni su UR/s.",
+ "step3Headline": "Denominare il contenitore",
+ "step3Body": "Immettere il nome del contenitore",
+ "step4Headline": "Impostazione della chiave di partizione",
+ "step4Body": "Ultimo passaggio: è necessario definire una chiave di partizione per la raccolta. Per questo esempio è stata scelta /address. Una buona chiave di partizione deve avere un'ampia gamma di valori possibili",
+ "step4CreateContainer": "Creare contenitore",
+ "step5Headline": "Creazione del contenitore campione",
+ "step5Body": "È in corso la creazione di un contenitore campione e stiamo aggiungendo dati campione. L'operazione dovrebbe richiedere circa 1 minuto.",
+ "step5BodyFollowUp": "Una volta creato il contenitore campione, esaminare il set di dati campione e seguire i passaggi successivi",
+ "stepOfTotal": "Passaggio {{current}} di {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "La chiave di partizione (campo) viene usata per distribuire i dati su molti set di repliche (partizioni) per ottenere scalabilità illimitata. È fondamentale scegliere un campo che distribuisca uniformemente i dati.",
+ "partitionKeyTooltip": "{{partitionKeyName}} viene usata per distribuire automaticamente i dati tra le partizioni per la scalabilità. Scegliere una proprietà nel documento JSON che abbia un'ampia gamma di valori e distribuisca uniformemente il volume delle richieste.",
+ "partitionKeyTooltipSqlSuffix": " Per carichi di lavoro piccoli e con molte letture o per carichi di qualsiasi dimensione con molte scritture, ID è spesso una buona scelta.",
+ "shardKeyLabel": "Chiave di partizione",
+ "partitionKeyLabel": "Chiave di partizione",
+ "shardKeyPlaceholder": "Ad esempio, categoryId",
+ "partitionKeyPlaceholderDefault": "Ad esempio, /address",
+ "partitionKeyPlaceholderFirst": "Obbligatorio - prima chiave di partizione, ad esempio /TenantId",
+ "partitionKeyPlaceholderSecond": "seconda chiave di partizione, ad esempio /UserId",
+ "partitionKeyPlaceholderThird": "terza chiave di partizione, ad esempio /SessionId",
+ "partitionKeyPlaceholderGraph": "Ad esempio, /address/zipCode",
+ "uniqueKeysTooltip": "Le chiavi univoche permettono agli sviluppatori di aggiungere un livello di integrità dei dati al database. Creando un criterio di chiave univoca alla creazione del contenitore, si garantisce l'unicità di uno o più valori per chiave di partizione.",
+ "uniqueKeysLabel": "Chiavi univoche",
+ "analyticalStoreLabel": "Archivio analitico",
+ "analyticalStoreTooltip": "Abilitare la funzionalità di archivio analitico per eseguire analisi near real-time sui dati operativi, senza influire sulle prestazioni dei carichi di lavoro transazionali.",
+ "analyticalStoreDescription": "Abilitare la funzionalità di archivio analitico per eseguire analisi near real-time sui dati operativi, senza influire sulle prestazioni dei carichi di lavoro transazionali.",
+ "vectorPolicyTooltip": "Descrivere le proprietà nei dati che contengono vettori, in modo che possano essere rese disponibili per query di similarità."
+ },
+ "settings": {
+ "pageOptions": "Opzioni pagina",
+ "pageOptionsDescription": "Scegliere Personalizzato per specificare un numero fisso di risultati della query da visualizzare, oppure Senza limiti per mostrare quanti più risultati possibile per pagina.",
+ "queryResultsPerPage": "Risultati query per pagina",
+ "queryResultsPerPageTooltip": "Immettere il numero di risultati della query da visualizzare per pagina.",
+ "customQueryItemsPerPage": "Elementi query personalizzati per pagina",
+ "custom": "Personalizzato",
+ "unlimited": "Senza limiti",
+ "entraIdRbac": "Abilita controllo degli accessi in base al ruolo per Entra ID",
+ "entraIdRbacDescription": "Scegliere Automatico per abilitare automaticamente il controllo degli accessi in base al ruolo di Entra ID. True/False per forzare l'abilitazione/disabilitazione del controllo degli accessi in base al ruolo di Entra ID.",
+ "true": "Vero",
+ "false": "Falso",
+ "regionSelection": "Selezione area",
+ "regionSelectionDescription": "Modifica l'area geografica che il client Cosmos usa per accedere all'account.",
+ "selectRegion": "Seleziona area",
+ "selectRegionTooltip": "Modifica l'endpoint dell'account usato per eseguire le operazioni client.",
+ "globalDefault": "Globale (impostazione predefinita)",
+ "readWrite": "(Lettura/Scrittura)",
+ "read": "(Lettura)",
+ "queryTimeout": "Timeout query",
+ "queryTimeoutDescription": "Quando una query raggiunge un limite di tempo specificato, viene mostrato un popup con l'opzione per annullare la query, a meno che non sia stato abilitato l'annullamento automatico.",
+ "enableQueryTimeout": "Abilita timeout query",
+ "queryTimeoutMs": "Timeout query (ms)",
+ "automaticallyCancelQuery": "Cancella automaticamente la query dopo il timeout",
+ "ruLimit": "Limite UR",
+ "ruLimitDescription": "Se una query supera un limite di UR configurato, la query verrà interrotta.",
+ "enableRuLimit": "Abilita limite UR",
+ "ruLimitLabel": "Limite UR (UR)",
+ "defaultQueryResults": "Visualizzazione predefinita dei risultati della query",
+ "defaultQueryResultsDescription": "Selezionare la visualizzazione predefinita da usare per mostrare i risultati della query.",
+ "retrySettings": "Impostazioni nuovi tentativi",
+ "retrySettingsDescription": "Criteri di ripetizione associati alle richieste limitate durante le query di CosmosDB.",
+ "maxRetryAttempts": "Numero massimo di nuovi tentativi",
+ "maxRetryAttemptsTooltip": "Numero massimo di nuovi tentativi da eseguire per una richiesta. Valore predefinito 9.",
+ "fixedRetryInterval": "Intervallo fisso tra tentativi (ms)",
+ "fixedRetryIntervalTooltip": "Intervallo tra tentativi fisso di attesa in millisecondi tra ogni tentativo, ignorando il valore retryAfter restituito nella risposta. Il valore predefinito è 0 millisecondi.",
+ "maxWaitTime": "Tempo massimo di attesa (s)",
+ "maxWaitTimeTooltip": "Tempo massimo di attesa in secondi per una richiesta durante i nuovi tentativi. Il valore predefinito è 30 secondi.",
+ "enableContainerPagination": "Abilita impaginazione contenitore",
+ "enableContainerPaginationDescription": "Carica 50 contenitori alla volta. Attualmente, i contenitori non vengono caricati in ordine alfanumerico.",
+ "enableCrossPartitionQuery": "Abilita query su più partizioni",
+ "enableCrossPartitionQueryDescription": "Invia più di una richiesta durante l'esecuzione di una query. Sono necessarie più richieste se l'ambito della query non è limitato a un singolo valore di chiave di partizione.",
+ "maxDegreeOfParallelism": "Massimo grado di parallelismo",
+ "maxDegreeOfParallelismDescription": "Ottiene o imposta il numero di operazioni simultanee eseguite lato client durante l'esecuzione parallela di query. Un valore positivo limita il numero di operazioni simultanee al valore impostato. Se impostato su un valore inferiore a 0, il sistema decide automaticamente quante operazioni simultanee eseguire.",
+ "maxDegreeOfParallelismQuery": "Esegui query fino al massimo grado di parallelismo.",
+ "priorityLevel": "Livello di priorità",
+ "priorityLevelDescription": "Imposta il livello di priorità per le richieste del piano dati da Esplora dati quando si usa Esecuzione basata sulla priorità. Se si seleziona \"Nessuno\", Esplora dati non specificherà il livello di priorità e verrà usato il livello predefinito lato server.",
+ "displayGremlinQueryResults": "Visualizza i risultati della query Gremlin come:",
+ "displayGremlinQueryResultsDescription": "Selezionare Graph per visualizzare automaticamente i risultati della query come grafico o JSON per visualizzarli come JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualizzazione automatica Graph",
+ "enableSampleDatabase": "Abilita database di esempio",
+ "enableSampleDatabaseDescription": "Questo è un database e una raccolta di esempio con dati prodotto sintetici che è possibile usare per esplorare le query NoSQL. Verrà visualizzato come un altro database nell'interfaccia Esplora dati, ed è creato e mantenuto da Microsoft gratuitamente.",
+ "enableSampleDbAriaLabel": "Abilita database di esempio per l'esplorazione delle query",
+ "guidRepresentation": "Dichiarazione GUID",
+ "guidRepresentationDescription": "GuidRepresentation in MongoDB indica come gli identificatori univoci globali (GUID) vengono serializzati e deserializzati quando archiviati in documenti BSON. Si applica a tutte le operazioni sui documenti.",
+ "advancedSettings": "Impostazioni avanzate",
+ "ignorePartitionKey": "Ignora chiave di partizione durante l'aggiornamento del documento",
+ "ignorePartitionKeyTooltip": "Se selezionato, il valore della chiave di partizione non verrà usato per individuare il documento durante le operazioni di aggiornamento. Usare solo se gli aggiornamenti del documento non riescono a causa di una chiave di partizione anomala.",
+ "clearHistory": "Cancella cronologia",
+ "clearHistoryConfirm": "Continuare?",
+ "clearHistoryDescription": "Questa azione cancellerà tutte le personalizzazioni per questo account in questo browser, tra cui:",
+ "clearHistoryTabLayout": "Reimpostare il layout di scheda personalizzato, incluse le posizioni della barra di divisione",
+ "clearHistoryTableColumns": "Cancellare le preferenze di colonna della tabella, incluse le colonne personalizzate",
+ "clearHistoryFilters": "Cancella cronologia filtri",
+ "clearHistoryRegion": "Reimposta la selezione dell'area geografica su globale",
+ "increaseValueBy1000": "Aumentare il valore di 1000",
+ "decreaseValueBy1000": "Riduci valore di 1000",
+ "none": "Nessuno",
+ "low": "Basso",
+ "high": "Alto",
+ "automatic": "Automatico",
+ "enhancedQueryControl": "Controllo query avanzato",
+ "enableQueryControl": "Abilita controllo query",
+ "explorerVersion": "Versione di Explorer",
+ "accountId": "ID account",
+ "sessionId": "ID sessione",
+ "popupsDisabledError": "Non è stato possibile stabilire l'autorizzazione per questo account perché i popup sono disabilitati nel browser.\nAbilitare i popup per questo sito e fare clic sul pulsante \"Accedi per Entra ID\"",
+ "failedToAcquireTokenError": "Non è stato possibile acquisire il token di autorizzazione automaticamente. Fare clic sul pulsante \"Accedi per Entra ID\" per abilitare le operazioni di controllo degli accessi in base al ruolo di Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Salva query",
+ "setupCostMessage": "Per motivi di conformità, le query vengono salvate in un contenitore nell'account Azure Cosmos, in un database separato chiamato \"{{databaseName}}\". Per procedere, è necessario creare un contenitore nell'account, il costo aggiuntivo stimato è di 0,77 $ al giorno.",
+ "completeSetup": "Completa configurazione",
+ "noQueryNameError": "Nessun nome query specificato",
+ "invalidQueryContentError": "Contenuto query non valido specificato",
+ "failedToSaveQueryError": "Non è stato possibile salvare la query {{queryName}}",
+ "failedToSetupContainerError": "Non è stato possibile configurare un contenitore per le query salvate",
+ "accountNotSetupError": "Non è stato possibile salvare la query: l'account non è configurato per salvare query",
+ "name": "Nome"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nessun file specificato",
+ "failedToLoadQueryError": "Non è stato possibile caricare la query",
+ "failedToLoadQueryFromFileError": "Non è stato possibile caricare la query dal file {{fileName}}",
+ "selectFilesToOpen": "Selezionare un documento di query",
+ "browseFiles": "Esplora"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Inserisci i parametri di input (se presenti)",
+ "key": "Chiave",
+ "param": "Parametro",
+ "partitionKeyValue": "Valore chiave di partizione",
+ "value": "Valore",
+ "addNewParam": "Aggiungi nuovo parametro",
+ "addParam": "Aggiungi parametro",
+ "deleteParam": "Elimina parametro",
+ "invalidParamError": "Parametro non valido specificato: {{invalidParam}}",
+ "invalidParamConsoleError": "Parametro specificato non valido: {{invalidParam}} non è un valore letterale valido",
+ "stringType": "Stringa",
+ "customType": "Personalizzato"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Non è stato specificato alcun file. Immettere almeno un file.",
+ "selectJsonFiles": "Seleziona Files JSON",
+ "selectJsonFilesTooltip": "Selezionare uno o più file JSON da caricare. Ogni file può contenere un singolo documento JSON o una matrice di documenti JSON. Le dimensioni combinate di tutti i file in una singola operazione di caricamento deve essere inferiore a 2 MB. Per set di dati più grandi, è possibile eseguire più operazioni di caricamento.",
+ "fileNameColumn": "NOME FILE",
+ "statusColumn": "STATO",
+ "uploadStatus": "{{numSucceeded}} creati, {{numThrottled}} con limitazione, {{numFailed}} errori",
+ "uploadedFiles": "File caricati"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Non è stato possibile copiare {{name}} in {{destination}}",
+ "uploadFailedError": "Non è possibile caricare {{name}}",
+ "location": "Posizione",
+ "locationAriaLabel": "Posizione",
+ "selectLocation": "Selezionare una posizione del notebook in cui copiare",
+ "name": "Nome"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Non è stato possibile pubblicare {{notebookName}} nella raccolta",
+ "publishDescription": "Quando viene pubblicato, questo notebook sarà visualizzato nella raccolta pubblica di Azure Cosmos DB. Assicurarsi di aver rimosso dati o output sensibili prima della pubblicazione.",
+ "publishPrompt": "Pubblicare e condividere \"{{name}}\" nella raccolta?",
+ "coverImage": "Immagine di copertina",
+ "coverImageUrl": "URL immagine di copertina",
+ "name": "Nome",
+ "description": "Descrizione",
+ "tags": "Tag",
+ "tagsPlaceholder": "Tag facoltativo 1, tag facoltativo 2",
+ "preview": "Anteprima",
+ "urlType": "URL",
+ "customImage": "Immagine personalizzata",
+ "takeScreenshot": "Crea screenshot",
+ "useFirstDisplayOutput": "Usa output prima visualizzazione",
+ "failedToCaptureOutput": "Non è stato possibile acquisire il primo output",
+ "outputDoesNotExist": "L'output non esiste per nessuna delle celle.",
+ "failedToConvertError": "Non è stato possibile convertire {{fileName}} nel formato base64",
+ "failedToUploadError": "Non è possibile caricare {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Non è stato possibile avviare il processo di trasferimento dati",
+ "suboptimalPartitionKeyError": "Avviso: il sistema ha rilevato che la raccolta potrebbe usare una chiave di partizione non ottimale",
+ "description": "Quando si modifica la chiave di partizione di un contenitore, è necessario creare un contenitore di destinazione con la chiave corretta. È anche possibile selezionare un contenitore di destinazione esistente.",
+ "sourceContainerId": "ID {{collectionName}} origine",
+ "destinationContainerId": "ID {{collectionName}} destinazione",
+ "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",
+ "collectionIdAriaLabel": "ID {{collectionName}}, esempio {{collectionName}}1",
+ "existingContainers": "Contenitori esistenti",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Aggiungi proprietà",
+ "addRow": "Aggiungi riga",
+ "addEntity": "Aggiungi entità",
+ "back": "indietro",
+ "nullFieldsWarning": "Avviso: i campi Null non saranno mostrati per la modifica.",
+ "propertyEmptyError": "{{property}} non può essere vuoto. Immettere un valore per {{property}}",
+ "whitespaceError": "{{property}} non può contenere spazi vuoti. Immettere un valore per {{property}} senza spazi vuoti",
+ "propertyTypeEmptyError": "Il tipo di proprietà non può essere vuoto. Selezionare un tipo dal menu a discesa per la proprietà {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Selezionare le colonne da usare per eseguire la query.",
+ "availableColumns": "Colonne disponibili"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Selezionare le colonne da visualizzare nella vista degli elementi nel contenitore.",
+ "searchFields": "Campi di ricerca",
+ "reset": "Ripristina",
+ "partitionKeySuffix": " (chiave di partizione)"
+ },
+ "newVertex": {
+ "addProperty": "Aggiungi proprietà"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "ID contenitore indice secondario globale",
+ "globalSecondaryIndexIdPlaceholder": "Ad esempio, indexbyEmailId",
+ "projectionQuery": "Query di proiezione",
+ "projectionQueryPlaceholder": "SELEZIONA c.email, c.accountId DA c",
+ "projectionQueryTooltip": "Altre informazioni sulla definizione degli indici secondari globali.",
+ "disabledTitle": "È già in corso la creazione di un indice secondario globale. Attendere il completamento prima di crearne un altro."
+ },
+ "stringInput": {
+ "inputMismatchError": "L'input {{input}} non corrisponde all'elemento {{selectedId}} selezionato"
+ },
+ "panelInfo": {
+ "information": "Informazioni",
+ "moreDetails": "Altri dettagli"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Ridimensiona",
+ "conflictResolution": "Risoluzione dei conflitti",
+ "settings": "Impostazioni",
+ "indexingPolicy": "Criteri di indicizzazione",
+ "partitionKeys": "Chiavi di partizione",
+ "partitionKeysPreview": "Chiavi di partizione (anteprima)",
+ "computedProperties": "Proprietà calcolate",
+ "containerPolicies": "Criteri contenitore",
+ "throughputBuckets": "Bucket di velocità effettiva",
+ "globalSecondaryIndexPreview": "Indice secondario globale (anteprima)",
+ "maskingPolicyPreview": "Criteri di mascheramento (anteprima)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Selezionare un tipo per ogni indice.",
+ "enterFieldNameError": "Immettere un nome di campo.",
+ "wildcardPathError": "Il percorso con caratteri jolly non è presente nel nome del campo. Usare un modello come "
+ },
+ "partitionKey": {
+ "shardKey": "Chiave di partizione",
+ "partitionKey": "Chiave di partizione",
+ "shardKeyTooltip": "La chiave di partizione (campo) viene usata per distribuire i dati su molti set di repliche (partizioni) per ottenere scalabilità illimitata. È fondamentale scegliere un campo che distribuisca uniformemente i dati.",
+ "partitionKeyTooltip": "viene usata per distribuire automaticamente i dati tra le partizioni per la scalabilità. Scegliere una proprietà nel documento JSON che abbia un'ampia gamma di valori e distribuisca uniformemente il volume delle richieste.",
+ "sqlPartitionKeyTooltipSuffix": " Per carichi di lavoro piccoli e con molte letture o per carichi di qualsiasi dimensione con molte scritture, ID è spesso una buona scelta.",
+ "partitionKeySubtext": "Per i carichi di lavoro di piccole dimensioni, l'ID elemento è una scelta appropriata per la chiave di partizione.",
+ "mongoPlaceholder": "Ad esempio, categoryId",
+ "gremlinPlaceholder": "Ad esempio, /address",
+ "sqlFirstPartitionKey": "Obbligatorio - prima chiave di partizione, ad esempio /TenantId",
+ "sqlSecondPartitionKey": "seconda chiave di partizione, ad esempio /UserId",
+ "sqlThirdPartitionKey": "terza chiave di partizione, ad esempio /SessionId",
+ "defaultPlaceholder": "Ad esempio, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Stima del costo*",
+ "howWeCalculate": "Modalità di calcolo usata",
+ "updatedCostPerMonth": "Costo aggiornato al mese",
+ "currentCostPerMonth": "Costo corrente al mese",
+ "perRu": "/UR",
+ "perHour": "/ora",
+ "perDay": "/giorno",
+ "perMonth": "/mese"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Il numero massimo di UR/sec con scalabilità automatica iniziale verrà determinato dal sistema, in base alle impostazioni correnti della velocità effettiva manuale e all'archiviazione della risorsa. Dopo aver abilitato la scalabilità automatica, è possibile modificare il numero massimo di UR/sec.",
+ "ttlWarningText": "Il sistema eliminerà automaticamente gli elementi in base al valore TTL (in secondi) specificato, senza la necessità di un'operazione di eliminazione eseguita in modo esplicito da un'applicazione client. Per altre informazioni, vedere",
+ "ttlWarningLinkText": "Durata (TTL) in Azure Cosmos DB",
+ "unsavedIndexingPolicy": "criteri di indicizzazione",
+ "unsavedDataMaskingPolicy": "criteri di maschera dati",
+ "unsavedComputedProperties": "proprietà calcolate",
+ "unsavedEditorWarningPrefix": "Non sono state salvate le modifiche più recenti apportate a",
+ "unsavedEditorWarningSuffix": ". Fare clic su Salva per confermare le modifiche.",
+ "updateDelayedApplyWarning": "Si sta per richiedere un aumento della velocità effettiva oltre la capacità preallocata. Il completamento dell'operazione potrebbe richiedere alcuni minuti.",
+ "scalingUpDelayMessage": "L'aumento richiederà 4-6 ore perché supera quello che Azure Cosmos DB può attualmente supportare immediatamente in base al numero di partizioni fisiche. È possibile aumentare immediatamente la velocità effettiva a {{instantMaximumThroughput}} o procedere con questo valore e attendere il completamento dell'aumento.",
+ "exceedPreAllocatedMessage": "La richiesta di aumento della velocità effettiva supera la capacità preallocata, quindi potrebbe richiedere più tempo del previsto. Per continuare, è possibile scegliere tra tre opzioni:",
+ "instantScaleOption": "È possibile aumentare immediatamente fino a {{instantMaximumThroughput}} UR/sec.",
+ "asyncScaleOption": "È possibile aumentare in modo asincrono fino a qualsiasi valore inferiore a {{maximumThroughput}} UR/sec in 4-6 ore.",
+ "quotaMaxOption": "Il valore massimo della quota corrente è {{maximumThroughput}} UR/s. Per superare questo limite, è necessario richiedere un aumento della quota e il team di Azure Cosmos DB esaminerà la richiesta.",
+ "belowMinimumMessage": "Non è possibile ridurre la velocità effettiva al di sotto del valore minimo corrente di {{minimum}} UR/sec. Per altre informazioni su questo limite, fare riferimento alla documentazione relativa alle quote dei servizi.",
+ "saveThroughputWarning": "La fattura sarà interessata dall'aggiornamento delle impostazioni della velocità effettiva. Prima di salvare le modifiche, esaminare la stima dei costi aggiornata riportata di seguito",
+ "currentAutoscaleThroughput": "Velocità effettiva con scalabilità automatica corrente:",
+ "targetAutoscaleThroughput": "Velocità effettiva con scalabilità automatica di destinazione:",
+ "currentManualThroughput": "Velocità effettiva manuale corrente:",
+ "targetManualThroughput": "Velocità effettiva manuale di destinazione:",
+ "applyDelayedMessage": "La richiesta di aumento della velocità effettiva è stata inviata. Il completamento dell'operazione richiederà da 1 a 3 giorni lavorativi. Visualizzare lo stato più recente nelle notifiche.",
+ "databaseLabel": "Database:",
+ "containerLabel": "Contenitore:",
+ "applyShortDelayMessage": "È attualmente in corso una richiesta di aumento della velocità effettiva. Il completamento dell'operazione potrebbe richiedere alcuni minuti.",
+ "applyLongDelayMessage": "È attualmente in corso una richiesta di aumento della velocità effettiva. Il completamento dell'operazione richiederà da 1 a 3 giorni lavorativi. Visualizzare lo stato più recente nelle notifiche.",
+ "throughputCapError": "L'account è attualmente configurato con un limite di velocità effettiva totale di {{throughputCap}} UR/sec. Questo aggiornamento non è possibile perché aumenterebbe la velocità effettiva totale fino a {{newTotalThroughput}} UR/sec. Modificare il limite di velocità effettiva totale nella gestione dei costi.",
+ "throughputIncrementError": "Il valore della velocità effettiva deve essere in incrementi di 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Priorità ultima scrittura (impostazione predefinita)",
+ "customMergeProcedure": "Procedura di unione (personalizzata)",
+ "mode": "Modalità",
+ "conflictResolverProperty": "Proprietà resolver dei conflitti",
+ "storedProcedure": "Stored procedure",
+ "lwwTooltip": "Ottiene o imposta il nome di una proprietà Integer nei documenti, usata per lo schema di risoluzione dei conflitti basato su Priorità ultima scrittura. Per impostazione predefinita, il sistema usa la proprietà timestamp definita dal sistema, _ts, per decidere il vincitore per le versioni in conflitto del documento. Specificare una proprietà Integer personalizzata se si vuole eseguire l'override della risoluzione dei conflitti predefinita basata sul timestamp.",
+ "customTooltip": "Ottiene o imposta il nome di una stored procedure (nota anche come procedura di unione) per la risoluzione dei conflitti. È possibile scrivere la logica definita dall'applicazione per determinare il vincitore delle versioni in conflitto di un documento. La stored procedure verrà eseguita in modo transazionale, esattamente una volta, sul lato server. Se non si specifica una stored procedure, i conflitti verranno popolati in",
+ "customTooltipConflictsFeed": " feed dei conflitti",
+ "customTooltipSuffix": ". È possibile aggiornare/registrare nuovamente la stored procedure in qualsiasi momento."
+ },
+ "changeFeed": {
+ "label": "Criteri di conservazione dei log dei feed di modifiche",
+ "tooltip": "Abilitare i criteri di conservazione dei log dei feed di modifiche per mantenere gli ultimi 10 minuti di cronologia per gli elementi nel contenitore per impostazione predefinita. A tale scopo, l'addebito dell'unità richiesta per questo contenitore verrà moltiplicato per un fattore pari a due per le operazioni di scrittura. Le operazioni di lettura non sono interessate."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Per le query che filtrano in base a più proprietà, creare più indici di campi singoli anziché un indice composto.",
+ "disclaimerCompoundIndexesLink": " Indici composti ",
+ "disclaimerSuffix": "vengono usati solo per l'ordinamento dei risultati della query. Se è necessario aggiungere un indice composto, è possibile crearne uno usando la shell Mongo.",
+ "compoundNotSupported": "Le raccolte con indici composti non sono ancora supportate nell'editor di indicizzazione. Per modificare i criteri di indicizzazione per questa raccolta, usare la shell Mongo.",
+ "aadError": "Per usare l'editor dei criteri di indicizzazione, accedere a",
+ "aadErrorLink": "portale di Azure.",
+ "refreshingProgress": "Aggiornamento dello stato di avanzamento della trasformazione dell'indice",
+ "canMakeMoreChangesZero": "Al termine della trasformazione dell'indice corrente, è possibile apportare altre modifiche all'indicizzazione. ",
+ "refreshToCheck": "Aggiornare per verificare se è stato completato.",
+ "canMakeMoreChangesProgress": "Dopo aver completato la trasformazione dell'indice corrente, è possibile apportare altre modifiche all'indicizzazione. Completamento: {{progress}}%. ",
+ "refreshToCheckProgress": "Aggiornare per controllare lo stato di avanzamento.",
+ "definitionColumn": "Definizione",
+ "typeColumn": "Tipo",
+ "dropIndexColumn": "Elimina indice",
+ "addIndexBackColumn": "Aggiungi di nuovo indice",
+ "deleteIndexButton": "Pulsante Elimina indice",
+ "addBackIndexButton": "Pulsante Aggiungi di nuovo indice",
+ "currentIndexes": "Indici correnti",
+ "indexesToBeDropped": "Indici da eliminare",
+ "indexFieldName": "Nome campo indice",
+ "indexType": "Tipo di indice",
+ "selectIndexType": "Selezionare un tipo di indice",
+ "undoButton": "Pulsante Annulla"
+ },
+ "subSettings": {
+ "timeToLive": "Durata (TTL)",
+ "ttlOff": "Disattivato",
+ "ttlOnNoDefault": "Sì (nessun valore predefinito)",
+ "ttlOn": "Attivato",
+ "seconds": "secondo/i",
+ "timeToLiveInSeconds": "Durata (TTL) in secondi",
+ "analyticalStorageTtl": "Durata (TTL) dell'archiviazione analitica",
+ "geospatialConfiguration": "Configurazione geospaziale",
+ "geography": "Geografia",
+ "geometry": "Geometria",
+ "uniqueKeys": "Chiavi univoche",
+ "mongoTtlMessage": "Per abilitare la durata (TTL) per la raccolta o i documenti,",
+ "mongoTtlLinkText": "Crea indice TTL",
+ "partitionKeyTooltipTemplate": "{{partitionKeyName}} viene usata per distribuire i dati tra più partizioni per la scalabilità. Il valore \"{{partitionKeyValue}}\" determina la modalità di partizionamento dei documenti.",
+ "largePartitionKeyEnabled": "Abilitazione di {{partitionKeyName}} di grandi dimensioni completata.",
+ "hierarchicalPartitioned": "Contenitore partizionato in modo gerarchico.",
+ "nonHierarchicalPartitioned": "Contenitore partizionato in modo non gerarchico."
+ },
+ "scale": {
+ "freeTierInfo": "Con il livello gratuito si otterranno gratuitamente le prime {{ru}} UR/s e {{storage}} GB di spazio di archiviazione in questo account. Per mantenere l'account gratuito, mantenere il totale delle UR/sec in tutte le risorse dell'account al di sotto di {{ru}} UR/sec.",
+ "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",
+ "throughputRangeLabel": "Velocità effettiva ({{min}}-{{max}} UR/s)",
+ "unlimited": "senza limiti"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Modifica {{partitionKeyName}}",
+ "currentPartitionKey": "{{partitionKeyName}} corrente",
+ "partitioning": "Partizionamento",
+ "hierarchical": "Gerarchico",
+ "nonHierarchical": "Non gerarchico",
+ "safeguardWarning": "Per proteggere l'integrità dei dati copiati nel nuovo contenitore, assicurarsi che non vengano apportati aggiornamenti al contenitore di origine per l'intera durata del processo di modifica della chiave di partizione.",
+ "changeDescription": "Per modificare la chiave di partizione, è necessario creare un nuovo contenitore di destinazione o selezionare un contenitore di destinazione esistente. I dati verranno quindi copiati nel contenitore di destinazione.",
+ "changeButton": "Cambia",
+ "changeJob": "Processo di modifica di {{partitionKeyName}}",
+ "cancelButton": "Annulla",
+ "documentsProcessed": "({{processedCount}} di {{totalCount}} documenti elaborati)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Proprietà calcolate",
+ "learnMorePrefix": "su come definire le proprietà calcolate e su come usarle."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Criteri di indicizzazione"
+ },
+ "dataMasking": {
+ "ariaLabel": "Criteri di maschera dati",
+ "validationFailed": "Convalida non riuscita:",
+ "includedPathsRequired": "includedPaths è obbligatorio",
+ "includedPathsMustBeArray": "includedPaths deve essere una matrice",
+ "excludedPathsMustBeArray": "excludedPaths deve essere una matrice, se specificato"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Criteri vettoriali",
+ "fullTextPolicy": "Criteri full-text",
+ "createFullTextPolicy": "Crea nuovi criteri di ricerca full-text"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Per questo contenitore sono definiti gli indici seguenti.",
+ "learnMoreSuffix": "su come definire gli indici secondari globali e su come usarli.",
+ "jsonAriaLabel": "JSON indice secondario globale",
+ "addIndex": "Aggiungi indice",
+ "settingsTitle": "Impostazioni globali dell'indice secondario",
+ "sourceContainer": "Contenitore di origine",
+ "indexDefinition": "Definizione di indice secondario globale"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "L'aggiornamento dello stato di avanzamento della trasformazione dell'indice non è riuscito"
+ },
+ "throughputInput": {
+ "autoscale": "Scalabilità automatica",
+ "manual": "Manuale",
+ "minimumRuS": "Numero minimo di UR/s",
+ "maximumRuS": "Numero massimo di UR/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Capacità di archiviazione",
+ "fixed": "Fissa",
+ "unlimited": "Senza limiti",
+ "instant": "Immediata",
+ "fourToSixHrs": "4-6 ore",
+ "autoscaleDescription": "In base all'utilizzo, la velocità effettiva {{resourceType}} verrà ridimensionata da",
+ "freeTierWarning": "La fatturazione verrà applicata se si effettua il provisioning di più di {{ru}} UR/sec di velocità effettiva manuale o se la risorsa viene ridimensionata oltre a {{ru}} UR/sec con scalabilità automatica.",
+ "capacityCalculator": "Stima le UR/sec necessarie con",
+ "capacityCalculatorLink": " calcolatore capacità",
+ "fixedStorageNote": "Quando si usa una raccolta con capacità di archiviazione fissa, è possibile impostare fino a 10.000 UR/sec.",
+ "min": "min",
+ "max": "max"
+ },
+ "throughputBuckets": {
+ "label": "Bucket di velocità effettiva",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Bucket di query Esplora dati)",
+ "active": "Attivo",
+ "inactive": "Inattivo"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/ja/Resources.json b/src/Localization/ja/Resources.json
new file mode 100644
index 000000000..252171aec
--- /dev/null
+++ b/src/Localization/ja/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "キャンセル",
+ "close": "閉じる",
+ "save": "保存",
+ "delete": "削除",
+ "update": "更新",
+ "discard": "破棄",
+ "execute": "実行",
+ "loading": "読み込み中",
+ "loadingEllipsis": "読み込み中...",
+ "next": "次へ",
+ "previous": "前へ",
+ "yes": "はい",
+ "no": "いいえ",
+ "result": "結果",
+ "learnMore": "詳細情報",
+ "getStarted": "開始する",
+ "retry": "再試行",
+ "apply": "適用",
+ "refresh": "最新の情報に更新",
+ "copy": "コピー",
+ "create": "作成",
+ "confirm": "確認",
+ "open": "開く",
+ "rename": "名前の変更",
+ "download": "ダウンロード",
+ "upload": "アップロード",
+ "connect": "接続",
+ "remove": "削除",
+ "load": "読み込み",
+ "publish": "公開",
+ "browse": "参照",
+ "increaseValueBy1": "値を 1 増加",
+ "decreaseValueBy1": "値を 1 減少"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Azure Cosmos DB へようこそ",
+ "postgres": "Azure Cosmos DB for PostgreSQL へようこそ",
+ "vcoreMongo": "Azure DocumentDB (MongoDB 互換) へようこそ"
+ },
+ "subtitle": {
+ "default": "あらゆるスケールに対応するグローバル分散型のマルチモデル データベース サーバー",
+ "getStarted": "サンプル データセット、ドキュメント、追加ツールを使用して開始してください。"
+ },
+ "quickStart": {
+ "title": "クイック スタートの起動",
+ "description": "クイック スタート チュートリアルを起動してサンプル データの使用を開始します"
+ },
+ "newCollection": {
+ "title": "新しい {{collectionName}}",
+ "description": "ストレージとスループット用の新しいコンテナーを作成します"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB サンプル ギャラリー",
+ "description": "スケーラブルでインテリジェントなアプリ パターンを紹介するサンプルをご確認ください。今すぐ試して、Cosmos DB を使用して概念からコードにどれほど迅速に移行できるか確認してください"
+ },
+ "connectCard": {
+ "title": "接続",
+ "description": "独自に選択したツールの使用を優先しますか?接続に必要な接続文字列を検索します",
+ "pgAdmin": {
+ "title": "pgAdmin を使用して接続",
+ "description": "pgAdmin を優先しますか?ここで接続文字列を検索します"
+ },
+ "vsCode": {
+ "title": "VS Code で接続する",
+ "description": "Visual Studio Code で MongoDB および DocumentDB クラスターのクエリの実行と管理を行います"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL シェル",
+ "description": "PostgreSQL のシェル インターフェイスを使用して、テーブルを作成し、データを操作します"
+ },
+ "vcoreMongo": {
+ "title": "Mongo シェル",
+ "description": "MongoDB のシェル インターフェイスを使用して、コレクションを作成し、データを操作します"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Cosmos DB PGSQL を使用するのは初めてですか?",
+ "body": "ようこそ! Cosmos DB PGSQL を使用するのが初めてで、作業の開始に関するヘルプが必要な場合は、ここでサンプル データやクエリを見つけることができます。"
+ },
+ "resetPassword": {
+ "headline": "パスワードの作成",
+ "body": "パスワードをまだ変更していない場合は、今すぐ変更してください。"
+ },
+ "coachMark": {
+ "headline": "サンプル {{collectionName}} から開始する",
+ "body": "サンプル データを含むサンプル コンテナーを作成するように案内され、その後、データ エクスプローラーのツアーが表示されます。このツアーの開始を取り消して、自分で探索することもできます"
+ }
+ },
+ "sections": {
+ "recents": "最近使用したもの",
+ "clearRecents": "最近使用したものをクリアする",
+ "top3": "知っておくべき上位 3 つのこと",
+ "learningResources": "学習リソース",
+ "nextSteps": "次の手順",
+ "tipsAndLearnMore": "ヒントと詳細の確認",
+ "notebook": "ノートブック",
+ "needHelp": "ヘルプが必要ですか?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "高度なモデリング パターン",
+ "description": "データベースを最適化するための高度な戦略について説明します。"
+ },
+ "partitioning": {
+ "title": "パーティション分割のベスト プラクティス",
+ "description": "データ モデルとパーティション分割戦略の適用について説明します。"
+ },
+ "resourcePlanning": {
+ "title": "リソース要件の計画",
+ "description": "さまざまな構成の選択肢について理解を深めます。"
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "MongoDB API とは",
+ "description": "Azure Cosmos DB for MongoDB とその機能について理解します。"
+ },
+ "features": {
+ "title": "機能と構文",
+ "description": "利点と機能を確認します"
+ },
+ "migrate": {
+ "title": "データの移行",
+ "description": "データを移動するための移行前の手順"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Java アプリのビルド",
+ "description": "SDK を使用して Java アプリを作成します。"
+ },
+ "partitioning": {
+ "title": "パーティション分割のベスト プラクティス",
+ "description": "パーティション分割のしくみについて説明します。"
+ },
+ "requestUnits": {
+ "title": "要求ユニット (RU)",
+ "description": "RU 料金について理解します。"
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "データ モデリング",
+ "description": "グラフ データ モデリングの推奨事項"
+ },
+ "partitioning": {
+ "title": "パーティション分割のベスト プラクティス",
+ "description": "パーティション分割のしくみについて確認します"
+ },
+ "queryData": {
+ "title": "データのクエリを実行",
+ "description": "Gremlin を使用してデータのクエリを実行しています"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Table API とは",
+ "description": "Azure Cosmos DB for Table とその機能について理解します"
+ },
+ "migrate": {
+ "title": "データの移行",
+ "description": "データを移行する方法について確認します"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table に関する FAQ",
+ "description": "Azure Cosmos DB for Table に関する一般的な質問"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Data Explorer のキーボード ショートカット",
+ "description": "データ エクスプローラーを操作するためのキーボード ショートカットについて説明します。"
+ },
+ "liveTv": {
+ "title": "基礎を確認する",
+ "description": "Azure Cosmos DB のライブ テレビ ショーの紹介や使い方に関するビデオをご覧ください。"
+ },
+ "sql": {
+ "sdk": {
+ "title": "SDK を使用して開始",
+ "description": "Azure Cosmos DB SDK について説明します。"
+ },
+ "migrate": {
+ "title": "データの移行",
+ "description": "Azure サービスとオープンソース ソリューションを使用してデータを移行します。"
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Node.js を使用してアプリをビルド",
+ "description": "Node.js アプリを作成します。"
+ },
+ "gettingStarted": {
+ "title": "作業の開始ガイド",
+ "description": "開始するための基本情報について説明します。"
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "コンテナーの作成",
+ "description": "コンテナーの作成オプションについて理解を深めます。"
+ },
+ "throughput": {
+ "title": "スループットのプロビジョニング",
+ "description": "スループットを構成する方法について説明します。"
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "開始 ",
+ "description": "Gremlin コンソールを使用して作成、クエリの実行、走査を行います"
+ },
+ "importData": {
+ "title": "グラフ データのインポート",
+ "description": "BulkExecutor を使用した一括インジェスト データについて確認します"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": ".NET アプリのビルド",
+ "description": ".NET アプリから Azure Cosmos DB for Table にアクセスする方法。"
+ },
+ "java": {
+ "title": "Java アプリのビルド",
+ "description": "Java SDK を使用して Azure Cosmos DB for Table アプリを作成します "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "データ モデリング",
+ "distributionColumn": "ディストリビューション列を選択する方法",
+ "buildApps": "Python/Java/Django を使用してアプリをビルド"
+ },
+ "vcoreMongo": {
+ "migrateData": "データの移行",
+ "vectorSearch": "ベクトル検索を使用して AI アプリをビルド",
+ "buildApps": "Nodejs を使用してアプリをビルド"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "パフォーマンス チューニング",
+ "diagnosticQueries": "有用な診断クエリ",
+ "sqlReference": "分散 SQL リファレンス"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "ベクトル検索",
+ "textIndexing": "テキストのインデックス作成",
+ "troubleshoot": "一般的な問題のトラブルシューティング"
+ }
+ },
+ "fabric": {
+ "buildTitle": "データベースのビルド",
+ "useTitle": "データベースの使用",
+ "newContainer": {
+ "title": "新しいコンテナー",
+ "description": "データを格納する先のコンテナーを作成します"
+ },
+ "sampleData": {
+ "title": "サンプル データ",
+ "description": "データベースにサンプル データを読み込みます"
+ },
+ "sampleVectorData": {
+ "title": "サンプル ベクトル データ",
+ "description": "text-embedding-ada-002 を使用してサンプル ベクトル データを読み込みます"
+ },
+ "appDevelopment": {
+ "title": "アプリ開発",
+ "description": "SDK を使用してアプリをビルドするには、ここから開始してください"
+ },
+ "sampleGallery": {
+ "title": "サンプル ギャラリー",
+ "description": "実際のエンド ツー エンドのサンプルを取得します"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "サンプル データ",
+ "startButton": "開始",
+ "createPrompt": "コンテナー \"{{containerName}}\" を作成し、そこにサンプル データをインポートしてください。これには数分かかる場合があります。",
+ "creatingContainer": "コンテナー \"{{containerName}}\" を作成しています...",
+ "importingData": "データを \"{{containerName}}\" にインポートしています...",
+ "success": "サンプル データを含む \"{{containerName}}\" が正常に作成されました。",
+ "errorContainerExists": "データベース \"{{databaseName}}\" のコンテナー \"{{containerName}}\" は既に存在します。削除してから、もう一度お試しください。",
+ "errorCreateContainer": "コンテナーを作成できませんでした: {{error}}",
+ "errorImportData": "データをインポートできませんでした: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "新しい {{containerName}}",
+ "restoreContainer": "{{containerName}} の復元",
+ "deleteDatabase": "{{databaseName}} の削除",
+ "deleteContainer": "{{containerName}} の削除",
+ "newSqlQuery": "新しい SQL クエリ",
+ "newQuery": "新しいクエリ",
+ "openMongoShell": "Mongo シェルを開く",
+ "newShell": "新しいシェル",
+ "openCassandraShell": "Cassandra シェルを開く",
+ "newStoredProcedure": "新しいストアド プロシージャ",
+ "newUdf": "新しい UDF",
+ "newTrigger": "新しいトリガー",
+ "deleteStoredProcedure": "ストアド プロシージャの削除",
+ "deleteTrigger": "トリガーの削除",
+ "deleteUdf": "ユーザー定義関数の削除"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "新しい項目",
+ "newDocument": "新規ドキュメント",
+ "uploadItem": "項目のアップロード",
+ "applyFilter": "フィルターの適用",
+ "unsavedChanges": "未保存の変更",
+ "unsavedChangesMessage": "保存されていない変更はすべて失われます。続行しますか?",
+ "createDocumentFailed": "ドキュメントの作成に失敗しました",
+ "updateDocumentFailed": "ドキュメントの更新に失敗しました",
+ "documentDeleted": "ドキュメントが正常に削除されました。",
+ "deleteDocumentDialogTitle": "ドキュメントの削除",
+ "deleteDocumentsDialogTitle": "ドキュメントの削除",
+ "throttlingError": "レート制限エラーにより、一部のドキュメントの削除に失敗しました。後でもう一度お試しください。今後これを防ぐには、コンテナーまたはデータベースのスループットを増やすことを検討してください。",
+ "deleteFailed": "ドキュメントの削除に失敗しました ({{error}})",
+ "missingShardProperty": "ドキュメントにシャード プロパティがありません: {{partitionKeyProperty}}",
+ "refreshGridFailed": "ドキュメント グリッドの更新に失敗しました",
+ "confirmDelete": "{{documentName}} を削除しますか?",
+ "confirmDeleteTitle": "削除の確認",
+ "selectedItems": "選択した {{count}} 個の項目",
+ "selectedItem": "選択した項目",
+ "selectedDocuments": "選択した {{count}} 件のドキュメント",
+ "selectedDocument": "選択したドキュメント",
+ "deleteDocumentFailedLog": "状態コード {{statusCode}} で、ドキュメント {{documentId}} を削除できませんでした",
+ "deleteSuccessLog": "{{count}} 件のドキュメントが正常に削除されました",
+ "deleteThrottledLog": "\"要求が大きすぎる\" (429) エラーにより {{count}} 件のドキュメントを削除できませんでした。再試行しています...",
+ "missingShardKeyLog": "新しいドキュメントを保存できませんでした: ドキュメントのシャード キーが定義されていません",
+ "filterTooltip": "クエリ述語を入力するか、一覧から 1 つ選択してください。",
+ "loadMore": "さらに読み込む",
+ "documentEditor": "ドキュメント エディター",
+ "savedFilters": "保存済みのフィルター",
+ "defaultFilters": "既定のフィルター",
+ "abort": "中止",
+ "deletingDocuments": "{{count}} 件のドキュメントを削除しています",
+ "deletedDocumentsSuccess": "{{count}} 件のドキュメントが正常に削除されました。",
+ "deleteAborted": "ドキュメントの削除が中止されました。",
+ "failedToDeleteDocuments": "{{count}} 件のドキュメントを削除できませんでした。",
+ "requestTooLargeBase": "\"要求が大きすぎる\" 例外 (429) により、一部の削除要求が失敗しました",
+ "retriedSuccessfully": "正常に再試行されました。",
+ "retryingNow": "再試行しています。",
+ "increaseThroughputTip": "今後これを防ぐには、コンテナーまたはデータベースのスループットを増やすことを検討してください。",
+ "numberOfSelectedDocuments": "選択したドキュメントの数: {{count}}",
+ "mongoFilterPlaceholder": "クエリ述語 (例: {\"id\":\"foo\"}) を入力するか、ドロップダウン リストから 1 つ選択するか、すべてのドキュメントをクエリする場合は空のままにします。",
+ "sqlFilterPlaceholder": "クエリ述語 (WHERE c.id=\"1\" など) を入力するか、ドロップダウン リストからクエリ述語を選択するか、空のままにしてすべてのドキュメントのクエリを実行します。",
+ "error": "エラー",
+ "warning": "警告"
+ },
+ "query": {
+ "executeQuery": "クエリの実行",
+ "executeSelection": "選択範囲の実行",
+ "saveQuery": "クエリの保存",
+ "downloadQuery": "クエリのダウンロード",
+ "cancelQuery": "クエリのキャンセル",
+ "openSavedQueries": "保存したクエリを開く",
+ "vertical": "縦",
+ "horizontal": "水平",
+ "view": "表示",
+ "editingQuery": "クエリを編集しています"
+ },
+ "storedProcedure": {
+ "id": "ストアド プロシージャ ID",
+ "idPlaceholder": "新しいストアド プロシージャ ID を入力してください",
+ "idAriaLabel": "ストアド プロシージャ ID",
+ "body": "ストアド プロシージャ本文",
+ "bodyAriaLabel": "ストアド プロシージャ本文",
+ "successfulExecution": "ストアド プロシージャの正常な実行",
+ "resultAriaLabel": "ストアド プロシージャの実行結果",
+ "logsAriaLabel": "ストアド プロシージャの実行ログ",
+ "errors": "エラー:",
+ "errorDetailsAriaLabel": "エラーの詳細リンク",
+ "moreDetails": "その他の詳細",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "トリガー ID",
+ "idPlaceholder": "新しいトリガー ID を入力してください",
+ "type": "トリガーの種類",
+ "operation": "トリガーの操作",
+ "body": "トリガー本文",
+ "bodyAriaLabel": "トリガー本文",
+ "pre": "プレ",
+ "post": "投稿",
+ "all": "すべて",
+ "operationCreate": "作成",
+ "operationDelete": "削除",
+ "operationReplace": "置換"
+ },
+ "udf": {
+ "id": "ユーザー定義関数 ID",
+ "idPlaceholder": "新しいユーザー定義関数 ID を入力してください",
+ "body": "ユーザー定義関数本文",
+ "bodyAriaLabel": "ユーザー定義関数本文"
+ },
+ "conflicts": {
+ "unsavedChanges": "未保存の変更",
+ "changesWillBeLost": "変更が失われます。続行しますか?",
+ "resolveConflictFailed": "競合の解決に失敗しました",
+ "deleteConflictFailed": "削除の競合が失敗しました",
+ "refreshGridFailed": "ドキュメント グリッドの更新に失敗しました"
+ },
+ "mongoShell": {
+ "title": "Mongo シェル"
+ }
+ },
+ "panes": {
+ "deleteDatabase": {
+ "panelTitle": "{{databaseName}} の削除",
+ "warningMessage": "警告!実行しようとしている操作を元に戻すことはできません。続行すると、このリソースとそのすべての子リソースが完全に削除されます。",
+ "confirmPrompt": "{{databaseName}} ID (名前) を入力して確認してください",
+ "inputMismatch": "入力 {{databaseName}} 名 \"{{input}}\" が、選択した {{databaseName}} \"{{selectedId}}\" と一致しません",
+ "feedbackTitle": "Azure Cosmos DB の改善にご協力ください。",
+ "feedbackReason": "この {{databaseName}} を削除する理由を教えてください。"
+ },
+ "deleteCollection": {
+ "panelTitle": "{{collectionName}} の削除",
+ "confirmPrompt": "{{collectionName}} ID を入力して確認してください",
+ "inputMismatch": "入力 ID {{input}} が選択した {{selectedId}} と一致しません",
+ "feedbackTitle": "Azure Cosmos DB の改善にご協力ください。",
+ "feedbackReason": "この {{collectionName}} を削除する理由を教えてください。"
+ },
+ "addDatabase": {
+ "databaseLabel": "データベース {{suffix}}",
+ "databaseIdLabel": "データベース ID",
+ "keyspaceIdLabel": "キースペース ID",
+ "databaseIdPlaceholder": "新しい {{databaseLabel}} ID を入力してください",
+ "databaseTooltip": "{{databaseLabel}} は 1 つ以上の {{collectionsLabel}} の論理コンテナーです",
+ "shareThroughput": "{{collectionsLabel}} 全体でスループットを共有する",
+ "shareThroughputTooltip": "{{databaseLabel}} レベルでプロビジョニングされたスループットは、{{collectionsLabel}} 内のすべての {{databaseLabel}} で共有されます。",
+ "greaterThanError": "オートパイロット スループットの {{minValue}} より大きい値を入力してください",
+ "acknowledgeSpendError": "毎月の推定 {{period}} 支出に同意してください。",
+ "acknowledgeSpendErrorMonthly": "毎月の推定支出に同意してください。",
+ "acknowledgeSpendErrorDaily": "毎日の推定支出に同意してください。",
+ "provisionSharedThroughputTitle": "共有スループットのプロビジョニング",
+ "provisionThroughputLabel": "スループットのプロビジョニング"
+ },
+ "addCollection": {
+ "createNew": "新規作成",
+ "useExisting": "既存のものを使用",
+ "databaseTooltip": "データベースは名前空間に類似しています。{{collectionName}} のセットの管理単位です。",
+ "shareThroughput": "{{collectionName}} 全体でスループットを共有する",
+ "shareThroughputTooltip": "データベース レベルで構成されたスループットは、データベース内のすべての {{collectionName}} で共有されます。",
+ "collectionIdLabel": "{{collectionName}} ID",
+ "collectionIdTooltip": "REST とすべての SDK を介した ID ベースのルーティングに使用される {{collectionName}} の一意識別子。",
+ "collectionIdPlaceholder": "例: {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID、例 {{collectionName}}1",
+ "existingDatabaseAriaLabel": "既存の {{databaseName}} ID を選択してください",
+ "existingDatabasePlaceholder": "既存の {{databaseName}} ID を選択してください",
+ "indexing": "インデックス作成",
+ "turnOnIndexing": "インデックス作成を有効にする",
+ "automatic": "自動",
+ "turnOffIndexing": "インデックス作成を無効にする",
+ "off": "オフ",
+ "sharding": "シャーディング",
+ "shardingTooltip": "シャード化されたコレクションは、無制限のスケーラビリティを実現するために、データを多数のレプリカ セット (シャード) に分割します。シャード コレクションでは、データを均等に分散するためにシャード キー (フィールド) を選択する必要があります。",
+ "unsharded": "シャードなし",
+ "unshardedLabel": "シャードなし (20 GB の制限)",
+ "sharded": "シャード化",
+ "addPartitionKey": "階層パーティション キーの追加",
+ "hierarchicalPartitionKeyInfo": "この機能を使用すると、データを最大 3 レベルのキーでパーティション分割して、データの分散を向上できます。.NET V3、Java V4 SDK、またはプレビュー JavaScript V3 SDK が必要です。",
+ "provisionDedicatedThroughput": "この {{collectionName}} の専用スループットをプロビジョニングする",
+ "provisionDedicatedThroughputTooltip": "必要に応じて、スループットがプロビジョニングされているデータベース内の {{collectionName}} に対して専用のスループットをプロビジョニングできます。この専用スループット量は、データベース内の他の {{collectionNamePlural}} と共有されず、データベース用にプロビジョニングしたスループットにはカウントされません。このスループットはデータベース レベルでプロビジョニングしたスループットに加えて課金されます。",
+ "uniqueKeysPlaceholderMongo": "コンマ区切りのパス (例: firstName,address.zipCode)",
+ "uniqueKeysPlaceholderSql": "コンマ区切りのパス (例: /firstName,/address/zipCode)",
+ "addUniqueKey": "一意キーの追加",
+ "enableAnalyticalStore": "分析ストアを有効にする",
+ "disableAnalyticalStore": "分析ストアを無効にする",
+ "on": "オン",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse リンクは、{{collectionName}} 分析ストアを作成するために必要です。この Cosmos DB アカウントで Synapse Link を有効にします。",
+ "enable": "有効にする",
+ "containerVectorPolicy": "コンテナー ベクトル ポリシー",
+ "containerFullTextSearchPolicy": "コンテナーのフルテキスト検索ポリシー",
+ "advanced": "詳細",
+ "mongoIndexingTooltip": "_id フィールドは、既定でインデックスが作成されます。すべてのフィールドにワイルドカード インデックスを作成すると、クエリが最適化され、開発に推奨されます。",
+ "createWildcardIndex": "すべてのフィールドにワイルドカード インデックスを作成する",
+ "legacySdkCheckbox": "アプリケーションで以前の Cosmos .NET または Java SDK バージョン (.NET V1 または Java V2) を使用しています",
+ "legacySdkInfo": "古い SDK との互換性を確保するため、作成されるコンテナーは最大 101 バイトのサイズのパーティション キー値のみをサポートするレガシ パーティション スキーマを使用します。これを有効にすると、階層パーティション キーは使用できません。",
+ "indexingOnInfo": "ドキュメント内のすべてのプロパティは、柔軟で効率的なクエリのために既定でインデックスが作成されます。",
+ "indexingOffInfo": "インデックス作成は無効になります。クエリを実行する必要がない、またはキー値操作のみを行う場合に推奨されます。",
+ "indexingOffWarning": "インデックス作成をオフにしてこのコンテナーを作成すると、インデックス作成ポリシーの変更はできません。インデックス作成ポリシーの変更は、インデックス作成ポリシーを持つコンテナーでのみ許可されます。",
+ "acknowledgeSpendErrorMonthly": "毎月の推定支出に同意してください。",
+ "acknowledgeSpendErrorDaily": "毎日の推定支出に同意してください。",
+ "unshardedMaxRuError": "シャーディングされていないコレクションでは、最大 10,000 RU がサポートされます",
+ "acknowledgeShareThroughputError": "この専用スループットの推定コストを確認してください。",
+ "vectorPolicyError": "コンテナー ベクトル ポリシーのエラーを修正してください",
+ "fullTextSearchPolicyError": "コンテナーのフルテキスト検索ポリシーのエラーを修正してください",
+ "addingSampleDataSet": "サンプル データ セットの追加",
+ "databaseFieldLabelName": "データベース名",
+ "databaseFieldLabelId": "データベース ID",
+ "newDatabaseIdPlaceholder": "新しいデータベース ID を入力してください",
+ "newDatabaseIdAriaLabel": "新しいデータベース ID、新しいデータベース ID を入力してください",
+ "createNewDatabaseAriaLabel": "新しいデータベースの作成",
+ "useExistingDatabaseAriaLabel": "既存のデータベースを使用する",
+ "chooseExistingDatabase": "既存のデータベースを選択する",
+ "teachingBubble": {
+ "step1Headline": "サンプル データベースの作成",
+ "step1Body": "データベースはコンテナーの親にあたります。新しいデータベースを作成するか、既存のものを使用できます。このチュートリアルでは、SampleDB という名前の新しいデータベースを作成します。",
+ "step1LearnMore": "リソースに関する詳細情報。",
+ "step2Headline": "スループットを設定しています",
+ "step2Body": "Cosmos DB では、データベース間でスループットを共有することを推奨しています。自動スケーリングにより、設定した最大 RU/秒 (要求ユニット) に基づいて、スループットを柔軟に調整します。",
+ "step2LearnMore": "RU/秒の詳細を確認します。",
+ "step3Headline": "コンテナーの名前を指定しています",
+ "step3Body": "コンテナーに名前を付けてください",
+ "step4Headline": "パーティション キーの設定",
+ "step4Body": "最後の手順です。コレクションのパーティション キーを定義する必要があります。この例では /address が選択されました。適切なパーティション キーは、値の範囲が広いものが望ましいです",
+ "step4CreateContainer": "コンテナーの作成",
+ "step5Headline": "サンプル コンテナーを作成しています",
+ "step5Body": "サンプル コンテナーを作成中で、サンプル データを追加しています。約 1 分かかります。",
+ "step5BodyFollowUp": "サンプル コンテナーが作成されたら、サンプル データセットを確認し、次の手順に進んでください",
+ "stepOfTotal": "手順 {{current}}/{{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "シャード キー (フィールド) は、無制限のスケーラビリティを実現するために、多数のレプリカ セット (シャード) にデータを分割するために使用されます。データを均等に分散するフィールドを選択することが重要です。",
+ "partitionKeyTooltip": "{{partitionKeyName}} は、スケーラビリティのためにパーティション間でデータを自動的に分散するために使用されます。さまざまな値を持ち、要求ボリュームを均等に分散する JSON ドキュメントのプロパティを選択します。",
+ "partitionKeyTooltipSqlSuffix": " 読み取り負荷の高い小規模なワークロードや、任意のサイズの書き込み負荷の高いワークロードの場合、ID が適していることがよくあります。",
+ "shardKeyLabel": "シャード キー",
+ "partitionKeyLabel": "パーティション キー",
+ "shardKeyPlaceholder": "例: categoryId",
+ "partitionKeyPlaceholderDefault": "例: /address",
+ "partitionKeyPlaceholderFirst": "必須: 最初のパーティション キー (例: /TenantId)",
+ "partitionKeyPlaceholderSecond": "2 番目のパーティション キー (例: /UserId)",
+ "partitionKeyPlaceholderThird": "3 番目のパーティション キー 例: /SessionId",
+ "partitionKeyPlaceholderGraph": "例: /address/zipCode",
+ "uniqueKeysTooltip": "一意キーにより、開発者はデータベースにデータ整合性の層を追加できます。コンテナーの作成時に一意キー ポリシーを作成することで、パーティション キーごとに 1 つ以上の値の一意性を確保します。",
+ "uniqueKeysLabel": "一意キー",
+ "analyticalStoreLabel": "分析ストア",
+ "analyticalStoreTooltip": "分析ストア機能を有効にすると、トランザクション ワークロードのパフォーマンスに影響を与えずに、操作データに対してほぼリアルタイムの分析を実行できます。",
+ "analyticalStoreDescription": "分析ストア機能を有効にすると、トランザクション ワークロードのパフォーマンスに影響を与えずに、操作データに対してほぼリアルタイムの分析を実行できます。",
+ "vectorPolicyTooltip": "ベクトルを含むデータ内のプロパティを記述して、類似性クエリで使用できるようにします。"
+ },
+ "settings": {
+ "pageOptions": "ページ オプション",
+ "pageOptionsDescription": "[カスタム] を選択して表示するクエリ結果の固定数を指定するか、[無制限] を選択してページあたりのクエリ結果の数を無制限に表示します。",
+ "queryResultsPerPage": "ページあたりのクエリ結果",
+ "queryResultsPerPageTooltip": "ページごとに表示するクエリ結果の数を入力します。",
+ "customQueryItemsPerPage": "ページあたりのカスタム クエリ アイテム数",
+ "custom": "カスタム",
+ "unlimited": "無制限",
+ "entraIdRbac": "Entra ID RBAC を有効にする",
+ "entraIdRbacDescription": "[自動] を選択すると Entra ID RBAC が自動的に有効になります。強制的に有効または無効にする場合は True/False を選択します。",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "リージョンの選択",
+ "regionSelectionDescription": "Cosmos Client がアカウントへのアクセスに使用するリージョンを変更します。",
+ "selectRegion": "リージョンの選択",
+ "selectRegionTooltip": "クライアント操作の実行に使用するアカウント エンドポイントを変更します。",
+ "globalDefault": "グローバル (既定)",
+ "readWrite": "(読み取り/書き込み)",
+ "read": "(読み取り)",
+ "queryTimeout": "クエリ タイムアウト",
+ "queryTimeoutDescription": "クエリが指定された制限時間に達すると、自動キャンセルが有効になっていない限り、クエリをキャンセルするオプションを含むポップアップが表示されます。",
+ "enableQueryTimeout": "クエリタイムアウトを有効にする",
+ "queryTimeoutMs": "クエリ タイムアウト (ms)",
+ "automaticallyCancelQuery": "タイムアウト後にクエリを自動的にキャンセルする",
+ "ruLimit": "RU 制限",
+ "ruLimitDescription": "クエリが構成された RU 制限を超えた場合、クエリは中止されます。",
+ "enableRuLimit": "RU 制限を有効にする",
+ "ruLimitLabel": "RU 制限 (RU)",
+ "defaultQueryResults": "既定のクエリ結果ビュー",
+ "defaultQueryResultsDescription": "クエリ結果を表示するときに使用する既定のビューを選択します。",
+ "retrySettings": "再試行の設定",
+ "retrySettingsDescription": "CosmosDB クエリ中に調整された要求に関連付けられている再試行ポリシー。",
+ "maxRetryAttempts": "最大再試行回数",
+ "maxRetryAttemptsTooltip": "要求に対して実行される再試行の最大数。既定値 9。",
+ "fixedRetryInterval": "固定再試行間隔 (ミリ秒)",
+ "fixedRetryIntervalTooltip": "応答の一部として返された retryAfter を無視して、各再試行の間に待機する固定の間隔 (ミリ秒単位)。既定値は 0 ミリ秒です。",
+ "maxWaitTime": "最大待機時間 (秒)",
+ "maxWaitTimeTooltip": "再試行が行われている間に要求を待機する最大待機時間 (秒)。既定値は 30 秒です。",
+ "enableContainerPagination": "コンテナーのページネーションを有効にする",
+ "enableContainerPaginationDescription": "一度に 50 個のコンテナーを読み込みます。現時点では、コンテナーは英数字順にプルされません。",
+ "enableCrossPartitionQuery": "クロスパーティション クエリを有効にする",
+ "enableCrossPartitionQueryDescription": "クエリ実行中に複数の要求を送信します。クエリのスコープが 1 つのパーティション キー値でない場合は、複数の要求が必要です。",
+ "maxDegreeOfParallelism": "並列処理の最大次数",
+ "maxDegreeOfParallelismDescription": "並列クエリの実行中にクライアント側で実行される同時実行操作の数を取得または設定します。正のプロパティ値は、同時操作の数を設定値に制限します。0 未満に設定すると、システムが同時に実行する操作の数を自動的に決定します。",
+ "maxDegreeOfParallelismQuery": "並列処理の最大限度までクエリを実行します。",
+ "priorityLevel": "優先度レベル",
+ "priorityLevelDescription": "優先度ベースの実行を使用する場合のデータ エクスプローラーからのデータ プレーン要求の優先度レベルを設定します。[なし] が選択されている場合、データ エクスプローラーは優先度レベルを指定せず、サーバー側の既定の優先度レベルが使用されます。",
+ "displayGremlinQueryResults": "Gremlin クエリの結果を次のように表示します:",
+ "displayGremlinQueryResultsDescription": "[グラフ] を選択すると、クエリ結果がグラフまたは JSON として自動的に視覚化され、結果が JSON として表示されます。",
+ "graph": "グラフ",
+ "json": "JSON",
+ "graphAutoVisualization": "グラフの自動視覚化",
+ "enableSampleDatabase": "サンプル データベースを有効にする",
+ "enableSampleDatabaseDescription": "これは、NoSQL クエリの探索に使用できる合成製品データを含むサンプルのデータベースとコレクションです。データ エクスプローラー UI に別のデータベースとして表示され、Microsoft によって作成、管理され、無料で利用できます。",
+ "enableSampleDbAriaLabel": "クエリ探索用にサンプル db を有効にします",
+ "guidRepresentation": "GUID 表現",
+ "guidRepresentationDescription": "MongoDB の GuidRepresentation は、BSON ドキュメントに格納されている場合にグローバル一意識別子 (GUID) をシリアル化および逆シリアル化する方法を示します。これは、すべてのドキュメント操作に適用されます。",
+ "advancedSettings": "詳細設定",
+ "ignorePartitionKey": "ドキュメントの更新時にパーティション キーを無視する",
+ "ignorePartitionKeyTooltip": "オンにした場合、パーティション キーの値は、更新操作中にドキュメントを検索するために使用されません。これは、異常なパーティション キーが原因でドキュメントの更新が失敗する場合にのみ使用します。",
+ "clearHistory": "履歴のクリア",
+ "clearHistoryConfirm": "続行しますか?",
+ "clearHistoryDescription": "この操作により、このブラウザーでこのアカウントのすべてのカスタマイズがクリアされます。次のものが含まれます:",
+ "clearHistoryTabLayout": "スプリッターの位置を含め、カスタマイズしたタブ レイアウトをリセットする",
+ "clearHistoryTableColumns": "カスタム列を含むテーブル列の基本設定を消去する",
+ "clearHistoryFilters": "フィルター履歴をクリアする",
+ "clearHistoryRegion": "リージョンの選択をグローバルにリセットする",
+ "increaseValueBy1000": "値を 1000 増やす",
+ "decreaseValueBy1000": "値を 1000 減らす",
+ "none": "なし",
+ "low": "低",
+ "high": "高",
+ "automatic": "自動",
+ "enhancedQueryControl": "拡張クエリ コントロール",
+ "enableQueryControl": "クエリ コントロールを有効にする",
+ "explorerVersion": "エクスプローラー バージョン",
+ "accountId": "アカウント ID",
+ "sessionId": "セッション ID",
+ "popupsDisabledError": "ブラウザーでポップアップが無効になっているため、このアカウントの承認を確立できませんでした。\nこのサイトのポップアップを有効にし、[Entra ID のログイン] ボタンをクリックしてください",
+ "failedToAcquireTokenError": "承認トークンを自動的に取得できませんでした。[Entra ID のログイン] ボタンをクリックして、Entra ID RBAC 操作を有効にしてください"
+ },
+ "saveQuery": {
+ "panelTitle": "クエリの保存",
+ "setupCostMessage": "コンプライアンス上の理由から、クエリは Azure Cosmos アカウントのコンテナーに保存され、“{{databaseName}}”という名の別のデータベースに保存されます。続行するには、アカウントにコンテナーを作成する必要があります。推定追加コストは 1 日 0.77 ドルです。",
+ "completeSetup": "セットアップが完了しました",
+ "noQueryNameError": "クエリ名が指定されていません",
+ "invalidQueryContentError": "無効なクエリ コンテンツが指定されました",
+ "failedToSaveQueryError": "クエリ {{queryName}} の保存に失敗しました",
+ "failedToSetupContainerError": "保存されたクエリ用のコンテナーをセットアップできませんでした",
+ "accountNotSetupError": "クエリの保存に失敗しました: アカウントがクエリ保存用に設定されていません",
+ "name": "名前"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "ファイルが指定されていません",
+ "failedToLoadQueryError": "クエリを読み込めませんでした",
+ "failedToLoadQueryFromFileError": "ファイル {{fileName}} からクエリを読み込めませんでした",
+ "selectFilesToOpen": "クエリ ドキュメントを選択してください",
+ "browseFiles": "参照"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "入力パラメーターを入力します (存在する場合)",
+ "key": "キー",
+ "param": "パラメーター",
+ "partitionKeyValue": "パーティション キーの値",
+ "value": "値",
+ "addNewParam": "新しいパラメーターを追加する",
+ "addParam": "パラメーターを追加する",
+ "deleteParam": "パラメーターを削除する",
+ "invalidParamError": "無効なパラメーターが指定されました: {{invalidParam}}",
+ "invalidParamConsoleError": "無効なパラメーターが指定されました: {{invalidParam}} は有効なリテラル値ではありません",
+ "stringType": "文字列",
+ "customType": "カスタム"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "ファイルが指定されていません。少なくとも 1 つのファイルを入力してください。",
+ "selectJsonFiles": "JSON ファイルの選択",
+ "selectJsonFilesTooltip": "アップロードする JSON ファイルを 1 つ以上選択します。各ファイルには単一の JSON ドキュメントまたは JSON ドキュメントの配列を含めることができます。個々のアップロード操作でのすべてのファイルの合計サイズは 2 MB 未満である必要があります。大規模なデータ セットに対して複数のアップロード操作を実行できます。",
+ "fileNameColumn": "ファイル名",
+ "statusColumn": "状態",
+ "uploadStatus": "{{numSucceeded}} 件作成済み、{{numThrottled}} 件調整済み、{{numFailed}} 件のエラー",
+ "uploadedFiles": "ファイルをアップロードしました"
+ },
+ "copyNotebook": {
+ "copyFailedError": "{{name}} を {{destination}} にコピーできませんでした",
+ "uploadFailedError": "{{name}} をアップロードできませんでした",
+ "location": "場所",
+ "locationAriaLabel": "場所",
+ "selectLocation": "コピーするノートブックの場所を選択する",
+ "name": "名前"
+ },
+ "publishNotebook": {
+ "publishFailedError": "{{notebookName}} をギャラリーに発行できませんでした",
+ "publishDescription": "公開すると、このノートブックは Azure Cosmos DB ノートブックのパブリック ギャラリーに表示されます。公開前に機密データや出力が削除されていることを確認してください。",
+ "publishPrompt": "\"{{name}}\" をギャラリーに公開して共有しますか?",
+ "coverImage": "カバー画像",
+ "coverImageUrl": "カバー画像の URL",
+ "name": "名前",
+ "description": "説明",
+ "tags": "タグ",
+ "tagsPlaceholder": "オプションのタグ 1、オプションのタグ 2",
+ "preview": "プレビュー",
+ "urlType": "URL",
+ "customImage": "カスタム イメージ",
+ "takeScreenshot": "スクリーンショットを撮る",
+ "useFirstDisplayOutput": "最初のディスプレイ出力を使用する",
+ "failedToCaptureOutput": "最初の出力をキャプチャできませんでした",
+ "outputDoesNotExist": "どのセルにも出力が存在しません。",
+ "failedToConvertError": "{{fileName}} を base64 形式に変換できませんでした",
+ "failedToUploadError": "{{fileName}} をアップロードできませんでした"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "データ転送ジョブの開始に失敗しました",
+ "suboptimalPartitionKeyError": "警告: システムはコレクションが最適でないパーティション キーを使用している可能性を検出しました",
+ "description": "コンテナーのパーティション キーを変更する場合は、適切なパーティション キーを使用して宛先コンテナーを作成する必要があります。既存の宛先コンテナーを選択することも可能です。",
+ "sourceContainerId": "ソース {{collectionName}} ID",
+ "destinationContainerId": "宛先 {{collectionName}} ID",
+ "collectionIdTooltip": "REST とすべての SDK を介した ID ベースのルーティングに使用される {{collectionName}} の一意識別子。",
+ "collectionIdPlaceholder": "例: {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID、例 {{collectionName}}1",
+ "existingContainers": "既存のコンテナー",
+ "partitionKeyWarning": "宛先コンテナーがまだ存在していない必要があります。データ エクスプローラーが新しい宛先コンテナーを作成します。"
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "キースペース名",
+ "keyspaceTooltip": "既存のキースペースを選択するか、新しいキースペース ID を入力します。",
+ "tableIdLabel": "CQL コマンドを入力してテーブルを作成します。",
+ "enterTableId": "テーブル ID の入力",
+ "tableSchemaAriaLabel": "テーブル スキーマ",
+ "provisionDedicatedThroughput": "このテーブルの専用スループットをプロビジョニングする",
+ "provisionDedicatedThroughputTooltip": "必要に応じて、スループットがプロビジョニングされているキースペース内のテーブルの専用スループットをプロビジョニングできます。この専用スループットはキースペース内の他のテーブルと共有されず、キースペースにプロビジョニングしたスループットには含まれません。このスループットはキースペース レベルでプロビジョニングしたスループットに加えて課金されます。"
+ },
+ "tables": {
+ "addProperty": "プロパティの追加",
+ "addRow": "行の追加",
+ "addEntity": "エンティティの追加",
+ "back": "戻る",
+ "nullFieldsWarning": "警告: null 値フィールドは編集用に表示されません。",
+ "propertyEmptyError": "{{property}} を空にすることはできません。{{property}} の値を入力してください",
+ "whitespaceError": "{{property}} に空白を含めることはできません。空白を含まない {{property}} の値を入力してください",
+ "propertyTypeEmptyError": "プロパティの型を空にすることはできません。プロパティ {{property}} のドロップダウンから型を選択してください"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "クエリを実行する列を選択してください。",
+ "availableColumns": "使用可能な列"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "コンテナー内の項目のビューに表示する列を選択します。",
+ "searchFields": "検索フィールド",
+ "reset": "リセット",
+ "partitionKeySuffix": " (パーティション キー)"
+ },
+ "newVertex": {
+ "addProperty": "プロパティの追加"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "グローバル セカンダリ インデックス コンテナー ID",
+ "globalSecondaryIndexIdPlaceholder": "例: indexbyEmailId",
+ "projectionQuery": "プロジェクション クエリ",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "グローバル セカンダリ インデックスの定義に関する詳細情報",
+ "disabledTitle": "グローバル セカンダリ インデックスは既に作成されています。完了するまで待ってから、別のものを作成してください。"
+ },
+ "stringInput": {
+ "inputMismatchError": "入力 {{input}} が選択した {{selectedId}} と一致しません"
+ },
+ "panelInfo": {
+ "information": "情報",
+ "moreDetails": "その他の詳細"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "スケーリング",
+ "conflictResolution": "競合の解決",
+ "settings": "設定",
+ "indexingPolicy": "インデックス作成ポリシー",
+ "partitionKeys": "パーティション キー",
+ "partitionKeysPreview": "パーティション キー (プレビュー)",
+ "computedProperties": "計算されたプロパティ",
+ "containerPolicies": "コンテナー ポリシー",
+ "throughputBuckets": "スループット バケット",
+ "globalSecondaryIndexPreview": "グローバル セカンダリ インデックス (プレビュー)",
+ "maskingPolicyPreview": "マスキング ポリシー (プレビュー)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "各インデックスの種類を選択してください。",
+ "enterFieldNameError": "フィールド名を入力してください。",
+ "wildcardPathError": "ワイルドカード パスがフィールド名に存在しません。次のようなパターンを使用してください: "
+ },
+ "partitionKey": {
+ "shardKey": "シャード キー",
+ "partitionKey": "パーティション キー",
+ "shardKeyTooltip": "シャード キー (フィールド) は、無制限のスケーラビリティを実現するために、多数のレプリカ セット (シャード) にデータを分割するために使用されます。データを均等に分散するフィールドを選択することが重要です。",
+ "partitionKeyTooltip": "は、スケーラビリティのためにパーティション間でデータを自動的に分散するために使用されます。幅広い値を持ち、要求ボリュームを均等に分散する JSON ドキュメントのプロパティを選択します。",
+ "sqlPartitionKeyTooltipSuffix": " 読み取り負荷の高い小規模なワークロードや、任意のサイズの書き込み負荷の高いワークロードの場合、ID が適していることがよくあります。",
+ "partitionKeySubtext": "小規模なワークロードの場合、項目 ID はパーティション キーに適した選択肢です。",
+ "mongoPlaceholder": "例: categoryId",
+ "gremlinPlaceholder": "例: /address",
+ "sqlFirstPartitionKey": "必須: 最初のパーティション キー (例: /TenantId)",
+ "sqlSecondPartitionKey": "2 番目のパーティション キー (例: /UserId)",
+ "sqlThirdPartitionKey": "3 番目のパーティション キー 例: /SessionId",
+ "defaultPlaceholder": "例: /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "コストの見積もり*",
+ "howWeCalculate": "これを計算する方法",
+ "updatedCostPerMonth": "1 か月あたりの更新されたコスト",
+ "currentCostPerMonth": "1 か月あたりの現在のコスト",
+ "perRu": "/RU",
+ "perHour": "/時",
+ "perDay": "/日",
+ "perMonth": "/月"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "開始時の自動スケーリングの最大 RU/秒は、現在の手動スループット設定とリソースのストレージに基づいて、システムによって決定されます。自動スケーリングを有効にした後は、最大 RU/秒を変更できます。",
+ "ttlWarningText": "システムは、クライアント アプリケーションによって明示的に発行される削除操作を必要とせずに、指定した TTL 値 (秒単位) に基づいて項目を自動的に削除します。詳細については次を参照してください:",
+ "ttlWarningLinkText": "Azure Cosmos DB の Time to Live (TTL)",
+ "unsavedIndexingPolicy": "インデックス作成ポリシー",
+ "unsavedDataMaskingPolicy": "データ マスキング ポリシー",
+ "unsavedComputedProperties": "計算されたプロパティ",
+ "unsavedEditorWarningPrefix": "次に加えられた最新の変更が保存されていません:",
+ "unsavedEditorWarningSuffix": "。[保存] をクリックして変更を確認してください。",
+ "updateDelayedApplyWarning": "事前に割り当てられた容量を超えるスループットの増加を要求しようとしています。この操作は、完了するまでにしばらく時間がかかります。",
+ "scalingUpDelayMessage": "スケールアップは、物理パーティションの数に基づき、現在 Azure Cosmos DB が即座にサポートできる範囲を超えているため、4 から 6 時間かかります。スループットを即座に {{instantMaximumThroughput}} に増加させたり、この値で続行してスケールアップが完了するまで待ったりすることができます。",
+ "exceedPreAllocatedMessage": "スループットの増加要求が、事前に割り当てられた容量を超えており、予想以上に時間がかかる場合があります。続行するには、次の 3 つのオプションから選択できます。",
+ "instantScaleOption": "即座に {{instantMaximumThroughput}} RU/秒までスケールアップできます。",
+ "asyncScaleOption": "{{maximumThroughput}} RU/秒未満の任意の値に、4 から 6 時間で、非同期的にスケールアップできます。",
+ "quotaMaxOption": "現在のクォータの最大値は {{maximumThroughput}} RU/秒です。この制限を超えるには、クォータの引き上げを要求する必要があり、Azure Cosmos DB チームがレビューします。",
+ "belowMinimumMessage": "現在の最小値 {{minimum}} RU/秒よりも低くスループットを設定することはできません。この制限の詳細については、サービス見積もりのドキュメントを参照してください。",
+ "saveThroughputWarning": "スループット設定を更新すると、課金に影響します。変更を保存する前に、以下の更新されたコスト見積もりをレビューしてください",
+ "currentAutoscaleThroughput": "現在の自動スケーリング スループット:",
+ "targetAutoscaleThroughput": "ターゲット自動スケーリング スループット:",
+ "currentManualThroughput": "現在の手動スループット:",
+ "targetManualThroughput": "ターゲット手動スループット:",
+ "applyDelayedMessage": "スループットの増加要求が正常に送信されました。この操作は、完了するまでに 1 から 3 営業日かかります。[通知] で最新の状態を表示してください。",
+ "databaseLabel": "データベース:",
+ "containerLabel": "コンテナー:",
+ "applyShortDelayMessage": "スループットの増加要求は現在処理中です。この操作は、完了するまでにしばらく時間がかかります。",
+ "applyLongDelayMessage": "スループットの増加要求は現在処理中です。この操作は、完了するまでに 1 から 3 営業日かかります。[通知] で最新の状態を表示してください。",
+ "throughputCapError": "お使いのアカウントは現在、合計スループット制限 {{throughputCap}} RU/秒で構成されています。この更新は、合計スループットが {{newTotalThroughput}} RU/秒に増加するため、実行できません。コスト管理の合計スループット制限を変更してください。",
+ "throughputIncrementError": "スループット値は 1000 単位で指定する必要があります"
+ },
+ "conflictResolution": {
+ "lwwDefault": "最終書き込み優先(既定)",
+ "customMergeProcedure": "マージ プロシージャ (カスタム)",
+ "mode": "モード",
+ "conflictResolverProperty": "競合リゾルバー プロパティ",
+ "storedProcedure": "ストアド プロシージャ",
+ "lwwTooltip": "最終書き込み優先 (LWW) ベースの競合解決スキームに使用される、ドキュメント内の整数プロパティの名前を取得または設定します。既定では、システム定義のタイムスタンプ プロパティ _ts を使用して、優先するドキュメントの競合するバージョンが決定されます。既定のタイムスタンプ ベースの競合解決をオーバーライドする場合は、独自の整数プロパティを指定します。",
+ "customTooltip": "競合を解決するためのストアド プロシージャ (マージ プロシージャとも呼ばれる) の名前を取得または設定します。アプリケーション定義のロジックを記述して、優先するドキュメントの競合するバージョンを決定できます。ストアド プロシージャは、サーバー側でトランザクションで 1 回だけ実行されます。ストアド プロシージャを指定しない場合、次で競合が発生します:",
+ "customTooltipConflictsFeed": " 競合フィード",
+ "customTooltipSuffix": "。ストアド プロシージャはいつでも更新または再登録できます。"
+ },
+ "changeFeed": {
+ "label": "変更フィード ログの保持ポリシー",
+ "tooltip": "変更フィード ログの保持ポリシーを有効にして、既定でコンテナー内の項目の過去 10 分間の履歴を保持します。これをサポートするために、書き込みに対するこのコンテナーの要求ユニット (RU) の料金は 2倍になります。読み取りは影響を受けません。"
+ },
+ "mongoIndexing": {
+ "disclaimer": "複数のプロパティでフィルター処理するクエリの場合は、複合インデックスではなく、複数の単一フィールド インデックスを作成してください。",
+ "disclaimerCompoundIndexesLink": " 複合インデックス ",
+ "disclaimerSuffix": "は、クエリ結果の並べ替えにのみ使用されます。複合インデックスを追加する必要がある場合は、Mongo シェルを使用して作成できます。",
+ "compoundNotSupported": "複合インデックスを持つコレクションは、インデックス作成エディターではまだサポートされていません。このコレクションのインデックス作成ポリシーを変更するには、Mongo シェルを使用してください。",
+ "aadError": "インデックス作成ポリシー エディターを使用するには、次にログインしてください:",
+ "aadErrorLink": "Azure portal。",
+ "refreshingProgress": "インデックス変換の進行状況を更新しています",
+ "canMakeMoreChangesZero": "現在のインデックス変換が完了したら、さらにインデックス作成の変更を行うことができます。",
+ "refreshToCheck": "更新して、完了したかどうかを確認します。",
+ "canMakeMoreChangesProgress": "現在のインデックス変換が完了したら、さらにインデックス作成の変更を行うことができます。{{progress}}% 完了しています。",
+ "refreshToCheckProgress": "更新して、進行状況を確認します。",
+ "definitionColumn": "定義",
+ "typeColumn": "型",
+ "dropIndexColumn": "インデックスのドロップ",
+ "addIndexBackColumn": "インデックスを追加し直す",
+ "deleteIndexButton": "[インデックスの削除] ボタン",
+ "addBackIndexButton": "[インデックスを追加し直す] ボタン",
+ "currentIndexes": "現在のインデックス",
+ "indexesToBeDropped": "ドロップするインデックス",
+ "indexFieldName": "インデックス フィールド名",
+ "indexType": "インデックスの種類",
+ "selectIndexType": "インデックスの種類を選択する",
+ "undoButton": "[元に戻す] ボタン"
+ },
+ "subSettings": {
+ "timeToLive": "Time to Live",
+ "ttlOff": "オフ",
+ "ttlOnNoDefault": "オン (既定値なし)",
+ "ttlOn": "オン",
+ "seconds": "秒",
+ "timeToLiveInSeconds": "秒単位の Time to Live",
+ "analyticalStorageTtl": "分析ストレージの Time to Live",
+ "geospatialConfiguration": "地理空間構成",
+ "geography": "地理",
+ "geometry": "ジオメトリ",
+ "uniqueKeys": "一意のキー",
+ "mongoTtlMessage": "コレクション/ドキュメントの有効期間 (Time to Live: TTL) を有効にするには、",
+ "mongoTtlLinkText": "TTL インデックスを作成する",
+ "partitionKeyTooltipTemplate": "この {{partitionKeyName}} は、スケーラビリティのために複数のパーティションにデータを分散するために使用されます。値 \"{{partitionKeyValue}}\" は、ドキュメントのパーティション分割方法を決定します。",
+ "largePartitionKeyEnabled": "大規模な {{partitionKeyName}} が有効になっています。",
+ "hierarchicalPartitioned": "階層的にパーティション分割されたコンテナー。",
+ "nonHierarchicalPartitioned": "非階層的にパーティション分割されたコンテナー。"
+ },
+ "scale": {
+ "freeTierInfo": "Free レベルでは、最初の {{ru}} RU/秒と {{storage}} GB のストレージをこのアカウントで無料で利用できます。アカウントを無料に保つには、アカウント内のすべてのリソースの合計 RU/秒を {{ru}} RU/秒に維持してください。",
+ "freeTierLearnMore": "詳細をご確認ください。",
+ "throughputRuS": "スループット (RU/秒)",
+ "autoScaleCustomSettings": "アカウントには、コンテナー レベルでのスループットの設定を妨げるカスタム設定があります。変更を加えるには、Cosmos DB エンジニアリング チームの連絡先担当者にお問い合わせください。",
+ "keyspaceSharedThroughput": "このテーブルの共有スループットは、キースペースで構成されています",
+ "throughputRangeLabel": "スループット ({{min}} - {{max}} RU/秒)",
+ "unlimited": "無制限"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "{{partitionKeyName}} の変更",
+ "currentPartitionKey": "現在の {{partitionKeyName}}",
+ "partitioning": "パーティション分割",
+ "hierarchical": "階層",
+ "nonHierarchical": "非階層",
+ "safeguardWarning": "新しいコンテナーにコピーされるデータの整合性を保つには、パーティション キー変更プロセスの間、ソース コンテナーに対して更新が行われないようにしてください。",
+ "changeDescription": "パーティション キーを変更するには、新しい宛先コンテナーを作成するか、既存の宛先コンテナーを選択する必要があります。その後、データが宛先コンテナーにコピーされます。",
+ "changeButton": "変更",
+ "changeJob": "{{partitionKeyName}} 変更ジョブ",
+ "cancelButton": "キャンセル",
+ "documentsProcessed": "({{processedCount}} 個中 {{totalCount}} 個のドキュメントが処理されました)"
+ },
+ "computedProperties": {
+ "ariaLabel": "計算されたプロパティ",
+ "learnMorePrefix": "計算されたプロパティの定義方法と使用方法について。"
+ },
+ "indexingPolicy": {
+ "ariaLabel": "インデックス作成ポリシー"
+ },
+ "dataMasking": {
+ "ariaLabel": "データ マスキング ポリシー",
+ "validationFailed": "検証に失敗しました:",
+ "includedPathsRequired": "includedPaths は必須です",
+ "includedPathsMustBeArray": "includedPaths は配列である必要があります",
+ "excludedPathsMustBeArray": "excludedPaths を指定する場合は、配列である必要があります"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "ベクター ポリシー",
+ "fullTextPolicy": "フルテキスト ポリシー",
+ "createFullTextPolicy": "新しいフルテキスト検索ポリシーの作成"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "このコンテナーには、次のインデックスが定義されています。",
+ "learnMoreSuffix": "グローバル セカンダリ インデックスの定義方法と使用方法について。",
+ "jsonAriaLabel": "グローバル セカンダリ インデックス JSON",
+ "addIndex": "インデックスの追加",
+ "settingsTitle": "グローバル セカンダリ インデックス設定",
+ "sourceContainer": "ソース コンテナー",
+ "indexDefinition": "グローバル セカンダリ インデックスの定義"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "インデックス変換の進行状況を更新できませんでした"
+ },
+ "throughputInput": {
+ "autoscale": "自動スケーリング",
+ "manual": "手動",
+ "minimumRuS": "最小 RU/秒",
+ "maximumRuS": "最大 RU/秒",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "ストレージ容量",
+ "fixed": "修正済み",
+ "unlimited": "無制限",
+ "instant": "即座",
+ "fourToSixHrs": "4 から 6 時間",
+ "autoscaleDescription": "使用量に基づいて、{{resourceType}} のスループットは次からスケーリングされます:",
+ "freeTierWarning": "{{ru}} RU/秒を超える手動スループットをプロビジョニングした場合、またはリソースが自動スケーリングで {{ru}} RU/秒を超えてスケーリングされた場合は、課金が適用されます。",
+ "capacityCalculator": "次で必要な RU/秒を見積もる:",
+ "capacityCalculatorLink": " 容量計算ツール",
+ "fixedStorageNote": "固定ストレージ容量のコレクションを使用する場合は、最大 10,000 RU/秒まで設定できます。",
+ "min": "分",
+ "max": "最大"
+ },
+ "throughputBuckets": {
+ "label": "スループット バケット",
+ "bucketLabel": "バケット {{id}}",
+ "dataExplorerQueryBucket": " (データ エクスプローラー クエリ バケット)",
+ "active": "アクティブ",
+ "inactive": "非アクティブ"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/ko/Resources.json b/src/Localization/ko/Resources.json
new file mode 100644
index 000000000..90f2153d3
--- /dev/null
+++ b/src/Localization/ko/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "확인",
+ "cancel": "취소",
+ "close": "닫기",
+ "save": "저장",
+ "delete": "삭제",
+ "update": "업데이트",
+ "discard": "삭제",
+ "execute": "실행",
+ "loading": "로드 중",
+ "loadingEllipsis": "로드 중...",
+ "next": "다음",
+ "previous": "이전",
+ "yes": "예",
+ "no": "아니요",
+ "result": "결과",
+ "learnMore": "자세한 정보",
+ "getStarted": "시작",
+ "retry": "다시 시도",
+ "apply": "적용",
+ "refresh": "새로 고침",
+ "copy": "복사",
+ "create": "만들기",
+ "confirm": "확인",
+ "open": "열기",
+ "rename": "이름 바꾸기",
+ "download": "다운로드",
+ "upload": "업로드",
+ "connect": "연결",
+ "remove": "제거",
+ "load": "로드",
+ "publish": "게시",
+ "browse": "찾아보기",
+ "increaseValueBy1": "값을 1만큼 늘리기",
+ "decreaseValueBy1": "값을 1만큼 줄이기"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Azure Cosmos DB 시작",
+ "postgres": "Azure Cosmos DB for PostgreSQL 시작",
+ "vcoreMongo": "Azure DocumentDB 시작(MongoDB 호환성 포함)"
+ },
+ "subtitle": {
+ "default": "모든 규모에 대해 전역적으로 분산된 다중 모델 데이터베이스 서비스",
+ "getStarted": "샘플 데이터 세트, 설명서 및 추가 도구를 시작하세요."
+ },
+ "quickStart": {
+ "title": "빠른 시작 개시",
+ "description": "빠른 시작 자습서를 시작하여 샘플 데이터 시작"
+ },
+ "newCollection": {
+ "title": "새 {{collectionName}}",
+ "description": "스토리지 및 처리량에 대한 새 컨테이너 만들기"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB 샘플 갤러리",
+ "description": "확장성 있는 인텔리전트 앱 패턴을 보여 주는 샘플을 검색합니다. Cosmos DB 사용하여 개념에서 코드로 얼마나 빨리 이동할 수 있는지 확인해 보세요."
+ },
+ "connectCard": {
+ "title": "연결",
+ "description": "원하는 도구 사용을 선호하시나요? 연결해야 하는 연결 문자열 찾기",
+ "pgAdmin": {
+ "title": "pgAdmin으로 연결",
+ "description": "pgAdmin을 선호하시나요? 여기에서 연결 문자열 찾기"
+ },
+ "vsCode": {
+ "title": "VS Code와 연결",
+ "description": "Visual Studio Code MongoDB 및 DocumentDB 클러스터 쿼리 및 관리"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL 셸",
+ "description": "PostgreSQL의 셸 인터페이스를 사용하여 테이블 만들기 및 데이터 조작"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "MongoDB의 셸 인터페이스를 사용하여 컬렉션 만들기 및 데이터 조작"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "PGSQL을 Cosmos DB?",
+ "body": "환영합니다. PGSQL을 Cosmos DB 시작에 대한 도움이 필요한 경우 샘플 데이터, 쿼리를 찾을 수 있는 위치는 다음과 같습니다."
+ },
+ "resetPassword": {
+ "headline": "암호 만들기",
+ "body": "암호를 아직 변경하지 않은 경우 지금 변경하세요."
+ },
+ "coachMark": {
+ "headline": "샘플 {{collectionName}} 시작",
+ "body": "샘플 데이터를 사용하여 샘플 컨테이너를 만드는 과정을 안내한 다음 데이터 탐색기를 둘러보겠습니다. 이 둘러보기 시작을 취소하고 직접 탐색할 수도 있습니다."
+ }
+ },
+ "sections": {
+ "recents": "최근 항목",
+ "clearRecents": "최근 항목 지우기",
+ "top3": "꼭 알아야 할 3가지",
+ "learningResources": "학습 리소스",
+ "nextSteps": "다음 단계",
+ "tipsAndLearnMore": "팁 및 자세한 정보",
+ "notebook": "Notebook",
+ "needHelp": "도움이 필요하세요?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "고급 모델링 패턴",
+ "description": "데이터베이스를 최적화하기 위한 고급 전략을 알아봅니다."
+ },
+ "partitioning": {
+ "title": "분할 모범 사례",
+ "description": "데이터 모델 및 분할 전략을 적용하는 방법을 알아봅니다."
+ },
+ "resourcePlanning": {
+ "title": "리소스 요구 사항 계획",
+ "description": "다양한 구성 선택 사항에 대해 알아보세요."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "MongoDB API란?",
+ "description": "MongoDB 및 해당 기능에 대한 Azure Cosmos DB 이해합니다."
+ },
+ "features": {
+ "title": "기능 및 구문",
+ "description": "장점 및 기능 살펴보기"
+ },
+ "migrate": {
+ "title": "데이터 마이그레이션",
+ "description": "데이터 이동을 위한 마이그레이션 전 단계"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Java 앱 빌드",
+ "description": "SDK를 사용하여 Java 앱을 만듭니다."
+ },
+ "partitioning": {
+ "title": "분할 모범 사례",
+ "description": "분할의 작동 방식을 알아봅니다."
+ },
+ "requestUnits": {
+ "title": "RU(요청 단위)",
+ "description": "RU 요금을 이해합니다."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "데이터 모델링",
+ "description": "그래프 데이터 모델링 권장 사항"
+ },
+ "partitioning": {
+ "title": "분할 모범 사례",
+ "description": "분할의 작동 방식 알아보기"
+ },
+ "queryData": {
+ "title": "데이터 쿼리",
+ "description": "Gremlin을 사용하여 데이터 쿼리"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Table API 무엇인가요?",
+ "description": "테이블 및 해당 기능에 대한 Azure Cosmos DB 이해"
+ },
+ "migrate": {
+ "title": "데이터 마이그레이션",
+ "description": "데이터 마이그레이션 방법 알아보기"
+ },
+ "faq": {
+ "title": "테이블 FAQ에 대한 Azure Cosmos DB",
+ "description": "테이블 Azure Cosmos DB 대한 일반적인 질문"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "바로 가기 키 데이터 탐색기",
+ "description": "Data Explorer를 탐색하는 키보드 단축키를 배워보세요."
+ },
+ "liveTv": {
+ "title": "기본 사항 알아보기",
+ "description": "Azure Cosmos DB Live TV 쇼 소개 및 비디오 방법을 시청하세요."
+ },
+ "sql": {
+ "sdk": {
+ "title": "SDK 사용 시작",
+ "description": "Azure Cosmos DB SDK에 대해 알아봅니다."
+ },
+ "migrate": {
+ "title": "데이터 마이그레이션",
+ "description": "Azure 서비스 및 오픈 소스 솔루션을 사용하여 데이터를 마이그레이션합니다."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Node.js 사용하여 앱 빌드",
+ "description": "Node.js 앱을 만듭니다."
+ },
+ "gettingStarted": {
+ "title": "시작 가이드",
+ "description": "시작하는 데 필요한 기본 사항을 알아보세요."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "컨테이너 만들기",
+ "description": "컨테이너 만들기 옵션을 알아보세요."
+ },
+ "throughput": {
+ "title": "처리량 프로비저닝",
+ "description": "처리량을 구성하는 방법을 알아봅니다."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "시작 ",
+ "description": "Gremlin 콘솔을 사용하여 만들기, 쿼리 및 트래버스"
+ },
+ "importData": {
+ "title": "Graph 데이터 가져오기",
+ "description": "BulkExecutor를 사용하여 대량 수집 데이터 알아보기"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": ".NET 앱 만들기",
+ "description": ".NET 앱에서 Table용 Azure Cosmos DB에 액세스하는 방법입니다."
+ },
+ "java": {
+ "title": "Java 앱 빌드",
+ "description": "Java SDK를 사용하여 Table 앱에 대한 Azure Cosmos DB 만들기 "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "데이터 모델링",
+ "distributionColumn": "배포 열을 선택하는 방법",
+ "buildApps": "Python/Java/Django를 사용하여 앱 빌드"
+ },
+ "vcoreMongo": {
+ "migrateData": "데이터 마이그레이션",
+ "vectorSearch": "벡터 검색을 사용하여 AI 앱 빌드",
+ "buildApps": "Nodejs를 사용하여 앱 빌드"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "성능 튜닝",
+ "diagnosticQueries": "유용한 진단 쿼리",
+ "sqlReference": "분산 SQL 참조"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "벡터 검색",
+ "textIndexing": "텍스트 인덱싱",
+ "troubleshoot": "일반적인 문제 해결"
+ }
+ },
+ "fabric": {
+ "buildTitle": "데이터베이스 빌드",
+ "useTitle": "데이터베이스 사용",
+ "newContainer": {
+ "title": "새 컨테이너",
+ "description": "데이터를 저장할 대상 컨테이너 만들기"
+ },
+ "sampleData": {
+ "title": "샘플 데이터",
+ "description": "데이터베이스에 샘플 데이터 로드"
+ },
+ "sampleVectorData": {
+ "title": "샘플 벡터 데이터",
+ "description": "text-embedding-ada-002를 사용하여 샘플 벡터 데이터 로드"
+ },
+ "appDevelopment": {
+ "title": "앱 개발",
+ "description": "SDK를 사용하여 앱을 빌드하려면 여기에서 시작하세요."
+ },
+ "sampleGallery": {
+ "title": "샘플 갤러리",
+ "description": "실제 엔드 투 엔드 샘플 가져오기"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "샘플 데이터",
+ "startButton": "시작",
+ "createPrompt": "\"{{containerName}}\" 컨테이너를 만들고 샘플 데이터를 해당 컨테이너로 가져옵니다. 몇 분 정도 걸릴 수 있습니다.",
+ "creatingContainer": "컨테이너 \"{{containerName}}\"을(를) 만드는 중...",
+ "importingData": "\"{{containerName}}\"로 데이터를 가져오는 중...",
+ "success": "샘플 데이터를 사용하여 \"{{containerName}}\"을 만들었습니다.",
+ "errorContainerExists": "데이터베이스 \"{{databaseName}}\"의 컨테이너 \"{{containerName}}\"이(가) 이미 있습니다. 삭제하고 다시 시도하세요.",
+ "errorCreateContainer": "컨테이너를 만들지 못했습니다. {{error}}",
+ "errorImportData": "데이터를 가져오지 못했습니다. {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "새 {{containerName}}",
+ "restoreContainer": "{{containerName}} 복원",
+ "deleteDatabase": "{{databaseName}} 삭제",
+ "deleteContainer": "{{containerName}} 삭제",
+ "newSqlQuery": "새 SQL 쿼리",
+ "newQuery": "새 쿼리",
+ "openMongoShell": "Mongo Shell 열기",
+ "newShell": "새 셸",
+ "openCassandraShell": "Cassandra Shell 열기",
+ "newStoredProcedure": "새 저장 프로시저",
+ "newUdf": "새 UDF",
+ "newTrigger": "새 트리거",
+ "deleteStoredProcedure": "저장 프로시저 삭제",
+ "deleteTrigger": "트리거 삭제",
+ "deleteUdf": "사용자 정의 함수 삭제"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "새 항목",
+ "newDocument": "새 문서",
+ "uploadItem": "항목 업로드",
+ "applyFilter": "필터 적용",
+ "unsavedChanges": "저장되지 않은 변경 내용",
+ "unsavedChangesMessage": "저장하지 않은 변경 내용이 손실됩니다. 계속하시겠습니까?",
+ "createDocumentFailed": "문서 만들기 실패",
+ "updateDocumentFailed": "문서 업데이트 실패",
+ "documentDeleted": "문서를 삭제했습니다.",
+ "deleteDocumentDialogTitle": "문서 삭제",
+ "deleteDocumentsDialogTitle": "문서 삭제",
+ "throttlingError": "트래픽률 제한 오류로 인해 일부 문서 삭제에 실패했습니다. 나중에 다시 시도하세요. 앞으로 이런 일이 없도록 컨테이너나 데이터베이스의 처리량을 늘려 보세요.",
+ "deleteFailed": "문서 삭제 실패({{error}})",
+ "missingShardProperty": "문서에 분할 속성이 없습니다. {{partitionKeyProperty}}",
+ "refreshGridFailed": "문서 그리드 새로 고침 실패",
+ "confirmDelete": "{{documentName}}을(를) 삭제하시겠습니까?",
+ "confirmDeleteTitle": "삭제 확인",
+ "selectedItems": "선택한 항목 {{count}}개",
+ "selectedItem": "선택한 항목",
+ "selectedDocuments": "선택한 문서 {{count}}개",
+ "selectedDocument": "선택한 문서",
+ "deleteDocumentFailedLog": "문서 {{documentId}}개 삭제 실패(상태 코드 {{statusCode}})",
+ "deleteSuccessLog": "문서 {{count}}개를 삭제함",
+ "deleteThrottledLog": "\"요청이 너무 큽니다\"(429) 오류로 인해 문서 {{count}}개를 삭제하지 못했습니다. 다시 시도하는 중...",
+ "missingShardKeyLog": "새 문서 저장에 실패했습니다. 문서 분할 키가 정의되어 있지 않습니다.",
+ "filterTooltip": "쿼리 조건을 입력하거나 목록에서 하나를 선택하세요.",
+ "loadMore": "더 많이 로드",
+ "documentEditor": "문서 편집기",
+ "savedFilters": "저장된 필터",
+ "defaultFilters": "기본 필터",
+ "abort": "중단",
+ "deletingDocuments": "문서 {{count}}개를 삭제하는 중",
+ "deletedDocumentsSuccess": "문서 {{count}}개를 삭제했습니다.",
+ "deleteAborted": "문서 삭제를 중단했습니다.",
+ "failedToDeleteDocuments": "문서 {{count}}개를 삭제하지 못했습니다.",
+ "requestTooLargeBase": "\"요청이 너무 큼\" 예외(429)로 인해 일부 삭제 요청이 실패했습니다.",
+ "retriedSuccessfully": "하지만 다시 시도하여 성공했습니다.",
+ "retryingNow": "지금 다시 시도 중입니다.",
+ "increaseThroughputTip": "앞으로 이런 일이 없도록 컨테이너나 데이터베이스의 처리량을 늘려 보세요.",
+ "numberOfSelectedDocuments": "선택한 문서 수: {{count}}개",
+ "mongoFilterPlaceholder": "쿼리 조건자(예: {\"id\":\"foo\"})를 입력하거나 드롭다운 목록에서 하나를 선택하거나, 모든 문서를 쿼리하려면 비워두세요.",
+ "sqlFilterPlaceholder": "쿼리 조건자(예: WHERE c.id=\"1\")를 입력하거나 드롭다운 목록에서 하나를 선택하거나, 모든 문서를 쿼리하려면 비워두세요.",
+ "error": "오류",
+ "warning": "경고"
+ },
+ "query": {
+ "executeQuery": "쿼리 실행",
+ "executeSelection": "선택 영역 실행",
+ "saveQuery": "쿼리 저장",
+ "downloadQuery": "쿼리 다운로드",
+ "cancelQuery": "쿼리 취소",
+ "openSavedQueries": "저장된 쿼리 열기",
+ "vertical": "수직",
+ "horizontal": "수평",
+ "view": "보기",
+ "editingQuery": "쿼리를 편집하는 증"
+ },
+ "storedProcedure": {
+ "id": "저장 프로시저 ID",
+ "idPlaceholder": "새 저장 프로시저 ID 입력",
+ "idAriaLabel": "저장 프로시저 ID",
+ "body": "저장 프로시저 본문",
+ "bodyAriaLabel": "저장 프로시저 본문",
+ "successfulExecution": "저장 프로시저 실행 성공",
+ "resultAriaLabel": "저장 프로시저 결과 실행",
+ "logsAriaLabel": "저장 프로시저 로그 실행",
+ "errors": "오류:",
+ "errorDetailsAriaLabel": "오류 세부 정보 링크",
+ "moreDetails": "추가 세부 정보",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "트리거 ID",
+ "idPlaceholder": "새 트리거 ID 입력",
+ "type": "트리거 유형",
+ "operation": "트리거 작업",
+ "body": "트리거 본문",
+ "bodyAriaLabel": "트리거 본문",
+ "pre": "사전",
+ "post": "게시",
+ "all": "모두",
+ "operationCreate": "만들기",
+ "operationDelete": "삭제",
+ "operationReplace": "바꾸기"
+ },
+ "udf": {
+ "id": "사용자 정의 함수 ID",
+ "idPlaceholder": "새 사용자 정의 함수 ID 입력",
+ "body": "사용자 정의 함수 본문",
+ "bodyAriaLabel": "사용자 정의 함수 본문"
+ },
+ "conflicts": {
+ "unsavedChanges": "저장되지 않은 변경 내용",
+ "changesWillBeLost": "모든 변경 내용이 손실됩니다. 계속하시겠습니까?",
+ "resolveConflictFailed": "충돌 확인에 실패했습니다.",
+ "deleteConflictFailed": "충돌 삭제 실패",
+ "refreshGridFailed": "문서 그리드 새로 고침 실패"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "deleteDatabase": {
+ "panelTitle": "{{databaseName}} 삭제",
+ "warningMessage": "경고! 수행하려는 작업은 실행 취소할 수 없습니다. 계속하면 이 리소스와 모든 자식 리소스가 영구적으로 삭제됩니다.",
+ "confirmPrompt": "{{databaseName}} ID(이름)를 입력하여 확인",
+ "inputMismatch": "입력한 {{databaseName}} 이름 \"{{input}}\"이(가) 선택한 {{databaseName}} \"{{selectedId}}\"와(과) 일치하지 않습니다.",
+ "feedbackTitle": "Azure Cosmos DB 개선에 도움을 주세요!",
+ "feedbackReason": "이 {{databaseName}}을(를) 삭제하는 이유는 무엇인가요?"
+ },
+ "deleteCollection": {
+ "panelTitle": "{{collectionName}} 삭제",
+ "confirmPrompt": "{{collectionName}} ID를 입력하여 확인하세요",
+ "inputMismatch": "입력한 ID {{input}}이(가) 선택한 {{selectedId}}와(과) 일치하지 않습니다.",
+ "feedbackTitle": "Azure Cosmos DB 개선에 도움을 주세요!",
+ "feedbackReason": "이 {{collectionName}}을(를) 삭제하는 이유가 무엇인가요?"
+ },
+ "addDatabase": {
+ "databaseLabel": "데이터베이스 {{suffix}}",
+ "databaseIdLabel": "데이터베이스 ID",
+ "keyspaceIdLabel": "키스페이스 ID",
+ "databaseIdPlaceholder": "새 {{databaseLabel}} ID 입력",
+ "databaseTooltip": "{{databaseLabel}}은(는) 하나 이상의 {{collectionsLabel}} 논리 컨테이너입니다.",
+ "shareThroughput": "{{collectionsLabel}} 전체에서 처리량 공유",
+ "shareThroughputTooltip": "{{databaseLabel}} 수준에서 프로비전된 처리량은 {{databaseLabel}} 내의 모든 {{collectionsLabel}}에서 공유됩니다.",
+ "greaterThanError": "autopilot 처리량에 대해 {{minValue}} 보다 큰 값을 입력하세요.",
+ "acknowledgeSpendError": "예상 {{period}} 지출을 확인하세요.",
+ "acknowledgeSpendErrorMonthly": "월별 예상 지출을 확인하세요.",
+ "acknowledgeSpendErrorDaily": "예상 일별 지출을 확인하세요.",
+ "provisionSharedThroughputTitle": "공유 처리량 프로비전",
+ "provisionThroughputLabel": "처리량 프로비전"
+ },
+ "addCollection": {
+ "createNew": "새로 만들기",
+ "useExisting": "기존 항목 사용",
+ "databaseTooltip": "데이터베이스는 네임스페이스와 유사합니다. 데이터베이스는 {{collectionName}} 집합을 관리하는 단위입니다.",
+ "shareThroughput": "{{collectionName}}의 처리량 공유",
+ "shareThroughputTooltip": "데이터베이스 수준에서 구성된 처리량은 데이터베이스 내 모든 {{collectionName}}에서 공유됩니다.",
+ "collectionIdLabel": "{{collectionName}} ID",
+ "collectionIdTooltip": "{{collectionName}}의 고유 식별자이며 REST 및 모든 SDK를 통해 ID 기반 라우팅에 사용됩니다.",
+ "collectionIdPlaceholder": "e.g., {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID, 예제 {{collectionName}}1",
+ "existingDatabaseAriaLabel": "기존 {{databaseName}} ID 선택",
+ "existingDatabasePlaceholder": "기존 {{databaseName}} ID 선택",
+ "indexing": "인덱싱",
+ "turnOnIndexing": "인덱싱 켜기",
+ "automatic": "자동",
+ "turnOffIndexing": "인덱싱 끄기",
+ "off": "끄기",
+ "sharding": "분할",
+ "shardingTooltip": "분할된 컬렉션은 데이터를 여러 복제본 집합(샤드)에 분산하여 무제한 확장성을 제공합니다. 분할된 컬렉션을 사용하려면 데이터를 고르게 분산할 샤드 키(필드)를 선택해야 합니다.",
+ "unsharded": "분할되지 않음",
+ "unshardedLabel": "분할되지 않음(20GB 제한)",
+ "sharded": "분할됨",
+ "addPartitionKey": "계층형 파티션 키 추가",
+ "hierarchicalPartitionKeyInfo": "이 기능을 사용하면 최대 3단계 키로 데이터를 분할해 데이터 분포를 개선할 수 있습니다. .NET V3, Java V4 SDK 또는 미리 보기 JavaScript V3 SDK가 필요합니다.",
+ "provisionDedicatedThroughput": "이 {{collectionName}}에 대한 전용 처리량 프로비전",
+ "provisionDedicatedThroughputTooltip": "필요에 따라 처리량이 프로비전된 데이터베이스 내의 {{collectionName}}에 대한 전용 처리량을 프로비전할 수 있습니다. 이 전용 처리량은 데이터베이스의 다른 {{collectionNamePlural}} 공유되지 않으며 데이터베이스에 대해 프로비전한 처리량에 포함되지 않습니다. 이 처리량은 데이터베이스 수준에서 프로비전한 처리량 외에도 요금이 청구됩니다.",
+ "uniqueKeysPlaceholderMongo": "쉼표로 구분된 경로(예: firstName,address.zipCode)",
+ "uniqueKeysPlaceholderSql": "쉼표로 구분된 경로 예: /firstName,/address/zipCode",
+ "addUniqueKey": "고유 키 추가",
+ "enableAnalyticalStore": "분석 저장소 사용",
+ "disableAnalyticalStore": "분석 저장소 사용 안 함",
+ "on": "켜기",
+ "analyticalStoreSynapseLinkRequired": "분석 저장소 {{collectionName}}을(를) 만들려면 Azure Synapse Link가 필요합니다. 이 Cosmos DB 계정에서 Synapse Link를 사용하도록 설정하세요.",
+ "enable": "활성화",
+ "containerVectorPolicy": "컨테이너 벡터 정책",
+ "containerFullTextSearchPolicy": "컨테이너 전체 텍스트 검색 정책",
+ "advanced": "고급",
+ "mongoIndexingTooltip": "_id 필드는 기본적으로 인덱싱됩니다. 모든 필드에 와일드카드 인덱스를 생성하면 쿼리가 최적화되어 개발에 권장됩니다.",
+ "createWildcardIndex": "모든 필드에 와일드카드 인덱스 만들기",
+ "legacySdkCheckbox": "내 애플리케이션은 이전 Cosmos .NET 또는 Java SDK 버전(.NET V1 또는 Java V2)을 사용합니다.",
+ "legacySdkInfo": "이전 SDK와 호환되도록 생성된 컨테이너는 최대 101바이트 크기의 파티션 키 값을 지원하는 레거시 분할 방식을 사용합니다. 이 옵션을 사용하면 계층형 파티션 키를 사용할 수 없습니다.",
+ "indexingOnInfo": "문서의 모든 속성은 유연하고 효율적인 쿼리를 위해 기본적으로 인덱싱됩니다.",
+ "indexingOffInfo": "인덱싱이 꺼집니다. 쿼리를 실행하지 않거나 키 값 작업만 하는 경우 권장합니다.",
+ "indexingOffWarning": "인덱싱이 꺼진 상태로 컨테이너를 만들면 인덱싱 정책을 변경할 수 없습니다. 인덱싱 정책이 있는 컨테이너에서만 인덱싱 변경이 허용됩니다.",
+ "acknowledgeSpendErrorMonthly": "월별 예상 지출을 확인하세요.",
+ "acknowledgeSpendErrorDaily": "예상 일별 지출을 확인하세요.",
+ "unshardedMaxRuError": "분할되지 않은 컬렉션은 최대 10,000RU를 지원합니다.",
+ "acknowledgeShareThroughputError": "이 전용 처리량의 예상 비용을 확인해 주세요.",
+ "vectorPolicyError": "컨테이너 벡터 정책의 오류를 수정하세요.",
+ "fullTextSearchPolicyError": "컨테이너 전체 텍스트 검색 정책의 오류를 수정해 주세요.",
+ "addingSampleDataSet": "샘플 데이터 세트 추가",
+ "databaseFieldLabelName": "데이터베이스 이름",
+ "databaseFieldLabelId": "데이터베이스 ID",
+ "newDatabaseIdPlaceholder": "새 데이터베이스 ID 입력",
+ "newDatabaseIdAriaLabel": "새 데이터베이스 ID, 새 데이터베이스 ID 입력",
+ "createNewDatabaseAriaLabel": "새 데이터베이스 만들기",
+ "useExistingDatabaseAriaLabel": "기존 데이터베이스 사용",
+ "chooseExistingDatabase": "기존 데이터베이스 선택",
+ "teachingBubble": {
+ "step1Headline": "샘플 데이터베이스 만들기",
+ "step1Body": "데이터베이스는 컨테이너의 부모입니다. 새 데이터베이스를 만들거나 기존 데이터베이스를 사용할 수 있습니다. 이 자습서에서는 SampleDB라는 새 데이터베이스를 만듭니다.",
+ "step1LearnMore": "리소스에 대해 자세히 알아보세요.",
+ "step2Headline": "처리량 설정",
+ "step2Body": "Cosmos DB는 데이터베이스 간에 처리량을 공유하는 것을 권장합니다. 자동 크기 조정은 설정한 최대 RU/s(요청 단위)에 따라 유연하게 처리량을 제공합니다.",
+ "step2LearnMore": "RU/s에 대해 자세히 알아보세요.",
+ "step3Headline": "컨테이너 이름 지정 중",
+ "step3Body": "컨테이너 이름 지정",
+ "step4Headline": "파티션 키 설정 중",
+ "step4Body": "마지막 단계 - 컬렉션에 대한 파티션 키를 정의해야 합니다. /address가 이 특정 예제에 대해 선택되었습니다. 좋은 파티션 키는 가능한 값의 범위가 넓어야 합니다.",
+ "step4CreateContainer": "컨테이너 만들기",
+ "step5Headline": "샘플 컨테이너 만드는 중",
+ "step5Body": "샘플 컨테이너를 만드는 중이며, 샘플 데이터를 추가하고 있습니다. 약 1분 정도 걸립니다.",
+ "step5BodyFollowUp": "샘플 컨테이너가 만들어지면 샘플 데이터 세트를 검토하고 다음 단계를 수행합니다.",
+ "stepOfTotal": "{{current}}/{{total}}단계"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "샤드 키(필드)는 데이터를 여러 복제본 집합(샤드)에 분산해 무제한 확장성을 제공합니다. 데이터를 고르게 분산할 필드를 신중히 선택하는 것이 중요합니다.",
+ "partitionKeyTooltip": "{{partitionKeyName}} 확장성을 위해 파티션 간에 데이터를 자동으로 분산하는 데 사용됩니다. 다양한 값을 갖고 요청 볼륨을 고르게 분산하는 JSON 문서의 속성을 선택하세요.",
+ "partitionKeyTooltipSqlSuffix": " 읽기 작업이 적거나 쓰기 작업이 많은 모든 크기의 워크로드에는 id가 좋은 선택입니다.",
+ "shardKeyLabel": "분할 키",
+ "partitionKeyLabel": "파티션 키",
+ "shardKeyPlaceholder": "e.g., categoryId",
+ "partitionKeyPlaceholderDefault": "예: /address",
+ "partitionKeyPlaceholderFirst": "필수 - 첫 번째 파티션 키(예: /TenantId)",
+ "partitionKeyPlaceholderSecond": "두 번째 파티션 키(예: /UserId)",
+ "partitionKeyPlaceholderThird": "세 번째 파티션 키(예: /SessionId)",
+ "partitionKeyPlaceholderGraph": "e.g., /address/zipCode",
+ "uniqueKeysTooltip": "고유 키는 개발자가 데이터베이스에 데이터 무결성 계층을 추가할 수 있게 합니다. 컨테이너 생성 시 고유 키 정책을 설정하면 파티션 키별로 하나 이상의 값이 고유함을 보장합니다.",
+ "uniqueKeysLabel": "고유 키",
+ "analyticalStoreLabel": "분석 저장소",
+ "analyticalStoreTooltip": "트랜잭션 워크로드 성능에 영향을 주지 않고 운영 데이터에 대해 거의 실시간 분석을 수행할 수 있도록 분석 저장소 기능을 사용하도록 설정하세요.",
+ "analyticalStoreDescription": "트랜잭션 워크로드 성능에 영향을 주지 않고 운영 데이터에 대해 거의 실시간 분석을 수행할 수 있도록 분석 저장소 기능을 사용하도록 설정하세요.",
+ "vectorPolicyTooltip": "유사성 쿼리에 사용할 수 있도록 벡터가 포함된 데이터 속성을 설명하세요."
+ },
+ "settings": {
+ "pageOptions": "페이지 옵션",
+ "pageOptionsDescription": "고정된 쿼리 결과 수를 지정하려면 [사용자 지정]을 선택하고, 페이지당 최대 쿼리 결과를 표시하려면 [제한 없음]을 선택하세요.",
+ "queryResultsPerPage": "페이지당 쿼리 결과",
+ "queryResultsPerPageTooltip": "페이지당 표시할 쿼리 결과 수를 입력하세요.",
+ "customQueryItemsPerPage": "페이지당 사용자 지정 쿼리 항목 수",
+ "custom": "사용자 지정",
+ "unlimited": "무제한",
+ "entraIdRbac": "Entra ID RBAC 사용 설정",
+ "entraIdRbacDescription": "Entra ID RBAC를 자동으로 사용하려면 [자동]을 선택하세요. 강제로 사용하거나 사용하지 않으려면 True/False를 선택하세요.",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "영역 선택",
+ "regionSelectionDescription": "Cosmos 클라이언트가 계정에 액세스할 때 사용하는 지역을 변경합니다.",
+ "selectRegion": "지역 선택",
+ "selectRegionTooltip": "클라이언트 작업에 사용할 계정 끝점을 변경합니다.",
+ "globalDefault": "전역(기본값)",
+ "readWrite": "(읽기/쓰기)",
+ "read": "(읽기)",
+ "queryTimeout": "쿼리 시간 초과",
+ "queryTimeoutDescription": "쿼리가 지정된 시간 제한에 도달하면 자동 취소가 설정되어 있지 않은 경우 쿼리를 취소할 수 있는 팝업이 표시됩니다.",
+ "enableQueryTimeout": "쿼리 제한 시간 사용",
+ "queryTimeoutMs": "쿼리 시간 제한(밀리초)",
+ "automaticallyCancelQuery": "시간 초과 시 쿼리 자동 취소",
+ "ruLimit": "RU 제한",
+ "ruLimitDescription": "쿼리가 설정된 RU 제한을 초과하면 쿼리가 중단됩니다.",
+ "enableRuLimit": "RU 제한 사용",
+ "ruLimitLabel": "RU 제한(RU)",
+ "defaultQueryResults": "기본 쿼리 결과 보기",
+ "defaultQueryResultsDescription": "쿼리 결과를 표시할 때 사용할 기본 보기를 선택하세요.",
+ "retrySettings": "설정 다시 시도",
+ "retrySettingsDescription": "CosmosDB 쿼리 중 제한된 요청에 적용되는 재시도 정책입니다.",
+ "maxRetryAttempts": "최대 재시도 횟수",
+ "maxRetryAttemptsTooltip": "요청에 대해 수행할 최대 재시도 횟수입니다. 기본값 9.",
+ "fixedRetryInterval": "수정된 재시도 간격(밀리초)",
+ "fixedRetryIntervalTooltip": "응답에 포함된 retryAfter를 무시하고 각 재시도 사이에 대기하는 고정 재시도 간격(밀리초)입니다. 기본값은 0밀리초입니다.",
+ "maxWaitTime": "최대 대기 시간(초)",
+ "maxWaitTimeTooltip": "재시도 중 요청을 대기하는 최대 대기 시간(초)입니다. 기본값은 30초입니다.",
+ "enableContainerPagination": "컨테이너 페이지 매김 사용 설정",
+ "enableContainerPaginationDescription": "한 번에 50개의 컨테이너를 로드합니다. 현재 컨테이너는 영숫자 순서로 불러오지 않습니다.",
+ "enableCrossPartitionQuery": "파티션 간 쿼리 사용 설정",
+ "enableCrossPartitionQueryDescription": "쿼리를 실행하는 동안 두 개 이상의 요청을 보냅니다. 쿼리가 단일 파티션 키 값으로 제한되지 않은 경우 여러 요청이 필요합니다.",
+ "maxDegreeOfParallelism": "최대 병렬 처리 수준",
+ "maxDegreeOfParallelismDescription": "병렬 쿼리 실행 시 클라이언트 쪽에서 동시에 실행되는 작업 수를 가져오거나 설정합니다. 양수 값으로 설정하면 동시 작업 수가 해당 값으로 제한됩니다. 0보다 작게 설정하면 시스템이 자동으로 실행할 동시 작업 수를 결정합니다.",
+ "maxDegreeOfParallelismQuery": "최대 병렬 처리 수준까지 쿼리",
+ "priorityLevel": "우선 순위 수준",
+ "priorityLevelDescription": "Priority-Based 실행 시 Data Explorer의 데이터 평면 요청 우선순위 수준을 설정합니다. \"없음\"을 선택하면 Data Explorer가 우선순위를 지정하지 않고 서버 기본 우선순위가 적용됩니다.",
+ "displayGremlinQueryResults": "Gremlin 쿼리 결과 표시 방식:",
+ "displayGremlinQueryResultsDescription": "쿼리 결과를 그래프로 자동 시각화하거나 JSON으로 표시하려면 Graph를 선택하세요.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "그래프 자동 시각화",
+ "enableSampleDatabase": "샘플 데이터베이스 사용 설정",
+ "enableSampleDatabaseDescription": "이 샘플 데이터베이스와 컬렉션은 NoSQL 쿼리를 탐색하는 데 사용할 수 있는 가상 제품 데이터를 포함합니다. Data Explorer UI에 별도의 데이터베이스로 표시되며, Microsoft가 비용 없이 생성하고 유지 관리합니다.",
+ "enableSampleDbAriaLabel": "쿼리 탐색용 샘플 DB 사용 설정",
+ "guidRepresentation": "GUID 표현",
+ "guidRepresentationDescription": "MongoDB의 GuidRepresentation은 BSON 문서에 저장할 때 GUID(전역 고유 식별자)가 직렬화되고 역직렬화되는 방식을 나타냅니다. 모든 문서 작업에 적용됩니다.",
+ "advancedSettings": "고급 설정",
+ "ignorePartitionKey": "문서 업데이트 시 파티션 키 무시",
+ "ignorePartitionKeyTooltip": "선택하면 업데이트 작업 시 파티션 키 값을 사용해 문서를 찾지 않습니다. 비정상적인 파티션 키로 인해 문서 업데이트가 실패할 때만 사용하세요.",
+ "clearHistory": "기록 지우기",
+ "clearHistoryConfirm": "계속 진행하시겠습니까?",
+ "clearHistoryDescription": "이 작업을 수행하면 이 브라우저에서 이 계정에 대한 모든 사용자 지정이 다음을 포함해 지워집니다.",
+ "clearHistoryTabLayout": "분할기 위치를 포함해 사용자 지정한 탭 레이아웃을 초기화합니다.",
+ "clearHistoryTableColumns": "사용자 지정 열을 포함해 테이블 열 기본 설정을 지웁니다.",
+ "clearHistoryFilters": "필터 기록 지우기",
+ "clearHistoryRegion": "영역 선택을 전역으로 재설정",
+ "increaseValueBy1000": "1000씩 값 늘리기",
+ "decreaseValueBy1000": "값을 1000으로 줄입니다.",
+ "none": "없음",
+ "low": "낮음",
+ "high": "높음",
+ "automatic": "자동",
+ "enhancedQueryControl": "향상된 쿼리 제어",
+ "enableQueryControl": "쿼리 제어 사용 설정",
+ "explorerVersion": "Explorer 버전",
+ "accountId": "계정 ID",
+ "sessionId": "세션 ID",
+ "popupsDisabledError": "브라우저에서 팝업이 차단되어 이 계정에 대한 권한 부여를 설정할 수 없습니다.\n이 사이트에 대해 팝업을 허용한 후 \"Entra ID에 로그인\" 버튼을 클릭하세요.",
+ "failedToAcquireTokenError": "권한 부여 토큰을 자동으로 가져오지 못했습니다. Entra ID RBAC 작업을 사용하려면 \"Entra ID 로그인\" 버튼을 클릭하세요."
+ },
+ "saveQuery": {
+ "panelTitle": "쿼리 저장",
+ "setupCostMessage": "규정 준수를 위해 쿼리를 \"{{databaseName}}\"이라는 별도의 데이터베이스 내 Azure Cosmos 계정의 컨테이너에 저장합니다. 계속하려면 계정에 컨테이너를 생성해야 하며, 예상 추가 비용은 하루 $0.77입니다.",
+ "completeSetup": "설정 완료",
+ "noQueryNameError": "쿼리 이름이 지정되지 않았습니다.",
+ "invalidQueryContentError": "잘못된 쿼리 내용이 지정되었습니다.",
+ "failedToSaveQueryError": "쿼리 {{queryName}}을(를) 저장하지 못했습니다.",
+ "failedToSetupContainerError": "저장된 쿼리용 컨테이너 설정에 실패했습니다.",
+ "accountNotSetupError": "쿼리를 저장하지 못했습니다. 계정이 쿼리 저장을 설정하지 않았습니다.",
+ "name": "이름"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "지정된 파일이 없습니다.",
+ "failedToLoadQueryError": "쿼리를 로드하지 못했습니다.",
+ "failedToLoadQueryFromFileError": "{{fileName}} 파일에서 쿼리를 불러오지 못했습니다.",
+ "selectFilesToOpen": "쿼리 문서 선택",
+ "browseFiles": "찾아보기"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "입력 매개변수 입력(있는 경우)",
+ "key": "키",
+ "param": "Param",
+ "partitionKeyValue": "파티션 키 값",
+ "value": "값",
+ "addNewParam": "새 매개변수 추가",
+ "addParam": "매개 변수 추가",
+ "deleteParam": "매개변수 삭제",
+ "invalidParamError": "잘못된 매개 변수를 지정했습니다. {{invalidParam}}",
+ "invalidParamConsoleError": "잘못된 매개변수가 지정되었습니다. {{invalidParam}}은(는) 올바른 리터럴 값이 아닙니다.",
+ "stringType": "문자열",
+ "customType": "사용자 지정"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "파일을 지정하지 않았습니다. 파일을 하나 이상 입력하세요.",
+ "selectJsonFiles": "JSON Files 선택",
+ "selectJsonFilesTooltip": "업로드할 JSON 파일을 하나 이상 선택하세요. 각 파일에는 단일 JSON 문서 또는 JSON 문서 배열이 포함될 수 있습니다. 한 번의 업로드 작업에서 모든 파일의 총 크기는 2MB 미만이어야 합니다. 더 큰 데이터 세트는 여러 번에 나누어 업로드할 수 있습니다.",
+ "fileNameColumn": "파일 이름",
+ "statusColumn": "상태",
+ "uploadStatus": "{{numSucceeded}} 생성됨, {{numThrottled}} 제한됨, {{numFailed}} 오류 발생",
+ "uploadedFiles": "업로드된 파일"
+ },
+ "copyNotebook": {
+ "copyFailedError": "{{name}}을(를) {{destination}}(으)로 복사 실패",
+ "uploadFailedError": "'{{name}}' 업로드 실패",
+ "location": "위치",
+ "locationAriaLabel": "위치",
+ "selectLocation": "복사할 노트북 위치 선택",
+ "name": "이름"
+ },
+ "publishNotebook": {
+ "publishFailedError": "{{notebookName}}을(를) 갤러리에 게시하지 못했습니다.",
+ "publishDescription": "게시하면 이 노트북이 Azure Cosmos DB 노트북 공개 갤러리에 표시됩니다. 게시 전에 민감한 데이터나 출력이 제거되었는지 확인하세요.",
+ "publishPrompt": "\"{{name}}\"을(를) 게시하고 갤러리에 공유하시겠습니까?",
+ "coverImage": "커버 이미지",
+ "coverImageUrl": "표지 이미지 URL",
+ "name": "이름",
+ "description": "설명",
+ "tags": "태그",
+ "tagsPlaceholder": "선택 태그 1, 선택 태그 2",
+ "preview": "미리 보기",
+ "urlType": "URL",
+ "customImage": "사용자 지정 이미지",
+ "takeScreenshot": "화면 캡처",
+ "useFirstDisplayOutput": "첫 번째 디스플레이 출력 사용",
+ "failedToCaptureOutput": "첫 번째 출력을 캡처하지 못했습니다.",
+ "outputDoesNotExist": "셀에 대한 출력이 없습니다.",
+ "failedToConvertError": "{{fileName}}을(를) base64 형식으로 변환하지 못했습니다.",
+ "failedToUploadError": "{{fileName}} 업로드 실패"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "데이터 전송 작업을 시작하지 못했습니다.",
+ "suboptimalPartitionKeyError": "경고: 컬렉션이 최적이 아닌 파티션 키를 사용하고 있을 수 있습니다.",
+ "description": "컨테이너의 파티션 키를 변경하려면 올바른 파티션 키를 가진 대상 컨테이너를 새로 만들어야 합니다. 기존 대상 컨테이너를 선택할 수도 있습니다.",
+ "sourceContainerId": "원본 {{collectionName}} ID",
+ "destinationContainerId": "대상 {{collectionName}} ID",
+ "collectionIdTooltip": "{{collectionName}}의 고유 식별자이며 REST 및 모든 SDK를 통해 ID 기반 라우팅에 사용됩니다.",
+ "collectionIdPlaceholder": "e.g., {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID, 예제 {{collectionName}}1",
+ "existingContainers": "기존 컨테이너",
+ "partitionKeyWarning": "대상 컨테이너가 이미 존재하면 안 됩니다. Explorer가 새 대상 컨테이너를 생성합니다."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "키스페이스 이름",
+ "keyspaceTooltip": "기존 키스페이스를 선택하거나 새 키스페이스 ID를 입력하세요.",
+ "tableIdLabel": "테이블을 만들려면 CQL 명령을 입력하세요.",
+ "enterTableId": "테이블 ID 입력",
+ "tableSchemaAriaLabel": "테이블 스키마",
+ "provisionDedicatedThroughput": "이 테이블에 대한 전용 처리량 프로비전",
+ "provisionDedicatedThroughputTooltip": "키스페이스에 처리량이 프로비전된 경우, 테이블에 전용 처리량을 선택적으로 프로비전할 수 있습니다. 이 전용 처리량은 키스페이스 내 다른 테이블과 공유되지 않으며, 키스페이스에 프로비전한 처리량에 포함되지 않습니다. 이 전용 처리량은 키스페이스 수준에서 프로비전한 처리량과 별도로 청구됩니다."
+ },
+ "tables": {
+ "addProperty": "속성 추가",
+ "addRow": "행 추가",
+ "addEntity": "엔터티 추가",
+ "back": "뒤로",
+ "nullFieldsWarning": "경고: Null 필드는 편집용으로 표시되지 않습니다.",
+ "propertyEmptyError": "{{property}}을(를) 비워 둘 수 없습니다. {{property}} 값을 입력하세요.",
+ "whitespaceError": "{{property}}에 공백을 포함할 수 없습니다. {{property}}에 공백 없이 값을 입력하세요.",
+ "propertyTypeEmptyError": "속성 형식은 비워 둘 수 없습니다. 속성 {{property}}에 대한 드롭다운에서 형식을 선택하세요."
+ },
+ "tableQuerySelect": {
+ "selectColumns": "쿼리할 열을 선택하세요.",
+ "availableColumns": "사용 가능한 열"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "컨테이너 항목 보기에서 표시할 열을 선택하세요.",
+ "searchFields": "검색 필드",
+ "reset": "다시 설정",
+ "partitionKeySuffix": " (파티션 키)"
+ },
+ "newVertex": {
+ "addProperty": "속성 추가"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "전역 보조 인덱스 컨테이너 ID",
+ "globalSecondaryIndexIdPlaceholder": "e.g., indexbyEmailId",
+ "projectionQuery": "프로젝션 쿼리",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "전역 보조 인덱스 정의에 대해 자세히 알아보세요.",
+ "disabledTitle": "전역 보조 인덱스가 이미 생성 중입니다. 다른 항목을 만들기 전에 완료되기를 기다려 주세요."
+ },
+ "stringInput": {
+ "inputMismatchError": "입력한 {{input}}이(가) 선택한 {{selectedId}}와(과) 일치하지 않습니다."
+ },
+ "panelInfo": {
+ "information": "정보",
+ "moreDetails": "추가 세부 정보"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "스케일링",
+ "conflictResolution": "충돌 해결",
+ "settings": "설정",
+ "indexingPolicy": "인덱싱 정책",
+ "partitionKeys": "파티션 키",
+ "partitionKeysPreview": "파티션 키(미리 보기)",
+ "computedProperties": "계산된 속성",
+ "containerPolicies": "컨테이너 정책",
+ "throughputBuckets": "처리량 버킷",
+ "globalSecondaryIndexPreview": "전역 보조 인덱스(미리 보기)",
+ "maskingPolicyPreview": "마스킹 정책(미리 보기)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "각 인덱스 유형을 선택하세요.",
+ "enterFieldNameError": "필드 이름을 입력하세요.",
+ "wildcardPathError": "필드 이름에 와일드카드 경로가 없습니다. 다음과 같은 패턴 사용 "
+ },
+ "partitionKey": {
+ "shardKey": "분할 키",
+ "partitionKey": "파티션 키",
+ "shardKeyTooltip": "샤드 키(필드)는 데이터를 여러 복제본 집합(샤드)에 분산해 무제한 확장성을 제공합니다. 데이터를 고르게 분산할 필드를 신중히 선택하는 것이 중요합니다.",
+ "partitionKeyTooltip": "확장성을 위해 파티션 간에 데이터를 자동으로 분산하는 데 사용됩니다. 다양한 값을 갖고 요청 볼륨을 고르게 분산하는 JSON 문서의 속성을 선택하세요.",
+ "sqlPartitionKeyTooltipSuffix": " 읽기 작업이 적거나 쓰기 작업이 많은 모든 크기의 워크로드에는 id가 좋은 선택입니다.",
+ "partitionKeySubtext": "작은 워크로드의 경우 항목 ID는 파티션 키에 적합한 선택입니다.",
+ "mongoPlaceholder": "e.g., categoryId",
+ "gremlinPlaceholder": "예: /address",
+ "sqlFirstPartitionKey": "필수 - 첫 번째 파티션 키(예: /TenantId)",
+ "sqlSecondPartitionKey": "두 번째 파티션 키(예: /UserId)",
+ "sqlThirdPartitionKey": "세 번째 파티션 키(예: /SessionId)",
+ "defaultPlaceholder": "e.g., /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "예상 비용*",
+ "howWeCalculate": "이를 계산하는 방법",
+ "updatedCostPerMonth": "월별 업데이트된 비용",
+ "currentCostPerMonth": "월별 현재 비용",
+ "perRu": "/RU",
+ "perHour": "/시간",
+ "perDay": "/일",
+ "perMonth": "/월"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "시작 자동 크기 조정 최대 RU/s는 현재 수동 처리량 설정과 리소스 스토리지를 기준으로 시스템에서 결정합니다. 자동 크기 조정이 활성화된 후 최대 RU/s를 변경할 수 있습니다.",
+ "ttlWarningText": "시스템은 클라이언트 애플리케이션에서 명시적으로 발급한 삭제 작업을 실행하지 않아도, 사용자가 제공한 TTL 값(초)을 기준으로 항목을 자동 삭제합니다. 자세한 내용은 다음을 참조하세요.",
+ "ttlWarningLinkText": "Azure Cosmos DB의 TTL(Time to Live)",
+ "unsavedIndexingPolicy": "인덱싱 정책",
+ "unsavedDataMaskingPolicy": "데이터 마스킹 정책",
+ "unsavedComputedProperties": "계산된 속성",
+ "unsavedEditorWarningPrefix": "최신 변경 내용을 저장하지 않았습니다.",
+ "unsavedEditorWarningSuffix": ". 저장을 클릭하여 변경 내용을 확인하세요.",
+ "updateDelayedApplyWarning": "미리 할당된 용량을 초과하여 처리량 증가를 요청하려고 합니다. 이 작업을 완료하는 데 다소 시간이 걸립니다.",
+ "scalingUpDelayMessage": "실제 파티션 수에 따라 현재 Azure Cosmos DB가 즉시 지원할 수 있는 한도를 초과하므로 확장에는 4~6시간이 소요됩니다. 처리량을 {{instantMaximumThroughput}}(으)로 즉시 늘리거나, 이 값을 유지하며 확장이 완료될 때까지 기다릴 수 있습니다.",
+ "exceedPreAllocatedMessage": "처리량 증가 요청이 미리 할당된 용량을 초과하여 예상보다 오래 걸릴 수 있습니다. 계속하기 위해 선택할 수 있는 세 가지 옵션이 있습니다.",
+ "instantScaleOption": "{{instantMaximumThroughput}}RU/s까지 즉시 확장할 수 있습니다.",
+ "asyncScaleOption": "4~6시간 내에 {{maximumThroughput}}RU/s 이하의 값으로 비동기적으로 확장할 수 있습니다.",
+ "quotaMaxOption": "현재 할당량 최댓값은 {{maximumThroughput}}RU/s입니다. 이 한도를 초과하려면 할당량 증가를 요청해야 하며, Azure Cosmos DB 팀에서 검토합니다.",
+ "belowMinimumMessage": "처리량을 현재 최소 {{minimum}}RU/s 미만으로 낮출 수 없습니다. 이 한도에 대한 자세한 내용은 서비스 견적 문서를 참고하세요.",
+ "saveThroughputWarning": "처리량 설정을 변경하면 청구에 영향이 있습니다. 변경 내용을 저장하기 전에 아래에서 업데이트된 예상 비용을 검토하세요.",
+ "currentAutoscaleThroughput": "현재 자동 크기 조정 처리량:",
+ "targetAutoscaleThroughput": "대상 자동 크기 조정 처리량:",
+ "currentManualThroughput": "현재 수동 처리량:",
+ "targetManualThroughput": "대상 수동 처리량:",
+ "applyDelayedMessage": "처리량 증가 요청이 성공적으로 제출되었습니다. 이 작업은 영업일 기준 1~3일이 소요됩니다. 최신 상태는 알림에서 확인하세요.",
+ "databaseLabel": "데이터베이스:",
+ "containerLabel": "컨테이너:",
+ "applyShortDelayMessage": "처리량 증가 요청이 현재 진행 중입니다. 이 작업을 완료하는 데 다소 시간이 걸립니다.",
+ "applyLongDelayMessage": "처리량 증가 요청이 현재 진행 중입니다. 이 작업은 영업일 기준 1~3일이 소요됩니다. 최신 상태는 알림에서 확인하세요.",
+ "throughputCapError": "계정이 현재 총 처리량 한도인 {{throughputCap}}RU/s로 구성되어 있습니다. 총 처리량이 {{newTotalThroughput}}RU/s로 늘어나므로 이 업데이트를 할 수 없습니다. 비용 관리에서 총 처리량 한도를 변경합니다.",
+ "throughputIncrementError": "처리량 값은 1000씩 증가해야 합니다."
+ },
+ "conflictResolution": {
+ "lwwDefault": "마지막 쓰기 우선(기본값)",
+ "customMergeProcedure": "병합 프로시저(사용자 지정)",
+ "mode": "모드",
+ "conflictResolverProperty": "충돌 해결 프로그램 속성",
+ "storedProcedure": "저장 프로시저",
+ "lwwTooltip": "문서에서 LWW(Last Write Wins) 기반 충돌 해결 방식에 사용되는 정수 속성의 이름을 가져오거나 설정합니다. 기본적으로 시스템은 시스템 정의 타임스탬프 속성인 _ts를 사용해 충돌하는 문서 버전의 우승자를 결정합니다. 기본 타임스탬프 기반 충돌 해결 방식을 재정의하려면 고유한 정수 속성을 지정하세요.",
+ "customTooltip": "충돌 해결을 위한 저장 프로시저(병합 프로시저)의 이름을 가져오거나 설정합니다. 애플리케이션 정의 논리를 작성하여 충돌하는 문서 버전의 우승자를 결정할 수 있습니다. 저장 프로시저는 서버 측에서 트랜잭션으로 정확히 한 번 실행됩니다. 저장 프로시저를 제공하지 않으면 다음에서 충돌이 채워집니다.",
+ "customTooltipConflictsFeed": " 충돌 피드",
+ "customTooltipSuffix": ". 저장 프로시저는 언제든지 업데이트하거나 다시 등록할 수 있습니다."
+ },
+ "changeFeed": {
+ "label": "피드 로그 보존 정책 변경",
+ "tooltip": "변경 피드 로그 보존 정책을 기본값으로 사용하도록 설정하여 컨테이너 항목의 최근 10분 기록을 유지합니다. 이를 지원하기 위해 이 컨테이너에 대한 RU(요청 단위) 요금은 쓰기 작업에 대해 2배로 적용됩니다. 읽기 작업에는 영향이 없습니다."
+ },
+ "mongoIndexing": {
+ "disclaimer": "여러 속성을 필터링하는 쿼리의 경우 복합 인덱스 대신 여러 개의 단일 필드 인덱스를 만드세요.",
+ "disclaimerCompoundIndexesLink": " 복합 인덱스 ",
+ "disclaimerSuffix": "쿼리 결과를 정렬하는 데만 사용됩니다. 복합 인덱스 추가가 필요한 경우 Mongo 셸을 사용하여 만들 수 있습니다.",
+ "compoundNotSupported": "복합 인덱스가 있는 컬렉션은 인덱싱 편집기에서 아직 지원되지 않습니다. 이 컬렉션의 인덱싱 정책을 수정하려면 Mongo 셸을 사용하세요.",
+ "aadError": "인덱싱 정책 편집기를 사용하려면 다음에 로그인하세요.",
+ "aadErrorLink": "Azure Portal.",
+ "refreshingProgress": "인덱스 변환 진행률 새로 고침",
+ "canMakeMoreChangesZero": "현재 인덱스 변환이 완료되면 인덱싱을 더 많이 변경할 수 있습니다. ",
+ "refreshToCheck": "새로 고쳐서 완료되었는지 확인합니다.",
+ "canMakeMoreChangesProgress": "현재 인덱스 변환이 완료되면 더 많은 인덱싱 변경을 수행할 수 있습니다. {{progress}}% 완료되었습니다. ",
+ "refreshToCheckProgress": "진행률을 확인하려면 새로 고치세요.",
+ "definitionColumn": "정의",
+ "typeColumn": "유형",
+ "dropIndexColumn": "인덱스 삭제",
+ "addIndexBackColumn": "인덱스 다시 추가",
+ "deleteIndexButton": "인덱스 삭제 버튼",
+ "addBackIndexButton": "인덱스 다시 추가 버튼",
+ "currentIndexes": "현재 인덱스",
+ "indexesToBeDropped": "삭제할 인덱스",
+ "indexFieldName": "인덱스 필드 이름",
+ "indexType": "인덱스 유형",
+ "selectIndexType": "인덱스 유형 선택",
+ "undoButton": "실행 취소 단추"
+ },
+ "subSettings": {
+ "timeToLive": "TTL(Time to Live)",
+ "ttlOff": "끄기",
+ "ttlOnNoDefault": "켜기(기본값 없음)",
+ "ttlOn": "켜기",
+ "seconds": "초",
+ "timeToLiveInSeconds": "TTL(Time to Live)(초)",
+ "analyticalStorageTtl": "분석 스토리지 TTL(Time to Live)",
+ "geospatialConfiguration": "지리 공간적 구성",
+ "geography": "지역",
+ "geometry": "기하 도형",
+ "uniqueKeys": "고유 키",
+ "mongoTtlMessage": "컬렉션/문서에 TTL(Time To Live)을 설정하려면,",
+ "mongoTtlLinkText": "TTL 인덱스 만들기",
+ "partitionKeyTooltipTemplate": "이 {{partitionKeyName}}은(는) 확장성을 위해 여러 파티션에 데이터를 분산하는 데 사용됩니다. \"{{partitionKeyValue}}\" 값이 문서 분할 방식을 결정합니다.",
+ "largePartitionKeyEnabled": "큰 {{partitionKeyName}}이(가) 활성화되엇습니다.",
+ "hierarchicalPartitioned": "계층적으로 분할된 컨테이너입니다.",
+ "nonHierarchicalPartitioned": "계층적으로 분할되지 않은 컨테이너입니다."
+ },
+ "scale": {
+ "freeTierInfo": "무료 계층을 사용하면 이 계정에서 첫 {{ru}}RU/s와 {{storage}}GB의 스토리지를 무료로 이용할 수 있습니다. 계정을 무료로 유지하려면 계정 내 모든 리소스의 총 RU/s를 {{ru}}RU/s로 유지하세요.",
+ "freeTierLearnMore": "자세히 알아보세요.",
+ "throughputRuS": "처리량(RU/s)",
+ "autoScaleCustomSettings": "계정에 컨테이너 수준에서 처리량 설정을 제한하는 사용자 지정 설정이 있습니다. 변경하려면 Cosmos DB 엔지니어링 팀 담당자와 협력하세요.",
+ "keyspaceSharedThroughput": "이 테이블 공유 처리량은 키스페이스에서 구성되어 있습니다.",
+ "throughputRangeLabel": "처리량({{min}} - {{max}} RU/s)",
+ "unlimited": "무제한"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "{{partitionKeyName}} 변경",
+ "currentPartitionKey": "현재 {{partitionKeyName}}",
+ "partitioning": "분할",
+ "hierarchical": "계층적",
+ "nonHierarchical": "비계층적",
+ "safeguardWarning": "새 컨테이너로 복사되는 데이터의 무결성을 보호하려면 파티션 키 변경 프로세스의 전체 기간 동안 원본 컨테이너에 업데이트가 없도록 하세요.",
+ "changeDescription": "파티션 키를 변경하려면 새 대상 컨테이너를 만들거나 기존 대상 컨테이너를 선택해야 합니다. 그러면 데이터가 대상 컨테이너에 복사됩니다.",
+ "changeButton": "변경",
+ "changeJob": "{{partitionKeyName}}개 작업 변경",
+ "cancelButton": "취소",
+ "documentsProcessed": "({{processedCount}}/{{totalCount}}개 문서 처리됨)"
+ },
+ "computedProperties": {
+ "ariaLabel": "계산된 속성",
+ "learnMorePrefix": "계산된 속성을 정의하는 방법 및 사용 방법에 대한 설명입니다."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "인덱싱 정책"
+ },
+ "dataMasking": {
+ "ariaLabel": "데이터 마스킹 정책",
+ "validationFailed": "유효성 검사 실패:",
+ "includedPathsRequired": "includedPaths는 필수입니다.",
+ "includedPathsMustBeArray": "includedPaths는 배열이어야 합니다.",
+ "excludedPathsMustBeArray": "excludedPaths는 제공된 경우 배열이어야 합니다."
+ },
+ "containerPolicy": {
+ "vectorPolicy": "벡터 정책",
+ "fullTextPolicy": "전체 텍스트 정책",
+ "createFullTextPolicy": "새 전체 텍스트 검색 정책 만들기"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "이 컨테이너에는 다음과 같은 인덱스가 정의되어 있습니다.",
+ "learnMoreSuffix": "전역 보조 인덱스를 정의하는 방법 및 사용 방법에 대해 설명합니다.",
+ "jsonAriaLabel": "전역 보조 인덱스 JSON",
+ "addIndex": "인덱스 추가",
+ "settingsTitle": "전역 보조 인덱스 설정",
+ "sourceContainer": "원본 컨테이너",
+ "indexDefinition": "전역 보조 인덱스 정의"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "인덱스 변환 진행률 새로 고침 실패"
+ },
+ "throughputInput": {
+ "autoscale": "자동 크기 조정",
+ "manual": "수동",
+ "minimumRuS": "최소 RU/s",
+ "maximumRuS": "최대 RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "스토리지 용량",
+ "fixed": "해결됨",
+ "unlimited": "무제한",
+ "instant": "인스턴트",
+ "fourToSixHrs": "4~6시간",
+ "autoscaleDescription": "사용량에 따라 {{resourceType}} 처리량이 다음 범위에서 확장됩니다.",
+ "freeTierWarning": "수동 처리량을 {{ru}}RU/s 이상 프로비전하거나 자동 크기 조정으로 리소스가 {{ru}}RU/s를 초과하면 청구가 적용됩니다.",
+ "capacityCalculator": "필요한 RU/s를 다음을 기준으로 예측",
+ "capacityCalculatorLink": " 용량 계산기",
+ "fixedStorageNote": "고정 스토리지 용량이 있는 컬렉션은 최대 10,000RU/s까지 설정할 수 있습니다.",
+ "min": "분",
+ "max": "최대"
+ },
+ "throughputBuckets": {
+ "label": "처리량 버킷",
+ "bucketLabel": "버킷 {{id}}",
+ "dataExplorerQueryBucket": " (데이터 탐색기 쿼리 버킷)",
+ "active": "활성",
+ "inactive": "비활성"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/nl/Resources.json b/src/Localization/nl/Resources.json
new file mode 100644
index 000000000..f9c5fca1d
--- /dev/null
+++ b/src/Localization/nl/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Annuleren",
+ "close": "Sluiten",
+ "save": "Opslaan",
+ "delete": "Verwijderen",
+ "update": "Bijwerken",
+ "discard": "Negeren",
+ "execute": "Uitvoeren",
+ "loading": "Laden",
+ "loadingEllipsis": "Laden...",
+ "next": "Volgende",
+ "previous": "Vorige",
+ "yes": "Ja",
+ "no": "Nee",
+ "result": "Resultaat",
+ "learnMore": "Meer informatie",
+ "getStarted": "Aan de slag",
+ "retry": "Opnieuw proberen",
+ "apply": "Toepassen",
+ "refresh": "Vernieuwen",
+ "copy": "Kopiëren",
+ "create": "Maken",
+ "confirm": "Bevestigen",
+ "open": "Open",
+ "rename": "Naam wijzigen",
+ "download": "Downloaden",
+ "upload": "Uploaden",
+ "connect": "Verbinding maken",
+ "remove": "Verwijderen",
+ "load": "Laden",
+ "publish": "Publiceren",
+ "browse": "Bladeren",
+ "increaseValueBy1": "Waarde verhogen met 1",
+ "decreaseValueBy1": "Waarde verlagen met 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Welkom bij Azure Cosmos DB",
+ "postgres": "Welkom bij Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Welkom bij Azure DocumentDB (met MongoDB-compatibiliteit)"
+ },
+ "subtitle": {
+ "default": "Wereldwijd gedistribueerde, multi-modeldatabase-service voor elke schaalgrootte",
+ "getStarted": "Ga aan de slag met onze voorbeelddatasets, documentatie en extra tools."
+ },
+ "quickStart": {
+ "title": "Quick Start starten",
+ "description": "Start een snelstart-zelfstudie om aan de slag te gaan met voorbeeldgegevens"
+ },
+ "newCollection": {
+ "title": "Nieuw {{collectionName}}",
+ "description": "Een nieuwe container maken voor opslag en doorvoer"
+ },
+ "samplesGallery": {
+ "title": "Galerie met voorbeelden van Azure Cosmos DB",
+ "description": "Ontdek voorbeelden waarin schaalbare, intelligente app-patronen worden getoond. Probeer er nu een om te zien hoe snel u van concept naar code kunt gaan met Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Verbinding maken",
+ "description": "Gebruikt u liever uw eigen hulpprogramma's? Zoek de connection string die u nodig hebt om verbinding te maken",
+ "pgAdmin": {
+ "title": "Verbinden met pgAdmin",
+ "description": "Voorkeur voor pgAdmin? Uw verbindingsreeksen vindt u hier"
+ },
+ "vsCode": {
+ "title": "Verbinding maken met VS Code",
+ "description": "Query's uitvoeren en beheren op uw MongoDB- en DocumentDB-clusters in Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL-shell",
+ "description": "Een tabel maken en communiceren met gegevens met de shell-interface van PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Mongo-shell",
+ "description": "Een verzameling maken en communiceren met gegevens met behulp van de shell-interface van MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Nieuw bij Cosmos DB PGSQL?",
+ "body": "Welkom! Als u Cosmos DB PGSQL nog niet kent en hulp nodig hebt om aan de slag te gaan, kunt u hier voorbeeldgegevens vinden en query's uitvoeren."
+ },
+ "resetPassword": {
+ "headline": "Uw wachtwoord maken",
+ "body": "Als u uw wachtwoord nog niet hebt gewijzigd, doe dat dan nu."
+ },
+ "coachMark": {
+ "headline": "Beginnen met voorbeeld {{collectionName}}",
+ "body": "U wordt begeleid bij het maken van een voorbeeldcontainer met voorbeeldgegevens. Vervolgens krijgt u een rondleiding door Data Explorer. U kunt ook het starten van deze tour annuleren en zelf op verkenning gaan"
+ }
+ },
+ "sections": {
+ "recents": "Recente items",
+ "clearRecents": "Recente items wissen",
+ "top3": "De drie belangrijkste zaken om te weten",
+ "learningResources": "Trainingsresources",
+ "nextSteps": "Volgende stappen",
+ "tipsAndLearnMore": "Tips & meer informatie",
+ "notebook": "Notitieboek",
+ "needHelp": "Hulp nodig?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Geavanceerde modelleringspatronen",
+ "description": "Leer geavanceerde strategieën om uw database te optimaliseren."
+ },
+ "partitioning": {
+ "title": "Best practices voor partitionering",
+ "description": "Meer informatie over het toepassen van gegevensmodel- en partitioneringsstrategieën."
+ },
+ "resourcePlanning": {
+ "title": "Uw resourcevereisten plannen",
+ "description": "Leer de verschillende configuratieopties kennen."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Wat is de MongoDB-API?",
+ "description": "Meer informatie over Azure Cosmos DB for MongoDB en de bijbehorende functies."
+ },
+ "features": {
+ "title": "Functies en syntaxis",
+ "description": "Ontdek de voordelen en functies"
+ },
+ "migrate": {
+ "title": "Uw gegevens migreren",
+ "description": "Stappen voorafgaand aan de migratie voor het verplaatsen van gegevens"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Een Java-app bouwen",
+ "description": "Maak een Java-app met behulp van een SDK."
+ },
+ "partitioning": {
+ "title": "Best practices voor partitionering",
+ "description": "Meer informatie over de werking van partitionering."
+ },
+ "requestUnits": {
+ "title": "Aanvraageenheden (RU's)",
+ "description": "Meer informatie over RU-kosten."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Gegevensmodellering",
+ "description": "Aanbevelingen voor grafiekgegevensmodellering"
+ },
+ "partitioning": {
+ "title": "Best practices voor partitionering",
+ "description": "Meer informatie over partitionering"
+ },
+ "queryData": {
+ "title": "Gegevens opvragen",
+ "description": "Gegevens opvragen met Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Wat is de tabel-API?",
+ "description": "Meer informatie over Azure Cosmos DB for Table en de bijbehorende functies"
+ },
+ "migrate": {
+ "title": "Uw gegevens migreren",
+ "description": "Meer informatie over het migreren van uw gegevens"
+ },
+ "faq": {
+ "title": "Veelgestelde vragen over Azure Cosmos DB for Table",
+ "description": "Veelgestelde vragen over Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Sneltoetsen in Data Explorer",
+ "description": "Leer sneltoetsen om door Data Explorer te navigeren."
+ },
+ "liveTv": {
+ "title": "Meer informatie over de basisprincipes",
+ "description": "Bekijk de introductie- en instructievideo's van Azure Cosmos DB Live TV."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Aan de slag met een SDK",
+ "description": "Meer informatie over de Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Uw gegevens migreren",
+ "description": "Migreer gegevens met behulp van Azure-services en opensource-oplossingen."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Een app bouwen met Node.js",
+ "description": "Maak een Node.js-app."
+ },
+ "gettingStarted": {
+ "title": "Aan de slag-handleiding",
+ "description": "Leer de basisbeginselen om aan de slag te gaan."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Een container maken",
+ "description": "Maak kennis met de opties om een container te maken."
+ },
+ "throughput": {
+ "title": "Inrichtingsdoorvoer",
+ "description": "Meer informatie over het configureren van doorvoer."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Aan de slag ",
+ "description": "Maken, query's uitvoeren en bladeren met behulp van de Gremlin-console"
+ },
+ "importData": {
+ "title": "Grafiekgegevens importeren",
+ "description": "Informatie over bulkopnamegegevens met BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Een .NET-app bouwen",
+ "description": "Toegang krijgen tot Azure Cosmos DB for Table vanuit een .NET-app."
+ },
+ "java": {
+ "title": "Een Java-app bouwen",
+ "description": "Een Azure Cosmos DB for Table-app maken met Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Gegevensmodellering",
+ "distributionColumn": "Een distributiekolom kiezen",
+ "buildApps": "Apps bouwen met Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Gegevens migreren",
+ "vectorSearch": "AI-apps bouwen met vector search",
+ "buildApps": "Apps bouwen met Node.js"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Prestaties afstemmen",
+ "diagnosticQueries": "Nuttige diagnostische query's",
+ "sqlReference": "Gedistribueerde SQL-verwijzing"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vector search",
+ "textIndexing": "Tekstindexeren",
+ "troubleshoot": "Veelvoorkomende problemen oplossen"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Uw database bouwen",
+ "useTitle": "Uw database gebruiken",
+ "newContainer": {
+ "title": "Nieuwe container",
+ "description": "Een doelcontainer maken om uw gegevens op te slaan"
+ },
+ "sampleData": {
+ "title": "Voorbeeldgegevens",
+ "description": "Voorbeeldgegevens laden in uw database"
+ },
+ "sampleVectorData": {
+ "title": "Voorbeeldvectorgegevens",
+ "description": "Voorbeeldvectorgegevens laden met Text-Embedding-ADA-002"
+ },
+ "appDevelopment": {
+ "title": "App-ontwikkeling",
+ "description": "Begin hier met het gebruik van een SDK om uw apps te bouwen"
+ },
+ "sampleGallery": {
+ "title": "Voorbeeldgalerie",
+ "description": "Krijg end-to-end-voorbeelden uit de praktijk"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Voorbeeldgegevens",
+ "startButton": "Begin",
+ "createPrompt": "Maak een container {{containerName}} en importeer er voorbeeldgegevens in. Dit kan enkele minuten duren.",
+ "creatingContainer": "De container {{containerName}} wordt gemaakt...",
+ "importingData": "Gegevens importeren in {{containerName}}...",
+ "success": "{{containerName}} is gemaakt met voorbeeldgegevens.",
+ "errorContainerExists": "De container {{containerName}} in database {{databaseName}} bestaat al. Verwijder het en probeer het opnieuw.",
+ "errorCreateContainer": "Kan de container niet maken: {{error}}",
+ "errorImportData": "Kan geen gegevens importeren: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nieuw {{containerName}}",
+ "restoreContainer": "{{containerName}} herstellen",
+ "deleteDatabase": "{{databaseName}} verwijderen",
+ "deleteContainer": "{{containerName}} verwijderen",
+ "newSqlQuery": "Nieuwe SQL-query",
+ "newQuery": "Nieuwe query",
+ "openMongoShell": "Mongo-shell openen",
+ "newShell": "Nieuwe shell",
+ "openCassandraShell": "Cassandra-shell openen",
+ "newStoredProcedure": "Nieuwe opgeslagen procedure",
+ "newUdf": "Nieuwe UDF",
+ "newTrigger": "Nieuwe trigger",
+ "deleteStoredProcedure": "Opgeslagen procedure verwijderen",
+ "deleteTrigger": "Trigger verwijderen",
+ "deleteUdf": "Door de gebruiker gedefinieerde functie verwijderen"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nieuw item",
+ "newDocument": "Nieuw document",
+ "uploadItem": "Item uploaden",
+ "applyFilter": "Filter toepassen",
+ "unsavedChanges": "Niet-opgeslagen wijzigingen",
+ "unsavedChangesMessage": "Niet-opgeslagen wijzigingen gaan verloren. Wilt u doorgaan?",
+ "createDocumentFailed": "Het maken van het document is mislukt",
+ "updateDocumentFailed": "Het bijwerken van het document is mislukt",
+ "documentDeleted": "Document is verwijderd.",
+ "deleteDocumentDialogTitle": "Document verwijderen",
+ "deleteDocumentsDialogTitle": "Documenten verwijderen",
+ "throttlingError": "Sommige documenten kunnen niet worden verwijderd vanwege een fout met snelheidsbeperking. Probeer het later opnieuw. Als u dit in de toekomst wilt voorkomen, kunt u overwegen de doorvoer voor uw container of database te verhogen.",
+ "deleteFailed": "Het verwijderen van een of meer documenten is mislukt ({{error}})",
+ "missingShardProperty": "De shard-eigenschap ontbreekt in het document: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Kan het raster met documenten niet vernieuwen",
+ "confirmDelete": "Weet u zeker dat u {{documentName}} wilt verwijderen?",
+ "confirmDeleteTitle": "Verwijderen bevestigen",
+ "selectedItems": "de geselecteerde {{count}} items",
+ "selectedItem": "het geselecteerde item",
+ "selectedDocuments": "de {{count}} geselecteerde documenten",
+ "selectedDocument": "het geselecteerde document",
+ "deleteDocumentFailedLog": "Kan het document {{documentId}} met de statuscode {{statusCode}} niet verwijderen",
+ "deleteSuccessLog": "{{count}} document(en) zijn verwijderd",
+ "deleteThrottledLog": "Kan {{count}} document(en) niet verwijderen vanwege de fout 'Aanvraag te groot' (429). Opnieuw proberen...",
+ "missingShardKeyLog": "Kan het nieuwe document niet opslaan: de shardsleutel van het document is niet gedefinieerd",
+ "filterTooltip": "Typ een querypredicaat of kies een querypredicaat uit de lijst.",
+ "loadMore": "Meer laden",
+ "documentEditor": "Document-editor",
+ "savedFilters": "Opgeslagen filters",
+ "defaultFilters": "Standaardfilters",
+ "abort": "Afbreken",
+ "deletingDocuments": "{{count}} document(en) verwijderen",
+ "deletedDocumentsSuccess": "{{count}} document(en) zijn verwijderd.",
+ "deleteAborted": "Het verwijderen van een of meer documenten is afgebroken.",
+ "failedToDeleteDocuments": "Kan {{count}} document(en) niet verwijderen.",
+ "requestTooLargeBase": "Sommige verwijderverzoeken zijn mislukt vanwege een fout 'Aanvraag te groot' (429)",
+ "retriedSuccessfully": "maar er is opnieuw geprobeerd.",
+ "retryingNow": "Nu opnieuw proberen...",
+ "increaseThroughputTip": "Als u dit in de toekomst wilt voorkomen, kunt u overwegen de doorvoer voor uw container of database te verhogen.",
+ "numberOfSelectedDocuments": "Aantal geselecteerde documenten: {{count}}",
+ "mongoFilterPlaceholder": "Typ een querypredicaat (bijvoorbeeld {\"id\":\"foo\"}), of kies een querypredicaat in de vervolgkeuzelijst of laat leeg om een query uit te voeren op alle documenten.",
+ "sqlFilterPlaceholder": "Typ een querypredicaat (bijvoorbeeld WHERE c.id=\"1\"), of kies een querypredicaat in de vervolgkeuzelijst of laat leeg om een query uit te voeren op alle documenten.",
+ "error": "Fout",
+ "warning": "Waarschuwing"
+ },
+ "query": {
+ "executeQuery": "Query uitvoeren",
+ "executeSelection": "Selectie uitvoeren",
+ "saveQuery": "Query opslaan",
+ "downloadQuery": "Query downloaden",
+ "cancelQuery": "Query annuleren",
+ "openSavedQueries": "Opgeslagen query's openen",
+ "vertical": "Verticaal",
+ "horizontal": "Horizontaal",
+ "view": "Weergeven",
+ "editingQuery": "Query aan het bewerken"
+ },
+ "storedProcedure": {
+ "id": "Opgeslagen procedure-id",
+ "idPlaceholder": "Voer de nieuwe opgeslagen procedure-id in",
+ "idAriaLabel": "Opgeslagen procedure-id",
+ "body": "Hoofdtekst van opgeslagen procedure",
+ "bodyAriaLabel": "Hoofdtekst van opgeslagen procedure",
+ "successfulExecution": "Geslaagde uitvoering van opgeslagen procedure",
+ "resultAriaLabel": "Resultaat van opgeslagen procedure uitvoeren",
+ "logsAriaLabel": "Opgeslagen procedurelogboeken uitvoeren",
+ "errors": "Fouten:",
+ "errorDetailsAriaLabel": "Koppeling foutdetails",
+ "moreDetails": "Meer informatie",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Trigger-id",
+ "idPlaceholder": "Voer de nieuwe trigger-id in",
+ "type": "Triggertype",
+ "operation": "Activeringsbewerking",
+ "body": "Hoofdtekst van trigger",
+ "bodyAriaLabel": "Hoofdtekst van trigger",
+ "pre": "Pre",
+ "post": "Bericht",
+ "all": "Alle",
+ "operationCreate": "Maken",
+ "operationDelete": "Verwijderen",
+ "operationReplace": "Vervangen"
+ },
+ "udf": {
+ "id": "Door de gebruiker gedefinieerde functie-id",
+ "idPlaceholder": "Voer de nieuwe door de gebruiker gedefinieerde functie-id in",
+ "body": "Hoofdtekst van door de gebruiker gedefinieerde functie",
+ "bodyAriaLabel": "Hoofdtekst van door de gebruiker gedefinieerde functie"
+ },
+ "conflicts": {
+ "unsavedChanges": "Niet-opgeslagen wijzigingen",
+ "changesWillBeLost": "Wijzigingen gaan verloren. Wilt u doorgaan?",
+ "resolveConflictFailed": "Oplossen van conflict is mislukt",
+ "deleteConflictFailed": "Verwijderen van conflict is mislukt",
+ "refreshGridFailed": "Kan het raster met documenten niet vernieuwen"
+ },
+ "mongoShell": {
+ "title": "Mongo-shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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.",
+ "feedbackReason": "Wat is de reden waarom u deze {{databaseName}} verwijdert?"
+ },
+ "deleteCollection": {
+ "panelTitle": "{{collectionName}} verwijderen",
+ "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.",
+ "feedbackReason": "Wat is de reden waarom u deze {{collectionName}} verwijdert?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Database {{suffix}}",
+ "databaseIdLabel": "Database-id",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} id, voorbeeld {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Kies een bestaande {{databaseName}}-id",
+ "existingDatabasePlaceholder": "Kies een bestaande {{databaseName}}-id",
+ "indexing": "Indexeren",
+ "turnOnIndexing": "Indexering inschakelen",
+ "automatic": "Automatisch",
+ "turnOffIndexing": "Indexering uitschakelen",
+ "off": "Uit",
+ "sharding": "Sharding",
+ "shardingTooltip": "Shard-verzamelingen splitsen uw gegevens over veel replicasets (shards) om onbeperkte schaalbaarheid te bereiken. Voor Shard-verzamelingen moet u een shardsleutel (veld) kiezen om uw gegevens gelijkmatig te distribueren.",
+ "unsharded": "Geen shard",
+ "unshardedLabel": "Geen shard (limiet van 20 GB)",
+ "sharded": "Shard",
+ "addPartitionKey": "Hiërarchische partitiesleutel toevoegen",
+ "hierarchicalPartitionKeyInfo": "Met deze functie kunt u uw gegevens partitioneren met maximaal drie niveaus aan sleutels voor een betere distributie. Hiervoor is .NET V3, Java V4 SDK of preview javaScript V3 SDK vereist.",
+ "provisionDedicatedThroughput": "Toegewezen doorvoer inrichten voor deze {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "U kunt optioneel toegewezen doorvoer inrichten voor een {{collectionName}} binnen een database waarvoor doorvoer is ingericht. Dit toegewezen doorvoeraantal wordt niet gedeeld met andere {{collectionNamePlural}} in de database en telt niet mee voor de doorvoer die u voor de database hebt ingericht. Dit doorvoeraantal wordt in rekening gebracht naast het doorvoeraantal die u hebt ingericht op databaseniveau.",
+ "uniqueKeysPlaceholderMongo": "Door komma's gescheiden paden, bijvoorbeeld firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Door komma's gescheiden paden, bijvoorbeeld /firstName,/address/zipCode",
+ "addUniqueKey": "Unieke sleutel toevoegen",
+ "enableAnalyticalStore": "Analytisch archief inschakelen",
+ "disableAnalyticalStore": "Analytisch archief uitschakelen",
+ "on": "Aan",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link is vereist voor het maken van een analytische opslag {{collectionName}}. Schakel Synapse Link in voor dit Cosmos DB-account.",
+ "enable": "Inschakelen",
+ "containerVectorPolicy": "Containervectorbeleid",
+ "containerFullTextSearchPolicy": "Zoekbeleid voor volledige tekst van container",
+ "advanced": "Geavanceerd",
+ "mongoIndexingTooltip": "Het veld _id is standaard geïndexeerd. Het maken van een jokertekenindex voor alle velden optimaliseert query's en wordt aanbevolen voor ontwikkeling.",
+ "createWildcardIndex": "Een jokertekenindex maken voor alle velden",
+ "legacySdkCheckbox": "Mijn toepassing gebruikt een oudere Cosmos .NET- of Java SDK-versie (.NET V1 of Java V2)",
+ "legacySdkInfo": "Om compatibiliteit met oudere SDK's te garanderen, gebruikt de gemaakte container een verouderd partitioneringsschema dat ondersteuning biedt voor partitiesleutelwaarden van maximaal 101 bytes. Als dit is ingeschakeld, kunt u geen hiërarchische partitiesleutels gebruiken.",
+ "indexingOnInfo": "Alle eigenschappen in uw documenten worden standaard geïndexeerd voor flexibele en efficiënte query's.",
+ "indexingOffInfo": "Indexeren wordt uitgeschakeld. Aanbevolen als u geen query's hoeft uit te voeren of alleen sleutelwaardebewerkingen hebt.",
+ "indexingOffWarning": "Als u deze container maakt met indexering uitgeschakeld, kunt u geen wijzigingen in het indexeringsbeleid aanbrengen. Indexeringswijzigingen zijn alleen toegestaan voor een container met een indexeringsbeleid.",
+ "acknowledgeSpendErrorMonthly": "Bevestig de geschatte maandelijkse uitgaven.",
+ "acknowledgeSpendErrorDaily": "Bevestig de geschatte dagelijkse uitgaven.",
+ "unshardedMaxRuError": "Geen shard verzamelingen ondersteunen maximaal 10.000 RU's",
+ "acknowledgeShareThroughputError": "Bevestig de geschatte kosten van deze toegewezen doorvoer.",
+ "vectorPolicyError": "Los fouten op in het containervectorbeleid",
+ "fullTextSearchPolicyError": "Los fouten op in het zoekbeleid voor volledige tekst van container",
+ "addingSampleDataSet": "Voorbeeldgegevensset toevoegen",
+ "databaseFieldLabelName": "Databasenaam",
+ "databaseFieldLabelId": "Database-id",
+ "newDatabaseIdPlaceholder": "Typ een nieuwe database-id",
+ "newDatabaseIdAriaLabel": "Nieuwe database-id, typ een nieuwe database-id",
+ "createNewDatabaseAriaLabel": "Nieuwe database maken",
+ "useExistingDatabaseAriaLabel": "Bestaande database gebruiken",
+ "chooseExistingDatabase": "Een bestaande database kiezen",
+ "teachingBubble": {
+ "step1Headline": "Voorbeelddatabase maken",
+ "step1Body": "De database is het bovenliggende element van een container. U kunt een nieuwe database maken of een bestaande gebruiken. In deze tutorial maken we een nieuwe database met de naam SampleDB.",
+ "step1LearnMore": "Meer informatie over resources.",
+ "step2Headline": "Instelling doorvoer",
+ "step2Body": "Cosmos DB raadt aan om de doorvoer over de database te delen. Autoscale geeft u een flexibele hoeveelheid doorvoer op basis van de ingestelde maximale RU/s (Request Units).",
+ "step2LearnMore": "Meer informatie over RU/s.",
+ "step3Headline": "Container benoemen",
+ "step3Body": "Geef uw container een naam",
+ "step4Headline": "Partitiesleutel instellen",
+ "step4Body": "Laatste stap: u moet een partitiesleutel definiëren voor uw collectie. /adres is gekozen voor dit specifieke voorbeeld. Een goede partitiesleutel heeft een breed scala aan mogelijke waarden",
+ "step4CreateContainer": "Container maken",
+ "step5Headline": "Voorbeeldcontainer maken",
+ "step5Body": "Er wordt nu een voorbeeldcontainer gemaakt en er worden voorbeeldgegevens voor u toegevoegd. Dit duurt ongeveer 1 minuut.",
+ "step5BodyFollowUp": "Zodra de voorbeeldcontainer is gemaakt, bekijkt u de voorbeeldgegevensset en volgt u de volgende stappen",
+ "stepOfTotal": "Stap {{current}} van {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "De shardsleutel (veld) wordt gebruikt om uw gegevens te splitsen over veel replicasets (shards) om onbeperkte schaalbaarheid te bereiken. Het is essentieel om een veld te kiezen dat uw gegevens gelijkmatig zal distribueren.",
+ "partitionKeyTooltip": "De {{partitionKeyName}} wordt gebruikt om gegevens automatisch over partities te distribueren voor schaalbaarheid. Kies een eigenschap in uw JSON-document die een breed scala aan waarden heeft en het aanvraagvolume gelijkmatig distribueert.",
+ "partitionKeyTooltipSqlSuffix": " Voor kleine workloads met veel lees- of schrijfverkeer, ongeacht de grootte, is id vaak een goede keuze.",
+ "shardKeyLabel": "Shardsleutel",
+ "partitionKeyLabel": "Partitiesleutel",
+ "shardKeyPlaceholder": "bijvoorbeeld categoryId",
+ "partitionKeyPlaceholderDefault": "bijvoorbeeld /address",
+ "partitionKeyPlaceholderFirst": "Vereist: eerste partitiesleutel, bijvoorbeeld /TenantId",
+ "partitionKeyPlaceholderSecond": "tweede partitiesleutel, bijvoorbeeld /UserId",
+ "partitionKeyPlaceholderThird": "derde partitiesleutel, bijvoorbeeld /SessionId",
+ "partitionKeyPlaceholderGraph": "Bijvoorbeeld /address/zipCode",
+ "uniqueKeysTooltip": "Unieke sleutels bieden ontwikkelaars de mogelijkheid om een laag met gegevensintegriteit toe te voegen aan hun database. Door een uniek sleutelbeleid te maken wanneer een container wordt gemaakt, zorgt u ervoor dat een of meer waarden per partitiesleutel uniek zijn.",
+ "uniqueKeysLabel": "Unieke sleutels",
+ "analyticalStoreLabel": "Analytisch archief",
+ "analyticalStoreTooltip": "Schakel analytische opslagmogelijkheden in om bijna realtime analyses uit te voeren op uw operationele gegevens, zonder dat dit van invloed is op de prestaties van transactionele workloads.",
+ "analyticalStoreDescription": "Schakel analytische opslagmogelijkheden in om bijna realtime analyses uit te voeren op uw operationele gegevens, zonder dat dit van invloed is op de prestaties van transactionele workloads.",
+ "vectorPolicyTooltip": "Beschrijf alle eigenschappen in uw gegevens die vectoren bevatten, zodat ze beschikbaar kunnen worden gemaakt voor overeenkomstigheidsquery's."
+ },
+ "settings": {
+ "pageOptions": "Paginaopties",
+ "pageOptionsDescription": "Kies Aangepast om een vast aantal queryresultaten op te geven dat moet worden weergegeven, of kies Onbeperkt om zoveel mogelijk queryresultaten per pagina weer te geven.",
+ "queryResultsPerPage": "Queryresultaten per pagina",
+ "queryResultsPerPageTooltip": "Voer het aantal queryresultaten in dat per pagina moet worden weergegeven.",
+ "customQueryItemsPerPage": "Aangepaste query-items per pagina",
+ "custom": "Aangepast",
+ "unlimited": "Onbeperkt",
+ "entraIdRbac": "Entra ID RBAC inschakelen",
+ "entraIdRbacDescription": "Kies Automatisch om Entra ID RBAC automatisch in te schakelen. Waar/Onwaar om Entra ID RBAC geforceerd in of uit te schakelen.",
+ "true": "Waar",
+ "false": "Onwaar",
+ "regionSelection": "Selectie van regio",
+ "regionSelectionDescription": "Wijzigt de regio die de Cosmos-client gebruikt voor toegang tot het account.",
+ "selectRegion": "Regio selecteren",
+ "selectRegionTooltip": "Wijzigt het accounteindpunt dat wordt gebruikt voor clientbewerkingen.",
+ "globalDefault": "Globaal (standaard)",
+ "readWrite": "(Lezen/schrijven)",
+ "read": "(Lezen)",
+ "queryTimeout": "Time-out van query",
+ "queryTimeoutDescription": "Wanneer een query een opgegeven tijdslimiet bereikt, wordt een pop-upvenster met een optie voor het annuleren van de query weergegeven, tenzij automatische annulering is ingeschakeld.",
+ "enableQueryTimeout": "Time-out voor query inschakelen",
+ "queryTimeoutMs": "Time-out van query (ms)",
+ "automaticallyCancelQuery": "Query automatisch annuleren na time-out",
+ "ruLimit": "RU-limiet",
+ "ruLimitDescription": "Als een query een geconfigureerde RU-limiet overschrijdt, wordt de query afgebroken.",
+ "enableRuLimit": "RU-limiet inschakelen",
+ "ruLimitLabel": "RU-limiet (RU)",
+ "defaultQueryResults": "Standaardweergave voor queryresultaten",
+ "defaultQueryResultsDescription": "Selecteer de standaardweergave die u wilt gebruiken bij het weergeven van queryresultaten.",
+ "retrySettings": "Instellingen voor opnieuw proberen",
+ "retrySettingsDescription": "Beleid voor opnieuw proberen dat is gekoppeld aan beperkte aanvragen tijdens CosmosDB-query's.",
+ "maxRetryAttempts": "Maximum aantal nieuwe pogingen",
+ "maxRetryAttemptsTooltip": "Maximaal aantal pogingen dat voor een aanvraag wordt uitgevoerd. Standaardwaarde 9.",
+ "fixedRetryInterval": "Vaste interval voor nieuwe poging (ms)",
+ "fixedRetryIntervalTooltip": "Vast interval in milliseconden om te wachten tussen elke nieuwe poging, waarbij de retryAfter uit het antwoord wordt genegeerd. De standaardwaarde is 0 milliseconden.",
+ "maxWaitTime": "Maximale wachttijd (s)",
+ "maxWaitTimeTooltip": "Maximale wachttijd in seconden om te wachten op een aanvraag terwijl de nieuwe pogingen plaatsvinden. Standaardwaarde is 30 seconden.",
+ "enableContainerPagination": "Paginering van containers inschakelen",
+ "enableContainerPaginationDescription": "Laad 50 containers tegelijk. Op dit moment worden containers niet in alfanumerieke volgorde opgehaald.",
+ "enableCrossPartitionQuery": "Query voor meer partities inschakelen",
+ "enableCrossPartitionQueryDescription": "Verzend meer dan één aanvraag tijdens het uitvoeren van een query. Er is meer dan één aanvraag nodig als de query niet is gericht op een sleutelwaarde voor één partitie.",
+ "maxDegreeOfParallelism": "Maximale mate van parallelle uitvoering",
+ "maxDegreeOfParallelismDescription": "Hiermee wordt het aantal gelijktijdige bewerkingen opgehaald of ingesteld dat aan de clientzijde wordt uitgevoerd tijdens het parallel uitvoeren van query's. Een positieve eigenschapswaarde beperkt het aantal gelijktijdige bewerkingen tot de ingestelde waarde. Als deze is ingesteld op minder dan 0, bepaalt het systeem automatisch het aantal gelijktijdige bewerkingen dat moet worden uitgevoerd.",
+ "maxDegreeOfParallelismQuery": "Voer een query uit tot de maximale mate van parallellisme.",
+ "priorityLevel": "Prioriteitsniveau",
+ "priorityLevelDescription": "Stelt het prioriteitsniveau in voor gegevensvlakverzoeken van Data Explorer bij gebruik van Priority-Based Execution. Als Geen is geselecteerd, geeft Data Explorer geen prioriteitsniveau op en wordt het standaardprioriteitsniveau van de server gebruikt.",
+ "displayGremlinQueryResults": "Gremlin-queryresultaten weergeven als:",
+ "displayGremlinQueryResultsDescription": "Selecteer Graph om de queryresultaten automatisch te visualiseren als een Graph of JSON om de resultaten weer te geven als JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Automatische visualisatie van Graph",
+ "enableSampleDatabase": "Voorbeelddatabase inschakelen",
+ "enableSampleDatabaseDescription": "Dit is een voorbeelddatabase en verzameling met synthetische productgegevens die u kunt gebruiken om te verkennen met NoSQL-query's. Dit wordt weergegeven als een andere database in de Data Explorer UI en wordt door Microsoft gemaakt en zonder kosten door Microsoft onderhouden.",
+ "enableSampleDbAriaLabel": "Voorbeelddatabase inschakelen voor queryverkenning",
+ "guidRepresentation": "GUID-verklaring",
+ "guidRepresentationDescription": "GuidRepresentation in MongoDB verwijst naar de wijze waarop GUID's (Globally Unique Identifiers) worden geserialiseerd en gedeserialiseerd wanneer ze worden opgeslagen in BSON-documenten. Dit geldt voor alle documentbewerkingen.",
+ "advancedSettings": "Geavanceerde instellingen",
+ "ignorePartitionKey": "Partitiesleutel negeren bij bijwerken van document",
+ "ignorePartitionKeyTooltip": "Indien geselecteerd, wordt de partitiesleutelwaarde niet gebruikt om het document te vinden tijdens bijwerkbewerkingen. Gebruik dit alleen als het bijwerken van documenten mislukt vanwege een abnormale partitiesleutel.",
+ "clearHistory": "Geschiedenis wissen",
+ "clearHistoryConfirm": "Weet u zeker dat u wilt verdergaan?",
+ "clearHistoryDescription": "Met deze actie worden alle aanpassingen voor dit account in deze browser gewist, waaronder:",
+ "clearHistoryTabLayout": "De aangepaste tabbladindeling opnieuw instellen, inclusief de splitserposities",
+ "clearHistoryTableColumns": "De voorkeuren voor tabelkolommen wissen, inclusief aangepaste kolommen",
+ "clearHistoryFilters": "Uw filtergeschiedenis wissen",
+ "clearHistoryRegion": "Regioselectie opnieuw instellen op globaal",
+ "increaseValueBy1000": "Waarde verhogen met 1000",
+ "decreaseValueBy1000": "Waarde verlagen met 1000",
+ "none": "Geen",
+ "low": "Laag",
+ "high": "Hoog",
+ "automatic": "Automatisch",
+ "enhancedQueryControl": "Uitgebreid querybeheer",
+ "enableQueryControl": "Querybeheer inschakelen",
+ "explorerVersion": "Explorer-versie",
+ "accountId": "Account-id",
+ "sessionId": "Sessie-id",
+ "popupsDisabledError": "Er kan geen autorisatie tot stand worden gebracht voor dit account omdat pop-ups zijn uitgeschakeld in de browser.\nSchakel pop-ups voor deze site in en klik op de knop Aanmelden voor Entra-ID",
+ "failedToAcquireTokenError": "Kan autorisatietoken niet automatisch ophalen. Klik op de knop Aanmelden voor Entra ID om Entra ID RBAC-bewerkingen in te schakelen"
+ },
+ "saveQuery": {
+ "panelTitle": "Query opslaan",
+ "setupCostMessage": "Om nalevingsredenen slaan we query's op in een container in uw Azure Cosmos-account, in een afzonderlijke database genaamd {{databaseName}}. Om door te gaan, moeten we een container in uw account maken. De geschatte extra kosten zijn $ 0,77 per dag.",
+ "completeSetup": "Configuratie voltooien",
+ "noQueryNameError": "Er is geen querynaam opgegeven",
+ "invalidQueryContentError": "Ongeldige query-inhoud opgegeven",
+ "failedToSaveQueryError": "Kan de {{queryName}} query niet opslaan",
+ "failedToSetupContainerError": "Kan geen container instellen voor opgeslagen query's",
+ "accountNotSetupError": "Kan de query niet opslaan: account is niet ingesteld om query's op te slaan",
+ "name": "Naam"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Er is geen bestand opgegeven",
+ "failedToLoadQueryError": "Kan de query niet laden",
+ "failedToLoadQueryFromFileError": "Kan de query niet laden uit het bestand {{fileName}}",
+ "selectFilesToOpen": "Een querydocument selecteren",
+ "browseFiles": "Bladeren"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Invoerparameters invoeren (indien aanwezig)",
+ "key": "Sleutel",
+ "param": "Param",
+ "partitionKeyValue": "Partitiesleutelwaarde",
+ "value": "Waarde",
+ "addNewParam": "Nieuwe parameter toevoegen",
+ "addParam": "Parameter toevoegen",
+ "deleteParam": "Parameter verwijderen",
+ "invalidParamError": "Ongeldige parameter opgegeven: {{invalidParam}}",
+ "invalidParamConsoleError": "Ongeldige parameter opgegeven: {{invalidParam}} is geen geldige letterlijke waarde",
+ "stringType": "Tekenreeks",
+ "customType": "Aangepast"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Er zijn geen bestanden opgegeven. Voer ten minste één bestand in.",
+ "selectJsonFiles": "JSON-bestanden selecteren",
+ "selectJsonFilesTooltip": "Selecteer een of meer JSON-bestanden om te uploaden. Elk bestand kan één JSON-document of een matrix met JSON-documenten bevatten. De gecombineerde grootte van alle bestanden in een afzonderlijke uploadbewerking moet kleiner zijn dan 2 MB. U kunt meerdere uploadbewerkingen uitvoeren voor grotere gegevenssets.",
+ "fileNameColumn": "BESTANDSNAAM",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} gemaakt, {{numThrottled}} beperkt, {{numFailed}} fouten",
+ "uploadedFiles": "Geüploade bestanden"
+ },
+ "copyNotebook": {
+ "copyFailedError": "{{name}} kopiëren naar {{destination}} is mislukt",
+ "uploadFailedError": "Kan {{name}} niet uploaden",
+ "location": "Locatie",
+ "locationAriaLabel": "Locatie",
+ "selectLocation": "Notebooklocatie selecteren om te kopiëren",
+ "name": "Naam"
+ },
+ "publishNotebook": {
+ "publishFailedError": "{{notebookName}} publiceren naar galerie is mislukt",
+ "publishDescription": "Wanneer deze notebook wordt gepubliceerd, wordt het weergegeven in de Azure Cosmos DB notebooks openbaar galerie. Zorg ervoor dat u gevoelige gegevens of uitvoer hebt verwijderd voordat u publiceert.",
+ "publishPrompt": "Wilt u {{name}} publiceren en delen in de galerie?",
+ "coverImage": "Omslagafbeelding",
+ "coverImageUrl": "URL van omslagafbeelding",
+ "name": "Naam",
+ "description": "Beschrijving",
+ "tags": "Tags",
+ "tagsPlaceholder": "Optionele tag 1, optionele tag 2",
+ "preview": "Preview",
+ "urlType": "URL",
+ "customImage": "Aangepaste installatiekopie",
+ "takeScreenshot": "Schermopname maken",
+ "useFirstDisplayOutput": "Gebruik uitvoer van eerste weergave",
+ "failedToCaptureOutput": "Kan de eerste uitvoer niet vastleggen",
+ "outputDoesNotExist": "Uitvoer bestaat niet voor alle cellen.",
+ "failedToConvertError": "{{fileName}} converteren naar base64-indeling is mislukt",
+ "failedToUploadError": "Kan {{fileName}} niet uploaden"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Kan de taak voor gegevensoverdracht niet starten",
+ "suboptimalPartitionKeyError": "Waarschuwing: het systeem heeft gedetecteerd dat uw verzameling mogelijk een suboptimale partitiesleutel gebruikt",
+ "description": "Wanneer u de partitiesleutel van een container wijzigt, moet u een doelcontainer maken met de juiste partitiesleutel. U kunt ook een bestaande doelcontainer selecteren.",
+ "sourceContainerId": "Bron {{collectionName}}-id",
+ "destinationContainerId": "{{collectionName}} doel-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",
+ "collectionIdAriaLabel": "{{collectionName}} id, voorbeeld {{collectionName}}1",
+ "existingContainers": "Bestaande containers",
+ "partitionKeyWarning": "De doelcontainer mag niet al bestaan. Data Explorer maakt een nieuwe doelcontainer voor u."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Naam van keyspace",
+ "keyspaceTooltip": "Selecteer een bestaande keyspace of voer een nieuwe keyspace-id in.",
+ "tableIdLabel": "Voer de CQL-opdracht in om de tabel te maken.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Eigenschap toevoegen",
+ "addRow": "Rij toevoegen",
+ "addEntity": "Entiteit toevoegen",
+ "back": "terug",
+ "nullFieldsWarning": "Waarschuwing: null-velden worden niet weergegeven voor bewerking.",
+ "propertyEmptyError": "{{property}} mag niet leeg zijn. Voer een waarde in voor {{property}}",
+ "whitespaceError": "{{property}} mag geen witruimte hebben. Voer een waarde in voor {{property}} zonder witruimte",
+ "propertyTypeEmptyError": "Het eigenschapstype mag niet leeg zijn. Selecteer een type in de vervolgkeuzelijst voor de eigenschap {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Selecteer de kolommen waarop u een query wilt uitvoeren.",
+ "availableColumns": "Beschikbare kolommen"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Selecteer welke kolommen u wilt weergeven in de weergave van items in uw container.",
+ "searchFields": "Zoekvelden",
+ "reset": "Opnieuw instellen",
+ "partitionKeySuffix": " (partitiesleutel)"
+ },
+ "newVertex": {
+ "addProperty": "Eigenschap toevoegen"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Container-id van globale secundaire index",
+ "globalSecondaryIndexIdPlaceholder": "bijvoorbeeld indexbyEmailId",
+ "projectionQuery": "Projectiequery",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Meer informatie over het definiëren van globale secundaire indexen.",
+ "disabledTitle": "Er wordt al een globale secundaire index gemaakt. Wacht tot deze is voltooid voordat u een andere maakt."
+ },
+ "stringInput": {
+ "inputMismatchError": "Invoer {{input}} komt niet overeen met de geselecteerde {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Informatie",
+ "moreDetails": "Meer informatie"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Schaal",
+ "conflictResolution": "Conflictresolutie",
+ "settings": "Instellingen",
+ "indexingPolicy": "Indexeringsbeleid",
+ "partitionKeys": "Partitiesleutels",
+ "partitionKeysPreview": "Partitiesleutels (preview)",
+ "computedProperties": "Berekende eigenschappen",
+ "containerPolicies": "Containerbeleidsregels",
+ "throughputBuckets": "Doorvoerbuckets",
+ "globalSecondaryIndexPreview": "Globale secundaire index (preview)",
+ "maskingPolicyPreview": "Maskeringsbeleid (preview)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Selecteer een type voor elke index.",
+ "enterFieldNameError": "Voer een veldnaam in.",
+ "wildcardPathError": "Jokertekenpad is niet aanwezig in de veldnaam. Gebruik een patroon zoals "
+ },
+ "partitionKey": {
+ "shardKey": "Shardsleutel",
+ "partitionKey": "Partitiesleutel",
+ "shardKeyTooltip": "De shardsleutel (veld) wordt gebruikt om uw gegevens te splitsen over veel replicasets (shards) om onbeperkte schaalbaarheid te bereiken. Het is essentieel om een veld te kiezen dat uw gegevens gelijkmatig zal distribueren.",
+ "partitionKeyTooltip": "wordt gebruikt om gegevens automatisch over partities te distribueren voor schaalbaarheid. Kies een eigenschap in uw JSON-document die een breed scala aan waarden heeft en het aanvraagvolume gelijkmatig distribueert.",
+ "sqlPartitionKeyTooltipSuffix": " Voor kleine workloads met veel lees- of schrijfverkeer, ongeacht de grootte, is id vaak een goede keuze.",
+ "partitionKeySubtext": "Voor kleine workloads is de item-id een geschikte keuze voor de partitiesleutel.",
+ "mongoPlaceholder": "bijvoorbeeld categoryId",
+ "gremlinPlaceholder": "bijvoorbeeld /adres",
+ "sqlFirstPartitionKey": "Vereist: eerste partitiesleutel, bijvoorbeeld /TenantId",
+ "sqlSecondPartitionKey": "tweede partitiesleutel, bijvoorbeeld /UserId",
+ "sqlThirdPartitionKey": "derde partitiesleutel, bijvoorbeeld /SessionId",
+ "defaultPlaceholder": "Bijvoorbeeld /adres/postcode"
+ },
+ "costEstimate": {
+ "title": "Kostenraming*",
+ "howWeCalculate": "Hoe we dit berekenen",
+ "updatedCostPerMonth": "Bijgewerkte kosten per maand",
+ "currentCostPerMonth": "Actuele kosten per maand",
+ "perRu": "/RU",
+ "perHour": "/uur",
+ "perDay": "/dag",
+ "perMonth": "/mnd"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Het startmaximum voor automatisch schalen van RU/s wordt door het systeem bepaald op basis van de huidige handmatige doorvoerinstellingen en opslag van uw resource. Nadat automatisch schalen is ingeschakeld, kunt u het maximum RU/s wijzigen.",
+ "ttlWarningText": "Het systeem verwijdert automatisch items op basis van de TTL-waarde (in seconden) die u opgeeft, zonder dat een verwijderingsbewerking expliciet door een clienttoepassing hoeft te worden uitgevoerd. Zie voor meer informatie,",
+ "ttlWarningLinkText": "Time to Live (TTL) in Azure Cosmos DB",
+ "unsavedIndexingPolicy": "indexeringsbeleid",
+ "unsavedDataMaskingPolicy": "beleid voor gegevensmaskering",
+ "unsavedComputedProperties": "berekende eigenschappen",
+ "unsavedEditorWarningPrefix": "U hebt de laatste wijzigingen nog niet opgeslagen",
+ "unsavedEditorWarningSuffix": ". Klik op Opslaan om de wijzigingen te bevestigen.",
+ "updateDelayedApplyWarning": "U staat op het punt een verhoging van de doorvoer aan te vragen boven de vooraf toegewezen capaciteit. Het duurt even voordat deze bewerking is voltooid.",
+ "scalingUpDelayMessage": "Het opschalen duurt 4-6 uur omdat dit het aantal fysieke partities overschrijdt dat Azure Cosmos DB momenteel direct kan ondersteunen. U kunt uw doorvoer direct verhogen naar {{instantMaximumThroughput}} of doorgaan met deze waarde en wachten tot het opschalen is voltooid.",
+ "exceedPreAllocatedMessage": "Uw aanvraag om de doorvoer te verhogen overschrijdt de vooraf toegewezen capaciteit, wat langer kan duren dan verwacht. U kunt uit drie opties kiezen om door te gaan:",
+ "instantScaleOption": "U kunt direct omhoog schalen naar {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "U kunt asynchroon omhoog schalen naar elke waarde onder {{maximumThroughput}} RU/s binnen 4-6 uur.",
+ "quotaMaxOption": "Uw huidige quotumlimiet is {{maximumThroughput}} RU/s. Om deze limiet te overschrijden, moet u een quotumverhoging aanvragen; het Azure Cosmos DB-team zal dit beoordelen.",
+ "belowMinimumMessage": "U kunt de doorvoer niet verlagen tot onder uw huidige minimum van {{minimum}} RU/s. Raadpleeg de documentatie bij de serviceofferte voor meer informatie over deze limiet.",
+ "saveThroughputWarning": "Uw factuur wordt beïnvloed wanneer u uw doorvoerinstellingen bijwerkt. Controleer de bijgewerkte kostenraming hieronder voordat u uw wijzigingen opslaat",
+ "currentAutoscaleThroughput": "Huidige doorvoer voor automatische schaalaanpassing:",
+ "targetAutoscaleThroughput": "Doeldoorvoer voor automatische schaalaanpassing:",
+ "currentManualThroughput": "Actuele handmatige doorvoer:",
+ "targetManualThroughput": "Handmatige doorvoer van doel:",
+ "applyDelayedMessage": "De aanvraag om de doorvoer te verhogen is ingediend. Deze bewerking duurt 1-3 werkdagen om te voltooien. Bekijk de meest recente status in Meldingen.",
+ "databaseLabel": "Database:",
+ "containerLabel": "Container:",
+ "applyShortDelayMessage": "Een aanvraag voor het verhogen van de doorvoer wordt momenteel uitgevoerd. Het duurt even voordat deze bewerking is voltooid.",
+ "applyLongDelayMessage": "Een aanvraag voor het verhogen van de doorvoer wordt momenteel uitgevoerd. Deze bewerking duurt 1-3 werkdagen om te voltooien. Bekijk de meest recente status in Meldingen.",
+ "throughputCapError": "Uw account is momenteel geconfigureerd met een totale doorvoerlimiet van {{throughputCap}} RU/s. Deze update is niet mogelijk omdat hierdoor de totale doorvoer naar {{newTotalThroughput}} RU/s zou toenemen. Wijzig de totale doorvoerlimiet in kostenbeheer.",
+ "throughputIncrementError": "De doorvoerwaarde moet in stappen van 1000 zijn"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Laatste schrijf-wins (standaard)",
+ "customMergeProcedure": "Procedure samenvoegen (aangepast)",
+ "mode": "Modus",
+ "conflictResolverProperty": "Conflictoplossingseigenschap",
+ "storedProcedure": "Opgeslagen procedure",
+ "lwwTooltip": "Haalt de naam op of stelt de naam in van een gehele eigenschap in uw documenten die wordt gebruikt voor het Last Write Wins (LWW) conflictoplossingsschema. Standaard gebruikt het systeem de systeemgedefinieerde timestamp-eigenschap _ts om te bepalen welke versie van het document wint bij conflicten. Geef uw eigen gehele eigenschap op als u de standaard op timestamps gebaseerde conflictoplossing wilt overschrijven.",
+ "customTooltip": "Haalt de naam op of stelt de naam in van een opgeslagen procedure (ook wel samenvoegprocedure genoemd) voor het oplossen van conflicten. U kunt applicatielogica schrijven om te bepalen welke versie van een document wint bij conflicten. De opgeslagen procedure wordt transactioneel en precies één keer aan de serverzijde uitgevoerd. Als u geen opgeslagen procedure opgeeft, worden de conflicten weergegeven in de",
+ "customTooltipConflictsFeed": " conflictenfeed",
+ "customTooltipSuffix": ". U kunt de opgeslagen procedure op elk gewenst moment bijwerken of opnieuw registreren."
+ },
+ "changeFeed": {
+ "label": "Bewaarbeleid voor feedlogboeken wijzigen",
+ "tooltip": "Schakel het bewaarbeleid voor de wijzigingsfeedlog in om standaard de geschiedenis van de laatste tien minuten voor items in de container te bewaren. Om dit te ondersteunen, worden de kosten van de aanvraag-eenheid (RU) voor deze container bij schrijfbewerkingen verdubbeld. Leesbewerkingen blijven ongewijzigd."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Voor query's die op meerdere eigenschappen filteren, maakt u meerdere indexen met één veld in plaats van een samengestelde index.",
+ "disclaimerCompoundIndexesLink": " Samengestelde indexen ",
+ "disclaimerSuffix": "Worden alleen gebruikt voor het sorteren van queryresultaten. Als u een samengestelde index wilt toevoegen, kunt u er een maken met de Mongo Shell.",
+ "compoundNotSupported": "Verzamelingen met samengestelde indexen worden nog niet ondersteund in de indexeringseditor. Gebruik de Mongo Shell om het indexeringsbeleid voor deze verzameling te wijzigen.",
+ "aadError": "Als u de editor voor indexeringsbeleid wilt gebruiken, meldt u zich aan bij",
+ "aadErrorLink": "azure-portal.",
+ "refreshingProgress": "Vernieuwen van voortgang indextransformatie",
+ "canMakeMoreChangesZero": "U kunt meer indexeringswijzigingen aanbrengen zodra de huidige indextransformatie is voltooid. ",
+ "refreshToCheck": "Vernieuwen om te controleren of het is voltooid.",
+ "canMakeMoreChangesProgress": "U kunt meer indexeringswijzigingen aanbrengen zodra de huidige indextransformatie is voltooid. Het is {{progress}}% voltooid. ",
+ "refreshToCheckProgress": "Vernieuwen om de voortgang te controleren.",
+ "definitionColumn": "Definitie",
+ "typeColumn": "Type",
+ "dropIndexColumn": "Drop index",
+ "addIndexBackColumn": "Index terug toevoegen",
+ "deleteIndexButton": "Knop Index verwijderen",
+ "addBackIndexButton": "Knop Index terug toevoegen",
+ "currentIndexes": "Huidige index(en)",
+ "indexesToBeDropped": "Index(en) die verwijderd worden",
+ "indexFieldName": "Naam van indexveld",
+ "indexType": "Indextype",
+ "selectIndexType": "Selecteer een type index",
+ "undoButton": "Knop Ongedaan maken"
+ },
+ "subSettings": {
+ "timeToLive": "Time to Live",
+ "ttlOff": "Uit",
+ "ttlOnNoDefault": "Aan (niet standaard)",
+ "ttlOn": "Aan",
+ "seconds": "seconde(n)",
+ "timeToLiveInSeconds": "Time to Live in seconden",
+ "analyticalStorageTtl": "Analytische Time to Live",
+ "geospatialConfiguration": "Georuimtelijke configuratie",
+ "geography": "Geografie",
+ "geometry": "Geometrie",
+ "uniqueKeys": "Unieke sleutels",
+ "mongoTtlMessage": "Om time-to-live (TTL) in te schakelen voor uw verzameling/documenten,",
+ "mongoTtlLinkText": "een TTL-index maken",
+ "partitionKeyTooltipTemplate": "Deze {{partitionKeyName}} wordt gebruikt om gegevens over meerdere partities te verdelen voor schaalbaarheid. De waarde \"{{partitionKeyValue}}\" bepaalt hoe documenten worden gepartitioneerd.",
+ "largePartitionKeyEnabled": "Groot {{partitionKeyName}} is ingeschakeld.",
+ "hierarchicalPartitioned": "Hiërarchisch gepartitioneerde container.",
+ "nonHierarchicalPartitioned": "Niet-hiërarchisch gepartitioneerde container."
+ },
+ "scale": {
+ "freeTierInfo": "Met de gratis laag krijgt u de eerste {{ru}} RU/s en {{storage}} GB opslagruimte in dit account gratis. Houd het totale aantal RU/s over alle resources in het account op maximaal {{ru}} RU/s om uw account gratis te houden.",
+ "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",
+ "throughputRangeLabel": "Doorvoer ({{min}} - {{max}} RU/s)",
+ "unlimited": "onbeperkt"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "{{partitionKeyName}} wijzigen",
+ "currentPartitionKey": "Huidige {{partitionKeyName}}",
+ "partitioning": "Partitionering",
+ "hierarchical": "Hiërarchisch",
+ "nonHierarchical": "Niet-hiërarchisch",
+ "safeguardWarning": "Zorg ervoor dat er gedurende het hele proces van het wijzigen van de partitiesleutel geen updates worden uitgevoerd op de broncontainer om de integriteit van de gegevens die naar de nieuwe container worden gekopieerd te waarborgen.",
+ "changeDescription": "Om de partitiesleutel te wijzigen, moet u een nieuwe doelcontainer maken of een bestaande doelcontainer selecteren. Gegevens worden vervolgens naar de doelcontainer gekopieerd.",
+ "changeButton": "Wijzigen",
+ "changeJob": "{{partitionKeyName}} taak wijzigen",
+ "cancelButton": "Annuleren",
+ "documentsProcessed": "({{processedCount}} van {{totalCount}} documenten verwerkt)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Berekende eigenschappen",
+ "learnMorePrefix": "over het definiëren van berekende eigenschappen en het gebruik ervan."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Indexeringsbeleid"
+ },
+ "dataMasking": {
+ "ariaLabel": "Beleid voor gegevensmaskering",
+ "validationFailed": "De validatie is mislukt:",
+ "includedPathsRequired": "includedPaths is vereist",
+ "includedPathsMustBeArray": "includedPaths moet een matrix zijn",
+ "excludedPathsMustBeArray": "excludedPaths moet een matrix zijn als opgegeven"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vectorbeleid",
+ "fullTextPolicy": "Beleid voor volledige tekst",
+ "createFullTextPolicy": "Nieuw zoekbeleid voor volledige tekst maken"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Voor deze container zijn de volgende indexen gedefinieerd.",
+ "learnMoreSuffix": "Over het definiëren van globale secundaire indexen en het gebruik ervan.",
+ "jsonAriaLabel": "JSON van globale secundaire index",
+ "addIndex": "Index toevoegen",
+ "settingsTitle": "Instellingen van globale secundaire index",
+ "sourceContainer": "Broncontainer",
+ "indexDefinition": "Definitie van globale secundaire index"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Vernieuwen van voortgang indextransformatie mislukt"
+ },
+ "throughputInput": {
+ "autoscale": "Automatisch schalen",
+ "manual": "Handmatig",
+ "minimumRuS": "Minimumaantal RU/s",
+ "maximumRuS": "Maximumaantal RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Opslagcapaciteit",
+ "fixed": "Vast",
+ "unlimited": "Onbeperkt",
+ "instant": "Direct",
+ "fourToSixHrs": "4-6 uur",
+ "autoscaleDescription": "Op basis van gebruik wordt uw {{resourceType}} doorvoer geschaald vanaf",
+ "freeTierWarning": "Facturering geldt als u meer dan {{ru}} RU/s handmatige doorvoer instelt, of als de resource met automatisch schalen meer dan {{ru}} RU/s schaalt.",
+ "capacityCalculator": "Uw benodigde RU/s inschatten met",
+ "capacityCalculatorLink": " capaciteitscalculator",
+ "fixedStorageNote": "Als u een verzameling met vaste opslagcapaciteit gebruikt, kunt u tot 10.000 RU/s instellen.",
+ "min": "min",
+ "max": "max."
+ },
+ "throughputBuckets": {
+ "label": "Doorvoerbuckets",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Data Explorer-querybucket)",
+ "active": "Actief",
+ "inactive": "Inactief"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/pl/Resources.json b/src/Localization/pl/Resources.json
new file mode 100644
index 000000000..b50e29f33
--- /dev/null
+++ b/src/Localization/pl/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Anuluj",
+ "close": "Zamknij",
+ "save": "Zapisz",
+ "delete": "Usuń",
+ "update": "Aktualizuj",
+ "discard": "Odrzuć",
+ "execute": "Wykonaj",
+ "loading": "Ładowanie",
+ "loadingEllipsis": "Trwa ładowanie...",
+ "next": "Dalej",
+ "previous": "Wstecz",
+ "yes": "Tak",
+ "no": "Nie",
+ "result": "Wynik",
+ "learnMore": "Dowiedz się więcej",
+ "getStarted": "Wprowadzenie",
+ "retry": "Ponów próbę",
+ "apply": "Zastosuj",
+ "refresh": "Odśwież",
+ "copy": "Kopiuj",
+ "create": "Utwórz",
+ "confirm": "Potwierdź",
+ "open": "Otwarte",
+ "rename": "Zmień nazwę",
+ "download": "Pobierz",
+ "upload": "Przekaż",
+ "connect": "Połącz",
+ "remove": "Usuń",
+ "load": "Załaduj",
+ "publish": "Publikuj",
+ "browse": "Przeglądaj",
+ "increaseValueBy1": "Zwiększ wartość o 1",
+ "decreaseValueBy1": "Zmniejsz wartość o 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Azure Cosmos DB — Zapraszamy!",
+ "postgres": "Azure Cosmos DB for PostgreSQL — Zapraszamy!",
+ "vcoreMongo": "Witamy w usłudze Azure DocumentDB (ze zgodnością z bazą danych MongoDB)"
+ },
+ "subtitle": {
+ "default": "Globalnie rozproszona, wielomodelowa usługa bazy danych na dowolną skalę",
+ "getStarted": "Rozpocznij pracę z naszymi przykładowymi zestawami danych, dokumentacją i dodatkowymi narzędziami."
+ },
+ "quickStart": {
+ "title": "Uruchom przewodnik Szybki start",
+ "description": "Uruchom samouczek Szybki start, aby rozpocząć pracę z przykładowymi danymi"
+ },
+ "newCollection": {
+ "title": "Nowy element {{collectionName}}",
+ "description": "Utwórz nowy kontener na potrzeby magazynu i przepływności"
+ },
+ "samplesGallery": {
+ "title": "Galeria przykładów usługi Azure Cosmos DB",
+ "description": "Odkryj przykłady przedstawiające skalowalne, inteligentne wzorce aplikacji. Wypróbuj ją teraz, aby zobaczyć, jak szybko możesz przejść od koncepcji do kodu za pomocą usługi Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Połącz",
+ "description": "Wolisz korzystać z własnych narzędzi? Znajdź parametr połączenia potrzebny do nawiązania połączenia",
+ "pgAdmin": {
+ "title": "Nawiąż połączenie za pomocą narzędzia pgAdmin",
+ "description": "Wolisz pgAdmin? Tutaj znajdziesz parametry połączenia"
+ },
+ "vsCode": {
+ "title": "Nawiązywanie połączenia z edytorem VS Code",
+ "description": "Wykonuj zapytania dotyczące klastrów MongoDB i DocumentDB oraz zarządzaj nimi w programie Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Powłoka PostgreSQL",
+ "description": "Utwórz tabelę i pracuj z danymi za pomocą powłoki interfejsu PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Powłoka Mongo",
+ "description": "Utwórz kolekcję i pracuj z danymi przy użyciu interfejsu powłoki bazy danych MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Jesteś nowym użytkownikiem usługi Cosmos DB PGSQL?",
+ "body": "Witaj! Jeśli dopiero zaczynasz pracę z Cosmos DB PGSQL i potrzebujesz pomocy przy rozpoczynaniu pracy, tutaj znajdziesz przykładowe dane i zapytania."
+ },
+ "resetPassword": {
+ "headline": "Utwórz hasło",
+ "body": "Jeśli hasło nie zostało jeszcze zmienione, zmień je teraz."
+ },
+ "coachMark": {
+ "headline": "Rozpocznij od przykładu {{collectionName}}",
+ "body": "Zostanie wyświetlony przewodnik, aby utworzyć przykładowy kontener z przykładowymi danymi, a następnie udostępnimy Ci przewodnik po eksploratorze danych. Możesz również anulować uruchamianie tego przewodnika i eksplorować siebie"
+ }
+ },
+ "sections": {
+ "recents": "Ostatnie",
+ "clearRecents": "Wyczyść ostatnie",
+ "top3": "3 najważniejsze rzeczy, które musisz wiedzieć",
+ "learningResources": "Zasoby szkoleniowe",
+ "nextSteps": "Następne kroki",
+ "tipsAndLearnMore": "Porady i dowiedz się więcej",
+ "notebook": "Notes",
+ "needHelp": "Potrzebujesz pomocy?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Zaawansowane wzorce modelowania",
+ "description": "Poznaj zaawansowane strategie optymalizowania bazy danych."
+ },
+ "partitioning": {
+ "title": "Najlepsze rozwiązania dotyczące partycjonowania",
+ "description": "Dowiedz się, jak stosować model danych i strategie partycjonowania."
+ },
+ "resourcePlanning": {
+ "title": "Planowanie wymagań dotyczących zasobów",
+ "description": "Poznaj różne opcje konfiguracji."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Co to jest interfejs API bazy danych MongoDB?",
+ "description": "Omówienie usługi Azure Cosmos DB dla bazy danych MongoDB i jej funkcji."
+ },
+ "features": {
+ "title": "Funkcje i składnia",
+ "description": "Odkryj zalety i funkcje"
+ },
+ "migrate": {
+ "title": "Migrowanie danych",
+ "description": "Kroki przed migracją na potrzeby przenoszenia danych"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Utwórz aplikację Java",
+ "description": "Utwórz aplikację Java przy użyciu zestawu SDK."
+ },
+ "partitioning": {
+ "title": "Najlepsze rozwiązania dotyczące partycjonowania",
+ "description": "Dowiedz się, jak działa partycjonowanie."
+ },
+ "requestUnits": {
+ "title": "Jednostki żądania (jednostki RU)",
+ "description": "Informacje o opłatach za jednostki RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modelowanie danych",
+ "description": "Zalecenia dotyczące modelowania danych programu Graph"
+ },
+ "partitioning": {
+ "title": "najlepszymi rozwiązaniami dotyczącymi partycjonowania",
+ "description": "Dowiedz się, jak działa partycjonowanie"
+ },
+ "queryData": {
+ "title": "Wykonaj zapytanie dotyczące danych",
+ "description": "Wykonywanie zapytań o dane przy użyciu języka Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Co to jest interfejs API tabel?",
+ "description": "Omówienie usługi Azure Cosmos DB for Table i jej funkcji"
+ },
+ "migrate": {
+ "title": "Migrowanie danych",
+ "description": "Dowiedz się, jak migrować dane"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table — często zadawane pytania",
+ "description": "Typowe pytania dotyczące usługi Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Skróty klawiaturowe w Eksploratorze danych",
+ "description": "Poznaj skróty klawiaturowe umożliwiające nawigowanie w Eksploratorze danych."
+ },
+ "liveTv": {
+ "title": "Poznaj podstawy",
+ "description": "Obejrzyj wprowadzenie do programu telewizyjnego na żywo w usłudze Azure Cosmos DB i obejrzyj wideo."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Wprowadzenie do korzystania z zestawu SDK",
+ "description": "Dowiedz się więcej o zestawie SDK usługi Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Migrowanie danych",
+ "description": "Migruj dane przy użyciu usług platformy Azure i rozwiązań typu open source."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Tworzenie aplikacji za pomocą Node.js",
+ "description": "Utwórz aplikację Node.js."
+ },
+ "gettingStarted": {
+ "title": "Przewodnik Wprowadzenie",
+ "description": "Zapoznaj się z podstawowymi informacjami dotyczącymi rozpoczynania pracy."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Utwórz kontener",
+ "description": "Zapoznaj się z opcjami tworzenia kontenera."
+ },
+ "throughput": {
+ "title": "Zaaprowizuj przepływność",
+ "description": "Dowiedz się, jak skonfigurować przepływność."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Wprowadzenie ",
+ "description": "Twórz, wykonuj zapytania i przechodź przy użyciu konsoli Gremlin"
+ },
+ "importData": {
+ "title": "Importuj dane wykresu",
+ "description": "Dowiedz się więcej o zbiorczym pozyskiwaniu danych przy użyciu narzędzia BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Utwórz aplikację platformy .NET",
+ "description": "Jak uzyskać dostęp do usługi Azure Cosmos DB for Table z poziomu aplikacji platformy .NET."
+ },
+ "java": {
+ "title": "Utwórz aplikację Java",
+ "description": "Utwórz aplikację usługi Azure Cosmos DB for Table przy użyciu zestawu Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modelowanie danych",
+ "distributionColumn": "Jak wybrać kolumnę dystrybucji",
+ "buildApps": "Twórz aplikacje przy użyciu języka Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migruj dane",
+ "vectorSearch": "Twórz aplikacje AI za pomocą funkcji wyszukiwania wektorowego",
+ "buildApps": "Twórz aplikacje za pomocą środowiska Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Dostrajanie wydajności",
+ "diagnosticQueries": "Przydatne zapytania diagnostyczne",
+ "sqlReference": "Rozproszona dokumentacja SQL"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Wyszukiwanie wektorowe",
+ "textIndexing": "Indeksowanie tekstu",
+ "troubleshoot": "Rozwiązywanie typowych problemów"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Utwórz bazę danych",
+ "useTitle": "Wykonaj „diff” dla swojej bazy danych",
+ "newContainer": {
+ "title": "Nowy kontener",
+ "description": "Utwórz kontener docelowy do przechowywania danych"
+ },
+ "sampleData": {
+ "title": "Dane przykładowe",
+ "description": "Załaduj przykładowe dane w bazie danych"
+ },
+ "sampleVectorData": {
+ "title": "Przykładowe dane wektorowe",
+ "description": "Załaduj przykładowe dane wektorowe za pomocą polecenia text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Opracowywanie aplikacji",
+ "description": "Zacznij tutaj, aby używać zestawu SDK do kompilowania aplikacji"
+ },
+ "sampleGallery": {
+ "title": "Galeria przykładów",
+ "description": "Uzyskaj rzeczywiste, kompleksowe przykłady"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Dane przykładowe",
+ "startButton": "Start",
+ "createPrompt": "Utwórz kontener „{{containerName}}” i zaimportuj do niego przykładowe dane. Może to potrwać kilka minut.",
+ "creatingContainer": "Tworzenie kontenera „{{containerName}}”...",
+ "importingData": "Trwa importowanie danych do folderu „{{containerName}}”...",
+ "success": "Pomyślnie utworzono „{{containerName}}” z przykładowymi danymi.",
+ "errorContainerExists": "Kontener „{{containerName}}” w bazie danych „{{databaseName}}” już istnieje. Usuń go i spróbuj ponownie.",
+ "errorCreateContainer": "Nie można utworzyć kontenera: {{error}}",
+ "errorImportData": "Nie można zaimportować danych: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Nowy element {{containerName}}",
+ "restoreContainer": "Przywróć {{containerName}}",
+ "deleteDatabase": "Usuń {{databaseName}}",
+ "deleteContainer": "Usuń {{containerName}}",
+ "newSqlQuery": "Nowe zapytanie SQL",
+ "newQuery": "Nowe zapytanie",
+ "openMongoShell": "Otwórz powłokę Mongo",
+ "newShell": "Nowa powłoka",
+ "openCassandraShell": "Otwórz powłokę Cassandra",
+ "newStoredProcedure": "Nowa procedura składowana",
+ "newUdf": "Nowa funkcja UDF",
+ "newTrigger": "Nowy wyzwalacz",
+ "deleteStoredProcedure": "Usuń procedurę składowaną",
+ "deleteTrigger": "Usuń wyzwalacz",
+ "deleteUdf": "Usuń funkcję zdefiniowaną przez użytkownika"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nowy element",
+ "newDocument": "Nowy dokument",
+ "uploadItem": "Przekaż element",
+ "applyFilter": "Zastosuj filtr",
+ "unsavedChanges": "Niezapisane zmiany",
+ "unsavedChangesMessage": "Wszystkie niezapisane zmiany zostaną utracone. Czy chcesz kontynuować?",
+ "createDocumentFailed": "Tworzenie dokumentu nie powiodło się",
+ "updateDocumentFailed": "Aktualizacja dokumentu nie powiodła się",
+ "documentDeleted": "Dokument został pomyślnie usunięty.",
+ "deleteDocumentDialogTitle": "Usuń dokument",
+ "deleteDocumentsDialogTitle": "Usuń dokumenty",
+ "throttlingError": "Nie można usunąć niektórych dokumentów z powodu błędu ograniczenia szybkości. Spróbuj ponownie później. Aby temu zapobiec w przyszłości, rozważ zwiększenie przepustowości kontenera lub bazy danych.",
+ "deleteFailed": "Usuwanie dokumentów nie powiodło się ({{error}})",
+ "missingShardProperty": "W dokumencie brakuje właściwości fragmentu: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Nie udało się odświeżyć siatki dokumentów",
+ "confirmDelete": "Czy na pewno chcesz usunąć {{documentName}}?",
+ "confirmDeleteTitle": "Potwierdź usunięcie",
+ "selectedItems": "zaznaczone elementy ({{count}})",
+ "selectedItem": "wybrany element",
+ "selectedDocuments": "wybrane dokumenty ({{count}})",
+ "selectedDocument": "wybrany dokument",
+ "deleteDocumentFailedLog": "Nie można usunąć dokumentu {{documentId}} z kodem stanu {{statusCode}}",
+ "deleteSuccessLog": "Pomyślnie usunięto dokumenty ({{count}})",
+ "deleteThrottledLog": "Nie można usunąć dokumentów ({{count}}) z powodu błędu „Żądanie zbyt duże” (429). Trwa ponawianie próby...",
+ "missingShardKeyLog": "Nie udało się zapisać nowego dokumentu: nie zdefiniowano klucza fragmentu dokumentu",
+ "filterTooltip": "Wpisz predykat zapytania lub wybierz go z listy.",
+ "loadMore": "Załaduj więcej",
+ "documentEditor": "Edytor dokumentów",
+ "savedFilters": "Zapisane filtry",
+ "defaultFilters": "Domyślne filtry",
+ "abort": "Przerwij",
+ "deletingDocuments": "Usuwanie dokumentów ({{count}})",
+ "deletedDocumentsSuccess": "Pomyślnie usunięto dokumenty ({{count}}).",
+ "deleteAborted": "Usuwanie dokumentów zostało przerwane.",
+ "failedToDeleteDocuments": "Nie można usunąć dokumentów ({{count}}).",
+ "requestTooLargeBase": "Niektóre żądania usunięcia nie powiodły się z powodu wyjątku „Żądanie za duże” (429)",
+ "retriedSuccessfully": "ale pomyślnie ponowiono próbę.",
+ "retryingNow": "Ponawianie próby teraz.",
+ "increaseThroughputTip": "Aby temu zapobiec w przyszłości, rozważ zwiększenie przepustowości kontenera lub bazy danych.",
+ "numberOfSelectedDocuments": "Liczba wybranych dokumentów: {{count}}",
+ "mongoFilterPlaceholder": "Wpisz predykat zapytania (np. {\"id\":\"foo\"}), wybierz go z listy rozwijanej lub pozostaw pusty, aby zapytać o wszystkie dokumenty.",
+ "sqlFilterPlaceholder": "Wpisz predykat zapytania (np. WHERE c.id=\"1\"), wybierz go z listy rozwijanej lub pozostaw pusty, aby zapytać o wszystkie dokumenty.",
+ "error": "Błąd",
+ "warning": "Ostrzeżenie"
+ },
+ "query": {
+ "executeQuery": "Wykonaj zapytanie",
+ "executeSelection": "Wykonaj zaznaczenie",
+ "saveQuery": "Zapisz zapytanie",
+ "downloadQuery": "Pobierz zapytanie",
+ "cancelQuery": "Anuluj zapytanie",
+ "openSavedQueries": "Otwórz zapisane zapytania",
+ "vertical": "W pionie",
+ "horizontal": "W poziomie",
+ "view": "Wyświetl",
+ "editingQuery": "Edytowanie zapytania"
+ },
+ "storedProcedure": {
+ "id": "Identyfikator procedury składowanej",
+ "idPlaceholder": "Wprowadź nowy identyfikator procedury składowanej",
+ "idAriaLabel": "Identyfikator procedury składowanej",
+ "body": "Treść procedury składowanej",
+ "bodyAriaLabel": "Treść procedury składowanej",
+ "successfulExecution": "Pomyślne wykonanie procedury składowanej",
+ "resultAriaLabel": "Wykonaj wynik procedury składowanej",
+ "logsAriaLabel": "Wykonywanie dzienników procedur składowanej",
+ "errors": "Błędy:",
+ "errorDetailsAriaLabel": "Link szczegółów błędu",
+ "moreDetails": "Więcej szczegółów",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Identyfikator wyzwalacza",
+ "idPlaceholder": "Wprowadź nowy identyfikator wyzwalacza",
+ "type": "Typ wyzwalacza",
+ "operation": "Operacja wyzwalacza",
+ "body": "Treść wyzwalacza",
+ "bodyAriaLabel": "Treść wyzwalacza",
+ "pre": "Przed operacją",
+ "post": "Opublikuj",
+ "all": "Wszystkie",
+ "operationCreate": "Utwórz",
+ "operationDelete": "Usuń",
+ "operationReplace": "Zamień"
+ },
+ "udf": {
+ "id": "Identyfikator funkcji zdefiniowanej przez użytkownika",
+ "idPlaceholder": "Wprowadź nowy identyfikator funkcji zdefiniowanej przez użytkownika",
+ "body": "Treść funkcji zdefiniowanej przez użytkownika",
+ "bodyAriaLabel": "Treść funkcji zdefiniowanej przez użytkownika"
+ },
+ "conflicts": {
+ "unsavedChanges": "Niezapisane zmiany",
+ "changesWillBeLost": "Zmiany zostaną utracone. Czy chcesz kontynuować?",
+ "resolveConflictFailed": "Rozwiązywanie konfliktu nie powiodło się",
+ "deleteConflictFailed": "Usuwanie konfliktu nie powiodło się",
+ "refreshGridFailed": "Nie udało się odświeżyć siatki dokumentów"
+ },
+ "mongoShell": {
+ "title": "Powłoka Mongo"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Jaki jest powód usunięcia tego {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Usuń {{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!",
+ "feedbackReason": "Jaki jest powód usunięcia tego {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Baza danych {{suffix}}",
+ "databaseIdLabel": "Identyfikator bazy danych",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "Identyfikator {{collectionName}}, przykład {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Wybierz istniejący identyfikator {{databaseName}}",
+ "existingDatabasePlaceholder": "Wybierz istniejący identyfikator {{databaseName}}",
+ "indexing": "Indeksowanie",
+ "turnOnIndexing": "Włącz indeksowanie",
+ "automatic": "Automatyczne",
+ "turnOffIndexing": "Wyłącz indeksowanie",
+ "off": "Wyłączone",
+ "sharding": "Fragmentacja",
+ "shardingTooltip": "Kolekcje podzielone na fragmenty rozdzielają dane na wiele zestawów replik (fragmentów), aby osiągnąć nieograniczoną skalowalność. Kolekcje fragmentowane wymagają wybrania klucza fragmentu (pola), który równomiernie rozłoży dane.",
+ "unsharded": "Bez fragmentów",
+ "unshardedLabel": "Bez fragmentów (limit 20 GB)",
+ "sharded": "Podzielony na fragmenty",
+ "addPartitionKey": "Dodaj hierarchiczny klucz partycji",
+ "hierarchicalPartitionKeyInfo": "Ta funkcja pozwala na partycjonowanie danych z użyciem do trzech poziomów kluczy, co poprawia dystrybucję danych. Wymaga zestawu .NET V3, Java V4 SDK lub wersji zapoznawczej JavaScript V3 SDK.",
+ "provisionDedicatedThroughput": "Przydziel dedykowaną przepływność dla tego elementu {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Opcjonalnie można aprowizować dedykowaną przepływność dla {{collectionName}} w bazie danych z aprowizowaną przepływnością. Ta dedykowana przepływność nie zostanie udostępniona innym {{collectionNamePlural}} w bazie danych i nie będzie wliczona do przepływności aprowizowanej dla bazy danych. Ta kwota przepływności będzie rozliczana oprócz aprowizowanej przepływności na poziomie bazy danych.",
+ "uniqueKeysPlaceholderMongo": "Ścieżki rozdzielone przecinkami, np. firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Ścieżki rozdzielone przecinkami, np. /firstName,/address/zipCode",
+ "addUniqueKey": "Dodaj unikatowy klucz",
+ "enableAnalyticalStore": "Włącz magazyn analityczny",
+ "disableAnalyticalStore": "Wyłącz magazyn analityczny",
+ "on": "Włączone",
+ "analyticalStoreSynapseLinkRequired": "Usługa Azure Synapse Link jest wymagana do utworzenia magazynu analitycznego {{collectionName}}. Włącz usługę Synapse Link dla tego konta usługi Cosmos DB.",
+ "enable": "Włącz",
+ "containerVectorPolicy": "Zasady wektorów kontenera",
+ "containerFullTextSearchPolicy": "Zasady pełnotekstowego wyszukiwania kontenera",
+ "advanced": "Zaawansowane",
+ "mongoIndexingTooltip": "Pole _id jest domyślnie indeksowane. Utworzenie indeksu wieloznacznego dla wszystkich pól zoptymalizuje zapytania i jest zalecane podczas programowania.",
+ "createWildcardIndex": "Utwórz indeks symbolu wieloznacznego dla wszystkich pól",
+ "legacySdkCheckbox": "Moja aplikacja korzysta ze starszej wersji zestawu Cosmos .NET lub Java SDK (.NET V1 lub Java V2)",
+ "legacySdkInfo": "Aby zapewnić zgodność ze starszymi zestawami SDK, utworzony kontener będzie korzystał ze starszego schematu partycjonowania, który obsługuje wartości klucza partycji o rozmiarze do 101 bajtów. Jeśli ta opcja jest włączona, nie będzie można używać hierarchicznych kluczy partycji.",
+ "indexingOnInfo": "Wszystkie właściwości w dokumentach będą domyślnie indeksowane, co umożliwia elastyczne i wydajne zapytania.",
+ "indexingOffInfo": "Indeksowanie zostanie wyłączone. Zalecane, jeśli nie musisz uruchamiać zapytań lub wykonujesz tylko operacje na wartościach klucza.",
+ "indexingOffWarning": "Tworząc ten kontener z wyłączonym indeksowaniem, nie będziesz mógł wprowadzać zmian w polityce indeksowania. Zmiany indeksowania są dozwolone tylko w kontenerze z zasadami indeksowania.",
+ "acknowledgeSpendErrorMonthly": "Potwierdź szacowane miesięczne wydatki.",
+ "acknowledgeSpendErrorDaily": "Potwierdź szacowane dzienne wydatki.",
+ "unshardedMaxRuError": "Kolekcje bez fragmentów obsługują do 10 000 jednostek żądań",
+ "acknowledgeShareThroughputError": "Potwierdź szacowany koszt tej dedykowanej przepływności.",
+ "vectorPolicyError": "Napraw błędy w zasadach wektora kontenera",
+ "fullTextSearchPolicyError": "Napraw błędy w zasadach wyszukiwania pełnotekstowych kontenerów",
+ "addingSampleDataSet": "Dodawanie przykładowego zestawu danych",
+ "databaseFieldLabelName": "Nazwa bazy danych",
+ "databaseFieldLabelId": "Identyfikator bazy danych",
+ "newDatabaseIdPlaceholder": "Wpisz nowy identyfikator bazy danych",
+ "newDatabaseIdAriaLabel": "Nowy identyfikator bazy danych, wpisz nowy identyfikator bazy danych",
+ "createNewDatabaseAriaLabel": "Utwórz nową bazę danych",
+ "useExistingDatabaseAriaLabel": "Użyj istniejącej bazy danych",
+ "chooseExistingDatabase": "Wybierz istniejącą bazę danych",
+ "teachingBubble": {
+ "step1Headline": "Utwórz przykładową bazę danych",
+ "step1Body": "Baza danych jest nadrzędna względem kontenera. Możesz utworzyć nową bazę danych lub skorzystać z istniejącej. W tym poradniku tworzymy nową bazę o nazwie SampleDB.",
+ "step1LearnMore": "Dowiedz się więcej o zasobach.",
+ "step2Headline": "Ustawianie przepływności",
+ "step2Body": "Cosmos DB zaleca współdzielenie przepustowości na poziomie bazy danych. Autoskalowanie zapewnia elastyczną przepustowość w oparciu o maksymalną ustawioną wartość RU/s (Request Units).",
+ "step2LearnMore": "Dowiedz się więcej o jednostkach RU/s.",
+ "step3Headline": "Nadawanie nazwy kontenerowi",
+ "step3Body": "Nadaj nazwę kontenerowi",
+ "step4Headline": "Ustawianie klucza partycji",
+ "step4Body": "Ostatni krok — musisz zdefiniować klucz partycji dla kolekcji. W tym przykładzie wybrano /address. Dobry klucz partycji powinien mieć szeroki zakres możliwych wartości",
+ "step4CreateContainer": "Utwórz kontener",
+ "step5Headline": "Tworzenie przykładowego kontenera",
+ "step5Body": "Trwa tworzenie przykładowego kontenera i dodajemy przykładowe dane. Powinno to potrwać około 1 minuty.",
+ "step5BodyFollowUp": "Po utworzeniu przykładowego kontenera przejrzyj swój przykładowy zestaw danych i wykonaj kolejne kroki",
+ "stepOfTotal": "Krok {{current}} z {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Klucz fragmentu (pole) służy do dzielenia danych na wiele zestawów replik (fragmentów) w celu osiągnięcia nieograniczonej skalowalności. Ważne jest, aby wybrać pole, które równomiernie rozłoży dane.",
+ "partitionKeyTooltip": "{{partitionKeyName}} służy do automatycznego dystrybuowania danych między partycjami na potrzeby skalowalności. Wybierz właściwość w dokumencie JSON, która ma szeroki zakres wartości i równomiernie dystrybuuje wolumin żądania.",
+ "partitionKeyTooltipSqlSuffix": " W przypadku małych obciążeń z dużą ilością odczytu lub obciążeń z dużą ilością zapisu o dowolnym rozmiarze identyfikator jest często dobrym wyborem.",
+ "shardKeyLabel": "Klucz partycjonujący",
+ "partitionKeyLabel": "Klucz partycji",
+ "shardKeyPlaceholder": "np. identyfikator kategorii",
+ "partitionKeyPlaceholderDefault": "np. /address",
+ "partitionKeyPlaceholderFirst": "Wymagane — pierwszy klucz partycji, np. /TenantId",
+ "partitionKeyPlaceholderSecond": "drugi klucz partycji, np. /UserId",
+ "partitionKeyPlaceholderThird": "trzeci klucz partycji, np., /SessionId",
+ "partitionKeyPlaceholderGraph": "np. /address/zipCode",
+ "uniqueKeysTooltip": "Unikatowe klucze zapewniają deweloperom możliwość dodania warstwy integralności danych do bazy danych. Tworząc unikatową politykę kluczy podczas tworzenia kontenera, zapewniasz unikatowość jednej lub więcej wartości na klucz partycji.",
+ "uniqueKeysLabel": "Unikatowe klucze",
+ "analyticalStoreLabel": "Magazyn analityczny",
+ "analyticalStoreTooltip": "Włącz funkcję magazynu analitycznego, aby wykonywać analizy danych operacyjnych niemal w czasie rzeczywistym, bez wpływu na wydajność obciążeń transakcyjnych.",
+ "analyticalStoreDescription": "Włącz funkcję magazynu analitycznego, aby wykonywać analizy danych operacyjnych niemal w czasie rzeczywistym, bez wpływu na wydajność obciążeń transakcyjnych.",
+ "vectorPolicyTooltip": "Opisz właściwości w swoich danych, które zawierają wektory, aby można było je wykorzystać w zapytaniach podobieństwa."
+ },
+ "settings": {
+ "pageOptions": "Opcje strony",
+ "pageOptionsDescription": "Wybierz Niestandardowe, aby określić stałą liczbę wyników zapytania do wyświetlenia, lub Bez ograniczeń, aby pokazać dowolną liczbę wyników na stronie.",
+ "queryResultsPerPage": "Wyniki zapytania na stronę",
+ "queryResultsPerPageTooltip": "Wprowadź liczbę wyników zapytania, które powinny być wyświetlane na stronie.",
+ "customQueryItemsPerPage": "Niestandardowe elementy zapytania na stronę",
+ "custom": "Niestandardowe",
+ "unlimited": "Bez ograniczeń",
+ "entraIdRbac": "Włącz RBAC w Entra ID",
+ "entraIdRbacDescription": "Wybierz pozycję Automatycznie, aby automatycznie włączyć funkcję RBAC identyfikatora wpisu. Wartość true/false wymusza włączenie/wyłączenie RBAC usługi Entra ID.",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "Wybór regionu",
+ "regionSelectionDescription": "Zmienia region, którego klient Cosmos używa do dostępu do konta.",
+ "selectRegion": "Wybierz region",
+ "selectRegionTooltip": "Zmienia punkt końcowy konta używany do wykonywania operacji klienta.",
+ "globalDefault": "Globalne (domyślne)",
+ "readWrite": "(Odczyt/zapis)",
+ "read": "(Odczyt)",
+ "queryTimeout": "Limit czasu zapytania",
+ "queryTimeoutDescription": "Gdy zapytanie osiągnie określony limit czasu, pojawi się okienko z opcją anulowania zapytania, chyba że włączono automatyczne anulowanie.",
+ "enableQueryTimeout": "Włącz limit czasu zapytania",
+ "queryTimeoutMs": "Limit czasu zapytania (ms)",
+ "automaticallyCancelQuery": "Automatycznie anuluj zapytanie po upływie limitu czasu",
+ "ruLimit": "Limit RU",
+ "ruLimitDescription": "Jeśli zapytanie przekroczy skonfigurowany limit jednostek RU, zapytanie zostanie przerwane.",
+ "enableRuLimit": "Włącz limit jednostek RU",
+ "ruLimitLabel": "Limit jednostek RU (RU)",
+ "defaultQueryResults": "Domyślny widok wyników zapytania",
+ "defaultQueryResultsDescription": "Wybierz widok domyślny, który ma być używany podczas wyświetlania wyników zapytania.",
+ "retrySettings": "Ustawienia ponawiania",
+ "retrySettingsDescription": "Zasady ponawiania związane z ograniczonymi żądaniami podczas zapytań w usłudze CosmosDB.",
+ "maxRetryAttempts": "Maksymalna liczba ponownych prób",
+ "maxRetryAttemptsTooltip": "Maksymalna liczba ponownych prób dla żądania. Wartość domyślna 9.",
+ "fixedRetryInterval": "Stały interwał ponawiania prób (ms)",
+ "fixedRetryIntervalTooltip": "Stały interwał ponawiania prób w milisekundach, który określa czas oczekiwania między kolejnymi próbami, ignorując wartość retryAfter zwróconą w odpowiedzi. Wartość domyślna to 0 milisekund.",
+ "maxWaitTime": "Maksymalny czas oczekiwania (s)",
+ "maxWaitTimeTooltip": "Maksymalny czas oczekiwania na żądanie podczas ponownych prób, podany w sekundach. Wartość domyślna to 30 sekund.",
+ "enableContainerPagination": "Włącz paginację kontenera",
+ "enableContainerPaginationDescription": "Załaduj 50 kontenerów jednocześnie. Obecnie kontenery nie są ściągane w kolejności alfanumerycznej.",
+ "enableCrossPartitionQuery": "Włącz zapytanie między partycjami",
+ "enableCrossPartitionQueryDescription": "Wyślij więcej niż jedno żądanie podczas wykonywania zapytania. Jeśli zapytanie nie ma zakresu wartości klucza pojedynczej partycji, konieczne jest więcej niż jedno żądanie.",
+ "maxDegreeOfParallelism": "Maksymalny stopień równoległości",
+ "maxDegreeOfParallelismDescription": "Pobiera lub ustawia liczbę równoczesnych operacji uruchamianych po stronie klienta podczas równoległego wykonywania zapytań. Dodatnia wartość właściwości ogranicza liczbę równoczesnych operacji do ustawionej wartości. Jeśli wartość jest mniejsza niż 0, system automatycznie decyduje, ile operacji równoczesnych uruchomić.",
+ "maxDegreeOfParallelismQuery": "Wykonaj zapytanie o maksymalny stopień równoległości.",
+ "priorityLevel": "Poziom priorytetu",
+ "priorityLevelDescription": "Ustawia poziom priorytetu dla żądań płaszczyzny danych z usługi Data Explorer w przypadku korzystania z wykonywania opartego na priorytecie. Jeśli wybrano „Brak”, Data Explorer nie określi poziomu priorytetu, a zostanie użyty domyślny poziom priorytetu po stronie serwera.",
+ "displayGremlinQueryResults": "Wyświetl wyniki zapytania Gremlin jako:",
+ "displayGremlinQueryResultsDescription": "Wybierz Graph, aby automatycznie wizualizować wyniki zapytania jako wykres lub JSON, aby wyświetlić wyniki w formacie JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Automatyczna wizualizacja grafu",
+ "enableSampleDatabase": "Włącz przykładową bazę danych",
+ "enableSampleDatabaseDescription": "To przykładowa baza danych i kolekcja z syntetycznymi danymi produktów, które możesz wykorzystać do eksploracji za pomocą zapytań NoSQL. Baza ta pojawi się jako kolejna baza danych w interfejsie Data Explorer i jest tworzona oraz utrzymywana przez Microsoft bez żadnych kosztów dla Ciebie.",
+ "enableSampleDbAriaLabel": "Włącz przykładową bazę danych do eksploracji zapytań",
+ "guidRepresentation": "Reprezentacja identyfikatora GUID",
+ "guidRepresentationDescription": "Element GuidRepresentation w MongoDB określa sposób serializacji i deserializacji globalnych unikatowych identyfikatorów (GUID) podczas przechowywania w dokumentach BSON. Dotyczy to wszystkich operacji na dokumentach.",
+ "advancedSettings": "Ustawienia zaawansowane",
+ "ignorePartitionKey": "Ignoruj klucz partycji podczas aktualizacji dokumentu",
+ "ignorePartitionKeyTooltip": "Jeśli zaznaczone, wartość klucza partycji nie będzie używana do lokalizowania dokumentu podczas operacji aktualizacji. Używaj tego tylko, gdy aktualizacje dokumentu nie powiodły się z powodu nieprawidłowego klucza partycji.",
+ "clearHistory": "Wyczyść historię",
+ "clearHistoryConfirm": "Czy na pewno chcesz kontynuować?",
+ "clearHistoryDescription": "Ta akcja spowoduje wyczyszczenie wszystkich dostosowań dla tego konta w tej przeglądarce, w tym:",
+ "clearHistoryTabLayout": "Zresetuj dostosowany układ kart, w tym pozycje rozdzielacza",
+ "clearHistoryTableColumns": "Wymaż preferencje kolumn tabeli, w tym wszystkie kolumny niestandardowe",
+ "clearHistoryFilters": "Wyczyść historię filtrów",
+ "clearHistoryRegion": "Resetuj wybór regionu do globalnego",
+ "increaseValueBy1000": "Zwiększ wartość o 1000",
+ "decreaseValueBy1000": "Zmniejsz wartość o 1000",
+ "none": "Brak",
+ "low": "Niskie",
+ "high": "Wysokie",
+ "automatic": "Automatyczne",
+ "enhancedQueryControl": "Rozszerzona kontrolka zapytań",
+ "enableQueryControl": "Włącz kontrolkę zapytania",
+ "explorerVersion": "Wersja Eksploratora",
+ "accountId": "Identyfikator konta",
+ "sessionId": "Identyfikator sesji",
+ "popupsDisabledError": "Nie udało się ustanowić autoryzacji dla tego konta, ponieważ w przeglądarce są wyłączone wyskakujące okienka.\nWłącz wyskakujące okienka dla tej witryny i kliknij przycisk „Zaloguj się w Entra ID”",
+ "failedToAcquireTokenError": "Nie można automatycznie uzyskać tokenu autoryzacji. Kliknij przycisk „Zaloguj się dla Entra ID”, aby włączyć operacje RBAC Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Zapisz zapytanie",
+ "setupCostMessage": "Ze względów zgodności zapisujemy zapytania w kontenerze na Twoim koncie Azure Cosmos w osobnej bazie danych o nazwie „{{databaseName}}”. Aby kontynuować, musimy utworzyć kontener na Twoim koncie, a szacowany dodatkowy koszt to 0,77 USD dziennie.",
+ "completeSetup": "Ukończ instalację",
+ "noQueryNameError": "Nie określono nazwy zapytania",
+ "invalidQueryContentError": "Określono nieprawidłową zawartość zapytania",
+ "failedToSaveQueryError": "Nie można zapisać zapytania {{queryName}}",
+ "failedToSetupContainerError": "Nie można skonfigurować kontenera dla zapisanych zapytań",
+ "accountNotSetupError": "Nie udało się zapisać zapytania: konto nie jest skonfigurowane do zapisywania zapytań",
+ "name": "Nazwa"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nie określono pliku",
+ "failedToLoadQueryError": "Nie można załadować zapytania",
+ "failedToLoadQueryFromFileError": "Nie można załadować zapytania z pliku {{fileName}}",
+ "selectFilesToOpen": "Wybierz dokument zapytania",
+ "browseFiles": "Przeglądaj"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Wprowadź parametry wejściowe (jeśli są)",
+ "key": "Klucz",
+ "param": "Param",
+ "partitionKeyValue": "Wartość klucza partycji",
+ "value": "Wartość",
+ "addNewParam": "Dodaj nowy parametr",
+ "addParam": "Dodaj parametr",
+ "deleteParam": "Usuń parametr",
+ "invalidParamError": "Określono nieprawidłowy parametr: {{invalidParam}}",
+ "invalidParamConsoleError": "Określono nieprawidłowy parametr: {{invalidParam}} nie jest prawidłową wartością literału",
+ "stringType": "Ciąg",
+ "customType": "Niestandardowe"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Nie określono plików. Wprowadź co najmniej jeden plik.",
+ "selectJsonFiles": "Wybierz pliki JSON",
+ "selectJsonFilesTooltip": "Wybierz jeden lub więcej plików JSON do przesłania. Każdy plik może zawierać pojedynczy dokument JSON lub tablicę dokumentów JSON. Łączny rozmiar wszystkich plików w pojedynczej operacji przesyłania musi być mniejszy niż 2 MB. Możesz wykonać wiele operacji przesyłania dla większych zestawów danych.",
+ "fileNameColumn": "NAZWA PLIKU",
+ "statusColumn": "STAN",
+ "uploadStatus": "Utworzono: {{numSucceeded}}, ograniczono: {{numThrottled}}, błędy: {{numFailed}}",
+ "uploadedFiles": "Przekazywane pliki"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Nie można skopiować {{name}} do {{destination}}",
+ "uploadFailedError": "Nie można przekazać {{name}}",
+ "location": "Lokalizacja",
+ "locationAriaLabel": "Lokalizacja",
+ "selectLocation": "Wybierz lokalizację notesu do skopiowania",
+ "name": "Nazwa"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Nie można opublikować {{notebookName}} w galerii",
+ "publishDescription": "Po opublikowaniu ten notes pojawi się w publicznej galerii notesów Azure Cosmos DB. Przed opublikowaniem upewnij się, że usunięto poufne dane lub dane wyjściowe.",
+ "publishPrompt": "Czy chcesz opublikować i udostępnić „{{name}}” w galerii?",
+ "coverImage": "Obraz okładki",
+ "coverImageUrl": "Adres URL obrazu tytułowego",
+ "name": "Nazwa",
+ "description": "Opis",
+ "tags": "Tagi",
+ "tagsPlaceholder": "Opcjonalny tag 1, opcjonalny tag 2",
+ "preview": "Podgląd",
+ "urlType": "Adres URL",
+ "customImage": "Obraz niestandardowy",
+ "takeScreenshot": "Zrób zrzut ekranu",
+ "useFirstDisplayOutput": "Użyj pierwszego wyświetlania danych wyjściowych",
+ "failedToCaptureOutput": "Nie można przechwycić pierwszych danych wyjściowych",
+ "outputDoesNotExist": "Dane wyjściowe nie istnieją dla żadnej komórki.",
+ "failedToConvertError": "Nie można przekonwertować {{fileName}} na format base64",
+ "failedToUploadError": "Nie można przekazać {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Nie udało się uruchomić zadania transferu danych",
+ "suboptimalPartitionKeyError": "Ostrzeżenie: system wykrył, że kolekcja może używać nieoptymalnego klucza partycji",
+ "description": "Zmieniając klucz partycji kontenera, musisz utworzyć kontener docelowy z poprawnym kluczem partycji. Możesz też wybrać istniejący kontener docelowy.",
+ "sourceContainerId": "Identyfikator {{collectionName}} źródłowego",
+ "destinationContainerId": "Identyfikator {{collectionName}} docelowego",
+ "collectionIdTooltip": "Identyfikator unikatowy {{collectionName}} używany do routingu opartego na identyfikatorach prowadzącego przez interfejs REST i wszystkie zestawy SDK.",
+ "collectionIdPlaceholder": "np. {{collectionName}}1",
+ "collectionIdAriaLabel": "Identyfikator {{collectionName}}, przykład {{collectionName}}1",
+ "existingContainers": "Istniejące kontenery",
+ "partitionKeyWarning": "Kontener docelowy nie może już istnieć. Data Explorer utworzy dla Ciebie nowy kontener docelowy."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Nazwa przestrzeni kluczy",
+ "keyspaceTooltip": "Wybierz istniejącą przestrzeń kluczy lub wprowadź nowy identyfikator przestrzeni kluczy.",
+ "tableIdLabel": "Wprowadź polecenie CQL, aby utworzyć tabelę.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Dodaj właściwość",
+ "addRow": "Dodaj wiersz",
+ "addEntity": "Dodaj jednostkę",
+ "back": "wstecz",
+ "nullFieldsWarning": "Ostrzeżenie: pola o wartości null nie będą wyświetlane do edycji.",
+ "propertyEmptyError": "Wartość {{property}} nie może być pusta. Wprowadź wartość dla {{property}}",
+ "whitespaceError": "{{property}} nie może zawierać białych znaków. Wprowadź wartość dla {{property}} bez białych znaków",
+ "propertyTypeEmptyError": "Typ właściwości nie może być pusty. Wybierz typ z listy rozwijanej dla właściwości {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Wybierz kolumny, których ma dotyczyć zapytanie.",
+ "availableColumns": "Dostępne kolumny"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Wybierz kolumny do wyświetlenia w widoku elementów w kontenerze.",
+ "searchFields": "Pola wyszukiwania",
+ "reset": "Zresetuj",
+ "partitionKeySuffix": " (klucz partycji)"
+ },
+ "newVertex": {
+ "addProperty": "Dodaj właściwość"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Identyfikator kontenera globalnego indeksu pomocniczego",
+ "globalSecondaryIndexIdPlaceholder": "np. indexbyEmailId",
+ "projectionQuery": "Zapytanie projekcji",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Dowiedz się więcej o definiowaniu globalnych indeksów pomocniczych.",
+ "disabledTitle": "Globalny indeks pomocniczy jest już tworzony. Zaczekaj na ukończenie tej operacji przed utworzeniem kolejnej."
+ },
+ "stringInput": {
+ "inputMismatchError": "Dane wejściowe {{input}} nie pasują do wybranej {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Informacje",
+ "moreDetails": "Więcej szczegółów"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Skale",
+ "conflictResolution": "Rozwiązywanie konfliktów",
+ "settings": "Ustawienia",
+ "indexingPolicy": "Zasady indeksowania",
+ "partitionKeys": "Klucze partycji",
+ "partitionKeysPreview": "Klucze partycji (wersja zapoznawcza)",
+ "computedProperties": "Właściwości obliczane",
+ "containerPolicies": "Zasady kontenera",
+ "throughputBuckets": "Zasobniki przepływności",
+ "globalSecondaryIndexPreview": "Globalny indeks pomocniczy (wersja zapoznawcza)",
+ "maskingPolicyPreview": "Zasady maskowania (wersja zapoznawcza)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Wybierz typ dla każdego indeksu.",
+ "enterFieldNameError": "Wprowadź nazwę pola.",
+ "wildcardPathError": "W nazwie pola nie ma ścieżki z symbolami wieloznacznymi. Użyj wzorca, takiego jak "
+ },
+ "partitionKey": {
+ "shardKey": "Klucz partycjonujący",
+ "partitionKey": "Klucz partycji",
+ "shardKeyTooltip": "Klucz fragmentu (pole) służy do dzielenia danych na wiele zestawów replik (fragmentów) w celu osiągnięcia nieograniczonej skalowalności. Ważne jest, aby wybrać pole, które równomiernie rozłoży dane.",
+ "partitionKeyTooltip": "Służy do automatycznego dystrybuowania danych między partycjami w celu skalowalności. Wybierz właściwość w dokumencie JSON, która ma szeroki zakres wartości i równomiernie dystrybuuje wolumin żądania.",
+ "sqlPartitionKeyTooltipSuffix": " W przypadku małych obciążeń z dużą ilością odczytu lub obciążeń z dużą ilością zapisu o dowolnym rozmiarze identyfikator jest często dobrym wyborem.",
+ "partitionKeySubtext": "W przypadku małych obciążeń identyfikator elementu jest odpowiedni jako klucz partycji.",
+ "mongoPlaceholder": "np. identyfikator kategorii",
+ "gremlinPlaceholder": "np. /address",
+ "sqlFirstPartitionKey": "Wymagane — pierwszy klucz partycji, np. /TenantId",
+ "sqlSecondPartitionKey": "drugi klucz partycji, np. /UserId",
+ "sqlThirdPartitionKey": "trzeci klucz partycji, np., /SessionId",
+ "defaultPlaceholder": "np. /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Szacowanie kosztów*",
+ "howWeCalculate": "Jak to obliczamy",
+ "updatedCostPerMonth": "Zaktualizowany koszt na miesiąc",
+ "currentCostPerMonth": "Bieżący koszt na miesiąc",
+ "perRu": "/RU",
+ "perHour": "/godz.",
+ "perDay": "/dzień",
+ "perMonth": "/miesiąc"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "System określi początkową maksymalną wartość autoskalowania RU/s na podstawie bieżących ustawień ręcznej przepływności i pojemności magazynu zasobu. Po włączeniu autoskalowania można zmienić maksymalną liczbę jednostek RU/s.",
+ "ttlWarningText": "System automatycznie usunie elementy na podstawie podanej wartości TTL (w sekundach), bez konieczności wykonywania operacji usuwania przez aplikację kliencką. Aby uzyskać więcej informacji, zobacz",
+ "ttlWarningLinkText": "Czas wygaśnięcia (TTL) w usłudze Azure Cosmos DB",
+ "unsavedIndexingPolicy": "zasady indeksowania",
+ "unsavedDataMaskingPolicy": "zasady maskowania danych",
+ "unsavedComputedProperties": "obliczone właściwości",
+ "unsavedEditorWarningPrefix": "Nie zapisano najnowszych zmian wprowadzonych w",
+ "unsavedEditorWarningSuffix": ". Kliknij przycisk Zapisz, aby potwierdzić zmiany.",
+ "updateDelayedApplyWarning": "Zamierzasz zażądać zwiększenia przepływności ponad wstępnie przydzieloną pojemność. Wykonanie tej operacji zajmie trochę czasu.",
+ "scalingUpDelayMessage": "Skalowanie w górę potrwa 4–6 godzin, ponieważ przekracza to, co Azure Cosmos DB może obecnie obsłużyć natychmiast, biorąc pod uwagę liczbę partycji fizycznych. Możesz natychmiast zwiększyć przepustowość do {{instantMaximumThroughput}} lub kontynuować z tą wartością i poczekać na zakończenie skalowania w górę.",
+ "exceedPreAllocatedMessage": "Twoje żądanie zwiększenia przepływności przekracza wstępnie przydzieloną pojemność, co może potrwać dłużej niż oczekiwano. Masz do wyboru trzy opcje, aby kontynuować:",
+ "instantScaleOption": "Możesz natychmiast skalować w górę do {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Możesz asynchronicznie skalować w górę do dowolnej wartości w {{maximumThroughput}} RU/s w ciągu 4–6 godzin.",
+ "quotaMaxOption": "Bieżący limit przydziału wynosi {{maximumThroughput}} RU/s. Aby przekroczony został ten limit, musisz zażądać zwiększenia limitu przydziału, a zespół usługi Azure Cosmos DB przeprowadzi przegląd.",
+ "belowMinimumMessage": "Nie można obniżyć przepływności poniżej bieżącego minimum wynoszącego {{minimum}} RU/s. Aby uzyskać więcej informacji na temat tego limitu, zapoznaj się z naszą dokumentacją oferty usługi.",
+ "saveThroughputWarning": "Twoje rozliczenie zmieni się po aktualizacji ustawień przepływności. Przejrzyj zaktualizowane oszacowanie kosztów poniżej przed zapisaniem zmian",
+ "currentAutoscaleThroughput": "Bieżąca przepływność autoskalowania:",
+ "targetAutoscaleThroughput": "Docelowa przepływność autoskalowania:",
+ "currentManualThroughput": "Bieżąca przepływność ręczna:",
+ "targetManualThroughput": "Docelowa przepływność ręczna:",
+ "applyDelayedMessage": "Żądanie zwiększenia przepływności zostało pomyślnie przesłane. Ta operacja potrwa od 1 do 3 dni roboczych. Najnowszy status sprawdzisz w obszarze Powiadomienia.",
+ "databaseLabel": "Baza danych:",
+ "containerLabel": "Kontener:",
+ "applyShortDelayMessage": "Żądanie zwiększenia przepływności jest obecnie w toku. Wykonanie tej operacji zajmie trochę czasu.",
+ "applyLongDelayMessage": "Żądanie zwiększenia przepływności jest obecnie w toku. Ta operacja potrwa od 1 do 3 dni roboczych. Najnowszy status sprawdzisz w obszarze Powiadomienia.",
+ "throughputCapError": "Twoje konto jest obecnie skonfigurowane z całkowitym limitem przepływności wynoszącym {{throughputCap}} RU/s. Ta aktualizacja nie jest możliwa, ponieważ zwiększyłaby całkowitą przepływność do {{newTotalThroughput}} RU/s. Zmień całkowity limit przepływności w zarządzaniu kosztami.",
+ "throughputIncrementError": "Wartość przepływności musi być w przyrostach 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Ostatnie zapisy wins (domyślnie)",
+ "customMergeProcedure": "Procedura scalania (niestandardowa)",
+ "mode": "Tryb",
+ "conflictResolverProperty": "Właściwość rozwiązywania konfliktów",
+ "storedProcedure": "Procedura składowana",
+ "lwwTooltip": "Pobiera lub ustawia nazwę właściwości typu całkowitego w dokumentach, która jest używana w schemacie rozwiązywania konfliktów opartym na zasadzie ostatniego zapisu (LWW). Domyślnie system używa systemowej właściwości sygnatury czasowej _ts, aby wybrać zwycięzcę spośród konfliktujących się wersji dokumentu. Wskaż własną właściwość całkowitą, jeśli chcesz zastąpić domyślne rozwiązywanie konfliktów oparte na sygnaturze czasowej.",
+ "customTooltip": "Pobiera lub ustawia nazwę procedury składowanej (zwanej też procedurą scalania) do rozwiązywania konfliktów. Możesz napisać logikę zdefiniowaną przez aplikację, aby określić zwycięzcę wersji dokumentu powodujących konflikt. Procedura składowana zostanie wykonana transakcyjnie, dokładnie raz, po stronie serwera. Jeśli nie podasz procedury składowanej, konflikty zostaną umieszczone w",
+ "customTooltipConflictsFeed": " kanał informacyjny konfliktów",
+ "customTooltipSuffix": ". Procedurę składowaną można zaktualizować lub ponownie zarejestrować w dowolnym momencie."
+ },
+ "changeFeed": {
+ "label": "Zasady przechowywania dziennika zestawienia zmian",
+ "tooltip": "Włącz domyślne zasady przechowywania dziennika zestawienia zmian, aby zachować historię z ostatnich 10 minut dla elementów w kontenerze. W związku z tym opłata za jednostkę żądania (RU) dla tego kontenera zostanie podwojona dla operacji zapisu. Odczyty pozostają bez zmian."
+ },
+ "mongoIndexing": {
+ "disclaimer": "W przypadku zapytań filtrujących po wielu właściwościach utwórz wiele indeksów pojedynczych pól zamiast indeksu złożonego.",
+ "disclaimerCompoundIndexesLink": " Indeksy złożone ",
+ "disclaimerSuffix": "są używane tylko do sortowania wyników zapytania. Jeśli musisz dodać indeks złożony, możesz go utworzyć przy użyciu powłoki Mongo.",
+ "compoundNotSupported": "Kolekcje z indeksami złożonymi nie są jeszcze obsługiwane w edytorze indeksowania. Aby zmodyfikować zasady indeksowania dla tej kolekcji, użyj powłoki Mongo.",
+ "aadError": "Aby użyć edytora zasad indeksowania, zaloguj się do",
+ "aadErrorLink": "azure portal.",
+ "refreshingProgress": "Odświeżanie postępu przekształcania indeksu",
+ "canMakeMoreChangesZero": "Możesz wprowadzić więcej zmian indeksowania po zakończeniu bieżącej transformacji indeksu. ",
+ "refreshToCheck": "Odśwież, aby sprawdzić, czy została ukończona.",
+ "canMakeMoreChangesProgress": "Możesz wprowadzić więcej zmian indeksowania po zakończeniu bieżącej transformacji indeksu. Ukończono {{progress}}%. ",
+ "refreshToCheckProgress": "Odśwież, aby sprawdzić postęp.",
+ "definitionColumn": "Definicja",
+ "typeColumn": "Typ",
+ "dropIndexColumn": "Usuń indeks",
+ "addIndexBackColumn": "Dodaj indeks z powrotem",
+ "deleteIndexButton": "Przycisk Usuń indeks",
+ "addBackIndexButton": "Przycisk Dodaj indeks wstecz",
+ "currentIndexes": "Bieżące indeksy",
+ "indexesToBeDropped": "Indeksy do usunięcia",
+ "indexFieldName": "Nazwa pola indeksu",
+ "indexType": "Typ indeksu",
+ "selectIndexType": "Wybierz typ indeksu",
+ "undoButton": "Przycisk cofnij"
+ },
+ "subSettings": {
+ "timeToLive": "Czas wygaśnięcia",
+ "ttlOff": "Wyłączone",
+ "ttlOnNoDefault": "Włączony (brak wartości domyślnej)",
+ "ttlOn": "Włączony",
+ "seconds": "sek.",
+ "timeToLiveInSeconds": "Czas wygaśnięcia w sekundach",
+ "analyticalStorageTtl": "Czas wygaśnięcia magazynu analitycznego",
+ "geospatialConfiguration": "Konfiguracja geoprzestrzenna",
+ "geography": "Geografia",
+ "geometry": "Geometria",
+ "uniqueKeys": "Unikatowe klucze",
+ "mongoTtlMessage": "Aby włączyć czas wygaśnięcia (TTL) dla kolekcji/dokumentów,",
+ "mongoTtlLinkText": "tworzenie indeksu czasu wygaśnięcia",
+ "partitionKeyTooltipTemplate": "{{partitionKeyName}} służy do dystrybucji danych między wieloma partycjami w celu skalowalności. Wartość „{{partitionKeyValue}}” określa sposób partycjonowania dokumentów.",
+ "largePartitionKeyEnabled": "Włączono duży {{partitionKeyName}}.",
+ "hierarchicalPartitioned": "Hierarchicznie partycjonowany kontener.",
+ "nonHierarchicalPartitioned": "Nie hierarchicznie partycjonowany kontener."
+ },
+ "scale": {
+ "freeTierInfo": "W warstwie Bezpłatna otrzymasz pierwsze {{ru}} RU/s i {{storage}} GB przestrzeni dyskowej na tym koncie za darmo. Aby konto pozostało bezpłatne, utrzymuj łączną liczbę jednostek RU/s we wszystkich zasobach na koncie na poziomie {{ru}} RU/s.",
+ "freeTierLearnMore": "Dowiedz się więcej.",
+ "throughputRuS": "Przepływność (RU na sekundę)",
+ "autoScaleCustomSettings": "Twoje konto ma niestandardowe ustawienia, które uniemożliwiają ustawienie przepływności na poziomie kontenera. Skontaktuj się z zespołem inżynierów Azure Cosmos DB, aby wprowadzić zmiany.",
+ "keyspaceSharedThroughput": "Ta współużytkowana przepływność tabeli jest skonfigurowana w przestrzeni kluczy",
+ "throughputRangeLabel": "Przepływność ({{min}} — {{max}} RU/s)",
+ "unlimited": "bez ograniczeń"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Zmień element {{partitionKeyName}}",
+ "currentPartitionKey": "Bieżący {{partitionKeyName}}",
+ "partitioning": "Partycjonowanie",
+ "hierarchical": "Hierarchiczne",
+ "nonHierarchical": "Nie hierarchiczne",
+ "safeguardWarning": "Aby chronić integralność danych kopiowanych do nowego kontenera, upewnij się, że przez cały czas trwania procesu zmiany klucza partycji nie są dokonywane żadne aktualizacje kontenera źródłowego.",
+ "changeDescription": "Aby zmienić klucz partycji, należy utworzyć nowy kontener docelowy lub wybrać istniejący kontener docelowy. Dane zostaną następnie skopiowane do kontenera docelowego.",
+ "changeButton": "Zmień",
+ "changeJob": "{{partitionKeyName}} zmień zadanie",
+ "cancelButton": "Anuluj",
+ "documentsProcessed": "({{processedCount}} z {{totalCount}} przetworzonych dokumentów)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Właściwości obliczane",
+ "learnMorePrefix": "o sposobie definiowania obliczonych właściwości i sposobie ich używania."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Zasady indeksowania"
+ },
+ "dataMasking": {
+ "ariaLabel": "Zasady maskowania danych",
+ "validationFailed": "Weryfikacja nie powiodła się:",
+ "includedPathsRequired": "element includedPaths jest wymagany",
+ "includedPathsMustBeArray": "element includedPaths musi być tablicą",
+ "excludedPathsMustBeArray": "excludedPaths musi być tablicą, jeśli została podana"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Zasady wektorowe",
+ "fullTextPolicy": "Zasady pełnotekstowe",
+ "createFullTextPolicy": "Tworzenie nowych zasad wyszukiwania pełnotekstowych"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Dla tego kontenera zdefiniowano następujące indeksy.",
+ "learnMoreSuffix": "o sposobie definiowania globalnych indeksów pomocniczych i sposobie ich używania.",
+ "jsonAriaLabel": "Kod JSON globalnego indeksu pomocniczego",
+ "addIndex": "Dodaj indeks",
+ "settingsTitle": "Globalne ustawienia indeksu pomocniczego",
+ "sourceContainer": "Kontener źródłowy",
+ "indexDefinition": "Definicja globalnego indeksu pomocniczego"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Odświeżanie postępu przekształcania indeksu nie powiodło się"
+ },
+ "throughputInput": {
+ "autoscale": "Autoskalowanie",
+ "manual": "Ręczny",
+ "minimumRuS": "Minimalna wartość RU/s",
+ "maximumRuS": "Maksymalna wartość RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Pojemność magazynu",
+ "fixed": "Stały",
+ "unlimited": "Bez ograniczeń",
+ "instant": "Natychmiastowe",
+ "fourToSixHrs": "4–6 godz.",
+ "autoscaleDescription": "Na podstawie użycia Twoja {{resourceType}} przepustowość będzie skalowana od",
+ "freeTierWarning": "Rozliczenia zostaną naliczone, jeśli przydzielisz więcej niż {{ru}} RU/s ręcznej przepływności lub jeśli zasób będzie skalowany powyżej {{ru}} RU/s za pomocą autoskalowania.",
+ "capacityCalculator": "Oszacuj wymagane jednostki RU/s za pomocą",
+ "capacityCalculatorLink": " kalkulator pojemności",
+ "fixedStorageNote": "W przypadku korzystania z kolekcji ze stałą pojemnością magazynu można skonfigurować do 10 000 RU/s.",
+ "min": "min",
+ "max": "maksymalnie"
+ },
+ "throughputBuckets": {
+ "label": "Zasobniki przepływności",
+ "bucketLabel": "Zasobnik {{id}}",
+ "dataExplorerQueryBucket": " (Przedział zapytań Eksploratora danych)",
+ "active": "Aktywne",
+ "inactive": "Nieaktywne"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/pt-BR/Resources.json b/src/Localization/pt-BR/Resources.json
new file mode 100644
index 000000000..e2ccf7fc5
--- /dev/null
+++ b/src/Localization/pt-BR/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Cancelar",
+ "close": "Fechar",
+ "save": "Salvar",
+ "delete": "Excluir",
+ "update": "Atualizar",
+ "discard": "Descartar",
+ "execute": "Executar",
+ "loading": "Carregando",
+ "loadingEllipsis": "Carregando...",
+ "next": "Avançar",
+ "previous": "Anterior",
+ "yes": "Sim",
+ "no": "Não",
+ "result": "Resultado",
+ "learnMore": "Saiba mais",
+ "getStarted": "Introdução",
+ "retry": "Repetir",
+ "apply": "Aplicar",
+ "refresh": "Atualizar",
+ "copy": "Copiar",
+ "create": "Criar",
+ "confirm": "Confirmar",
+ "open": "Aberto",
+ "rename": "Renomear",
+ "download": "Baixar",
+ "upload": "Carregar",
+ "connect": "Conectar",
+ "remove": "Remover",
+ "load": "Carregar",
+ "publish": "Publicar",
+ "browse": "Procurar",
+ "increaseValueBy1": "Aumentar o valor em 1",
+ "decreaseValueBy1": "Diminuir valor em 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Bem-vindo ao Azure Cosmos DB",
+ "postgres": "Bem-vindo ao Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Bem-vindo ao Azure DocumentDB (com compatibilidade com MongoDB)"
+ },
+ "subtitle": {
+ "default": "Serviço de multimodelo de banco de dados globalmente distribuído para qualquer escala",
+ "getStarted": "Comece com nossos conjuntos de dados de exemplo, documentação e ferramentas adicionais."
+ },
+ "quickStart": {
+ "title": "Iniciar o início rápido",
+ "description": "Iniciar um tutorial de início rápido para começar a usar os dados de exemplo"
+ },
+ "newCollection": {
+ "title": "Novo {{collectionName}}",
+ "description": "Crie um novo contêiner para armazenamento e taxa de transferência"
+ },
+ "samplesGallery": {
+ "title": "Galeria de exemplos do Azure Cosmos DB",
+ "description": "Descubra exemplos que demonstram padrões de aplicativos inteligentes e escalonáveis. Experimente um agora para ver a rapidez com que você pode passar do conceito para o código com o Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Conectar",
+ "description": "Prefere usar suas próprias ferramentas? Localize a cadeia de conexão que você precisa para conectar",
+ "pgAdmin": {
+ "title": "Conectar com o pgAdmin",
+ "description": "Prefere pgAdmin? Encontre suas cadeias de conexão aqui"
+ },
+ "vsCode": {
+ "title": "Conectar-se com o VS Code",
+ "description": "Consultar e gerenciar seus clusters do MongoDB e do DocumentDB no Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Shell do PostgreSQL",
+ "description": "Criar tabela e interagir com dados usando a interface de shell do PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "Criar uma coleção e interagir com os dados usando a interface de shell do MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Novo no Cosmos DB PGSQL?",
+ "body": "Bem-vindo(a)! Se você é novo no Cosmos DB PGSQL e precisa de ajuda para começar, aqui é onde você pode encontrar dados de exemplo e consultas."
+ },
+ "resetPassword": {
+ "headline": "Criar a sua senha",
+ "body": "Se você ainda não alterou sua senha, altere-a agora."
+ },
+ "coachMark": {
+ "headline": "Comece com o exemplo {{collectionName}}",
+ "body": "Você será guiado a criar um contêiner de exemplo com dados de exemplo e, em seguida, faremos um tour pelo Data Explorer. Você também pode cancelar o tour e explorar por conta própria"
+ }
+ },
+ "sections": {
+ "recents": "Recentes",
+ "clearRecents": "Limpar Recentes",
+ "top3": "As três principais coisas que você precisa saber",
+ "learningResources": "Recursos de aprendizado",
+ "nextSteps": "Próximas etapas",
+ "tipsAndLearnMore": "Dicas e saiba mais",
+ "notebook": "Notebook",
+ "needHelp": "Precisa de ajuda?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Padrões avançados de modelagem",
+ "description": "Aprenda estratégias avançadas para otimizar seu banco de dados."
+ },
+ "partitioning": {
+ "title": "Melhores práticas de particionamento",
+ "description": "Aprenda a aplicar estratégias de particionamento e modelo de dados."
+ },
+ "resourcePlanning": {
+ "title": "Planejar seus requisitos de recursos",
+ "description": "Conheça as diferentes opções de configuração."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "O que é a API do MongoDB?",
+ "description": "Entenda o Azure Cosmos DB for MongoDB e seus recursos."
+ },
+ "features": {
+ "title": "Recursos e sintaxe",
+ "description": "Descubra as vantagens e os recursos"
+ },
+ "migrate": {
+ "title": "Migrar seus dados",
+ "description": "Etapas de pré-migração para mover dados"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Criar um aplicativo Java",
+ "description": "Crie um aplicativo Java usando um SDK."
+ },
+ "partitioning": {
+ "title": "Melhores práticas de particionamento",
+ "description": "Saiba como funciona o particionamento."
+ },
+ "requestUnits": {
+ "title": "RUs (Unidades de Solicitação)",
+ "description": "Entenda os encargos de RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modelagem de Dados",
+ "description": "Recomendações de modelagem de dados do Graph"
+ },
+ "partitioning": {
+ "title": "Melhores práticas de particionamento",
+ "description": "Saiba como funciona o particionamento"
+ },
+ "queryData": {
+ "title": "Consultar dados",
+ "description": "Consultando dados com Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Qual é o API de Tabela?",
+ "description": "Entenda o Azure Cosmos DB for Table e seus recursos"
+ },
+ "migrate": {
+ "title": "Migrar seus dados",
+ "description": "Saiba como migrar seus dados"
+ },
+ "faq": {
+ "title": "Perguntas frequentes do Azure Cosmos DB for Table",
+ "description": "Perguntas comuns sobre o Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Atalhos de teclado do Data Explorer",
+ "description": "Aprenda atalhos de teclado para navegar no Data Explorer."
+ },
+ "liveTv": {
+ "title": "Aprender os Conceitos Básicos",
+ "description": "Assista aos vídeos introdutórios e tutoriais do programa de TV ao vivo do Azure Cosmos DB."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Introdução ao uso de um SDK",
+ "description": "Saiba mais sobre o SDK do Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Migrar seus dados",
+ "description": "Migre dados usando serviços do Azure e soluções de código aberto."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Criar um aplicativo com Node.js",
+ "description": "Crie um aplicativo Node.js."
+ },
+ "gettingStarted": {
+ "title": "Guia de Introdução",
+ "description": "Aprenda as noções básicas para começar."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Criar um Contêiner",
+ "description": "Conheça as opções de criação de um contêiner."
+ },
+ "throughput": {
+ "title": "Provisionar Taxa de Transferência",
+ "description": "Saiba como configurar a taxa de transferência."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Introdução ",
+ "description": "Crie, consulte e navegue usando o console do Gremlin"
+ },
+ "importData": {
+ "title": "Importar Dados do Graph",
+ "description": "Aprenda sobre ingestão em massa usando o BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Criar um aplicativo .NET",
+ "description": "Como acessar o Azure Cosmos DB for Table a partir de um aplicativo .NET."
+ },
+ "java": {
+ "title": "Criar um aplicativo Java",
+ "description": "Crie um aplicativo Azure Cosmos DB for Table com o SDK Java "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modelagem de Dados",
+ "distributionColumn": "Como escolher uma Coluna de Distribuição",
+ "buildApps": "Criar aplicativos com Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrar Dados",
+ "vectorSearch": "Crie aplicativos de IA com Busca em vetores",
+ "buildApps": "Criar aplicativos com Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Ajuste de Desempenho",
+ "diagnosticQueries": "Consultas úteis para diagnóstico",
+ "sqlReference": "Referência de SQL distribuído"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Busca em Vetores",
+ "textIndexing": "Indexação de Texto",
+ "troubleshoot": "Solucionar problemas comuns"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Criar seu banco de dados",
+ "useTitle": "Usar seu banco de dados",
+ "newContainer": {
+ "title": "Novo contêiner",
+ "description": "Criar um contêiner de destino para armazenar seus dados"
+ },
+ "sampleData": {
+ "title": "Dados de Exemplo",
+ "description": "Carregar dados de exemplo em seu banco de dados"
+ },
+ "sampleVectorData": {
+ "title": "Dados vetoriais de exemplo",
+ "description": "Carregar dados vetoriais de exemplo com text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Desenvolvimento de aplicativos",
+ "description": "Comece aqui para usar um SDK para criar seus aplicativos"
+ },
+ "sampleGallery": {
+ "title": "Galeria de exemplos",
+ "description": "Obtenha exemplos completos do mundo real"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Dados de Exemplo",
+ "startButton": "Iniciar",
+ "createPrompt": "Crie um contêiner \"{{containerName}}\" e importe dados de exemplo para ele. Isso pode levar alguns minutos.",
+ "creatingContainer": "Criando contêiner \"{{containerName}}\"...",
+ "importingData": "Importando dados para \"{{containerName}}\"...",
+ "success": "\"{{containerName}}\" criado com sucesso com dados de exemplo.",
+ "errorContainerExists": "O contêiner \"{{containerName}}\" no banco de dados \"{{databaseName}}\" já existe. Exclua-o e tente novamente.",
+ "errorCreateContainer": "Falha ao criar o contêiner: {{error}}",
+ "errorImportData": "Falha ao importar dados: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Novo {{containerName}}",
+ "restoreContainer": "Restaurar {{containerName}}",
+ "deleteDatabase": "Excluir {{databaseName}}",
+ "deleteContainer": "Excluir {{containerName}}",
+ "newSqlQuery": "Nova Consulta SQL",
+ "newQuery": "Nova Consulta",
+ "openMongoShell": "Abrir o Shell Mongo",
+ "newShell": "Novo Shell",
+ "openCassandraShell": "Abrir o Shell Cassandra",
+ "newStoredProcedure": "Novo Procedimento Armazenado",
+ "newUdf": "Nova UDF",
+ "newTrigger": "Novo Gatilho",
+ "deleteStoredProcedure": "Excluir Procedimento Armazenado",
+ "deleteTrigger": "Excluir Gatilho",
+ "deleteUdf": "Excluir Função Definida pelo Usuário"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Novo Item",
+ "newDocument": "Novo Documento",
+ "uploadItem": "Carregar Item",
+ "applyFilter": "Aplicar Filtro",
+ "unsavedChanges": "Alterações não salvas",
+ "unsavedChangesMessage": "As alterações não salvas serão perdidas. Deseja continuar?",
+ "createDocumentFailed": "Falha ao criar documento",
+ "updateDocumentFailed": "Falha ao atualizar documento",
+ "documentDeleted": "Documento excluído com sucesso.",
+ "deleteDocumentDialogTitle": "Excluir documento",
+ "deleteDocumentsDialogTitle": "Excluir documentos",
+ "throttlingError": "Alguns documentos não foram excluídos devido a um erro de limitação de fluxo. Tente novamente mais tarde. Para evitar isso no futuro, considere aumentar a taxa de transferência em seu contêiner ou banco de dados.",
+ "deleteFailed": "Falha ao excluir documento(s) ({{error}})",
+ "missingShardProperty": "O documento não tem a propriedade de fragmento: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Falha ao atualizar a grade de documentos",
+ "confirmDelete": "Tem certeza de que deseja excluir {{documentName}}?",
+ "confirmDeleteTitle": "Confirmar exclusão",
+ "selectedItems": "os {{count}} itens selecionados",
+ "selectedItem": "o item selecionado",
+ "selectedDocuments": "os {{count}} documentos selecionados",
+ "selectedDocument": "o documento selecionado",
+ "deleteDocumentFailedLog": "Falha ao excluir documento {{documentId}} com código de status {{statusCode}}",
+ "deleteSuccessLog": "{{count}} documento(s) excluído(s) com sucesso",
+ "deleteThrottledLog": "Falha ao excluir {{count}} documento(s) devido ao erro \"Solicitação muito grande\" (429). Tentando novamente...",
+ "missingShardKeyLog": "Falha ao salvar novo documento: chave de fragmento do documento não definida",
+ "filterTooltip": "Digite um predicado de consulta ou escolha um na lista.",
+ "loadMore": "Carregar mais",
+ "documentEditor": "Editor de documentos",
+ "savedFilters": "Filtros salvos",
+ "defaultFilters": "Filtros padrão",
+ "abort": "Anular",
+ "deletingDocuments": "Excluindo {{count}} documento(s)",
+ "deletedDocumentsSuccess": "{{count}} documento(s) excluído(s) com sucesso.",
+ "deleteAborted": "A exclusão de documentos foi anulada.",
+ "failedToDeleteDocuments": "Falha ao excluir {{count}} documento(s).",
+ "requestTooLargeBase": "Algumas solicitações de exclusão falharam devido a uma exceção \"Solicitação muito grande\" (429)",
+ "retriedSuccessfully": "mas foram repetidas com sucesso.",
+ "retryingNow": "Tentando novamente agora.",
+ "increaseThroughputTip": "Para evitar isso no futuro, considere aumentar a taxa de transferência em seu contêiner ou banco de dados.",
+ "numberOfSelectedDocuments": "Número de documentos selecionados: {{count}}",
+ "mongoFilterPlaceholder": "Digite um predicado de consulta (por exemplo, {\"id\":\"foo\"}) ou escolha um na lista suspensa ou deixe em branco para consultar todos os documentos.",
+ "sqlFilterPlaceholder": "Digite um predicado de consulta (por exemplo, WHERE c.id=\"1\"), ou escolha um na lista suspensa ou deixe em branco para consultar todos os documentos.",
+ "error": "Erro",
+ "warning": "Aviso"
+ },
+ "query": {
+ "executeQuery": "Executar Consulta",
+ "executeSelection": "Executar Seleção",
+ "saveQuery": "Salvar Consulta",
+ "downloadQuery": "Baixar Consulta",
+ "cancelQuery": "Cancelar consulta",
+ "openSavedQueries": "Abrir Consultas Salvas",
+ "vertical": "Vertical",
+ "horizontal": "Horizontal",
+ "view": "Exibir",
+ "editingQuery": "Editando a Consulta"
+ },
+ "storedProcedure": {
+ "id": "ID do Procedimento Armazenado",
+ "idPlaceholder": "Insira a nova ID de procedimento armazenado",
+ "idAriaLabel": "ID do procedimento armazenado",
+ "body": "Corpo do Procedimento Armazenado",
+ "bodyAriaLabel": "Corpo do procedimento armazenado",
+ "successfulExecution": "Execução bem-sucedida do procedimento armazenado",
+ "resultAriaLabel": "Executar resultado do procedimento armazenado",
+ "logsAriaLabel": "Executar logs de procedimento armazenado",
+ "errors": "Erros:",
+ "errorDetailsAriaLabel": "Link de detalhes do erro",
+ "moreDetails": "Mais detalhes",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID do Gatilho",
+ "idPlaceholder": "Insira a nova ID de gatilho",
+ "type": "Tipo do Disparador",
+ "operation": "Disparar Operação",
+ "body": "Corpo do Gatilho",
+ "bodyAriaLabel": "Corpo do gatilho",
+ "pre": "Pré",
+ "post": "Postar",
+ "all": "Tudo",
+ "operationCreate": "Criar",
+ "operationDelete": "Excluir",
+ "operationReplace": "Substituir"
+ },
+ "udf": {
+ "id": "ID da Função Definida pelo Usuário",
+ "idPlaceholder": "Insira a nova ID de função definida pelo usuário",
+ "body": "Corpo da Função Definida pelo Usuário",
+ "bodyAriaLabel": "Corpo da função definida pelo usuário"
+ },
+ "conflicts": {
+ "unsavedChanges": "Alterações não salvas",
+ "changesWillBeLost": "As alterações serão perdidas. Deseja continuar?",
+ "resolveConflictFailed": "Falha ao resolver conflito",
+ "deleteConflictFailed": "Falha ao excluir conflito",
+ "refreshGridFailed": "Falha ao atualizar a grade de documentos"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Qual é o motivo pelo qual você está excluindo esse {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Excluir {{collectionName}}",
+ "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!",
+ "feedbackReason": "Qual é o motivo pelo qual você está excluindo esse {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Banco de dados {{suffix}}",
+ "databaseIdLabel": "ID do banco de dados",
+ "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"
+ },
+ "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",
+ "collectionIdAriaLabel": "ID de {{collectionName}}, {{collectionName}}1 de Exemplo",
+ "existingDatabaseAriaLabel": "Escolha a ID {{databaseName}} existente",
+ "existingDatabasePlaceholder": "Escolha a ID {{databaseName}} existente",
+ "indexing": "Indexação",
+ "turnOnIndexing": "Ativar indexação",
+ "automatic": "Automático",
+ "turnOffIndexing": "Desativar indexação",
+ "off": "Desativado",
+ "sharding": "Fragmentação",
+ "shardingTooltip": "As coleções fragmentadas dividem seus dados em vários conjuntos de réplicas (fragmentos) para obter escalabilidade ilimitada. As coleções fragmentadas exigem a escolha de uma chave de fragmento (campo) para distribuir uniformemente seus dados.",
+ "unsharded": "Não fragmentado",
+ "unshardedLabel": "Não fragmentado (limite de 20 GB)",
+ "sharded": "Fragmentado",
+ "addPartitionKey": "Adicionar chave de partição hierárquica",
+ "hierarchicalPartitionKeyInfo": "Esse recurso permite particionar seus dados com até três níveis de chaves para uma melhor distribuição de dados. Requer o .NET V3, o SDK do Java V4 ou a versão prévia do SDK do JavaScript V3.",
+ "provisionDedicatedThroughput": "Provisionar taxa de transferência dedicada para esse {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Opcionalmente, você pode provisionar a taxa de transferência dedicada para um {{collectionName}} dentro de um banco de dados que tenha a taxa de transferência provisionada. Essa quantidade dedicada de taxa de transferência não será compartilhada com outros {{collectionNamePlural}} no banco de dados e não será contabilizada na taxa de transferência que você provisionou para o banco de dados. Esse valor de taxa de transferência será cobrado além do valor da taxa de transferência provisionado no nível do banco de dados.",
+ "uniqueKeysPlaceholderMongo": "Caminhos separados por vírgula, por exemplo, firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Caminhos separados por vírgula, por exemplo, /firstName,/address/zipCode",
+ "addUniqueKey": "Adicionar chave exclusiva",
+ "enableAnalyticalStore": "Habilitar repositório analítico",
+ "disableAnalyticalStore": "Desabilitar repositório analítico",
+ "on": "Ativado",
+ "analyticalStoreSynapseLinkRequired": "O Link do Azure Synapse é necessário para criar um {{collectionName}} de repositório analítico. Habilite Link do Synapse para essa conta do Cosmos DB.",
+ "enable": "Habilitar",
+ "containerVectorPolicy": "Política de Vetor de Contêiner",
+ "containerFullTextSearchPolicy": "Política de Pesquisa de Texto Completo do Contêiner",
+ "advanced": "Avançado",
+ "mongoIndexingTooltip": "O campo _id é indexado por padrão. A criação de um índice curinga para todos os campos otimizará as consultas e é recomendada para desenvolvimento.",
+ "createWildcardIndex": "Criar um Índice Curinga em todos os campos",
+ "legacySdkCheckbox": "Meu aplicativo usa uma versão mais antiga do SDK do Cosmos .NET ou Java (.NET V1 ou Java V2)",
+ "legacySdkInfo": "Para garantir compatibilidade com SDKs mais antigos, o contêiner criado usará um esquema de particionamento herdado que oferece suporte a valores de chave de partição com tamanho de até 101 bytes. Se isso estiver habilitado, você não poderá usar chaves de partição hierárquicas.",
+ "indexingOnInfo": "Todas as propriedades em seus documentos serão indexadas por padrão para consultas flexíveis e eficientes.",
+ "indexingOffInfo": "A indexação será desativada. Recomendado se você não precisa executar consultas ou tem apenas operações de valor de chave.",
+ "indexingOffWarning": "Ao criar esse contêiner com a indexação desativada, você não poderá fazer alterações na política de indexação. As alterações de indexação só são permitidas em um contêiner com uma política de indexação.",
+ "acknowledgeSpendErrorMonthly": "Confirme os gastos mensais estimados.",
+ "acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados.",
+ "unshardedMaxRuError": "Coleções não fragmentadas dão suporte a até 10.000 RUs",
+ "acknowledgeShareThroughputError": "Confirme o custo estimado dessa taxa de transferência dedicada.",
+ "vectorPolicyError": "Corrija erros na política do vetor de contêiner",
+ "fullTextSearchPolicyError": "Corrija erros na política de pesquisa de texto completo do contêiner",
+ "addingSampleDataSet": "Adicionando conjunto de dados de exemplo",
+ "databaseFieldLabelName": "Nome do banco de dados",
+ "databaseFieldLabelId": "ID do banco de dados",
+ "newDatabaseIdPlaceholder": "Digite uma nova ID de banco de dados",
+ "newDatabaseIdAriaLabel": "Nova ID do banco de dados, Digite uma nova ID de banco de dados",
+ "createNewDatabaseAriaLabel": "Criar novo banco de dados",
+ "useExistingDatabaseAriaLabel": "Usar banco de dados existente",
+ "chooseExistingDatabase": "Escolha um banco de dados existente",
+ "teachingBubble": {
+ "step1Headline": "Criar banco de dados de exemplo",
+ "step1Body": "O banco de dados é o pai de um contêiner. Você pode criar um novo banco de dados ou usar um existente. Neste tutorial, estamos criando um novo banco de dados chamado SampleDB.",
+ "step1LearnMore": "Saiba mais sobre os recursos.",
+ "step2Headline": "Definindo taxa de transferência",
+ "step2Body": "O Cosmos DB recomenda o compartilhamento da taxa de transferência entre o banco de dados. O dimensionamento automático fornecerá uma quantidade flexível de taxa de transferência com base no conjunto máximo de RU/s (Unidades de Solicitação).",
+ "step2LearnMore": "Saiba mais sobre RU/s.",
+ "step3Headline": "Nomeando o contêiner",
+ "step3Body": "Nomear seu contêiner",
+ "step4Headline": "Definindo chave de partição",
+ "step4Body": "Última etapa – você precisará definir uma chave de partição para sua coleção. /address foi escolhido para este exemplo específico. Uma boa chave de partição deve ter uma ampla variedade de valores possíveis",
+ "step4CreateContainer": "Criar contêiner",
+ "step5Headline": "Criando contêiner de exemplo",
+ "step5Body": "Um contêiner de exemplo está sendo criado e estamos adicionando dados de exemplo para você. Deve levar cerca de 1 minuto.",
+ "step5BodyFollowUp": "Depois que o contêiner de exemplo for criado, revise seu conjunto de dados de exemplo e siga as próximas etapas",
+ "stepOfTotal": "Etapa {{current}} de {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "A chave de fragmento (campo) é usada para dividir seus dados em vários conjuntos de réplicas (fragmentos) para obter escalabilidade ilimitada. É fundamental escolher um campo que distribuirá uniformemente seus dados.",
+ "partitionKeyTooltip": "O {{partitionKeyName}} é usado para distribuir dados automaticamente entre partições para escalabilidade. Escolha uma propriedade no documento JSON que tenha uma ampla variedade de valores e distribua uniformemente o volume de solicitações.",
+ "partitionKeyTooltipSqlSuffix": " Para cargas de trabalho pequenas com muitas leituras ou cargas de trabalho de gravação de qualquer tamanho, a ID costuma ser uma boa escolha.",
+ "shardKeyLabel": "Fragmentar a chave",
+ "partitionKeyLabel": "Chave de partição",
+ "shardKeyPlaceholder": "Por exemplo, categoryId",
+ "partitionKeyPlaceholderDefault": "Por exemplo, /address",
+ "partitionKeyPlaceholderFirst": "Obrigatório – primeira chave de partição, por exemplo, /TenantId",
+ "partitionKeyPlaceholderSecond": "segunda chave de partição, por exemplo, /UserId",
+ "partitionKeyPlaceholderThird": "terceira chave de partição, por exemplo, /SessionId",
+ "partitionKeyPlaceholderGraph": "Por exemplo, /address/zipCode",
+ "uniqueKeysTooltip": "Chaves exclusivas fornecem aos desenvolvedores a capacidade de adicionar uma camada de integridade de dados ao banco de dados. Ao criar uma política de chave exclusiva quando um contêiner é criado, você garante a exclusividade de um ou mais valores por chave de partição.",
+ "uniqueKeysLabel": "Chaves exclusivas",
+ "analyticalStoreLabel": "Repositório Analítico",
+ "analyticalStoreTooltip": "Habilite o recurso de armazenamento analítico para realizar análises quase em tempo real sobre seus dados operacionais, sem impactar o desempenho das cargas de trabalho transacionais.",
+ "analyticalStoreDescription": "Habilite o recurso de armazenamento analítico para realizar análises quase em tempo real sobre seus dados operacionais, sem impactar o desempenho das cargas de trabalho transacionais.",
+ "vectorPolicyTooltip": "Descreva as propriedades em seus dados que contenham vetores, para que possam ser disponibilizadas para consultas de similaridade."
+ },
+ "settings": {
+ "pageOptions": "Opções de Página",
+ "pageOptionsDescription": "Escolha Personalizado para especificar uma quantidade fixa de resultados de consulta a serem mostrados ou escolha Ilimitado para mostrar quantos resultados de consulta por página.",
+ "queryResultsPerPage": "Resultados da consulta por página",
+ "queryResultsPerPageTooltip": "Insira o número de resultados da consulta que devem ser mostrados por página.",
+ "customQueryItemsPerPage": "Itens de consulta personalizados por página",
+ "custom": "Personalizado",
+ "unlimited": "Ilimitado",
+ "entraIdRbac": "Habilitar RBAC do Entra ID",
+ "entraIdRbacDescription": "Escolha Automático para habilitar o RBAC do Entra ID automaticamente. Verdadeiro/Falso para forçar a habilitação/desabilitação do RBAC do Entra ID.",
+ "true": "Verdadeiro",
+ "false": "Falso",
+ "regionSelection": "Seleção de Região",
+ "regionSelectionDescription": "Altera a região que o Cliente do Cosmos usa para acessar a conta.",
+ "selectRegion": "Selecionar Região",
+ "selectRegionTooltip": "Altera o ponto de extremidade da conta usado para executar operações do cliente.",
+ "globalDefault": "Global (Padrão)",
+ "readWrite": "(Leitura/Gravação)",
+ "read": "(Leitura)",
+ "queryTimeout": "Tempo Limite da Consulta",
+ "queryTimeoutDescription": "Quando uma consulta atingir o limite de tempo especificado, será exibido um pop-up com a opção de cancelar a consulta, a menos que o cancelamento automático tenha sido habilitado.",
+ "enableQueryTimeout": "Habilitar tempo limite de consulta",
+ "queryTimeoutMs": "Tempo limite da consulta (ms)",
+ "automaticallyCancelQuery": "Cancelar automaticamente a consulta após o tempo limite",
+ "ruLimit": "Limite de RU",
+ "ruLimitDescription": "Se uma consulta exceder um limite de RU configurado, a consulta será anulada.",
+ "enableRuLimit": "Habilitar limite de RU",
+ "ruLimitLabel": "Limite de RU (RU)",
+ "defaultQueryResults": "Visualização dos Resultados da Consulta Padrão",
+ "defaultQueryResultsDescription": "Selecione a exibição padrão a ser usada ao exibir os resultados da consulta.",
+ "retrySettings": "Configurações de Repetição",
+ "retrySettingsDescription": "Política de repetição associada a solicitações limitadas durante consultas do CosmosDB.",
+ "maxRetryAttempts": "Máximo de tentativas de repetição",
+ "maxRetryAttemptsTooltip": "Número máximo de tentativas a serem executadas para uma solicitação. Valor padrão 9.",
+ "fixedRetryInterval": "Intervalo de repetição fixo (ms)",
+ "fixedRetryIntervalTooltip": "Corrigido o intervalo de repetição em milissegundos para aguardar entre cada repetição ignorando o retryAfter retornado como parte da resposta. O valor padrão é 0 milissegundos.",
+ "maxWaitTime": "Tempo máximo de espera (s)",
+ "maxWaitTimeTooltip": "Tempo máximo de espera em segundos para aguardar uma solicitação enquanto as repetições estão ocorrendo. Valor padrão de 30 segundos.",
+ "enableContainerPagination": "Habilitar paginação de contêiner",
+ "enableContainerPaginationDescription": "Carregue 50 contêineres por vez. Atualmente, os contêineres não são extraídos em ordem alfanumérica.",
+ "enableCrossPartitionQuery": "Habilitar consulta entre partições",
+ "enableCrossPartitionQueryDescription": "Envie mais de uma solicitação ao executar uma consulta. Mais de uma solicitação será necessária se a consulta não tiver escopo para o valor de chave de partição única.",
+ "maxDegreeOfParallelism": "Grau máximo de paralelismo",
+ "maxDegreeOfParallelismDescription": "Obtém ou define o número de operações simultâneas executadas no lado do cliente durante a execução da consulta paralela. Um valor de propriedade positivo limita o número de operações simultâneas ao valor definido. Se for definido como menor que 0, o sistema decidirá automaticamente o número de operações simultâneas a serem executadas.",
+ "maxDegreeOfParallelismQuery": "Consulte até o grau máximo de paralelismo.",
+ "priorityLevel": "Nível de Prioridade",
+ "priorityLevelDescription": "Define o nível de prioridade para solicitações de plano de dados do Data Explorer ao usar a Execução Baseada em Prioridade. Se \"Nenhum\" for selecionado, o Data Explorer não especificará o nível de prioridade e o nível de prioridade padrão do lado do servidor será usado.",
+ "displayGremlinQueryResults": "Exibir resultados da consulta Gremlin como:",
+ "displayGremlinQueryResultsDescription": "Selecione o Graph para visualizar automaticamente os resultados da consulta como um Graph ou JSON para exibir os resultados como JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualização automática do Graph",
+ "enableSampleDatabase": "Habilitar banco de dados de exemplo",
+ "enableSampleDatabaseDescription": "Esse é um banco de dados e uma coleção de exemplo com dados sintéticos do produto que você pode usar para explorar usando consultas NoSQL. Isso aparecerá como outro banco de dados na interface do usuário do Data Explorer e será criado e mantido pela Microsoft sem nenhum custo para você.",
+ "enableSampleDbAriaLabel": "Habilitar banco de dados de exemplo para exploração de consulta",
+ "guidRepresentation": "Representação de GUID",
+ "guidRepresentationDescription": "GuidRepresentation no MongoDB refere-se a como GUIDs (Identificadores Global Exclusivos) são serializados e desserializados quando armazenados em documentos BSON. Isso se aplicará a todas as operações de documento.",
+ "advancedSettings": "Configurações Avançadas",
+ "ignorePartitionKey": "Ignorar chave de partição na atualização do documento",
+ "ignorePartitionKeyTooltip": "Se marcado, o valor da chave de partição não será usado para localizar o documento durante as operações de atualização. Use isso somente se as atualizações de documentos falharem devido a uma chave de partição anormal.",
+ "clearHistory": "Limpar Histórico",
+ "clearHistoryConfirm": "Tem certeza de que deseja continuar?",
+ "clearHistoryDescription": "Essa ação limpará todas as personalizações dessa conta nesse navegador, incluindo:",
+ "clearHistoryTabLayout": "Redefinir o layout da guia personalizada, incluindo as posições do divisor",
+ "clearHistoryTableColumns": "Apagar suas preferências de coluna de tabela, incluindo as colunas personalizadas",
+ "clearHistoryFilters": "Limpar o histórico de filtros",
+ "clearHistoryRegion": "Redefinir seleção de região para global",
+ "increaseValueBy1000": "Aumentar o valor em 1000",
+ "decreaseValueBy1000": "Diminuir valor em 1000",
+ "none": "Nenhum",
+ "low": "Baixo",
+ "high": "Alto",
+ "automatic": "Automático",
+ "enhancedQueryControl": "Controle de consulta aprimorado",
+ "enableQueryControl": "Habilitar controle de consulta",
+ "explorerVersion": "Versão do Explorer",
+ "accountId": "ID da Conta",
+ "sessionId": "ID da sessão",
+ "popupsDisabledError": "Não foi possível estabelecer autorização para essa conta, porque os pop-ups estão desabilitados no navegador.\nHabilite pop-ups para esse site e clique no botão \"Logon para Entrar ID\"",
+ "failedToAcquireTokenError": "Falha ao adquirir o token de autorização automaticamente. Clique no botão \"Logon para Entrar ID\" para habilitar as operações do RBAC do Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Salvar Consulta",
+ "setupCostMessage": "Por motivos de conformidade, salvamos consultas em um contêiner em sua conta do Azure Cosmos, em um banco de dados separado chamado \"{{databaseName}}\". Para continuar, precisamos criar um contêiner em sua conta, o custo adicional estimado é de US$ 0,77 por dia.",
+ "completeSetup": "Concluir a configuração",
+ "noQueryNameError": "Nenhum nome de consulta especificado",
+ "invalidQueryContentError": "Conteúdo de consulta inválido especificado",
+ "failedToSaveQueryError": "Falha ao salvar a consulta {{queryName}}",
+ "failedToSetupContainerError": "Falha ao configurar um contêiner para consultas salvas",
+ "accountNotSetupError": "Falha ao salvar consulta: conta não configurada para salvar consultas",
+ "name": "Nome"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nenhum arquivo especificado",
+ "failedToLoadQueryError": "Falha ao carregar a consulta",
+ "failedToLoadQueryFromFileError": "Falha ao carregar a consulta do arquivo {{fileName}}",
+ "selectFilesToOpen": "Selecionar um documento de consulta",
+ "browseFiles": "Procurar"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Inserir parâmetros de entrada (se houver)",
+ "key": "Chave",
+ "param": "Parâmetro",
+ "partitionKeyValue": "Valor da chave de partição",
+ "value": "Valor",
+ "addNewParam": "Adicionar Novo Parâmetro",
+ "addParam": "Adicionar parâmetro",
+ "deleteParam": "Excluir parâmetro",
+ "invalidParamError": "Parâmetro inválido especificado: {{invalidParam}}",
+ "invalidParamConsoleError": "Parâmetro inválido especificado: {{invalidParam}} não é um valor literal válido",
+ "stringType": "Cadeia de caracteres",
+ "customType": "Personalizado"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Nenhum arquivo foi especificado. Insira pelo menos um arquivo.",
+ "selectJsonFiles": "Selecionar Arquivos JSON",
+ "selectJsonFilesTooltip": "Selecione um ou mais arquivos JSON para carregar. Cada arquivo pode conter um único documento JSON ou uma matriz de documentos JSON. O tamanho combinado de todos os arquivos em uma operação de upload individual deve ser menor que 2 MB. Você pode executar várias operações de upload para conjuntos de dados maiores.",
+ "fileNameColumn": "NOME DO ARQUIVO",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} criado(s), {{numThrottled}} limitado(s), {{numFailed}} erro(s)",
+ "uploadedFiles": "Arquivos carregados"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Falha ao copiar {{name}} para {{destination}}",
+ "uploadFailedError": "Falha ao carregar {{name}}",
+ "location": "Localização",
+ "locationAriaLabel": "Localização",
+ "selectLocation": "Selecione um local do notebook para copiar",
+ "name": "Nome"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Falha ao publicar {{notebookName}} na galeria",
+ "publishDescription": "Quando publicado, esse notebook aparecerá na galeria pública de notebooks do Azure Cosmos DB. Verifique se você removeu os dados confidenciais ou a saída antes de publicar.",
+ "publishPrompt": "Deseja publicar e compartilhar \"{{name}}\" na galeria?",
+ "coverImage": "Imagem de capa",
+ "coverImageUrl": "URL da imagem de capa",
+ "name": "Nome",
+ "description": "Descrição",
+ "tags": "Rótulos",
+ "tagsPlaceholder": "Marca opcional 1, marca opcional 2",
+ "preview": "Visualizar",
+ "urlType": "URL",
+ "customImage": "Imagem Personalizada",
+ "takeScreenshot": "Capturar Tela",
+ "useFirstDisplayOutput": "Usar a Primeira Saída de Exibição",
+ "failedToCaptureOutput": "Falha ao capturar a primeira saída",
+ "outputDoesNotExist": "A saída não existe para nenhuma das células.",
+ "failedToConvertError": "Falha ao converter {{fileName}} no formato base64",
+ "failedToUploadError": "Falha ao carregar {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Falha ao iniciar o trabalho de transferência de dados",
+ "suboptimalPartitionKeyError": "Aviso: o sistema detectou que sua coleção pode estar usando uma chave de partição abaixo do ideal",
+ "description": "Ao alterar a chave de partição de um contêiner, você precisará criar um contêiner de destino com a chave de partição correta. Você também pode selecionar um contêiner de destino existente.",
+ "sourceContainerId": "ID de {{collectionName}} da origem",
+ "destinationContainerId": "ID do {{collectionName}} de destino",
+ "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",
+ "collectionIdAriaLabel": "ID de {{collectionName}}, {{collectionName}}1 de Exemplo",
+ "existingContainers": "Contêineres Existentes",
+ "partitionKeyWarning": "O contêiner de destino ainda não deve existir. O Data Explorer criará um novo contêiner de destino para você."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Nome do keyspace",
+ "keyspaceTooltip": "Selecione um keyspace existente ou insira uma nova ID do keyspace.",
+ "tableIdLabel": "Insira o comando CQL para criar a tabela.",
+ "enterTableId": "Inserir ID da tabela",
+ "tableSchemaAriaLabel": "Esquema da tabela",
+ "provisionDedicatedThroughput": "Provisionar taxa de transferência dedicada para essa tabela",
+ "provisionDedicatedThroughputTooltip": "Opcionalmente, você pode provisionar uma taxa de transferência dedicada para uma tabela dentro de um keyspace que tenha a taxa de transferência provisionada. Essa quantidade de taxa de transferência dedicada não será compartilhada com outras tabelas no keyspace e não contará para a taxa de transferência provisionada para o keyspace. Esse valor de taxa de transferência será cobrado além do valor da taxa de transferência provisionado no nível do keyspace."
+ },
+ "tables": {
+ "addProperty": "Adicionar Propriedade",
+ "addRow": "Adicionar Linha",
+ "addEntity": "Adicionar Entidade",
+ "back": "voltar",
+ "nullFieldsWarning": "Aviso: campos nulos não serão exibidos para edição.",
+ "propertyEmptyError": "A propriedade {{property}} não pode estar vazia. Insira um valor para {{property}}",
+ "whitespaceError": "{{property}} não pode ter espaço em branco. Insira um valor para {{property}} sem espaço em branco",
+ "propertyTypeEmptyError": "O tipo de propriedade não pode estar vazio. Selecione um tipo na lista suspensa para a propriedade {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Selecione as colunas que você deseja consultar.",
+ "availableColumns": "Colunas Disponíveis"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Selecione quais colunas exibir no modo de exibição de itens em seu contêiner.",
+ "searchFields": "Pesquisar campos",
+ "reset": "Redefinir",
+ "partitionKeySuffix": " (chave de partição)"
+ },
+ "newVertex": {
+ "addProperty": "Adicionar Propriedade"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "ID do contêiner de índice secundário global",
+ "globalSecondaryIndexIdPlaceholder": "Por exemplo, indexbyEmailId",
+ "projectionQuery": "Consulta de projeção",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Saiba mais sobre como definir índices secundários globais.",
+ "disabledTitle": "Um índice secundário global já está sendo criado. Aguarde até que ele seja concluído antes de criar outro."
+ },
+ "stringInput": {
+ "inputMismatchError": "A entrada {{input}} não corresponde à {{selectedId}} selecionada"
+ },
+ "panelInfo": {
+ "information": "Informações",
+ "moreDetails": "Mais detalhes"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Escala",
+ "conflictResolution": "Resolução de Conflitos",
+ "settings": "Configurações",
+ "indexingPolicy": "Política de Indexação",
+ "partitionKeys": "Chaves de Partição",
+ "partitionKeysPreview": "Chaves de Partição (versão prévia)",
+ "computedProperties": "Propriedades Calculadas",
+ "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)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Selecione um tipo para cada índice.",
+ "enterFieldNameError": "Insira um nome de campo.",
+ "wildcardPathError": "O caminho curinga não está presente no nome do campo. Use um padrão como "
+ },
+ "partitionKey": {
+ "shardKey": "Chave de shard",
+ "partitionKey": "Chave de partição",
+ "shardKeyTooltip": "A chave de fragmento (campo) é usada para dividir seus dados em vários conjuntos de réplicas (fragmentos) para obter escalabilidade ilimitada. É fundamental escolher um campo que distribuirá uniformemente seus dados.",
+ "partitionKeyTooltip": "é usado para distribuir automaticamente os dados entre partições para escalabilidade. Escolha uma propriedade no documento JSON que tenha uma ampla gama de valores e distribua uniformemente o volume de solicitações.",
+ "sqlPartitionKeyTooltipSuffix": " Para cargas de trabalho pequenas com muitas leituras ou cargas de trabalho de gravação de qualquer tamanho, a ID costuma ser uma boa escolha.",
+ "partitionKeySubtext": "Para pequenas cargas de trabalho, a ID do item é uma escolha adequada para a chave de partição.",
+ "mongoPlaceholder": "por exemplo, categoryId",
+ "gremlinPlaceholder": "por exemplo, /address",
+ "sqlFirstPartitionKey": "Obrigatório – primeira chave de partição, por exemplo, /TenantId",
+ "sqlSecondPartitionKey": "segunda chave de partição, por exemplo, /UserId",
+ "sqlThirdPartitionKey": "terceira chave de partição, por exemplo, /SessionId",
+ "defaultPlaceholder": "por exemplo, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Estimativa de custo*",
+ "howWeCalculate": "Como calculamos isso",
+ "updatedCostPerMonth": "Custo atualizado por mês",
+ "currentCostPerMonth": "Custo atual por mês",
+ "perRu": "/RU",
+ "perHour": "/hr",
+ "perDay": "/dia",
+ "perMonth": "/mês"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "As RU/s máximas de escala automática inicial serão determinadas pelo sistema, com base nas configurações manuais atuais de taxa de transferência e no armazenamento do recurso. Depois que a escala automática for habilitada, você poderá alterar as RU/s máximas.",
+ "ttlWarningText": "O sistema excluirá automaticamente os itens com base no valor TTL (em segundos) fornecido, sem a necessidade de uma operação de exclusão emitida explicitamente por um aplicativo cliente. Para mais informações, confira",
+ "ttlWarningLinkText": "Vida Útil (TTL) no Azure Cosmos DB",
+ "unsavedIndexingPolicy": "política de indexação",
+ "unsavedDataMaskingPolicy": "política de mascaramento de dados",
+ "unsavedComputedProperties": "propriedades calculadas",
+ "unsavedEditorWarningPrefix": "Você não salvou as alterações mais recentes feitas em sua",
+ "unsavedEditorWarningSuffix": ". Clique em Salvar para confirmar as alterações.",
+ "updateDelayedApplyWarning": "Você está prestes a solicitar um aumento na taxa de transferência além da capacidade pré-alocada. Essa operação levará algum tempo para ser concluída.",
+ "scalingUpDelayMessage": "A escalabilidade levará de 4 a 6 horas, pois excede o que o Azure Cosmos DB pode oferecer suporte instantaneamente atualmente com base no número de partições físicas. Você pode aumentar sua taxa de transferência para {{instantMaximumThroughput}} imediatamente ou continuar com este valor e aguardar até que a escala seja concluída.",
+ "exceedPreAllocatedMessage": "Sua solicitação de aumento da taxa de transferência excede a capacidade pré-alocada, o que pode demorar mais do que o esperado. Você pode escolher uma das três opções para continuar:",
+ "instantScaleOption": "Você pode escalar verticalmente para {{instantMaximumThroughput}} RU/s instantaneamente.",
+ "asyncScaleOption": "Você pode escalar verticalmente de forma assíncrona para qualquer valor abaixo de {{maximumThroughput}} RU/s em 4 a 6 horas.",
+ "quotaMaxOption": "Sua cota máxima atual é de {{maximumThroughput}} RU/s. Para exceder esse limite, você deve solicitar um aumento de cota, que será revisado pela equipe do Azure Cosmos DB.",
+ "belowMinimumMessage": "Não é possível reduzir a taxa de transferência abaixo do mínimo atual de {{minimum}} RU/s. Para mais informações sobre esse limite, consulte nossa documentação de cotas de serviço.",
+ "saveThroughputWarning": "Sua cobrança será afetada à medida que você atualizar as configurações de taxa de transferência. Revise a estimativa de custo atualizada abaixo antes de salvar as alterações",
+ "currentAutoscaleThroughput": "Taxa de transferência atual da escala automática:",
+ "targetAutoscaleThroughput": "Taxa de transferência de escala automática de destino:",
+ "currentManualThroughput": "Taxa de transferência manual atual:",
+ "targetManualThroughput": "Taxa de transferência manual de destino:",
+ "applyDelayedMessage": "A solicitação de aumento da taxa de transferência foi enviada com êxito. Essa operação levará de 1 a 3 dias úteis para ser concluída. Exiba o status mais recente em Notificações.",
+ "databaseLabel": "Banco de Dados:",
+ "containerLabel": "Contêiner:",
+ "applyShortDelayMessage": "Há uma solicitação de aumento da taxa de transferência em andamento. Essa operação levará algum tempo para ser concluída.",
+ "applyLongDelayMessage": "Há uma solicitação de aumento da taxa de transferência em andamento. Essa operação levará de 1 a 3 dias úteis para ser concluída. Exiba o status mais recente em Notificações.",
+ "throughputCapError": "Sua conta está configurada atualmente com um limite total de taxa de transferência de {{throughputCap}} RU/s. Esta atualização não é possível porque aumentaria a taxa de transferência total para {{newTotalThroughput}} RU/s. Alterar limite total de taxa de transferência no gerenciamento de custos.",
+ "throughputIncrementError": "O valor da taxa de transferência deve ser em incrementos de 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Última Gravação Vence (padrão)",
+ "customMergeProcedure": "Procedimento de Mesclagem (personalizado)",
+ "mode": "Modo",
+ "conflictResolverProperty": "Propriedade do Resolvedor de Conflitos",
+ "storedProcedure": "Procedimento armazenado",
+ "lwwTooltip": "Obtém ou define o nome de uma propriedade inteira em seus documentos que é usada para o esquema de resolução de conflitos baseado em Última Gravação Vence (LWW). Por padrão, o sistema usa a propriedade de carimbo de data/hora definida pelo sistema, _ts, para decidir o vencedor das versões conflitantes do documento. Especifique sua própria propriedade inteira se quiser substituir a resolução de conflitos padrão baseada em carimbo de data/hora.",
+ "customTooltip": "Obtém ou define o nome de um procedimento armazenado (também conhecido como procedimento de mesclagem) para resolver os conflitos. Você pode escrever uma lógica definida pelo aplicativo para determinar o vencedor das versões conflitantes de um documento. O procedimento armazenado será executado transacionalmente, exatamente uma vez, no lado do servidor. Se você não fornecer um procedimento armazenado, os conflitos serão preenchidos no",
+ "customTooltipConflictsFeed": " feed de conflitos",
+ "customTooltipSuffix": ". Você pode atualizar/registrar novamente o procedimento armazenado a qualquer momento."
+ },
+ "changeFeed": {
+ "label": "Política de retenção de log do feed de alterações",
+ "tooltip": "Habilite a política de retenção de log do feed de alterações para reter os últimos 10 minutos do histórico de itens no contêiner por padrão. Para dar suporte a isso, a cobrança de unidade de solicitação (RU) para este contêiner será multiplicada por dois para gravações. As leituras não são afetadas."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Para consultas que filtram várias propriedades, crie vários índices de campo único em vez de um índice composto.",
+ "disclaimerCompoundIndexesLink": " Índices compostos ",
+ "disclaimerSuffix": "são usados apenas para classificar os resultados da consulta. Se você precisar adicionar um índice composto, poderá criar um usando o shell do Mongo.",
+ "compoundNotSupported": "Coleções com índices compostos ainda não têm suporte no editor de indexação. Para modificar a política de indexação desta coleção, use o Mongo Shell.",
+ "aadError": "Para usar o editor de políticas de indexação, faça logon no",
+ "aadErrorLink": "portal do azure.",
+ "refreshingProgress": "Atualizando o progresso da transformação de índice",
+ "canMakeMoreChangesZero": "Você pode fazer mais alterações de indexação quando a transformação do índice atual for concluída. ",
+ "refreshToCheck": "Atualize para verificar se foi concluído.",
+ "canMakeMoreChangesProgress": "Você pode fazer mais alterações de indexação quando a transformação do índice atual for concluída. Está {{progress}}% concluído. ",
+ "refreshToCheckProgress": "Atualize para verificar o andamento.",
+ "definitionColumn": "Definição",
+ "typeColumn": "Tipo",
+ "dropIndexColumn": "Remover índice",
+ "addIndexBackColumn": "Adicionar índice novamente",
+ "deleteIndexButton": "Botão Excluir índice",
+ "addBackIndexButton": "Adicionar novamente o botão Índice",
+ "currentIndexes": "Índices atuais",
+ "indexesToBeDropped": "Índices a serem removidos",
+ "indexFieldName": "Nome do Campo do Índice",
+ "indexType": "Tipo de Índice",
+ "selectIndexType": "Selecione um tipo de índice",
+ "undoButton": "Botão Desfazer"
+ },
+ "subSettings": {
+ "timeToLive": "Vida Útil",
+ "ttlOff": "Desativado",
+ "ttlOnNoDefault": "Ativado (sem padrão)",
+ "ttlOn": "Ativado",
+ "seconds": "segundos",
+ "timeToLiveInSeconds": "Vida útil em segundos",
+ "analyticalStorageTtl": "Tempo de Vida do Armazenamento Analítico",
+ "geospatialConfiguration": "Configuração Geoespacial",
+ "geography": "Geografia",
+ "geometry": "Geometria",
+ "uniqueKeys": "Chaves exclusivas",
+ "mongoTtlMessage": "Para habilitar a vida útil (TTL) da coleção/documentos,",
+ "mongoTtlLinkText": "criar um índice TTL",
+ "partitionKeyTooltipTemplate": "Esse {{partitionKeyName}} é usado para distribuir dados em várias partições para escalabilidade. O valor \"{{partitionKeyValue}}\" determina como os documentos são particionados.",
+ "largePartitionKeyEnabled": "O recurso Grande {{partitionKeyName}} foi habilitado.",
+ "hierarchicalPartitioned": "Contêiner particionado hierarquicamente.",
+ "nonHierarchicalPartitioned": "Contêiner particionado de forma não hierárquica."
+ },
+ "scale": {
+ "freeTierInfo": "Com a camada gratuita, você terá as primeiras {{ru}} RU/s e {{storage}} GB de armazenamento nesta conta gratuitamente. Para manter a conta gratuita, mantenha o total de RU/s em todos os recursos da conta em {{ru}} RU/s.",
+ "freeTierLearnMore": "Saiba mais.",
+ "throughputRuS": "Taxa de transferência (RU/s)",
+ "autoScaleCustomSettings": "Sua conta tem configurações personalizadas que impedem a definição de taxa de transferência no nível do contêiner. Trabalhe com seu ponto de contato da equipe de engenharia do Cosmos DB para fazer alterações.",
+ "keyspaceSharedThroughput": "Esta taxa de transferência compartilhada da tabela é configurada no keyspace",
+ "throughputRangeLabel": "Taxa de transferência ({{min}} – {{max}} RU/s)",
+ "unlimited": "ilimitado"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Alterar {{partitionKeyName}}",
+ "currentPartitionKey": "{{partitionKeyName}} atual",
+ "partitioning": "Particionamento",
+ "hierarchical": "Hierárquico",
+ "nonHierarchical": "Não hierárquico",
+ "safeguardWarning": "Para garantir a integridade dos dados que estão sendo copiados para o novo contêiner, verifique se não há atualizações no contêiner de origem durante todo o processo de alteração da chave de partição.",
+ "changeDescription": "Para alterar a chave de partição, um novo contêiner de destino deve ser criado ou um contêiner de destino existente deve ser selecionado. Os dados serão copiados para o contêiner de destino.",
+ "changeButton": "Alterar",
+ "changeJob": "trabalho de alteração de {{partitionKeyName}}",
+ "cancelButton": "Cancelar",
+ "documentsProcessed": "({{processedCount}} de {{totalCount}} documentos processados)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Propriedades calculadas",
+ "learnMorePrefix": "sobre como definir propriedades calculadas e como usá-las."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Política de Indexação"
+ },
+ "dataMasking": {
+ "ariaLabel": "Política de Mascaramento de Dados",
+ "validationFailed": "Falha na validação:",
+ "includedPathsRequired": "includedPaths é obrigatório",
+ "includedPathsMustBeArray": "includedPaths deve ser uma matriz",
+ "excludedPathsMustBeArray": "excludedPaths deve ser uma matriz, se fornecido"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Política de Vetor",
+ "fullTextPolicy": "Política de Texto Completo",
+ "createFullTextPolicy": "Criar política de pesquisa de texto completo"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Este contêiner tem os seguintes índices definidos para ele.",
+ "learnMoreSuffix": "sobre como definir índices secundários globais e como usá-los.",
+ "jsonAriaLabel": "JSON do Índice Secundário Global",
+ "addIndex": "Adicionar índice",
+ "settingsTitle": "Configurações de Índice Secundário Global",
+ "sourceContainer": "Contêiner de origem",
+ "indexDefinition": "Definição de índice secundário global"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Falha ao atualizar o andamento da transformação do índice"
+ },
+ "throughputInput": {
+ "autoscale": "Escala automática",
+ "manual": "Manual",
+ "minimumRuS": "RU/s mínimas",
+ "maximumRuS": "RU/s máximas",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Capacidade de armazenamento",
+ "fixed": "Fixa",
+ "unlimited": "Ilimitado",
+ "instant": "Instantâneo",
+ "fourToSixHrs": "4 a 6 h",
+ "autoscaleDescription": "Com base no uso, a taxa de transferência {{resourceType}} será escalada de",
+ "freeTierWarning": "A cobrança será aplicada se você provisionar mais de {{ru}} RU/s de taxa de transferência manual ou se o recurso escalar além de {{ru}} RU/s com a escala automática.",
+ "capacityCalculator": "Estime as RU/s necessárias com",
+ "capacityCalculatorLink": " calculadora de capacidade",
+ "fixedStorageNote": "Ao usar uma coleção com capacidade de armazenamento fixa, você pode definir até 10.000 RU/s.",
+ "min": "mín.",
+ "max": "máx."
+ },
+ "throughputBuckets": {
+ "label": "Buckets de Taxa de Transferência",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Bucket de Consulta do Data Explorer)",
+ "active": "Ativo",
+ "inactive": "Inativo"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/pt-PT/Resources.json b/src/Localization/pt-PT/Resources.json
new file mode 100644
index 000000000..92a88d055
--- /dev/null
+++ b/src/Localization/pt-PT/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Cancelar",
+ "close": "Fechar",
+ "save": "Guardar",
+ "delete": "Eliminar",
+ "update": "Atualizar",
+ "discard": "Eliminar",
+ "execute": "Executar",
+ "loading": "A carregar",
+ "loadingEllipsis": "A carregar...",
+ "next": "Seguinte",
+ "previous": "Anterior",
+ "yes": "Sim",
+ "no": "Não",
+ "result": "Resultado",
+ "learnMore": "Saber mais",
+ "getStarted": "Começar",
+ "retry": "Tentar novamente",
+ "apply": "Aplicar",
+ "refresh": "Atualizar",
+ "copy": "Copiar",
+ "create": "Criar",
+ "confirm": "Confirmar",
+ "open": "Abrir",
+ "rename": "Mudar o Nome",
+ "download": "Transferir",
+ "upload": "Carregar",
+ "connect": "Ligar",
+ "remove": "Remover",
+ "load": "Carregar",
+ "publish": "Publicar",
+ "browse": "Procurar",
+ "increaseValueBy1": "Aumentar valor em 1",
+ "decreaseValueBy1": "Diminuir valor em 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Bem-vindo ao Azure Cosmos DB",
+ "postgres": "Bem-vindo ao Azure Cosmos DB para PostgreSQL",
+ "vcoreMongo": "Bem-vindo ao Azure DocumentDB (com compatibilidade do MongoDB)"
+ },
+ "subtitle": {
+ "default": "Serviço de base de dados com múltiplos modelos distribuído globalmente para qualquer dimensionamento",
+ "getStarted": "Comece a trabalhar com os nossos conjuntos de dados de exemplo, documentação e ferramentas adicionais."
+ },
+ "quickStart": {
+ "title": "Iniciar início rápido",
+ "description": "Inicie um tutorial de início rápido para começar a utilizar dados de exemplo"
+ },
+ "newCollection": {
+ "title": "Novo {{collectionName}}",
+ "description": "Criar um novo contentor para armazenamento e débito"
+ },
+ "samplesGallery": {
+ "title": "Galeria de Exemplos do Azure Cosmos DB",
+ "description": "Descubra exemplos que apresentam padrões de aplicações escaláveis e inteligentes. Experimente um agora para ver a rapidez com que pode passar do conceito ao código com o Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Ligar",
+ "description": "Prefere usar as suas próprias ferramentas? Encontre a cadeia de ligação de que precisa para comunicar",
+ "pgAdmin": {
+ "title": "Comunicar com o pgAdmin",
+ "description": "Prefere o pgAdmin? Encontre as suas cadeias de ligação aqui"
+ },
+ "vsCode": {
+ "title": "Ligar ao VS Code",
+ "description": "Consulte e gerencie seus clusters MongoDB e DocumentDB no Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "Criar uma tabela e interagir com dados usando a interface shell do PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "Criar uma coleção e interagir com dados usando a interface shell do MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Novo no Cosmos DB PGSQL?",
+ "body": "Damos-lhe as boas-vindas! Se é novo no Cosmos DB PGSQL e precisa de ajuda para começar, aqui pode encontrar dados de exemplo e consultas."
+ },
+ "resetPassword": {
+ "headline": "Criar a sua palavra-passe",
+ "body": "Se ainda não alterou a sua palavra-passe, altere-a agora."
+ },
+ "coachMark": {
+ "headline": "Começar com amostra {{collectionName}}",
+ "body": "Será orientado para criar um contentor de exemplo com dados de exemplo e, em seguida, faremos uma visita guiada ao explorador de dados. Também pode cancelar o lançamento desta visita e explorar por si próprio."
+ }
+ },
+ "sections": {
+ "recents": "Recentes",
+ "clearRecents": "Limpar recentes",
+ "top3": "As três principais coisas que precisa de saber",
+ "learningResources": "Recursos de Aprendizagem",
+ "nextSteps": "Passos seguintes",
+ "tipsAndLearnMore": "Sugestões e saiba mais",
+ "notebook": "Bloco de notas",
+ "needHelp": "Precisa de ajuda?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Padrões Avançados de Modelação",
+ "description": "Aprenda estratégias avançadas para otimizar a sua base de dados."
+ },
+ "partitioning": {
+ "title": "Melhores práticas para a criação de partições",
+ "description": "Aprenda a aplicar o modelo de dados e as estratégias de partição."
+ },
+ "resourcePlanning": {
+ "title": "Planear os seus Requisitos de Recursos",
+ "description": "Conheça as diferentes opções de configuração."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "O que é a API MongoDB?",
+ "description": "Compreenda o Azure Cosmos DB for MongoDB e as suas funcionalidades."
+ },
+ "features": {
+ "title": "Funcionalidades e Sintaxe",
+ "description": "Descubra as vantagens e funcionalidades"
+ },
+ "migrate": {
+ "title": "Migrar os seus dados",
+ "description": "Passos de pré-migração para fazer a migração de dados"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Criar uma Aplicação Java",
+ "description": "Crie uma aplicação Java com um SDK."
+ },
+ "partitioning": {
+ "title": "Melhores práticas para a criação de partições",
+ "description": "Saiba como funciona a partição."
+ },
+ "requestUnits": {
+ "title": "Unidades de Pedido (RUs)",
+ "description": "Compreenda as cobranças de RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Modelação de dados",
+ "description": "Recomendações para modelação de dados do Graph"
+ },
+ "partitioning": {
+ "title": "Melhores práticas para a criação de partições",
+ "description": "Saiba como funciona a partição"
+ },
+ "queryData": {
+ "title": "Consultar dados",
+ "description": "Consultar dados com o Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "O que é a API Table?",
+ "description": "Compreenda o Azure Cosmos DB for Table e as suas funcionalidades"
+ },
+ "migrate": {
+ "title": "Migrar os seus dados",
+ "description": "Saiba como migrar dados"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table FAQs",
+ "description": "Perguntas comuns sobre o Azure Cosmos DB for Table"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Atalhos de teclado do Data Explorer",
+ "description": "Aprenda atalhos de teclado para navegar no Data Explorer."
+ },
+ "liveTv": {
+ "title": "Aprenda as Noções Básicas",
+ "description": "Veja o programa de TV em direto do Azure Cosmos DB e vídeos de introdução e tutoriais."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Começar a utilizar um SDK",
+ "description": "Saiba mais sobre o Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Migrar os seus dados",
+ "description": "Migre dados utilizando serviços Azure e soluções open-source."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Criar uma aplicação com Node.js",
+ "description": "Criar uma aplicação Node.js."
+ },
+ "gettingStarted": {
+ "title": "Guia de Introdução",
+ "description": "Aprenda o básico para começar."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Criar um Contentor",
+ "description": "Conheça as opções para criar um contentor."
+ },
+ "throughput": {
+ "title": "Débito de Aprovisionamento",
+ "description": "Saiba como configurar o débito."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Começar a Utilizar ",
+ "description": "Criar, consultar e percorrer utilizando a consola Gremlin"
+ },
+ "importData": {
+ "title": "Importar Dados do Grafo",
+ "description": "Saiba como fazer a ingestão em massa de dados com o BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Criar uma Aplicação .NET",
+ "description": "Como aceder ao Azure Cosmos DB for Table a partir de uma aplicação .NET."
+ },
+ "java": {
+ "title": "Criar uma Aplicação Java",
+ "description": "Crie uma aplicação Azure Cosmos DB for Table com o Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Modelação de dados",
+ "distributionColumn": "Como escolher uma Coluna de Distribuição",
+ "buildApps": "Criar Aplicações com Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrar dados",
+ "vectorSearch": "Criar aplicações de IA com a Pesquisa de Vectores",
+ "buildApps": "Criar Aplicações com Node.js"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Ajuste do Desempenho",
+ "diagnosticQueries": "Consultas de Diagnóstico Úteis",
+ "sqlReference": "Referência de SQL Distribuído"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Pesquisa de Vectores",
+ "textIndexing": "Indexação de Texto",
+ "troubleshoot": "Resolver problemas comuns"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Crie a sua base de dados",
+ "useTitle": "Utilizar a sua base de dados",
+ "newContainer": {
+ "title": "Novo contentor",
+ "description": "Crie um contentor de destino para armazenar os seus dados"
+ },
+ "sampleData": {
+ "title": "Dados de Amostra",
+ "description": "Carregar dados de exemplo na sua base de dados"
+ },
+ "sampleVectorData": {
+ "title": "Dados Vetoriais de Exemplo",
+ "description": "Carregar dados de vetor de exemplo com text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Desenvolvimento de aplicações",
+ "description": "Comece aqui para utilizar um SDK para criar as suas aplicações"
+ },
+ "sampleGallery": {
+ "title": "Galeria de Exemplos",
+ "description": "Obter exemplos completos do mundo real"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Dados de Amostra",
+ "startButton": "Início",
+ "createPrompt": "Crie um contentor \"{{containerName}}\" e importe dados de exemplo para o mesmo. Esta operação pode demorar alguns minutos.",
+ "creatingContainer": "A criar o contentor \"{{containerName}}\"...",
+ "importingData": "A importar dados para \"{{containerName}}\"...",
+ "success": "\"{{containerName}}\" criado com êxito com dados de exemplo.",
+ "errorContainerExists": "O contentor \"{{containerName}}\" na base de dados \"{{databaseName}}\" já existe. Elimine-o e tente novamente.",
+ "errorCreateContainer": "Falha ao criar o contentor: {{error}}",
+ "errorImportData": "Falha ao importar dados: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Novo {{containerName}}",
+ "restoreContainer": "Restaurar {{containerName}}",
+ "deleteDatabase": "Eliminar {{databaseName}}",
+ "deleteContainer": "Eliminar {{containerName}}",
+ "newSqlQuery": "Nova Consulta SQL",
+ "newQuery": "Nova Consulta",
+ "openMongoShell": "Abrir o Mongo Shell",
+ "newShell": "Nova Shell",
+ "openCassandraShell": "Abrir Shell do Cassandra",
+ "newStoredProcedure": "Novo Procedimento Armazenado",
+ "newUdf": "Novo UDF",
+ "newTrigger": "Novo Acionador",
+ "deleteStoredProcedure": "Eliminar Procedimento Armazenado",
+ "deleteTrigger": "Eliminar Acionador",
+ "deleteUdf": "Eliminar Função Definida pelo Utilizador"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Novo Item",
+ "newDocument": "Novo Documento",
+ "uploadItem": "Carregar item",
+ "applyFilter": "Aplicar Filtro",
+ "unsavedChanges": "Alterações não guardadas",
+ "unsavedChangesMessage": "As suas alterações não guardadas serão perdidas. Deseja continuar?",
+ "createDocumentFailed": "Falha ao criar documento",
+ "updateDocumentFailed": "A atualização do documento falhou",
+ "documentDeleted": "Documento eliminado com êxito.",
+ "deleteDocumentDialogTitle": "Eliminar documento",
+ "deleteDocumentsDialogTitle": "Eliminar documentos",
+ "throttlingError": "Falha ao eliminar alguns documentos devido a um erro de limitação de taxa. Tente novamente mais tarde. Para evitar esta situação no futuro, considere aumentar o débito no seu contentor ou base de dados.",
+ "deleteFailed": "Falha ao eliminar documento(s) ({{error}})",
+ "missingShardProperty": "O documento não tem a propriedade de extensão: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Falha ao atualizar a grelha de documentos",
+ "confirmDelete": "Tem a certeza de que pretende eliminar {{documentName}}?",
+ "confirmDeleteTitle": "Confirmar eliminação",
+ "selectedItems": "os {{count}} itens selecionados",
+ "selectedItem": "o item selecionado",
+ "selectedDocuments": "os {{count}} documentos selecionados",
+ "selectedDocument": "o documento selecionado",
+ "deleteDocumentFailedLog": "Falha ao eliminar o documento {{documentId}} com o código de estado {{statusCode}}",
+ "deleteSuccessLog": "{{count}} documento(s) eliminado(s) com êxito",
+ "deleteThrottledLog": "Falha ao eliminar {{count}} documento(s) devido ao erro \"Pedido demasiado grande\" (429). A tentar novamente...",
+ "missingShardKeyLog": "Falha ao guardar o novo documento: chave de extensão do documento não definida",
+ "filterTooltip": "Escreva um predicado de consulta ou escolha um da lista.",
+ "loadMore": "Carregar mais",
+ "documentEditor": "Editor de documentos",
+ "savedFilters": "Filtros guardados",
+ "defaultFilters": "Filtros predefinidos",
+ "abort": "Abortar",
+ "deletingDocuments": "A eliminar {{count}} documento(s)",
+ "deletedDocumentsSuccess": "{{count}} documento(s) eliminado(s) com êxito.",
+ "deleteAborted": "A eliminação de documento(s) foi abortada.",
+ "failedToDeleteDocuments": "Falha ao eliminar {{count}} documento(s).",
+ "requestTooLargeBase": "Alguns pedidos de eliminação falharam devido a uma exceção de \"Pedido demasiado grande\" (429)",
+ "retriedSuccessfully": "mas foi efetuada uma nova tentativa com êxito.",
+ "retryingNow": "A tentar novamente agora.",
+ "increaseThroughputTip": "Para evitar esta situação no futuro, considere aumentar o débito no seu contentor ou base de dados.",
+ "numberOfSelectedDocuments": "Número de documentos selecionados: {{count}}",
+ "mongoFilterPlaceholder": "Escreva um predicado de consulta (por exemplo, {\"id\":\"foo\"}), escolha um da lista pendente ou deixe em branco para consultar todos os documentos.",
+ "sqlFilterPlaceholder": "Escreva um predicado de consulta (por exemplo, WHERE c.id=\"1\"), escolha um da lista pendente ou deixe em branco para consultar todos os documentos.",
+ "error": "Erro",
+ "warning": "Aviso"
+ },
+ "query": {
+ "executeQuery": "Executar Consulta",
+ "executeSelection": "Executar Seleção",
+ "saveQuery": "Guardar Consulta",
+ "downloadQuery": "Transferir Consulta",
+ "cancelQuery": "Cancelar consulta",
+ "openSavedQueries": "Abrir Consultas Guardadas",
+ "vertical": "Vertical",
+ "horizontal": "Horizontal",
+ "view": "Ver",
+ "editingQuery": "A Editar Consulta"
+ },
+ "storedProcedure": {
+ "id": "ID de Procedimento Armazenado",
+ "idPlaceholder": "Introduza o novo ID de procedimento armazenado",
+ "idAriaLabel": "ID de procedimento armazenado",
+ "body": "Corpo do Procedimento Armazenado",
+ "bodyAriaLabel": "Corpo do procedimento armazenado",
+ "successfulExecution": "Execução com êxito do procedimento armazenado",
+ "resultAriaLabel": "Resultado da execução do procedimento armazenado",
+ "logsAriaLabel": "Registos da execução do procedimento armazenado",
+ "errors": "Erros:",
+ "errorDetailsAriaLabel": "Ligação para detalhes do erro",
+ "moreDetails": "Mais detalhes",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ID do acionador",
+ "idPlaceholder": "Introduza o novo id do acionador",
+ "type": "Tipo de Acionador",
+ "operation": "Operação do Acionador",
+ "body": "Corpo do Acionador",
+ "bodyAriaLabel": "Corpo do acionador",
+ "pre": "Pré",
+ "post": "Publicar",
+ "all": "Todos",
+ "operationCreate": "Criar",
+ "operationDelete": "Eliminar",
+ "operationReplace": "Substituir"
+ },
+ "udf": {
+ "id": "ID de função definida pelo utilizador",
+ "idPlaceholder": "Introduza o novo ID de função definida pelo utilizador",
+ "body": "Corpo da Função Definida pelo Utilizador",
+ "bodyAriaLabel": "Corpo da função definida pelo utilizador"
+ },
+ "conflicts": {
+ "unsavedChanges": "Alterações não guardadas",
+ "changesWillBeLost": "As alterações serão perdidas. Deseja continuar?",
+ "resolveConflictFailed": "Falha ao resolver o conflito",
+ "deleteConflictFailed": "Falha ao eliminar o conflito",
+ "refreshGridFailed": "Falha ao atualizar a grelha de documentos"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Qual é a razão pela qual está a eliminar este {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Eliminar {{collectionName}}",
+ "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!",
+ "feedbackReason": "Qual é a razão pela qual está a eliminar este {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Base de dados {{suffix}}",
+ "databaseIdLabel": "ID da base de dados",
+ "keyspaceIdLabel": "ID do espaço de chaves",
+ "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"
+ },
+ "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}}",
+ "collectionIdAriaLabel": "{{collectionName}} ID, Exemplo {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Escolher ID {{databaseName}} existente",
+ "existingDatabasePlaceholder": "Escolher ID {{databaseName}} existente",
+ "indexing": "A indexar",
+ "turnOnIndexing": "Ativar indexação",
+ "automatic": "Automático",
+ "turnOffIndexing": "Desativar indexação",
+ "off": "Desativado",
+ "sharding": "Sharding",
+ "shardingTooltip": "As coleções fragmentadas dividem os seus dados por vários conjuntos de réplicas (shards) para alcançar escalabilidade ilimitada. As coleções fragmentadas exigem a escolha de uma chave shard (campo) para distribuir uniformemente os seus dados.",
+ "unsharded": "Sem fragmentação",
+ "unshardedLabel": "Sem fragmentação (limite de 20 GB)",
+ "sharded": "Fragmentado",
+ "addPartitionKey": "Adicionar chave de partição hierárquica",
+ "hierarchicalPartitionKeyInfo": "Esta funcionalidade permite-lhe fazer a gestão dos seus dados com até três níveis de chaves para uma melhor distribuição dos dados. Requer .NET V3, Java V4 SDK ou pré-visualização do JavaScript V3 SDK.",
+ "provisionDedicatedThroughput": "Aprovisionar débito dedicado para este {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Pode opcionalmente aprovisionar débito dedicado para um {{collectionName}} dentro de uma base de dados que tenha débito aprovisionado. Esta quantidade de débito dedicado não será partilhada com outros {{collectionNamePlural}} na base de dados e não conta para o débito que aprovisionou para a base de dados. Este valor de débito será faturado para além do montante de débito aprovisionado ao nível da base de dados.",
+ "uniqueKeysPlaceholderMongo": "Caminhos separados por vírgulas, por exemplo,irstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Caminhos separados por vírgulas, por exemplo, /firstName,/address/zipCode",
+ "addUniqueKey": "Adicionar chave única",
+ "enableAnalyticalStore": "Ativar armazenamento analítico",
+ "disableAnalyticalStore": "Desativar armazenamento analítico",
+ "on": "Ativado",
+ "analyticalStoreSynapseLinkRequired": "O Azure Synapse Link é necessário para criar um arquivo analítico {{collectionName}}. Ative o Azure Synapse Link para esta conta do Cosmos DB.",
+ "enable": "Ativar",
+ "containerVectorPolicy": "Política de Vetor do Contentor",
+ "containerFullTextSearchPolicy": "Política de Pesquisa de Texto Completo do Contentor",
+ "advanced": "Avançado",
+ "mongoIndexingTooltip": "O campo _id está indexado por predefinição. Criar um índice de caráter universal para todos os campos otimizará as consultas e é recomendado para desenvolvimento.",
+ "createWildcardIndex": "Criar um Índice de Caráter Universal em todos os campos",
+ "legacySdkCheckbox": "A minha aplicação utiliza uma versão mais antiga do Cosmos .NET ou Java SDK (.NET V1 ou Java V2)",
+ "legacySdkInfo": "Para garantir a compatibilidade com SDKs mais antigos, o contentor criado utilizará um esquema de partição legado que suporta valores de chave de partição com tamanho até 101 bytes. Se esta opção estiver ativada, não poderá utilizar chaves de partição hierárquicas.",
+ "indexingOnInfo": "Todas as propriedades nos seus documentos serão indexadas por predefinição para consultas flexíveis e eficientes.",
+ "indexingOffInfo": "A indexação será desativada. Recomendado se não precisar de executar consultas ou se apenas realizar operações de valor-chave.",
+ "indexingOffWarning": "Ao criar este contentor com a indexação desativada, não poderá efetuar alterações à política de indexação. As alterações de indexação só são permitidas num contentor com uma política de indexação.",
+ "acknowledgeSpendErrorMonthly": "Confirme os gastos mensais estimados.",
+ "acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados.",
+ "unshardedMaxRuError": "Coleções sem fragmentação suportam até 10 000 RUs",
+ "acknowledgeShareThroughputError": "Confirme o custo estimado deste débito dedicado.",
+ "vectorPolicyError": "Corrija os erros na política de vetor do contentor",
+ "fullTextSearchPolicyError": "Corrija os erros na política de pesquisa de texto completo do contentor.",
+ "addingSampleDataSet": "Adicionar conjunto de dados de amostra",
+ "databaseFieldLabelName": "Nome da base de dados",
+ "databaseFieldLabelId": "ID da base de dados",
+ "newDatabaseIdPlaceholder": "Introduza um novo ID de base de dados",
+ "newDatabaseIdAriaLabel": "Novo ID de base de dados. Introduza um novo ID de base de dados",
+ "createNewDatabaseAriaLabel": "Criar nova base de dados",
+ "useExistingDatabaseAriaLabel": "Utilizar base de dados existente",
+ "chooseExistingDatabase": "Selecione uma base de dados existente",
+ "teachingBubble": {
+ "step1Headline": "Criar base de dados de exemplo",
+ "step1Body": "A base de dados é o elemento principal de um contentor. Pode criar uma nova base de dados ou utilizar uma já existente. Neste tutorial, iremos a criar uma nova base de dados com o nome SampleDB.",
+ "step1LearnMore": "Saiba mais sobre recursos.",
+ "step2Headline": "A definir o débito",
+ "step2Body": "O Cosmos DB recomenda a partilha do débito em toda a base de dados. O Dimensionamento automático irá proporcionar-lhe uma quantidade flexível de débito com base no máximo de RU/s (Unidades de Pedido) definido.",
+ "step2LearnMore": "Saiba mais sobre RU/s.",
+ "step3Headline": "Atribuir um nome ao contentor",
+ "step3Body": "Atribua um nome ao contentor",
+ "step4Headline": "Definir a chave de partição",
+ "step4Body": "Último passo - terá de definir uma chave de partição para a coleção. /address foi escolhida para este exemplo específico. Uma boa chave de partição deve ter uma ampla gama de valores possíveis",
+ "step4CreateContainer": "Criar contentor",
+ "step5Headline": "A criar contentor de exemplo",
+ "step5Body": "Está agora a ser criado um contentor de exemplo e estamos a adicionar dados de exemplo para si. Esta operação deverá demorar cerca de um minuto.",
+ "step5BodyFollowUp": "Assim que o contentor de exemplo for criado, reveja o conjunto de dados de exemplo e siga os próximos passos",
+ "stepOfTotal": "Passo {{current}} de {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "A chave shard (campo) é utilizada para dividir os seus dados por vários conjuntos de réplicas (shards) para alcançar escalabilidade ilimitada. É fundamental escolher um campo que distribua uniformemente os seus dados.",
+ "partitionKeyTooltip": "A {{partitionKeyName}} é utilizada para distribuir dados automaticamente pelas partições para escalabilidade. Escolha uma propriedade no seu documento JSON que tenha um grande intervalo de valores e distribua uniformemente o volume do pedido.",
+ "partitionKeyTooltipSqlSuffix": " Para pequenas cargas de trabalho pesadas de leitura ou cargas de trabalho pesadas de qualquer tamanho, o id é muitas vezes uma boa escolha.",
+ "shardKeyLabel": "Chave de shard",
+ "partitionKeyLabel": "Chave de partição",
+ "shardKeyPlaceholder": "por exemplo, categoryId",
+ "partitionKeyPlaceholderDefault": "por exemplo, /address",
+ "partitionKeyPlaceholderFirst": "Obrigatório - primeira chave de partição, por exemplo, /TenantId",
+ "partitionKeyPlaceholderSecond": "segunda chave de partição, por exemplo, /UserId",
+ "partitionKeyPlaceholderThird": "terceira chave de partição, por exemplo, /SessionId",
+ "partitionKeyPlaceholderGraph": "por exemplo /address/zipCode",
+ "uniqueKeysTooltip": "As chaves exclusivas permitem aos programadores adicionar uma camada de integridade de dados à sua base de dados. Ao criar uma política de chave exclusiva quando um contentor é criado, garante a exclusividade de um ou mais valores por chave de partição.",
+ "uniqueKeysLabel": "Chaves únicas",
+ "analyticalStoreLabel": "Arquivo Analítico",
+ "analyticalStoreTooltip": "Ative a capacidade do arquivo analítico para efetuar análises quase em tempo real nos seus dados operacionais, sem afetar o desempenho das cargas de trabalho transacionais.",
+ "analyticalStoreDescription": "Ative a capacidade do arquivo analítico para efetuar análises quase em tempo real nos seus dados operacionais, sem afetar o desempenho das cargas de trabalho transacionais.",
+ "vectorPolicyTooltip": "Descreva quaisquer propriedades nos seus dados que contenham vetores, para que possam estar disponíveis para consultas de similaridade."
+ },
+ "settings": {
+ "pageOptions": "Opções de Página",
+ "pageOptionsDescription": "Escolha Personalizado para especificar uma quantidade fixa de resultados de consulta a mostrar, ou escolha Ilimitado para mostrar tantos resultados de consulta por página quanto possível.",
+ "queryResultsPerPage": "Resultados da consulta por página",
+ "queryResultsPerPageTooltip": "Introduza o número de resultados da consulta que devem ser mostrados por página.",
+ "customQueryItemsPerPage": "Itens de consulta personalizados por página",
+ "custom": "Personalizado",
+ "unlimited": "Ilimitado",
+ "entraIdRbac": "Ativar RBAC do Entra ID",
+ "entraIdRbacDescription": "Escolha Automático para ativar automaticamente o RBAC do Entra ID. Verdadeiro/Falso para forçar a ativação/desativação do RBAC do Entra ID.",
+ "true": "Verdadeiro",
+ "false": "Falso",
+ "regionSelection": "Seleção de Região",
+ "regionSelectionDescription": "Altera a região que o Cliente Cosmos utiliza para aceder à conta.",
+ "selectRegion": "Selecionar Região",
+ "selectRegionTooltip": "Altera o ponto final da conta utilizado para efetuar operações de cliente.",
+ "globalDefault": "Global (Predefinição)",
+ "readWrite": "(Leitura/Escrita)",
+ "read": "(Ler)",
+ "queryTimeout": "Tempo Limite de Consulta",
+ "queryTimeoutDescription": "Quando uma consulta atinge um limite de tempo especificado, será apresentado um pop-up com a opção de cancelar a consulta, a menos que o cancelamento automático tenha sido ativado.",
+ "enableQueryTimeout": "Ativar tempo limite da consulta",
+ "queryTimeoutMs": "Tempo limite da consulta (ms)",
+ "automaticallyCancelQuery": "Cancelar automaticamente a consulta após o tempo limite",
+ "ruLimit": "Limite de RU",
+ "ruLimitDescription": "Se uma consulta exceder um limite de RU configurado, a consulta será abortada.",
+ "enableRuLimit": "Ativar limite de RU",
+ "ruLimitLabel": "Limite de RU (RU)",
+ "defaultQueryResults": "Vista de Resultados da Consulta Predefinida",
+ "defaultQueryResultsDescription": "Selecione a vista predefinida a utilizar ao apresentar os resultados da consulta.",
+ "retrySettings": "Definições de Repetição",
+ "retrySettingsDescription": "Política de repetição associada a pedidos limitados durante consultas do CosmosDB.",
+ "maxRetryAttempts": "Máximo de tentativas de repetição",
+ "maxRetryAttemptsTooltip": "Número máximo de tentativas a executar para um pedido. Valor predefinido 9.",
+ "fixedRetryInterval": "Intervalo fixo de repetição (ms)",
+ "fixedRetryIntervalTooltip": "Intervalo de repetição fixo em milissegundos para aguardar entre cada repetição, ignorando o retryAfter retornado como parte da resposta. O valor predefinido é 0 milissegundos.",
+ "maxWaitTime": "Tempo máximo de espera (s)",
+ "maxWaitTimeTooltip": "Tempo máximo de espera em segundos para aguardar por um pedido enquanto as tentativas estão a ocorrer. Valor predefinido 30 segundos.",
+ "enableContainerPagination": "Ativar paginação de contentor",
+ "enableContainerPaginationDescription": "Carregue 50 contentores de cada vez. Atualmente, os contentores não são carregados por ordem alfanumérica.",
+ "enableCrossPartitionQuery": "Ativar consulta entre partições",
+ "enableCrossPartitionQueryDescription": "Enviar mais do que um pedido durante a execução de uma consulta. É necessário mais do que um pedido se a consulta não estiver limitada a um único valor de chave de partição.",
+ "maxDegreeOfParallelism": "Grau máximo de paralelismo",
+ "maxDegreeOfParallelismDescription": "Obtém ou define o número de operações simultâneas executadas no lado do cliente durante a execução paralela da consulta. Um valor positivo da propriedade limita o número de operações simultâneas ao valor definido. Se estiver definido para menos de 0, o sistema decide automaticamente o número de operações simultâneas a executar.",
+ "maxDegreeOfParallelismQuery": "Consultar até ao grau máximo de paralelismo.",
+ "priorityLevel": "Nível de Prioridade",
+ "priorityLevelDescription": "Define o nível de prioridade para pedidos de plano de dados do Data Explorer ao utilizar a Execução Baseada em Prioridade. Se \"Nenhum\" estiver selecionado, o Data Explorer não especificará o nível de prioridade e será utilizado o nível de prioridade predefinido do lado do servidor.",
+ "displayGremlinQueryResults": "Apresentar resultados da consulta Gremlin como:",
+ "displayGremlinQueryResultsDescription": "Selecione Graph para visualizar automaticamente os resultados da consulta como um Graph ou JSON para apresentar os resultados como JSON.",
+ "graph": "Graph",
+ "json": "JSON",
+ "graphAutoVisualization": "Visualização automática do Graph",
+ "enableSampleDatabase": "Ativar base de dados de exemplo",
+ "enableSampleDatabaseDescription": "Esta é uma base de dados de exemplo e uma coleção com dados de produto sintéticos que pode utilizar para explorar com consultas NoSQL. Esta ação será apresentada como outra base de dados na IU do Data Explorer e é criada e mantida pela Microsoft sem custos para si.",
+ "enableSampleDbAriaLabel": "Ativar base de dados de exemplo para exploração de consultas",
+ "guidRepresentation": "Representação GUID",
+ "guidRepresentationDescription": "GuidRepresentation no MongoDB refere-se à forma como os Identificadores Globais Únicos (GUIDs) são serializados e com serialização anulada quando armazenados em documentos BSON. Isto aplica-se a todas as operações de documentos.",
+ "advancedSettings": "Definições Avançadas",
+ "ignorePartitionKey": "Ignorar chave de partição na atualização do documento",
+ "ignorePartitionKeyTooltip": "Se estiver assinalado, o valor da chave de partição não será utilizado para localizar o documento durante as operações de atualização. Utilize esta opção apenas se as atualizações de documentos estiverem a falhar devido a uma chave de partição anormal.",
+ "clearHistory": "Limpar Histórico",
+ "clearHistoryConfirm": "Tem a certeza de que pretende prosseguir?",
+ "clearHistoryDescription": "Esta ação irá limpar todas as personalizações para esta conta neste browser, incluindo:",
+ "clearHistoryTabLayout": "Repor o esquema de separadores personalizado, incluindo as posições do divisor.",
+ "clearHistoryTableColumns": "Apagar as preferências das colunas da tabela, incluindo quaisquer colunas personalizadas.",
+ "clearHistoryFilters": "Limpar o histórico de filtros",
+ "clearHistoryRegion": "Repor seleção de região para global",
+ "increaseValueBy1000": "Aumento de valor por 1000",
+ "decreaseValueBy1000": "Diminuir valor em 1000",
+ "none": "Nenhum",
+ "low": "Baixa",
+ "high": "Alto",
+ "automatic": "Automático",
+ "enhancedQueryControl": "Controlo de consulta avançado",
+ "enableQueryControl": "Ativar controlo de consulta",
+ "explorerVersion": "Versão do Explorador",
+ "accountId": "ID de conta",
+ "sessionId": "ID da Sessão",
+ "popupsDisabledError": "Não foi possível estabelecer autorização para esta conta, porque os pop-ups estão desativados no browser.\nAtive os pop-ups para este site e clique no botão \"Iniciar sessão para Entra ID\".",
+ "failedToAcquireTokenError": "Falha ao adquirir o token de autorização automaticamente. Clique no botão \"Iniciar sessão para Entra ID\" para ativar as operações RBAC do Entra ID."
+ },
+ "saveQuery": {
+ "panelTitle": "Guardar Consulta",
+ "setupCostMessage": "Por motivos de conformidade, guardamos consultas num contentor na sua conta Azure Cosmos, numa base de dados separada chamada \"{{databaseName}}\". Para continuar, precisamos de criar um contentor na sua conta, com um custo adicional estimado de 0,77 USD por dia.",
+ "completeSetup": "Concluir configuração",
+ "noQueryNameError": "Nenhum nome de consulta especificado",
+ "invalidQueryContentError": "Conteúdo de consulta inválido especificado",
+ "failedToSaveQueryError": "Falha ao guardar consulta {{queryName}}",
+ "failedToSetupContainerError": "Falha ao configurar um contentor para consultas guardadas",
+ "accountNotSetupError": "Falha ao guardar a consulta: conta não configurada para guardar consultas.",
+ "name": "Nome"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Nenhum ficheiro especificado",
+ "failedToLoadQueryError": "Falha ao carregar a consulta",
+ "failedToLoadQueryFromFileError": "Falha ao carregar a consulta a partir do ficheiro {{fileName}}",
+ "selectFilesToOpen": "Selecionar um documento de consulta",
+ "browseFiles": "Procurar"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Introduza os parâmetros de entrada (se existirem)",
+ "key": "Chave",
+ "param": "Parâmetro",
+ "partitionKeyValue": "Valor da chave de partição",
+ "value": "Valor",
+ "addNewParam": "Adicionar Novo Parâmetro",
+ "addParam": "Adicionar parâmetro",
+ "deleteParam": "Eliminar parâmetro",
+ "invalidParamError": "Parâmetro inválido especificado: {{invalidParam}}",
+ "invalidParamConsoleError": "Parâmetro inválido especificado: {{invalidParam}} não é um valor literal válido.",
+ "stringType": "Cadeia",
+ "customType": "Personalizado"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Não foram especificados ficheiros. Introduza pelo menos um ficheiro.",
+ "selectJsonFiles": "Selecionar Ficheiros JSON",
+ "selectJsonFilesTooltip": "Selecione um ou mais ficheiros JSON para carregar. Cada ficheiro pode conter um único documento JSON ou um conjunto de documentos JSON. O tamanho combinado de todos os ficheiros numa operação individual de carregamento deve ser inferior a 2 MB. Pode realizar várias operações de carregamento para conjuntos de dados maiores.",
+ "fileNameColumn": "NOME DO FICHEIRO",
+ "statusColumn": "ESTADO",
+ "uploadStatus": "{{numSucceeded}} criados, {{numThrottled}} limitados, {{numFailed}} erros",
+ "uploadedFiles": "Ficheiros carregados"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Falha ao copiar {{name}} para {{destination}}",
+ "uploadFailedError": "Não foi possível carregar {{name}}",
+ "location": "Localização",
+ "locationAriaLabel": "Localização",
+ "selectLocation": "Selecione uma localização de bloco de notas para copiar",
+ "name": "Nome"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Falha ao publicar {{notebookName}} na galeria",
+ "publishDescription": "Quando publicado, este bloco de notas será apresentado na galeria pública de blocos de notas do Azure Cosmos DB. Certifique-se de que removeu quaisquer dados confidenciais ou resultados antes de publicar.",
+ "publishPrompt": "Pretende publicar e partilhar \"{{name}}\" na galeria?",
+ "coverImage": "Imagem de capa",
+ "coverImageUrl": "URL da imagem de capa",
+ "name": "Nome",
+ "description": "Descrição",
+ "tags": "Sinalizadores",
+ "tagsPlaceholder": "Etiqueta opcional 1, Etiqueta opcional 2",
+ "preview": "Pré-visualização",
+ "urlType": "URL",
+ "customImage": "Imagem Personalizada",
+ "takeScreenshot": "Tirar Captura de Ecrã",
+ "useFirstDisplayOutput": "Utilizar Saída do Primeiro Ecrã",
+ "failedToCaptureOutput": "Falha ao capturar a primeira saída",
+ "outputDoesNotExist": "A saída não existe para nenhuma das células.",
+ "failedToConvertError": "Falha ao converter {{fileName}} para o formato base64",
+ "failedToUploadError": "Não foi possível carregar {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Falha ao iniciar a tarefa de transferência de dados",
+ "suboptimalPartitionKeyError": "Aviso: O sistema detetou que a sua coleção pode estar a utilizar uma chave de partição não ideal.",
+ "description": "Ao alterar a chave de partição de um contentor, terá de criar um contentor de destino com a chave de partição correta. Também pode selecionar um contentor de destino existente.",
+ "sourceContainerId": "ID {{collectionName}} de origem",
+ "destinationContainerId": "ID {{collectionName}} de Destino",
+ "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}}",
+ "collectionIdAriaLabel": "{{collectionName}} ID, Exemplo {{collectionName}}1",
+ "existingContainers": "Contentores existentes",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Adicionar Propriedade",
+ "addRow": "Adicionar Linha",
+ "addEntity": "Adicionar Entidade",
+ "back": "anterior",
+ "nullFieldsWarning": "Aviso: os campos nulos não serão apresentados para edição.",
+ "propertyEmptyError": "{{property}} pode estar vazio. Introduza um valor para {{property}}",
+ "whitespaceError": "{{property}} não pode ter espaços em branco. Introduza um valor para {{property}} sem espaços em branco.",
+ "propertyTypeEmptyError": "O tipo de propriedade não pode estar vazio. Selecione um tipo na lista pendente para a propriedade {{property}}."
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Selecione as colunas que quer consultar.",
+ "availableColumns": "Colunas Disponíveis"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Selecione as colunas a apresentar na vista dos itens no seu contentor.",
+ "searchFields": "Campos de pesquisa",
+ "reset": "Repor",
+ "partitionKeySuffix": " (chave de partição)"
+ },
+ "newVertex": {
+ "addProperty": "Adicionar Propriedade"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "ID do contentor de índice secundário global",
+ "globalSecondaryIndexIdPlaceholder": "por exemplo, indexbyEmailId",
+ "projectionQuery": "Consulta de projeção",
+ "projectionQueryPlaceholder": "SELECIONAR c.email, c.accountId DE c",
+ "projectionQueryTooltip": "Saiba mais sobre como definir índices secundários globais.",
+ "disabledTitle": "Já está a ser criado um índice secundário global. Aguarde que seja concluído antes de criar outro."
+ },
+ "stringInput": {
+ "inputMismatchError": "A entrada {{input}} não corresponde ao {{selectedId}} selecionado"
+ },
+ "panelInfo": {
+ "information": "Informação",
+ "moreDetails": "Mais detalhes"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Dimensionamento",
+ "conflictResolution": "Resolução de Conflitos",
+ "settings": "Definições",
+ "indexingPolicy": "Política de Indexação",
+ "partitionKeys": "Chaves de Partição",
+ "partitionKeysPreview": "Chaves de Partição (pré-visualização)",
+ "computedProperties": "Propriedades Calculadas",
+ "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)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Selecione um tipo para cada índice.",
+ "enterFieldNameError": "Introduza um nome de campo.",
+ "wildcardPathError": "O caminho com carateres universais não está presente no nome do campo. Utilize um padrão como "
+ },
+ "partitionKey": {
+ "shardKey": "Chave de extensão",
+ "partitionKey": "Chave de partição",
+ "shardKeyTooltip": "A chave shard (campo) é utilizada para dividir os seus dados por vários conjuntos de réplicas (shards) para alcançar escalabilidade ilimitada. É fundamental escolher um campo que distribua uniformemente os seus dados.",
+ "partitionKeyTooltip": "é utilizado para distribuir automaticamente os dados pelas partições para fins de escalabilidade. Escolha uma propriedade no seu documento JSON que tenha um grande intervalo de valores e distribua uniformemente o volume dos pedidos.",
+ "sqlPartitionKeyTooltipSuffix": " Para pequenas cargas de trabalho pesadas de leitura ou cargas de trabalho pesadas de qualquer tamanho, o id é muitas vezes uma boa escolha.",
+ "partitionKeySubtext": "Para pequenas cargas de trabalho, o ID do item é uma escolha adequada para a chave de partição.",
+ "mongoPlaceholder": "por exemplo, categoryId",
+ "gremlinPlaceholder": "por exemplo, /address",
+ "sqlFirstPartitionKey": "Obrigatório - primeira chave de partição, por exemplo, /TenantId",
+ "sqlSecondPartitionKey": "segunda chave de partição, por exemplo, /UserId",
+ "sqlThirdPartitionKey": "terceira chave de partição, por exemplo, /SessionId",
+ "defaultPlaceholder": "por exemplo, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Estimativa de custo*",
+ "howWeCalculate": "Como calculamos isto",
+ "updatedCostPerMonth": "Custo mensal atualizado",
+ "currentCostPerMonth": "Custo mensal atual",
+ "perRu": "/RU",
+ "perHour": "/h",
+ "perDay": "/dia",
+ "perMonth": "/mês"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "O valor máximo inicial de RU/s com dimensionamento automático será determinado pelo sistema, com base nas definições atuais de débito manual e no armazenamento do seu recurso. Após o dimensionamento automático estar ativado, pode alterar o máximo de RU/s.",
+ "ttlWarningText": "O sistema eliminará automaticamente os itens com base no valor de TTL (em segundos) que fornecer, sem ser necessária uma operação de eliminação emitida explicitamente por uma aplicação cliente. Para mais informações, consulte",
+ "ttlWarningLinkText": "TTL no Azure Cosmos DB",
+ "unsavedIndexingPolicy": "política de indexação",
+ "unsavedDataMaskingPolicy": "política de mascaramento de dados",
+ "unsavedComputedProperties": "propriedades calculadas",
+ "unsavedEditorWarningPrefix": "Não guardou as alterações mais recentes efetuadas em",
+ "unsavedEditorWarningSuffix": ". Clique em Guardar para confirmar as alterações.",
+ "updateDelayedApplyWarning": "Está prestes a pedir um aumento do débito para além da capacidade pré-alocada. Esta operação demorará algum tempo a concluir.",
+ "scalingUpDelayMessage": "O aumento vertical demorará quatro a seis horas, uma vez que excede o que o Azure Cosmos DB consegue suportar instantaneamente neste momento, com base no número de partições físicas. Pode aumentar instantaneamente o débito para {{instantMaximumThroughput}} ou continuar com este valor e aguardar até que o aumento vertical esteja concluído.",
+ "exceedPreAllocatedMessage": "O pedido para aumentar o débito excede a capacidade pré-alocada, o que pode demorar mais do que o previsto. Existem três opções entre as quais pode escolher para continuar:",
+ "instantScaleOption": "Pode aumentar verticalmente de forma instantânea para {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Pode aumentar verticalmente de forma assíncrona para qualquer valor abaixo de {{maximumThroughput}} RU/s em quatro a seis horas.",
+ "quotaMaxOption": "O valor máximo atual da quota é {{maximumThroughput}} RU/s. Para ultrapassar este limite, tem de pedir um aumento da quota, que será revisto pela equipa do Azure Cosmos DB.",
+ "belowMinimumMessage": "Não pode reduzir o débito abaixo do valor mínimo atual de {{minimum}} RU/s. Para mais informações sobre este limite, consulte a documentação de quotas do serviço.",
+ "saveThroughputWarning": "A fatura será afetada quando atualizar as suas definições de débito. Reveja a estimativa de custo atualizada abaixo antes de guardar as suas alterações",
+ "currentAutoscaleThroughput": "Débito de dimensionamento automático atual:",
+ "targetAutoscaleThroughput": "Débito de dimensionamento automático de destino:",
+ "currentManualThroughput": "Débito manual atual:",
+ "targetManualThroughput": "Débito manual de destino:",
+ "applyDelayedMessage": "O pedido para aumentar o débito foi submetido com êxito. Esta operação demorará um a três dias úteis a concluir. Consulte o estado mais recente em Notificações.",
+ "databaseLabel": "Base de Dados:",
+ "containerLabel": "Contentor:",
+ "applyShortDelayMessage": "Está atualmente em curso um pedido para aumentar o débito. Esta operação demorará algum tempo a concluir.",
+ "applyLongDelayMessage": "Está atualmente em curso um pedido para aumentar o débito. Esta operação demorará um a três dias úteis a concluir. Consulte o estado mais recente em Notificações.",
+ "throughputCapError": "A conta está atualmente configurada com um limite total de débito de {{throughputCap}} RU/s. Esta atualização não é possível porque aumentaria o débito total para {{newTotalThroughput}} RU/s. Altere o limite de débito total na gestão de custos.",
+ "throughputIncrementError": "O valor do débito tem de estar em incrementos de 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "A Última Escrita Prevalece (predefinição)",
+ "customMergeProcedure": "Procedimento de Intercalação (personalizado)",
+ "mode": "Modo",
+ "conflictResolverProperty": "Propriedade de Resolução de Conflitos",
+ "storedProcedure": "Procedimento armazenado",
+ "lwwTooltip": "Obtém ou define o nome de uma propriedade de número inteiro nos seus documentos, utilizada pelo esquema de resolução de conflitos baseado em A Última Escrita Prevalece (LWW). Por predefinição, o sistema utiliza a propriedade de carimbo de data/hora definida pelo sistema, _ts, para decidir a versão prevalecente do documento em conflito. Especifique a sua própria propriedade de número inteiro se pretender substituir a resolução de conflitos predefinida baseada no carimbo de data/hora.",
+ "customTooltip": "Obtém ou define o nome de um procedimento armazenado (também conhecido como procedimento de intercalação) para resolver os conflitos. Pode escrever lógica definida pela aplicação para determinar qual das versões em conflito de um documento prevalece. O procedimento armazenado será executado ao nível da transação, exatamente uma vez, do lado do servidor. Se não fornecer um procedimento armazenado, os conflitos serão preenchidos em",
+ "customTooltipConflictsFeed": " feed de conflitos",
+ "customTooltipSuffix": ". Pode atualizar/voltar a registar o procedimento armazenado em qualquer altura."
+ },
+ "changeFeed": {
+ "label": "Política de retenção do registo do feed de alterações",
+ "tooltip": "Ative a política de retenção do registo do feed de alterações para reter, por predefinição, os últimos 10 minutos de histórico dos itens no contentor. Para tal, o custo de unidades de pedido (RU) deste contentor será multiplicado por um fator de dois para escritas. As leituras não são afetadas."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Para consultas que filtram por várias propriedades, crie vários índices de campo único em vez de um índice composto.",
+ "disclaimerCompoundIndexesLink": " Índices compostos ",
+ "disclaimerSuffix": "são utilizados apenas para ordenar resultados da consulta. Se precisar de adicionar um índice composto, pode criá-lo com o Mongo Shell.",
+ "compoundNotSupported": "As coleções com índices compostos ainda não são suportadas no editor de indexação. Para modificar a política de indexação desta coleção, utilize o Mongo Shell.",
+ "aadError": "Para utilizar o editor de política de indexação, é necessário iniciar sessão no",
+ "aadErrorLink": "portal do Azure.",
+ "refreshingProgress": "A atualizar o progresso da transformação do índice",
+ "canMakeMoreChangesZero": "Pode efetuar mais alterações de indexação quando a transformação do índice atual estiver concluída. ",
+ "refreshToCheck": "Atualize para verificar se foi concluído.",
+ "canMakeMoreChangesProgress": "Pode efetuar mais alterações de indexação quando a transformação do índice atual estiver concluída. Está {{progress}}% concluído. ",
+ "refreshToCheckProgress": "Atualize para verificar o progresso.",
+ "definitionColumn": "Definição",
+ "typeColumn": "Tipo",
+ "dropIndexColumn": "Remover Índice",
+ "addIndexBackColumn": "Adicionar novamente o índice",
+ "deleteIndexButton": "Botão Eliminar índice",
+ "addBackIndexButton": "Botão Adicionar Novamente o Índice",
+ "currentIndexes": "Índice(s) atual(is)",
+ "indexesToBeDropped": "Índice(s) a remover",
+ "indexFieldName": "Nome do Campo do Índice",
+ "indexType": "Tipo de Índice",
+ "selectIndexType": "Selecione um tipo de índice",
+ "undoButton": "Botão Anular"
+ },
+ "subSettings": {
+ "timeToLive": "TTL",
+ "ttlOff": "Desativado",
+ "ttlOnNoDefault": "Ativado (sem predefinição)",
+ "ttlOn": "Ativado",
+ "seconds": "segundo(s)",
+ "timeToLiveInSeconds": "TTL em segundos",
+ "analyticalStorageTtl": "TTL do Armazenamento Analítico",
+ "geospatialConfiguration": "Configuração Geoespacial",
+ "geography": "Geografia",
+ "geometry": "Geometria",
+ "uniqueKeys": "Chaves exclusivas",
+ "mongoTtlMessage": "Para ativar o TTL da sua coleção/documentos,",
+ "mongoTtlLinkText": "criar um índice de TTL",
+ "partitionKeyTooltipTemplate": "Este {{partitionKeyName}} é utilizado para distribuir dados por várias partições para fins de escalabilidade. O valor \"{{partitionKeyValue}}\" determina a forma como os documentos são particionados.",
+ "largePartitionKeyEnabled": "Foi ativada uma chave de partição grande \"{{partitionKeyName}}\".",
+ "hierarchicalPartitioned": "Contentor particionado de forma hierárquica.",
+ "nonHierarchicalPartitioned": "Contentor particionado de forma não hierárquica."
+ },
+ "scale": {
+ "freeTierInfo": "Com o escalão gratuito, obterá gratuitamente {{ru}} RU/s iniciais e {{storage}} GB de armazenamento nesta conta. Para manter a conta gratuita, mantenha o total de RU/s em todos os recursos da conta em {{ru}} RU/s.",
+ "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",
+ "throughputRangeLabel": "Débito ({{min}} - {{max}} RU/s)",
+ "unlimited": "ilimitado"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Alterar {{partitionKeyName}}",
+ "currentPartitionKey": "{{partitionKeyName}} atual",
+ "partitioning": "Criação de Partições",
+ "hierarchical": "Hierárquico",
+ "nonHierarchical": "Não hierárquico",
+ "safeguardWarning": "Para salvaguardar a integridade dos dados copiados para o novo contentor, assegure-se de que não são efetuadas atualizações ao contentor de origem durante toda a duração do processo de alteração da chave de partição.",
+ "changeDescription": "Para alterar a chave de partição, tem de ser criado um novo contentor de destino ou selecionado um contentor de destino existente. Os dados serão depois copiados para o contentor de destino.",
+ "changeButton": "Alterar",
+ "changeJob": "Tarefa de alteração de {{partitionKeyName}}",
+ "cancelButton": "Cancelar",
+ "documentsProcessed": "({{processedCount}} de {{totalCount}} documentos processados)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Propriedades calculadas",
+ "learnMorePrefix": "sobre como definir propriedades calculadas e como as utilizar."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Política de Indexação"
+ },
+ "dataMasking": {
+ "ariaLabel": "Política de Mascaramento de Dados",
+ "validationFailed": "A validação falhou:",
+ "includedPathsRequired": "includedPaths é obrigatório",
+ "includedPathsMustBeArray": "includedPaths tem de ser uma matriz",
+ "excludedPathsMustBeArray": "excludedPaths tem de ser uma matriz se for fornecido"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Política de Vetor",
+ "fullTextPolicy": "Política de Texto Completo",
+ "createFullTextPolicy": "Criar nova política de pesquisa em texto completo"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Este contentor tem os seguintes índices definidos.",
+ "learnMoreSuffix": "sobre como definir índices secundários globais e como os utilizar.",
+ "jsonAriaLabel": "JSON do Índice Secundário Global",
+ "addIndex": "Adicionar índice",
+ "settingsTitle": "Definições do Índice Secundário Global",
+ "sourceContainer": "Contentor de origem",
+ "indexDefinition": "Definição de índice secundário global"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Falha ao atualizar o progresso da transformação do índice"
+ },
+ "throughputInput": {
+ "autoscale": "Dimensionamento automático",
+ "manual": "Manual",
+ "minimumRuS": "Mínimo de RU/s",
+ "maximumRuS": "Máximo de RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Capacidade de armazenamento",
+ "fixed": "Corrigido",
+ "unlimited": "Ilimitado",
+ "instant": "Instantâneo",
+ "fourToSixHrs": "Quatro a seis horas",
+ "autoscaleDescription": "Com base na utilização, o débito de {{resourceType}} será dimensionado de",
+ "freeTierWarning": "Será aplicada faturação se aprovisionar mais de {{ru}} RU/s de débito manual, ou se o recurso for dimensionado para além de {{ru}} RU/s com dimensionamento automático.",
+ "capacityCalculator": "Estimar as RU/s necessárias com",
+ "capacityCalculatorLink": " calculadora de capacidade",
+ "fixedStorageNote": "Ao utilizar uma coleção com capacidade de armazenamento fixa, pode definir até 10 000 RU/s.",
+ "min": "mínimo",
+ "max": "máximo"
+ },
+ "throughputBuckets": {
+ "label": "Registos de Débito",
+ "bucketLabel": "Registo {{id}}",
+ "dataExplorerQueryBucket": " (Registo de Consultas do Data Explorer)",
+ "active": "Ativo",
+ "inactive": "Inativo"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/ru/Resources.json b/src/Localization/ru/Resources.json
new file mode 100644
index 000000000..c39f521c3
--- /dev/null
+++ b/src/Localization/ru/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "ОК",
+ "cancel": "Отмена",
+ "close": "Закрыть",
+ "save": "Сохранить",
+ "delete": "Удалить",
+ "update": "Обновить",
+ "discard": "Отменить",
+ "execute": "Выполнить",
+ "loading": "Загрузка",
+ "loadingEllipsis": "Идет загрузка…",
+ "next": "Далее",
+ "previous": "Назад",
+ "yes": "Да",
+ "no": "Нет",
+ "result": "Результат",
+ "learnMore": "Подробнее",
+ "getStarted": "Начало работы",
+ "retry": "Повторить",
+ "apply": "Применить",
+ "refresh": "Обновить",
+ "copy": "Копировать",
+ "create": "Создать",
+ "confirm": "Подтвердить",
+ "open": "Открыть",
+ "rename": "Переименовать",
+ "download": "Скачать",
+ "upload": "Отправить",
+ "connect": "Подключить",
+ "remove": "Удалить",
+ "load": "Загрузить",
+ "publish": "Опубликовать",
+ "browse": "Обзор",
+ "increaseValueBy1": "Увеличить значение на 1",
+ "decreaseValueBy1": "Уменьшить значение на 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Вас приветствует Azure Cosmos DB",
+ "postgres": "Добро пожаловать в Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Добро пожаловать в Azure DocumentDB (с совместимостью с MongoDB)"
+ },
+ "subtitle": {
+ "default": "Глобально распределенная многомодельная служба базы данных для использования в любом масштабе",
+ "getStarted": "Начните работу с нашими примерами наборов данных, документацией и дополнительными инструментами."
+ },
+ "quickStart": {
+ "title": "Начать быстрый запуск",
+ "description": "Запустите краткое обучающее руководство, чтобы начать работу с примерами данных"
+ },
+ "newCollection": {
+ "title": "Новый {{collectionName}}",
+ "description": "Создайте новый контейнер для хранения данных и обеспечения пропускной способности"
+ },
+ "samplesGallery": {
+ "title": "Галерея примеров Azure Cosmos DB",
+ "description": "Ознакомьтесь с примерами, демонстрирующими масштабируемые и интеллектуальные шаблоны приложений. Попробуйте прямо сейчас и убедитесь, как быстро вы можете перейти от концепции к коду с Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Подключить",
+ "description": "Предпочитаете использовать собственные инструменты? Найдите строку подключения, необходимую для соединения.",
+ "pgAdmin": {
+ "title": "Свяжитесь с pgAdmin",
+ "description": "Предпочитаете pgAdmin? Здесь вы найдете строки подключения"
+ },
+ "vsCode": {
+ "title": "Подключиться к VS Code",
+ "description": "Запрашивайте данные и управляйте кластерами MongoDB и DocumentDB в Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "Оболочка PostgreSQL",
+ "description": "Создайте таблицу и взаимодействуйте с данными, используя командный интерфейс PostgreSQL"
+ },
+ "vcoreMongo": {
+ "title": "Оболочка Mongo",
+ "description": "Создайте коллекцию и взаимодействуйте с данными, используя командный интерфейс MongoDB"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Впервые работаете с Cosmos DB PGSQL?",
+ "body": "Добро пожаловать! Если вы новичок в Cosmos DB PGSQL и вам нужна помощь в начале работы, здесь вы можете найти примеры данных и запросов."
+ },
+ "resetPassword": {
+ "headline": "Создайте пароль",
+ "body": "Если вы еще не сменили пароль, сделайте это прямо сейчас."
+ },
+ "coachMark": {
+ "headline": "Начнём с образца {{collectionName}}",
+ "body": "Вам будет предложено создать тестовый контейнер с тестовыми данными, после чего мы проведем для вас ознакомительный обзор инструмента \"Обозреватель данных\". Вы также можете отменить запуск этого тура и исследовать местность самостоятельно"
+ }
+ },
+ "sections": {
+ "recents": "Последние",
+ "clearRecents": "Очистить последние",
+ "top3": "Три главных вещи, которые вам нужно знать",
+ "learningResources": "Учебные материалы",
+ "nextSteps": "Дальнейшие действия",
+ "tipsAndLearnMore": "Советы и дополнительная информация",
+ "notebook": "Записная книжка",
+ "needHelp": "Нужна помощь?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Расширенные шаблоны моделирования",
+ "description": "Изучите передовые стратегии оптимизации вашей базы данных."
+ },
+ "partitioning": {
+ "title": "Передовые методы разделения данных",
+ "description": "Научитесь применять стратегии моделирования данных и их разделения на разделы."
+ },
+ "resourcePlanning": {
+ "title": "Спланируйте свои потребности в ресурсах",
+ "description": "Ознакомьтесь с различными вариантами конфигурации."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Что такое API MongoDB?",
+ "description": "Разберитесь в Azure Cosmos DB для MongoDB и его возможностях."
+ },
+ "features": {
+ "title": "Особенности и синтаксис",
+ "description": "Узнайте о преимуществах и особенностях"
+ },
+ "migrate": {
+ "title": "Перенесите свои данные",
+ "description": "Этапы подготовки к миграции данных"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Создайте Java-приложение",
+ "description": "Создайте Java-приложение, используя SDK."
+ },
+ "partitioning": {
+ "title": "Передовые методы разделения данных",
+ "description": "Узнайте, как работает разбиение на разделы."
+ },
+ "requestUnits": {
+ "title": "Единицы запроса (ЕЗ)",
+ "description": "Разберитесь в тарифах RU."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Моделирование данных",
+ "description": "Рекомендации по моделированию графовых данных"
+ },
+ "partitioning": {
+ "title": "Передовые методы разделения данных",
+ "description": "Узнайте, как работает разбиение на разделы"
+ },
+ "queryData": {
+ "title": "Запрос данных",
+ "description": "Запросы к данным с помощью Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Что такое API таблиц?",
+ "description": "Разберитесь в Azure Cosmos DB for Table и его возможностях"
+ },
+ "migrate": {
+ "title": "Перенесите свои данные",
+ "description": "Сведения о миграции данных"
+ },
+ "faq": {
+ "title": "Часто задаваемые вопросы об Azure Cosmos DB для таблиц",
+ "description": "Часто задаваемые вопросы об Azure Cosmos DB для таблиц"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Клавиатурные сочетания в Data Explorer",
+ "description": "Изучите сочетания клавиш для навигации по обозревателю данных."
+ },
+ "liveTv": {
+ "title": "Изучение основ",
+ "description": "Смотрите вводные и обучающие видеоролики о Azure Cosmos DB Live TV."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Начните работу с SDK",
+ "description": "Узнайте больше об SDK Azure Cosmos DB."
+ },
+ "migrate": {
+ "title": "Перенесите свои данные",
+ "description": "Перенесите данные, используя службы Azure и решения с открытым исходным кодом."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Создайте приложение с помощью Node.js",
+ "description": "Создайте приложение Node.js."
+ },
+ "gettingStarted": {
+ "title": "Руководство по началу работы",
+ "description": "Изучите основы, чтобы начать."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Создать контейнер",
+ "description": "Ознакомьтесь с параметрами создания контейнера."
+ },
+ "throughput": {
+ "title": "Пропускная способность предоставления",
+ "description": "Узнайте, как настроить пропускную способность."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Начать ",
+ "description": "Создавайте, запрашивайте и обходите данные с помощью консоли Gremlin"
+ },
+ "importData": {
+ "title": "Импорт графических данных",
+ "description": "Узнайте, как осуществлять массовую загрузку данных с помощью BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Создайте приложение на платформе .NET",
+ "description": "Как получить доступ к Azure Cosmos DB for Table из приложения .NET."
+ },
+ "java": {
+ "title": "Создайте Java-приложение",
+ "description": "Создайте приложение Azure Cosmos DB for Table с помощью Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Моделирование данных",
+ "distributionColumn": "Как выбрать столбец распределения",
+ "buildApps": "Создавайте приложения с помощью Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Перенести данные",
+ "vectorSearch": "Создавайте приложения с искусственным интеллектом с помощью Vector Search",
+ "buildApps": "Создавайте приложения с помощью Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Настройка производительности",
+ "diagnosticQueries": "Полезные диагностические запросы",
+ "sqlReference": "Справочник по распределенному SQL"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Поиск векторов",
+ "textIndexing": "Индексирование текста",
+ "troubleshoot": "Устранение распространенных неполадок"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Создание базы данных",
+ "useTitle": "Используйте свою базу данных",
+ "newContainer": {
+ "title": "Новый контейнер",
+ "description": "Создайте целевой контейнер для хранения ваших данных"
+ },
+ "sampleData": {
+ "title": "Пример данных",
+ "description": "Загрузите примеры данных в свою базу данных"
+ },
+ "sampleVectorData": {
+ "title": "Пример векторных данных",
+ "description": "Загрузите примеры векторных данных с помощью text-embedding-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Разработка приложений",
+ "description": "Начните здесь, чтобы использовать SDK для создания своих приложений"
+ },
+ "sampleGallery": {
+ "title": "Образцы галереи",
+ "description": "Получите реальные примеры комплексного решения"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Пример данных",
+ "startButton": "Начать",
+ "createPrompt": "Создайте контейнер \" {{containerName}} \" и импортируйте в него примерные данные. Это может занять несколько минут.",
+ "creatingContainer": "Создание контейнера \" {{containerName}} \"...",
+ "importingData": "Импорт данных в \" {{containerName}} \"...",
+ "success": "Успешно создан \" {{containerName}} \" с примерами данных.",
+ "errorContainerExists": "Контейнер \" {{containerName}} \" в базе данных \" {{databaseName}} \" уже существует. Удалите его и попробуйте снова.",
+ "errorCreateContainer": "Не удалось создать контейнер: {{error}}",
+ "errorImportData": "Не удалось импортировать данные: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Новый {{containerName}}",
+ "restoreContainer": "Восстановить {{containerName}}",
+ "deleteDatabase": "Удалить {{databaseName}}",
+ "deleteContainer": "Удалить {{containerName}}",
+ "newSqlQuery": "Новый SQL-запрос",
+ "newQuery": "Новый запрос",
+ "openMongoShell": "Открыть оболочку Mongo",
+ "newShell": "Новая оболочка",
+ "openCassandraShell": "Открыть оболочку Cassandra",
+ "newStoredProcedure": "Новая хранимая процедура",
+ "newUdf": "Новая UDF",
+ "newTrigger": "Новый триггер",
+ "deleteStoredProcedure": "Удалить хранимую процедуру",
+ "deleteTrigger": "Удалить триггер",
+ "deleteUdf": "Удалить пользовательскую функцию"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Новый элемент",
+ "newDocument": "Новый документ",
+ "uploadItem": "Передать элемент",
+ "applyFilter": "Применить фильтр",
+ "unsavedChanges": "Несохраненные изменения",
+ "unsavedChangesMessage": "Ваши несохраненные изменения будут потеряны. Хотите продолжить?",
+ "createDocumentFailed": "Не удалось создать документ",
+ "updateDocumentFailed": "Не удалось обновить документ",
+ "documentDeleted": "Документ успешно удален.",
+ "deleteDocumentDialogTitle": "Удалить документ",
+ "deleteDocumentsDialogTitle": "Удалить документы",
+ "throttlingError": "Некоторые документы не удалось удалить из-за ошибки ограничения скорости. Попробуйте еще раз чуть позже. Чтобы избежать этого в будущем, рассмотрите возможность увеличения пропускной способности контейнера или базы данных.",
+ "deleteFailed": "Удалить один или несколько ({{error}}) документов не удалось",
+ "missingShardProperty": "В документе отсутствует свойство экстента: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Не удалось обновить сетку документов",
+ "confirmDelete": "Вы действительно хотите удалить {{documentName}}?",
+ "confirmDeleteTitle": "Подтвердить удаление",
+ "selectedItems": "выделенные элементы ({{count}})",
+ "selectedItem": "выбранный элемент",
+ "selectedDocuments": "выбранные документы ({{count}})",
+ "selectedDocument": "выбранный документ",
+ "deleteDocumentFailedLog": "Не удалось удалить документ {{documentId}}, код состояния {{statusCode}}",
+ "deleteSuccessLog": "Один или несколько ({{count}}) документов успешно удалены",
+ "deleteThrottledLog": "Не удалось удалить один или несколько документов ({{count}}) из-за ошибки \"Слишком большой запрос\" (429). Выполняется повторная попытка...",
+ "missingShardKeyLog": "Не удалось сохранить новый документ: не определён ключ экстента документа",
+ "filterTooltip": "Введите предикат запроса или выберите его из списка.",
+ "loadMore": "Загрузить еще",
+ "documentEditor": "Редактор документов",
+ "savedFilters": "Сохраненные фильтры",
+ "defaultFilters": "Фильтры по умолчанию",
+ "abort": "Прервать",
+ "deletingDocuments": "Выполняется удаление одного или нескольких ({{count}}) документов",
+ "deletedDocumentsSuccess": "Один или несколько ({{count}}) документов успешно удалены.",
+ "deleteAborted": "Удаление одного или нескольких документов прервано.",
+ "failedToDeleteDocuments": "Не удалось удалить один или несколько ({{count}}) документов.",
+ "requestTooLargeBase": "Некоторые запросы на удаление не выполнены из-за исключения \"Запрос слишком большой\" (429)",
+ "retriedSuccessfully": "но повторные попытки прошли успешно.",
+ "retryingNow": "Выполняется повторная попытка.",
+ "increaseThroughputTip": "Чтобы избежать этого в будущем, рассмотрите возможность увеличения пропускной способности контейнера или базы данных.",
+ "numberOfSelectedDocuments": "Количество выбранных документов: {{count}}",
+ "mongoFilterPlaceholder": "Введите предикат запроса (например, {\"id\":\"foo\"}), выберите его из раскрывающегося списка или оставьте это поле пустым, чтобы запросить все документы.",
+ "sqlFilterPlaceholder": "Введите предикат запроса (например, WHERE c.id=\"1\"), выберите его из раскрывающегося списка или оставьте это поле пустым, чтобы запросить все документы.",
+ "error": "Ошибка",
+ "warning": "Предупреждение"
+ },
+ "query": {
+ "executeQuery": "Выполнить запрос",
+ "executeSelection": "Выполнить выделенное",
+ "saveQuery": "Сохранить запрос",
+ "downloadQuery": "Скачать запрос",
+ "cancelQuery": "Отменить запрос",
+ "openSavedQueries": "Открыть сохраненные запросы",
+ "vertical": "Вертикально",
+ "horizontal": "Горизонтально",
+ "view": "Просмотр",
+ "editingQuery": "Выполняется редактирование запроса"
+ },
+ "storedProcedure": {
+ "id": "ИД хранимой процедуры",
+ "idPlaceholder": "Введите новый идентификатор хранимой процедуры",
+ "idAriaLabel": "ИД хранимой процедуры",
+ "body": "Тело хранимой процедуры",
+ "bodyAriaLabel": "Тело хранимой процедуры",
+ "successfulExecution": "Хранимая процедура выполнена успешно",
+ "resultAriaLabel": "Результат выполнения хранимой процедуры",
+ "logsAriaLabel": "Журналы выполнения хранимой процедуры",
+ "errors": "Ошибки:",
+ "errorDetailsAriaLabel": "Ссылка на сведения об ошибке",
+ "moreDetails": "Больше сведений",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "ИД триггера",
+ "idPlaceholder": "Введите новый идентификатор триггера",
+ "type": "Тип триггера",
+ "operation": "Операция триггера",
+ "body": "Тело триггера",
+ "bodyAriaLabel": "Тело триггера",
+ "pre": "До",
+ "post": "Опубликовать",
+ "all": "Все",
+ "operationCreate": "Создать",
+ "operationDelete": "Удалить",
+ "operationReplace": "Заменить"
+ },
+ "udf": {
+ "id": "ИД определяемой пользователем функции",
+ "idPlaceholder": "Введите новый идентификатор определяемой пользователем функции",
+ "body": "Тело определенной пользователем функции",
+ "bodyAriaLabel": "Тело определенной пользователем функции"
+ },
+ "conflicts": {
+ "unsavedChanges": "Несохраненные изменения",
+ "changesWillBeLost": "Изменения будут потеряны. Хотите продолжить?",
+ "resolveConflictFailed": "Не удалось разрешить конфликт",
+ "deleteConflictFailed": "Не удалось устранить конфликт",
+ "refreshGridFailed": "Не удалось обновить сетку документов"
+ },
+ "mongoShell": {
+ "title": "Оболочка Mongo"
+ }
+ },
+ "panes": {
+ "deleteDatabase": {
+ "panelTitle": "Удалить {{databaseName}}",
+ "warningMessage": "Предупреждение! Действие, которое вы собираетесь предпринять, невозможно отменить. Если вы продолжите, ресурс и все его дочерние ресурсы будут удалены без возможности восстановления.",
+ "confirmPrompt": "Подтвердите, введя идентификатор {{databaseName}} (имя)",
+ "inputMismatch": "Введённое имя базы данных {{databaseName}} \"{{input}}\" не соответствует выбранному {{databaseName}} \"{{selectedId}}\"",
+ "feedbackTitle": "Помогите нам улучшить Azure Cosmos DB!",
+ "feedbackReason": "Какова причина удаления этой {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Удалить {{collectionName}}",
+ "confirmPrompt": "Подтвердите, введя идентификатор {{collectionName}}",
+ "inputMismatch": "Введённое имя базы данных {{input}} не соответствует выбранному {{selectedId}}",
+ "feedbackTitle": "Помогите нам улучшить Azure Cosmos DB!",
+ "feedbackReason": "Какова причина удаления этой {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "База данных {{suffix}}",
+ "databaseIdLabel": "Идентификатор базы данных",
+ "keyspaceIdLabel": "ИД ключевого пространства",
+ "databaseIdPlaceholder": "Введите новый идентификатор {{databaseLabel}}",
+ "databaseTooltip": "{{databaseLabel}} — логический контейнер с одним или несколькими {{collectionsLabel}}",
+ "shareThroughput": "Делиться пропускной способностью в пределах {{collectionsLabel}}",
+ "shareThroughputTooltip": "Пропускная способность, настроенная на уровне {{databaseLabel}}, будет совместно использоваться всеми {{collectionsLabel}} в {{databaseLabel}}.",
+ "greaterThanError": "Введите значение, большее {{minValue}}, для пропускной способности автопилота",
+ "acknowledgeSpendError": "Подтвердите, что осведомлены о смете ежемесячных расходов за {{period}}.",
+ "acknowledgeSpendErrorMonthly": "Подтвердите, что осведомлены о смете ежемесячных расходов.",
+ "acknowledgeSpendErrorDaily": "Подтвердите, что осведомлены о смете ежемесячных расходов за день.",
+ "provisionSharedThroughputTitle": "Подготовить пропускную способность для совместного использования",
+ "provisionThroughputLabel": "Подготовить пропускную способность"
+ },
+ "addCollection": {
+ "createNew": "Создать новую",
+ "useExisting": "Использовать существующие",
+ "databaseTooltip": "База данных аналогична пространству имён. Это единица управления для набора {{collectionName}}.",
+ "shareThroughput": "Делиться пропускной способностью в пределах {{collectionName}}",
+ "shareThroughputTooltip": "Пропускная способность, настроенная на уровне базы данных, будет совместно использоваться всеми {{collectionName}} в базе данных.",
+ "collectionIdLabel": "ИД {{collectionName}}",
+ "collectionIdTooltip": "Уникальный идентификатор {{collectionName}}, который используется для маршрутизации на основе идентификаторов в REST и всех пакетах SDK.",
+ "collectionIdPlaceholder": "например, {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ИД, пример {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Выберите существующий идентификатор {{databaseName}}",
+ "existingDatabasePlaceholder": "Выберите существующий идентификатор {{databaseName}}",
+ "indexing": "Индексирование",
+ "turnOnIndexing": "Включить индексирование",
+ "automatic": "Автоматически",
+ "turnOffIndexing": "Отключить индексирование",
+ "off": "Откл.",
+ "sharding": "Экстентирование",
+ "shardingTooltip": "Экстентированные коллекции распределяют ваши данные по множеству наборов реплик (экстентов) для обеспечения неограниченного масштабирования. Для экстентирования коллекций необходимо выбрать ключ экстента (поле), с помощью которого данные будут распределяться равномерно.",
+ "unsharded": "Неэкстентированный",
+ "unshardedLabel": "Неэкстентированный (лимит 20 ГБ)",
+ "sharded": "Экстентированный",
+ "addPartitionKey": "Добавить иерархический ключ раздела",
+ "hierarchicalPartitionKeyInfo": "Эта функция позволяет секционировать данные с помощью ключей на нескольких уровнях (до трёх) для более равномерного распределения. Требуется SDK .NET V3, Java V4 или предварительная версия SDK JavaScript V3.",
+ "provisionDedicatedThroughput": "Подготовить выделенную пропускную способность для этого {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "При необходимости можно подготовить выделенную пропускную способность для {{collectionName}} в базе данных, где уже подготовлена пропускная способность. Эта выделенная пропускная способность не будет использоваться совместно с другими {{collectionNamePlural}} в базе данных и не учитывается в общей пропускной способности, выделенной для базы данных. Оплата за эту пропускную способность будет взиматься дополнительно к сумме, выделенной на уровне базы данных.",
+ "uniqueKeysPlaceholderMongo": "Пути, разделённые запятыми, например firstName,address/zipCode",
+ "uniqueKeysPlaceholderSql": "Пути, разделённые запятыми, например /firstName,/address/zipCode",
+ "addUniqueKey": "Добавить уникальный ключ",
+ "enableAnalyticalStore": "Включить аналитическое хранилище",
+ "disableAnalyticalStore": "Отключить аналитическое хранилище",
+ "on": "Вкл.",
+ "analyticalStoreSynapseLinkRequired": "Для создания аналитического хранилища {{collectionName}} требуется Azure Synapse Link. Включите Azure Synapse Link для этой учётной записи Cosmos DB.",
+ "enable": "Включить",
+ "containerVectorPolicy": "Политика вектора контейнера",
+ "containerFullTextSearchPolicy": "Политика полнотекстового поиска в контейнере",
+ "advanced": "Расширенная",
+ "mongoIndexingTooltip": "Поле _id индексируется по умолчанию. Создание индекса с подстановочными знаками для всех полей оптимизирует запросы и рекомендуется для разработки.",
+ "createWildcardIndex": "Создать индекс с подстановочными знаками для всех полей",
+ "legacySdkCheckbox": "Моё приложение использует устаревшую версию SDK Cosmos .NET или Java (.NET V1 или Java V2)",
+ "legacySdkInfo": "Чтобы обеспечить совместимость со старыми SDK, созданный контейнер будет использовать устаревшую схему секционирования, которая поддерживает значения ключа секционирования размером не более 101 байта. Если эта возможность включена, использование иерархических ключей секционирования будет недоступно.",
+ "indexingOnInfo": "По умолчанию все свойства в документах будут индексироваться для гибкости и эффективности запросов.",
+ "indexingOffInfo": "Индексация будет отключена. Рекомендуется, если не требуется выполнять запросы или используются только операции с ключами.",
+ "indexingOffWarning": "Если создать контейнер с отключённым индексированием, изменения политики индексирования будут недоступны. Изменения разрешены только для контейнеров с включённой политикой индексирования.",
+ "acknowledgeSpendErrorMonthly": "Подтвердите, что осведомлены о смете ежемесячных расходов.",
+ "acknowledgeSpendErrorDaily": "Подтвердите, что осведомлены о смете ежемесячных расходов за день.",
+ "unshardedMaxRuError": "Неэкстентированные коллекции поддерживают до 10 000 ЕЗ",
+ "acknowledgeShareThroughputError": "Подтвердите, что осведомлены о сметной стоимости этой выделенной пропускной способности.",
+ "vectorPolicyError": "Исправьте ошибки в политике вектора контейнера",
+ "fullTextSearchPolicyError": "Исправьте ошибки в политике полнотекстового поиска контейнера",
+ "addingSampleDataSet": "Выполняется добавление примера набора данных",
+ "databaseFieldLabelName": "Имя базы данных",
+ "databaseFieldLabelId": "Идентификатор базы данных",
+ "newDatabaseIdPlaceholder": "Введите новый ИД базы данных",
+ "newDatabaseIdAriaLabel": "Новый идентификатор базы данных, введите новый идентификатор базы данных",
+ "createNewDatabaseAriaLabel": "Создать базу данных",
+ "useExistingDatabaseAriaLabel": "Использовать существующую базу данных",
+ "chooseExistingDatabase": "Выберите существующую базу данных",
+ "teachingBubble": {
+ "step1Headline": "Создание примера базы данных",
+ "step1Body": "База данных — это родительский объект контейнера. Можно создать новую базу данных или использовать существующую. В этом руководстве мы создаем новую базу данных с именем SampleDB.",
+ "step1LearnMore": "Подробнее о ресурсах.",
+ "step2Headline": "Настраивается пропускная способность",
+ "step2Body": "Cosmos DB рекомендует совместное использование пропускной способности на уровне базы данных. Автомасштабирование обеспечит гибкий объем пропускной способности в зависимости от максимального значения ЕЗ (единиц запросов) в секунду.",
+ "step2LearnMore": "Подробнее о единицах запросов в секунду.",
+ "step3Headline": "Присвоение имени контейнеру",
+ "step3Body": "Дайте имя своему контейнеру",
+ "step4Headline": "Задание ключа раздела",
+ "step4Body": "Последний шаг — нужно определить ключ раздела для коллекции. В этом примере выбран /address. Хороший ключ раздела должен иметь широкий диапазон возможных значений",
+ "step4CreateContainer": "Создать контейнер",
+ "step5Headline": "Создание примера контейнера",
+ "step5Body": "Создается пример контейнера, и для вас добавляются образцы данных. Это займет около минуты.",
+ "step5BodyFollowUp": "После создания примера контейнера просмотрите пример набора данных и выполните следующие шаги",
+ "stepOfTotal": "Шаг {{current}} из {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Ключ экстента (поле) используется для распределения ваших данных по множеству наборов реплик (экстентов) для обеспечения неограниченного масштабирования. Важно выбрать поле, по которому данные распределяются равномерно.",
+ "partitionKeyTooltip": "{{partitionKeyName}} используется для автоматического распределения данных между разделами для масштабируемости. Выберите в документе JSON свойство, которое имеет широкий диапазон значений и равномерно распределяет объем запросов.",
+ "partitionKeyTooltipSqlSuffix": " Для небольших рабочих нагрузок с интенсивным чтением или любых по объёму с интенсивной записью идентификатор часто является хорошим выбором.",
+ "shardKeyLabel": "Ключ экстента",
+ "partitionKeyLabel": "Ключ раздела",
+ "shardKeyPlaceholder": "например, categoryId",
+ "partitionKeyPlaceholderDefault": "например, /address",
+ "partitionKeyPlaceholderFirst": "Обязательно: первый ключ раздела, например /TenantId",
+ "partitionKeyPlaceholderSecond": "второй ключ раздела, например /UserId",
+ "partitionKeyPlaceholderThird": "третий ключ раздела, например /SessionId",
+ "partitionKeyPlaceholderGraph": "например, /address/zipCode",
+ "uniqueKeysTooltip": "Уникальные ключи позволяют разработчикам добавить дополнительный слой целостности данных в базе. Создавая уникальную политику ключей при создании контейнера, вы обеспечиваете уникальность одного или нескольких значений на каждый ключ секционирования.",
+ "uniqueKeysLabel": "Уникальные ключи",
+ "analyticalStoreLabel": "Аналитическое хранилище",
+ "analyticalStoreTooltip": "Включите для аналитического хранилища возможность выполнения анализа операционных данных почти в реальном времени без снижения производительности транзакционных рабочих нагрузок.",
+ "analyticalStoreDescription": "Включите для аналитического хранилища возможность выполнения анализа операционных данных почти в реальном времени без снижения производительности транзакционных рабочих нагрузок.",
+ "vectorPolicyTooltip": "Опишите все свойства данных, содержащих векторы, чтобы сделать их доступными для запросов на поиск по сходству."
+ },
+ "settings": {
+ "pageOptions": "Параметры страницы",
+ "pageOptionsDescription": "Выберите \"Настраиваемое\", чтобы указать, что нужно выводить фиксированное количество результатов запроса на страницу, или \"Без ограничений\", чтобы показывать неограниченное количество результатов на страницу.",
+ "queryResultsPerPage": "Результатов запроса на страницу",
+ "queryResultsPerPageTooltip": "Укажите количество результатов запроса на страницу.",
+ "customQueryItemsPerPage": "Количество элементов пользовательских запросов на странице",
+ "custom": "Пользовательская",
+ "unlimited": "Без ограничений",
+ "entraIdRbac": "Включить RBAC Entra ID",
+ "entraIdRbacDescription": "Выберите \"Автоматически\", чтобы включить RBAC для Entra ID автоматически. Используйте значения True или False, чтобы принудительно включить или отключить RBAC для Entra ID.",
+ "true": "Истина",
+ "false": "Ложь",
+ "regionSelection": "Выбор региона",
+ "regionSelectionDescription": "Изменяет регион, который клиент Cosmos использует для доступа к учетной записи.",
+ "selectRegion": "Выбрать регион",
+ "selectRegionTooltip": "Изменяет конечную точку учётной записи, используемую для выполнения клиентских операций.",
+ "globalDefault": "Глобальное (по умолчанию)",
+ "readWrite": "(Чтение/запись)",
+ "read": "(Чтение)",
+ "queryTimeout": "Время ожидания запроса",
+ "queryTimeoutDescription": "Когда запрос достигает заданного лимита времени, появляется всплывающее окно с возможностью отмены запроса, если автоматическая отмена не включена.",
+ "enableQueryTimeout": "Включить время ожидания запроса",
+ "queryTimeoutMs": "Время ожидания запроса (мс)",
+ "automaticallyCancelQuery": "Автоматически отменять запрос по истечении времени ожидания",
+ "ruLimit": "Лимит ЕЗ",
+ "ruLimitDescription": "Если запрос превышает настроенный лимит RU, его выполнение будет прервано.",
+ "enableRuLimit": "Включить ограничение ЕЗ",
+ "ruLimitLabel": "Лимит ЕЗ (ЕЗ)",
+ "defaultQueryResults": "Представление результатов запроса по умолчанию",
+ "defaultQueryResultsDescription": "Выберите представление по умолчанию, которое будет использоваться для вывода результатов запроса.",
+ "retrySettings": "Настройки повторной попытки",
+ "retrySettingsDescription": "Политика повторных попыток, связанная с отклонением запросов для регулирования пропускной способности во время запросов CosmosDB.",
+ "maxRetryAttempts": "Максимальное число повторных попыток",
+ "maxRetryAttemptsTooltip": "Максимальное число повторных попыток выполнения запроса. Значение по умолчанию: 9.",
+ "fixedRetryInterval": "Фиксированный интервал повторных попыток (мс)",
+ "fixedRetryIntervalTooltip": "Фиксированный интервал повторных попыток в миллисекундах, в течение которого система будет выжидать, прежде чем выполнить повторную попытку. Значение retryAfter, возвращаемое в ответе, игнорируется. Значение по умолчанию — 0 миллисекунд.",
+ "maxWaitTime": "Максимальное время ожидания (с)",
+ "maxWaitTimeTooltip": "Максимальное время ожидания запроса при повторных попытках (в секундах). Значение по умолчанию — 30 секунд.",
+ "enableContainerPagination": "Включить разбивку контейнера на страницы",
+ "enableContainerPaginationDescription": "Загружать по 50 контейнеров за раз. На данный момент контейнеры не загружаются в алфавитно-цифровом порядке.",
+ "enableCrossPartitionQuery": "Включить запросы с областью в несколько разделов",
+ "enableCrossPartitionQueryDescription": "Отправляйте несколько запросов при выполнении запроса. Несколько запросов необходимы, если область запроса не ограничена одним значением ключа секционирования.",
+ "maxDegreeOfParallelism": "Максимальная степень параллелизма",
+ "maxDegreeOfParallelismDescription": "Получает или задаёт количество одновременных операций, выполняемых на стороне клиента при параллельном выполнении запроса. Положительное значение этого свойства действует как лимит, ограничивающий число одновременных операций. Если значение меньше 0, система самостоятельно определяет количество одновременно выполняемых операций.",
+ "maxDegreeOfParallelismQuery": "Выполнить запрос с максимальной степенью параллелизма.",
+ "priorityLevel": "Уровень приоритета",
+ "priorityLevelDescription": "Задаёт уровень приоритета для запросов плоскости данных из Обозревателя при выполнении на основе приоритетов. Если выбрано значение \"Нет\", Обозреватель не указывает уровень приоритета и используется уровень, заданный по умолчанию на сервере.",
+ "displayGremlinQueryResults": "Показывать результаты запроса Gremlin как:",
+ "displayGremlinQueryResultsDescription": "Выберите Graph для автоматической визуализации результатов запроса в виде графа или JSON для вывода результатов в формате JSON.",
+ "graph": "Граф",
+ "json": "JSON",
+ "graphAutoVisualization": "Автоматическая визуализация графа",
+ "enableSampleDatabase": "Включить пример базы данных",
+ "enableSampleDatabaseDescription": "Это пример базы данных и коллекции с синтетическими данными о продуктах, которые можно использовать для изучения запросов NoSQL. Эта база данных появится как отдельная в интерфейсе Обозревателя. Microsoft создаёт и поддерживает ее бесплатно.",
+ "enableSampleDbAriaLabel": "Включить пример базы данных для изучения запросов",
+ "guidRepresentation": "Представление GUID",
+ "guidRepresentationDescription": "GuidRepresentation в MongoDB определяет способ сериализации и десериализации глобальных уникальных идентификаторов (GUID) при хранении в документах BSON. Эта настройка применяется ко всем операциям с документами.",
+ "advancedSettings": "Расширенные настройки",
+ "ignorePartitionKey": "Игнорировать ключ раздела при обновлении документа",
+ "ignorePartitionKeyTooltip": "Если установлен этот флажок, значение ключа раздела не будет использоваться для поиска документа во время операций обновления. Используйте только в случаях, когда обновления документа не удается выполнить из-за аномального ключа раздела.",
+ "clearHistory": "Очистить историю",
+ "clearHistoryConfirm": "Вы действительно хотите продолжить?",
+ "clearHistoryDescription": "Это действие сбросит все пользовательские настройки для этой учётной записи в этом браузере, в том числе:",
+ "clearHistoryTabLayout": "Сбросить настраиваемую компоновку вкладки, включая позиции разделителей",
+ "clearHistoryTableColumns": "Удалите настройки столбцов таблицы, в том числе все пользовательские столбцы",
+ "clearHistoryFilters": "Очистить историю фильтров",
+ "clearHistoryRegion": "Сбросить выбор региона до глобального",
+ "increaseValueBy1000": "Увеличить значение на 1000",
+ "decreaseValueBy1000": "Уменьшить значение на 1000",
+ "none": "Нет",
+ "low": "Низкий",
+ "high": "Высокое",
+ "automatic": "Автоматически",
+ "enhancedQueryControl": "Расширенное управление запросами",
+ "enableQueryControl": "Включить управление запросами",
+ "explorerVersion": "Версия обозревателя",
+ "accountId": "Идентификатор учетной записи",
+ "sessionId": "ИД сеанса",
+ "popupsDisabledError": "Не удалось установить авторизацию для этой учетной записи из-за отключения всплывающих окон в браузере.\nВключите всплывающие окна для этого сайта и нажмите кнопку \"Вход для Entra ID\"",
+ "failedToAcquireTokenError": "Не удалось получить маркер авторизации от имени субъекта-службы. Нажмите кнопку \"Вход для Entra ID\", чтобы включить операции RBAC для Entra ID"
+ },
+ "saveQuery": {
+ "panelTitle": "Сохранить запрос",
+ "setupCostMessage": "Для обеспечения соответствия требованиям мы сохраняем запросы в контейнере вашей учётной записи Azure Cosmos в отдельной базе данных с именем \"{{databaseName}}\". Для продолжения работы нам нужно создать контейнер в вашей учётной записи. Сметная дополнительная стоимость: 0,77 доллара США (USD) в день.",
+ "completeSetup": "Завершить настройку",
+ "noQueryNameError": "Имя запроса не указано",
+ "invalidQueryContentError": "Указано недопустимое содержимое запроса",
+ "failedToSaveQueryError": "Не удалось сохранить запрос {{queryName}}",
+ "failedToSetupContainerError": "Не удалось настроить контейнер для сохранённых запросов",
+ "accountNotSetupError": "Не удалось сохранить запрос: учётная запись не настроена для сохранения запросов",
+ "name": "Имя"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Файл не указан",
+ "failedToLoadQueryError": "Не удалось загрузить запрос",
+ "failedToLoadQueryFromFileError": "Не удалось загрузить запрос из файла {{fileName}}",
+ "selectFilesToOpen": "Выберите документ запроса",
+ "browseFiles": "Просмотреть"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Введите входные параметры (если есть)",
+ "key": "Ключ",
+ "param": "Параметр",
+ "partitionKeyValue": "Значение ключа раздела",
+ "value": "Значение",
+ "addNewParam": "Добавить новый параметр",
+ "addParam": "Добавить параметр",
+ "deleteParam": "Удалить параметр",
+ "invalidParamError": "Указан недействительный параметр: {{invalidParam}}",
+ "invalidParamConsoleError": "Указан недопустимый параметр: {{invalidParam}} не является допустимым значением-литералом",
+ "stringType": "Строка",
+ "customType": "Пользовательская"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Файлы не указаны. Введите по крайней мере один файл.",
+ "selectJsonFiles": "Выбрать файлы JSON",
+ "selectJsonFilesTooltip": "Выберите один или несколько файлов JSON для отправки. Каждый файл может содержать один JSON-документ или массив JSON-документов. Суммарный размер всех файлов в одной операции отправки должен быть меньше 2 МБ. Для больших наборов данных можно выполнить несколько операций отправки.",
+ "fileNameColumn": "ИМЯ ФАЙЛА",
+ "statusColumn": "СТАТУС",
+ "uploadStatus": "Создано: {{numSucceeded}}, отклонено в результате регулирования: {{numThrottled}}, ошибок: {{numFailed}}",
+ "uploadedFiles": "Отправленные файлы"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Не удалось скопировать {{name}} в {{destination}}",
+ "uploadFailedError": "Не удалось отправить {{name}}",
+ "location": "Расположение",
+ "locationAriaLabel": "Расположение",
+ "selectLocation": "Выберите место для копирования записной книжки",
+ "name": "Имя"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Не удалось опубликовать {{notebookName}} в галерее",
+ "publishDescription": "После публикации эта записная книжка появится в общедоступной галерее записных книжек Azure Cosmos DB. Перед публикацией убедитесь, что удалили все конфиденциальные данные и результаты.",
+ "publishPrompt": "Хотите опубликовать \"{{name}}\" и поделиться ею в галерее?",
+ "coverImage": "Изображение обложки",
+ "coverImageUrl": "URL-адрес изображения обложки",
+ "name": "Имя",
+ "description": "Описание",
+ "tags": "Теги",
+ "tagsPlaceholder": "Необязательный тег 1, необязательный тег 2",
+ "preview": "Предварительный просмотр",
+ "urlType": "URL-адрес",
+ "customImage": "Пользовательское изображение",
+ "takeScreenshot": "Сделать снимок экрана",
+ "useFirstDisplayOutput": "Использовать вывод первого дисплея",
+ "failedToCaptureOutput": "Не удалось зафиксировать первый выданный результат",
+ "outputDoesNotExist": "Выданный результат отсутствует для всех ячеек.",
+ "failedToConvertError": "Не удалось преобразовать {{fileName}} в формат base64",
+ "failedToUploadError": "Не удалось отправить {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Не удалось запустить задание передачи данных",
+ "suboptimalPartitionKeyError": "Внимание! Система обнаружила, что в вашей коллекции используется неоптимальный ключ секционирования",
+ "description": "При изменении ключа секционирования контейнера необходимо создать целевой контейнер с правильным ключом секционирования. Можно также выбрать существующий целевой контейнер.",
+ "sourceContainerId": "ИД {{collectionName}}-источника",
+ "destinationContainerId": "ИД целевого {{collectionName}}",
+ "collectionIdTooltip": "Уникальный идентификатор {{collectionName}}, который используется для маршрутизации на основе идентификаторов в REST и всех пакетах SDK.",
+ "collectionIdPlaceholder": "например, {{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ИД, пример {{collectionName}}1",
+ "existingContainers": "Существующие контейнеры",
+ "partitionKeyWarning": "Целевой контейнер не должен быть уже существующим контейнером. Обозреватель данных создаст новый целевой контейнер."
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "Имя пространства ключей",
+ "keyspaceTooltip": "Выберите существующее пространство ключей или введите новый идентификатор пространства ключей.",
+ "tableIdLabel": "Введите команду CQL для создания таблицы.",
+ "enterTableId": "Введите идентификатор таблицы",
+ "tableSchemaAriaLabel": "Схема таблицы",
+ "provisionDedicatedThroughput": "Подготовить выделенную пропускную способность для этой таблицы",
+ "provisionDedicatedThroughputTooltip": "При необходимости можно подготовить выделенную пропускную способность для таблицы в пространстве ключей, где уже подготовлена пропускная способность. Эта выделенная пропускная способность не будет использоваться совместно с другими таблицами в пространстве ключей и не учитывается в общей пропускной способности, выделенной для пространства ключей. Оплата за эту пропускную способность будет взиматься дополнительно к сумме, выделенной на уровне пространства ключей."
+ },
+ "tables": {
+ "addProperty": "Добавить свойство",
+ "addRow": "Добавить строку",
+ "addEntity": "Добавить сущность",
+ "back": "назад",
+ "nullFieldsWarning": "Внимание! Поля со значением NULL не будут выводиться для редактирования.",
+ "propertyEmptyError": "{{property}} не может быть пустым. Введите значение для {{property}}",
+ "whitespaceError": "{{property}} не может содержать пробелы. Введите значение для {{property}} без пробелов",
+ "propertyTypeEmptyError": "Тип свойства не может быть пустым. Выберите тип свойства {{property}} из раскрывающегося списка"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Выберите столбцы, которые необходимо запросить.",
+ "availableColumns": "Доступные столбцы"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Выберите столбцы, которые нужно показать в представлении элементов контейнера.",
+ "searchFields": "Поля поиска",
+ "reset": "Сбросить",
+ "partitionKeySuffix": " (ключ раздела)"
+ },
+ "newVertex": {
+ "addProperty": "Добавить свойство"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Идентификатор контейнера глобального вторичного индекса",
+ "globalSecondaryIndexIdPlaceholder": "например, indexbyEmailId",
+ "projectionQuery": "Запрос проекции",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Подробнее об определении глобальных вторичных индексов.",
+ "disabledTitle": "Глобальный вторичный индекс уже создаётся. Дождитесь завершения процесса, прежде чем создавать новый."
+ },
+ "stringInput": {
+ "inputMismatchError": "Введённое значение {{input}} не соответствует выбранному {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Информация",
+ "moreDetails": "Больше сведений"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Масштаб",
+ "conflictResolution": "Разрешение конфликтов",
+ "settings": "Параметры",
+ "indexingPolicy": "Политика индексации",
+ "partitionKeys": "Ключи разделов",
+ "partitionKeysPreview": "Ключи разделов (предварительная версия)",
+ "computedProperties": "Вычисленные свойства",
+ "containerPolicies": "Правила перевозки контейнеров",
+ "throughputBuckets": "Группы пропускной способности",
+ "globalSecondaryIndexPreview": "Глобальный вторичный индекс (предварительный просмотр)",
+ "maskingPolicyPreview": "Политика ношения масок (предварительная версия)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Выберите тип для каждого указателя.",
+ "enterFieldNameError": "Введите имя поля.",
+ "wildcardPathError": "В имени поля отсутствует путь с подстановочным знаком. Используйте такой шаблон: "
+ },
+ "partitionKey": {
+ "shardKey": "Ключ экстента",
+ "partitionKey": "Ключ раздела",
+ "shardKeyTooltip": "Ключ экстента (поле) используется для распределения ваших данных по множеству наборов реплик (экстентов) для обеспечения неограниченного масштабирования. Важно выбрать поле, по которому данные распределяются равномерно.",
+ "partitionKeyTooltip": "Используется для автоматического распределения данных по разделам в целях масштабируемости. Выберите в документе JSON свойство, которое имеет широкий диапазон значений и равномерно распределяет объем запросов.",
+ "sqlPartitionKeyTooltipSuffix": " Для небольших рабочих нагрузок с интенсивным чтением или любых по объёму с интенсивной записью идентификатор часто является хорошим выбором.",
+ "partitionKeySubtext": "Для небольших объемов данных идентификатор элемента является подходящим вариантом для ключа раздела.",
+ "mongoPlaceholder": "например, categoryId",
+ "gremlinPlaceholder": "например, /address",
+ "sqlFirstPartitionKey": "Обязательно: первый ключ раздела, например /TenantId",
+ "sqlSecondPartitionKey": "второй ключ раздела, например /UserId",
+ "sqlThirdPartitionKey": "третий ключ раздела, например /SessionId",
+ "defaultPlaceholder": "например, /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Смета расходов*",
+ "howWeCalculate": "Как мы это рассчитываем",
+ "updatedCostPerMonth": "Обновленная стоимость в месяц",
+ "currentCostPerMonth": "Текущая стоимость в месяц",
+ "perRu": "/RU",
+ "perHour": "за час",
+ "perDay": "за день",
+ "perMonth": "в месяц"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Начальный максимальный объем автоматически масштабируемых RU/s будет определяться системой на основе текущих настроек пропускной способности, заданных вручную, и объема хранилища ваших ресурсов. После включения автомасштабирования вы можете изменить максимальное значение RU/s.",
+ "ttlWarningText": "Система будет автоматически удалять элементы на основе указанного вами значения TTL (в секундах), без необходимости явного запуска операции удаления клиентским приложением. Для получения более подробной информации см.",
+ "ttlWarningLinkText": "Время жизни (TTL) в Azure Cosmos DB",
+ "unsavedIndexingPolicy": "политика индексирования",
+ "unsavedDataMaskingPolicy": "политика маскирования данных",
+ "unsavedComputedProperties": "вычисленные свойства",
+ "unsavedEditorWarningPrefix": "Вы не сохранили последние изменения, внесенные в ваш",
+ "unsavedEditorWarningSuffix": ". Нажмите \"Сохранить\", чтобы подтвердить изменения.",
+ "updateDelayedApplyWarning": "Вы собираетесь запросить увеличение пропускной способности сверх предварительно выделенной мощности. Эта операция займет некоторое время.",
+ "scalingUpDelayMessage": "Масштабирование займет 4-6 часов, поскольку оно превышает возможности Azure Cosmos DB по мгновенному масштабированию, исходя из количества физических разделов. Вы можете мгновенно увеличить пропускную способность до {{instantMaximumThroughput}} или продолжить с этим значением и дождаться завершения масштабирования.",
+ "exceedPreAllocatedMessage": "Ваш запрос на увеличение пропускной способности превышает предварительно выделенную мощность, что может занять больше времени, чем ожидалось. Для продолжения вы можете выбрать один из трех вариантов:",
+ "instantScaleOption": "Вы можете мгновенно увеличить масштаб до {{instantMaximumThroughput}} RU/s.",
+ "asyncScaleOption": "Вы можете асинхронно масштабировать систему до любого значения менее {{maximumThroughput}} RU/s за 4-6 часов.",
+ "quotaMaxOption": "Ваш текущий максимальный лимит квоты составляет {{maximumThroughput}} RU/s. Чтобы превысить этот лимит, необходимо запросить увеличение квоты, и команда Azure Cosmos DB рассмотрит этот запрос.",
+ "belowMinimumMessage": "Вы не можете снизить пропускную способность ниже текущего минимума в {{minimum}} RU/s. Для получения более подробной информации об этом лимите обратитесь к нашей документации по расчету стоимости услуг.",
+ "saveThroughputWarning": "Изменение настроек пропускной способности повлияет на ваш счет за электроэнергию. Перед сохранением изменений ознакомьтесь с обновленной сметой расходов ниже",
+ "currentAutoscaleThroughput": "Текущая пропускная способность автомасштабирования:",
+ "targetAutoscaleThroughput": "Целевая пропускная способность автомасштабирования:",
+ "currentManualThroughput": "Текущая производительность при ручном вводе данных:",
+ "targetManualThroughput": "Целевой показатель производительности при ручном вводе данных:",
+ "applyDelayedMessage": "Запрос на увеличение пропускной способности успешно подан. Выполнение этой операции займет от 1 до 3 рабочих дней. Просмотрите актуальный статус в разделе \"Уведомления\".",
+ "databaseLabel": "База данных:",
+ "containerLabel": "Контейнер:",
+ "applyShortDelayMessage": "В настоящее время рассматривается запрос на увеличение пропускной способности. Эта операция займет некоторое время.",
+ "applyLongDelayMessage": "В настоящее время рассматривается запрос на увеличение пропускной способности. Выполнение этой операции займет от 1 до 3 рабочих дней. Просмотрите актуальный статус в разделе \"Уведомления\".",
+ "throughputCapError": "В настоящее время для вашей учетной записи установлен лимит общей пропускной способности в размере {{throughputCap}} RU/s. Это обновление невозможно, поскольку оно увеличит общую пропускную способность до {{newTotalThroughput}} RU/s. Измените общую предельную пропускную способность в меню управления затратами.",
+ "throughputIncrementError": "Значение пропускной способности должно быть задано с шагом в 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Последний бросок клавиши Write выигрывает (по умолчанию)",
+ "customMergeProcedure": "Процедура слияния (пользовательская)",
+ "mode": "Режим",
+ "conflictResolverProperty": "Свойство разрешения конфликтов",
+ "storedProcedure": "Хранимая процедура",
+ "lwwTooltip": "Получает или задает имя целочисленного свойства в ваших документах, которое используется для схемы разрешения конфликтов на основе принципа \"последний входящий аргумент\" (LWW). По умолчанию система использует заданное системой свойство временной метки _ts для определения победителя в конфликтующих версиях документа. Укажите собственное целочисленное свойство, если хотите переопределить стандартный механизм разрешения конфликтов на основе временной метки.",
+ "customTooltip": "Получает или задает имя хранимой процедуры (также известной как процедура слияния) для разрешения конфликтов. Вы можете написать определяемую приложением логику для определения победителя среди конфликтующих версий документа. Хранимая процедура будет выполнена транзакционно, ровно один раз, на стороне сервера. Если вы не предоставите хранимую процедуру, конфликты будут отображены в",
+ "customTooltipConflictsFeed": " канал конфликтов",
+ "customTooltipSuffix": ". Вы можете обновить/перерегистрировать хранимую процедуру в любое время."
+ },
+ "changeFeed": {
+ "label": "Изменить политику хранения журналов ленты новостей",
+ "tooltip": "Включите политику сохранения журнала изменений, чтобы по умолчанию сохранять историю за последние 10 минут для элементов в контейнере. Для этого плата за единицу запроса (RU) для данного контейнера будет умножаться на коэффициент два при записи. На скорость чтения это не повлияет."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Для запросов, фильтрующих по нескольким свойствам, создавайте несколько индексов для отдельных полей вместо составного индекса.",
+ "disclaimerCompoundIndexesLink": " Составные индексы ",
+ "disclaimerSuffix": "используются только для сортировки результатов запроса. Если вам нужно добавить составной индекс, вы можете создать его с помощью оболочки Mongo.",
+ "compoundNotSupported": "В редакторе индексирования пока не поддерживаются коллекции со сложными индексами. Для изменения политики индексирования этой коллекции используйте оболочку Mongo.",
+ "aadError": "Для использования редактора политик индексирования войдите в",
+ "aadErrorLink": "Портал Azure.",
+ "refreshingProgress": "Обновление хода преобразования индекса",
+ "canMakeMoreChangesZero": "Дополнительные изменения в индексировании можно внести после завершения текущего преобразования индекса. ",
+ "refreshToCheck": "Обновите страницу, чтобы проверить, завершился ли процесс.",
+ "canMakeMoreChangesProgress": "Дополнительные изменения в индексировании можно внести после завершения текущего преобразования индекса. Выполнено на {{progress}} %. ",
+ "refreshToCheckProgress": "Обновите страницу, чтобы проверить ход выполнения.",
+ "definitionColumn": "Определение",
+ "typeColumn": "Тип",
+ "dropIndexColumn": "Удалить индекс",
+ "addIndexBackColumn": "Восстановить индекс",
+ "deleteIndexButton": "Кнопка удаления индекса",
+ "addBackIndexButton": "Добавить кнопку \"Назад\" в индекс",
+ "currentIndexes": "Текущий индекс(ы)",
+ "indexesToBeDropped": "Индекс(ы), подлежащие удалению",
+ "indexFieldName": "Название поля индекса",
+ "indexType": "Тип индекса",
+ "selectIndexType": "Выберите тип индекса",
+ "undoButton": "Кнопка отмены"
+ },
+ "subSettings": {
+ "timeToLive": "Время жизни",
+ "ttlOff": "Выкл",
+ "ttlOnNoDefault": "Вкл. (нет значения по умолчанию)",
+ "ttlOn": "Вкл",
+ "seconds": "сек",
+ "timeToLiveInSeconds": "Время жизни в секундах",
+ "analyticalStorageTtl": "Время жизни аналитического хранилища",
+ "geospatialConfiguration": "Геопространственная конфигурация",
+ "geography": "Географический регион",
+ "geometry": "Геометрия",
+ "uniqueKeys": "Уникальные ключи",
+ "mongoTtlMessage": "Чтобы включить параметр \"время жизни\" (TTL) для вашей коллекции/документов,",
+ "mongoTtlLinkText": "создать индекс TTL",
+ "partitionKeyTooltipTemplate": "Этот {{partitionKeyName}} используется для распределения данных по нескольким разделам для масштабируемости. Значение \" {{partitionKeyValue}} \" определяет, как документы будут разделены на разделы.",
+ "largePartitionKeyEnabled": "Большие {{partitionKeyName}} включены.",
+ "hierarchicalPartitioned": "Иерархически разделенный контейнер.",
+ "nonHierarchicalPartitioned": "Контейнер, не имеющий иерархической структуры."
+ },
+ "scale": {
+ "freeTierInfo": "В рамках бесплатного тарифа вы получите первые {{ru}} RU/s и {{storage}} ГБ хранилища на этом аккаунте бесплатно. Чтобы ваш аккаунт оставался бесплатным, поддерживайте общий объем RU/s по всем ресурсам в аккаунте на уровне {{ru}} RU/s.",
+ "freeTierLearnMore": "Подробнее.",
+ "throughputRuS": "Пропускная способность (единицы запросов в секунду)",
+ "autoScaleCustomSettings": "В вашей учетной записи установлены пользовательские параметры, которые не позволяют задавать пропускную способность на уровне контейнера. Свяжитесь со своим контактным лицом из команды разработчиков Cosmos DB для внесения изменений.",
+ "keyspaceSharedThroughput": "Пропускная способность, распределяемая между таблицами, настраивается в пространстве ключей",
+ "throughputRangeLabel": "Пропускная способность ({{min}}–{{max}} единиц запросов в секунду)",
+ "unlimited": "без ограничений"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Изменить {{partitionKeyName}}",
+ "currentPartitionKey": "Текущий {{partitionKeyName}}",
+ "partitioning": "Секционирование",
+ "hierarchical": "Иерархический",
+ "nonHierarchical": "Не иерархическая",
+ "safeguardWarning": "Для обеспечения целостности данных, копируемых в новый контейнер, убедитесь, что в течение всего процесса изменения ключа раздела в исходный контейнер не вносятся никакие обновления.",
+ "changeDescription": "Для изменения ключа раздела необходимо создать новый целевой контейнер или выбрать существующий целевой контейнер. Затем данные будут скопированы в целевой контейнер.",
+ "changeButton": "Изменить",
+ "changeJob": "{{partitionKeyName}} сменить работу",
+ "cancelButton": "Отмена",
+ "documentsProcessed": "(Обработано {{processedCount}} из {{totalCount}} документов)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Вычисленные свойства",
+ "learnMorePrefix": "о том, как определять вычисляемые свойства и как их использовать."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Политика индексации"
+ },
+ "dataMasking": {
+ "ariaLabel": "Политика маскирования данных",
+ "validationFailed": "Проверка не пройдена:",
+ "includedPathsRequired": "includePaths обязателен",
+ "includedPathsMustBeArray": "Параметр includedPaths должен быть массивом",
+ "excludedPathsMustBeArray": "Параметр excludedPaths должен быть массивом, если он указан"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Векторная политика",
+ "fullTextPolicy": "Политика полного текста",
+ "createFullTextPolicy": "Создать новую политику полнотекстового поиска"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Для этого контейнера определены следующие индексы.",
+ "learnMoreSuffix": "о том, как определять глобальные вторичные индексы и как их использовать.",
+ "jsonAriaLabel": "Глобальный вторичный индекс JSON",
+ "addIndex": "Добавить индекс",
+ "settingsTitle": "Глобальные настройки вторичного индекса",
+ "sourceContainer": "Исходный контейнер",
+ "indexDefinition": "Определение глобального вторичного индекса"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Процесс обновления индекса завершился с ошибкой"
+ },
+ "throughputInput": {
+ "autoscale": "Автомасштабирование",
+ "manual": "Вручную",
+ "minimumRuS": "Минимум RU/s",
+ "maximumRuS": "Максимальное количество RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Емкость хранилища",
+ "fixed": "Исправлено",
+ "unlimited": "Без ограничений",
+ "instant": "Мгновенный",
+ "fourToSixHrs": "4-6 часов",
+ "autoscaleDescription": "В зависимости от использования, ваша пропускная способность {{resourceType}} будет масштабироваться от",
+ "freeTierWarning": "Плата будет взиматься, если вы выделите более {{ru}} RU/s пропускной способности вручную или если ресурс масштабируется более чем на {{ru}} RU/s с помощью автомасштабирования.",
+ "capacityCalculator": "Оцените необходимое количество RU/s с помощью",
+ "capacityCalculatorLink": " калькулятор вместимости",
+ "fixedStorageNote": "При использовании коллекции с фиксированной емкостью хранилища можно установить скорость до 10 000 RU/s.",
+ "min": "мин",
+ "max": "макс"
+ },
+ "throughputBuckets": {
+ "label": "Группы пропускной способности",
+ "bucketLabel": "Сегмент {{id}}",
+ "dataExplorerQueryBucket": " (Область запросов Data Explorer)",
+ "active": "Активно",
+ "inactive": "Неактивно"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/sv/Resources.json b/src/Localization/sv/Resources.json
new file mode 100644
index 000000000..6636d1bc2
--- /dev/null
+++ b/src/Localization/sv/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "OK",
+ "cancel": "Avbryt",
+ "close": "Stäng",
+ "save": "Spara",
+ "delete": "Ta bort",
+ "update": "Uppdatera",
+ "discard": "Ta bort",
+ "execute": "Kör",
+ "loading": "Läser in",
+ "loadingEllipsis": "Läser in...",
+ "next": "Nästa",
+ "previous": "Föregående",
+ "yes": "Ja",
+ "no": "Nej",
+ "result": "Resultat",
+ "learnMore": "Mer information",
+ "getStarted": "Kom igång",
+ "retry": "Försök igen",
+ "apply": "Använd",
+ "refresh": "Uppdatera",
+ "copy": "Kopiera",
+ "create": "Skapa",
+ "confirm": "Bekräfta",
+ "open": "Öppna",
+ "rename": "Byt namn",
+ "download": "Ladda ned",
+ "upload": "Ladda upp",
+ "connect": "Anslut",
+ "remove": "Ta bort",
+ "load": "Läs in",
+ "publish": "Publicera",
+ "browse": "Bläddra",
+ "increaseValueBy1": "Öka värdet med 1",
+ "decreaseValueBy1": "Minska värdet med 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Välkommen till Azure Cosmos DB",
+ "postgres": "Välkommen till Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "Välkommen till Azure DocumentDB (med MongoDB-kompatibilitet)"
+ },
+ "subtitle": {
+ "default": "Globalt distribuerad databas för flera datamodeller oavsett skala",
+ "getStarted": "Kom igång med våra exempeldatamängder, dokumentation och extra verktyg."
+ },
+ "quickStart": {
+ "title": "Starta snabbstart",
+ "description": "Starta en snabbstartsguide för att komma igång med exempeldata"
+ },
+ "newCollection": {
+ "title": "Ny {{collectionName}}",
+ "description": "Skapa en ny container för lagring och dataflöde"
+ },
+ "samplesGallery": {
+ "title": "Galleri för Azure Cosmos DB-exempel",
+ "description": "Upptäck exempel som visar skalbara, intelligenta appmönster. Prova en nu för att se hur snabbt du kan gå från koncept till kod med Cosmos DB"
+ },
+ "connectCard": {
+ "title": "Anslut",
+ "description": "Föredrar du att använda ditt eget val av verktyg? Hitta anslutningssträngen du behöver för att ansluta",
+ "pgAdmin": {
+ "title": "Anslut med pgAdmin",
+ "description": "Föredrar du pgAdmin? Hitta dina anslutningssträngar här"
+ },
+ "vsCode": {
+ "title": "Anslut med VS Code",
+ "description": "Fråga och hantera dina MongoDB- och DocumentDB-kluster i Visual Studio Code"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL-gränssnitt",
+ "description": "Skapa tabell och interagera med data med postgreSQL-gränssnittet"
+ },
+ "vcoreMongo": {
+ "title": "Mongo-gränssnitt",
+ "description": "Skapa en samling och interagera med data med hjälp av MongoDB:s gränssnitt"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Är Cosmos DB PGSQL nytt för dig?",
+ "body": "Välkommen! Om du är nybörjare på Cosmos DB PGSQL och behöver hjälp med att komma igång hittar du exempeldata och frågor här."
+ },
+ "resetPassword": {
+ "headline": "Skapa ett lösenord",
+ "body": "Om du inte har ändrat ditt lösenord ännu ändrar du det nu."
+ },
+ "coachMark": {
+ "headline": "Börja med exempel {{collectionName}}",
+ "body": "Du får vägledning för att skapa en exempelcontainer med exempeldata, och sedan får du en rundtur i datautforskaren. Du kan också avbryta lanseringen av den här rundturen och utforska dig själv"
+ }
+ },
+ "sections": {
+ "recents": "Senaste",
+ "clearRecents": "Rensa senaste",
+ "top3": "De 3 viktigaste sakerna du behöver veta",
+ "learningResources": "Utbildningsresurser",
+ "nextSteps": "Nästa steg",
+ "tipsAndLearnMore": "Tips och läs mer",
+ "notebook": "Anteckningsbok",
+ "needHelp": "Behöver du hjälp?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Avancerade modelleringsmönster",
+ "description": "Lär dig avancerade strategier för att optimera din databas."
+ },
+ "partitioning": {
+ "title": "Metodtipsen för partitionering",
+ "description": "Lär dig hur du tillämpar strategier för datamodeller och partitionering."
+ },
+ "resourcePlanning": {
+ "title": "Planera dina resurskrav",
+ "description": "Lär känna de olika konfigurationsalternativen."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "Vad är MongoDB-API:et?",
+ "description": "Förstå Azure Cosmos DB for MongoDB och dess funktioner."
+ },
+ "features": {
+ "title": "Funktioner och syntax",
+ "description": "Upptäck fördelarna och funktionerna"
+ },
+ "migrate": {
+ "title": "Migrera dina data",
+ "description": "Steg före migrering för att flytta data"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Skapa en Java-app",
+ "description": "Skapa en Java-app med hjälp av en SDK."
+ },
+ "partitioning": {
+ "title": "Metodtipsen för partitionering",
+ "description": "Lär dig hur partitionering fungerar."
+ },
+ "requestUnits": {
+ "title": "Enheter för programbegäran (RU)",
+ "description": "Förstå RU-avgifter."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Datamodellering",
+ "description": "Rekommendationer för diagramdatamodellering"
+ },
+ "partitioning": {
+ "title": "Metodtipsen för partitionering",
+ "description": "Lär dig hur partitionering fungerar"
+ },
+ "queryData": {
+ "title": "Efterfråga data",
+ "description": "Köra frågor mot data med Gremlin"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Vad är Table API?",
+ "description": "Förstå Azure Cosmos DB for Table och dess funktioner"
+ },
+ "migrate": {
+ "title": "Migrera dina data",
+ "description": "Läs hur du migrerar dina data"
+ },
+ "faq": {
+ "title": "Vanliga frågor och svar om Azure Cosmos DB for Table",
+ "description": "Vanliga frågor om Azure Cosmos DB för tabell"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Datautforskaren kortkommandon",
+ "description": "Lär dig kortkommandon för att navigera Datautforskaren."
+ },
+ "liveTv": {
+ "title": "Lär dig grunderna",
+ "description": "Titta på Azure Cosmos DB introduktion till live-TV-program och hur du gör videor."
+ },
+ "sql": {
+ "sdk": {
+ "title": "Kom igång med ett SDK",
+ "description": "Läs mer om Azure Cosmos DB SDK."
+ },
+ "migrate": {
+ "title": "Migrera dina data",
+ "description": "Migrera data med Hjälp av Azure-tjänster och lösningar med öppen källkod."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Skapa en app med Node.js",
+ "description": "Skapa en Node.js app."
+ },
+ "gettingStarted": {
+ "title": "Komma igång-guide",
+ "description": "Lär dig grunderna för att komma igång."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Skapa en container",
+ "description": "Lär känna alternativen för att skapa en container."
+ },
+ "throughput": {
+ "title": "Etablera dataflöde",
+ "description": "Lär dig hur du konfigurerar dataflöde."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Kom igång ",
+ "description": "Skapa, fråga och bläddra med Gremlin-konsolen"
+ },
+ "importData": {
+ "title": "Importera diagramdata",
+ "description": "Lär dig massinmatning av data med BulkExecutor"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "Skapa en .NET-app",
+ "description": "Så här kommer du åt Azure Cosmos DB for Table från en .NET-app."
+ },
+ "java": {
+ "title": "Skapa en Java-app",
+ "description": "Skapa en Azure Cosmos DB for Table-appen med Java SDK "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Datamodellering",
+ "distributionColumn": "Så här väljer du en distributionskolumn",
+ "buildApps": "Skapa appar med Python/Java/Django"
+ },
+ "vcoreMongo": {
+ "migrateData": "Migrera data",
+ "vectorSearch": "Skapa AI-appar med Vector Search",
+ "buildApps": "Skapa appar med Nodejs"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Prestandajustering",
+ "diagnosticQueries": "Användbara diagnostikfrågor",
+ "sqlReference": "Distribuerad SQL-referens"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vektorssökning",
+ "textIndexing": "Textindexering",
+ "troubleshoot": "Felsök vanliga problem"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Skapa din databas",
+ "useTitle": "Använda databasen",
+ "newContainer": {
+ "title": "Ny container",
+ "description": "Skapa en målcontainer för att lagra dina data"
+ },
+ "sampleData": {
+ "title": "Exempeldata",
+ "description": "Läs in exempeldata i databasen"
+ },
+ "sampleVectorData": {
+ "title": "Exempelvektordata",
+ "description": "Läs in exempelvektordata med textinbäddning-ada-002"
+ },
+ "appDevelopment": {
+ "title": "Apputveckling",
+ "description": "Börja här om du vill använda en SDK för att skapa dina appar"
+ },
+ "sampleGallery": {
+ "title": "Exempelgalleri",
+ "description": "Få verkliga exempel från slutpunkt till slutpunkt"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Exempeldata",
+ "startButton": "Starta",
+ "createPrompt": "Skapa en container \"{{containerName}}\" och importera exempeldata till den. Det här kan ta några minuter.",
+ "creatingContainer": "Skapar container \"{{containerName}}\"...",
+ "importingData": "Importerar data till \"{{containerName}}\"...",
+ "success": "\"{{containerName}}\" med exempeldata har skapats.",
+ "errorContainerExists": "Containern \"{{containerName}}\" i databasen \"{{databaseName}}\" finns redan. Ta bort den och försök igen.",
+ "errorCreateContainer": "Det gick inte att skapa containern: {{error}}",
+ "errorImportData": "Det gick inte att importera data: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Ny {{containerName}}",
+ "restoreContainer": "Återställ {{containerName}}",
+ "deleteDatabase": "Ta bort {{databaseName}}",
+ "deleteContainer": "Ta bort {{containerName}}",
+ "newSqlQuery": "Ny SQL-fråga",
+ "newQuery": "Ny fråga",
+ "openMongoShell": "Öppna Mongo Shell",
+ "newShell": "Ny Shell",
+ "openCassandraShell": "Öppna Cassandra Shell",
+ "newStoredProcedure": "Ny lagrad procedur",
+ "newUdf": "Ny UDF",
+ "newTrigger": "Ny utlösare",
+ "deleteStoredProcedure": "Ta bort lagrad procedur",
+ "deleteTrigger": "Ta bort utlösaren",
+ "deleteUdf": "Ta bort användardefinierad funktion"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Nytt objekt",
+ "newDocument": "Nytt dokument",
+ "uploadItem": "Ladda upp objekt",
+ "applyFilter": "Använd filter",
+ "unsavedChanges": "Ändringar som inte har sparats",
+ "unsavedChangesMessage": "Ej sparade ändringar går förlorade. Vill du fortsätta?",
+ "createDocumentFailed": "Det gick inte att skapa dokumentet",
+ "updateDocumentFailed": "Det gick inte att uppdatera dokumentet",
+ "documentDeleted": "Dokument har tagits bort.",
+ "deleteDocumentDialogTitle": "Ta bort dokument",
+ "deleteDocumentsDialogTitle": "Ta bort dokument",
+ "throttlingError": "Det gick inte att ta bort vissa dokument på grund av ett fel med hastighetsbegränsning. Försök igen senare. Om du vill undvika detta i framtiden, överväg att öka genomströmningen på din container eller databas.",
+ "deleteFailed": "Det gick inte att ta bort dokument ({{error}})",
+ "missingShardProperty": "Dokumentet saknar shardegenskapen: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Det gick inte att uppdatera dokumentrutnätet",
+ "confirmDelete": "Vill du ta bort {{documentName}}?",
+ "confirmDeleteTitle": "Bekräfta borttagning",
+ "selectedItems": "de valda {{count}}-objekten",
+ "selectedItem": "det markerade objektet",
+ "selectedDocuments": "de valda {{count}}-dokumenten",
+ "selectedDocument": "det markerade dokumentet",
+ "deleteDocumentFailedLog": "Det gick inte att ta bort dokumentet {{documentId}} med statuskod {{statusCode}}",
+ "deleteSuccessLog": "{{count}} dokument har tagits bort",
+ "deleteThrottledLog": "Det gick inte att ta bort {{count}} dokument på grund av felet \"Begäran är för stor\" (429). Försöker igen...",
+ "missingShardKeyLog": "Det gick inte att spara det nya dokumentet: Dokumentshardnyckeln är inte definierad",
+ "filterTooltip": "Skriv ett frågepredikat eller välj ett från listan.",
+ "loadMore": "Läs in mer",
+ "documentEditor": "Dokumentredigeraren",
+ "savedFilters": "Sparade filter",
+ "defaultFilters": "Standardfilter",
+ "abort": "Avbryt",
+ "deletingDocuments": "Tar bort {{count}} dokument",
+ "deletedDocumentsSuccess": "{{count}} dokument har tagits bort.",
+ "deleteAborted": "Borttagning av dokument avbröts.",
+ "failedToDeleteDocuments": "Det gick inte att ta bort {{count}} dokument.",
+ "requestTooLargeBase": "Vissa borttagningsförfrågningar misslyckades på grund av undantaget \"Begäran är för stor\" (429)",
+ "retriedSuccessfully": "men ett nytt försök har gjorts.",
+ "retryingNow": "Försöker igen nu.",
+ "increaseThroughputTip": "Om du vill undvika detta i framtiden, överväg att öka genomströmningen på din container eller databas.",
+ "numberOfSelectedDocuments": "Antal markerade dokument: {{count}}",
+ "mongoFilterPlaceholder": "Skriv ett frågepredikat (t.ex. {\"id\":\"foo\"}), välj ett från rullgardinslistan eller lämna tomt för att fråga alla dokument.",
+ "sqlFilterPlaceholder": "Skriv ett frågepredikat (t.ex. WHERE c.id=\"1\"), välj ett från rullgardinslistan eller lämna tomt för att fråga alla dokument.",
+ "error": "Fel",
+ "warning": "Varning"
+ },
+ "query": {
+ "executeQuery": "Kör fråga",
+ "executeSelection": "Kör markering",
+ "saveQuery": "Spara fråga",
+ "downloadQuery": "Ladda ned fråga",
+ "cancelQuery": "Avbryt fråga",
+ "openSavedQueries": "Öppna sparade frågor",
+ "vertical": "Lodrät",
+ "horizontal": "Vågrät",
+ "view": "Visa",
+ "editingQuery": "Redigerar fråga"
+ },
+ "storedProcedure": {
+ "id": "Lagrad procedur-id",
+ "idPlaceholder": "Ange det nya lagrade procedur-ID:t",
+ "idAriaLabel": "Lagrad procedur-id",
+ "body": "Lagrad procedurtext",
+ "bodyAriaLabel": "Lagrad procedurtext",
+ "successfulExecution": "Slutförd körning av lagrad procedur",
+ "resultAriaLabel": "Kör lagrade procedurloggsresultat",
+ "logsAriaLabel": "Kör lagrade procedurloggar",
+ "errors": "Fel:",
+ "errorDetailsAriaLabel": "Felinformationsrutnät",
+ "moreDetails": "Mer information",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Utlösar-ID",
+ "idPlaceholder": "Ange det nya utlösar-ID:t",
+ "type": "Utlösartyp",
+ "operation": "Utlösaråtgärd",
+ "body": "Utlösarens innehåll",
+ "bodyAriaLabel": "Utlösarens innehåll",
+ "pre": "För",
+ "post": "Inlägg",
+ "all": "Alla",
+ "operationCreate": "Skapa",
+ "operationDelete": "Ta bort",
+ "operationReplace": "Ersätt"
+ },
+ "udf": {
+ "id": "Användardefinierad funktion",
+ "idPlaceholder": "Ange det nya användardefinierade funktions-ID:t",
+ "body": "Användardefinierad funktionstext",
+ "bodyAriaLabel": "Användardefinierad funktionstext"
+ },
+ "conflicts": {
+ "unsavedChanges": "Ändringar som inte har sparats",
+ "changesWillBeLost": "Ändringar går förlorade. Vill du fortsätta?",
+ "resolveConflictFailed": "Det gick inte att lösa konflikten",
+ "deleteConflictFailed": "Det gick inte att ta bort konflikten",
+ "refreshGridFailed": "Det gick inte att uppdatera dokumentrutnätet"
+ },
+ "mongoShell": {
+ "title": "Mongo-gränssnitt"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Vad är anledningen till att du tar bort {{databaseName}}?"
+ },
+ "deleteCollection": {
+ "panelTitle": "Ta bort {{collectionName}}",
+ "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!",
+ "feedbackReason": "Vad är anledningen till att du tar bort {{collectionName}}?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Databas {{suffix}}",
+ "databaseIdLabel": "Databas-ID",
+ "keyspaceIdLabel": "Nyckelområdes-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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}}-ID, exempel {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Välj befintligt {{databaseName}}-ID",
+ "existingDatabasePlaceholder": "Välj befintligt {{databaseName}}-ID",
+ "indexing": "Indexering",
+ "turnOnIndexing": "Aktivera indexering",
+ "automatic": "Automatisk",
+ "turnOffIndexing": "Inaktivera indexering",
+ "off": "Av",
+ "sharding": "Horisontell partitionering",
+ "shardingTooltip": "Shardade samlingar används för att dela dina data över många replikuppsättningar (shards) för att uppnå obegränsad skalbarhet. Shardade samlingar kräver att du väljer en shard-nyckel (fält) för att fördela dina data jämnt.",
+ "unsharded": "Ej fragmenterad",
+ "unshardedLabel": "Ej fragmenterad (gräns på 20 GB)",
+ "sharded": "Shardad",
+ "addPartitionKey": "Lägg till hierarkisk partitionsnyckel",
+ "hierarchicalPartitionKeyInfo": "Med den här funktionen kan du partitionera dina data med upp till tre nivåer av nycklar för bättre datadistribution. Kräver .NET V3, Java V4 SDK eller förhandsversion av JavaScript V3 SDK.",
+ "provisionDedicatedThroughput": "Etablera dedikerat dataflöde för detta {{collectionName}}",
+ "provisionDedicatedThroughputTooltip": "Du kan också etablera dedikerat dataflöde för en {{collectionName}} i en databas som har etablerat dataflöde. Den här dedikerade dataflödesmängden delas inte med andra {{collectionNamePlural}} i databasen och räknas inte in i det dataflöde som du etablerade för databasen. Det här dataflödesbeloppet faktureras utöver det dataflödesbelopp som du etablerade på databasnivå.",
+ "uniqueKeysPlaceholderMongo": "Kommaavgränsade sökvägar, t.ex. firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "Kommaavgränsade sökvägar, t.ex. /firstName,/address/zipCode",
+ "addUniqueKey": "Lägg till unik nyckel",
+ "enableAnalyticalStore": "Aktivera analysarkiv",
+ "disableAnalyticalStore": "Inaktivera analysarkiv",
+ "on": "På",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link krävs för att skapa ett analysarkiv {{collectionName}}. Aktivera Synapse Link för det här Cosmos DB-kontot.",
+ "enable": "Aktivera",
+ "containerVectorPolicy": "Containervektorprincip",
+ "containerFullTextSearchPolicy": "Princip för fulltextsökning för behållare",
+ "advanced": "Avancerat",
+ "mongoIndexingTooltip": "Fältet _id indexeras som standard. Att skapa ett jokerteckenindex för alla fält optimerar frågorna och rekommenderas för utveckling.",
+ "createWildcardIndex": "Skapa ett jokerteckenindex för alla fält",
+ "legacySdkCheckbox": "Mitt program använder en äldre Cosmos .NET- eller Java SDK-version (.NET V1 eller Java V2)",
+ "legacySdkInfo": "För att säkerställa kompatibilitet med äldre SDK:er använder den skapade containern ett äldre partitioneringsschema som stöder partitionsnyckelvärden med endast storlek upp till 101 byte. Om detta är aktiverat kan du inte använda hierarkiska partitionsnycklar.",
+ "indexingOnInfo": "Alla egenskaper i dina dokument indexeras som standard för flexibla och effektiva frågor.",
+ "indexingOffInfo": "Indexering inaktiveras. Rekommenderas om du inte behöver köra frågor eller bara har nyckelvärdesåtgärder.",
+ "indexingOffWarning": "Genom att skapa den här containern med indexering inaktiverad kan du inte göra några ändringar i indexeringsprincipen. Indexeringsändringar tillåts bara för en container med en indexeringsprincip.",
+ "acknowledgeSpendErrorMonthly": "Bekräfta den uppskattade månadskostnaden.",
+ "acknowledgeSpendErrorDaily": "Bekräfta den uppskattade dagliga kostnaden.",
+ "unshardedMaxRuError": "Ej shardade samlingar stöder upp till 10 000 RU:er",
+ "acknowledgeShareThroughputError": "Bekräfta den uppskattade kostnaden för det här dedikerade dataflödet.",
+ "vectorPolicyError": "Åtgärda fel i containervektorprincipen",
+ "fullTextSearchPolicyError": "Åtgärda felen i containerns fulltextsökningsprincip.",
+ "addingSampleDataSet": "Lägger till exempeldatauppsättning",
+ "databaseFieldLabelName": "Namn på databas",
+ "databaseFieldLabelId": "Databas-ID",
+ "newDatabaseIdPlaceholder": "Skriv ett nytt databas-ID",
+ "newDatabaseIdAriaLabel": "Nytt databas-ID, skriv ett nytt databas-ID",
+ "createNewDatabaseAriaLabel": "Skapa ny databas",
+ "useExistingDatabaseAriaLabel": "Använd befintlig databas",
+ "chooseExistingDatabase": "Använd en befintlig databas",
+ "teachingBubble": {
+ "step1Headline": "Skapa exempeldatabas",
+ "step1Body": "Databasen är överordnad en container. Du kan skapa en ny databas eller använda en befintlig databas. I den här självstudien skapar vi en ny databas med namnet SampleDB.",
+ "step1LearnMore": "Läs mer om resurser.",
+ "step2Headline": "Anger dataflöde",
+ "step2Body": "Cosmos DB rekommenderar att du delar dataflödet över databasen. Med autoskalning får du ett flexibelt dataflöde baserat på den maximala RU/s-uppsättningen (enheter för programbegäran).",
+ "step2LearnMore": "Läs mer om RU/s.",
+ "step3Headline": "Namnge container",
+ "step3Body": "Namnge din container",
+ "step4Headline": "Anger partitionsnyckel",
+ "step4Body": "Sista steget – du måste definiera en partitionsnyckel för din samling. /address har valts för det här exemplet. En bra partitionsnyckel bör ha ett brett utbud av möjliga värden",
+ "step4CreateContainer": "Skapa container",
+ "step5Headline": "Skapar exempelcontainer",
+ "step5Body": "Nu skapas en exempelcontainer och vi lägger till exempeldata åt dig. Det bör ta ungefär 1 minut.",
+ "step5BodyFollowUp": "När exempelcontainern har skapats granskar du exempeldatauppsättningen och följer nästa steg",
+ "stepOfTotal": "Steg {{current}} av {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Shard-nyckeln (fältet) används för att dela dina data över många replikuppsättningar (shards) för att uppnå obegränsad skalbarhet. Det är viktigt att välja ett fält som distribuerar dina data jämnt.",
+ "partitionKeyTooltip": "{{partitionKeyName}} används för att automatiskt distribuera data över partitioner för skalbarhet. Välj en egenskap i JSON-dokumentet som har ett stort antal värden och distribuerar begärandevolymen jämnt.",
+ "partitionKeyTooltipSqlSuffix": " För små lästunga arbetsbelastningar eller skrivtunga arbetsbelastningar av alla storlekar är id ofta ett bra val.",
+ "shardKeyLabel": "Shard-nyckel",
+ "partitionKeyLabel": "Partitionsnyckel",
+ "shardKeyPlaceholder": "t.ex. categoryId",
+ "partitionKeyPlaceholderDefault": "t.ex. /address",
+ "partitionKeyPlaceholderFirst": "Obligatoriskt – den första partitionsnyckeln, t.ex. /TenantId",
+ "partitionKeyPlaceholderSecond": "den andra partitionsnyckeln, t.ex. /UserId",
+ "partitionKeyPlaceholderThird": "tredje partitionsnyckeln, t.ex. /SessionId",
+ "partitionKeyPlaceholderGraph": "t. ex. /address/zipCode",
+ "uniqueKeysTooltip": "Med unika nycklar kan utvecklare lägga till ett lager med dataintegritet i databasen. Genom att skapa en unik nyckelprincip när en container skapas ser du till att ett eller flera värden per partitionsnyckel är unika.",
+ "uniqueKeysLabel": "Unika nycklar",
+ "analyticalStoreLabel": "Analyslager",
+ "analyticalStoreTooltip": "Aktivera analyslagringsfunktionen för att utföra analyser i nära realtid på dina driftdata, utan att påverka prestandan för transaktionsarbetsbelastningar.",
+ "analyticalStoreDescription": "Aktivera analyslagringsfunktionen för att utföra analyser i nära realtid på dina driftdata, utan att påverka prestandan för transaktionsarbetsbelastningar.",
+ "vectorPolicyTooltip": "Beskriv alla egenskaper i dina data som innehåller vektorer, så att de kan göras tillgängliga för likhetsfrågor."
+ },
+ "settings": {
+ "pageOptions": "Sidalternativ",
+ "pageOptionsDescription": "Välj Anpassat för att ange ett fast antal frågeresultat som ska visas, eller välj Obegränsat för att visa så många frågeresultat som möjligt per sida.",
+ "queryResultsPerPage": "Frågeresultat per sida",
+ "queryResultsPerPageTooltip": "Ange antalet frågeresultat som ska visas per sida.",
+ "customQueryItemsPerPage": "Anpassade frågeobjekt per sida",
+ "custom": "Anpassat",
+ "unlimited": "Obegränsat",
+ "entraIdRbac": "Aktivera Entra ID RBAC",
+ "entraIdRbacDescription": "Välj Automatisk om du vill aktivera Entra ID RBAC automatiskt. Sant/falskt för att framtvinga aktivering/inaktivering av Entra ID RBAC.",
+ "true": "Sant",
+ "false": "Falskt",
+ "regionSelection": "Regionval",
+ "regionSelectionDescription": "Ändrar regionen som Cosmos-klienten använder för att komma åt kontot.",
+ "selectRegion": "Välj region",
+ "selectRegionTooltip": "Ändrar den kontoslutpunkt som används för att utföra klientåtgärder.",
+ "globalDefault": "Globalt (standardvärde)",
+ "readWrite": "(Läs/skriv)",
+ "read": "(Läs)",
+ "queryTimeout": "Timeout för fråga",
+ "queryTimeoutDescription": "När en fråga når en angiven tidsgräns visas ett popup-fönster med ett alternativ för att avbryta frågan om inte automatisk annullering har aktiverats.",
+ "enableQueryTimeout": "Aktivera tidsgräns för fråga",
+ "queryTimeoutMs": "Tidsgräns för fråga (ms)",
+ "automaticallyCancelQuery": "Avbryt frågan automatiskt efter tidsgräns",
+ "ruLimit": "RU-gräns",
+ "ruLimitDescription": "Om en fråga överskrider en konfigurerad RU-gräns avbryts frågan.",
+ "enableRuLimit": "Aktivera RU-gräns",
+ "ruLimitLabel": "RU-gräns (RU)",
+ "defaultQueryResults": "Standardvy för frågeresultat",
+ "defaultQueryResultsDescription": "Välj den standardvy som ska användas när frågeresultat visas.",
+ "retrySettings": "Inställningar för nya försök",
+ "retrySettingsDescription": "Återförsöksprincip som är associerad med begränsade begäranden under CosmosDB-frågor.",
+ "maxRetryAttempts": "Maximalt antal återförsök",
+ "maxRetryAttemptsTooltip": "Maximalt antal återförsök som ska utföras för en begäran. Standardvärde 9.",
+ "fixedRetryInterval": "Fast återförsöksintervall (ms)",
+ "fixedRetryIntervalTooltip": "Fast återförsöksintervall i millisekunder att vänta mellan varje försök, oavsett retryAfter-värdet som returneras i svaret. Standardvärdet är 0 millisekunder.",
+ "maxWaitTime": "Maximal väntetid (s)",
+ "maxWaitTimeTooltip": "Maximal väntetid i sekunder för en begäran medan nya försök görs. Standardvärde 30 sekunder.",
+ "enableContainerPagination": "Aktivera containenumrering",
+ "enableContainerPaginationDescription": "Läs in 50 containrar åt gången. För närvarande hämtas inte containrar i alfanumerisk ordning.",
+ "enableCrossPartitionQuery": "Aktivera fråga mellan partitioner",
+ "enableCrossPartitionQueryDescription": "Skicka mer än en begäran medan du kör en fråga. Mer än en begäran krävs om frågan inte är begränsad till värdet för en enskild partitionsnyckel.",
+ "maxDegreeOfParallelism": "Maximal grad av parallellitet",
+ "maxDegreeOfParallelismDescription": "Hämtar eller anger antalet samtidiga åtgärder som körs på klientsidan under parallell frågekörning. Ett positivt egenskapsvärde begränsar antalet samtidiga åtgärder till det angivna värdet. Om den är inställd på mindre än 0 bestämmer systemet automatiskt antalet samtidiga åtgärder som ska köras.",
+ "maxDegreeOfParallelismQuery": "Fråga upp till maximal parallellitetsgrad.",
+ "priorityLevel": "Prioritetsnivå",
+ "priorityLevelDescription": "Anger prioritetsnivån för dataplansbegäranden från datautforskaren när prioritetsbaserad körning används. Om Ingen är markerat anger datautforskaren inte prioritetsnivå och standardprioritetsnivån på serversidan används.",
+ "displayGremlinQueryResults": "Visa Gremlin-frågeresultat som:",
+ "displayGremlinQueryResultsDescription": "Välj Diagram för att automatiskt visualisera frågeresultaten som ett diagram eller JSON för att visa resultaten som JSON.",
+ "graph": "Graf",
+ "json": "JSON",
+ "graphAutoVisualization": "Automatisk grafvisualisering",
+ "enableSampleDatabase": "Aktivera exempeldatabas",
+ "enableSampleDatabaseDescription": "Det här är en exempeldatabas och samling med syntetiska produktdata som du kan använda för att utforska med hjälp av NoSQL-frågor. Detta visas som en annan databas i Data Explorer-gränssnittet och skapas av och underhålls av Microsoft utan kostnad för dig.",
+ "enableSampleDbAriaLabel": "Aktivera exempeldatabas för frågeutforskning",
+ "guidRepresentation": "Guid-representation",
+ "guidRepresentationDescription": "GuidRepresentation i MongoDB syftar på hur globalt unika identifierare (GUID) serialiseras och avserialiseras när de lagras i BSON-dokument. Detta gäller för alla dokumentåtgärder.",
+ "advancedSettings": "Avancerade inställningar",
+ "ignorePartitionKey": "Ignorera partitionsnyckel vid dokumentuppdatering",
+ "ignorePartitionKeyTooltip": "Om det här alternativet är markerat används inte partitionsnyckelvärdet för att hitta dokumentet under uppdateringsåtgärderna. Använd endast detta om dokumentuppdateringar misslyckas på grund av en onormal partitionsnyckel.",
+ "clearHistory": "Rensa historiken",
+ "clearHistoryConfirm": "Vill du fortsätta?",
+ "clearHistoryDescription": "Den här åtgärden rensar alla anpassningar för det här kontot i den här webbläsaren, inklusive:",
+ "clearHistoryTabLayout": "Återställ din anpassade fliklayout, inklusive delningspositionerna",
+ "clearHistoryTableColumns": "Radera inställningarna för tabellkolumner, inklusive eventuella anpassade kolumner",
+ "clearHistoryFilters": "Rensa filterhistoriken",
+ "clearHistoryRegion": "Återställ val av region till global",
+ "increaseValueBy1000": "Öka värdet med 1000",
+ "decreaseValueBy1000": "Minska värdet med 1000",
+ "none": "Inget",
+ "low": "Låg",
+ "high": "Hög",
+ "automatic": "Automatisk",
+ "enhancedQueryControl": "Förbättrad frågekontroll",
+ "enableQueryControl": "Aktivera frågekontroll",
+ "explorerVersion": "Explorer-version",
+ "accountId": "Konto-id",
+ "sessionId": "Sessions-id",
+ "popupsDisabledError": "Det gick inte att upprätta auktorisering för det här kontot eftersom popup-fönster är blockerade i webbläsaren.\nAktivera popup-fönster för den här webbplatsen och klicka på knappen Logga in för Entra ID",
+ "failedToAcquireTokenError": "Det gick inte att hämta auktoriseringstoken automatiskt. Klicka på knappen Logga in för Entra ID för att aktivera Entra ID RBAC-åtgärder."
+ },
+ "saveQuery": {
+ "panelTitle": "Spara fråga",
+ "setupCostMessage": "Av efterlevnadsskäl sparar vi frågor i en container i ditt Azure Cosmos-konto, i en separat databas som heter {{databaseName}}. För att kunna fortsätta måste vi skapa en container på ditt konto. Den uppskattade extra kostnaden är 0,77 USD per dag.",
+ "completeSetup": "Slutför installationen",
+ "noQueryNameError": "Inget frågenamn har angetts",
+ "invalidQueryContentError": "Ogiltigt frågeinnehåll har angetts",
+ "failedToSaveQueryError": "Det gick inte att spara frågan {{queryName}}",
+ "failedToSetupContainerError": "Det gick inte att konfigurera en container för sparade frågor",
+ "accountNotSetupError": "Det gick inte att spara frågan: kontot har inte konfigurerats för att spara frågor",
+ "name": "Namn"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Ingen fil har angetts",
+ "failedToLoadQueryError": "Det gick inte att läsa in fråga",
+ "failedToLoadQueryFromFileError": "Det gick inte att läsa in frågan från filen {{fileName}}",
+ "selectFilesToOpen": "Välj ett frågedokument",
+ "browseFiles": "Bläddra"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Ange indataparametrar (om sådana finns)",
+ "key": "Nyckel",
+ "param": "Param.",
+ "partitionKeyValue": "Partitionsnyckelvärde",
+ "value": "Värde",
+ "addNewParam": "Lägg till ny param",
+ "addParam": "Lägg till param",
+ "deleteParam": "Ta bort param",
+ "invalidParamError": "Ogiltig param har angetts: {{invalidParam}}",
+ "invalidParamConsoleError": "Ogiltig param har angetts: {{invalidParam}} är inte ett giltigt literalvärde",
+ "stringType": "Sträng",
+ "customType": "Anpassat"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Inga filer har angetts. Ange minst en fil.",
+ "selectJsonFiles": "Välj JSON-filer",
+ "selectJsonFilesTooltip": "Välj en eller flera JSON-filer att ladda upp. Varje fil kan innehålla ett enda JSON-dokument eller en matris med JSON-dokument. Den kombinerade storleken för alla filer i en enskild uppladdningsåtgärd måste vara mindre än 2 MB. Du kan utföra flera uppladdningsåtgärder för större datauppsättningar.",
+ "fileNameColumn": "FILNAMN",
+ "statusColumn": "STATUS",
+ "uploadStatus": "{{numSucceeded}} skapades, {{numThrottled}} begränsades, {{numFailed}} fel",
+ "uploadedFiles": "Uppladdade filer"
+ },
+ "copyNotebook": {
+ "copyFailedError": "Det gick inte att kopiera {{name}} till {{destination}}",
+ "uploadFailedError": "Det gick inte att ladda upp {{name}}",
+ "location": "Plats",
+ "locationAriaLabel": "Plats",
+ "selectLocation": "Välj en plats för anteckningsbok att kopiera",
+ "name": "Namn"
+ },
+ "publishNotebook": {
+ "publishFailedError": "Det gick inte att publicera {{notebookName}} till galleriet",
+ "publishDescription": "När den här anteckningsboken publiceras visas den i det offentliga galleriet för Azure Cosmos DB notebook-filer. Kontrollera att du har tagit bort känsliga data eller utdata innan du publicerar.",
+ "publishPrompt": "Vill du publicera och dela {{name}} till galleriet?",
+ "coverImage": "Omslagsbild",
+ "coverImageUrl": "URL för omslagsbild",
+ "name": "Namn",
+ "description": "Beskrivning",
+ "tags": "Taggar",
+ "tagsPlaceholder": "Valfri tagg 1, valfri tagg 2",
+ "preview": "Förhandsversion",
+ "urlType": "Webbadress",
+ "customImage": "Anpassad avbildning",
+ "takeScreenshot": "Ta skärmbild",
+ "useFirstDisplayOutput": "Använd första visningsutdata",
+ "failedToCaptureOutput": "Det gick inte att samla in första utdata",
+ "outputDoesNotExist": "Utdata finns inte för någon av cellerna.",
+ "failedToConvertError": "Det gick inte att konvertera {{fileName}} till base64-format",
+ "failedToUploadError": "Det gick inte att ladda upp {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Det gick inte att starta dataöverföringsjobbet",
+ "suboptimalPartitionKeyError": "Varning! Systemet har upptäckt att din samling kanske använder en suboptimal partitionsnyckel",
+ "description": "När du ändrar en containers partitionsnyckel måste du skapa en målcontainer med rätt partitionsnyckel. Du kan också välja en befintlig målcontainer.",
+ "sourceContainerId": "Käll-id {{collectionName}}",
+ "destinationContainerId": "Mål-{{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",
+ "collectionIdAriaLabel": "{{collectionName}}-ID, exempel {{collectionName}}1",
+ "existingContainers": "Befintliga containrar",
+ "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.",
+ "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å."
+ },
+ "tables": {
+ "addProperty": "Lägg till egenskap",
+ "addRow": "Lägg till rad",
+ "addEntity": "Lägg till entitet",
+ "back": "tillbaka",
+ "nullFieldsWarning": "Varning! Null-fält visas inte för redigering.",
+ "propertyEmptyError": "{{property}} måste anges Ange ett värde för {{property}}",
+ "whitespaceError": "{{property}} får inte innehålla blanksteg. Ange ett värde för {{property}} utan blanksteg",
+ "propertyTypeEmptyError": "Egenskapstypen får inte vara tom. Välj en typ i listrutan för egenskapen {{property}}"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Välj de kolumner som du vill fråga.",
+ "availableColumns": "Tillgängliga kolumner"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Välj vilka kolumner som ska visas i vyn över objekt i containern.",
+ "searchFields": "Sökfält",
+ "reset": "Återställ",
+ "partitionKeySuffix": " (partitionsnyckel)"
+ },
+ "newVertex": {
+ "addProperty": "Lägg till egenskap"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Container-ID för globalt sekundärt index",
+ "globalSecondaryIndexIdPlaceholder": "t.ex. indexbyEmailId",
+ "projectionQuery": "Projektionsfråga",
+ "projectionQueryPlaceholder": "VÄLJ c.email, c.accountId FRÅN c",
+ "projectionQueryTooltip": "Läs mer om att definiera globala sekundära index.",
+ "disabledTitle": "Ett globalt sekundärt index skapas redan. Vänta tills den har slutförts innan du skapar en till."
+ },
+ "stringInput": {
+ "inputMismatchError": "Indata {{input}} matchar inte den valda {{selectedId}}"
+ },
+ "panelInfo": {
+ "information": "Information",
+ "moreDetails": "Mer information"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Skala",
+ "conflictResolution": "Lösning av konflikt",
+ "settings": "Inställningar",
+ "indexingPolicy": "Indexeringspolicy",
+ "partitionKeys": "Partitionsnycklar",
+ "partitionKeysPreview": "Partitionsnycklar (förhandsversion)",
+ "computedProperties": "Beräknade egenskaper",
+ "containerPolicies": "Containerprinciper",
+ "throughputBuckets": "Dataflödesbuckets",
+ "globalSecondaryIndexPreview": "Globalt sekundärt index (förhandsversion)",
+ "maskingPolicyPreview": "Namngivningsprincip (förhandsversion)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Välj en typ för varje index.",
+ "enterFieldNameError": "Ange ett fältnamn.",
+ "wildcardPathError": "Jokerteckensökvägen finns inte i fältnamnet. Använd ett mönster som "
+ },
+ "partitionKey": {
+ "shardKey": "Shard-nyckel",
+ "partitionKey": "Partitionsnyckel",
+ "shardKeyTooltip": "Shard-nyckeln (fältet) används för att dela dina data över många replikuppsättningar (shards) för att uppnå obegränsad skalbarhet. Det är viktigt att välja ett fält som distribuerar dina data jämnt.",
+ "partitionKeyTooltip": "används för att automatiskt distribuera data över partitioner för skalbarhet. Välj en egenskap i JSON-dokumentet som har ett stort antal värden och distribuerar begärandevolymen jämnt.",
+ "sqlPartitionKeyTooltipSuffix": " För små lästunga arbetsbelastningar eller skrivtunga arbetsbelastningar av alla storlekar är id ofta ett bra val.",
+ "partitionKeySubtext": "För små arbetsbelastningar är objekt-ID ett lämpligt val för partitionsnyckeln.",
+ "mongoPlaceholder": "t.ex. categoryId",
+ "gremlinPlaceholder": "t.ex. /address",
+ "sqlFirstPartitionKey": "Obligatoriskt – den första partitionsnyckeln, t.ex. /TenantId",
+ "sqlSecondPartitionKey": "den andra partitionsnyckeln, t.ex. /UserId",
+ "sqlThirdPartitionKey": "tredje partitionsnyckeln, t.ex. /SessionId",
+ "defaultPlaceholder": "t. ex. /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Kostnadsuppskattning",
+ "howWeCalculate": "Hur vi beräknar detta",
+ "updatedCostPerMonth": "Uppdaterad kostnad per månad",
+ "currentCostPerMonth": "Aktuell kostnad per månad",
+ "perRu": "/RU",
+ "perHour": "/tim",
+ "perDay": "/dag",
+ "perMonth": "/mån"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Den första autoskalningsgränsen för RU/s bestäms av systemet baserat på de aktuella manuella dataflödesinställningarna och lagringen av resursen. När autoskalning har aktiverats kan du ändra max antal RU/s.",
+ "ttlWarningText": "Systemet tar automatiskt bort objekt baserat på TTL-värdet (i sekunder) som du anger, utan att en borttagningsåtgärd uttryckligen behöver utfärdas av ett klientprogram. Mer information finns i",
+ "ttlWarningLinkText": "Time to Live (TTL) i Azure Cosmos DB",
+ "unsavedIndexingPolicy": "indexeringspolicy",
+ "unsavedDataMaskingPolicy": "datamaskeringsprincip",
+ "unsavedComputedProperties": "beräknade egenskaper",
+ "unsavedEditorWarningPrefix": "Du har inte sparat de senaste ändringarna i din",
+ "unsavedEditorWarningSuffix": ". Bekräfta ändringarna genom att klicka på Spara.",
+ "updateDelayedApplyWarning": "Du är på väg att begära ett ökat dataflöde utöver den förallokerade kapaciteten. Den här åtgärden tar lite tid att slutföra.",
+ "scalingUpDelayMessage": "Det tar 4–6 timmar att skala upp eftersom det överskrider det som Azure Cosmos DB direkt kan stödja baserat på antalet fysiska partitioner. Du kan öka ditt dataflöde för att {{instantMaximumThroughput}} omedelbart eller fortsätta med det här värdet och vänta tills uppskalningen har slutförts.",
+ "exceedPreAllocatedMessage": "Din begäran om att öka dataflödet överskrider den förallokerade kapaciteten, vilket kan ta längre tid än förväntat. Det finns tre alternativ som du kan välja mellan för att fortsätta:",
+ "instantScaleOption": "Du kan skala upp till {{instantMaximumThroughput}} RU/s direkt.",
+ "asyncScaleOption": "Du kan asynkront skala upp till valfritt värde under {{maximumThroughput}} RU/s på 4–6 timmar.",
+ "quotaMaxOption": "Den aktuella kvotgränsen är {{maximumThroughput}} RU/s. Om du vill överskrida den här gränsen måste du begära en kvotökning och Azure Cosmos DB team kommer att granska.",
+ "belowMinimumMessage": "Du kan inte sänka dataflödet under det aktuella minimivärdet {{minimum}} på RU/s. Mer information om den här gränsen finns i vår dokumentation om tjänstcitat.",
+ "saveThroughputWarning": "Din faktura påverkas när du uppdaterar dina dataflödesinställningar. Granska den uppdaterade kostnadsuppskattningen nedan innan du sparar ändringarna",
+ "currentAutoscaleThroughput": "Aktuellt dataflöde för autoskalning:",
+ "targetAutoscaleThroughput": "Dataflöde för automatisk målskalning:",
+ "currentManualThroughput": "Aktuellt manuellt dataflöde:",
+ "targetManualThroughput": "Manuellt måldataflöde:",
+ "applyDelayedMessage": "Begäran om att öka dataflödet har skickats. Den här åtgärden tar 1–3 arbetsdagar att slutföra. Visa den senaste statusen i Meddelanden.",
+ "databaseLabel": "Databas:",
+ "containerLabel": "Container:",
+ "applyShortDelayMessage": "En begäran om att öka dataflödet pågår för närvarande. Den här åtgärden tar lite tid att slutföra.",
+ "applyLongDelayMessage": "En begäran om att öka dataflödet pågår för närvarande. Den här åtgärden tar 1–3 arbetsdagar att slutföra. Visa den senaste statusen i Meddelanden.",
+ "throughputCapError": "Ditt konto har konfigurerats med en total dataflödesgräns på {{throughputCap}} RU/s. Det går inte att uppdatera eftersom det totala dataflödet skulle öka till {{newTotalThroughput}} RU/s. Ändra total dataflödesgräns i kostnadshantering.",
+ "throughputIncrementError": "Värdet måste vara i steg om 1000"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Senaste skrivsegrar (standard)",
+ "customMergeProcedure": "Sammanslagningsprocedur (anpassad)",
+ "mode": "Läge",
+ "conflictResolverProperty": "Egenskap för konfliktresolver",
+ "storedProcedure": "Lagrad procedur",
+ "lwwTooltip": "Hämtar eller anger namnet på en heltalsegenskap i dina dokument som används för det LWW-baserade konfliktlösningsschemat (Last Write Wins). Som standard använder systemet den systemdefinierade tidsstämpelegenskapen _ts för att avgöra vem som vinner de motstridiga versionerna av dokumentet. Ange din egen heltalsegenskap om du vill åsidosätta standard tidsstämpelbaserade konfliktlösningen.",
+ "customTooltip": "Hämtar eller anger namnet på en lagrad procedur (även kallat sammanslagningsprocedur) för att lösa konflikterna. Du kan skriva programdefinierad logik för att fastställa vinnaren av de motstridiga versionerna av ett dokument. Den lagrade proceduren körs transaktionsmässigt, exakt en gång, på serversidan. Om du inte anger någon lagrad procedur fylls konflikterna i",
+ "customTooltipConflictsFeed": " konfliktflöde",
+ "customTooltipSuffix": ". Du kan när som helst uppdatera/omregistrera den lagrade proceduren."
+ },
+ "changeFeed": {
+ "label": "Ändra kvarhållningsprincip för flödeslogg",
+ "tooltip": "Aktivera kvarhållningsprincip för ändringsflödeslogg för att behålla de senaste 10 minuternas historik för objekt i containern som standard. För att stödja detta multipliceras ru-avgiften (request unit) för den här containern med en faktor på två för skrivningar. Läsningar påverkas inte."
+ },
+ "mongoIndexing": {
+ "disclaimer": "För frågor som filtrerar på flera egenskaper skapar du flera index för ett enda fält i stället för ett sammansatt index.",
+ "disclaimerCompoundIndexesLink": " Sammansatta index ",
+ "disclaimerSuffix": "används endast för att sortera frågeresultat. Om du behöver lägga till ett sammansatt index kan du skapa ett med Hjälp av Mongo-gränssnittet.",
+ "compoundNotSupported": "Samlingar med sammansatta index stöds ännu inte i indexeringsredigeraren. Om du vill ändra indexeringsprincipen för den här samlingen använder du Mongo Shell.",
+ "aadError": "Om du vill använda redigeraren för indexeringsprincip loggar du in på",
+ "aadErrorLink": "azure portal.",
+ "refreshingProgress": "Uppdaterar förlopp för indexeringstransformationen",
+ "canMakeMoreChangesZero": "Du kan göra fler indexeringsändringar när den aktuella indextransformeringen är klar. ",
+ "refreshToCheck": "Uppdatera för att kontrollera om den har slutförts.",
+ "canMakeMoreChangesProgress": "Du kan göra fler indexeringsändringar när den aktuella indexomvandlingen har slutförts. Den är {{progress}} % slutförd. ",
+ "refreshToCheckProgress": "Uppdatera för att kontrollera förloppet.",
+ "definitionColumn": "Definition",
+ "typeColumn": "Typ",
+ "dropIndexColumn": "Ta bort index",
+ "addIndexBackColumn": "Lägg till index tillbaka",
+ "deleteIndexButton": "Knappen Ta bort index",
+ "addBackIndexButton": "Knappen Lägg till tillbaka index",
+ "currentIndexes": "Aktuellt index(es)",
+ "indexesToBeDropped": "Index som ska tas bort",
+ "indexFieldName": "Namn på indexfält",
+ "indexType": "Indextyp",
+ "selectIndexType": "Välj en indextyp",
+ "undoButton": "Knappen Ångra"
+ },
+ "subSettings": {
+ "timeToLive": "Time to Live",
+ "ttlOff": "Av",
+ "ttlOnNoDefault": "På (inte standard)",
+ "ttlOn": "På",
+ "seconds": "sekund(er)",
+ "timeToLiveInSeconds": "TTL-värde i sekunder",
+ "analyticalStorageTtl": "Analyslagring Time to Live",
+ "geospatialConfiguration": "Geospatial konfiguration",
+ "geography": "Geografiskt område",
+ "geometry": "Geometri",
+ "uniqueKeys": "Unika nycklar",
+ "mongoTtlMessage": "Om du vill aktivera TTL (Time To Live) för din samling/dina dokument",
+ "mongoTtlLinkText": "skapa ett TTL-index",
+ "partitionKeyTooltipTemplate": "Detta {{partitionKeyName}} används för att distribuera data över flera partitioner för skalbarhet. Värdet \"{{partitionKeyValue}}\" avgör hur dokument partitioneras.",
+ "largePartitionKeyEnabled": "Stor {{partitionKeyName}} har aktiverats.",
+ "hierarchicalPartitioned": "Hierarkiskt partitionerad container.",
+ "nonHierarchicalPartitioned": "Icke-hierarkiskt partitionerad container."
+ },
+ "scale": {
+ "freeTierInfo": "Med den kostnadsfria nivån får du de första {{ru}} RU/s och {{storage}} GB lagringsutrymmet i det här kontot kostnadsfritt. Om du vill hålla ditt konto kostnadsfritt behåller du det totala antalet RU/s för alla resurser i kontot till {{ru}} RU/s.",
+ "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",
+ "throughputRangeLabel": "Dataflöde ({{min}} – {{max}} RU/s)",
+ "unlimited": "obegränsat"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "Ändra {{partitionKeyName}}",
+ "currentPartitionKey": "Nuvarande {{partitionKeyName}}",
+ "partitioning": "Partitionering",
+ "hierarchical": "Hierarkiskt",
+ "nonHierarchical": "Icke-hierarkisk",
+ "safeguardWarning": "Skydda integriteten för de data som kopieras till den nya containern genom att se till att inga uppdateringar görs i källcontainern under hela processen för ändring av partitionsnyckel.",
+ "changeDescription": "Om du vill ändra partitionsnyckeln måste du skapa en ny målcontainer eller välja en befintlig målcontainer. Data kopieras sedan till målcontainern.",
+ "changeButton": "Ändra",
+ "changeJob": "{{partitionKeyName}} ändra jobb",
+ "cancelButton": "Avbryt",
+ "documentsProcessed": "({{processedCount}} av {{totalCount}} bearbetade dokument)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Beräknade egenskaper",
+ "learnMorePrefix": "om hur du definierar beräknade egenskaper och hur du använder dem."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Indexeringspolicy"
+ },
+ "dataMasking": {
+ "ariaLabel": "Datamaskeringsprincip",
+ "validationFailed": "Verifieringen misslyckades:",
+ "includedPathsRequired": "includedPaths krävs",
+ "includedPathsMustBeArray": "includedPaths måste vara en matris",
+ "excludedPathsMustBeArray": "excludedPaths måste vara en matris om den tillhandahålls"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vektorprincip",
+ "fullTextPolicy": "Fulltextprincip",
+ "createFullTextPolicy": "Skapa ny fulltextsökningsprincip"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Följande index har definierats för den här containern.",
+ "learnMoreSuffix": "om hur du definierar globala sekundära index och hur du använder dem.",
+ "jsonAriaLabel": "JSON för globalt sekundärt index",
+ "addIndex": "Lägg till index",
+ "settingsTitle": "Inställningar för globalt sekundärt index",
+ "sourceContainer": "Källcontainer",
+ "indexDefinition": "Global sekundär indexdefinition"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Det gick inte att uppdatera förloppet för indextransformering"
+ },
+ "throughputInput": {
+ "autoscale": "Autoskalning",
+ "manual": "Manuellt",
+ "minimumRuS": "Lägsta RU/s",
+ "maximumRuS": "Max RU/s",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Lagringskapacitet",
+ "fixed": "Åtgärdat",
+ "unlimited": "Obegränsat",
+ "instant": "Omedelbar",
+ "fourToSixHrs": "4-6 timmar",
+ "autoscaleDescription": "Baserat på användning skalas ditt {{resourceType}} dataflöde från",
+ "freeTierWarning": "Faktureringen gäller om du etablerar mer än {{ru}} RU/s manuellt dataflöde, eller om resursen skalas bortom {{ru}} RU/s med autoskalning.",
+ "capacityCalculator": "Beräkna din begärda RU/s med",
+ "capacityCalculatorLink": " Kapacitetskalkylator",
+ "fixedStorageNote": "När du använder en samling med fast lagringskapacitet kan du konfigurera upp till 10 000 RU/s.",
+ "min": "min",
+ "max": "högst"
+ },
+ "throughputBuckets": {
+ "label": "Dataflödesbuckets",
+ "bucketLabel": "Bucket {{id}}",
+ "dataExplorerQueryBucket": " (Datautforskaren frågebucket)",
+ "active": "Aktiv",
+ "inactive": "Inaktivt"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/t.ts b/src/Localization/t.ts
new file mode 100644
index 000000000..f4b5da3f6
--- /dev/null
+++ b/src/Localization/t.ts
@@ -0,0 +1,24 @@
+import i18n from "../i18n";
+import type enResources from "./en/Resources.json";
+
+/**
+ * Derives a union of all dot-notation key paths from a nested JSON object type.
+ * e.g. { buttons: { save: "Save" } } → "buttons.save"
+ */
+type NestedKeyOf = {
+ [K in keyof T & string]: T[K] extends Record
+ ? NestedKeyOf
+ : P extends ""
+ ? K
+ : `${P}.${K}`;
+}[keyof T & string];
+
+/** All valid translation keys derived from en/Resources.json */
+export type ResourceKey = NestedKeyOf;
+
+/**
+ * Type-safe translation function bound to the "Resources" namespace.
+ * Use this everywhere—class components, functional components, and non-React code.
+ */
+export const t = (key: ResourceKey, options?: Record): string =>
+ (i18n.t as (key: string, options?: unknown) => string)(key, { ns: "Resources", ...options });
diff --git a/src/Localization/tr/Resources.json b/src/Localization/tr/Resources.json
new file mode 100644
index 000000000..e93c1df4d
--- /dev/null
+++ b/src/Localization/tr/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "Tamam",
+ "cancel": "İptal",
+ "close": "Kapat",
+ "save": "Kaydet",
+ "delete": "Sil",
+ "update": "Güncelleştir",
+ "discard": "At",
+ "execute": "Yürüt",
+ "loading": "Yükleniyor",
+ "loadingEllipsis": "Yükleniyor...",
+ "next": "Sonraki",
+ "previous": "Önceki",
+ "yes": "Evet",
+ "no": "Hayır",
+ "result": "Sonuç",
+ "learnMore": "Daha fazla bilgi edinin",
+ "getStarted": "Kullanmaya başlayın",
+ "retry": "Yeniden dene",
+ "apply": "Uygula",
+ "refresh": "Yenile",
+ "copy": "Kopyala",
+ "create": "Oluştur",
+ "confirm": "Onayla",
+ "open": "Aç",
+ "rename": "Yeniden adlandır",
+ "download": "İndir",
+ "upload": "Karşıya yükle",
+ "connect": "Bağlan",
+ "remove": "Kaldır",
+ "load": "Yükle",
+ "publish": "Yayımla",
+ "browse": "Gözat",
+ "increaseValueBy1": "Değeri 1 artır",
+ "decreaseValueBy1": "Değeri 1 azalt"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "Azure Cosmos DB'ye hoş geldiniz",
+ "postgres": "Azure Cosmos DB for PostgreSQL'e hoş geldiniz",
+ "vcoreMongo": "Azure DocumentDB'ye (MongoDB uyumluluğu ile) hoş geldiniz"
+ },
+ "subtitle": {
+ "default": "Her ölçeğe uygun, global olarak dağıtılan çok modelli veritabanı hizmeti",
+ "getStarted": "Örnek veri kümelerimizi, belgelerimizi ve ek araçlarımızı kullanmaya başlayın."
+ },
+ "quickStart": {
+ "title": "Hızlı başlangıcı başlatın",
+ "description": "Örnek verilerle başlamanız için hızlı başlangıç öğreticisini başlatın"
+ },
+ "newCollection": {
+ "title": "Yeni {{collectionName}}",
+ "description": "Depolama ve aktarım hızı için yeni bir kapsayıcı oluşturun"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB Örnekler Galerisi",
+ "description": "Ölçeklenebilir, akıllı uygulama desenlerini gösteren örnekleri keşfedin. Cosmos DB ile kavramdan koda ne kadar hızlı geçebileceğinizi görmek için hemen birini deneyin"
+ },
+ "connectCard": {
+ "title": "Bağlan",
+ "description": "Kendi araçlarınızı kullanmayı mı tercih ediyorsunuz? Bağlanmak için ihtiyacınız olan bağlantı dizesini bulun",
+ "pgAdmin": {
+ "title": "pgAdmin ile bağlanın",
+ "description": "pgAdmin'i mi tercih edersiniz? Bağlantı dizelerinizi burada bulabilirsiniz"
+ },
+ "vsCode": {
+ "title": "VS Code ile Bağlan",
+ "description": "Visual Studio Code'da MongoDB ve DocumentDB kümelerinizi sorgulayın ve yönetin"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Kabuk",
+ "description": "PostgreSQL kabuk arayüzünü kullanarak tablo oluşturun ve verilerle etkileşim kurun"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "MongoDB kabuk arayüzünü kullanarak koleksiyon oluşturun ve verilerle etkileşim kurun"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "Cosmos DB PGSQL yeni misiniz?",
+ "body": "Hoş geldiniz! Cosmos DB PGSQL kullanmaya yeni başladıysanız ve başlamayla ilgili yardıma ihtiyacınız varsa, örnek verileri ve sorguları burada bulabilirsiniz."
+ },
+ "resetPassword": {
+ "headline": "Parolanızı oluşturun",
+ "body": "Henüz parolanızı değiştirmediyseniz, şimdi değiştirin."
+ },
+ "coachMark": {
+ "headline": "{{collectionName}} örneğiyle başlayın",
+ "body": "Örnek verilerle örnek bir kapsayıcı oluşturmanız için size rehberlik edeceğiz, ardından Veri Gezgini turu yapacağız. Bu turu başlatmayı iptal edip kendiniz de keşfedebilirsiniz"
+ }
+ },
+ "sections": {
+ "recents": "Son kullanılanlar",
+ "clearRecents": "Son Kullanılanları Temizle",
+ "top3": "Bilmeniz gereken ilk 3 şey",
+ "learningResources": "Öğrenme Kaynakları",
+ "nextSteps": "Sonraki adımlar",
+ "tipsAndLearnMore": "İpuçları & daha fazla bilgi edinin",
+ "notebook": "Not Defteri",
+ "needHelp": "Yardıma mı ihtiyacınız var?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "Gelişmiş Modelleme Desenleri",
+ "description": "Veritabanınızı iyileştirme için gelişmiş stratejiler öğrenin."
+ },
+ "partitioning": {
+ "title": "Bölümleme için En İyi Uygulamalar",
+ "description": "Veri modeli ve bölümleme stratejilerini uygulamayı öğrenin."
+ },
+ "resourcePlanning": {
+ "title": "Kaynak Gereksinimlerinizi Planlayın",
+ "description": "Farklı yapılandırma seçeneklerini öğrenin."
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "MongoDB API'si nedir?",
+ "description": "Azure Cosmos DB for MongoDB ve özelliklerini anlayın."
+ },
+ "features": {
+ "title": "Özellikler ve Söz Dizimi",
+ "description": "Avantajları ve özellikleri keşfedin"
+ },
+ "migrate": {
+ "title": "Verinizi Taşıyın",
+ "description": "Veri taşımaya yönelik geçiş öncesi adımlar"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "Java Uygulaması oluşturun",
+ "description": "SDK kullanarak Java uygulaması oluşturun."
+ },
+ "partitioning": {
+ "title": "Bölümleme için En İyi Uygulamalar",
+ "description": "Bölümlemenin nasıl çalıştığını öğrenin."
+ },
+ "requestUnits": {
+ "title": "İstek Birimleri (RU'lar)",
+ "description": "RU ücretlerini anlayın."
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "Veri Modelleme",
+ "description": "Grafik veri modelleme önerileri"
+ },
+ "partitioning": {
+ "title": "Bölümleme için En İyi Uygulamalar",
+ "description": "Bölümlemenin nasıl çalıştığını öğrenin"
+ },
+ "queryData": {
+ "title": "Veri Sorgula",
+ "description": "Gremlin ile veri sorgulama"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "Table API nedir?",
+ "description": "Azure Cosmos DB for Table ve özelliklerini anlayın"
+ },
+ "migrate": {
+ "title": "Verinizi taşıyın",
+ "description": "Verilerinizi taşımayı öğrenin"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table SSS",
+ "description": "Azure Cosmos DB for Table hakkında sık sorulan sorular"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "Veri Gezgini klavye kısayolları",
+ "description": "Veri Gezgini'nde gezinmek için klavye kısayollarını öğrenin."
+ },
+ "liveTv": {
+ "title": "Temelleri Öğrenin",
+ "description": "Azure Cosmos DB Canlı TV şovunun tanıtım ve nasıl yapılır videolarını izleyin."
+ },
+ "sql": {
+ "sdk": {
+ "title": "SDK kullanarak Başla",
+ "description": "Azure Cosmos DB SDK hakkında bilgi edinin."
+ },
+ "migrate": {
+ "title": "Verinizi Taşıyın",
+ "description": "Azure hizmetleri ve açık kaynak çözümler kullanarak verileri taşıyın."
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "Node.js ile uygulama oluşturun",
+ "description": "Node.js uygulaması oluşturun."
+ },
+ "gettingStarted": {
+ "title": "Başlangıç Kılavuzu",
+ "description": "Başlamak için temel bilgileri öğrenin."
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "Kapsayıcı Oluştur",
+ "description": "Kapsayıcı oluşturma seçeneklerini öğrenin."
+ },
+ "throughput": {
+ "title": "Aktarım Hızı Sağla",
+ "description": "Verimliliği nasıl yapılandıracağınızı öğrenin."
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "Başlayın ",
+ "description": "Gremlin konsolunu kullanarak oluşturun, sorgulayın ve gezin"
+ },
+ "importData": {
+ "title": "Grafik Verilerini İçe Aktar",
+ "description": "BulkExecutor kullanarak toplu veri alımını öğrenin"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": ".NET Uygulaması oluşturun",
+ "description": ".NET uygulamasından Azure Cosmos DB for Table'a nasıl erişilir."
+ },
+ "java": {
+ "title": "Java Uygulaması oluşturun",
+ "description": "Java SDK ile Azure Cosmos DB for Table uygulaması oluşturun "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "Veri Modelleme",
+ "distributionColumn": "Dağıtım Sütunu nasıl seçilir",
+ "buildApps": "Python/Java/Django ile Uygulama Geliştirin"
+ },
+ "vcoreMongo": {
+ "migrateData": "Verileri Geçir",
+ "vectorSearch": "Vektör Arama ile yapay zeka uygulamaları geliştirin",
+ "buildApps": "Node.js ile Uygulama Geliştirin"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "Performans Ayarlama",
+ "diagnosticQueries": "Yararlı Tanılama Sorguları",
+ "sqlReference": "Dağıtılmış SQL Referansı"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "Vektör Araması",
+ "textIndexing": "Metin Dizini",
+ "troubleshoot": "Sık karşılaşılan sorunları giderme"
+ }
+ },
+ "fabric": {
+ "buildTitle": "Veritabanınızı oluşturma",
+ "useTitle": "Veritabanınızı kullanma",
+ "newContainer": {
+ "title": "Yeni kapsayıcı",
+ "description": "Verilerinizi depolamak için hedef kapsayıcı oluşturun"
+ },
+ "sampleData": {
+ "title": "Örnek Veriler",
+ "description": "Örnek verileri veritabanınıza yükleyin"
+ },
+ "sampleVectorData": {
+ "title": "Örnek Vektör Verileri",
+ "description": "text-embedding-ada-002 ile örnek vektör verilerini yükleyin"
+ },
+ "appDevelopment": {
+ "title": "Uygulama geliştirme",
+ "description": "Uygulamalarınızı oluşturmak için bir SDK kullanmaya buradan başlayın"
+ },
+ "sampleGallery": {
+ "title": "Örnek Galeri",
+ "description": "Gerçek uçtan uca örnekler alın"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "Örnek Veriler",
+ "startButton": "Başlat",
+ "createPrompt": "\"{{containerName}}\" kapsayıcısını oluşturun ve örnek verileri içe aktarın. Bu işlem birkaç dakika sürebilir.",
+ "creatingContainer": "\"{{containerName}}\" kapsayıcısı oluşturuluyor...",
+ "importingData": "Veriler \"{{containerName}}\" içine aktarılıyor...",
+ "success": "\"{{containerName}}\" örnek verilerle başarıyla oluşturuldu.",
+ "errorContainerExists": "\"{{databaseName}}\" veritabanındaki \"{{containerName}}\" kapsayıcısı zaten var. Lütfen silip tekrar deneyin.",
+ "errorCreateContainer": "Kapsayıcı oluşturulamadı: {{error}}",
+ "errorImportData": "Veriler içeri aktarılamadı: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "Yeni {{containerName}}",
+ "restoreContainer": "{{containerName}} öğesini geri yükle",
+ "deleteDatabase": "{{databaseName}} öğesini sil",
+ "deleteContainer": "{{containerName}} öğesini sil",
+ "newSqlQuery": "Yeni SQL Sorgusu",
+ "newQuery": "Yeni Sorgu",
+ "openMongoShell": "Mongo Shell'i Aç",
+ "newShell": "Yeni Kabuk",
+ "openCassandraShell": "Cassandra Shell'i Aç",
+ "newStoredProcedure": "Yeni Saklı Yordam",
+ "newUdf": "Yeni UDF",
+ "newTrigger": "Yeni Tetikleyici",
+ "deleteStoredProcedure": "Saklı Yordamı Sil",
+ "deleteTrigger": "Tetikleyiciyi Sil",
+ "deleteUdf": "Kullanıcı Tanımlı İşlevi Sil"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "Yeni Öğe",
+ "newDocument": "Yeni Belge",
+ "uploadItem": "Öğeyi Karşıya Yükle",
+ "applyFilter": "Filtre Uygula",
+ "unsavedChanges": "Kaydedilmemiş değişiklikler",
+ "unsavedChangesMessage": "Kaydedilmemiş değişiklikleriniz kaybedilir. Devam etmek istiyor musunuz?",
+ "createDocumentFailed": "Belge oluşturma işlemi başarısız oldu",
+ "updateDocumentFailed": "Belge güncelleştirme işlemi başarısız oldu",
+ "documentDeleted": "Belge başarıyla silindi.",
+ "deleteDocumentDialogTitle": "Belgeyi sil",
+ "deleteDocumentsDialogTitle": "Belgeleri sil",
+ "throttlingError": "Bazı belgeler hız sınırlama hatası nedeniyle silinemedi. Lütfen daha sonra yeniden deneyin. Gelecekte bunu engellemek için, kapsayıcınızda veya veritabanınızda aktarım hızını artırmayı göz önünde bulundurun.",
+ "deleteFailed": "Belgeleri silme işlemi başarısız oldu ({{error}})",
+ "missingShardProperty": "Belgede parça özelliği eksik: {{partitionKeyProperty}}",
+ "refreshGridFailed": "Belgeler kılavuzu yenilenemedi",
+ "confirmDelete": "{{documentName}} belgesini silmek istediğinizden emin misiniz?",
+ "confirmDeleteTitle": "Silmeyi onaylayın",
+ "selectedItems": "seçili {{count}} öğe",
+ "selectedItem": "seçili öğe",
+ "selectedDocuments": "seçili {{count}} belge",
+ "selectedDocument": "seçili belge",
+ "deleteDocumentFailedLog": "{{documentId}} belgesi silinemedi. Durum kodu: {{statusCode}}",
+ "deleteSuccessLog": "{{count}} belge başarıyla silindi",
+ "deleteThrottledLog": "“İstek fazla büyük” (429) hatası nedeniyle {{count}} belge silinemedi. Yeniden deneniyor...",
+ "missingShardKeyLog": "Yeni belge kaydedilemedi: Belge parça anahtarı tanımlanmadı",
+ "filterTooltip": "Bir sorgu koşulu yazın veya listeden bir koşul seçin.",
+ "loadMore": "Daha fazla yükle",
+ "documentEditor": "Belge düzenleyicisi",
+ "savedFilters": "Kaydedilmiş filtreler",
+ "defaultFilters": "Varsayılan filtreler",
+ "abort": "Durdur",
+ "deletingDocuments": "{{count}} belge siliniyor",
+ "deletedDocumentsSuccess": "{{count}} belge başarıyla silindi.",
+ "deleteAborted": "Belgeleri silme işlemi durduruldu.",
+ "failedToDeleteDocuments": "{{count}} belge silinemedi.",
+ "requestTooLargeBase": "Bazı silme istekleri \"İstek fazla büyük\" (429) hatası nedeniyle başarısız oldu",
+ "retriedSuccessfully": "ancak başarıyla yeniden denendi.",
+ "retryingNow": "Şimdi yeniden deneniyor.",
+ "increaseThroughputTip": "Gelecekte bunu engellemek için, kapsayıcınızda veya veritabanınızda aktarım hızını artırmayı göz önünde bulundurun.",
+ "numberOfSelectedDocuments": "Seçili belge sayısı: {{count}}",
+ "mongoFilterPlaceholder": "Bir sorgu koşulu yazın (örneğin, {\"id\":\"foo\"}) veya açılan listeden bir koşul seçin. Ayrıca tüm belgeleri sorgulamak için boş bırakabilirsiniz.",
+ "sqlFilterPlaceholder": "Bir sorgu koşulu yazın (örneğin, WHERE c.id=\"1\") veya açılan listeden bir koşul seçin. Ayrıca tüm belgeleri sorgulamak için boş bırakabilirsiniz.",
+ "error": "Hata",
+ "warning": "Uyarı"
+ },
+ "query": {
+ "executeQuery": "Sorguyu Yürüt",
+ "executeSelection": "Seçimi Yürüt",
+ "saveQuery": "Sorguyu Kaydet",
+ "downloadQuery": "Sorguyu İndir",
+ "cancelQuery": "Sorguyu iptal et",
+ "openSavedQueries": "Kaydedilmiş Sorguları Aç",
+ "vertical": "Dikey kategori",
+ "horizontal": "Yatay",
+ "view": "Görünüm",
+ "editingQuery": "Sorgu Düzenleniyor"
+ },
+ "storedProcedure": {
+ "id": "Saklı Yordam Kimliği",
+ "idPlaceholder": "Yeni saklı yordam kimliğini girin",
+ "idAriaLabel": "Saklı yordam kimliği",
+ "body": "Saklı Yordam Gövdesi",
+ "bodyAriaLabel": "Saklı yordam gövdesi",
+ "successfulExecution": "Saklı yordamın başarıyla yürütülmesi",
+ "resultAriaLabel": "Saklı yordam sonucunu yürüt",
+ "logsAriaLabel": "Saklı yordam günlüklerini yürüt",
+ "errors": "Hatalar:",
+ "errorDetailsAriaLabel": "Hata ayrıntıları bağlantısı",
+ "moreDetails": "Diğer ayrıntılar",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "Tetikleyici Kimliği",
+ "idPlaceholder": "Yeni tetikleyici kimliğini girin",
+ "type": "Tetikleyici Türü",
+ "operation": "Tetikleyici İşlemi",
+ "body": "Tetikleyici Gövdesi",
+ "bodyAriaLabel": "Tetikleyici gövdesi",
+ "pre": "Önce",
+ "post": "Gönder",
+ "all": "Tümü",
+ "operationCreate": "Oluştur",
+ "operationDelete": "Sil",
+ "operationReplace": "Değiştir"
+ },
+ "udf": {
+ "id": "Kullanıcı Tanımlı İşlev Kimliği",
+ "idPlaceholder": "Yeni kullanıcı tanımlı işlev kimliğini girin",
+ "body": "Kullanıcı Tanımlı İşlev Gövdesi",
+ "bodyAriaLabel": "Kullanıcı tanımlı işlev gövdesi"
+ },
+ "conflicts": {
+ "unsavedChanges": "Kaydedilmemiş değişiklikler",
+ "changesWillBeLost": "Değişiklikler kaybolacak. Devam etmek istiyor musunuz?",
+ "resolveConflictFailed": "Çakışmayı çözme işlemi başarısız oldu",
+ "deleteConflictFailed": "Çakışmayı silme işlemi başarısız oldu",
+ "refreshGridFailed": "Belgeler kılavuzu yenilenemedi"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "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.",
+ "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!",
+ "feedbackReason": "Bu {{databaseName}} veritabanını silmenizin nedeni nedir?"
+ },
+ "deleteCollection": {
+ "panelTitle": "{{collectionName}} koleksiyonunu sil",
+ "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!",
+ "feedbackReason": "Bu {{collectionName}} koleksiyonunu silmenizin nedeni nedir?"
+ },
+ "addDatabase": {
+ "databaseLabel": "Veritabanı {{suffix}}",
+ "databaseIdLabel": "Veritabanı kimliği",
+ "keyspaceIdLabel": "Anahtar alanı 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"
+ },
+ "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",
+ "collectionIdAriaLabel": "{{collectionName}} kimliği, Örnek {{collectionName}}1",
+ "existingDatabaseAriaLabel": "Mevcut {{databaseName}} kimliğini seçin",
+ "existingDatabasePlaceholder": "Mevcut {{databaseName}} kimliğini seçin",
+ "indexing": "Dizin oluşturma",
+ "turnOnIndexing": "Dizin oluşturmayı aç",
+ "automatic": "Otomatik",
+ "turnOffIndexing": "Dizin oluşturmayı kapat",
+ "off": "Kapalı",
+ "sharding": "Parçalama",
+ "shardingTooltip": "Parçalanmış koleksiyonlar, sınırsız ölçeklenebilirlik sağlamak için verilerinizi birçok çoğaltma kümesi (parça) arasında bölebilir. Parçalanmış koleksiyonlar, verilerinizi eşit olarak dağıtmak için bir parça anahtarı (alan) seçmeyi gerektirir.",
+ "unsharded": "Parçalanmamış",
+ "unshardedLabel": "Parçalanmamış (20 GB sınırı)",
+ "sharded": "Parçalanmış",
+ "addPartitionKey": "Hiyerarşik bölüm anahtarı ekle",
+ "hierarchicalPartitionKeyInfo": "Bu özellik, daha iyi veri dağıtımı için verilerinizi üç anahtar düzeyi ile bölümlemenize olanak tanır. .NET V3, Java V4 SDK veya önizleme JavaScript V3 SDK gerektirir.",
+ "provisionDedicatedThroughput": "Bu {{collectionName}} için ayrılmış aktarım hızı sağlayın",
+ "provisionDedicatedThroughputTooltip": "İsteğe bağlı olarak, aktarım hızı sağlanan bir veritabanındaki bir {{collectionName}} için ayrılmış aktarım hızı sağlayabilirsiniz. Bu ayrılmış aktarım hızı miktarı, veritabanındaki diğer {{collectionNamePlural}} ile paylaşılmaz ve veritabanı için sağladığınız aktarım hızını etkilemez. Bu aktarım hızı miktarı veritabanı düzeyinde sağladığınız aktarım hızına ek olarak faturalandırılır.",
+ "uniqueKeysPlaceholderMongo": "Virgülle ayrılmış yollar, ör. firstName,/address/zipCode",
+ "uniqueKeysPlaceholderSql": "Virgülle ayrılmış yollar, ör. /firstName,/address/zipCode",
+ "addUniqueKey": "Benzersiz anahtar ekle",
+ "enableAnalyticalStore": "Analiz deposunu etkinleştir",
+ "disableAnalyticalStore": "Analiz deposunu devre dışı bırak",
+ "on": "Açık",
+ "analyticalStoreSynapseLinkRequired": "Azure Synapse Link, bir {{collectionName}} analiz deposu oluşturmak için gereklidir. Bu Cosmos DB hesabı için Synapse Link’i etkinleştirin.",
+ "enable": "Etkinleştir",
+ "containerVectorPolicy": "Kapsayıcı Vektör İlkesi",
+ "containerFullTextSearchPolicy": "Kapsayıcı Tam Metin Arama İlkesi",
+ "advanced": "Gelişmiş",
+ "mongoIndexingTooltip": "Belirtilen _id alanı varsayılan olarak dizine alınır. Tüm alanlar için joker karakter dizini oluşturulması sorguları iyileştirir ve geliştirme için önerilir.",
+ "createWildcardIndex": "Tüm alanlarda Joker Karakter Dizini oluştur",
+ "legacySdkCheckbox": "Uygulamam daha eski bir Cosmos .NET veya Java SDK sürümünü (.NET V1 veya Java V2) kullanıyor.",
+ "legacySdkInfo": "Eski SDK’larla uyumluluğu sağlamak için, oluşturulan kapsayıcı yalnızca 101 bayta kadar boyuta sahip bölüm anahtarı değerlerini destekleyen eski bir bölümleme şemasını kullanır. Bu özellik etkinleştirilirse, hiyerarşik bölüm anahtarlarını kullanamazsınız.",
+ "indexingOnInfo": "Belgelerinizdeki tüm özellikler, sorguların esnek ve verimli olmasını sağlamak için varsayılan olarak dizine alınır.",
+ "indexingOffInfo": "Dizin oluşturma kapatılır. Sorgu çalıştırmanız gerekmiyorsa veya yalnızca anahtar-değer işlemleriniz varsa önerilir.",
+ "indexingOffWarning": "Bu kapsayıcıyı dizin oluşturma kapalıyken oluşturduğunuzda, dizin oluşturma ilkesinde değişiklik yapamazsınız. Dizin oluşturma değişikliklerine yalnızca dizin oluşturma ilkesine sahip kapsayıcılarda izin verilir.",
+ "acknowledgeSpendErrorMonthly": "Lütfen tahmini aylık harcamayı kabul edin.",
+ "acknowledgeSpendErrorDaily": "Lütfen tahmini günlük harcamayı kabul edin.",
+ "unshardedMaxRuError": "Parçalanmamış koleksiyonlar en fazla 10.000 RU’yu destekler",
+ "acknowledgeShareThroughputError": "Lütfen bu ayrılmış aktarım hızının tahmini maliyetini onaylayın.",
+ "vectorPolicyError": "Kapsayıcı vektör ilkesindeki hataları düzeltin",
+ "fullTextSearchPolicyError": "Kapsayıcı tam metin arama ilkesindeki hataları düzeltin.",
+ "addingSampleDataSet": "Örnek veri kümesi ekleniyor",
+ "databaseFieldLabelName": "Veritabanı adı",
+ "databaseFieldLabelId": "Veritabanı kimliği",
+ "newDatabaseIdPlaceholder": "Yeni bir veritabanı kimliği girin",
+ "newDatabaseIdAriaLabel": "Yeni veritabanı kimliği, Yeni bir veritabanı kimliği yazın",
+ "createNewDatabaseAriaLabel": "Yeni veritabanı oluştur",
+ "useExistingDatabaseAriaLabel": "Mevcut veritabanını kullan",
+ "chooseExistingDatabase": "Mevcut bir veritabanını seçin",
+ "teachingBubble": {
+ "step1Headline": "Örnek veritabanı oluştur",
+ "step1Body": "Veritabanı, bir kapsayıcının üst öğesidir. Yeni bir veritabanı oluşturabilir veya var olan bir veritabanını kullanabilirsiniz. Bu öğreticide SampleDB adlı yeni bir veritabanı oluşturuyoruz.",
+ "step1LearnMore": "Kaynaklar hakkında daha fazla bilgi edinin.",
+ "step2Headline": "Aktarım hızını ayarlama",
+ "step2Body": "Cosmos DB, aktarım hızını veritabanları arasında paylaşmanızı önerir. Otomatik ölçeklendirme, belirlenen maksimum RU/s (İstek Birimleri) değerine göre esnek bir aktarım hızı sağlar.",
+ "step2LearnMore": "RU/s hakkında daha fazla bilgi edinin.",
+ "step3Headline": "Kapsayıcı adı verme",
+ "step3Body": "Kapsayıcınıza ad verin",
+ "step4Headline": "Bölüm anahtarı ayarlanıyor",
+ "step4Body": "Son adım: Koleksiyonunuz için bir bölüm anahtarı tanımlamanız gerekir. /address seçeneği bu özel örnek için seçildi. İyi bir bölüm anahtarı geniş bir değer aralığına sahip olmalıdır",
+ "step4CreateContainer": "Kapsayıcı oluştur",
+ "step5Headline": "Örnek kapsayıcı oluşturuluyor",
+ "step5Body": "Şu anda bir örnek kapsayıcı oluşturuluyor ve sizin için örnek veriler ekleniyor. Bu işlem yaklaşık 1 dakika sürer.",
+ "step5BodyFollowUp": "Örnek kapsayıcı oluşturulduktan sonra örnek veri kümenizi gözden geçirin ve sonraki adımları izleyin",
+ "stepOfTotal": "Adım {{current}} / {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "Parça anahtarı (alan), sınırsız ölçeklenebilirlik sağlamak amacıyla verilerinizi birçok çoğaltma kümesi (parça) arasında bölmek için kullanılır. Verilerinizi eşit olarak dağıtacak bir alan seçmeniz kritik önem taşır.",
+ "partitionKeyTooltip": "{{partitionKeyName}}, bölümler arasında ölçeklenebilirlik için verileri otomatik olarak dağıtmak amacıyla kullanılır. JSON belgenizde çeşitli değerlerin yer aldığı ve istek hacmini eşit olarak dağıtan bir özellik seçin.",
+ "partitionKeyTooltipSqlSuffix": " Her boyuttaki küçük okuma yoğun iş yükleri veya yazma yoğun iş yükleri için, kimlik genellikle iyi bir seçenektir.",
+ "shardKeyLabel": "Parça anahtarı",
+ "partitionKeyLabel": "Bölüm anahtarı",
+ "shardKeyPlaceholder": "ör. categoryId",
+ "partitionKeyPlaceholderDefault": "ör. /address",
+ "partitionKeyPlaceholderFirst": "Gerekli - ilk bölüm anahtarı ör. /TenantId",
+ "partitionKeyPlaceholderSecond": "ikinci bölüm anahtarı, örneğin, /UserId",
+ "partitionKeyPlaceholderThird": "üçüncü bölüm anahtarı, ör. /SessionId",
+ "partitionKeyPlaceholderGraph": "ör. /address/zipCode",
+ "uniqueKeysTooltip": "Benzersiz anahtarlar, geliştiricilere veritabanına bir veri bütünlüğü katmanı ekleme yeteneği sunar. Kapsayıcı oluşturulurken bir benzersiz anahtar ilkesi oluşturarak, bölüm anahtarı başına bir veya daha fazla değerin benzersiz olmasını sağlarsınız.",
+ "uniqueKeysLabel": "Benzersiz anahtarlar",
+ "analyticalStoreLabel": "Analiz Deposu",
+ "analyticalStoreTooltip": "İşlemsel iş yüklerinin performansını etkilemeden işlem verilerinizde gerçek zamanlıya yakın analiz yapmak için analiz deposu özelliğini etkinleştirin.",
+ "analyticalStoreDescription": "İşlemsel iş yüklerinin performansını etkilemeden işlem verilerinizde gerçek zamanlıya yakın analiz yapmak için analiz deposu özelliğini etkinleştirin.",
+ "vectorPolicyTooltip": "Benzerlik sorgularında kullanılabilmesi için verilerinizde vektör içeren özellikleri açıklayın."
+ },
+ "settings": {
+ "pageOptions": "Sayfa Seçenekleri",
+ "pageOptionsDescription": "Gösterilecek sabit sorgu sonucu sayısını belirtmek için Özel seçeneğini veya sayfa başına çok sayıda sorgu sonucu göstermek için Sınırsız seçeneğini belirleyin.",
+ "queryResultsPerPage": "Sayfa başına sorgu sonuçları",
+ "queryResultsPerPageTooltip": "Sayfa başına gösterilecek sorgu sonucu sayısını girin.",
+ "customQueryItemsPerPage": "Sayfa başına özel sorgu öğeleri",
+ "custom": "Özel",
+ "unlimited": "Sınırsız",
+ "entraIdRbac": "Entra ID RBAC’yi etkinleştir",
+ "entraIdRbacDescription": "Entra ID RBAC’yi otomatik olarak etkinleştirmek için Otomatik seçeneğini belirleyin. Entra ID RBAC’yi etkinleştirmeyi veya devre dışı bırakmayı zorlamak için Doğru/Yanlış seçin.",
+ "true": "Doğru",
+ "false": "Yanlış",
+ "regionSelection": "Bölge Seçimi",
+ "regionSelectionDescription": "Cosmos İstemcisinin hesaba erişmek için kullandığı bölgeyi değiştirir.",
+ "selectRegion": "Bölge Seç",
+ "selectRegionTooltip": "İstemci işlemlerini gerçekleştirmek için kullanılan hesap uç noktasını değiştirir.",
+ "globalDefault": "Genel (Varsayılan)",
+ "readWrite": "(Okuma/Yazma)",
+ "read": "(Okuma)",
+ "queryTimeout": "Sorgu Zaman Aşımı",
+ "queryTimeoutDescription": "Bir sorgu belirtilen süre sınırına ulaştığında, otomatik iptal etkinleştirilmediği sürece sorguyu iptal etme seçeneği içeren bir açılır pencere gösterilir.",
+ "enableQueryTimeout": "Sorgu zaman aşımını etkinleştir",
+ "queryTimeoutMs": "Sorgu zaman aşımı (ms)",
+ "automaticallyCancelQuery": "Zaman aşımından sonra sorguyu otomatik olarak iptal et",
+ "ruLimit": "RU Sınırı",
+ "ruLimitDescription": "Bir sorgu yapılandırılan RU sınırını aşarsa, sorgu durdurulur.",
+ "enableRuLimit": "RU sınırını etkinleştir",
+ "ruLimitLabel": "RU Sınırı (RU)",
+ "defaultQueryResults": "Varsayılan Sorgu Sonuçları Görünümü",
+ "defaultQueryResultsDescription": "Sorgu sonuçlarını görüntülerken kullanılacak varsayılan görünümü seçin.",
+ "retrySettings": "Yeniden Deneme Ayarları",
+ "retrySettingsDescription": "CosmosDB sorguları sırasında kısıtlanan isteklerle ilişkili yeniden deneme ilkesi.",
+ "maxRetryAttempts": "Maksimum yeniden deneme sayısı",
+ "maxRetryAttemptsTooltip": "Bir istek için gerçekleştirilecek maksimum yeniden deneme sayısı. Varsayılan değer 9’dur.",
+ "fixedRetryInterval": "Sabit yeniden deneme aralığı (ms)",
+ "fixedRetryIntervalTooltip": "Yanıtın bir parçası olarak döndürülen retryAfter yoksayılarak her yeniden deneme arasında beklenen milisaniye cinsinden sabit yeniden deneme aralığı. Varsayılan değer 0 milisaniyedir.",
+ "maxWaitTime": "Maksimum bekleme süresi (sn)",
+ "maxWaitTimeTooltip": "Yeniden denemeler gerçekleştirilirken bir isteğin bekleyebileceği saniye cinsinden maksimum süre. Varsayılan değer 30 saniyedir.",
+ "enableContainerPagination": "Kapsayıcı sayfalandırmayı etkinleştir",
+ "enableContainerPaginationDescription": "Aynı anda 50 kapsayıcı yükleyin. Şu anda kapsayıcılar alfasayısal sırayla çekilmiyor.",
+ "enableCrossPartitionQuery": "Bölümler arası sorguyu etkinleştir",
+ "enableCrossPartitionQueryDescription": "Sorgu yürütülürken birden fazla istek gönderin. Sorgu tek bir bölüm anahtarı değeri kapsamına alınmadıysa, birden fazla istek gerekir.",
+ "maxDegreeOfParallelism": "Maksimum paralellik derecesi",
+ "maxDegreeOfParallelismDescription": "Paralel sorgu yürütme sırasında istemci tarafında çalıştırılan eşzamanlı işlem sayısını alır veya ayarlar. Pozitif özellik değeri, eşzamanlı işlem sayısını ayarlanan değerle sınırlandırır. 0’dan küçük bir değere ayarlanırsa, sistem çalıştırılacak eşzamanlı işlem sayısını otomatik olarak belirler.",
+ "maxDegreeOfParallelismQuery": "Maksimum paralellik derecesine kadar sorgu.",
+ "priorityLevel": "Öncelik Düzeyi",
+ "priorityLevelDescription": "Öncelik Tabanlı Yürütme kullanılırken Veri Gezgini’nden gelen veri düzlemi istekleri için öncelik düzeyini ayarlar. “Yok” seçilirse, Veri Gezgini öncelik düzeyini belirtmez ve sunucu tarafı varsayılan öncelik düzeyi kullanılır.",
+ "displayGremlinQueryResults": "Gremlin sorgu sonuçlarını farklı görüntüle:",
+ "displayGremlinQueryResultsDescription": "Sorgu sonuçlarını otomatik olarak Grafik biçiminde görselleştirmek için Grafik ve sonuçları JSON olarak görüntülemek için JSON seçeneğini belirleyin.",
+ "graph": "Grafik",
+ "json": "JSON",
+ "graphAutoVisualization": "Grafik Otomatik görselleştirme",
+ "enableSampleDatabase": "Örnek veritabanını etkinleştir",
+ "enableSampleDatabaseDescription": "Bu, NoSQL sorgularını kullanarak keşfetmek için kullanabileceğiniz yapay ürün verileri içeren örnek bir veritabanı ve koleksiyondur. Bu, Veri Gezgini kullanıcı arabiriminde başka bir veritabanı olarak görünür ve Microsoft tarafından ücretsiz olarak oluşturulur ve yönetilir.",
+ "enableSampleDbAriaLabel": "Sorgu keşfi için örnek veritabanını etkinleştir",
+ "guidRepresentation": "GUID Gösterimi",
+ "guidRepresentationDescription": "MongoDB’de GuidRepresentation, Genel Benzersiz Tanımlayıcıların (GUID) BSON belgelerinde depolandığında nasıl seri hale getirildiğini ve seri durumdan çıkarıldığını ifade eder. Bu ayar tüm belge işlemlerine uygulanır.",
+ "advancedSettings": "Gelişmiş Ayarlar",
+ "ignorePartitionKey": "Belge güncelleştirme sırasında bölüm anahtarını yoksay",
+ "ignorePartitionKeyTooltip": "İşaretlenirse, güncelleştirme işlemleri sırasında belgeyi bulmak için bölüm anahtarı değeri kullanılmaz. Bunu yalnızca belge güncelleştirmeleri anormal bir bölüm anahtarı nedeniyle başarısız oluyorsa kullanın.",
+ "clearHistory": "Geçmişi Temizle",
+ "clearHistoryConfirm": "Devam etmek istediğinizden emin misiniz?",
+ "clearHistoryDescription": "Bu işlem, bu tarayıcıda bu hesapla ilgili aşağıdakiler dahil tüm özelleştirmeleri temizler:",
+ "clearHistoryTabLayout": "Bölücü konumları dahil olmak üzere özelleştirilmiş sekme düzeninizi sıfırlayın.",
+ "clearHistoryTableColumns": "Özel sütunlar dahil olmak üzere tablo sütunu tercihlerinizi silin",
+ "clearHistoryFilters": "Filtre geçmişinizi temizleyin",
+ "clearHistoryRegion": "Bölge seçimini genel olarak sıfırla",
+ "increaseValueBy1000": "Değeri 1000 artır",
+ "decreaseValueBy1000": "Değeri 1000 azalt",
+ "none": "Yok",
+ "low": "Düşük",
+ "high": "Yüksek",
+ "automatic": "Otomatik",
+ "enhancedQueryControl": "Gelişmiş sorgu denetimi",
+ "enableQueryControl": "Sorgu denetimini etkinleştir",
+ "explorerVersion": "Gezgin Sürümü",
+ "accountId": "Hesap Kimliği",
+ "sessionId": "Oturum Kimliği",
+ "popupsDisabledError": "Tarayıcıda açılır pencereler devre dışı bırakıldığından bu hesap için yetkilendirme sağlanamadı.\nBu site için açılır pencereleri etkinleştirin ve “Entra ID için Oturum Aç” düğmesine tıklayın.",
+ "failedToAcquireTokenError": "Yetkilendirme belirteci otomatik olarak alınamadı. Entra ID RBAC işlemlerini etkinleştirmek için “Entra ID için Oturum Aç” düğmesine tıklayın."
+ },
+ "saveQuery": {
+ "panelTitle": "Sorguyu Kaydet",
+ "setupCostMessage": "Uyumluluk nedeniyle, sorgular Azure Cosmos hesabınızdaki bir kapsayıcıya, \"{{databaseName}}\" adlı ayrı bir veritabanına kaydedilir. Devam etmek için hesabınızda bir kapsayıcı oluşturmamız gerekiyor; tahmini ek maliyet günde 0,77 USD’dir.",
+ "completeSetup": "Kurulumu tamamla",
+ "noQueryNameError": "Sorgu adı belirtilmedi",
+ "invalidQueryContentError": "Geçersiz sorgu içeriği belirtildi",
+ "failedToSaveQueryError": "{{queryName}} sorgusu kaydedilemedi",
+ "failedToSetupContainerError": "Kaydedilmiş sorgular için kapsayıcı ayarlanamadı",
+ "accountNotSetupError": "Sorgu kaydedilemedi: hesap sorguları kaydetmek üzere ayarlanmadı.",
+ "name": "Ad"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "Dosya belirtilmedi",
+ "failedToLoadQueryError": "Sorgu yüklenemedi",
+ "failedToLoadQueryFromFileError": "{{fileName}} dosyasından sorgu yüklenemedi",
+ "selectFilesToOpen": "Sorgu belgesi seçin",
+ "browseFiles": "Göz At"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "Giriş parametrelerini girin (varsa)",
+ "key": "Anahtar",
+ "param": "Parametre",
+ "partitionKeyValue": "Bölüm anahtarı değeri",
+ "value": "Değer",
+ "addNewParam": "Yeni Parametre Ekle",
+ "addParam": "Parametre ekle",
+ "deleteParam": "Parametreyi sil",
+ "invalidParamError": "Geçersiz parametre belirtildi: {{invalidParam}}",
+ "invalidParamConsoleError": "Geçersiz parametre belirtildi: {{invalidParam}} geçerli bir değişmez değer değil",
+ "stringType": "Dize",
+ "customType": "Özel"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "Dosya belirtilmedi. Lütfen en az bir dosya girin.",
+ "selectJsonFiles": "JSON Dosyalarını Seç",
+ "selectJsonFilesTooltip": "Karşıya yüklemek için bir veya daha fazla JSON dosyası seçin. Her dosya tek bir JSON belgesi veya bir JSON belgeleri dizisi içerebilir. Tek bir karşıya yükleme işleminde tüm dosyaların birleşik boyutu 2 MB’tan küçük olmalıdır. Daha büyük veri kümeleri için birden fazla karşıya yükleme işlemi gerçekleştirebilirsiniz.",
+ "fileNameColumn": "DOSYA ADI",
+ "statusColumn": "DURUM",
+ "uploadStatus": "{{numSucceeded}} oluşturuldu, {{numThrottled}} kısıtlandı, {{numFailed}} hata",
+ "uploadedFiles": "Karşıya yüklenen dosyalar"
+ },
+ "copyNotebook": {
+ "copyFailedError": "{{name}} öğesi {{destination}} hedefine kopyalanamadı",
+ "uploadFailedError": "{{name}} karşıya yüklenemedi",
+ "location": "Konum",
+ "locationAriaLabel": "Konum",
+ "selectLocation": "Kopyalamak için bir defter konumu seçin",
+ "name": "Ad"
+ },
+ "publishNotebook": {
+ "publishFailedError": "{{notebookName}} galeride yayımlanamadı",
+ "publishDescription": "Yayımlandığında, bu not defteri Azure Cosmos DB not defterleri genel galerisinde görünür. Yayımlamadan önce hassas verileri veya çıktıları kaldırdığınızdan emin olun.",
+ "publishPrompt": "“{{name}}” öğesini galeride yayımlamak ve paylaşmak istiyor musunuz?",
+ "coverImage": "Kapak resmi",
+ "coverImageUrl": "Kapak resmi URL’si",
+ "name": "Ad",
+ "description": "Açıklama",
+ "tags": "Etiketler",
+ "tagsPlaceholder": "İsteğe bağlı etiket 1, İsteğe bağlı etiket 2",
+ "preview": "Önizleme",
+ "urlType": "URL",
+ "customImage": "Özel Görüntü",
+ "takeScreenshot": "Ekran Görüntüsü Al",
+ "useFirstDisplayOutput": "İlk Görüntü Çıkışını Kullan",
+ "failedToCaptureOutput": "İlk çıkış yakalanamadı",
+ "outputDoesNotExist": "Hiçbir hücre için çıkış yok.",
+ "failedToConvertError": "{{fileName}} base64 biçimine dönüştürülemedi",
+ "failedToUploadError": "{{fileName}} karşıya yüklenemedi"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "Veri aktarım işi başlatılamadı",
+ "suboptimalPartitionKeyError": "Uyarı: Sistem, koleksiyonunuzun optimal olmayan bir bölüm anahtarı kullanıyor olabileceğini algıladı",
+ "description": "Bir kapsayıcının bölüm anahtarını değiştirirken, doğru bölüm anahtarına sahip bir hedef kapsayıcı oluşturmanız gerekir. Ayrıca mevcut bir hedef kapsayıcıyı seçebilirsiniz.",
+ "sourceContainerId": "Kaynak {{collectionName}} kimliği",
+ "destinationContainerId": "Hedef {{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",
+ "collectionIdAriaLabel": "{{collectionName}} kimliği, Örnek {{collectionName}}1",
+ "existingContainers": "Mevcut Kapsayıcılar",
+ "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.",
+ "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."
+ },
+ "tables": {
+ "addProperty": "Özellik Ekle",
+ "addRow": "Satır Ekle",
+ "addEntity": "Varlık Ekle",
+ "back": "geri",
+ "nullFieldsWarning": "Uyarı: Null alanlar düzenleme için görüntülenmez.",
+ "propertyEmptyError": "{{property}} boş olamaz. {{property}} için geçerli bir değer girin",
+ "whitespaceError": "{{property}} boşluk içeremez. Lütfen boşluk olmadan {{property}} için bir değer girin.",
+ "propertyTypeEmptyError": "Özellik türü boş olamaz. {{property}} özelliği için açılan listeden bir tür seçin."
+ },
+ "tableQuerySelect": {
+ "selectColumns": "Sorgulamak istediğiniz sütunları seçin.",
+ "availableColumns": "Kullanılabilir Sütunlar"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "Kapsayıcınızdaki öğelerin görünümünde görüntülenecek sütunları seçin.",
+ "searchFields": "Alan arayın",
+ "reset": "Sıfırla",
+ "partitionKeySuffix": " (bölüm anahtarı)"
+ },
+ "newVertex": {
+ "addProperty": "Özellik Ekle"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "Genel ikincil dizin kapsayıcı kimliği",
+ "globalSecondaryIndexIdPlaceholder": "ör. indexbyEmailId",
+ "projectionQuery": "Projeksiyon sorgusu",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "Genel ikincil dizinleri tanımlama hakkında daha fazla bilgi edinin.",
+ "disabledTitle": "Genel ikincil dizin zaten oluşturuluyor. Yeni bir dizin oluşturmadan önce lütfen mevcut dizinin tamamlanmasını bekleyin."
+ },
+ "stringInput": {
+ "inputMismatchError": "{{input}} girişi seçilen {{selectedId}} ile eşleşmiyor"
+ },
+ "panelInfo": {
+ "information": "Bilgi",
+ "moreDetails": "Diğer ayrıntılar"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "Ölçeklendir",
+ "conflictResolution": "Çakışma Çözümleme",
+ "settings": "Ayarlar",
+ "indexingPolicy": "Dizin Oluşturma İlkesi",
+ "partitionKeys": "Bölüm Anahtarları",
+ "partitionKeysPreview": "Bölüm Anahtarları (önizleme)",
+ "computedProperties": "Hesaplanan Özellikler",
+ "containerPolicies": "Kapsayıcı İlkeleri",
+ "throughputBuckets": "Aktarım Hızı Demetleri",
+ "globalSecondaryIndexPreview": "Genel İkincil Dizini (Önizleme)",
+ "maskingPolicyPreview": "Maskeleme İlkesi (önizleme)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "Lütfen her dizin için bir tür seçeneğini belirtin.",
+ "enterFieldNameError": "Lütfen bir alan adı girin.",
+ "wildcardPathError": "Alan adında joker karakter yolu yok. Şu şekilde bir desen kullanın: "
+ },
+ "partitionKey": {
+ "shardKey": "Parça anahtarı",
+ "partitionKey": "Bölüm anahtarı",
+ "shardKeyTooltip": "Parça anahtarı (alan), sınırsız ölçeklenebilirlik sağlamak amacıyla verilerinizi birçok çoğaltma kümesi (parça) arasında bölmek için kullanılır. Verilerinizi eşit olarak dağıtacak bir alan seçmeniz kritik önem taşır.",
+ "partitionKeyTooltip": "Bölümler arasında ölçeklenebilirlik için verileri otomatik olarak dağıtmak amacıyla kullanılır. JSON belgenizde çeşitli değerlerin yer aldığı ve istek hacmini eşit olarak dağıtan bir özellik seçin.",
+ "sqlPartitionKeyTooltipSuffix": " Her boyuttaki küçük okuma yoğun iş yükleri veya yazma yoğun iş yükleri için, kimlik genellikle iyi bir seçenektir.",
+ "partitionKeySubtext": "Küçük iş yükleri için öğe kimliği bölüm anahtarı olarak uygundur.",
+ "mongoPlaceholder": "ör. categoryId",
+ "gremlinPlaceholder": "ör. /address",
+ "sqlFirstPartitionKey": "Gerekli - ilk bölüm anahtarı ör. /TenantId",
+ "sqlSecondPartitionKey": "ikinci bölüm anahtarı, örneğin, /UserId",
+ "sqlThirdPartitionKey": "üçüncü bölüm anahtarı, ör. /SessionId",
+ "defaultPlaceholder": "ör. /address/zipCode"
+ },
+ "costEstimate": {
+ "title": "Maliyet tahmini*",
+ "howWeCalculate": "Bunu nasıl hesaplıyoruz",
+ "updatedCostPerMonth": "Güncelleştirilmiş aylık maliyet",
+ "currentCostPerMonth": "Mevcut aylık maliyet",
+ "perRu": "/RU",
+ "perHour": "/sa",
+ "perDay": "/gün",
+ "perMonth": "/ay"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "Başlangıç otomatik ölçeklendirme maksimum RU/sn değeri, mevcut el ile aktarım hızı ayarları ve kaynağınızın depolama durumuna göre sistem tarafından belirlenir. Otomatik ölçeklendirme etkinleştirildikten sonra maksimum RU/sn değerini değiştirebilirsiniz.",
+ "ttlWarningText": "Sistem, istemci uygulaması tarafından açıkça silme işlemi yapılmasına gerek kalmadan, girdiğiniz TTL değerine (saniye cinsinden) göre öğeleri otomatik olarak siler. Daha fazla bilgi için şu sayfaya bakın,",
+ "ttlWarningLinkText": "Azure Cosmos DB'de Yaşam Süresi (TTL)",
+ "unsavedIndexingPolicy": "Dizin oluşturma ilkesi",
+ "unsavedDataMaskingPolicy": "veri maskeleme ilkesi",
+ "unsavedComputedProperties": "hesaplanan özellikler",
+ "unsavedEditorWarningPrefix": "Son yaptığınız değişiklikleri kaydetmediniz",
+ "unsavedEditorWarningSuffix": ". Değişiklikleri onaylamak için lütfen Kaydet'e tıklayın.",
+ "updateDelayedApplyWarning": "Önceden ayrılmış kapasitenin üzerinde aktarım hızı artışı talep etmek üzeresiniz. Bu işlemin tamamlanması biraz zaman alır.",
+ "scalingUpDelayMessage": "Fiziksel bölüm sayınıza bağlı olarak Azure Cosmos DB'nin anında destekleyebileceğinin üzerinde olduğu için ölçeklendirme 4-6 saat sürecektir. Aktarım hızınızı {{instantMaximumThroughput}} değerine anında artırabilir veya bu değeri kullanmaya devam edip ölçeklendirme tamamlanana kadar bekleyebilirsiniz.",
+ "exceedPreAllocatedMessage": "Aktarım hızını artırma talebiniz önceden ayrılmış kapasiteyi aşıyor ve bu işlem beklenenden daha uzun sürebilir. Devam etmek için üç seçeneğiniz var:",
+ "instantScaleOption": "Anında {{instantMaximumThroughput}} RU/sn'ye kadar ölçeklendirebilirsiniz.",
+ "asyncScaleOption": "4-6 saat içinde {{maximumThroughput}} RU/sn altındaki herhangi bir değere zaman uyumsuz olarak ölçeklendirebilirsiniz.",
+ "quotaMaxOption": "Geçerli kota üst sınırınız {{maximumThroughput}} RU/sn. Bu sınırı aşmak için kota artışı talebinde bulunmalısınız ve Azure Cosmos DB ekibi bunu inceleyecektir.",
+ "belowMinimumMessage": "Aktarım hızını mevcut minimumunuz olan {{minimum}} RU/sn'nin altına düşüremezsiniz. Bu sınır hakkında daha fazla bilgi için lütfen hizmet teklifi belgelerimize bakın.",
+ "saveThroughputWarning": "Aktarım hızı ayarlarınızı güncelleştirdiğinzde faturanız etkilenir. Değişiklikleri kaydetmeden önce lütfen aşağıdaki güncelleştirilmiş maliyet tahminini gözden geçirin",
+ "currentAutoscaleThroughput": "Geçerli otomatik ölçeklendirme aktarım hızı:",
+ "targetAutoscaleThroughput": "Hedef otomatik ölçeklendirme aktarım hızı:",
+ "currentManualThroughput": "Geçerli el ile aktarım hızı:",
+ "targetManualThroughput": "Hedef el ile aktarım hızı:",
+ "applyDelayedMessage": "Aktarım hızını artırma talebi başarıyla gönderildi. Bu işlem 1-3 iş günü sürebilir. En son durumu Bildirimler'den görüntüleyin.",
+ "databaseLabel": "Veritabanı:",
+ "containerLabel": "Kapsayıcı:",
+ "applyShortDelayMessage": "Aktarım hızını artırma talebi şu anda devam ediyor. Bu işlemin tamamlanması biraz zaman alır.",
+ "applyLongDelayMessage": "Aktarım hızını artırma talebi şu anda devam ediyor. Bu işlem 1-3 iş günü sürebilir. En son durumu Bildirimler'den görüntüleyin.",
+ "throughputCapError": "Hesabınız şu anda toplam aktarım hızı sınırı {{throughputCap}} RU/sn olarak yapılandırılmış durumdadır. Bu güncelleştirme, toplam aktarım hızını {{newTotalThroughput}} RU/sn'ye artıracağından mümkün değildir. Maliyet yönetimindeki toplam aktarım hızı sınırını değiştirin.",
+ "throughputIncrementError": "Aktarım hızı değeri 1000'in katları halinde olmalıdır"
+ },
+ "conflictResolution": {
+ "lwwDefault": "Son Yazma Kazanır (varsayılan)",
+ "customMergeProcedure": "Birleştirme Yordamı (özel)",
+ "mode": "Mod",
+ "conflictResolverProperty": "Çakışma Çözümleyici Özelliği",
+ "storedProcedure": "Saklı yordam",
+ "lwwTooltip": "Belgelerinizde Son Yazma Kazanır (LWW) tabanlı çakışma çözümleme yöntemi için kullanılan tamsayı özelliğinin adını alır veya ayarlar. Varsayılan olarak sistem, çakışan belge sürümlerinin kazananını belirlemek için sistem tarafından tanımlanmış zaman damgası özelliği _ts'yi kullanır. Varsayılan zaman damgası tabanlı çakışma çözümlemesini geçersiz kılmak isterseniz kendi tamsayı özelliğinizi belirtin.",
+ "customTooltip": "Çakışmaları çözmek için saklı yordamın (birleştirme yordamı olarak da bilinir) adını alır veya ayarlar. Çakışan belge sürümlerinin kazananını belirlemek için uygulama tanımlı mantık yazabilirsiniz. Saklı yordam, sunucu tarafında tam olarak bir kez işlem olarak yürütülür. Saklı yordam sağlamazsanız, çakışmalar içinde doldurulur",
+ "customTooltipConflictsFeed": " çakışma akışı",
+ "customTooltipSuffix": ". Saklı yordamı istediğiniz zaman güncelleştirebilir veya yeniden kaydedebilirsiniz."
+ },
+ "changeFeed": {
+ "label": "Akış günlüğü saklama ilkesini değiştirin",
+ "tooltip": "Kapsayıcıdaki öğeler için varsayılan olarak son 10 dakikalık geçmişi korumak üzere değişiklik akışı günlüğü saklama ilkesini etkinleştirin. Bunu desteklemek için, bu kapsayıcıdaki yazma işlemleri için istek birimi (RU) ücreti iki katına çıkarılacaktır. Okuma işlemleri etkilenmez."
+ },
+ "mongoIndexing": {
+ "disclaimer": "Birden çok özelliğe filtre uygulayan sorgular için bileşik dizin yerine birden çok tek alan dizini oluşturun.",
+ "disclaimerCompoundIndexesLink": " Bileşik dizinler ",
+ "disclaimerSuffix": "Yalnızca sorgu sonuçlarını sıralamak için kullanılır. Bileşik dizin eklemeniz gerekirse, Mongo Kabuk kullanarak oluşturabilirsiniz.",
+ "compoundNotSupported": "Dizin oluşturma düzenleyicisinde bileşik dizinlere sahip koleksiyonlar henüz desteklenmiyor. Bu koleksiyonun dizin oluşturma ilkesini değiştirmek için Mongo Kabuk kullanın.",
+ "aadError": "Dizin oluşturma ilkesi düzenleyicisini kullanmak için lütfen giriş yapın",
+ "aadErrorLink": "azure portal.",
+ "refreshingProgress": "Dizin dönüştürme ilerlemesi yenileniyor",
+ "canMakeMoreChangesZero": "Geçerli dizin dönüştürmesi tamamlandıktan sonra daha fazla dizin değişikliği yapabilirsiniz. ",
+ "refreshToCheck": "Tamamlanıp tamamlanmadığını kontrol etmek için yenileyin.",
+ "canMakeMoreChangesProgress": "Geçerli dizin dönüştürmesi tamamlandıktan sonra daha fazla dizin değişikliği yapabilirsiniz. %{{progress}} tamamlandı. ",
+ "refreshToCheckProgress": "İlerlemenin durumunu kontrol etmek için yenileyin.",
+ "definitionColumn": "Tanım",
+ "typeColumn": "Tür",
+ "dropIndexColumn": "Dizini Kaldır",
+ "addIndexBackColumn": "Dizini geri ekle",
+ "deleteIndexButton": "Dizini Sil düğmesi",
+ "addBackIndexButton": "Dizini geri ekle Düğmesi",
+ "currentIndexes": "Geçerli dizinler",
+ "indexesToBeDropped": "Bırakılacak dizinler",
+ "indexFieldName": "Dizin Alanı Adı",
+ "indexType": "Dizin Türü",
+ "selectIndexType": "Dizin türü seçeneğini belirtin",
+ "undoButton": "Geri Al Düğmesi"
+ },
+ "subSettings": {
+ "timeToLive": "Yaşam Süresi",
+ "ttlOff": "Kapalı",
+ "ttlOnNoDefault": "Açık (varsayılan yok)",
+ "ttlOn": "Açık",
+ "seconds": "saniye",
+ "timeToLiveInSeconds": "Yaşam süresi (saniye)",
+ "analyticalStorageTtl": "Analitik Depolama Süresi (TTL)",
+ "geospatialConfiguration": "Coğrafi Konum Yapılandırması",
+ "geography": "Coğrafya",
+ "geometry": "Geometri",
+ "uniqueKeys": "Benzersiz anahtarlar",
+ "mongoTtlMessage": "Koleksiyonunuz/belgeleriniz için zaman aşımı (TTL) etkinleştirmek için,",
+ "mongoTtlLinkText": "TTL dizini oluşturun",
+ "partitionKeyTooltipTemplate": "Bu {{partitionKeyName}}, ölçeklenebilirlik için verileri birden çok bölüme dağıtmak için kullanılır. \"{{partitionKeyValue}}\" değeri belgelerin nasıl bölümlendiğini belirler.",
+ "largePartitionKeyEnabled": "Büyük {{partitionKeyName}} etkinleştirildi.",
+ "hierarchicalPartitioned": "Hiyerarşik olarak bölümlenmiş kapsayıcı.",
+ "nonHierarchicalPartitioned": "Hiyerarşik olarak bölümlenmemiş kapsayıcı."
+ },
+ "scale": {
+ "freeTierInfo": "Ücretsiz katman ile bu hesapta ilk {{ru}} RU/sn ve {{storage}} GB depolama alanını ücretsiz alırsınız. Hesabınızı ücretsiz tutmak için hesapta bulunan tüm kaynaklardaki toplam RU/sn değerini {{ru}} RU/sn olarak tutun.",
+ "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",
+ "throughputRangeLabel": "Aktarım hızı ({{min}} - {{max}} RU/s)",
+ "unlimited": "sınırsız"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "{{partitionKeyName}} Değiştir",
+ "currentPartitionKey": "Geçerli {{partitionKeyName}}",
+ "partitioning": "Bölümleme",
+ "hierarchical": "Hiyerarşik",
+ "nonHierarchical": "Hiyerarşik olmayan",
+ "safeguardWarning": "Yeni kapsayıcıya kopyalanan verilerin bütünlüğünü korumak için, bölüm anahtarı değiştirme işlemi boyunca kaynak kapsayıcıda hiçbir güncelleştirme yapılmadığından emin olun.",
+ "changeDescription": "Bölüm anahtarını değiştirmek için yeni bir hedef kapsayıcı oluşturulmalı veya mevcut bir hedef kapsayıcı seçilmelidir. Ardından veriler hedef kapsayıcıya kopyalanacaktır.",
+ "changeButton": "Değiştir",
+ "changeJob": "{{partitionKeyName}} değişiklik işi",
+ "cancelButton": "İptal",
+ "documentsProcessed": "({{processedCount}} / {{totalCount}} belge işlendi)"
+ },
+ "computedProperties": {
+ "ariaLabel": "Hesaplanan özellikler",
+ "learnMorePrefix": "Hesaplanan özelliklerin nasıl tanımlanacağı ve nasıl kullanılacağı hakkında."
+ },
+ "indexingPolicy": {
+ "ariaLabel": "Dizin Oluşturma İlkesi"
+ },
+ "dataMasking": {
+ "ariaLabel": "Veri Maskeleme İlkesi",
+ "validationFailed": "Doğrulanamadı:",
+ "includedPathsRequired": "includedPaths gereklidir",
+ "includedPathsMustBeArray": "includedPaths dizi olmalıdır",
+ "excludedPathsMustBeArray": "excludedPaths sağlanmışsa dizi olmalıdır"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "Vektör İlkesi",
+ "fullTextPolicy": "Tam Metin İlkesi",
+ "createFullTextPolicy": "Yeni tam metin arama ilkesi oluşturun"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "Bu kapsayıcı için aşağıdaki dizinler tanımlanmıştır.",
+ "learnMoreSuffix": "Genel ikincil dizinlerin nasıl tanımlanacağı ve nasıl kullanılacağı hakkında.",
+ "jsonAriaLabel": "Genel İkincil Dizin JSON'u",
+ "addIndex": "Dizin ekle",
+ "settingsTitle": "Genel İkincil Dizin Ayarları",
+ "sourceContainer": "Kaynak kapsayıcı",
+ "indexDefinition": "Genel ikincil dizin tanımı"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "Dizin dönüştürme ilerlemesi yenilenemedi"
+ },
+ "throughputInput": {
+ "autoscale": "Otomatik ölçeklendirme",
+ "manual": "El ile",
+ "minimumRuS": "En Düşük RU/sn",
+ "maximumRuS": "En yüksek RU/sn",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "Depolama kapasitesi",
+ "fixed": "Düzeltildi",
+ "unlimited": "Sınırsız",
+ "instant": "Anında",
+ "fourToSixHrs": "4-6 saat",
+ "autoscaleDescription": "Kullanıma bağlı olarak {{resourceType}} aktarım hızınız şu aralıkta değişecektir",
+ "freeTierWarning": "El ile aktarım hızını {{ru}} RU/sn'den fazla sağlarsanız veya kaynak otomatik ölçeklendirme ile {{ru}} RU/sn'nin üzerine çıkarsa faturalandırma uygulanır.",
+ "capacityCalculator": "Gerekli RU/sn miktarınızı şu şekilde tahmin edin",
+ "capacityCalculatorLink": " kapasite hesaplayıcısı",
+ "fixedStorageNote": "Sabit depolama kapasitesine sahip bir koleksiyon kullanırken, 10.000 RU/sn'ye kadar ayarlayabilirsiniz.",
+ "min": "dk",
+ "max": "maks"
+ },
+ "throughputBuckets": {
+ "label": "Aktarım Hızı Demetleri",
+ "bucketLabel": "Demet {{id}}",
+ "dataExplorerQueryBucket": " (Veri Gezgini Sorgu Kümesi)",
+ "active": "Etkin",
+ "inactive": "Etkin değil"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/zh-Hans/Resources.json b/src/Localization/zh-Hans/Resources.json
new file mode 100644
index 000000000..9597b71d4
--- /dev/null
+++ b/src/Localization/zh-Hans/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "确定",
+ "cancel": "取消",
+ "close": "关闭",
+ "save": "保存",
+ "delete": "删除",
+ "update": "更新",
+ "discard": "放弃",
+ "execute": "执行",
+ "loading": "正在加载",
+ "loadingEllipsis": "正在加载...",
+ "next": "下一步",
+ "previous": "上一步",
+ "yes": "是",
+ "no": "否",
+ "result": "结果",
+ "learnMore": "了解详细信息",
+ "getStarted": "开始使用",
+ "retry": "重试",
+ "apply": "应用",
+ "refresh": "刷新",
+ "copy": "复制",
+ "create": "创建",
+ "confirm": "确认",
+ "open": "打开",
+ "rename": "重命名",
+ "download": "下载",
+ "upload": "上传",
+ "connect": "连接",
+ "remove": "删除",
+ "load": "加载",
+ "publish": "发布",
+ "browse": "浏览",
+ "increaseValueBy1": "将值增加 1",
+ "decreaseValueBy1": "将值减少 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "欢迎使用 Azure Cosmos DB",
+ "postgres": "欢迎使用 Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "欢迎使用 Azure DocumentDB (具有 MongoDB 兼容性)"
+ },
+ "subtitle": {
+ "default": "任何规模的全球分布式多模型数据库服务",
+ "getStarted": "开始使用我们的示例数据集、文档和其他工具。"
+ },
+ "quickStart": {
+ "title": "启动快速入门",
+ "description": "启动快速入门教程,开始使用示例数据"
+ },
+ "newCollection": {
+ "title": "新建 {{collectionName}}",
+ "description": "创建用于存储和吞吐量的新容器"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB 示例库",
+ "description": "发现展示可扩展智能应用模式的示例。立即试用,体验如何通过 Cosmos DB 快速从概念转变到代码"
+ },
+ "connectCard": {
+ "title": "连接",
+ "description": "更喜欢使用自己选择的工具?查找需要连接的连接字符串",
+ "pgAdmin": {
+ "title": "使用 pgAdmin 连接",
+ "description": "首选 pgAdmin?在此处查找连接字符串"
+ },
+ "vsCode": {
+ "title": "与 VS Code 连接",
+ "description": "在 Visual Studio Code 中查询和管理 MongoDB 和 DocumentDB 群集"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL Shell",
+ "description": "使用 PostgreSQL shell 接口创建表并与数据交互"
+ },
+ "vcoreMongo": {
+ "title": "Mongo Shell",
+ "description": "使用 MongoDB shell 接口创建集合并与数据交互"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "不熟悉 Cosmos DB PGSQL?",
+ "body": "欢迎!如果你不熟悉 Cosmos DB PGSQL,需要入门帮助,可在此处找到示例数据和查询。"
+ },
+ "resetPassword": {
+ "headline": "创建密码",
+ "body": "如果尚未更改密码,请立即更改。"
+ },
+ "coachMark": {
+ "headline": "从示例 {{collectionName}} 开始",
+ "body": "系统将引导你创建包含示例数据的示例容器,然后带你了解数据资源管理器。你也可以取消此教程,改为自行探索"
+ }
+ },
+ "sections": {
+ "recents": "最近使用",
+ "clearRecents": "清除最近使用记录",
+ "top3": "你需要了解的三大要点",
+ "learningResources": "学习资源",
+ "nextSteps": "后续步骤",
+ "tipsAndLearnMore": "提示和详细信息",
+ "notebook": "笔记本",
+ "needHelp": "需要帮助?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "高级建模模式",
+ "description": "了解用于优化数据库的高级策略。"
+ },
+ "partitioning": {
+ "title": "分区最佳做法",
+ "description": "了解如何应用数据模型和分区策略。"
+ },
+ "resourcePlanning": {
+ "title": "规划资源需求",
+ "description": "了解不同的配置选择。"
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "什么是 MongoDB API?",
+ "description": "了解 Azure Cosmos DB for MongoDB 及其功能。"
+ },
+ "features": {
+ "title": "功能和语法",
+ "description": "了解优势和功能"
+ },
+ "migrate": {
+ "title": "迁移数据",
+ "description": "用于移动数据的迁移前步骤"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "构建 Java 应用",
+ "description": "使用 SDK 创建 Java 应用。"
+ },
+ "partitioning": {
+ "title": "分区最佳做法",
+ "description": "了解分区的工作原理。"
+ },
+ "requestUnits": {
+ "title": "请求单位(RU)",
+ "description": "了解 RU 费用。"
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "数据建模",
+ "description": "图形数据建模建议"
+ },
+ "partitioning": {
+ "title": "分区最佳做法",
+ "description": "了解分区的工作原理"
+ },
+ "queryData": {
+ "title": "查询数据",
+ "description": "使用 Gremlin 查询数据"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "什么是 Table API?",
+ "description": "了解 Azure Cosmos DB for Table 及其功能"
+ },
+ "migrate": {
+ "title": "迁移数据",
+ "description": "了解如何迁移数据"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table 常见问题解答",
+ "description": "有关 Azure Cosmos DB for Table 的常见问题"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "数据资源管理器键盘快捷方式",
+ "description": "了解浏览数据资源管理器的键盘快捷方式。"
+ },
+ "liveTv": {
+ "title": "了解基础知识",
+ "description": "观看 Azure Cosmos DB 直播节目介绍及操作方法视频。"
+ },
+ "sql": {
+ "sdk": {
+ "title": "开始使用 SDK",
+ "description": "了解 Azure Cosmos DB SDK。"
+ },
+ "migrate": {
+ "title": "迁移数据",
+ "description": "使用 Azure 服务和开源解决方案迁移数据。"
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "使用 Node.js 构建应用",
+ "description": "创建 Node.js 应用。"
+ },
+ "gettingStarted": {
+ "title": "入门指南",
+ "description": "了解入门的基础知识。"
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "创建容器",
+ "description": "了解创建容器的选项。"
+ },
+ "throughput": {
+ "title": "预配吞吐量",
+ "description": "了解如何配置吞吐量。"
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "开始 ",
+ "description": "使用 Gremlin 控制台执行创建、查询和遍历"
+ },
+ "importData": {
+ "title": "导入图形数据",
+ "description": "了解如何使用 BulkExecutor 批量引入数据"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "构建 .NET 应用",
+ "description": "如何从 .NET 应用访问 Azure Cosmos DB for Table。"
+ },
+ "java": {
+ "title": "构建 Java 应用",
+ "description": "使用 Java SDK 创建 Azure Cosmos DB for Table 应用 "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "数据建模",
+ "distributionColumn": "如何选择分布列",
+ "buildApps": "使用 Python/Java/Django 构建应用"
+ },
+ "vcoreMongo": {
+ "migrateData": "迁移数据",
+ "vectorSearch": "使用矢量搜索功能构建 AI 应用",
+ "buildApps": "使用 Nodejs 构建应用"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "性能优化",
+ "diagnosticQueries": "有用的诊断查询",
+ "sqlReference": "分布式 SQL 参考"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "矢量搜索",
+ "textIndexing": "文本索引",
+ "troubleshoot": "对常见问题进行故障排除"
+ }
+ },
+ "fabric": {
+ "buildTitle": "生成数据库",
+ "useTitle": "使用你的数据库",
+ "newContainer": {
+ "title": "新容器",
+ "description": "创建用于存储数据的目标容器"
+ },
+ "sampleData": {
+ "title": "示例数据",
+ "description": "在数据库中加载示例数据"
+ },
+ "sampleVectorData": {
+ "title": "示例矢量数据",
+ "description": "使用 text-embedding-ada-002 加载示例矢量数据"
+ },
+ "appDevelopment": {
+ "title": "应用开发",
+ "description": "从此处开始使用 SDK 来构建应用"
+ },
+ "sampleGallery": {
+ "title": "示例库",
+ "description": "获取真实的端到端示例"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "示例数据",
+ "startButton": "开始",
+ "createPrompt": "创建容器“{{containerName}}”,并将示例数据导入其中。这可能需要几分钟时间。",
+ "creatingContainer": "正在创建容器“{{containerName}}”...",
+ "importingData": "正在将数据导入“{{containerName}}”...",
+ "success": "已成功使用示例数据创建“{{containerName}}”。",
+ "errorContainerExists": "数据库“{{databaseName}}”中的容器“{{containerName}}”已存在。请将其删除,然后重试。",
+ "errorCreateContainer": "未能创建容器: {{error}}",
+ "errorImportData": "未能导入数据: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "新建 {{containerName}}",
+ "restoreContainer": "还原 {{containerName}}",
+ "deleteDatabase": "删除 {{databaseName}}",
+ "deleteContainer": "删除 {{containerName}}",
+ "newSqlQuery": "新建 SQL 查询",
+ "newQuery": "新建查询",
+ "openMongoShell": "打开 Mongo Shell",
+ "newShell": "新建 Shell",
+ "openCassandraShell": "打开 Cassandra Shell",
+ "newStoredProcedure": "新建存储过程",
+ "newUdf": "新建 UDF",
+ "newTrigger": "新建触发器",
+ "deleteStoredProcedure": "删除存储过程",
+ "deleteTrigger": "删除触发器",
+ "deleteUdf": "删除用户定义函数"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "新建项目",
+ "newDocument": "新建文档",
+ "uploadItem": "上传项目",
+ "applyFilter": "应用筛选器",
+ "unsavedChanges": "未保存的更改",
+ "unsavedChangesMessage": "未保存的更改将会丢失。是否要继续?",
+ "createDocumentFailed": "创建文档失败",
+ "updateDocumentFailed": "更新文档失败",
+ "documentDeleted": "已成功删除文档。",
+ "deleteDocumentDialogTitle": "删除文档",
+ "deleteDocumentsDialogTitle": "删除文档",
+ "throttlingError": "由于速率限制错误,某些文档无法删除。请稍后重试。若要防止将来出现这种情况,请考虑增加容器或数据库的吞吐量。",
+ "deleteFailed": "删除文档失败({{error}})",
+ "missingShardProperty": "文档缺少分片属性: {{partitionKeyProperty}}",
+ "refreshGridFailed": "刷新文档网格失败",
+ "confirmDelete": "确定要删除 {{documentName}}?",
+ "confirmDeleteTitle": "确认删除",
+ "selectedItems": "所选 {{count}} 个项",
+ "selectedItem": "所选项目",
+ "selectedDocuments": "所选 {{count}} 个文档",
+ "selectedDocument": "所选文档",
+ "deleteDocumentFailedLog": "未能删除具有状态代码 {{statusCode}} 的文档 {{documentId}}",
+ "deleteSuccessLog": "已成功删除 {{count}} 个文档",
+ "deleteThrottledLog": "由于“请求太大”(429)错误,未能删除 {{count}} 个文档。正在重试...",
+ "missingShardKeyLog": "未能保存新文档: 未定义文档分片键",
+ "filterTooltip": "键入查询谓词或从列表中选择一个。",
+ "loadMore": "加载更多",
+ "documentEditor": "文档编辑器",
+ "savedFilters": "已保存的筛选器",
+ "defaultFilters": "默认筛选器",
+ "abort": "中止",
+ "deletingDocuments": "正在删除 {{count}} 个文档",
+ "deletedDocumentsSuccess": "已成功删除 {{count}} 个文档。",
+ "deleteAborted": "已中止删除文档。",
+ "failedToDeleteDocuments": "未能删除 {{count}} 个文档。",
+ "requestTooLargeBase": "由于“请求太大”异常(429),某些删除请求失败",
+ "retriedSuccessfully": "但已成功重试。",
+ "retryingNow": "正在重试。",
+ "increaseThroughputTip": "若要防止将来出现这种情况,请考虑增加容器或数据库的吞吐量。",
+ "numberOfSelectedDocuments": "所选文档数: {{count}}",
+ "mongoFilterPlaceholder": "键入查询谓词(例如 {\"id\":\"foo\"}),或从下拉列表中选择一个,或留空以查询所有文档。",
+ "sqlFilterPlaceholder": "键入查询谓词(例如 WHERE c.id=\"1\"),或从下拉列表中选择一个,或留空以查询所有文档。",
+ "error": "错误",
+ "warning": "警告"
+ },
+ "query": {
+ "executeQuery": "执行查询",
+ "executeSelection": "执行选择",
+ "saveQuery": "保存查询",
+ "downloadQuery": "下载查询",
+ "cancelQuery": "取消查询",
+ "openSavedQueries": "打开已保存的查询",
+ "vertical": "垂直",
+ "horizontal": "水平",
+ "view": "查看",
+ "editingQuery": "正在编辑查询"
+ },
+ "storedProcedure": {
+ "id": "存储过程 ID",
+ "idPlaceholder": "输入新的存储过程 ID",
+ "idAriaLabel": "存储过程 ID",
+ "body": "存储过程主体",
+ "bodyAriaLabel": "存储过程主体",
+ "successfulExecution": "已成功执行存储过程",
+ "resultAriaLabel": "执行存储过程结果",
+ "logsAriaLabel": "执行存储过程日志",
+ "errors": "错误:",
+ "errorDetailsAriaLabel": "错误详细信息链接",
+ "moreDetails": "更多详细信息",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "触发器 ID",
+ "idPlaceholder": "输入新的触发器 ID",
+ "type": "触发器类型",
+ "operation": "触发器操作",
+ "body": "触发器正文",
+ "bodyAriaLabel": "触发器正文",
+ "pre": "预",
+ "post": "发布",
+ "all": "全部",
+ "operationCreate": "创建",
+ "operationDelete": "删除",
+ "operationReplace": "替换"
+ },
+ "udf": {
+ "id": "用户定义的函数 ID",
+ "idPlaceholder": "输入新的用户定义的函数 ID",
+ "body": "用户定义的函数正文",
+ "bodyAriaLabel": "用户定义的函数正文"
+ },
+ "conflicts": {
+ "unsavedChanges": "未保存的更改",
+ "changesWillBeLost": "更改将丢失。是否要继续?",
+ "resolveConflictFailed": "解决冲突失败",
+ "deleteConflictFailed": "删除冲突失败",
+ "refreshGridFailed": "刷新文档网格失败"
+ },
+ "mongoShell": {
+ "title": "Mongo Shell"
+ }
+ },
+ "panes": {
+ "deleteDatabase": {
+ "panelTitle": "删除 {{databaseName}}",
+ "warningMessage": "警告!你将执行的操作无法撤消。继续操作将永久删除此资源及其所有子资源。",
+ "confirmPrompt": "通过键入 {{databaseName}} ID(名称)进行确认",
+ "inputMismatch": "输入的 {{databaseName}} 名称 '{{input}}' 与所选的 {{databaseName}} '{{selectedId}}' 不匹配",
+ "feedbackTitle": "帮助我们改进 Azure Cosmos DB!",
+ "feedbackReason": "删除此 {{databaseName}} 的原因是什么?"
+ },
+ "deleteCollection": {
+ "panelTitle": "删除 {{collectionName}}",
+ "confirmPrompt": "通过键入 {{collectionName}} ID 进行确认",
+ "inputMismatch": "输入 id {{input}} 与所选 {{selectedId}} 不匹配",
+ "feedbackTitle": "帮助我们改进 Azure Cosmos DB!",
+ "feedbackReason": "删除此 {{collectionName}} 的原因是什么?"
+ },
+ "addDatabase": {
+ "databaseLabel": "数据库 {{suffix}}",
+ "databaseIdLabel": "数据库 ID",
+ "keyspaceIdLabel": "键空间 ID",
+ "databaseIdPlaceholder": "键入新的 {{databaseLabel}} ID",
+ "databaseTooltip": "{{databaseLabel}} 是一个或多个 {{collectionsLabel}} 的逻辑容器",
+ "shareThroughput": "跨 {{collectionsLabel}} 共享吞吐量",
+ "shareThroughputTooltip": "{{databaseLabel}} 级别的预配吞吐量将在 {{databaseLabel}} 内的所有 {{collectionsLabel}} 之间共享。",
+ "greaterThanError": "对于 autopilot 吞吐量,请输入大于 {{minValue}} 的值",
+ "acknowledgeSpendError": "请确认估计的 {{period}} 支出。",
+ "acknowledgeSpendErrorMonthly": "请确认估计的每月支出。",
+ "acknowledgeSpendErrorDaily": "请确认估计的每日支出。",
+ "provisionSharedThroughputTitle": "预配共享吞吐量",
+ "provisionThroughputLabel": "预配吞吐量"
+ },
+ "addCollection": {
+ "createNew": "新建",
+ "useExisting": "使用现有项",
+ "databaseTooltip": "数据库类似于命名空间。它是一组 {{collectionName}} 的管理单元。",
+ "shareThroughput": "跨 {{collectionName}} 共享吞吐量",
+ "shareThroughputTooltip": "在数据库级别配置的吞吐量将在数据库内的所有 {{collectionName}} 之间共享。",
+ "collectionIdLabel": "{{collectionName}} id",
+ "collectionIdTooltip": "{{collectionName}} 的唯一标识符,用于通过 REST 和所有 SDK 进行基于 ID 的路由。",
+ "collectionIdPlaceholder": "例如,{{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID,示例 {{collectionName}}1",
+ "existingDatabaseAriaLabel": "选择现有的 {{databaseName}} ID",
+ "existingDatabasePlaceholder": "选择现有的 {{databaseName}} ID",
+ "indexing": "正在索引",
+ "turnOnIndexing": "打开索引",
+ "automatic": "自动",
+ "turnOffIndexing": "关闭索引",
+ "off": "关",
+ "sharding": "正在分片",
+ "shardingTooltip": "分片集合跨多个副本集(分片)拆分数据,以实现无限的可伸缩性。分片集合需要选择分片键(字段)以均匀分布数据。",
+ "unsharded": "未分片",
+ "unshardedLabel": "未分片(20GB 限制)",
+ "sharded": "已分片",
+ "addPartitionKey": "添加分层分区键",
+ "hierarchicalPartitionKeyInfo": "此功能允许你使用最多三个级别的键对数据进行分区,以便更好地进行数据分发。需要 .NET V3、Java V4 SDK 或预览版 JavaScript V3 SDK。",
+ "provisionDedicatedThroughput": "为此 {{collectionName}} 预配专用吞吐量",
+ "provisionDedicatedThroughputTooltip": "可以选择为已预配吞吐量的数据库内的 {{collectionName}} 预配专用吞吐量。此专用吞吐量不会与数据库中的其他 {{collectionNamePlural}} 共享,也不计入为数据库预配的吞吐量。除了在数据库级别预配的吞吐量量外,还将对此吞吐量进行计费。",
+ "uniqueKeysPlaceholderMongo": "逗号分隔的路径,例如 firstName, address.zipCode",
+ "uniqueKeysPlaceholderSql": "逗号分隔的路径,例如 /firstName、/address/zipCode",
+ "addUniqueKey": "添加唯一键",
+ "enableAnalyticalStore": "启用分析存储",
+ "disableAnalyticalStore": "禁用分析存储",
+ "on": "开",
+ "analyticalStoreSynapseLinkRequired": "创建分析存储 {{collectionName}} 时需要 Azure Synapse Link。为此 Cosmos DB 帐户启用 Synapse Link。",
+ "enable": "启用",
+ "containerVectorPolicy": "容器向量策略",
+ "containerFullTextSearchPolicy": "容器全文搜索策略",
+ "advanced": "高级",
+ "mongoIndexingTooltip": "默认为 _id 字段编制索引。为所有字段创建通配符索引将优化查询,建议用于开发。",
+ "createWildcardIndex": "在所有字段上创建通配符索引",
+ "legacySdkCheckbox": "我的应用程序使用较旧的 Cosmos .NET 或 Java SDK 版本(.NET V1 或 Java V2)",
+ "legacySdkInfo": "为了确保与较旧的 SDK 兼容,创建的容器将使用旧版分区方案,该方案仅支持大小上限为 101 字节的分区键值。如果启用此功能,将无法使用分层分区键。",
+ "indexingOnInfo": "默认情况下,将为文档中的所有属性编制索引,以便进行灵活高效的查询。",
+ "indexingOffInfo": "索引将关闭。如果不需要运行查询或仅具有键值操作,则建议使用。",
+ "indexingOffWarning": "通过在关闭索引的情况下创建此容器,你将无法进行任何索引策略更改。仅允许对具有索引策略的容器进行索引更改。",
+ "acknowledgeSpendErrorMonthly": "请确认估计的每月支出。",
+ "acknowledgeSpendErrorDaily": "请确认估计的每日支出。",
+ "unshardedMaxRuError": "未分片集合最多支持 10,000 RU",
+ "acknowledgeShareThroughputError": "请确认此专用吞吐量的估计成本。",
+ "vectorPolicyError": "请修复容器向量策略中的错误",
+ "fullTextSearchPolicyError": "请修复容器全文搜索策略中的错误",
+ "addingSampleDataSet": "添加示例数据集",
+ "databaseFieldLabelName": "数据库名称",
+ "databaseFieldLabelId": "数据库 ID",
+ "newDatabaseIdPlaceholder": "键入新的数据库 ID",
+ "newDatabaseIdAriaLabel": "新建数据库 ID,请键入新数据库 ID",
+ "createNewDatabaseAriaLabel": "创建新数据库",
+ "useExistingDatabaseAriaLabel": "使用现有数据库",
+ "chooseExistingDatabase": "使用现有数据库",
+ "teachingBubble": {
+ "step1Headline": "创建示例数据库",
+ "step1Body": "数据库是容器的父级。你可以创建新数据库或使用现有数据库。在本教程中,我们将创建一个名为 SampleDB 的新数据库。",
+ "step1LearnMore": "详细了解资源。",
+ "step2Headline": "设置吞吐量",
+ "step2Body": "Cosmos DB 建议跨数据库共享吞吐量。自动缩放将根据设置的最大 RU/秒(请求单位)提供灵活的吞吐量。",
+ "step2LearnMore": "详细了解 RU/秒。",
+ "step3Headline": "命名容器",
+ "step3Body": "为容器命名",
+ "step4Headline": "设置分区键",
+ "step4Body": "最后一步 - 你需要为集合定义分区键。对于此特定示例,选择的是 /address。一个好的分区键应具有各种可能的值",
+ "step4CreateContainer": "创建容器",
+ "step5Headline": "创建示例容器",
+ "step5Body": "现在正在创建示例容器,我们将为你添加示例数据。这大约需要 1 分钟。",
+ "step5BodyFollowUp": "创建示例容器后,请查看示例数据集并执行后续步骤",
+ "stepOfTotal": "第 {{current}} 步(共 {{total}} 步)"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "分片键(字段)用于跨多个副本集(分片)拆分数据,以实现无限的可伸缩性。选择将均匀分发数据的字段至关重要。",
+ "partitionKeyTooltip": "{{partitionKeyName}} 用于跨分区自动分发数据,以实现可伸缩性。在 JSON 文档中选择一个具有各种值并均匀分布请求卷的属性。",
+ "partitionKeyTooltipSqlSuffix": " 对于小型读密集型工作负载或任何规模的写密集型工作负载,id 通常是一个不错的选择。",
+ "shardKeyLabel": "分片键",
+ "partitionKeyLabel": "分区键",
+ "shardKeyPlaceholder": "例如,categoryId",
+ "partitionKeyPlaceholderDefault": "例如,/address",
+ "partitionKeyPlaceholderFirst": "必需 - 第一个分区键,例如 /TenantId",
+ "partitionKeyPlaceholderSecond": "第二个分区键,例如 /UserId",
+ "partitionKeyPlaceholderThird": "第三个分区键,例如 /SessionId",
+ "partitionKeyPlaceholderGraph": "例如,/address/zipCode",
+ "uniqueKeysTooltip": "唯一键使开发人员能够向其数据库添加一层数据完整性。通过在创建容器时创建唯一键策略,可以确保每个分区键一个或多个值的唯一性。",
+ "uniqueKeysLabel": "唯一键",
+ "analyticalStoreLabel": "分析存储",
+ "analyticalStoreTooltip": "使分析存储功能能够对作数据执行近实时分析,而不会影响事务工作负载的性能。",
+ "analyticalStoreDescription": "使分析存储功能能够对作数据执行近实时分析,而不会影响事务工作负载的性能。",
+ "vectorPolicyTooltip": "描述数据中包含向量的任何属性,以便它们可用于相似性查询。"
+ },
+ "settings": {
+ "pageOptions": "页面选项",
+ "pageOptionsDescription": "选择“自定义”可指定要显示的固定数量的查询结果,选择“无限制”可显示每页任意数量的查询结果。",
+ "queryResultsPerPage": "每页查询结果",
+ "queryResultsPerPageTooltip": "输入每页应显示的查询结果数。",
+ "customQueryItemsPerPage": "每页自定义查询项",
+ "custom": "自定义",
+ "unlimited": "无限制",
+ "entraIdRbac": "启用 Entra ID RBAC",
+ "entraIdRbacDescription": "选择“自动”以自动启用 Entra ID RBAC。如果为 True/False,则强制启用/禁用 Entra ID RBAC。",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "区域选择",
+ "regionSelectionDescription": "更改 Cosmos 客户端用于访问帐户的区域。",
+ "selectRegion": "选择区域",
+ "selectRegionTooltip": "更改用于执行客户端操作的帐户终结点。",
+ "globalDefault": "全局(默认)",
+ "readWrite": "(读/写)",
+ "read": "(读取)",
+ "queryTimeout": "查询超时",
+ "queryTimeoutDescription": "当查询达到指定的时间限制时,将显示一个弹出窗口,其中包含取消查询的选项,除非已启用自动取消。",
+ "enableQueryTimeout": "启用查询超时",
+ "queryTimeoutMs": "查询超时(毫秒)",
+ "automaticallyCancelQuery": "超时后自动取消查询",
+ "ruLimit": "RU 限制",
+ "ruLimitDescription": "如果查询超过配置的 RU 限制,则查询将中止。",
+ "enableRuLimit": "启用 RU 限制",
+ "ruLimitLabel": "RU 限制(RU)",
+ "defaultQueryResults": "默认查询结果视图",
+ "defaultQueryResultsDescription": "选择显示查询结果时要使用的默认视图。",
+ "retrySettings": "重试设置",
+ "retrySettingsDescription": "在 CosmosDB 查询期间与受限制的请求关联的重试策略。",
+ "maxRetryAttempts": "最大重试次数",
+ "maxRetryAttemptsTooltip": "要为请求执行的最大重试次数。默认值 9。",
+ "fixedRetryInterval": "修复了重试间隔(毫秒)",
+ "fixedRetryIntervalTooltip": "修复了在每次重试之间等待的重试间隔(以毫秒为单位),忽略作为响应一部分返回的 retryAfter。默认值为 0 毫秒。",
+ "maxWaitTime": "最长等待时间",
+ "maxWaitTimeTooltip": "重试期间等待请求的最长等待时间(以秒为单位)。默认值 30 秒。",
+ "enableContainerPagination": "启用容器分页",
+ "enableContainerPaginationDescription": "一次加载 50 个容器。目前,容器不会按字母数字顺序拉取。",
+ "enableCrossPartitionQuery": "启用跨分区查询",
+ "enableCrossPartitionQueryDescription": "执行查询时发送多个请求。如果查询的范围不限于单个分区键值,则需要多个请求。",
+ "maxDegreeOfParallelism": "最大并行度",
+ "maxDegreeOfParallelismDescription": "获取或设置并行查询执行期间运行客户端的并发操作数。正值会将并发操作数限制为该值。若设置为小于 0,系统将自动决定并发操作数。",
+ "maxDegreeOfParallelismQuery": "查询最大并行度。",
+ "priorityLevel": "优先级别",
+ "priorityLevelDescription": "设置使用基于优先级的执行时来自数据资源管理器的数据平面请求的优先级。如果选择“无”,数据资源管理器将不指定优先级,将使用服务器端默认优先级。",
+ "displayGremlinQueryResults": "将 Gremlin 查询结果显示为:",
+ "displayGremlinQueryResultsDescription": "选择“图形”以自动将查询结果可视化为图形,或选择“JSON”以将结果显示为 JSON 格式。",
+ "graph": "图形",
+ "json": "JSON",
+ "graphAutoVisualization": "图形自动可视化",
+ "enableSampleDatabase": "启用示例数据库",
+ "enableSampleDatabaseDescription": "这是一个包含合成产品数据的示例数据库和集合,可用于使用 NoSQL 查询进行浏览。它将作为数据资源管理器 UI 中的另一个数据库显示,由 Microsoft 创建并免费维护。",
+ "enableSampleDbAriaLabel": "为查询浏览启用示例数据库",
+ "guidRepresentation": "Guid 表示形式",
+ "guidRepresentationDescription": "MongoDB 中的 GuidRepresentation 是指在 BSON 文档中存储全局唯一标识符(GUID)时如何进行序列化和反序列化。这适用于所有文档操作。",
+ "advancedSettings": "高级设置",
+ "ignorePartitionKey": "在文档更新时忽略分区键",
+ "ignorePartitionKeyTooltip": "如果选中,分区键值将不会用于在更新操作期间查找文档。仅当文档更新由于异常分区键而失败时才使用此项。",
+ "clearHistory": "清除历史记录",
+ "clearHistoryConfirm": "确定要继续吗?",
+ "clearHistoryDescription": "此操作将清除此浏览器中此帐户的所有自定义设置,包括:",
+ "clearHistoryTabLayout": "重置自定义选项卡布局,包括拆分器位置",
+ "clearHistoryTableColumns": "擦除表列首选项,包括任何自定义列",
+ "clearHistoryFilters": "清除筛选历史记录",
+ "clearHistoryRegion": "将区域选择重置为全局",
+ "increaseValueBy1000": "将值增加 1000",
+ "decreaseValueBy1000": "将值减小 1000",
+ "none": "无",
+ "low": "低",
+ "high": "高",
+ "automatic": "自动",
+ "enhancedQueryControl": "增强的查询控制",
+ "enableQueryControl": "启用查询控制",
+ "explorerVersion": "资源管理器版本",
+ "accountId": "帐户 ID",
+ "sessionId": "会话 ID",
+ "popupsDisabledError": "我们无法为此帐户建立授权,因为浏览器中已禁用弹出窗口。\n请为此网站启用弹出窗口,然后单击“登录 Entra ID”按钮",
+ "failedToAcquireTokenError": "未能自动获取授权令牌。请单击“Entra ID 登录”按钮以启用 Entra ID RBAC 操作"
+ },
+ "saveQuery": {
+ "panelTitle": "保存查询",
+ "setupCostMessage": "出于合规性原因,我们将在你的 Azure Cosmos 帐户中一个名为“{{databaseName}}”的独立数据库里保存查询。若要继续,我们需要在你的帐户中创建一个容器,估计每天额外费用为 0.77 美元。",
+ "completeSetup": "完成设置",
+ "noQueryNameError": "未指定查询名称",
+ "invalidQueryContentError": "指定的查询内容无效",
+ "failedToSaveQueryError": "未能保存查询 {{queryName}}",
+ "failedToSetupContainerError": "未能为保存的查询设置容器",
+ "accountNotSetupError": "未能保存查询: 帐户未设置,无法保存查询",
+ "name": "名称"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "未指定文件",
+ "failedToLoadQueryError": "未能加载查询",
+ "failedToLoadQueryFromFileError": "未能从文件 {{fileName}} 加载查询",
+ "selectFilesToOpen": "选择查询文档",
+ "browseFiles": "浏览"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "请输入输入参数(如果有)",
+ "key": "键",
+ "param": "参数",
+ "partitionKeyValue": "分区键值",
+ "value": "值",
+ "addNewParam": "添加新参数",
+ "addParam": "添加参数",
+ "deleteParam": "删除参数",
+ "invalidParamError": "指定的参数无效: {{invalidParam}}",
+ "invalidParamConsoleError": "指定的参数无效: {{invalidParam}} 不是有效的文本值",
+ "stringType": "字符串",
+ "customType": "自定义"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "未指定任何文件。请输入至少一个文件。",
+ "selectJsonFiles": "选择 JSON 文件",
+ "selectJsonFilesTooltip": "选择一个或多个要上传的 JSON 文件。每个文件可以包含单个 JSON 文档或 JSON 文档数组。单个上传操作中所有文件的总大小必须小于 2 MB。对于较大数据集,可以执行多次上传操作。",
+ "fileNameColumn": "文件名",
+ "statusColumn": "状态",
+ "uploadStatus": "{{numSucceeded}} 已创建,{{numThrottled}} 受限,{{numFailed}} 个错误",
+ "uploadedFiles": "已上传的文件"
+ },
+ "copyNotebook": {
+ "copyFailedError": "未能将 {{name}} 复制到 {{destination}}",
+ "uploadFailedError": "未能上传 {{name}}",
+ "location": "位置",
+ "locationAriaLabel": "位置",
+ "selectLocation": "选择要复制的笔记本位置",
+ "name": "名称"
+ },
+ "publishNotebook": {
+ "publishFailedError": "未能将 {{notebookName}} 发布到库",
+ "publishDescription": "发布后,此笔记本将显示在 Azure Cosmos DB 笔记本公共库中。在发布之前,请确保已移除任何敏感数据或输出。",
+ "publishPrompt": "是否要发布“{{name}}”并共享到库?",
+ "coverImage": "封面图像",
+ "coverImageUrl": "封面图像 URL",
+ "name": "名称",
+ "description": "说明",
+ "tags": "标记",
+ "tagsPlaceholder": "可选标记 1,可选标记 2",
+ "preview": "预览",
+ "urlType": "URL",
+ "customImage": "自定义映像",
+ "takeScreenshot": "生成屏幕快照",
+ "useFirstDisplayOutput": "使用第一个显示输出",
+ "failedToCaptureOutput": "未能捕获第一个输出",
+ "outputDoesNotExist": "任何单元格都不存在输出。",
+ "failedToConvertError": "未能将 {{fileName}} 转换为 base64 格式",
+ "failedToUploadError": "未能上传 {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "未能启动数据传输作业",
+ "suboptimalPartitionKeyError": "警告: 系统检测到集合使用的分区键可能不理想",
+ "description": "更改容器的分区键时,需要使用正确的分区键创建目标容器。还可以选择现有目标容器。",
+ "sourceContainerId": "源 {{collectionName}} ID",
+ "destinationContainerId": "目标 {{collectionName}} ID",
+ "collectionIdTooltip": "{{collectionName}} 的唯一标识符,用于通过 REST 和所有 SDK 进行基于 ID 的路由。",
+ "collectionIdPlaceholder": "例如,{{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} ID,示例 {{collectionName}}1",
+ "existingContainers": "现有容器",
+ "partitionKeyWarning": "目标容器必须不存在。数据资源管理器将为你创建新的目标容器。"
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "键空间名称",
+ "keyspaceTooltip": "选择现有键空间或输入新的键空间 ID。",
+ "tableIdLabel": "输入 CQL 命令以创建表。",
+ "enterTableId": "输入表 ID",
+ "tableSchemaAriaLabel": "表架构",
+ "provisionDedicatedThroughput": "为此表预配专用吞吐量",
+ "provisionDedicatedThroughputTooltip": "可以选择为预配了吞吐量的键空间中的表预配专用吞吐量。此专用吞吐量量不会与键空间中的其他表共享,也不计入为键空间预配的吞吐量。除了在键空间级别预配的吞吐量量外,还将对此吞吐量进行计费。"
+ },
+ "tables": {
+ "addProperty": "添加属性",
+ "addRow": "添加行",
+ "addEntity": "添加实体",
+ "back": "返回",
+ "nullFieldsWarning": "警告: 空字段将不会显示供编辑。",
+ "propertyEmptyError": "{{property}} 不能为空。请输入 {{property}} 的值",
+ "whitespaceError": "{{property}} 不能有空格。请为 {{property}} 输入不带空格的值",
+ "propertyTypeEmptyError": "属性类型不能为空。请从属性 {{property}} 的下拉列表中选择类型"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "选择要查询的列。",
+ "availableColumns": "可用列"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "选择要在容器中的项视图中显示的列。",
+ "searchFields": "搜索字段",
+ "reset": "重置",
+ "partitionKeySuffix": " (分区键)"
+ },
+ "newVertex": {
+ "addProperty": "添加属性"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "全局辅助索引容器 ID",
+ "globalSecondaryIndexIdPlaceholder": "例如 indexbyEmailId",
+ "projectionQuery": "投影查询",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "详细了解如何定义全局辅助索引。",
+ "disabledTitle": "已在创建全局辅助索引。请等待它完成,然后再创建另一个。"
+ },
+ "stringInput": {
+ "inputMismatchError": "输入 {{input}} 与所选的 {{selectedId}} 不匹配"
+ },
+ "panelInfo": {
+ "information": "信息",
+ "moreDetails": "更多详细信息"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "缩放",
+ "conflictResolution": "冲突解决",
+ "settings": "设置",
+ "indexingPolicy": "索引策略",
+ "partitionKeys": "分区键",
+ "partitionKeysPreview": "分区键(预览版)",
+ "computedProperties": "计算属性",
+ "containerPolicies": "容器策略",
+ "throughputBuckets": "吞吐量存储桶",
+ "globalSecondaryIndexPreview": "全局辅助索引(预览版)",
+ "maskingPolicyPreview": "掩码策略(预览版)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "请为每个索引选择一个类型。",
+ "enterFieldNameError": "请输入字段名称。",
+ "wildcardPathError": "字段名称中不存在通配符路径。使用类似的模式 "
+ },
+ "partitionKey": {
+ "shardKey": "分片键",
+ "partitionKey": "分区键",
+ "shardKeyTooltip": "分片键(字段)用于跨多个副本集(分片)拆分数据,以实现无限的可伸缩性。选择将均匀分发数据的字段至关重要。",
+ "partitionKeyTooltip": "用于跨分区自动分发数据,以实现可伸缩性。在 JSON 文档中选择一个具有各种值并均匀分布请求卷的属性。",
+ "sqlPartitionKeyTooltipSuffix": " 对于小型读密集型工作负载或任何规模的写密集型工作负载,id 通常是一个不错的选择。",
+ "partitionKeySubtext": "对于小型工作负载,项 ID 是适合分区键的选择。",
+ "mongoPlaceholder": "例如,categoryId",
+ "gremlinPlaceholder": "例如,/address",
+ "sqlFirstPartitionKey": "必需 - 第一个分区键,例如 /TenantId",
+ "sqlSecondPartitionKey": "第二个分区键,例如 /UserId",
+ "sqlThirdPartitionKey": "第三个分区键,例如 /SessionId",
+ "defaultPlaceholder": "例如,/address/zipCode"
+ },
+ "costEstimate": {
+ "title": "成本估算*",
+ "howWeCalculate": "如何计算此值",
+ "updatedCostPerMonth": "更新的每月成本",
+ "currentCostPerMonth": "每月当前成本",
+ "perRu": "/RU",
+ "perHour": "/小时",
+ "perDay": "/天",
+ "perMonth": "/月"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "系统将根据资源的当前手动吞吐量设置和存储来确定启动自动缩放最大 RU/秒。启用自动缩放后,可以更改最大 RU/秒。",
+ "ttlWarningText": "系统将根据你提供的 TTL 值(以秒为单位)自动删除项,而无需客户端应用程序显式发出的删除操作。有关详细信息,请参阅",
+ "ttlWarningLinkText": "Azure Cosmos DB 中的生存时间(TTL)",
+ "unsavedIndexingPolicy": "索引策略",
+ "unsavedDataMaskingPolicy": "数据掩码策略",
+ "unsavedComputedProperties": "计算属性",
+ "unsavedEditorWarningPrefix": "你尚未保存所做的最新更改",
+ "unsavedEditorWarningSuffix": "。请单击“保存”以确认更改。",
+ "updateDelayedApplyWarning": "你将请求增加超出预分配容量的吞吐量。此操作需要一些时间才能完成。",
+ "scalingUpDelayMessage": "纵向扩展将需要 4-6 小时,因为它超出了 Azure Cosmos DB 根据物理分区数可以立即支持的范围。你可以立即将吞吐量提升至 {{instantMaximumThroughput}},也可以继续使用当前值,等待纵向扩展完成。",
+ "exceedPreAllocatedMessage": "增加吞吐量的请求超出了预分配的容量,这可能需要比预期更长的时间。有三个选项可供选择以继续:",
+ "instantScaleOption": "可以立即纵向扩展到 {{instantMaximumThroughput}} RU/秒。",
+ "asyncScaleOption": "可以在 4-6 小时内异步纵向扩展到 {{maximumThroughput}} RU/s 下的任何值。",
+ "quotaMaxOption": "当前配额上限为 {{maximumThroughput}} RU/秒。若要超过此限制,必须请求增加配额,Azure Cosmos DB 团队将进行审核。",
+ "belowMinimumMessage": "不能将吞吐量降低到当前最低 {{minimum}} RU/秒。有关此限制的详细信息,请参阅我们的服务报价文档。",
+ "saveThroughputWarning": "更新吞吐量设置时,帐单将受到影响。在保存更改之前,请查看下面更新的成本估算",
+ "currentAutoscaleThroughput": "当前自动缩放吞吐量:",
+ "targetAutoscaleThroughput": "目标自动缩放吞吐量:",
+ "currentManualThroughput": "当前手动吞吐量:",
+ "targetManualThroughput": "目标手动吞吐量:",
+ "applyDelayedMessage": "已成功提交增加吞吐量的请求。此操作需要 1-3 个工作日才能完成。在“通知”中查看最新状态。",
+ "databaseLabel": "数据库:",
+ "containerLabel": "容器:",
+ "applyShortDelayMessage": "当前正在请求增加吞吐量。此操作需要一些时间才能完成。",
+ "applyLongDelayMessage": "当前正在请求增加吞吐量。此操作需要 1-3 个工作日才能完成。在“通知”中查看最新状态。",
+ "throughputCapError": "你的帐户当前配置的总吞吐量限制为 {{throughputCap}} RU/秒。此更新不可行,因为它会将总吞吐量增加到 {{newTotalThroughput}} RU/秒。更改成本管理中的总吞吐量限制。",
+ "throughputIncrementError": "吞吐量值必须以 1000 为增量"
+ },
+ "conflictResolution": {
+ "lwwDefault": "上次写入获胜(默认值)",
+ "customMergeProcedure": "合并过程(自定义)",
+ "mode": "模式",
+ "conflictResolverProperty": "冲突解决程序属性",
+ "storedProcedure": "存储过程",
+ "lwwTooltip": "获取或设置文档中整数属性的名称,该属性用于基于上次写入获胜(LWW)的冲突解决方案。默认情况下,系统使用系统定义的时间戳属性 _ts 来决定文档冲突版本的获胜者。如果要替代基于默认时间戳的冲突解决方法,请指定你自己的整数属性。",
+ "customTooltip": "获取或设置用于解决冲突的存储过程(也称为合并过程)的名称。可以编写应用程序定义的逻辑来确定文档冲突版本的获胜者。存储过程将在服务器端以事务方式执行一次。如果未提供存储过程,冲突将被填充到",
+ "customTooltipConflictsFeed": " 冲突源",
+ "customTooltipSuffix": "。可以随时更新/重新注册存储过程。"
+ },
+ "changeFeed": {
+ "label": "更改源日志保留策略",
+ "tooltip": "启用更改源日志保留策略,以默认保留容器中项目过去 10 分钟的历史记录。为了支持此功能,此容器的写入请求单位(RU)费用将翻倍。读取不受影响。"
+ },
+ "mongoIndexing": {
+ "disclaimer": "对于筛选多个属性的查询,请创建多个单字段索引,而不是复合索引。",
+ "disclaimerCompoundIndexesLink": " 复合索引 ",
+ "disclaimerSuffix": "仅用于对查询结果进行排序。如果需要添加复合索引,可以使用 Mongo shell 创建一个。",
+ "compoundNotSupported": "索引编辑器尚不支持具有复合索引的集合。若要修改此集合的索引策略,请使用 Mongo Shell。",
+ "aadError": "若要使用索引策略编辑器,请登录到",
+ "aadErrorLink": "Azure 门户。",
+ "refreshingProgress": "正在刷新索引转换进度",
+ "canMakeMoreChangesZero": "当前索引转换完成后,可以进行更多索引更改。",
+ "refreshToCheck": "刷新以检查是否已完成。",
+ "canMakeMoreChangesProgress": "当前索引转换完成后,可以进行更多索引更改。它已完成 {{progress}}%。",
+ "refreshToCheckProgress": "刷新以检查进度。",
+ "definitionColumn": "定义",
+ "typeColumn": "类型",
+ "dropIndexColumn": "删除索引",
+ "addIndexBackColumn": "重新添加索引",
+ "deleteIndexButton": "删除索引按钮",
+ "addBackIndexButton": "“重新添加索引”按钮",
+ "currentIndexes": "当前索引",
+ "indexesToBeDropped": "要删除的索引",
+ "indexFieldName": "索引字段名称",
+ "indexType": "索引类型",
+ "selectIndexType": "选择索引类型",
+ "undoButton": "撤消按钮"
+ },
+ "subSettings": {
+ "timeToLive": "生存时间",
+ "ttlOff": "关",
+ "ttlOnNoDefault": "开(无默认)",
+ "ttlOn": "开",
+ "seconds": "秒",
+ "timeToLiveInSeconds": "生存时间(以秒为单位)",
+ "analyticalStorageTtl": "分析存储生存时间",
+ "geospatialConfiguration": "地理空间配置",
+ "geography": "地理区域",
+ "geometry": "几何",
+ "uniqueKeys": "唯一键",
+ "mongoTtlMessage": "若要为集合/文档启用生存时间(TTL),",
+ "mongoTtlLinkText": "创建 TTL 索引",
+ "partitionKeyTooltipTemplate": "此 {{partitionKeyName}} 用于跨多个分区分发数据以实现可扩展性。值 \"{{partitionKeyValue}}\" 确定如何对文档进行分区。",
+ "largePartitionKeyEnabled": "已启用大型 {{partitionKeyName}}。",
+ "hierarchicalPartitioned": "分层分区容器。",
+ "nonHierarchicalPartitioned": "非分层分区容器。"
+ },
+ "scale": {
+ "freeTierInfo": "使用免费层,你将免费获得此帐户中的前 {{ru}} RU/秒和 {{storage}} GB 存储空间。若要保持帐户免费,请将帐户中所有资源的总 RU/秒保持在 {{ru}} RU/秒以内。",
+ "freeTierLearnMore": "了解详细信息。",
+ "throughputRuS": "吞吐量(RU/s)",
+ "autoScaleCustomSettings": "你的帐户具有阻止在容器级别设置吞吐量的自定义设置。请与 Cosmos DB 工程团队联系点合作进行更改。",
+ "keyspaceSharedThroughput": "此表共享吞吐量是在密钥空间中配置的",
+ "throughputRangeLabel": "吞吐量({{min}} - {{max}} RU/秒)",
+ "unlimited": "无限制"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "更改 {{partitionKeyName}}",
+ "currentPartitionKey": "当前 {{partitionKeyName}}",
+ "partitioning": "分区",
+ "hierarchical": "分层",
+ "nonHierarchical": "非分层",
+ "safeguardWarning": "若要保护要复制到新容器的数据的完整性,请确保在整个分区键更改过程中不会对源容器进行任何更新。",
+ "changeDescription": "若要更改分区键,必须创建新的目标容器或选择现有目标容器。然后,数据将复制到目标容器。",
+ "changeButton": "更改",
+ "changeJob": "{{partitionKeyName}} 更改作业",
+ "cancelButton": "取消",
+ "documentsProcessed": "(已处理 {{processedCount}}/{{totalCount}} 个文档)"
+ },
+ "computedProperties": {
+ "ariaLabel": "计算属性",
+ "learnMorePrefix": "关于如何定义计算属性以及如何使用它们。"
+ },
+ "indexingPolicy": {
+ "ariaLabel": "索引策略"
+ },
+ "dataMasking": {
+ "ariaLabel": "数据掩码策略",
+ "validationFailed": "验证失败:",
+ "includedPathsRequired": "includedPaths 是必需的",
+ "includedPathsMustBeArray": "includedPaths 必须是数组",
+ "excludedPathsMustBeArray": "excludedPaths 必须是数组(如果提供)"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "矢量策略",
+ "fullTextPolicy": "全文策略",
+ "createFullTextPolicy": "创建新的全文搜索策略"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "此容器为其定义了以下索引。",
+ "learnMoreSuffix": "关于如何定义全局辅助索引以及如何使用它们。",
+ "jsonAriaLabel": "全局辅助索引 JSON",
+ "addIndex": "添加索引",
+ "settingsTitle": "全局辅助索引设置",
+ "sourceContainer": "源容器",
+ "indexDefinition": "全局辅助索引定义"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "刷新索引转换进度失败"
+ },
+ "throughputInput": {
+ "autoscale": "自动缩放",
+ "manual": "手动",
+ "minimumRuS": "最小 RU/秒",
+ "maximumRuS": "最大 RU/秒",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "存储容量",
+ "fixed": "已修复",
+ "unlimited": "无限制",
+ "instant": "即时",
+ "fourToSixHrs": "4-6 小时",
+ "autoscaleDescription": "根据使用情况,你的 {{resourceType}} 吞吐量将进行缩放,起始值为",
+ "freeTierWarning": "如果预配的手动吞吐量超过 {{ru}} RU/秒,或资源通过自动缩放超过 {{ru}} RU/秒,将产生计费。",
+ "capacityCalculator": "估算所需的 RU/秒,使用",
+ "capacityCalculatorLink": " 容量计算器",
+ "fixedStorageNote": "使用具有固定存储容量的集合时,最多可以设置 10,000 RU/秒。",
+ "min": "最小值",
+ "max": "最大值"
+ },
+ "throughputBuckets": {
+ "label": "吞吐量存储桶",
+ "bucketLabel": "存储桶 {{id}}",
+ "dataExplorerQueryBucket": " (数据资源管理器查询存储桶)",
+ "active": "活动",
+ "inactive": "非活动"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Localization/zh-Hant/Resources.json b/src/Localization/zh-Hant/Resources.json
new file mode 100644
index 000000000..2b8ed47db
--- /dev/null
+++ b/src/Localization/zh-Hant/Resources.json
@@ -0,0 +1,968 @@
+{
+ "common": {
+ "ok": "確定",
+ "cancel": "取消",
+ "close": "關閉",
+ "save": "儲存",
+ "delete": "刪除",
+ "update": "更新",
+ "discard": "捨棄",
+ "execute": "執行",
+ "loading": "正在載入",
+ "loadingEllipsis": "正在載入...",
+ "next": "下一個",
+ "previous": "上一步",
+ "yes": "是",
+ "no": "否",
+ "result": "結果",
+ "learnMore": "深入了解",
+ "getStarted": "開始使用",
+ "retry": "重試",
+ "apply": "套用",
+ "refresh": "重新整理",
+ "copy": "複製",
+ "create": "建立",
+ "confirm": "確認",
+ "open": "開啟",
+ "rename": "重新命名",
+ "download": "下載",
+ "upload": "上傳",
+ "connect": "連線",
+ "remove": "移除",
+ "load": "載入",
+ "publish": "發佈",
+ "browse": "瀏覽",
+ "increaseValueBy1": "將值增加 1",
+ "decreaseValueBy1": "將值減少 1"
+ },
+ "splashScreen": {
+ "title": {
+ "default": "歡迎使用 Azure Cosmos DB",
+ "postgres": "歡迎使用 Azure Cosmos DB for PostgreSQL",
+ "vcoreMongo": "歡迎使用 Azure DocumentDB (具 MongoDB 相容性)"
+ },
+ "subtitle": {
+ "default": "適用於任何規模的全域散發、多模型資料庫服務",
+ "getStarted": "開始使用我們的樣本資料集、文件和其他工具。"
+ },
+ "quickStart": {
+ "title": "啟動快速入門",
+ "description": "啟動快速入門教學課程,以開始使用範例資料"
+ },
+ "newCollection": {
+ "title": "新增 {{collectionName}}",
+ "description": "建立用於儲存空間和輸送量的新容器"
+ },
+ "samplesGallery": {
+ "title": "Azure Cosmos DB 範例圖庫",
+ "description": "探索展示可擴展的智慧型應用模式的範例。立即嘗試,體驗使用 Cosmos DB 從概念到程式碼實作可以有多快速"
+ },
+ "connectCard": {
+ "title": "連線",
+ "description": "偏好使用您自己的工具?找到您需要的連接字串以進行連線",
+ "pgAdmin": {
+ "title": "使用 pgAdmin 連結",
+ "description": "偏好使用 pgAdmin?請在這裡尋找您的連接字串"
+ },
+ "vsCode": {
+ "title": "與 VS Code 連線",
+ "description": "在 Visual Studio Code 中查詢並管理您的 MongoDB 與 DocumentDB 叢集"
+ }
+ },
+ "shell": {
+ "postgres": {
+ "title": "PostgreSQL 殼層",
+ "description": "建立資料表並使用 PostgreSQL 殼層介面與資料互動"
+ },
+ "vcoreMongo": {
+ "title": "Mongo 殼層",
+ "description": "建立集合並使用 MongoDB 殼層介面與資料互動"
+ }
+ },
+ "teachingBubble": {
+ "newToPostgres": {
+ "headline": "首次使用 Cosmos DB PGSQL?",
+ "body": "歡迎!如果您首次使用 Cosmos DB PGSQL,需要入門協助,這裡可找到範例資料與查詢範例。"
+ },
+ "resetPassword": {
+ "headline": "建立您的密碼",
+ "body": "如果您尚未變更密碼,請立即變更。"
+ },
+ "coachMark": {
+ "headline": "從範例 {{collectionName}} 開始",
+ "body": "我們將引導您建立一個包含範例資料的容器,並帶您導覽資料總管。您也可以取消啟動此導覽,自行探索"
+ }
+ },
+ "sections": {
+ "recents": "最近項目",
+ "clearRecents": "清除最近項目",
+ "top3": "您需要知道的 3 大重點",
+ "learningResources": "學習資源",
+ "nextSteps": "後續步驟",
+ "tipsAndLearnMore": "提示與深入了解",
+ "notebook": "筆記本",
+ "needHelp": "是否需要協助?"
+ },
+ "top3Items": {
+ "sql": {
+ "advancedModeling": {
+ "title": "進階模型化模式",
+ "description": "學習進階策略以最佳化您的資料庫效能。"
+ },
+ "partitioning": {
+ "title": "資料分割的最佳做法",
+ "description": "學習套用資料模型與資料分割策略。"
+ },
+ "resourcePlanning": {
+ "title": "規劃您的資源要求",
+ "description": "認識不同的設定選項。"
+ }
+ },
+ "mongo": {
+ "whatIsMongo": {
+ "title": "什麼是 MongoDB API?",
+ "description": "了解 Azure Cosmos DB for MongoDB 及其功能。"
+ },
+ "features": {
+ "title": "功能與語法",
+ "description": "探索優勢與功能"
+ },
+ "migrate": {
+ "title": "移轉您的資料",
+ "description": "移動資料前的預先移轉步驟"
+ }
+ },
+ "cassandra": {
+ "buildJavaApp": {
+ "title": "建置 Java 應用程式",
+ "description": "使用 SDK 建立 Java 應用程式。"
+ },
+ "partitioning": {
+ "title": "資料分割的最佳做法",
+ "description": "了解資料分割的運作方式。"
+ },
+ "requestUnits": {
+ "title": "要求單位 (RU)",
+ "description": "了解 RU 的費用。"
+ }
+ },
+ "gremlin": {
+ "dataModeling": {
+ "title": "資料模型化",
+ "description": "圖形資料模型化建議"
+ },
+ "partitioning": {
+ "title": "資料分割的最佳做法",
+ "description": "了解資料分割的運作方式"
+ },
+ "queryData": {
+ "title": "查詢資料",
+ "description": "正在使用 Gremlin 查詢資料"
+ }
+ },
+ "tables": {
+ "whatIsTable": {
+ "title": "什麼是 Table API?",
+ "description": "了解 Azure Cosmos DB for Table 及其功能"
+ },
+ "migrate": {
+ "title": "移轉您的資料",
+ "description": "深入了解如何移轉資料"
+ },
+ "faq": {
+ "title": "Azure Cosmos DB for Table 常見問題解答",
+ "description": "關於 Azure Cosmos DB for Table 的常見問題"
+ }
+ }
+ },
+ "learningResources": {
+ "shortcuts": {
+ "title": "[資料總管] 鍵盤快速鍵",
+ "description": "學習使用快捷鍵來瀏覽 [資料總管]。"
+ },
+ "liveTv": {
+ "title": "了解基礎知識",
+ "description": "觀看 Azure Cosmos DB 直播節目,了解入門與操作教學影片。"
+ },
+ "sql": {
+ "sdk": {
+ "title": "開始使用 SDK",
+ "description": "深入了解 Azure Cosmos DB SDK。"
+ },
+ "migrate": {
+ "title": "移轉您的資料",
+ "description": "使用 Azure 服務與開源解決方案來移轉資料。"
+ }
+ },
+ "mongo": {
+ "nodejs": {
+ "title": "使用 Node.js 建置應用程式",
+ "description": "建立 Node.js 應用程式。"
+ },
+ "gettingStarted": {
+ "title": "使用者入門指南",
+ "description": "學習基礎知識,以開始使用。"
+ }
+ },
+ "cassandra": {
+ "createContainer": {
+ "title": "建立容器",
+ "description": "了解建立容器的選項。"
+ },
+ "throughput": {
+ "title": "佈建輸送量",
+ "description": "了解如何設定輸送量。"
+ }
+ },
+ "gremlin": {
+ "getStarted": {
+ "title": "開始使用 ",
+ "description": "使用 Gremlin 控制台建立、查詢及進行遍歷作業"
+ },
+ "importData": {
+ "title": "匯入圖形資料",
+ "description": "使用 BulkExecutor 學習批次資料攝取"
+ }
+ },
+ "tables": {
+ "dotnet": {
+ "title": "建置 .NET 應用程式",
+ "description": "如何從 .NET 應用程式存取 Azure Cosmos DB for Table。"
+ },
+ "java": {
+ "title": "建置 Java 應用程式",
+ "description": "使用 Java SDK 建立 Azure Cosmos DB for Table 應用程式 "
+ }
+ }
+ },
+ "nextStepItems": {
+ "postgres": {
+ "dataModeling": "資料模型化",
+ "distributionColumn": "如何選擇分佈欄位",
+ "buildApps": "使用 Python/Java/Django 建置應用程式"
+ },
+ "vcoreMongo": {
+ "migrateData": "移轉資料",
+ "vectorSearch": "使用向量搜尋建置 AI 應用程式",
+ "buildApps": "使用 Node.js 建置應用程式"
+ }
+ },
+ "learnMoreItems": {
+ "postgres": {
+ "performanceTuning": "效能微調",
+ "diagnosticQueries": "實用診斷查詢",
+ "sqlReference": "分散式 SQL 參考"
+ },
+ "vcoreMongo": {
+ "vectorSearch": "向量搜尋",
+ "textIndexing": "文字索引",
+ "troubleshoot": "疑難排解常見問題"
+ }
+ },
+ "fabric": {
+ "buildTitle": "建立資料庫",
+ "useTitle": "使用您的資料庫",
+ "newContainer": {
+ "title": "新容器",
+ "description": "建立目的地容器以儲存您的資料"
+ },
+ "sampleData": {
+ "title": "範例資料",
+ "description": "在資料庫中載入範例資料"
+ },
+ "sampleVectorData": {
+ "title": "範例向量資料",
+ "description": "以 text-embedding-ada-002 載入範例向量資料"
+ },
+ "appDevelopment": {
+ "title": "應用程式開發",
+ "description": "從這裡開始,使用 SDK 建置您的應用程式"
+ },
+ "sampleGallery": {
+ "title": "範例圖庫",
+ "description": "取得真實世界的端對端範例"
+ }
+ },
+ "sampleDataDialog": {
+ "title": "範例資料",
+ "startButton": "開始",
+ "createPrompt": "建立容器「{{containerName}}」並匯入範例資料至其中。這可能需要幾分鐘的時間。",
+ "creatingContainer": "正在建立容器「{{containerName}}」...",
+ "importingData": "正在將資料匯入「{{containerName}}」...",
+ "success": "已成功使用範例資料建立「{{containerName}}」。",
+ "errorContainerExists": "資料庫「{{databaseName}}」中的容器「{{containerName}}」已存在。請刪除後重試。",
+ "errorCreateContainer": "無法建立容器: {{error}}",
+ "errorImportData": "無法匯入資料: {{error}}"
+ }
+ },
+ "contextMenu": {
+ "newContainer": "新增 {{containerName}}",
+ "restoreContainer": "還原 {{containerName}}",
+ "deleteDatabase": "刪除 {{databaseName}}",
+ "deleteContainer": "刪除 {{containerName}}",
+ "newSqlQuery": "新增 SQL 查詢",
+ "newQuery": "新增查詢",
+ "openMongoShell": "開啟 Mongo 殼層",
+ "newShell": "新增殼層",
+ "openCassandraShell": "開啟 Cassandra 殼層",
+ "newStoredProcedure": "新增預存程序",
+ "newUdf": "新增 UDF",
+ "newTrigger": "新增觸發程序",
+ "deleteStoredProcedure": "刪除預存程序",
+ "deleteTrigger": "刪除觸發程序",
+ "deleteUdf": "刪除使用者定義的函式"
+ },
+ "tabs": {
+ "documents": {
+ "newItem": "新增項目",
+ "newDocument": "新增文件",
+ "uploadItem": "上傳項目",
+ "applyFilter": "套用篩選",
+ "unsavedChanges": "未儲存的變更",
+ "unsavedChangesMessage": "您未儲存的變更都會遺失。是否要繼續?",
+ "createDocumentFailed": "建立文件失敗",
+ "updateDocumentFailed": "更新文件失敗",
+ "documentDeleted": "已成功刪除文件。",
+ "deleteDocumentDialogTitle": "刪除文件",
+ "deleteDocumentsDialogTitle": "刪除文件",
+ "throttlingError": "由於速率限制錯誤,部分文件無法刪除。請稍後再試。若要在未來避免此情況,請考慮增加容器或資料庫上的輸送量。",
+ "deleteFailed": "刪除文件失敗 ({{error}})",
+ "missingShardProperty": "文件缺少分區屬性: {{partitionKeyProperty}}",
+ "refreshGridFailed": "重新整理文件方格失敗",
+ "confirmDelete": "確定要刪除 {{documentName}}?",
+ "confirmDeleteTitle": "確認刪除",
+ "selectedItems": "選取的 {{count}} 個項目",
+ "selectedItem": "選取的項目",
+ "selectedDocuments": "選取的 {{count}} 個文件",
+ "selectedDocument": "選取的文件",
+ "deleteDocumentFailedLog": "無法刪除文件 {{documentId}},出現狀態代碼 {{statusCode}}",
+ "deleteSuccessLog": "已成功刪除 {{count}} 個文件",
+ "deleteThrottledLog": "由於「要求太大」(429) 錯誤,無法刪除 {{count}} 個文件。正在重試...",
+ "missingShardKeyLog": "無法儲存新文件: 未定義文件分區金鑰",
+ "filterTooltip": "輸入查詢述詞,或從清單中選擇一個。",
+ "loadMore": "載入更多",
+ "documentEditor": "文件編輯器",
+ "savedFilters": "儲存的篩選",
+ "defaultFilters": "預設篩選",
+ "abort": "中止",
+ "deletingDocuments": "正在刪除 {{count}} 個文件",
+ "deletedDocumentsSuccess": "已成功刪除 {{count}} 個文件。",
+ "deleteAborted": "刪除文件已中止。",
+ "failedToDeleteDocuments": "無法刪除 {{count}} 個文件。",
+ "requestTooLargeBase": "由於「要求太大」例外狀況 (429),部分刪除要求失敗",
+ "retriedSuccessfully": "但已成功重試。",
+ "retryingNow": "正在重試。",
+ "increaseThroughputTip": "若要在未來避免此情況,請考慮增加容器或資料庫上的輸送量。",
+ "numberOfSelectedDocuments": "選取的文件數目: {{count}}",
+ "mongoFilterPlaceholder": "輸入查詢述詞 (例如 {\"id\":\"foo\"}),或從下拉式清單中選擇一個,或保留空白以查詢所有文件。",
+ "sqlFilterPlaceholder": "輸入查詢述詞 (例如 WHERE c.id=\"1\"),或從下拉式清單中選擇一個,或保留空白以查詢所有文件。",
+ "error": "錯誤",
+ "warning": "警告"
+ },
+ "query": {
+ "executeQuery": "執行查詢",
+ "executeSelection": "執行選取範圍",
+ "saveQuery": "儲存查詢",
+ "downloadQuery": "下載查詢",
+ "cancelQuery": "取消查詢",
+ "openSavedQueries": "開啟已儲存的查詢",
+ "vertical": "垂直",
+ "horizontal": "水平",
+ "view": "檢視",
+ "editingQuery": "編輯查詢"
+ },
+ "storedProcedure": {
+ "id": "預存程序識別碼",
+ "idPlaceholder": "輸入新的預存程序識別碼",
+ "idAriaLabel": "預存程序識別碼",
+ "body": "預存程序主體",
+ "bodyAriaLabel": "預存程序主體",
+ "successfulExecution": "成功執行預存程序",
+ "resultAriaLabel": "執行預存程序結果",
+ "logsAriaLabel": "執行預存程序記錄",
+ "errors": "錯誤:",
+ "errorDetailsAriaLabel": "錯誤詳細資料連結",
+ "moreDetails": "其他詳細資料",
+ "consoleLogTab": "console.log"
+ },
+ "trigger": {
+ "id": "觸發程序識別碼",
+ "idPlaceholder": "輸入新的觸發程序識別碼",
+ "type": "觸發程序類型",
+ "operation": "觸發程序作業",
+ "body": "觸發程序主體",
+ "bodyAriaLabel": "觸發程序主體",
+ "pre": "之前",
+ "post": "張貼",
+ "all": "全部",
+ "operationCreate": "建立",
+ "operationDelete": "刪除",
+ "operationReplace": "取代"
+ },
+ "udf": {
+ "id": "使用者定義的函式識別碼",
+ "idPlaceholder": "輸入新的使用者定義函式識別碼",
+ "body": "使用者定義的函式主體",
+ "bodyAriaLabel": "使用者定義的函式主體"
+ },
+ "conflicts": {
+ "unsavedChanges": "未儲存的變更",
+ "changesWillBeLost": "變更將會遺失。是否要繼續?",
+ "resolveConflictFailed": "解決衝突失敗",
+ "deleteConflictFailed": "刪除衝突失敗",
+ "refreshGridFailed": "重新整理文件方格失敗"
+ },
+ "mongoShell": {
+ "title": "Mongo 殼層"
+ }
+ },
+ "panes": {
+ "deleteDatabase": {
+ "panelTitle": "刪除 {{databaseName}}",
+ "warningMessage": "警告!您即將進行的動作無法復原。繼續將會永久刪除此資源及其所有子資源。",
+ "confirmPrompt": "輸入 {{databaseName}} 識別碼 (名稱) 以確認",
+ "inputMismatch": "輸入 {{databaseName}} 名稱 \"{{input}}\" 與選取的 {{databaseName}} \"{{selectedId}}\" 不符",
+ "feedbackTitle": "協助我們改進 Azure Cosmos DB!",
+ "feedbackReason": "您刪除此 {{databaseName}} 的原因為何?"
+ },
+ "deleteCollection": {
+ "panelTitle": "刪除 {{collectionName}}",
+ "confirmPrompt": "輸入 {{collectionName}} 識別碼以確認",
+ "inputMismatch": "輸入識別碼 {{input}} 與選取的 {{selectedId}} 不符",
+ "feedbackTitle": "協助我們改進 Azure Cosmos DB!",
+ "feedbackReason": "您刪除此 {{collectionName}} 的原因為何?"
+ },
+ "addDatabase": {
+ "databaseLabel": "資料庫 {{suffix}}",
+ "databaseIdLabel": "資料庫識別碼",
+ "keyspaceIdLabel": "索引鍵空間識別碼",
+ "databaseIdPlaceholder": "輸入新的 {{databaseLabel}} 識別碼",
+ "databaseTooltip": "{{databaseLabel}} 是一或多個 {{collectionsLabel}} 的邏輯容器",
+ "shareThroughput": "跨 {{collectionsLabel}} 共用輸送量",
+ "shareThroughputTooltip": "{{databaseLabel}} 層級的已佈建輸送量將會跨 {{databaseLabel}} 內的所有 {{collectionsLabel}} 共用。",
+ "greaterThanError": "請為 Autopilot 輸送量輸入大於 {{minValue}} 的值",
+ "acknowledgeSpendError": "請認知估計的 {{period}} 支出。",
+ "acknowledgeSpendErrorMonthly": "請認知每月預估支出。",
+ "acknowledgeSpendErrorDaily": "請認知估計的每日支出。",
+ "provisionSharedThroughputTitle": "佈建共用輸送量",
+ "provisionThroughputLabel": "佈建輸送量"
+ },
+ "addCollection": {
+ "createNew": "新建",
+ "useExisting": "使用現有項目",
+ "databaseTooltip": "資料庫類似於命名空間。它是一組 {{collectionName}} 的管理單位。",
+ "shareThroughput": "跨 {{collectionName}} 共用輸送量",
+ "shareThroughputTooltip": "在資料庫層級所設定的輸送量,將會跨資料庫內的所有 {{collectionName}} 共用。",
+ "collectionIdLabel": "{{collectionName}} 識別碼",
+ "collectionIdTooltip": "{{collectionName}} 的唯一識別碼,並用於透過 REST 和所有 SDK 進行識別碼型路由。",
+ "collectionIdPlaceholder": "例如,{{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} 識別碼,範例 {{collectionName}}1",
+ "existingDatabaseAriaLabel": "選擇現有的 {{databaseName}} 識別碼",
+ "existingDatabasePlaceholder": "選擇現有的 {{databaseName}} 識別碼",
+ "indexing": "編製索引",
+ "turnOnIndexing": "開啟索引編製",
+ "automatic": "自動",
+ "turnOffIndexing": "關閉索引編製",
+ "off": "關閉",
+ "sharding": "分區化",
+ "shardingTooltip": "分區集合會將您的資料分割到多個複本集 (分區),以達到無限制的擴充性。分區集合需要選擇分區索引鍵 (欄位),以平均散發您的資料。",
+ "unsharded": "未分區",
+ "unshardedLabel": "未分區 (20 GB 限制)",
+ "sharded": "已分區",
+ "addPartitionKey": "新增階層式資料分割索引鍵",
+ "hierarchicalPartitionKeyInfo": "此功能可讓您使用最多三個層級的索引鍵來分割資料,以提供更好的資料散發。需要 .NET V3、Java V4 SDK 或預覽 JavaScript V3 SDK。",
+ "provisionDedicatedThroughput": "為此 {{collectionName}} 佈建專用輸送量",
+ "provisionDedicatedThroughputTooltip": "您可以選擇性地為已佈建輸送量的資料庫內的 {{collectionName}} 佈建專用的輸送量。此專用輸送量數量不會與資料庫中的其他 {{collectionNamePlural}} 共用,也不會計入您為資料庫所佈建的輸送量。除了您在資料庫層級佈建的輸送量數量之外,也將針對此輸送量計費。",
+ "uniqueKeysPlaceholderMongo": "以逗號分隔的路徑,例如 firstName,address.zipCode",
+ "uniqueKeysPlaceholderSql": "以逗號分隔的路徑,例如 /firstName,/address/zipCode",
+ "addUniqueKey": "新增唯一索引鍵",
+ "enableAnalyticalStore": "啟用分析存放區",
+ "disableAnalyticalStore": "停用分析存放區",
+ "on": "開啟",
+ "analyticalStoreSynapseLinkRequired": "建立分析存放區 {{collectionName}} 需要 Azure Synapse Link。為此 Cosmos DB 帳戶啟用 Synapse Link。",
+ "enable": "啟用",
+ "containerVectorPolicy": "容器向量原則",
+ "containerFullTextSearchPolicy": "容器全文搜尋原則",
+ "advanced": "進階",
+ "mongoIndexingTooltip": "預設會編製 _id 欄位的索引。建立所有欄位的萬用字元索引將最佳化查詢,並且建議用於開發。",
+ "createWildcardIndex": "在所有欄位上建立萬用字元索引",
+ "legacySdkCheckbox": "我的應用程式使用舊版 Cosmos .NET 或 Java SDK 版本 (.NET V1 或 Java V2)",
+ "legacySdkInfo": "為確保與舊版 SDK 的相容性,已建立的容器將使用舊版分割配置,其支援大小最多僅 101 個位元組的資料分割索引鍵值。如果啟用此功能,您將無法使用階層式資料分割索引鍵。",
+ "indexingOnInfo": "預設會對文件中的所有屬性編製索引,以獲得彈性且有效率的查詢。",
+ "indexingOffInfo": "索引編製將會關閉。如果您不需要執行查詢或只有索引鍵值作業,建議您使用。",
+ "indexingOffWarning": "藉由建立此容器並關閉索引編製,您將無法進行任何索引編製原則變更。索引變更只允許在具有索引編製原則的容器上執行。",
+ "acknowledgeSpendErrorMonthly": "請認知每月預估支出。",
+ "acknowledgeSpendErrorDaily": "請認知估計的每日支出。",
+ "unshardedMaxRuError": "未分區的集合最多支援 10,000 個 RU",
+ "acknowledgeShareThroughputError": "請認知此專用輸送量的估計成本。",
+ "vectorPolicyError": "請修正容器向量原則中的錯誤",
+ "fullTextSearchPolicyError": "請修正容器全文搜尋原則中的錯誤",
+ "addingSampleDataSet": "新增範例資料集",
+ "databaseFieldLabelName": "資料庫名稱",
+ "databaseFieldLabelId": "資料庫識別碼",
+ "newDatabaseIdPlaceholder": "輸入新資料庫識別碼",
+ "newDatabaseIdAriaLabel": "新資料庫識別碼,請輸入新的資料庫識別碼",
+ "createNewDatabaseAriaLabel": "建立新資料庫",
+ "useExistingDatabaseAriaLabel": "使用現有資料庫",
+ "chooseExistingDatabase": "選擇我現有資料庫",
+ "teachingBubble": {
+ "step1Headline": "建立範例資料庫",
+ "step1Body": "資料庫是容器的上層結構。您可以建立新的資料庫或使用現有資料庫。在本教學課程中,我們將建立一個名為 SampleDB 的新資料庫。",
+ "step1LearnMore": "深入了解資源。",
+ "step2Headline": "設定輸送量",
+ "step2Body": "Cosmos DB 建議在資料庫間共用輸送量。自動調整會根據設定的最大要求單位數 (RU/s) 提供彈性的輸送量。",
+ "step2LearnMore": "深入了解 RU/秒。",
+ "step3Headline": "正在命名容器",
+ "step3Body": "命名您的容器",
+ "step4Headline": "正在設定資料分割索引鍵",
+ "step4Body": "最後一步——您需要為集合定義資料分割索引鍵。此範例選擇了 /address。好的資料分割索引鍵應該具有廣泛的可能值範圍",
+ "step4CreateContainer": "建立容器",
+ "step5Headline": "正在建立範例容器",
+ "step5Body": "目前正在建立範例容器,並為您新增範例資料。大約需要 1 分鐘的時間。",
+ "step5BodyFollowUp": "範例容器建立完成後,請檢視您的範例資料集,並依照後續步驟操作",
+ "stepOfTotal": "步驟 {{current}} / {{total}}"
+ }
+ },
+ "addCollectionUtility": {
+ "shardKeyTooltip": "分區索引鍵 (欄位) 可用來將您的資料分割到多個複本集 (分區),以達到無限制的擴充性。選擇將平均散發您的資料的欄位非常重要。",
+ "partitionKeyTooltip": "使用 {{partitionKeyName}} 來自動跨資料分割散發資料,以獲得可擴縮性。選擇 JSON 文件中具有各種值範圍且平均散發要求數量的屬性。",
+ "partitionKeyTooltipSqlSuffix": " 針對小型大量讀取的工作負載或任何大小的大量寫入工作負載,識別碼通常是良好的選擇。",
+ "shardKeyLabel": "分區索引鍵",
+ "partitionKeyLabel": "資料分割索引鍵",
+ "shardKeyPlaceholder": "例如,categoryId",
+ "partitionKeyPlaceholderDefault": "例如,/address",
+ "partitionKeyPlaceholderFirst": "必要 - 第一個資料分割索引鍵,例如 /TenantId",
+ "partitionKeyPlaceholderSecond": "第二個資料分割索引鍵,例如 /UserId",
+ "partitionKeyPlaceholderThird": "第三個資料分割索引鍵,例如,/SessionId",
+ "partitionKeyPlaceholderGraph": "例如,/address/zipCode",
+ "uniqueKeysTooltip": "唯一索引鍵可讓開發人員新增一層資料完整性至其資料庫。在建立容器時建立唯一的索引鍵原則,可確保每個資料分割索引鍵一或多個值的唯一性。",
+ "uniqueKeysLabel": "唯一索引鍵",
+ "analyticalStoreLabel": "分析存放區",
+ "analyticalStoreTooltip": "啟用分析存放區功能,以對作業資料執行接近即時的分析,而不會影響交易工作負載的效能。",
+ "analyticalStoreDescription": "啟用分析存放區功能,以對作業資料執行接近即時的分析,而不會影響交易工作負載的效能。",
+ "vectorPolicyTooltip": "描述資料中包含向量的任何屬性,以便可供相似性查詢使用。"
+ },
+ "settings": {
+ "pageOptions": "頁面選項",
+ "pageOptionsDescription": "選擇 [自訂] 以指定要顯示的查詢結果的固定數量,或選擇選擇 [無限制],以每頁顯示盡可能多的查詢結果。",
+ "queryResultsPerPage": "每個頁面查詢結果",
+ "queryResultsPerPageTooltip": "輸入每個頁面應顯示的查詢結果數目。",
+ "customQueryItemsPerPage": "自訂每個頁面的查詢項目",
+ "custom": "自訂",
+ "unlimited": "無限制",
+ "entraIdRbac": "啟用 Entra ID RBAC",
+ "entraIdRbacDescription": "選擇 [自動] 以自動啟用 Entra ID RBAC。True/False 可強制啟用/停用 Entra ID RBAC。",
+ "true": "True",
+ "false": "False",
+ "regionSelection": "區域選取項目",
+ "regionSelectionDescription": "變更 Cosmos 用戶端用來存取帳戶的區域。",
+ "selectRegion": "選取區域",
+ "selectRegionTooltip": "變更用來執行用戶端作業的帳戶端點。",
+ "globalDefault": "全域 (預設值)",
+ "readWrite": "(讀取/寫入)",
+ "read": "(讀取)",
+ "queryTimeout": "查詢逾時",
+ "queryTimeoutDescription": "當查詢達到指定的時間限制時,除非已啟用自動取消,否則會顯示包含取消查詢選項的快顯視窗。",
+ "enableQueryTimeout": "啟用查詢逾時",
+ "queryTimeoutMs": "查詢逾時 (毫秒)",
+ "automaticallyCancelQuery": "逾時後自動取消查詢",
+ "ruLimit": "RU 限制",
+ "ruLimitDescription": "如果查詢超過設定的 RU 限制,查詢將會中止。",
+ "enableRuLimit": "啟用 RU 限制",
+ "ruLimitLabel": "RU 限制 (RU)",
+ "defaultQueryResults": "預設查詢結果檢視",
+ "defaultQueryResultsDescription": "選取顯示查詢結果時要使用的預設檢視。",
+ "retrySettings": "重試設定",
+ "retrySettingsDescription": "重試在 CosmosDB 查詢期間,與節流要求相關聯的原則。",
+ "maxRetryAttempts": "最大重試嘗試次數",
+ "maxRetryAttemptsTooltip": "要針對要求執行的重試次數上限。預設值 9。",
+ "fixedRetryInterval": "修正重試間隔 (毫秒)",
+ "fixedRetryIntervalTooltip": "已修正要在每個重試之間等候的重試間隔 (以毫秒為單位),正在忽略隨著回應傳回的 retryAfter。預設值為 0 毫秒。",
+ "maxWaitTime": "最長等候時間",
+ "maxWaitTimeTooltip": "重試時等候要求的等候時間上限 (秒)。預設值 30 秒。",
+ "enableContainerPagination": "啟用容器分頁",
+ "enableContainerPaginationDescription": "一次載入 50 個容器。目前容器未以英數字元順序提取。",
+ "enableCrossPartitionQuery": "啟用跨資料分割查詢",
+ "enableCrossPartitionQueryDescription": "執行查詢時傳送多個要求。如果查詢範圍未限制在單一資料分割索引鍵值,則需要多個要求。",
+ "maxDegreeOfParallelism": "平行處理原則的最大程度",
+ "maxDegreeOfParallelismDescription": "取得或設定在平行查詢執行期間,並行作業執行用戶端的數目。正數的屬性值會將並行作業數目限制為設定值。如果設定為小於 0,系統會自動決定要執行的並行作業數目。",
+ "maxDegreeOfParallelismQuery": "查詢至平行處理原則的最大程度。",
+ "priorityLevel": "優先順序層級",
+ "priorityLevelDescription": "使用以優先順序為基礎的執行時,從資料總管設定資料平面要求的優先順序等級。如果選取 [無],資料總管將不會指定優先順序等級,且會使用伺服器端的預設優先順序等級。",
+ "displayGremlinQueryResults": "將 Gremlin 查詢結果顯示為:",
+ "displayGremlinQueryResultsDescription": "選取 [圖表] 以將查詢結果自動視覺化為圖表,或選取 [JSON] 以 JSON 形式顯示結果。",
+ "graph": "圖表",
+ "json": "JSON",
+ "graphAutoVisualization": "圖表自動視覺效果",
+ "enableSampleDatabase": "啟用範例資料庫",
+ "enableSampleDatabaseDescription": "這是包含綜合產品資料的範例資料庫和集合,您可以使用 NoSQL 查詢來探索。這會在資料總管 UI 中顯示為另一個資料庫,且由 Microsoft 建立並維護,您無需付費。",
+ "enableSampleDbAriaLabel": "啟用用於查詢探索的範例資料庫",
+ "guidRepresentation": "GUID 表示法",
+ "guidRepresentationDescription": "MongoDB 中的 GuidRepresentation 是指儲存在 BSON 文件中時,全域唯一識別碼 (GUID) 的序列化與還原序列化方式。這將套用至所有文件作業。",
+ "advancedSettings": "進階設定",
+ "ignorePartitionKey": "在文件更新時忽略資料分割索引鍵",
+ "ignorePartitionKeyTooltip": "如果勾選,將不會在更新作業期間使用資料分割索引鍵值來尋找文件。只有在文件更新由於異常的資料分割索引鍵而失敗時,才使用此功能。",
+ "clearHistory": "清除歷程記錄",
+ "clearHistoryConfirm": "確定要繼續嗎?",
+ "clearHistoryDescription": "此動作會清除此瀏覽器中此帳戶的所有自訂項目,包括:",
+ "clearHistoryTabLayout": "重設您自訂的索引標籤版面配置,包括分隔器位置",
+ "clearHistoryTableColumns": "清除資料表資料行喜好設定,包括任何自訂資料行",
+ "clearHistoryFilters": "清除您的篩選歷程記錄",
+ "clearHistoryRegion": "將區域選取範圍重設為全域",
+ "increaseValueBy1000": "將值增加 1000",
+ "decreaseValueBy1000": "將值減少 1000",
+ "none": "無",
+ "low": "低",
+ "high": "高",
+ "automatic": "自動",
+ "enhancedQueryControl": "增強的查詢控制",
+ "enableQueryControl": "啟用查詢控制",
+ "explorerVersion": "瀏覽器版本",
+ "accountId": "帳戶識別碼",
+ "sessionId": "工作階段識別碼",
+ "popupsDisabledError": "由於瀏覽器中停用快顯視窗,我們無法為此帳戶建立授權。\n請為此網站啟用快顯視窗,然後按一下 [Entra ID 的登入] 按鈕",
+ "failedToAcquireTokenError": "無法自動取得授權權杖。請按一下 [Entra ID 的登入] 按鈕,以啟用 Entra ID RBAC 作業"
+ },
+ "saveQuery": {
+ "panelTitle": "儲存查詢",
+ "setupCostMessage": "為了符合規範,我們會將查詢儲存在 Azure Cosmos 帳戶的容器中,在名為「{{databaseName}}」的個別資料庫中。若要繼續,我們需要在您的帳戶中建立容器,估計每天的額外費用為 $0.77 美元。",
+ "completeSetup": "完成設定",
+ "noQueryNameError": "未指定查詢名稱",
+ "invalidQueryContentError": "指定的查詢內容無效",
+ "failedToSaveQueryError": "無法儲存查詢 {{queryName}}",
+ "failedToSetupContainerError": "無法為已儲存的查詢設定容器",
+ "accountNotSetupError": "無法儲存查詢: 帳戶未設定為儲存查詢",
+ "name": "名稱"
+ },
+ "loadQuery": {
+ "noFileSpecifiedError": "未指定檔案",
+ "failedToLoadQueryError": "無法載入查詢",
+ "failedToLoadQueryFromFileError": "無法從檔案 {{fileName}} 載入查詢",
+ "selectFilesToOpen": "選取查詢文件",
+ "browseFiles": "瀏覽"
+ },
+ "executeStoredProcedure": {
+ "enterInputParameters": "輸入輸入參數 (如果有)",
+ "key": "索引鍵",
+ "param": "參數",
+ "partitionKeyValue": "資料分割索引鍵值",
+ "value": "值",
+ "addNewParam": "新增參數",
+ "addParam": "新增參數",
+ "deleteParam": "刪除參數",
+ "invalidParamError": "指定的參數無效: {{invalidParam}}",
+ "invalidParamConsoleError": "指定的參數無效: {{invalidParam}} 不是有效的常值",
+ "stringType": "字串",
+ "customType": "自訂"
+ },
+ "uploadItems": {
+ "noFilesSpecifiedError": "未指定任何檔案。請至少輸入一個檔案。",
+ "selectJsonFiles": "選取 JSON 檔案",
+ "selectJsonFilesTooltip": "選取一或多個要上傳的 JSON 檔案。每個檔案可以包含單一 JSON 文件或 JSON 文件的陣列。個別上傳作業中所有檔案的合併大小必須小於 2 MB。您可以針對較大的資料集執行多個上傳作業。",
+ "fileNameColumn": "檔案名稱",
+ "statusColumn": "狀態",
+ "uploadStatus": "{{numSucceeded}} 個已建立,{{numThrottled}} 個已節流,{{numFailed}} 個錯誤",
+ "uploadedFiles": "上傳的檔案"
+ },
+ "copyNotebook": {
+ "copyFailedError": "無法將 {{name}} 複製到 {{destination}}",
+ "uploadFailedError": "無法上傳 {{name}}",
+ "location": "位置",
+ "locationAriaLabel": "位置",
+ "selectLocation": "選取要複製的筆記本位置",
+ "name": "名稱"
+ },
+ "publishNotebook": {
+ "publishFailedError": "無法將 {{notebookName}} 發佈至資源庫",
+ "publishDescription": "發佈後,此筆記本會出現在 Azure Cosmos DB 筆記本公用資源庫中。發佈前,請確定已移除任何敏感性資料或輸出。",
+ "publishPrompt": "您是否要發佈並共用 \"{{name}}\" 至資源庫?",
+ "coverImage": "封面影像",
+ "coverImageUrl": "封面影像 URL",
+ "name": "名稱",
+ "description": "描述",
+ "tags": "標籤",
+ "tagsPlaceholder": "選用標記 1,選用標記 2",
+ "preview": "預覽",
+ "urlType": "URL",
+ "customImage": "自訂映像",
+ "takeScreenshot": "擷取螢幕擷取畫面",
+ "useFirstDisplayOutput": "使用第一個顯示輸出",
+ "failedToCaptureOutput": "無法擷取第一個輸出",
+ "outputDoesNotExist": "任何儲存格的輸出都不存在。",
+ "failedToConvertError": "無法將 {{fileName}} 轉換為 base64 格式",
+ "failedToUploadError": "無法上傳 {{fileName}}"
+ },
+ "changePartitionKey": {
+ "failedToStartError": "無法啟動資料傳輸工作",
+ "suboptimalPartitionKeyError": "警告: 系統偵測到您的集合可能在使用次佳的資料分割索引鍵",
+ "description": "變更容器的資料分割索引鍵時,您將必須使用正確的資料分割索引鍵來建立目的地容器。您也可以選取現有的目的地容器。",
+ "sourceContainerId": "來源 {{collectionName}} 識別碼",
+ "destinationContainerId": "目的地 {{collectionName}} 識別碼",
+ "collectionIdTooltip": "{{collectionName}} 的唯一識別碼,並用於透過 REST 和所有 SDK 進行識別碼型路由。",
+ "collectionIdPlaceholder": "例如,{{collectionName}}1",
+ "collectionIdAriaLabel": "{{collectionName}} 識別碼,範例 {{collectionName}}1",
+ "existingContainers": "現有的容器",
+ "partitionKeyWarning": "目的地容器必不得已存在。資料總管將為您建立新的目的地容器。"
+ },
+ "cassandraAddCollection": {
+ "keyspaceLabel": "索引鍵空間名稱",
+ "keyspaceTooltip": "選取現有的索引鍵空間或輸入新的索引鍵空間識別碼。",
+ "tableIdLabel": "輸入 CQL 命令以建立資料表。",
+ "enterTableId": "輸入資料表識別碼",
+ "tableSchemaAriaLabel": "資料表結構描述",
+ "provisionDedicatedThroughput": "為此資料表佈建專用輸送量",
+ "provisionDedicatedThroughputTooltip": "您可以選擇性地為已佈建輸送量的索引鍵空間內的資料表佈建專用輸送量。此專用輸送量數量不會與索引鍵空間中的其他資料表共用,也不會計入您為索引鍵空間所佈建的輸送量。除了您在索引鍵空間層級佈建的輸送量數量之外,也將針對此輸送量計費。"
+ },
+ "tables": {
+ "addProperty": "新增屬性",
+ "addRow": "新增資料列",
+ "addEntity": "新增實體",
+ "back": "返回",
+ "nullFieldsWarning": "警告: 將不會顯示 Null 欄位供編輯。",
+ "propertyEmptyError": "{{property}} 不得為空白。請輸入 {{property}} 的值",
+ "whitespaceError": "{{property}} 不能有空格。請輸入 {{property}} 的值 (不含空格)",
+ "propertyTypeEmptyError": "屬性類型不可為空白。請從屬性 {{property}} 的下拉式清單中選擇類型"
+ },
+ "tableQuerySelect": {
+ "selectColumns": "請選取您要查詢的資料行。",
+ "availableColumns": "可用的資料行"
+ },
+ "tableColumnSelection": {
+ "selectColumns": "選取要在您的容器的項目檢視中顯示的資料行。",
+ "searchFields": "搜尋欄位",
+ "reset": "重設",
+ "partitionKeySuffix": " (資料分割索引鍵)"
+ },
+ "newVertex": {
+ "addProperty": "新增屬性"
+ },
+ "addGlobalSecondaryIndex": {
+ "globalSecondaryIndexId": "全域次要索引容器識別碼",
+ "globalSecondaryIndexIdPlaceholder": "例如,indexbyEmailId",
+ "projectionQuery": "投射查詢",
+ "projectionQueryPlaceholder": "SELECT c.email, c.accountId FROM c",
+ "projectionQueryTooltip": "深入了解如何定義全域次要索引。",
+ "disabledTitle": "已在建立全域次要索引。請等候它完成,再建立新的工作。"
+ },
+ "stringInput": {
+ "inputMismatchError": "輸入 {{input}} 與選取的 {{selectedId}} 不符"
+ },
+ "panelInfo": {
+ "information": "資訊",
+ "moreDetails": "其他詳細資料"
+ }
+ },
+ "controls": {
+ "settings": {
+ "tabTitles": {
+ "scale": "縮放",
+ "conflictResolution": "衝突解決",
+ "settings": "設定",
+ "indexingPolicy": "編製索引原則",
+ "partitionKeys": "資料分割索引鍵",
+ "partitionKeysPreview": "磁碟分割索引鍵 (預覽)",
+ "computedProperties": "計算屬性",
+ "containerPolicies": "容器原則",
+ "throughputBuckets": "輸送量貯體",
+ "globalSecondaryIndexPreview": "全域次要索引 (預覽)",
+ "maskingPolicyPreview": "遮罩原則 (預覽)"
+ },
+ "mongoNotifications": {
+ "selectTypeWarning": "請選取每個索引的類型。",
+ "enterFieldNameError": "請輸入欄位名稱。",
+ "wildcardPathError": "欄位名稱中不存在萬用字元路徑。使用以下類似模式 "
+ },
+ "partitionKey": {
+ "shardKey": "分區索引鍵",
+ "partitionKey": "資料分割索引鍵",
+ "shardKeyTooltip": "分區索引鍵 (欄位) 可用來將您的資料分割到多個複本集 (分區),以達到無限制的擴充性。選擇將平均散發您的資料的欄位非常重要。",
+ "partitionKeyTooltip": "用於自動跨資料分割散發資料,以獲得可擴縮性。選擇 JSON 文件中具有各種值範圍且平均散發要求數量的屬性。",
+ "sqlPartitionKeyTooltipSuffix": " 針對小型大量讀取的工作負載或任何大小的大量寫入工作負載,識別碼通常是良好的選擇。",
+ "partitionKeySubtext": "對於小型工作負載,項目識別碼是資料分割索引鍵的合適選擇。",
+ "mongoPlaceholder": "例如,categoryId",
+ "gremlinPlaceholder": "例如,/address",
+ "sqlFirstPartitionKey": "必要 - 第一個資料分割索引鍵,例如 /TenantId",
+ "sqlSecondPartitionKey": "第二個資料分割索引鍵,例如 /UserId",
+ "sqlThirdPartitionKey": "第三個資料分割索引鍵,例如,/SessionId",
+ "defaultPlaceholder": "例如,/address/zipCode"
+ },
+ "costEstimate": {
+ "title": "成本預估*",
+ "howWeCalculate": "計算方式",
+ "updatedCostPerMonth": "每月更新成本",
+ "currentCostPerMonth": "目前每月成本",
+ "perRu": "/RU",
+ "perHour": "/小時",
+ "perDay": "/天",
+ "perMonth": "/月"
+ },
+ "throughput": {
+ "manualToAutoscaleDisclaimer": "系統會根據目前的手動輸送量設定和您的資源儲存體,決定起始自動調整每秒 RU 上限。啟用自動調整之後,您可以變更每秒 RU 上限。",
+ "ttlWarningText": "系統會根據您提供的 TTL 值 (秒) 自動刪除項目,而不需要用戶端應用程式明確發出的刪除作業。如需詳細資訊,請參閱:",
+ "ttlWarningLinkText": "Azure Cosmos DB 中的存留時間 (TTL)",
+ "unsavedIndexingPolicy": "編製索引原則",
+ "unsavedDataMaskingPolicy": "資料遮罩原則",
+ "unsavedComputedProperties": "計算屬性",
+ "unsavedEditorWarningPrefix": "您尚未儲存最近所做的變更:",
+ "unsavedEditorWarningSuffix": ".請按一下 [儲存] 以確認變更。",
+ "updateDelayedApplyWarning": "您即將要求增加超出預先配置容量的輸送量。此作業需要一些時間才能完成。",
+ "scalingUpDelayMessage": "擴大需要 4-6 小時,因為它超過 Azure Cosmos DB 可根據實體磁碟分割數目前立即支援的數量。您可立即將輸送量增加至 {{instantMaximumThroughput}},或繼續處理此值,然後等到擴大完成。",
+ "exceedPreAllocatedMessage": "您增加輸送量的要求超過預先配置的容量,這可能需要比預期更久的時間。您有三個選項可供選擇來繼續執行:",
+ "instantScaleOption": "您可以立即擴大為每秒 {{instantMaximumThroughput}} RU。",
+ "asyncScaleOption": "您可以在 4-6 小時內,以非同步方式擴大至低於每秒 RU {{maximumThroughput}} 的任何值。",
+ "quotaMaxOption": "您目前的配額上限為每秒 {{maximumThroughput}} RU。若要超過此限制,您必須要求增加配額,而 Azure Cosmos DB 小組將會審查。",
+ "belowMinimumMessage": "您無法將輸送量降低至低於您目前的每秒 {{minimum}} RU 下限。如需此限制的詳細資訊,請參閱我們的服務報價文件。",
+ "saveThroughputWarning": "更新輸送量設定時,您的帳單將會受到影響。請先檢閱下方已更新的成本預估,再儲存變更",
+ "currentAutoscaleThroughput": "目前的自動調整輸送量:",
+ "targetAutoscaleThroughput": "目標自動調整輸送量:",
+ "currentManualThroughput": "目前手動輸送量:",
+ "targetManualThroughput": "目標手動輸送量:",
+ "applyDelayedMessage": "已順利提交增加輸送量的要求。此作業需要 1-3 個工作天才能完成。檢視通知中的最新狀態。",
+ "databaseLabel": "資料庫:",
+ "containerLabel": "容器:",
+ "applyShortDelayMessage": "增加輸送量的要求目前正在處理中。此作業需要一些時間才能完成。",
+ "applyLongDelayMessage": "增加輸送量的要求目前正在處理中。此作業需要 1-3 個工作天才能完成。檢視通知中的最新狀態。",
+ "throughputCapError": "您的帳戶目前設定的總輸送量限制為每秒 {{throughputCap}} RU。無法執行此更新,因為它會將總輸送量增加至每秒 {{newTotalThroughput}} RU。請變更成本管理中的總輸送量限制。",
+ "throughputIncrementError": "輸送量值必須以 1000 遞增"
+ },
+ "conflictResolution": {
+ "lwwDefault": "最後寫入者優先 (預設值)",
+ "customMergeProcedure": "合併程序 (自訂)",
+ "mode": "模式",
+ "conflictResolverProperty": "衝突解析程式屬性",
+ "storedProcedure": "預存程序",
+ "lwwTooltip": "取得或設定文件中用於最後寫入者優先 (LWW) 型衝突解決方案之整數屬性的名稱。根據預設,系統會使用系統定義的時間戳記屬性 _ts,決定文件衝突版本的優先者。如果您想要覆寫預設時間戳記型衝突解決方案,請指定您自己的整數屬性。",
+ "customTooltip": "取得或設定預存程序 (又稱為合併程序) 的名稱以便解決衝突。您可以撰寫應用程式定義的邏輯,以判斷文件衝突版本的優先者。預存程序將在伺服器端以交易方式執行一次。如果您未提供預存程序,衝突會填入",
+ "customTooltipConflictsFeed": " 衝突摘要",
+ "customTooltipSuffix": ".您隨時都可以更新/重新註冊預存程序。"
+ },
+ "changeFeed": {
+ "label": "變更摘要記錄保留原則",
+ "tooltip": "啟用變更摘要記錄保留原則,依預設保留容器中項目的過去 10 分鐘歷程記錄。為了支援這項功能,此容器的要求單位 (RU) 費用將會針對寫入乘以 2 的係數。讀取不受影響。"
+ },
+ "mongoIndexing": {
+ "disclaimer": "對於依據多個屬性篩選的查詢,請建立多個單一欄位索引,而不是複合索引。",
+ "disclaimerCompoundIndexesLink": " 複合索引 ",
+ "disclaimerSuffix": "僅用於排序查詢結果。如果您需要新增複合索引,您可以使用 Mongo Shell 建立一個複合索引。",
+ "compoundNotSupported": "索引編輯器中尚不支援具有複合索引的集合。若要修改此集合的索引編製原則,請使用 Mongo Shell。",
+ "aadError": "若要使用索引編製原則編輯器,請登入",
+ "aadErrorLink": "Azure 入口網站。",
+ "refreshingProgress": "重新整理索引轉換進度",
+ "canMakeMoreChangesZero": "當目前的索引轉換完成後,您可以進行更多索引變更。",
+ "refreshToCheck": "重新整理以檢查是否已完成。",
+ "canMakeMoreChangesProgress": "當目前的索引轉換完成後,您可以進行更多索引變更。已完成 {{progress}}%。",
+ "refreshToCheckProgress": "重新整理以檢查進度。",
+ "definitionColumn": "定義",
+ "typeColumn": "類型",
+ "dropIndexColumn": "卸除索引",
+ "addIndexBackColumn": "重新新增索引",
+ "deleteIndexButton": "刪除索引按鈕",
+ "addBackIndexButton": "重新新增索引按鈕",
+ "currentIndexes": "目前的索引",
+ "indexesToBeDropped": "要捨棄的索引",
+ "indexFieldName": "索引欄位名稱",
+ "indexType": "索引類型",
+ "selectIndexType": "選取索引類型",
+ "undoButton": "復原按鈕"
+ },
+ "subSettings": {
+ "timeToLive": "存留時間",
+ "ttlOff": "關閉",
+ "ttlOnNoDefault": "開啟 (無預設)",
+ "ttlOn": "於",
+ "seconds": "秒",
+ "timeToLiveInSeconds": "存留時間 (秒)",
+ "analyticalStorageTtl": "分析儲存體存留時間",
+ "geospatialConfiguration": "地理空間設定",
+ "geography": "地理位置",
+ "geometry": "幾何",
+ "uniqueKeys": "唯一索引鍵",
+ "mongoTtlMessage": "若要啟用集合/文件的存留時間 (TTL),",
+ "mongoTtlLinkText": "建立 TTL 索引",
+ "partitionKeyTooltipTemplate": "此 {{partitionKeyName}} 用於將資料分散於多個磁碟分區,以獲得可擴縮性。\"{{partitionKeyValue}}\" 值決定文件的分割方法。",
+ "largePartitionKeyEnabled": "大型 {{partitionKeyName}} 已啟用。",
+ "hierarchicalPartitioned": "階層式分割容器。",
+ "nonHierarchicalPartitioned": "非階層式分割容器。"
+ },
+ "scale": {
+ "freeTierInfo": "使用免費層時,您將免費取得此帳戶中第一個每秒 {{ru}} RU和 {{storage}} GB 的儲存體。若要讓您的帳戶保持免費,請將帳戶中所有資源的每秒 RU 總計保留為每秒 {{ru}} RU。",
+ "freeTierLearnMore": "深入了解。",
+ "throughputRuS": "輸送量 (每秒 RU)",
+ "autoScaleCustomSettings": "您的帳戶有自訂設定可防止在容器層級設定輸送量。請與您的 Cosmos DB 工程小組連絡人合作以進行變更。",
+ "keyspaceSharedThroughput": "此資料表共用輸送量設定於索引鍵空間",
+ "throughputRangeLabel": "輸送量 (每秒 {{min}} - {{max}} RU)",
+ "unlimited": "無限制"
+ },
+ "partitionKeyEditor": {
+ "changePartitionKey": "變更 {{partitionKeyName}}",
+ "currentPartitionKey": "目前的 {{partitionKeyName}}",
+ "partitioning": "資料分割",
+ "hierarchical": "階層式",
+ "nonHierarchical": "非階層式",
+ "safeguardWarning": "若要保護要複製到新容器的資料完整性,請確保整個資料分割索引鍵變更處理期間,不會更新來源容器。",
+ "changeDescription": "若要變更資料分割索引鍵,必須建立新的目的地容器或選取現有的目的地容器。接著,資料會複製到目的地容器。",
+ "changeButton": "變更",
+ "changeJob": "{{partitionKeyName}} 變更作業",
+ "cancelButton": "取消",
+ "documentsProcessed": "已處理 {{totalCount}} 份文件中的 {{processedCount}} 份"
+ },
+ "computedProperties": {
+ "ariaLabel": "計算屬性",
+ "learnMorePrefix": "關於如何定義計算屬性,以及如何使用它們。"
+ },
+ "indexingPolicy": {
+ "ariaLabel": "編製索引原則"
+ },
+ "dataMasking": {
+ "ariaLabel": "資料遮罩原則",
+ "validationFailed": "驗證失敗:",
+ "includedPathsRequired": "需要 includedPaths",
+ "includedPathsMustBeArray": "includedPaths 必須是陣列",
+ "excludedPathsMustBeArray": "如果提供,excludedPaths 必須是陣列"
+ },
+ "containerPolicy": {
+ "vectorPolicy": "向量原則",
+ "fullTextPolicy": "全文檢索原則",
+ "createFullTextPolicy": "建立新的全文檢索搜索原則"
+ },
+ "globalSecondaryIndex": {
+ "indexesDefined": "此容器已定義下列索引。",
+ "learnMoreSuffix": "關於如何定義全域次要索引,以及如何使用它們。",
+ "jsonAriaLabel": "全域次要索引 JSON",
+ "addIndex": "新增索引",
+ "settingsTitle": "全域次要索引設定",
+ "sourceContainer": "來源容器",
+ "indexDefinition": "全域次要索引定義"
+ },
+ "indexingPolicyRefresh": {
+ "refreshFailed": "重新整理索引轉換進度失敗"
+ },
+ "throughputInput": {
+ "autoscale": "自動縮放",
+ "manual": "手動",
+ "minimumRuS": "每秒 RU 下限",
+ "maximumRuS": "每秒 RU 上限",
+ "x10Equals": "x 10 =",
+ "storageCapacity": "儲存體容量",
+ "fixed": "已修正",
+ "unlimited": "無限制",
+ "instant": "立即",
+ "fourToSixHrs": "4-6 小時",
+ "autoscaleDescription": "根據使用量,您的 {{resourceType}} 輸送量將調整自",
+ "freeTierWarning": "如果您佈建超過每秒 {{ru}} RU 的手動輸送量,或資源調整超過自動調整的每秒 {{ru}} RU,則適用計費。",
+ "capacityCalculator": "預估您所需的每秒 RU",
+ "capacityCalculatorLink": " 容量計算機",
+ "fixedStorageNote": "使用具有固定儲存體容量的集合時,您最多可以設定每秒 10,000 RU。",
+ "min": "分鐘",
+ "max": "最大值"
+ },
+ "throughputBuckets": {
+ "label": "輸送量貯體",
+ "bucketLabel": "貯體 {{id}}",
+ "dataExplorerQueryBucket": " (資料總管查詢貯體)",
+ "active": "使用中",
+ "inactive": "非使用中"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Main.tsx b/src/Main.tsx
index f30ff9902..4b06d0c53 100644
--- a/src/Main.tsx
+++ b/src/Main.tsx
@@ -82,6 +82,32 @@ const useStyles = makeStyles({
backgroundColor: "var(--colorNeutralBackground1)",
color: "var(--colorNeutralForeground1)",
},
+ splashContainer: {
+ zIndex: 5,
+ position: "absolute",
+ left: 0,
+ top: 0,
+ width: "100%",
+ height: "100%",
+ backgroundColor: "var(--colorNeutralBackground1)",
+ opacity: "0.7",
+ },
+ splashContent: {
+ display: "flex",
+ flexDirection: "column",
+ height: "100%",
+ textAlign: "center",
+ justifyContent: "center",
+ },
+ splashTitle: {
+ fontSize: "13px",
+ color: "var(--colorNeutralForeground1)",
+ margin: "6px 6px 12px 6px",
+ },
+ splashText: {
+ marginTop: "12px",
+ color: "var(--colorNeutralForeground2)",
+ },
});
const App = (): JSX.Element => {
@@ -105,9 +131,12 @@ const App = (): JSX.Element => {
// Scenario-based health tracking: start ApplicationLoad and complete phases.
const { startScenario, completePhase } = useMetricScenario();
React.useEffect(() => {
- startScenario(MetricScenario.ApplicationLoad);
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
+ // Only start scenario after config is initialized to avoid race conditions
+ // with message handlers that depend on configContext.platform
+ if (config) {
+ startScenario(MetricScenario.ApplicationLoad);
+ }
+ }, [config, startScenario]);
React.useEffect(() => {
if (explorer) {
@@ -116,6 +145,9 @@ const App = (): JSX.Element => {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [explorer]);
+ // Track interactive phase for both ContainerCopyPanel and DivExplorer paths
+ useInteractive(MetricScenario.ApplicationLoad, !!config);
+
if (!explorer) {
return ;
}
@@ -128,6 +160,7 @@ const App = (): JSX.Element => {
<>
+
>
) : (
@@ -141,7 +174,6 @@ const App = (): JSX.Element => {
const DivExplorer: React.FC<{ explorer: Explorer }> = ({ explorer }) => {
const isCarouselOpen = useCarousel((state) => state.shouldOpen);
const isCopilotCarouselOpen = useCarousel((state) => state.showCopilotCarousel);
- useInteractive(MetricScenario.ApplicationLoad);
return (
-
-
+
+
-
+
Welcome to Azure Cosmos DB
-
+
Connecting...
diff --git a/src/Metrics/Constants.ts b/src/Metrics/Constants.ts
index 9592618a9..f6221e1d4 100644
--- a/src/Metrics/Constants.ts
+++ b/src/Metrics/Constants.ts
@@ -7,10 +7,39 @@ export enum MetricScenario {
DatabaseLoad = "DatabaseLoad",
}
+export interface WebVitals {
+ lcp?: number; // Largest Contentful Paint
+ inp?: number; // Interaction to Next Paint
+ cls?: number; // Cumulative Layout Shift
+ fcp?: number; // First Contentful Paint
+ ttfb?: number; // Time to First Byte
+}
+
+export interface PhaseTimings {
+ endTimeISO: string; // When the phase completed
+ durationMs: number; // Duration from scenario start to phase completion
+}
+
// Generic metric emission event describing scenario outcome.
export interface MetricEvent {
+ // === Existing required fields (unchanged) ===
readonly platform: Platform;
readonly api: ApiType;
readonly scenario: MetricScenario;
readonly healthy: boolean;
+
+ // === New optional fields ===
+ readonly durationMs?: number;
+ readonly timedOut?: boolean;
+ readonly documentHidden?: boolean;
+ readonly hasExpectedFailure?: boolean;
+
+ readonly completedPhases?: string[];
+ readonly failedPhases?: string[];
+ readonly phaseTimings?: Record
;
+
+ readonly startTimeISO?: string;
+ readonly endTimeISO?: string;
+
+ readonly vitals?: WebVitals;
}
diff --git a/src/Metrics/ErrorClassification.test.ts b/src/Metrics/ErrorClassification.test.ts
new file mode 100644
index 000000000..e2ab2610a
--- /dev/null
+++ b/src/Metrics/ErrorClassification.test.ts
@@ -0,0 +1,182 @@
+import { ARMError } from "../Utils/arm/request";
+import { isExpectedError } from "./ErrorClassification";
+
+describe("ErrorClassification", () => {
+ describe("isExpectedError", () => {
+ describe("ARMError with expected codes", () => {
+ it("returns true for AuthorizationFailed code", () => {
+ const error = new ARMError("Authorization failed");
+ error.code = "AuthorizationFailed";
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for Forbidden code", () => {
+ const error = new ARMError("Forbidden");
+ error.code = "Forbidden";
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for Unauthorized code", () => {
+ const error = new ARMError("Unauthorized");
+ error.code = "Unauthorized";
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for InvalidAuthenticationToken code", () => {
+ const error = new ARMError("Invalid token");
+ error.code = "InvalidAuthenticationToken";
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for ExpiredAuthenticationToken code", () => {
+ const error = new ARMError("Token expired");
+ error.code = "ExpiredAuthenticationToken";
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for numeric 401 code", () => {
+ const error = new ARMError("Unauthorized");
+ error.code = 401;
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for numeric 403 code", () => {
+ const error = new ARMError("Forbidden");
+ error.code = 403;
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns false for unexpected ARM error code", () => {
+ const error = new ARMError("Internal error");
+ error.code = "InternalServerError";
+ expect(isExpectedError(error)).toBe(false);
+ });
+
+ it("returns false for numeric 500 code", () => {
+ const error = new ARMError("Server error");
+ error.code = 500;
+ expect(isExpectedError(error)).toBe(false);
+ });
+ });
+
+ describe("MSAL AuthError with expected errorCodes", () => {
+ it("returns true for popup_window_error", () => {
+ const error = { errorCode: "popup_window_error", message: "Popup blocked" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for interaction_required", () => {
+ const error = { errorCode: "interaction_required", message: "User interaction required" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for user_cancelled", () => {
+ const error = { errorCode: "user_cancelled", message: "User cancelled" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for consent_required", () => {
+ const error = { errorCode: "consent_required", message: "Consent required" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for login_required", () => {
+ const error = { errorCode: "login_required", message: "Login required" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for no_account_error", () => {
+ const error = { errorCode: "no_account_error", message: "No account" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns false for unexpected MSAL error code", () => {
+ const error = { errorCode: "unknown_error", message: "Unknown" };
+ expect(isExpectedError(error)).toBe(false);
+ });
+ });
+
+ describe("HTTP status codes", () => {
+ it("returns true for error with status 401", () => {
+ const error = { status: 401, message: "Unauthorized" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for error with status 403", () => {
+ const error = { status: 403, message: "Forbidden" };
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns false for error with status 500", () => {
+ const error = { status: 500, message: "Internal Server Error" };
+ expect(isExpectedError(error)).toBe(false);
+ });
+
+ it("returns false for error with status 404", () => {
+ const error = { status: 404, message: "Not Found" };
+ expect(isExpectedError(error)).toBe(false);
+ });
+ });
+
+ describe("Firewall error message pattern", () => {
+ it("returns true for firewall error in Error message", () => {
+ const error = new Error("Request blocked by firewall");
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for IP not allowed error", () => {
+ const error = new Error("Client IP address is not allowed");
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for ip not allowed (no 'address')", () => {
+ const error = new Error("Your ip not allowed to access this resource");
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns true for string error with firewall", () => {
+ expect(isExpectedError("firewall rules prevent access")).toBe(true);
+ });
+
+ it("returns true for case-insensitive firewall match", () => {
+ const error = new Error("FIREWALL blocked request");
+ expect(isExpectedError(error)).toBe(true);
+ });
+
+ it("returns false for unrelated error message", () => {
+ const error = new Error("Database connection failed");
+ expect(isExpectedError(error)).toBe(false);
+ });
+ });
+
+ describe("Edge cases", () => {
+ it("returns false for null", () => {
+ expect(isExpectedError(null)).toBe(false);
+ });
+
+ it("returns false for undefined", () => {
+ expect(isExpectedError(undefined)).toBe(false);
+ });
+
+ it("returns false for empty object", () => {
+ expect(isExpectedError({})).toBe(false);
+ });
+
+ it("returns false for plain Error without expected patterns", () => {
+ const error = new Error("Something went wrong");
+ expect(isExpectedError(error)).toBe(false);
+ });
+
+ it("returns false for string without firewall pattern", () => {
+ expect(isExpectedError("Generic error occurred")).toBe(false);
+ });
+
+ it("handles error with multiple matching criteria", () => {
+ // ARMError with both code and firewall message
+ const error = new ARMError("Request blocked by firewall");
+ error.code = "Forbidden";
+ expect(isExpectedError(error)).toBe(true);
+ });
+ });
+ });
+});
diff --git a/src/Metrics/ErrorClassification.ts b/src/Metrics/ErrorClassification.ts
new file mode 100644
index 000000000..93d1a8ae3
--- /dev/null
+++ b/src/Metrics/ErrorClassification.ts
@@ -0,0 +1,109 @@
+import { ARMError } from "../Utils/arm/request";
+
+/**
+ * Expected error codes that should not mark scenarios as unhealthy.
+ * These represent expected failures like auth issues, permission errors, and user actions.
+ */
+
+// ARM error codes (string)
+const EXPECTED_ARM_ERROR_CODES: Set = new Set([
+ "AuthorizationFailed",
+ "Forbidden",
+ "Unauthorized",
+ "AuthenticationFailed",
+ "InvalidAuthenticationToken",
+ "ExpiredAuthenticationToken",
+ "AuthorizationPermissionMismatch",
+]);
+
+// HTTP status codes that indicate expected failures
+const EXPECTED_HTTP_STATUS_CODES: Set = new Set([
+ 401, // Unauthorized
+ 403, // Forbidden
+]);
+
+// MSAL error codes (string)
+const EXPECTED_MSAL_ERROR_CODES: Set = new Set([
+ "popup_window_error",
+ "interaction_required",
+ "user_cancelled",
+ "consent_required",
+ "login_required",
+ "no_account_error",
+ "monitor_window_timeout",
+ "empty_window_error",
+]);
+
+// Firewall error message pattern (only case where we check message content)
+const FIREWALL_ERROR_PATTERN = /firewall|ip\s*(address)?\s*(is\s*)?not\s*allowed/i;
+
+/**
+ * Interface for MSAL AuthError-like objects
+ */
+interface MsalAuthError {
+ errorCode?: string;
+}
+
+/**
+ * Interface for errors with HTTP status
+ */
+interface HttpError {
+ status?: number;
+}
+
+/**
+ * Determines if an error is an expected failure that should not mark the scenario as unhealthy.
+ *
+ * Expected failures include:
+ * - Authentication/authorization errors (user not logged in, permissions)
+ * - Firewall blocking errors
+ * - User-cancelled operations
+ *
+ * @param error - The error to classify
+ * @returns true if the error is expected and should not affect health metrics
+ */
+export function isExpectedError(error: unknown): boolean {
+ if (!error) {
+ return false;
+ }
+
+ // Check ARMError code
+ if (error instanceof ARMError && error.code !== undefined) {
+ if (typeof error.code === "string" && EXPECTED_ARM_ERROR_CODES.has(error.code)) {
+ return true;
+ }
+ if (typeof error.code === "number" && EXPECTED_HTTP_STATUS_CODES.has(error.code)) {
+ return true;
+ }
+ }
+
+ // Check for MSAL AuthError (has errorCode property)
+ const msalError = error as MsalAuthError;
+ if (msalError.errorCode && typeof msalError.errorCode === "string") {
+ if (EXPECTED_MSAL_ERROR_CODES.has(msalError.errorCode)) {
+ return true;
+ }
+ }
+
+ // Check HTTP status on generic errors
+ const httpError = error as HttpError;
+ if (httpError.status && typeof httpError.status === "number") {
+ if (EXPECTED_HTTP_STATUS_CODES.has(httpError.status)) {
+ return true;
+ }
+ }
+
+ // Check for firewall error in message (the only message-based check)
+ if (error instanceof Error && error.message) {
+ if (FIREWALL_ERROR_PATTERN.test(error.message)) {
+ return true;
+ }
+ }
+
+ // Check for string errors with firewall pattern
+ if (typeof error === "string" && FIREWALL_ERROR_PATTERN.test(error)) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/Metrics/MetricEvents.test.ts b/src/Metrics/MetricEvents.test.ts
index 43c22864b..0c5480b82 100644
--- a/src/Metrics/MetricEvents.test.ts
+++ b/src/Metrics/MetricEvents.test.ts
@@ -1,7 +1,8 @@
import { configContext, Platform } from "../ConfigContext";
import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { fetchWithTimeout } from "../Utils/FetchWithTimeout";
-import MetricScenario, { reportHealthy, reportUnhealthy } from "./MetricEvents";
+import { MetricScenario } from "./Constants";
+import { reportMetric } from "./MetricEvents";
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { Response } = require("node-fetch");
@@ -21,11 +22,16 @@ describe("MetricEvents", () => {
jest.clearAllMocks();
});
- test("reportHealthy success includes auth header", async () => {
+ test("reportMetric success includes auth header", async () => {
const mockResponse = new Response(null, { status: 200 });
mockFetchWithTimeout.mockResolvedValue(mockResponse);
- const result = await reportHealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL");
+ const result = await reportMetric({
+ platform: Platform.Portal,
+ api: "SQL",
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: true,
+ });
expect(result).toBeInstanceOf(Response);
expect(result.ok).toBe(true);
@@ -47,39 +53,77 @@ describe("MetricEvents", () => {
expect(getAuthorizationHeader).toHaveBeenCalled();
});
- test("reportUnhealthy failure status", async () => {
- const mockResponse = new Response("Failure", { status: 500 });
+ test("reportMetric sends full enriched payload", async () => {
+ const mockResponse = new Response(null, { status: 200 });
mockFetchWithTimeout.mockResolvedValue(mockResponse);
- const result = await reportUnhealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL");
+ const event = {
+ platform: Platform.Portal,
+ api: "SQL" as const,
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: true,
+ durationMs: 2847,
+ timedOut: false,
+ documentHidden: false,
+ hasExpectedFailure: false,
+ completedPhases: ["ExplorerInitialized", "Interactive"],
+ failedPhases: [] as string[],
+ phaseTimings: {
+ ExplorerInitialized: { endTimeISO: "2026-03-13T10:00:02.500Z", durationMs: 2500 },
+ Interactive: { endTimeISO: "2026-03-13T10:00:02.847Z", durationMs: 2847 },
+ },
+ startTimeISO: "2026-03-13T10:00:00.000Z",
+ endTimeISO: "2026-03-13T10:00:02.847Z",
+ vitals: { lcp: 1850, inp: 120, cls: 0.05, fcp: 980, ttfb: 340 },
+ };
- expect(result).toBeInstanceOf(Response);
- expect(result.ok).toBe(false);
- expect(result.status).toBe(500);
+ const result = await reportMetric(event);
+ expect(result.status).toBe(200);
+
+ const callArgs = mockFetchWithTimeout.mock.calls[0];
+ const body = JSON.parse(callArgs[1]?.body as string);
+ expect(body.healthy).toBe(true);
+ expect(body.durationMs).toBe(2847);
+ expect(body.timedOut).toBe(false);
+ expect(body.documentHidden).toBe(false);
+ expect(body.hasExpectedFailure).toBe(false);
+ expect(body.completedPhases).toEqual(["ExplorerInitialized", "Interactive"]);
+ expect(body.failedPhases).toEqual([]);
+ expect(body.phaseTimings.ExplorerInitialized.durationMs).toBe(2500);
+ expect(body.startTimeISO).toBe("2026-03-13T10:00:00.000Z");
+ expect(body.endTimeISO).toBe("2026-03-13T10:00:02.847Z");
+ expect(body.vitals.lcp).toBe(1850);
+ expect(body.vitals.cls).toBe(0.05);
+ });
+
+ test("reportMetric omits undefined optional fields", async () => {
+ const mockResponse = new Response(null, { status: 200 });
+ mockFetchWithTimeout.mockResolvedValue(mockResponse);
+
+ const event = {
+ platform: Platform.Portal,
+ api: "SQL" as const,
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: false,
+ };
+
+ await reportMetric(event);
const callArgs = mockFetchWithTimeout.mock.calls[0];
const body = JSON.parse(callArgs[1]?.body as string);
expect(body.healthy).toBe(false);
- });
-
- test("helpers healthy/unhealthy", async () => {
- mockFetchWithTimeout.mockResolvedValue(new Response(null, { status: 201 }));
-
- const healthyResult = await reportHealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL");
- const unhealthyResult = await reportUnhealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL");
-
- expect(healthyResult.status).toBe(201);
- expect(unhealthyResult.status).toBe(201);
- expect(mockFetchWithTimeout).toHaveBeenCalledTimes(2);
+ expect(body.durationMs).toBeUndefined();
+ expect(body.vitals).toBeUndefined();
+ expect(body.completedPhases).toBeUndefined();
});
test("throws when backend endpoint missing", async () => {
const original = configContext.PORTAL_BACKEND_ENDPOINT;
(configContext as { PORTAL_BACKEND_ENDPOINT: string }).PORTAL_BACKEND_ENDPOINT = "";
- await expect(reportHealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL")).rejects.toThrow(
- "baseUri is null or empty",
- );
+ await expect(
+ reportMetric({ platform: Platform.Portal, api: "SQL", scenario: MetricScenario.ApplicationLoad, healthy: true }),
+ ).rejects.toThrow("baseUri is null or empty");
expect(mockFetchWithTimeout).not.toHaveBeenCalled();
(configContext as { PORTAL_BACKEND_ENDPOINT: string }).PORTAL_BACKEND_ENDPOINT = original;
@@ -88,17 +132,17 @@ describe("MetricEvents", () => {
test("propagates fetch errors", async () => {
mockFetchWithTimeout.mockRejectedValue(new Error("Network error"));
- await expect(reportHealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL")).rejects.toThrow(
- "Network error",
- );
+ await expect(
+ reportMetric({ platform: Platform.Portal, api: "SQL", scenario: MetricScenario.ApplicationLoad, healthy: true }),
+ ).rejects.toThrow("Network error");
});
test("propagates timeout errors", async () => {
const abortError = new DOMException("The operation was aborted", "AbortError");
mockFetchWithTimeout.mockRejectedValue(abortError);
- await expect(reportUnhealthy(MetricScenario.ApplicationLoad, Platform.Portal, "SQL")).rejects.toThrow(
- "The operation was aborted",
- );
+ await expect(
+ reportMetric({ platform: Platform.Portal, api: "SQL", scenario: MetricScenario.ApplicationLoad, healthy: false }),
+ ).rejects.toThrow("The operation was aborted");
});
});
diff --git a/src/Metrics/MetricEvents.ts b/src/Metrics/MetricEvents.ts
index bfd59363b..0e4910565 100644
--- a/src/Metrics/MetricEvents.ts
+++ b/src/Metrics/MetricEvents.ts
@@ -1,20 +1,21 @@
// Metrics module: scenario metric emission logic.
import { MetricEvent, MetricScenario } from "Metrics/Constants";
import { createUri } from "../Common/UrlUtility";
-import { configContext, Platform } from "../ConfigContext";
-import { ApiType } from "../UserContext";
+import { configContext } from "../ConfigContext";
import { getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { fetchWithTimeout } from "../Utils/FetchWithTimeout";
const RELATIVE_PATH = "/api/dataexplorer/metrics/health"; // Endpoint retains 'health' for backend compatibility.
-export const reportHealthy = (scenario: MetricScenario, platform: Platform, api: ApiType): Promise =>
- send({ platform, api, scenario, healthy: true });
-
-export const reportUnhealthy = (scenario: MetricScenario, platform: Platform, api: ApiType): Promise =>
- send({ platform, api, scenario, healthy: false });
+/** Send a full enriched MetricEvent to the backend. */
+export const reportMetric = (event: MetricEvent): Promise => send(event);
const send = async (event: MetricEvent): Promise => {
+ // Skip metrics emission during local development
+ if (process.env.NODE_ENV === "development") {
+ return Promise.resolve(new Response(null, { status: 200 }));
+ }
+
const url = createUri(configContext?.PORTAL_BACKEND_ENDPOINT, RELATIVE_PATH);
const authHeader = getAuthorizationHeader();
diff --git a/src/Metrics/ScenarioConfig.ts b/src/Metrics/ScenarioConfig.ts
index c8629f573..6f91d46ec 100644
--- a/src/Metrics/ScenarioConfig.ts
+++ b/src/Metrics/ScenarioConfig.ts
@@ -1,3 +1,4 @@
+import type { PhaseTimings, WebVitals } from "Metrics/Constants";
import MetricScenario from "./MetricEvents";
// Common phases shared across all scenarios
@@ -15,25 +16,12 @@ export enum ApplicationMetricPhase {
// Combined type for all metric phases
export type MetricPhase = CommonMetricPhase | ApplicationMetricPhase;
-export interface WebVitals {
- lcp?: number; // Largest Contentful Paint
- inp?: number; // Interaction to Next Paint
- cls?: number; // Cumulative Layout Shift
- fcp?: number; // First Contentful Paint
- ttfb?: number; // Time to First Byte
-}
-
export interface ScenarioConfig {
requiredPhases: TPhase[];
timeoutMs: number;
validate?: (ctx: ScenarioContextSnapshot) => boolean; // Optional custom validation
}
-export interface PhaseTimings {
- endTimeISO: string; // When the phase completed
- durationMs: number; // Duration from scenario start to phase completion
-}
-
export interface ScenarioContextSnapshot {
scenario: MetricScenario;
startTimeISO: string; // Human-readable ISO timestamp
diff --git a/src/Metrics/ScenarioMonitor.test.ts b/src/Metrics/ScenarioMonitor.test.ts
new file mode 100644
index 000000000..7c4c67e5b
--- /dev/null
+++ b/src/Metrics/ScenarioMonitor.test.ts
@@ -0,0 +1,268 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import { updateUserContext } from "../UserContext";
+import MetricScenario, { reportMetric } from "./MetricEvents";
+import { ApplicationMetricPhase, CommonMetricPhase } from "./ScenarioConfig";
+import { scenarioMonitor } from "./ScenarioMonitor";
+
+// Mock the MetricEvents module
+jest.mock("./MetricEvents", () => ({
+ __esModule: true,
+ default: {
+ ApplicationLoad: "ApplicationLoad",
+ DatabaseLoad: "DatabaseLoad",
+ },
+ reportMetric: jest.fn().mockResolvedValue({ ok: true }),
+}));
+
+// Mock configContext
+jest.mock("../ConfigContext", () => ({
+ configContext: {
+ platform: "Portal",
+ PORTAL_BACKEND_ENDPOINT: "https://test.portal.azure.com",
+ },
+ Platform: {
+ Portal: "Portal",
+ Hosted: "Hosted",
+ Emulator: "Emulator",
+ Fabric: "Fabric",
+ },
+}));
+
+describe("ScenarioMonitor", () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ // Use legacy fake timers to avoid conflicts with performance API
+ jest.useFakeTimers({ legacyFakeTimers: true });
+
+ // Ensure performance mock is available (setupTests.ts sets this but fake timers may override)
+ if (typeof performance.mark !== "function") {
+ Object.defineProperty(global, "performance", {
+ writable: true,
+ configurable: true,
+ value: {
+ mark: jest.fn(),
+ measure: jest.fn(),
+ clearMarks: jest.fn(),
+ clearMeasures: jest.fn(),
+ getEntriesByName: jest.fn().mockReturnValue([{ startTime: 0 }]),
+ getEntriesByType: jest.fn().mockReturnValue([]),
+ now: jest.fn(() => Date.now()),
+ timeOrigin: Date.now(),
+ },
+ });
+ }
+
+ // Reset userContext
+ updateUserContext({
+ apiType: "SQL",
+ });
+
+ // Reset the scenario monitor to clear any previous state
+ scenarioMonitor.reset();
+ });
+
+ afterEach(() => {
+ // Reset scenarios before switching to real timers
+ scenarioMonitor.reset();
+ jest.useRealTimers();
+ });
+
+ describe("markExpectedFailure", () => {
+ it("sets hasExpectedFailure flag on active scenarios", () => {
+ // Start a scenario
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Mark expected failure
+ scenarioMonitor.markExpectedFailure();
+
+ // Let timeout fire - should emit healthy because of expected failure
+ jest.advanceTimersByTime(10000);
+
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: true,
+ hasExpectedFailure: true,
+ timedOut: true,
+ }),
+ );
+ });
+
+ it("sets flag on multiple active scenarios", () => {
+ // Start two scenarios
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+ scenarioMonitor.start(MetricScenario.DatabaseLoad);
+
+ // Mark expected failure - should affect both
+ scenarioMonitor.markExpectedFailure();
+
+ // Let timeouts fire
+ jest.advanceTimersByTime(10000);
+
+ expect(reportMetric).toHaveBeenCalledTimes(2);
+ expect(reportMetric).toHaveBeenCalledWith(expect.objectContaining({ healthy: true, hasExpectedFailure: true }));
+ });
+
+ it("does not affect already emitted scenarios", () => {
+ // Start scenario
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Complete all phases to emit
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, ApplicationMetricPhase.ExplorerInitialized);
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, CommonMetricPhase.Interactive);
+
+ // Now mark expected failure - should not change anything
+ scenarioMonitor.markExpectedFailure();
+
+ // reportMetric was called when phases completed
+ expect(reportMetric).toHaveBeenCalledTimes(1);
+ expect(reportMetric).toHaveBeenCalledWith(expect.objectContaining({ healthy: true }));
+ });
+ });
+
+ describe("timeout behavior", () => {
+ it("emits unhealthy on timeout without expected failure", () => {
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Let timeout fire without marking expected failure
+ jest.advanceTimersByTime(10000);
+
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: false,
+ timedOut: true,
+ }),
+ );
+ });
+
+ it("emits healthy on timeout with expected failure", () => {
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Mark expected failure
+ scenarioMonitor.markExpectedFailure();
+
+ // Let timeout fire
+ jest.advanceTimersByTime(10000);
+
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: true,
+ timedOut: true,
+ hasExpectedFailure: true,
+ }),
+ );
+ });
+
+ it("emits healthy even with partial phase completion and expected failure", () => {
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Complete one phase
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, ApplicationMetricPhase.ExplorerInitialized);
+
+ // Mark expected failure
+ scenarioMonitor.markExpectedFailure();
+
+ // Let timeout fire (Interactive phase not completed)
+ jest.advanceTimersByTime(10000);
+
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ healthy: true,
+ timedOut: true,
+ hasExpectedFailure: true,
+ completedPhases: expect.arrayContaining(["ExplorerInitialized"]),
+ }),
+ );
+ });
+ });
+
+ describe("failPhase behavior", () => {
+ it("emits unhealthy immediately on unexpected failure", () => {
+ scenarioMonitor.start(MetricScenario.DatabaseLoad);
+
+ // Fail a phase (simulating unexpected error)
+ scenarioMonitor.failPhase(MetricScenario.DatabaseLoad, ApplicationMetricPhase.DatabasesFetched);
+
+ // Should emit unhealthy immediately, not wait for timeout
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scenario: MetricScenario.DatabaseLoad,
+ healthy: false,
+ timedOut: false,
+ }),
+ );
+ });
+
+ it("does not emit twice after failPhase and timeout", () => {
+ scenarioMonitor.start(MetricScenario.DatabaseLoad);
+
+ // Fail a phase
+ scenarioMonitor.failPhase(MetricScenario.DatabaseLoad, ApplicationMetricPhase.DatabasesFetched);
+
+ // Let timeout fire
+ jest.advanceTimersByTime(10000);
+
+ // Should only have emitted once (from failPhase)
+ expect(reportMetric).toHaveBeenCalledTimes(1);
+ });
+ });
+
+ describe("completePhase behavior", () => {
+ it("emits healthy when all phases complete", () => {
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Complete all required phases
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, ApplicationMetricPhase.ExplorerInitialized);
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, CommonMetricPhase.Interactive);
+
+ expect(reportMetric).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scenario: MetricScenario.ApplicationLoad,
+ healthy: true,
+ timedOut: false,
+ completedPhases: expect.arrayContaining(["ExplorerInitialized", "Interactive"]),
+ }),
+ );
+ });
+
+ it("does not emit until all phases complete", () => {
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+
+ // Complete only one phase
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, ApplicationMetricPhase.ExplorerInitialized);
+
+ expect(reportMetric).not.toHaveBeenCalled();
+ });
+ });
+
+ describe("scenario isolation", () => {
+ it("expected failure on one scenario does not affect others after completion", () => {
+ // Start both scenarios
+ scenarioMonitor.start(MetricScenario.ApplicationLoad);
+ scenarioMonitor.start(MetricScenario.DatabaseLoad);
+
+ // Complete ApplicationLoad
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, ApplicationMetricPhase.ExplorerInitialized);
+ scenarioMonitor.completePhase(MetricScenario.ApplicationLoad, CommonMetricPhase.Interactive);
+
+ // Now mark expected failure - should only affect DatabaseLoad
+ scenarioMonitor.markExpectedFailure();
+
+ // Let DatabaseLoad timeout
+ jest.advanceTimersByTime(10000);
+
+ // ApplicationLoad emitted healthy on completion
+ // DatabaseLoad emits healthy on timeout (expected failure)
+ expect(reportMetric).toHaveBeenCalledTimes(2);
+ // Both should be healthy
+ const calls = (reportMetric as jest.Mock).mock.calls;
+ expect(calls[0][0].healthy).toBe(true);
+ expect(calls[1][0].healthy).toBe(true);
+ });
+ });
+});
diff --git a/src/Metrics/ScenarioMonitor.ts b/src/Metrics/ScenarioMonitor.ts
index 73e3fbcf7..9782a6cb0 100644
--- a/src/Metrics/ScenarioMonitor.ts
+++ b/src/Metrics/ScenarioMonitor.ts
@@ -1,11 +1,12 @@
+import type { PhaseTimings, WebVitals } from "Metrics/Constants";
import { Metric, onCLS, onFCP, onINP, onLCP, onTTFB } from "web-vitals";
import { configContext } from "../ConfigContext";
import { Action } from "../Shared/Telemetry/TelemetryConstants";
import { traceFailure, traceMark, traceStart, traceSuccess } from "../Shared/Telemetry/TelemetryProcessor";
import { userContext } from "../UserContext";
-import MetricScenario, { reportHealthy, reportUnhealthy } from "./MetricEvents";
+import MetricScenario, { reportMetric } from "./MetricEvents";
import { scenarioConfigs } from "./MetricScenarioConfigs";
-import { MetricPhase, PhaseTimings, ScenarioConfig, ScenarioContextSnapshot, WebVitals } from "./ScenarioConfig";
+import { MetricPhase, ScenarioConfig, ScenarioContextSnapshot } from "./ScenarioConfig";
interface PhaseContext {
startMarkName: string; // Performance mark name for phase start
@@ -21,6 +22,7 @@ interface InternalScenarioContext {
phases: Map; // Track start/end for each phase
timeoutId?: number;
emitted: boolean;
+ hasExpectedFailure: boolean; // Flag for expected failures (auth, firewall, etc.)
}
class ScenarioMonitor {
@@ -55,6 +57,13 @@ class ScenarioMonitor {
});
}
+ private devLog(msg: string) {
+ if (process.env.NODE_ENV === "development") {
+ // eslint-disable-next-line no-console
+ console.log(`[Metrics] ${msg}`);
+ }
+ }
+
start(scenario: MetricScenario) {
if (this.contexts.has(scenario)) {
return;
@@ -75,6 +84,7 @@ class ScenarioMonitor {
failed: new Set(),
phases: new Map(),
emitted: false,
+ hasExpectedFailure: false,
};
// Start all required phases at scenario start time
@@ -84,6 +94,10 @@ class ScenarioMonitor {
ctx.phases.set(phase, { startMarkName: phaseStartMarkName });
});
+ this.devLog(
+ `scenario_start: ${scenario} | phases=${config.requiredPhases.join(", ")} | timeout=${config.timeoutMs}ms`,
+ );
+
traceMark(Action.MetricsScenario, {
event: "scenario_start",
scenario,
@@ -91,7 +105,28 @@ class ScenarioMonitor {
timeoutMs: config.timeoutMs,
});
- ctx.timeoutId = window.setTimeout(() => this.emit(ctx, false, true), config.timeoutMs);
+ ctx.timeoutId = window.setTimeout(() => {
+ const missingPhases = ctx.config.requiredPhases.filter((p) => !ctx.completed.has(p));
+
+ this.devLog(
+ `timeout: ${scenario} | missing=[${missingPhases.join(", ")}] | completed=[${Array.from(ctx.completed).join(
+ ", ",
+ )}] | documentHidden=${document.hidden} | hasExpectedFailure=${ctx.hasExpectedFailure}`,
+ );
+
+ traceMark(Action.MetricsScenario, {
+ event: "scenario_timeout",
+ scenario,
+ missingPhases: missingPhases.join(","),
+ completedPhases: Array.from(ctx.completed).join(","),
+ documentHidden: document.hidden,
+ hasExpectedFailure: ctx.hasExpectedFailure,
+ });
+
+ // If an expected failure occurred (auth, firewall, etc.), emit healthy instead of unhealthy
+ const healthy = ctx.hasExpectedFailure;
+ this.emit(ctx, healthy, true);
+ }, config.timeoutMs);
this.contexts.set(scenario, ctx);
}
@@ -130,6 +165,12 @@ class ScenarioMonitor {
const endTimeISO = endEntry ? new Date(navigationStart + endEntry.startTime).toISOString() : undefined;
const durationMs = startEntry && endEntry ? endEntry.startTime - startEntry.startTime : undefined;
+ this.devLog(
+ `phase_complete: ${scenario}.${phase} | ${
+ durationMs !== null && durationMs !== undefined ? `${Math.round(durationMs)}ms` : "?"
+ } | ${ctx.completed.size}/${ctx.config.requiredPhases.length} phases`,
+ );
+
traceSuccess(Action.MetricsScenario, {
event: "phase_complete",
scenario,
@@ -149,6 +190,13 @@ class ScenarioMonitor {
return;
}
+ // If an expected failure was flagged (auth, firewall, etc.), treat as success.
+ if (ctx.hasExpectedFailure) {
+ this.devLog(`phase_fail: ${scenario}.${phase} — expected failure, completing as healthy`);
+ this.completePhase(scenario, phase);
+ return;
+ }
+
// Mark the explicitly failed phase
performance.mark(`scenario_${scenario}_${phase}_failed`);
ctx.failed.add(phase);
@@ -163,6 +211,12 @@ class ScenarioMonitor {
// Build a snapshot with failure info
const failureSnapshot = this.buildSnapshot(ctx, { final: false, timedOut: false });
+ this.devLog(
+ `phase_fail: ${scenario}.${phase} | failed=[${Array.from(ctx.failed).join(", ")}] | completed=[${Array.from(
+ ctx.completed,
+ ).join(", ")}]`,
+ );
+
traceFailure(Action.MetricsScenario, {
event: "phase_fail",
scenario,
@@ -171,10 +225,28 @@ class ScenarioMonitor {
completedPhases: Array.from(ctx.completed).join(","),
});
- // Emit unhealthy immediately
+ // Emit unhealthy immediately for unexpected failures
this.emit(ctx, false, false, failureSnapshot);
}
+ /**
+ * Marks that an expected failure occurred (auth, firewall, permissions, etc.).
+ * When the scenario times out with this flag set, it will emit healthy instead of unhealthy.
+ * This is called automatically from handleError when an expected error is detected.
+ */
+ markExpectedFailure() {
+ // Set the flag on all active (non-emitted) scenarios
+ this.contexts.forEach((ctx) => {
+ if (!ctx.emitted) {
+ ctx.hasExpectedFailure = true;
+ traceMark(Action.MetricsScenario, {
+ event: "expected_failure_marked",
+ scenario: ctx.scenario,
+ });
+ }
+ });
+ }
+
private tryEmitIfReady(ctx: InternalScenarioContext) {
const allDone = ctx.config.requiredPhases.every((p) => ctx.completed.has(p));
if (!allDone) {
@@ -234,6 +306,7 @@ class ScenarioMonitor {
scenario: ctx.scenario,
healthy,
timedOut,
+ documentHidden: document.hidden,
platform,
api,
durationMs: finalSnapshot.durationMs,
@@ -246,12 +319,36 @@ class ScenarioMonitor {
ttfb: finalSnapshot.vitals?.ttfb,
});
- // Call portal backend health metrics endpoint
- if (healthy && !timedOut) {
- reportHealthy(ctx.scenario, platform, api);
- } else {
- reportUnhealthy(ctx.scenario, platform, api);
- }
+ this.devLog(
+ `scenario_end: ${ctx.scenario} | ${healthy ? "healthy" : "unhealthy"} | ${
+ timedOut ? "timed out" : `${Math.round(finalSnapshot.durationMs)}ms`
+ } | ${JSON.stringify({
+ completedPhases: finalSnapshot.completed.join(", "),
+ failedPhases: finalSnapshot.failedPhases?.join(", ") || "none",
+ platform,
+ api,
+ phaseTimings: finalSnapshot.phaseTimings,
+ vitals: finalSnapshot.vitals,
+ })}`,
+ );
+
+ // Call portal backend health metrics endpoint with enriched payload
+ reportMetric({
+ platform,
+ api,
+ scenario: ctx.scenario,
+ healthy,
+ durationMs: finalSnapshot.durationMs,
+ timedOut,
+ documentHidden: document.hidden,
+ hasExpectedFailure: ctx.hasExpectedFailure,
+ completedPhases: finalSnapshot.completed,
+ failedPhases: finalSnapshot.failedPhases ?? [],
+ phaseTimings: finalSnapshot.phaseTimings,
+ startTimeISO: finalSnapshot.startTimeISO,
+ endTimeISO: finalSnapshot.endTimeISO,
+ vitals: finalSnapshot.vitals,
+ });
// Cleanup performance entries
this.cleanupPerformanceEntries(ctx);
@@ -302,6 +399,19 @@ class ScenarioMonitor {
phaseTimings,
};
}
+
+ /**
+ * Reset all scenarios (for testing purposes only).
+ * Clears all active contexts and their timeouts.
+ */
+ reset() {
+ this.contexts.forEach((ctx) => {
+ if (ctx.timeoutId) {
+ clearTimeout(ctx.timeoutId);
+ }
+ });
+ this.contexts.clear();
+ }
}
export const scenarioMonitor = new ScenarioMonitor();
diff --git a/src/Metrics/useMetricPhases.ts b/src/Metrics/useMetricPhases.ts
index b244c2966..e4b315126 100644
--- a/src/Metrics/useMetricPhases.ts
+++ b/src/Metrics/useMetricPhases.ts
@@ -1,20 +1,42 @@
import React from "react";
import MetricScenario from "./MetricEvents";
-import { useMetricScenario } from "./MetricScenarioProvider";
import { ApplicationMetricPhase, CommonMetricPhase } from "./ScenarioConfig";
+import { scenarioMonitor } from "./ScenarioMonitor";
/**
- * Hook to automatically complete the Interactive phase when the component becomes interactive.
- * Uses requestAnimationFrame to complete after the browser has painted.
+ * Completes the Interactive phase once the browser is ready to paint.
+ *
+ * Uses requestAnimationFrame with a setTimeout fallback. In foreground tabs rAF fires
+ * first (~16 ms) giving an accurate "browser painted" signal. In background tabs browsers
+ * suspend rAF indefinitely, so the setTimeout fallback (1 s) completes the phase instead —
+ * well within the 10 s scenario timeout — preventing false-negative unhealthy reports.
*/
-export function useInteractive(scenario: MetricScenario) {
- const { completePhase } = useMetricScenario();
-
+export function useInteractive(scenario: MetricScenario, enabled = true) {
React.useEffect(() => {
- requestAnimationFrame(() => {
- completePhase(scenario, CommonMetricPhase.Interactive);
- });
- }, [scenario, completePhase]);
+ if (!enabled) {
+ return undefined;
+ }
+
+ let completed = false;
+ const complete = () => {
+ if (completed) {
+ return;
+ }
+ completed = true;
+ cancelAnimationFrame(rafId);
+ clearTimeout(timeoutId);
+ scenarioMonitor.completePhase(scenario, CommonMetricPhase.Interactive);
+ };
+
+ const rafId = requestAnimationFrame(complete);
+ // Fallback for background tabs where rAF is suspended.
+ const timeoutId = setTimeout(complete, 1000);
+
+ return () => {
+ cancelAnimationFrame(rafId);
+ clearTimeout(timeoutId);
+ };
+ }, [scenario, enabled]);
}
/**
@@ -22,18 +44,20 @@ export function useInteractive(scenario: MetricScenario) {
* Tracks tree rendering and completes Interactive phase.
* Only completes DatabaseTreeRendered if the database fetch was successful.
* Note: Scenario must be started before databases are fetched (in refreshExplorer).
+ *
+ * Calls scenarioMonitor directly (not via React context) for the same stability reason
+ * as useInteractive — avoids effect re-runs from unstable context function references.
*/
export function useDatabaseLoadScenario(databaseTreeNodes: unknown[], fetchSucceeded: boolean) {
- const { completePhase } = useMetricScenario();
const hasCompletedTreeRenderRef = React.useRef(false);
// Track DatabaseTreeRendered phase (only if fetch succeeded)
React.useEffect(() => {
if (!hasCompletedTreeRenderRef.current && fetchSucceeded) {
hasCompletedTreeRenderRef.current = true;
- completePhase(MetricScenario.DatabaseLoad, ApplicationMetricPhase.DatabaseTreeRendered);
+ scenarioMonitor.completePhase(MetricScenario.DatabaseLoad, ApplicationMetricPhase.DatabaseTreeRendered);
}
- }, [databaseTreeNodes, fetchSucceeded, completePhase]);
+ }, [databaseTreeNodes, fetchSucceeded]);
// Track Interactive phase
useInteractive(MetricScenario.DatabaseLoad);
diff --git a/src/NotebookViewer/NotebookViewer.tsx b/src/NotebookViewer/NotebookViewer.tsx
deleted file mode 100644
index 2bb1441b2..000000000
--- a/src/NotebookViewer/NotebookViewer.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-import { initializeIcons } from "@fluentui/react";
-import "bootstrap/dist/css/bootstrap.css";
-import React from "react";
-import * as ReactDOM from "react-dom";
-import { configContext, initializeConfiguration } from "../ConfigContext";
-import { GalleryHeaderComponent } from "../Explorer/Controls/Header/GalleryHeaderComponent";
-import { GalleryTab } from "../Explorer/Controls/NotebookGallery/GalleryViewerComponent";
-import {
- NotebookViewerComponent,
- NotebookViewerComponentProps,
-} from "../Explorer/Controls/NotebookViewer/NotebookViewerComponent";
-import * as FileSystemUtil from "../Explorer/Notebook/FileSystemUtil";
-import { IGalleryItem, JunoClient } from "../Juno/JunoClient";
-import * as GalleryUtils from "../Utils/GalleryUtils";
-
-const onInit = async () => {
- initializeIcons();
- await initializeConfiguration();
- const galleryViewerProps = GalleryUtils.getGalleryViewerProps(window.location.search);
- const notebookViewerProps = GalleryUtils.getNotebookViewerProps(window.location.search);
- let backNavigationText: string;
- let onBackClick: () => void;
- if (galleryViewerProps.selectedTab !== undefined) {
- backNavigationText = GalleryUtils.getTabTitle(galleryViewerProps.selectedTab);
- onBackClick = () =>
- (window.location.href = `${configContext.hostedExplorerURL}gallery.html?tab=${
- GalleryTab[galleryViewerProps.selectedTab]
- }`);
- }
- const hideInputs = notebookViewerProps.hideInputs;
-
- const notebookUrl = decodeURIComponent(notebookViewerProps.notebookUrl);
-
- const galleryItemId = notebookViewerProps.galleryItemId;
- let galleryItem: IGalleryItem;
-
- if (galleryItemId) {
- const junoClient = new JunoClient();
- const galleryItemJunoResponse = await junoClient.getNotebookInfo(galleryItemId);
- galleryItem = galleryItemJunoResponse.data;
- }
-
- // The main purpose of hiding the prompt is to hide everything when hiding inputs.
- // It is generally not very useful to just hide the prompt.
- const hidePrompts = hideInputs;
-
- render(notebookUrl, backNavigationText, hideInputs, hidePrompts, galleryItem, onBackClick);
-};
-
-const render = (
- notebookUrl: string,
- backNavigationText: string,
- hideInputs?: boolean,
- hidePrompts?: boolean,
- galleryItem?: IGalleryItem,
- onBackClick?: () => void,
-) => {
- const props: NotebookViewerComponentProps = {
- junoClient: galleryItem ? new JunoClient() : undefined,
- notebookUrl,
- galleryItem,
- backNavigationText,
- hideInputs,
- hidePrompts,
- onBackClick: onBackClick,
- onTagClick: undefined,
- };
-
- if (galleryItem) {
- document.title = FileSystemUtil.stripExtension(galleryItem.name, "ipynb");
- }
-
- const element = (
- <>
-
-
-
-
- >
- );
-
- ReactDOM.render(element, document.getElementById("notebookContent"));
-};
-
-// Entry point
-window.addEventListener("load", onInit);
diff --git a/src/Platform/Fabric/FabricUtil.ts b/src/Platform/Fabric/FabricUtil.ts
index 22ac2603a..b6a83644b 100644
--- a/src/Platform/Fabric/FabricUtil.ts
+++ b/src/Platform/Fabric/FabricUtil.ts
@@ -37,7 +37,7 @@ const requestFabricToken = async (): Promise => {
scheduleRefreshFabricToken();
} catch (error) {
- logConsoleError(error as string);
+ logConsoleError(error instanceof Error ? error.message : String(error));
throw error;
} finally {
lastRequestTimestamp = undefined;
@@ -105,6 +105,12 @@ const requestAndStoreAccessToken = async (): Promise => {
});
};
+export const openRestoreContainerDialog = (): void => {
+ if (isFabricNative()) {
+ sendCachedDataMessage(FabricMessageTypes.RestoreContainer, []);
+ }
+};
+
/**
* Check token validity and schedule a refresh if necessary
* @param tokenTimestamp
diff --git a/src/Platform/Hosted/Components/AccountSwitcher.test.tsx b/src/Platform/Hosted/Components/AccountSwitcher.test.tsx
index 51e3c47f2..6de8e1571 100644
--- a/src/Platform/Hosted/Components/AccountSwitcher.test.tsx
+++ b/src/Platform/Hosted/Components/AccountSwitcher.test.tsx
@@ -1,12 +1,12 @@
jest.mock("../../../hooks/useSubscriptions");
jest.mock("../../../hooks/useDatabaseAccounts");
-import React from "react";
-import { render, fireEvent, screen } from "@testing-library/react";
import "@testing-library/jest-dom";
-import { AccountSwitcher } from "./AccountSwitcher";
-import { useSubscriptions } from "../../../hooks/useSubscriptions";
-import { useDatabaseAccounts } from "../../../hooks/useDatabaseAccounts";
+import { fireEvent, render, screen } from "@testing-library/react";
+import React from "react";
import { DatabaseAccount, Subscription } from "../../../Contracts/DataModels";
+import { useDatabaseAccounts } from "../../../hooks/useDatabaseAccounts";
+import { useSubscriptions } from "../../../hooks/useSubscriptions";
+import { AccountSwitcher } from "./AccountSwitcher";
it("calls setAccount from parent component", () => {
const armToken = "fakeToken";
@@ -25,7 +25,7 @@ it("calls setAccount from parent component", () => {
expect(screen.getByLabelText("Subscription")).toHaveTextContent("Select a Subscription");
fireEvent.click(screen.getByText("Select a Subscription"));
fireEvent.click(screen.getByText(subscriptions[0].displayName));
- expect(screen.getByLabelText("Cosmos DB Account Name")).toHaveTextContent("Select an Account");
+ expect(screen.getByLabelText("Cosmos DB Account")).toHaveTextContent("Select an Account");
fireEvent.click(screen.getByText("Select an Account"));
fireEvent.click(screen.getByText(accounts[0].name));
expect(setDatabaseAccount).toHaveBeenCalledWith(accounts[0]);
diff --git a/src/Platform/Hosted/Components/SwitchAccount.tsx b/src/Platform/Hosted/Components/SwitchAccount.tsx
index ef195ee07..72fb6b46a 100644
--- a/src/Platform/Hosted/Components/SwitchAccount.tsx
+++ b/src/Platform/Hosted/Components/SwitchAccount.tsx
@@ -1,6 +1,6 @@
-import { Dropdown } from "@fluentui/react";
import * as React from "react";
import { FunctionComponent } from "react";
+import { SearchableDropdown } from "../../../Common/SearchableDropdown";
import { DatabaseAccount } from "../../../Contracts/DataModels";
interface Props {
@@ -17,23 +17,18 @@ export const SwitchAccount: FunctionComponent = ({
dismissMenu,
}: Props) => {
return (
-
+ label="Cosmos DB Account"
+ items={accounts}
+ selectedItem={selectedAccount}
+ onSelect={(account) => setSelectedAccountName(account.name)}
+ getKey={(account) => account.name}
+ getDisplayText={(account) => account.name}
+ placeholder="Select an Account"
+ filterPlaceholder="Search by Account name"
className="accountSwitchAccountDropdown"
- options={accounts?.map((account) => ({
- key: account.name,
- text: account.name,
- data: account,
- }))}
- onChange={(_, option) => {
- setSelectedAccountName(String(option?.key));
- dismissMenu();
- }}
- defaultSelectedKey={selectedAccount?.name}
- placeholder={accounts && accounts.length === 0 ? "No Accounts Found" : "Select an Account"}
- styles={{
- callout: "accountSwitchAccountDropdownMenu",
- }}
+ disabled={!accounts || accounts.length === 0}
+ onDismiss={dismissMenu}
/>
);
};
diff --git a/src/Platform/Hosted/Components/SwitchSubscription.tsx b/src/Platform/Hosted/Components/SwitchSubscription.tsx
index c784c5f5b..6b3bae932 100644
--- a/src/Platform/Hosted/Components/SwitchSubscription.tsx
+++ b/src/Platform/Hosted/Components/SwitchSubscription.tsx
@@ -1,6 +1,6 @@
-import { Dropdown } from "@fluentui/react";
import * as React from "react";
import { FunctionComponent } from "react";
+import { SearchableDropdown } from "../../../Common/SearchableDropdown";
import { Subscription } from "../../../Contracts/DataModels";
interface Props {
@@ -15,24 +15,16 @@ export const SwitchSubscription: FunctionComponent = ({
selectedSubscription,
}: Props) => {
return (
-
label="Subscription"
+ items={subscriptions}
+ selectedItem={selectedSubscription}
+ onSelect={(sub) => setSelectedSubscriptionId(sub.subscriptionId)}
+ getKey={(sub) => sub.subscriptionId}
+ getDisplayText={(sub) => sub.displayName}
+ placeholder="Select a Subscription"
+ filterPlaceholder="Search by Subscription name"
className="accountSwitchSubscriptionDropdown"
- options={subscriptions?.map((sub) => {
- return {
- key: sub.subscriptionId,
- text: sub.displayName,
- data: sub,
- };
- })}
- onChange={(_, option) => {
- setSelectedSubscriptionId(String(option?.key));
- }}
- defaultSelectedKey={selectedSubscription?.subscriptionId}
- placeholder={subscriptions && subscriptions.length === 0 ? "No Subscriptions Found" : "Select a Subscription"}
- styles={{
- callout: "accountSwitchSubscriptionDropdownMenu",
- }}
/>
);
};
diff --git a/src/Platform/Hosted/extractFeatures.ts b/src/Platform/Hosted/extractFeatures.ts
index b5e324116..e9c4fc6b1 100644
--- a/src/Platform/Hosted/extractFeatures.ts
+++ b/src/Platform/Hosted/extractFeatures.ts
@@ -40,6 +40,7 @@ export type Features = {
readonly disableConnectionStringLogin: boolean;
readonly enableContainerCopy: boolean;
readonly enableCloudShell: boolean;
+ readonly enableRestoreContainer: boolean; // only for Fabric
// can be set via both flight and feature flag
autoscaleDefault: boolean;
@@ -93,7 +94,7 @@ export function extractFeatures(given = new URLSearchParams(window.location.sear
notebookBasePath: get("notebookbasepath"),
notebookServerToken: get("notebookservertoken"),
notebookServerUrl: get("notebookserverurl"),
- sandboxNotebookOutputs: "true" === get("sandboxnotebookoutputs", "true"),
+ sandboxNotebookOutputs: true,
selfServeType: get("selfservetype"),
showMinRUSurvey: "true" === get("showminrusurvey"),
ttl90Days: "true" === get("ttl90days"),
@@ -111,6 +112,7 @@ export function extractFeatures(given = new URLSearchParams(window.location.sear
enablePriorityBasedExecution: "true" === get("enableprioritybasedexecution"),
disableConnectionStringLogin: "true" === get("disableconnectionstringlogin"),
enableContainerCopy: "true" === get("enablecontainercopy"),
+ enableRestoreContainer: "true" === get("enablerestorecontainer"),
enableCloudShell: true,
};
}
diff --git a/src/SelfServe/GraphAPICompute/GraphAPICompute.tsx b/src/SelfServe/GraphAPICompute/GraphAPICompute.tsx
index c116f8e30..56c4f8061 100644
--- a/src/SelfServe/GraphAPICompute/GraphAPICompute.tsx
+++ b/src/SelfServe/GraphAPICompute/GraphAPICompute.tsx
@@ -37,7 +37,7 @@ const connectionStringValue: Description = {
textTKey: "ConnectionStringText",
type: DescriptionType.Text,
link: {
- href: generateBladeLink(BladeType.SqlKeys),
+ href: generateBladeLink(BladeType.ConnectionStrings),
textTKey: "KeysBlade",
},
};
diff --git a/src/SelfServe/SelfServeComponent.tsx b/src/SelfServe/SelfServeComponent.tsx
index 470adb833..8ef813cdc 100644
--- a/src/SelfServe/SelfServeComponent.tsx
+++ b/src/SelfServe/SelfServeComponent.tsx
@@ -9,7 +9,6 @@ import {
Stack,
Text,
} from "@fluentui/react";
-import { TFunction } from "i18next";
import promiseRetry, { AbortError, Options } from "p-retry";
import React from "react";
import { WithTranslation } from "react-i18next";
@@ -81,7 +80,7 @@ export class SelfServeComponent extends React.Component string;
componentDidMount(): void {
this.performRefresh().then(() => {
@@ -119,7 +118,7 @@ export class SelfServeComponent extends React.Component string;
}
private onError = (hasErrors: boolean): void => {
diff --git a/src/SelfServe/SelfServeUtils.tsx b/src/SelfServe/SelfServeUtils.tsx
index ef4cb614c..6265a4a6b 100644
--- a/src/SelfServe/SelfServeUtils.tsx
+++ b/src/SelfServe/SelfServeUtils.tsx
@@ -41,27 +41,10 @@ export enum SelfServeType {
*/
export enum BladeType {
/**
- * Keys blade of a Azure Cosmos DB for NoSQL account.
+ * Connection Strings blade of a Azure Cosmos DB account.
*/
- SqlKeys = "keys",
- /**
- * Keys blade of a Azure Cosmos DB for MongoDB account.
- */
- MongoKeys = "mongoDbKeys",
- /**
- * Keys blade of a Azure Cosmos DB for Apache Cassandra account.
- */
- CassandraKeys = "cassandraDbKeys",
- /**
- * Keys blade of a Azure Cosmos DB for Apache Gremlin account.
- */
- // TODO This is a obviously a bug, but for now, let's ignore the eslint error
- // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values
- GremlinKeys = "keys",
- /**
- * Keys blade of a Azure Cosmos DB for Table account.
- */
- TableKeys = "tableKeys",
+ ConnectionStrings = "Connection%20strings",
+
/**
* Metrics blade of an Azure Cosmos DB account.
*/
diff --git a/src/SelfServe/SqlX/SqlX.tsx b/src/SelfServe/SqlX/SqlX.tsx
index 43bb745e6..42f361511 100644
--- a/src/SelfServe/SqlX/SqlX.tsx
+++ b/src/SelfServe/SqlX/SqlX.tsx
@@ -44,7 +44,7 @@ const connectionStringValue: Description = {
textTKey: "ConnectionStringText",
type: DescriptionType.Text,
link: {
- href: generateBladeLink(BladeType.SqlKeys),
+ href: generateBladeLink(BladeType.ConnectionStrings),
textTKey: "KeysBlade",
},
};
diff --git a/src/Shared/StorageUtility.ts b/src/Shared/StorageUtility.ts
index 7f5c275ce..598f1d6a6 100644
--- a/src/Shared/StorageUtility.ts
+++ b/src/Shared/StorageUtility.ts
@@ -36,6 +36,8 @@ export enum StorageKey {
AppState,
MongoGuidRepresentation,
IgnorePartitionKeyOnDocumentUpdate,
+ PinnedDatabases,
+ DatabaseSortOrder,
}
export const hasRUThresholdBeenConfigured = (): boolean => {
diff --git a/src/Utils/AuthorizationUtils.test.ts b/src/Utils/AuthorizationUtils.test.ts
index 650f2ed17..305b1cc9d 100644
--- a/src/Utils/AuthorizationUtils.test.ts
+++ b/src/Utils/AuthorizationUtils.test.ts
@@ -27,7 +27,7 @@ describe("AuthorizationUtils", () => {
enableKoResourceTree: false,
enableThroughputBuckets: false,
hostedDataExplorer: false,
- sandboxNotebookOutputs: false,
+ sandboxNotebookOutputs: true,
showMinRUSurvey: false,
ttl90Days: false,
enableThroughputCap: false,
@@ -43,6 +43,7 @@ describe("AuthorizationUtils", () => {
partitionKeyDefault: false,
partitionKeyDefault2: false,
notebooksDownBanner: false,
+ enableRestoreContainer: false,
},
});
};
diff --git a/src/Utils/AuthorizationUtils.ts b/src/Utils/AuthorizationUtils.ts
index 84d4cfcc4..26dcd5d5d 100644
--- a/src/Utils/AuthorizationUtils.ts
+++ b/src/Utils/AuthorizationUtils.ts
@@ -8,6 +8,8 @@ import * as Logger from "../Common/Logger";
import { configContext } from "../ConfigContext";
import { DatabaseAccount } from "../Contracts/DataModels";
import * as ViewModels from "../Contracts/ViewModels";
+import { isExpectedError } from "../Metrics/ErrorClassification";
+import { scenarioMonitor } from "../Metrics/ScenarioMonitor";
import { trace, traceFailure } from "../Shared/Telemetry/TelemetryProcessor";
import { UserContext, userContext } from "../UserContext";
@@ -127,6 +129,10 @@ export async function acquireMsalTokenForAccount(
acquireTokenType: silent ? "silent" : "interactive",
errorMessage: JSON.stringify(error),
});
+ // Mark expected failure for health metrics so timeout emits healthy
+ if (isExpectedError(error)) {
+ scenarioMonitor.markExpectedFailure();
+ }
throw error;
}
} else {
@@ -169,7 +175,10 @@ export async function acquireTokenWithMsal(
acquireTokenType: "interactive",
errorMessage: JSON.stringify(interactiveError),
});
-
+ // Mark expected failure for health metrics so timeout emits healthy
+ if (isExpectedError(interactiveError)) {
+ scenarioMonitor.markExpectedFailure();
+ }
throw interactiveError;
}
} else {
@@ -178,7 +187,10 @@ export async function acquireTokenWithMsal(
acquireTokenType: "silent",
errorMessage: JSON.stringify(silentError),
});
-
+ // Mark expected failure for health metrics so timeout emits healthy
+ if (isExpectedError(silentError)) {
+ scenarioMonitor.markExpectedFailure();
+ }
throw silentError;
}
}
diff --git a/src/Utils/QueryUtils.test.ts b/src/Utils/QueryUtils.test.ts
index 7da3d381c..b8d072e28 100644
--- a/src/Utils/QueryUtils.test.ts
+++ b/src/Utils/QueryUtils.test.ts
@@ -4,7 +4,12 @@ import * as sinon from "sinon";
import * as DataModels from "../Contracts/DataModels";
import * as ViewModels from "../Contracts/ViewModels";
import * as QueryUtils from "./QueryUtils";
-import { defaultQueryFields, extractPartitionKeyValues, getValueForPath } from "./QueryUtils";
+import {
+ defaultQueryFields,
+ extractPartitionKeyValues,
+ getValueForPath,
+ stripDoubleQuotesFromSegment,
+} from "./QueryUtils";
const documentContent = {
"Volcano Name": "Adams",
@@ -279,5 +284,116 @@ describe("Query Utils", () => {
expect(partitionKeyValues.length).toBe(2);
expect(partitionKeyValues).toEqual([null, {}]);
});
+
+ it("should extract partition key value when path has enclosing double quotes", () => {
+ const docWithSpecialKey = {
+ id: "test-id",
+ "partition-key": "some-value",
+ };
+
+ const partitionKeyDefinition: PartitionKeyDefinition = {
+ kind: PartitionKeyKind.Hash,
+ paths: ['/"partition-key"'],
+ };
+
+ const partitionKeyValues: PartitionKey[] = extractPartitionKeyValues(docWithSpecialKey, partitionKeyDefinition);
+ expect(partitionKeyValues.length).toBe(1);
+ expect(partitionKeyValues[0]).toEqual("some-value");
+ });
+
+ it("should extract nested partition key value when path segments have enclosing double quotes", () => {
+ const docWithSpecialKey = {
+ id: "test-id",
+ "my-field": {
+ "sub-field": 42,
+ },
+ };
+
+ const partitionKeyDefinition: PartitionKeyDefinition = {
+ kind: PartitionKeyKind.Hash,
+ paths: ['/"my-field"/"sub-field"'],
+ };
+
+ const partitionKeyValues: PartitionKey[] = extractPartitionKeyValues(docWithSpecialKey, partitionKeyDefinition);
+ expect(partitionKeyValues.length).toBe(1);
+ expect(partitionKeyValues[0]).toEqual(42);
+ });
+
+ it("should return {} for missing double-quoted partition key", () => {
+ const docWithSpecialKey = {
+ id: "test-id",
+ };
+
+ const partitionKeyDefinition: PartitionKeyDefinition = {
+ kind: PartitionKeyKind.Hash,
+ paths: ['/"partition-key"'],
+ };
+
+ const partitionKeyValues: PartitionKey[] = extractPartitionKeyValues(docWithSpecialKey, partitionKeyDefinition);
+ expect(partitionKeyValues.length).toBe(1);
+ expect(partitionKeyValues[0]).toEqual({});
+ });
+
+ it("should handle multi-hash with mixed quoted and unquoted paths", () => {
+ const doc = {
+ id: "test-id",
+ Country: "Japan",
+ "partition-key": "hello",
+ };
+
+ const partitionKeyDefinition: PartitionKeyDefinition = {
+ kind: PartitionKeyKind.MultiHash,
+ paths: ["/Country", '/"partition-key"'],
+ };
+
+ const partitionKeyValues: PartitionKey[] = extractPartitionKeyValues(doc, partitionKeyDefinition);
+ expect(partitionKeyValues.length).toBe(2);
+ expect(partitionKeyValues).toEqual(["Japan", "hello"]);
+ });
+
+ it("should extract partition key value when path has surrounding whitespace", () => {
+ const doc = {
+ id: "test-id",
+ Country: "United States",
+ Location: {
+ type: "Point",
+ },
+ };
+
+ const partitionKeyDefinition: PartitionKeyDefinition = {
+ kind: PartitionKeyKind.MultiHash,
+ paths: ["/ Country ", "/ Location / type "],
+ };
+
+ const partitionKeyValues: PartitionKey[] = extractPartitionKeyValues(doc, partitionKeyDefinition);
+ expect(partitionKeyValues.length).toBe(2);
+ expect(partitionKeyValues).toEqual(["United States", "Point"]);
+ });
+ });
+
+ describe("stripDoubleQuotesFromSegment", () => {
+ it("should strip enclosing double quotes", () => {
+ expect(stripDoubleQuotesFromSegment('"partition-key"')).toBe("partition-key");
+ });
+
+ it("should not strip if only opening quote", () => {
+ expect(stripDoubleQuotesFromSegment('"partition-key')).toBe('"partition-key');
+ });
+
+ it("should not strip if only closing quote", () => {
+ expect(stripDoubleQuotesFromSegment('partition-key"')).toBe('partition-key"');
+ });
+
+ it("should return empty string when stripping quotes from empty quoted string", () => {
+ expect(stripDoubleQuotesFromSegment('""')).toBe("");
+ });
+
+ it("should not modify unquoted segments", () => {
+ expect(stripDoubleQuotesFromSegment("Country")).toBe("Country");
+ });
+
+ it("should not strip single quotes", () => {
+ expect(stripDoubleQuotesFromSegment("'partition-key'")).toBe("'partition-key'");
+ });
});
});
diff --git a/src/Utils/QueryUtils.ts b/src/Utils/QueryUtils.ts
index 08c7a73d0..d5a93a660 100644
--- a/src/Utils/QueryUtils.ts
+++ b/src/Utils/QueryUtils.ts
@@ -116,6 +116,17 @@ export const queryPagesUntilContentPresent = async (
return await doRequest(firstItemIndex);
};
+/**
+ * Strips enclosing double quotes from a partition key path segment.
+ * e.g., '"partition-key"' -> 'partition-key'
+ */
+export const stripDoubleQuotesFromSegment = (segment: string): string => {
+ if (segment.length >= 2 && segment.charAt(0) === '"' && segment.charAt(segment.length - 1) === '"') {
+ return segment.slice(1, -1);
+ }
+ return segment;
+};
+
/* eslint-disable @typescript-eslint/no-explicit-any */
export const getValueForPath = (content: any, pathSegments: string[]): any => {
if (pathSegments.length === 0) {
@@ -146,7 +157,11 @@ export const extractPartitionKeyValues = (
const partitionKeyValues: PartitionKey[] = [];
partitionKeyDefinition.paths.forEach((partitionKeyPath: string) => {
- const pathSegments: string[] = partitionKeyPath.substring(1).split("/");
+ const pathSegments: string[] = partitionKeyPath
+ .substring(1)
+ .split("/")
+ .map(stripDoubleQuotesFromSegment)
+ .map((s) => s.trim());
const value = getValueForPath(documentContent, pathSegments);
if (value !== undefined) {
diff --git a/src/hooks/useKnockoutExplorer.ts b/src/hooks/useKnockoutExplorer.ts
index 08c926bf8..b4a568e2c 100644
--- a/src/hooks/useKnockoutExplorer.ts
+++ b/src/hooks/useKnockoutExplorer.ts
@@ -165,7 +165,7 @@ async function configureFabric(): Promise {
explorer = createExplorerFabricLegacy(initializationMessage, data.version);
await scheduleRefreshFabricToken(true);
resolve(explorer);
- await explorer.refreshAllDatabases();
+ await explorer.databasesRefreshed;
if (userContext.fabricContext.isVisible) {
firstContainerOpened = true;
openFirstContainer(explorer, userContext.fabricContext.databaseName);
@@ -189,7 +189,7 @@ async function configureFabric(): Promise {
}
resolve(explorer);
- await explorer.refreshAllDatabases();
+ await explorer.databasesRefreshed;
const { databaseName } = userContext.fabricContext;
if (userContext.fabricContext.isVisible && databaseName) {
diff --git a/src/i18n.ts b/src/i18n.ts
index 9268ada97..151d79801 100644
--- a/src/i18n.ts
+++ b/src/i18n.ts
@@ -1,16 +1,35 @@
import i18n from "i18next";
import LanguageDetector from "i18next-browser-languagedetector";
+import resourcesToBackend from "i18next-resources-to-backend";
import { initReactI18next } from "react-i18next";
+import enResources from "./Localization/en/Resources.json";
i18n
.use(LanguageDetector)
+ .use(resourcesToBackend((lng: string, ns: string) => import(`./Localization/${lng}/${ns}.json`)))
.use(initReactI18next)
.init({
fallbackLng: "en",
+ defaultNS: "Resources",
+ ns: ["Resources"],
+ // Statically bundle English resources so they are available synchronously on
+ // the very first render. Without this the async dynamic-import may not resolve
+ // in time (especially in incognito / cold-cache scenarios) and components would
+ // briefly show raw translation keys instead of translated strings.
+ resources: {
+ en: {
+ Resources: enResources,
+ },
+ },
+ // Allow the resources-to-backend plugin to still load other languages and
+ // namespaces dynamically; `partialBundledLanguages` tells i18next that only
+ // some languages are provided statically.
+ partialBundledLanguages: true,
detection: { order: ["navigator", "cookie", "localStorage", "sessionStorage", "querystring", "htmlTag"] },
debug: process.env.NODE_ENV === "development",
keySeparator: ".",
interpolation: {
+ escapeValue: false,
formatSeparator: ",",
},
react: {
diff --git a/src/setupTests.ts b/src/setupTests.ts
index 9d89b68cf..720a385d8 100644
--- a/src/setupTests.ts
+++ b/src/setupTests.ts
@@ -4,9 +4,14 @@ import Adapter from "enzyme-adapter-react-16";
import "jest-canvas-mock";
import enableHooks from "jest-react-hooks-shallow";
import { TextDecoder, TextEncoder } from "util";
+import i18n from "./i18n";
+import enResources from "./Localization/en/Resources.json";
configure({ adapter: new Adapter() });
initializeIcons();
+// Load English translations synchronously so t() returns real values in tests
+i18n.addResourceBundle("en", "Resources", enResources, true, true);
+
if (typeof window.URL.createObjectURL === "undefined") {
Object.defineProperty(window.URL, "createObjectURL", { value: () => {} });
}
diff --git a/test/CORSBypass.ts b/test/CORSBypass.ts
index be52c95fa..881013c69 100644
--- a/test/CORSBypass.ts
+++ b/test/CORSBypass.ts
@@ -2,20 +2,54 @@ import { Page } from "@playwright/test";
export async function setupCORSBypass(page: Page) {
await page.route("**/api/mongo/explorer{,/**}", async (route) => {
+ const request = route.request();
+ const origin = request.headers()["origin"];
+
+ // If there's no origin, it's not a CORS request. Let it proceed without modification.
+ if (!origin) {
+ await route.continue();
+ return;
+ }
+
+ //// Handle preflight (OPTIONS) requests separately.
+ // These should not be forwarded to the target server.
+ if (request.method() === "OPTIONS") {
+ await route.fulfill({
+ status: 204, // No Content
+ headers: {
+ "Access-Control-Allow-Origin": origin,
+ "Access-Control-Allow-Credentials": "true",
+ "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS,HEAD",
+ "Access-Control-Request-Headers": "*, x-ms-continuation",
+ "Access-Control-Max-Age": "86400", // Cache preflight response for 1 day
+ Vary: "Origin",
+ },
+ });
+ return;
+ }
+
+ // Handle the actual GET/POST request
const response = await route.fetch({
headers: {
- ...route.request().headers(),
+ ...request.headers(),
},
});
+ const responseHeaders = response.headers();
+ // Clean up any pre-existing CORS headers from the real response to avoid conflicts.
+ delete responseHeaders["access-control-allow-origin"];
+ delete responseHeaders["access-control-allow-credentials"];
+
await route.fulfill({
status: response.status(),
headers: {
- ...response.headers(),
- "Access-Control-Allow-Origin": "*",
- "Access-Control-Allow-Methods": "*",
+ ...responseHeaders,
+ "Access-Control-Allow-Origin": origin,
+ "Access-Control-Allow-Credentials": "true",
+ "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS,HEAD",
"Access-Control-Allow-Headers": "*",
- "Access-Control-Allow-Credentials": "*",
+ "Access-Control-Expose-Headers": "x-ms-continuation,x-ms-request-charge,x-ms-session-token",
+ Vary: "Origin",
},
body: await response.body(),
});
diff --git a/test/component-fixtures/searchableDropdown/SearchableDropdownFixture.tsx b/test/component-fixtures/searchableDropdown/SearchableDropdownFixture.tsx
new file mode 100644
index 000000000..4594781ec
--- /dev/null
+++ b/test/component-fixtures/searchableDropdown/SearchableDropdownFixture.tsx
@@ -0,0 +1,112 @@
+import { initializeIcons, Stack } from "@fluentui/react";
+import * as React from "react";
+import * as ReactDOM from "react-dom";
+import { SearchableDropdown } from "../../../src/Common/SearchableDropdown";
+
+// Initialize Fluent UI icons
+initializeIcons();
+
+/**
+ * Mock subscription data matching the Subscription interface shape.
+ */
+interface MockSubscription {
+ subscriptionId: string;
+ displayName: string;
+ state: string;
+}
+
+/**
+ * Mock database account data matching the DatabaseAccount interface shape.
+ */
+interface MockDatabaseAccount {
+ id: string;
+ name: string;
+ location: string;
+ type: string;
+ kind: string;
+}
+
+const mockSubscriptions: MockSubscription[] = [
+ { subscriptionId: "sub-001", displayName: "Development Subscription", state: "Enabled" },
+ { subscriptionId: "sub-002", displayName: "Production Subscription", state: "Enabled" },
+ { subscriptionId: "sub-003", displayName: "Testing Subscription", state: "Enabled" },
+ { subscriptionId: "sub-004", displayName: "Staging Subscription", state: "Enabled" },
+ { subscriptionId: "sub-005", displayName: "QA Subscription", state: "Enabled" },
+];
+
+const mockAccounts: MockDatabaseAccount[] = [
+ {
+ id: "acc-001",
+ name: "cosmos-dev-westus",
+ location: "westus",
+ type: "Microsoft.DocumentDB/databaseAccounts",
+ kind: "GlobalDocumentDB",
+ },
+ {
+ id: "acc-002",
+ name: "cosmos-prod-eastus",
+ location: "eastus",
+ type: "Microsoft.DocumentDB/databaseAccounts",
+ kind: "GlobalDocumentDB",
+ },
+ {
+ id: "acc-003",
+ name: "cosmos-test-northeurope",
+ location: "northeurope",
+ type: "Microsoft.DocumentDB/databaseAccounts",
+ kind: "GlobalDocumentDB",
+ },
+ {
+ id: "acc-004",
+ name: "cosmos-staging-westus2",
+ location: "westus2",
+ type: "Microsoft.DocumentDB/databaseAccounts",
+ kind: "GlobalDocumentDB",
+ },
+];
+
+const SearchableDropdownTestFixture: React.FC = () => {
+ const [selectedSubscription, setSelectedSubscription] = React.useState(null);
+ const [selectedAccount, setSelectedAccount] = React.useState(null);
+
+ return (
+
+
+
+ label="Subscription"
+ items={mockSubscriptions}
+ selectedItem={selectedSubscription}
+ onSelect={(sub) => setSelectedSubscription(sub)}
+ getKey={(sub) => sub.subscriptionId}
+ getDisplayText={(sub) => sub.displayName}
+ placeholder="Select a Subscription"
+ filterPlaceholder="Search by Subscription name"
+ className="subscriptionDropdown"
+ />
+
+
+
+
+ label="Cosmos DB Account"
+ items={selectedSubscription ? mockAccounts : []}
+ selectedItem={selectedAccount}
+ onSelect={(account) => setSelectedAccount(account)}
+ getKey={(account) => account.id}
+ getDisplayText={(account) => account.name}
+ placeholder="Select an Account"
+ filterPlaceholder="Search by Account name"
+ className="accountDropdown"
+ disabled={!selectedSubscription}
+ />
+
+
+ {/* Display selection state for test assertions */}
+
+
{selectedSubscription?.displayName || ""}
+
{selectedAccount?.name || ""}
+
+
+ );
+};
+
+ReactDOM.render( , document.getElementById("root"));
diff --git a/test/component-fixtures/searchableDropdown/searchableDropdown.html b/test/component-fixtures/searchableDropdown/searchableDropdown.html
new file mode 100644
index 000000000..e9c32c2c9
--- /dev/null
+++ b/test/component-fixtures/searchableDropdown/searchableDropdown.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ SearchableDropdown Test Fixture
+
+
+
+
+
diff --git a/test/component-fixtures/searchableDropdown/searchableDropdown.spec.ts b/test/component-fixtures/searchableDropdown/searchableDropdown.spec.ts
new file mode 100644
index 000000000..fb61659db
--- /dev/null
+++ b/test/component-fixtures/searchableDropdown/searchableDropdown.spec.ts
@@ -0,0 +1,251 @@
+import { expect, test } from "@playwright/test";
+
+const FIXTURE_URL = "https://127.0.0.1:1234/searchableDropdownFixture.html";
+
+test.describe("SearchableDropdown Component", () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto(FIXTURE_URL);
+ await page.waitForSelector("[data-test='subscription-dropdown']");
+ });
+
+ test("renders subscription dropdown with label and placeholder", async ({ page }) => {
+ await expect(page.getByText("Subscription", { exact: true })).toBeVisible();
+ await expect(page.getByText("Select a Subscription")).toBeVisible();
+ });
+
+ test("renders account dropdown as disabled when no subscription is selected", async ({ page }) => {
+ const accountButton = page.locator("[data-test='account-dropdown'] button");
+ await expect(accountButton).toBeDisabled();
+ });
+
+ test("opens subscription dropdown and shows all mock items", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+
+ await expect(page.getByText("Development Subscription")).toBeVisible();
+ await expect(page.getByText("Production Subscription")).toBeVisible();
+ await expect(page.getByText("Testing Subscription")).toBeVisible();
+ await expect(page.getByText("Staging Subscription")).toBeVisible();
+ await expect(page.getByText("QA Subscription")).toBeVisible();
+ });
+
+ test("filters subscription items by search text", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+
+ const searchBox = page.getByPlaceholder("Search by Subscription name");
+ await searchBox.fill("Dev");
+
+ await expect(page.getByText("Development Subscription")).toBeVisible();
+ await expect(page.getByText("Production Subscription")).not.toBeVisible();
+ await expect(page.getByText("Testing Subscription")).not.toBeVisible();
+ });
+
+ test("performs case-insensitive filtering", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+
+ const searchBox = page.getByPlaceholder("Search by Subscription name");
+ await searchBox.fill("production");
+
+ await expect(page.getByText("Production Subscription")).toBeVisible();
+ await expect(page.getByText("Development Subscription")).not.toBeVisible();
+ });
+
+ test("shows 'No items found' when search yields no results", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+
+ const searchBox = page.getByPlaceholder("Search by Subscription name");
+ await searchBox.fill("NonexistentSubscription");
+
+ await expect(page.getByText("No items found")).toBeVisible();
+ });
+
+ test("selects a subscription and updates button text", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Development Subscription").click();
+
+ // Dropdown should close and show selected item
+ await expect(
+ page.locator("[data-test='subscription-dropdown']").getByText("Development Subscription"),
+ ).toBeVisible();
+ // External state should update
+ await expect(page.locator("[data-test='selected-subscription']")).toHaveText("Development Subscription");
+ });
+
+ test("enables account dropdown after subscription is selected", async ({ page }) => {
+ // Select a subscription first
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Production Subscription").click();
+
+ // Account dropdown should now be enabled
+ const accountButton = page.locator("[data-test='account-dropdown'] button");
+ await expect(accountButton).toBeEnabled();
+ });
+
+ test("shows account items after subscription selection", async ({ page }) => {
+ // Select subscription
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Development Subscription").click();
+
+ // Open account dropdown
+ await page.getByText("Select an Account").click();
+
+ await expect(page.getByText("cosmos-dev-westus")).toBeVisible();
+ await expect(page.getByText("cosmos-prod-eastus")).toBeVisible();
+ await expect(page.getByText("cosmos-test-northeurope")).toBeVisible();
+ await expect(page.getByText("cosmos-staging-westus2")).toBeVisible();
+ });
+
+ test("filters account items by search text", async ({ page }) => {
+ // Select subscription
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Testing Subscription").click();
+
+ // Open account dropdown and filter
+ await page.getByText("Select an Account").click();
+ const searchBox = page.getByPlaceholder("Search by Account name");
+ await searchBox.fill("prod");
+
+ await expect(page.getByText("cosmos-prod-eastus")).toBeVisible();
+ await expect(page.getByText("cosmos-dev-westus")).not.toBeVisible();
+ });
+
+ test("selects an account and updates both dropdowns", async ({ page }) => {
+ // Select subscription
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Staging Subscription").click();
+
+ // Select account
+ await page.getByText("Select an Account").click();
+ await page.getByText("cosmos-dev-westus").click();
+
+ // Verify both selections
+ await expect(page.locator("[data-test='selected-subscription']")).toHaveText("Staging Subscription");
+ await expect(page.locator("[data-test='selected-account']")).toHaveText("cosmos-dev-westus");
+ });
+
+ test("clears search filter when dropdown is closed and reopened", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+
+ const searchBox = page.getByPlaceholder("Search by Subscription name");
+ await searchBox.fill("Dev");
+
+ // Select an item to close dropdown
+ await page.getByText("Development Subscription").click();
+
+ // Reopen dropdown
+ await page.locator("[data-test='subscription-dropdown']").getByText("Development Subscription").click();
+
+ // Search box should be cleared
+ const reopenedSearchBox = page.getByPlaceholder("Search by Subscription name");
+ await expect(reopenedSearchBox).toHaveValue("");
+
+ // All items should be visible again
+ await expect(page.getByText("Production Subscription")).toBeVisible();
+ await expect(page.getByText("Testing Subscription")).toBeVisible();
+ });
+
+ test("renders account dropdown with label and placeholder after subscription selected", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Development Subscription").click();
+
+ await expect(page.getByText("Cosmos DB Account")).toBeVisible();
+ await expect(page.getByText("Select an Account")).toBeVisible();
+ });
+
+ test("performs case-insensitive filtering on account dropdown", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Development Subscription").click();
+
+ await page.getByText("Select an Account").click();
+ const searchBox = page.getByPlaceholder("Search by Account name");
+ await searchBox.fill("COSMOS-TEST");
+
+ await expect(page.getByText("cosmos-test-northeurope")).toBeVisible();
+ await expect(page.getByText("cosmos-dev-westus")).not.toBeVisible();
+ await expect(page.getByText("cosmos-prod-eastus")).not.toBeVisible();
+ await expect(page.getByText("cosmos-staging-westus2")).not.toBeVisible();
+ });
+
+ test("shows 'No items found' in account dropdown when search yields no results", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Production Subscription").click();
+
+ await page.getByText("Select an Account").click();
+ const searchBox = page.getByPlaceholder("Search by Account name");
+ await searchBox.fill("nonexistent-account");
+
+ await expect(page.getByText("No items found")).toBeVisible();
+ });
+
+ test("clears account search filter when dropdown is closed and reopened", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Testing Subscription").click();
+
+ // Open account dropdown and filter
+ await page.getByText("Select an Account").click();
+ const searchBox = page.getByPlaceholder("Search by Account name");
+ await searchBox.fill("prod");
+
+ // Select an item to close
+ await page.getByText("cosmos-prod-eastus").click();
+
+ // Reopen and verify filter is cleared
+ await page.locator("[data-test='account-dropdown']").getByText("cosmos-prod-eastus").click();
+ const reopenedSearchBox = page.getByPlaceholder("Search by Account name");
+ await expect(reopenedSearchBox).toHaveValue("");
+
+ // All items visible again
+ await expect(page.getByText("cosmos-dev-westus")).toBeVisible();
+ await expect(page.getByText("cosmos-test-northeurope")).toBeVisible();
+ await expect(page.getByText("cosmos-staging-westus2")).toBeVisible();
+ });
+
+ test("account dropdown updates button text after selection", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("QA Subscription").click();
+
+ await page.getByText("Select an Account").click();
+ await page.getByText("cosmos-test-northeurope").click();
+
+ // Button should show selected account name
+ await expect(page.locator("[data-test='account-dropdown']").getByText("cosmos-test-northeurope")).toBeVisible();
+ await expect(page.locator("[data-test='selected-account']")).toHaveText("cosmos-test-northeurope");
+ });
+
+ test("account dropdown shows all 4 mock accounts", async ({ page }) => {
+ await page.getByText("Select a Subscription").click();
+ await page.getByText("Staging Subscription").click();
+
+ await page.getByText("Select an Account").click();
+
+ await expect(page.getByText("cosmos-dev-westus")).toBeVisible();
+ await expect(page.getByText("cosmos-prod-eastus")).toBeVisible();
+ await expect(page.getByText("cosmos-test-northeurope")).toBeVisible();
+ await expect(page.getByText("cosmos-staging-westus2")).toBeVisible();
+ });
+
+ test("shows 'No Cosmos DB Accounts Found' when account list is empty (no subscription selected)", async ({
+ page,
+ }) => {
+ // The account dropdown shows "No Cosmos DB Accounts Found" when disabled with no items
+ const accountButtonText = page.locator("[data-test='account-dropdown'] button");
+ await expect(accountButtonText).toHaveText("No Cosmos DB Accounts Found");
+ });
+
+ test("full flow: select subscription, filter accounts, select account", async ({ page }) => {
+ // Step 1: Select a subscription
+ await page.getByText("Select a Subscription").click();
+ const subSearchBox = page.getByPlaceholder("Search by Subscription name");
+ await subSearchBox.fill("QA");
+ await page.getByText("QA Subscription").click();
+
+ // Step 2: Open account dropdown and filter
+ await page.getByText("Select an Account").click();
+ const accountSearchBox = page.getByPlaceholder("Search by Account name");
+ await accountSearchBox.fill("staging");
+ await page.getByText("cosmos-staging-westus2").click();
+
+ // Step 3: Verify final state
+ await expect(page.locator("[data-test='selected-subscription']")).toHaveText("QA Subscription");
+ await expect(page.locator("[data-test='selected-account']")).toHaveText("cosmos-staging-westus2");
+ });
+});
diff --git a/test/fx.ts b/test/fx.ts
index 1de8be90d..5c19658ff 100644
--- a/test/fx.ts
+++ b/test/fx.ts
@@ -58,7 +58,9 @@ export const defaultAccounts: Record = {
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";
export const TEST_AUTOSCALE_THROUGHPUT_RU = 1000;
+export const TEST_MANUAL_THROUGHPUT_RU = 800;
export const TEST_AUTOSCALE_MAX_THROUGHPUT_RU_2K = 2000;
+export const TEST_AUTOSCALE_MAX_THROUGHPUT_RU_4K = 4000;
export const TEST_MANUAL_THROUGHPUT_RU_2K = 2000;
export const ONE_MINUTE_MS: number = 60 * 1000;
@@ -248,7 +250,7 @@ class TreeNode {
// Try three times to wait for the node to expand.
for (let i = 0; i < RETRY_COUNT; i++) {
try {
- await tree.waitFor({ state: "visible" });
+ await tree.waitFor({ state: "visible", timeout: 30000 });
// The tree has expanded, let's get out of here
return true;
} catch {
@@ -378,9 +380,11 @@ type PanelOpenOptions = {
export enum CommandBarButton {
Save = "Save",
+ Delete = "Delete",
Execute = "Execute",
ExecuteQuery = "Execute Query",
UploadItem = "Upload Item",
+ NewDocument = "New Document",
}
/** Helper class that provides locator methods for DataExplorer components, on top of a Frame */
@@ -478,7 +482,7 @@ export class DataExplorer {
return await this.waitForNode(`${databaseId}/${containerId}/Documents`);
}
- async waitForCommandBarButton(label: string, timeout?: number): Promise {
+ async waitForCommandBarButton(label: CommandBarButton, timeout?: number): Promise {
const commandBar = this.commandBarButton(label);
await commandBar.waitFor({ state: "visible", timeout });
return commandBar;
@@ -515,15 +519,6 @@ export class DataExplorer {
const containerNode = await this.waitForContainerNode(context.database.id, context.container.id);
await containerNode.expand();
- // refresh tree to remove deleted database
- const consoleMessages = await this.getNotificationConsoleMessages();
- const refreshButton = this.frame.getByTestId("Sidebar/RefreshButton");
- await refreshButton.click();
- await expect(consoleMessages).toContainText("Successfully refreshed databases", {
- timeout: ONE_MINUTE_MS,
- });
- await this.collapseNotificationConsole();
-
const scaleAndSettingsButton = this.frame.getByTestId(
`TreeNode:${context.database.id}/${context.container.id}/Scale & Settings`,
);
diff --git a/test/mongo/document.spec.ts b/test/mongo/document.spec.ts
index b6703c49a..cf98ebcc7 100644
--- a/test/mongo/document.spec.ts
+++ b/test/mongo/document.spec.ts
@@ -1,7 +1,7 @@
import { expect, test } from "@playwright/test";
import { setupCORSBypass } from "../CORSBypass";
-import { DataExplorer, DocumentsTab, TestAccount } from "../fx";
+import { CommandBarButton, DataExplorer, DocumentsTab, TestAccount } from "../fx";
import { retry, serializeMongoToJson, setPartitionKeys } from "../testData";
import { documentTestCases } from "./testCases";
@@ -48,19 +48,20 @@ for (const { name, databaseId, containerId, documents } of documentTestCases) {
expect(resultData?._id).not.toBeNull();
expect(resultData?._id).toEqual(docId);
});
- test(`should be able to create and delete new document from ${docId}`, async () => {
+ test(`should be able to create and delete new document from ${docId}`, async ({ page }) => {
const span = documentsTab.documentsListPane.getByText(docId, { exact: true }).nth(0);
await span.waitFor();
await expect(span).toBeVisible();
await span.click();
+ await page.waitForTimeout(5000); // wait for 5 seconds to ensure document is fully loaded. waitforTimeout is not recommended generally but here we are working around flakiness in the test env
+
let newDocumentId;
await retry(async () => {
- const newDocumentButton = await explorer.waitForCommandBarButton("New Document", 5000);
+ const newDocumentButton = await explorer.waitForCommandBarButton(CommandBarButton.NewDocument, 5000);
await expect(newDocumentButton).toBeVisible();
await expect(newDocumentButton).toBeEnabled();
await newDocumentButton.click();
-
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
newDocumentId = `${Date.now().toString()}-delete`;
@@ -71,8 +72,9 @@ for (const { name, databaseId, containerId, documents } of documentTestCases) {
};
await documentsTab.resultsEditor.setText(JSON.stringify(newDocument));
- const saveButton = await explorer.waitForCommandBarButton("Save", 5000);
+ const saveButton = await explorer.waitForCommandBarButton(CommandBarButton.Save, 5000);
await saveButton.click({ timeout: 5000 });
+
await expect(saveButton).toBeHidden({ timeout: 5000 });
}, 3);
@@ -84,7 +86,7 @@ for (const { name, databaseId, containerId, documents } of documentTestCases) {
await newSpan.click();
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
- const deleteButton = await explorer.waitForCommandBarButton("Delete", 5000);
+ const deleteButton = await explorer.waitForCommandBarButton(CommandBarButton.Delete, 5000);
await deleteButton.click();
const deleteDialogButton = await explorer.waitForDialogButton("Delete", 5000);
diff --git a/test/mongo/pagination.spec.ts b/test/mongo/pagination.spec.ts
new file mode 100644
index 000000000..548d49184
--- /dev/null
+++ b/test/mongo/pagination.spec.ts
@@ -0,0 +1,132 @@
+import { expect, test } from "@playwright/test";
+import { setupCORSBypass } from "../CORSBypass";
+import { DataExplorer, QueryTab, TestAccount, CommandBarButton, Editor } from "../fx";
+import { serializeMongoToJson } from "../testData";
+
+const databaseId = "test-e2etests-mongo-pagination";
+const collectionId = "test-coll-mongo-pagination";
+let explorer: DataExplorer = null!;
+
+test.setTimeout(5 * 60 * 1000);
+
+test.describe("Test Mongo Pagination", () => {
+ let queryTab: QueryTab;
+ let queryEditor: Editor;
+
+ test.beforeEach("Open query tab", async ({ page }) => {
+ await setupCORSBypass(page);
+ explorer = await DataExplorer.open(page, TestAccount.MongoReadonly);
+
+ const containerNode = await explorer.waitForContainerNode(databaseId, collectionId);
+ await containerNode.expand();
+
+ const containerMenuNode = await explorer.waitForContainerDocumentsNode(databaseId, collectionId);
+ await containerMenuNode.openContextMenu();
+ await containerMenuNode.contextMenuItem("New Query").click();
+
+ queryTab = explorer.queryTab("tab0");
+ queryEditor = queryTab.editor();
+ await queryEditor.locator.waitFor({ timeout: 30 * 1000 });
+ await queryTab.executeCTA.waitFor();
+ await explorer.frame.getByTestId("NotificationConsole/ExpandCollapseButton").click();
+ await explorer.frame.getByTestId("NotificationConsole/Contents").waitFor();
+ });
+
+ test("should execute a query and load more results", async ({ page }) => {
+ const query = "{}";
+
+ await queryEditor.locator.click();
+ await queryEditor.setText(query);
+
+ const executeQueryButton = explorer.commandBarButton(CommandBarButton.ExecuteQuery);
+ await executeQueryButton.click();
+
+ // Wait for query execution to complete
+ await expect(queryTab.resultsView).toBeVisible({ timeout: 60000 });
+ await expect(queryTab.resultsEditor.locator).toBeAttached({ timeout: 30000 });
+
+ // Get initial results
+ const resultText = await queryTab.resultsEditor.text();
+
+ if (!resultText || resultText.trim() === "" || resultText.trim() === "[]") {
+ throw new Error("Query returned no results - the collection appears to be empty");
+ }
+
+ const resultData = serializeMongoToJson(resultText);
+
+ if (resultData.length === 0) {
+ throw new Error("Parsed results contain 0 documents - collection is empty");
+ }
+
+ if (resultData.length < 100) {
+ expect(resultData.length).toBeGreaterThan(0);
+ return;
+ }
+
+ expect(resultData.length).toBe(100);
+
+ // Pagination test
+ let totalPagesLoaded = 1;
+ const maxLoadMoreAttempts = 10;
+
+ for (let loadMoreAttempts = 0; loadMoreAttempts < maxLoadMoreAttempts; loadMoreAttempts++) {
+ const loadMoreButton = queryTab.resultsView.getByText("Load more");
+
+ try {
+ await expect(loadMoreButton).toBeVisible({ timeout: 5000 });
+ } catch {
+ // Load more button not visible - pagination complete
+ break;
+ }
+
+ const beforeClickText = await queryTab.resultsEditor.text();
+ const beforeClickHash = Buffer.from(beforeClickText || "")
+ .toString("base64")
+ .substring(0, 50);
+
+ await loadMoreButton.click();
+
+ // Wait for content to update
+ let editorContentChanged = false;
+ for (let waitAttempt = 1; waitAttempt <= 3; waitAttempt++) {
+ await page.waitForTimeout(2000);
+
+ const currentEditorText = await queryTab.resultsEditor.text();
+ const currentHash = Buffer.from(currentEditorText || "")
+ .toString("base64")
+ .substring(0, 50);
+
+ if (currentHash !== beforeClickHash) {
+ editorContentChanged = true;
+ break;
+ }
+ }
+
+ if (editorContentChanged) {
+ totalPagesLoaded++;
+ } else {
+ // No content change detected, stop pagination
+ break;
+ }
+
+ await page.waitForTimeout(1000);
+ }
+
+ // Final verification
+ const finalIndicator = queryTab.resultsView.locator("text=/\\d+ - \\d+/");
+ const finalIndicatorText = await finalIndicator.textContent();
+
+ if (finalIndicatorText) {
+ const match = finalIndicatorText.match(/(\d+) - (\d+)/);
+ if (match) {
+ const totalDocuments = parseInt(match[2]);
+ expect(totalDocuments).toBe(405);
+ expect(totalPagesLoaded).toBe(5);
+ } else {
+ throw new Error(`Invalid results indicator format: ${finalIndicatorText}`);
+ }
+ } else {
+ expect(totalPagesLoaded).toBe(5);
+ }
+ });
+});
diff --git a/test/sql/containercopy.spec.ts b/test/sql/containercopy.spec.ts
deleted file mode 100644
index eff5faca1..000000000
--- a/test/sql/containercopy.spec.ts
+++ /dev/null
@@ -1,505 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-import { expect, Frame, Locator, Page, test } from "@playwright/test";
-import { set } from "lodash";
-import { truncateName } from "../../src/Explorer/ContainerCopy/CopyJobUtils";
-import {
- ContainerCopy,
- getAccountName,
- getDropdownItemByNameOrPosition,
- interceptAndInspectApiRequest,
- TestAccount,
- waitForApiResponse,
-} from "../fx";
-import { createMultipleTestContainers } from "../testData";
-
-let page: Page;
-let wrapper: Locator = null!;
-let panel: Locator = null!;
-let frame: Frame = null!;
-let expectedCopyJobNameInitial: string = null!;
-let expectedJobName: string = "";
-let targetAccountName: string = "";
-let expectedSourceAccountName: string = "";
-let expectedSubscriptionName: string = "";
-const VISIBLE_TIMEOUT_MS = 30 * 1000;
-
-test.describe.configure({ mode: "serial" });
-
-test.describe("Container Copy", () => {
- test.beforeAll("Container Copy - Before All", async ({ browser }) => {
- await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 3 });
-
- page = await browser.newPage();
- ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly));
- expectedJobName = `test_job_${Date.now()}`;
- targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly);
- });
-
- test.afterEach("Container Copy - After Each", async () => {
- await page.unroute(/.*/, (route) => route.continue());
- });
-
- test("Loading and verifying the content of the page", async () => {
- expect(wrapper).not.toBeNull();
- await expect(wrapper.getByTestId("CommandBar/Button:Create Copy Job")).toBeVisible({ timeout: VISIBLE_TIMEOUT_MS });
- await expect(wrapper.getByTestId("CommandBar/Button:Refresh")).toBeVisible({ timeout: VISIBLE_TIMEOUT_MS });
- await expect(wrapper.getByTestId("CommandBar/Button:Feedback")).toBeVisible({ timeout: VISIBLE_TIMEOUT_MS });
- });
-
- test("Successfully create a copy job for offline migration", async () => {
- expect(wrapper).not.toBeNull();
- // Loading and verifying subscription & account dropdown
-
- const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job");
- await createCopyJobButton.click();
- panel = frame.getByTestId("Panel:Create copy job");
- await expect(panel).toBeVisible();
-
- await page.waitForTimeout(10 * 1000);
-
- const subscriptionDropdown = panel.getByTestId("subscription-dropdown");
-
- const expectedAccountName = targetAccountName;
- expectedSubscriptionName = await subscriptionDropdown.locator("span.ms-Dropdown-title").innerText();
-
- await subscriptionDropdown.click();
- const subscriptionItem = await getDropdownItemByNameOrPosition(
- frame,
- { name: expectedSubscriptionName },
- { ariaLabel: "Subscription" },
- );
- await subscriptionItem.click();
-
- // Load account dropdown based on selected subscription
-
- const accountDropdown = panel.getByTestId("account-dropdown");
- await expect(accountDropdown).toHaveText(new RegExp(expectedAccountName));
- await accountDropdown.click();
-
- const accountItem = await getDropdownItemByNameOrPosition(
- frame,
- { name: expectedAccountName },
- { ariaLabel: "Account" },
- );
- await accountItem.click();
-
- // Verifying online or offline migration functionality
- /**
- * This test verifies the functionality of the migration type radio that toggles between
- * online and offline container copy modes. It ensures that:
- * 1. When online mode is selected, the user is directed to a permissions screen
- * 2. When offline mode is selected, the user bypasses the permissions screen
- * 3. The UI correctly reflects the selected migration type throughout the workflow
- */
- const migrationTypeContainer = panel.getByTestId("migration-type");
- const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i });
- await onlineCopyRadioButton.click({ force: true });
-
- await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible();
-
- await panel.getByRole("button", { name: "Next" }).click();
-
- await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).toBeVisible();
- await expect(panel.getByText("Online container copy", { exact: true })).toBeVisible();
- await panel.getByRole("button", { name: "Previous" }).click();
-
- const offlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Offline mode/i });
- await offlineCopyRadioButton.click({ force: true });
-
- await expect(migrationTypeContainer.getByTestId("migration-type-description-offline")).toBeVisible();
-
- await panel.getByRole("button", { name: "Next" }).click();
-
- await expect(panel.getByTestId("Panel:SelectSourceAndTargetContainers")).toBeVisible();
- await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).not.toBeVisible();
-
- // Verifying source and target container selection
-
- const sourceContainerDropdown = panel.getByTestId("source-containerDropdown");
- expect(sourceContainerDropdown).toBeVisible();
- await expect(sourceContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/);
-
- const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown");
- await sourceDatabaseDropdown.click();
-
- const sourceDbDropdownItem = await getDropdownItemByNameOrPosition(
- frame,
- { position: 0 },
- { ariaLabel: "Database" },
- );
- await sourceDbDropdownItem.click();
-
- await expect(sourceContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
- await sourceContainerDropdown.click();
- const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition(
- frame,
- { position: 0 },
- { ariaLabel: "Container" },
- );
- await sourceContainerDropdownItem.click();
-
- const targetContainerDropdown = panel.getByTestId("target-containerDropdown");
- expect(targetContainerDropdown).toBeVisible();
- await expect(targetContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/);
-
- const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown");
- await targetDatabaseDropdown.click();
- const targetDbDropdownItem = await getDropdownItemByNameOrPosition(
- frame,
- { position: 0 },
- { ariaLabel: "Database" },
- );
- await targetDbDropdownItem.click();
-
- await expect(targetContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
- await targetContainerDropdown.click();
- const targetContainerDropdownItem1 = await getDropdownItemByNameOrPosition(
- frame,
- { position: 0 },
- { ariaLabel: "Container" },
- );
- await targetContainerDropdownItem1.click();
-
- await panel.getByRole("button", { name: "Next" }).click();
-
- const errorContainer = panel.getByTestId("Panel:ErrorContainer");
- await expect(errorContainer).toBeVisible();
- await expect(errorContainer).toHaveText(/Source and destination containers cannot be the same/i);
-
- // Reselect target container to be different from source container
- await targetContainerDropdown.click();
- const targetContainerDropdownItem2 = await getDropdownItemByNameOrPosition(
- frame,
- { position: 1 },
- { ariaLabel: "Container" },
- );
- await targetContainerDropdownItem2.click();
-
- const selectedSourceDatabase = await sourceDatabaseDropdown.innerText();
- const selectedSourceContainer = await sourceContainerDropdown.innerText();
- const selectedTargetDatabase = await targetDatabaseDropdown.innerText();
- const selectedTargetContainer = await targetContainerDropdown.innerText();
- expectedCopyJobNameInitial = `${truncateName(selectedSourceDatabase)}.${truncateName(
- selectedSourceContainer,
- )}_${truncateName(selectedTargetDatabase)}.${truncateName(selectedTargetContainer)}`;
-
- await panel.getByRole("button", { name: "Next" }).click();
-
- await expect(errorContainer).not.toBeVisible();
- await expect(panel.getByTestId("Panel:PreviewCopyJob")).toBeVisible();
-
- // Verifying the preview of the copy job
- const previewContainer = panel.getByTestId("Panel:PreviewCopyJob");
- await expect(previewContainer).toBeVisible();
- await expect(previewContainer.getByTestId("source-subscription-name")).toHaveText(expectedSubscriptionName);
- await expect(previewContainer.getByTestId("source-account-name")).toHaveText(expectedAccountName);
- const jobNameInput = previewContainer.getByTestId("job-name-textfield");
- await expect(jobNameInput).toHaveValue(new RegExp(expectedCopyJobNameInitial));
- const primaryBtn = panel.getByRole("button", { name: "Copy", exact: true });
- await expect(primaryBtn).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
-
- await jobNameInput.fill("test job name");
- await expect(primaryBtn).toHaveClass(/(^|\s)is-disabled(\s|$)/);
-
- // Testing API request interception with duplicate job name
- const duplicateJobName = "test-job-name-1";
- await jobNameInput.fill(duplicateJobName);
-
- const copyButton = panel.getByRole("button", { name: "Copy", exact: true });
- const expectedErrorMessage = `Duplicate job name '${duplicateJobName}'`;
- await interceptAndInspectApiRequest(
- page,
- `${expectedAccountName}/dataTransferJobs/${duplicateJobName}`,
- "PUT",
- new Error(expectedErrorMessage),
- (url?: string) => url?.includes(duplicateJobName) ?? false,
- );
-
- let errorThrown = false;
- try {
- await copyButton.click();
- await page.waitForTimeout(2000);
- } catch (error: any) {
- errorThrown = true;
- expect(error.message).toContain("not allowed");
- }
- if (!errorThrown) {
- const errorContainer = panel.getByTestId("Panel:ErrorContainer");
- await expect(errorContainer).toBeVisible();
- await expect(errorContainer).toHaveText(new RegExp(expectedErrorMessage, "i"));
- }
-
- await expect(panel).toBeVisible();
-
- // Testing API request success with valid job name and verifying copy job creation
-
- const validJobName = expectedJobName;
-
- const copyJobCreationPromise = waitForApiResponse(
- page,
- `${expectedAccountName}/dataTransferJobs/${validJobName}`,
- "PUT",
- );
-
- await jobNameInput.fill(validJobName);
- await expect(copyButton).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
-
- await copyButton.click();
-
- const response = await copyJobCreationPromise;
- expect(response.ok()).toBe(true);
-
- await expect(panel).not.toBeVisible({ timeout: 10000 });
-
- const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page");
- await jobsListContainer.waitFor({ state: "visible" });
-
- const jobItem = jobsListContainer.getByText(validJobName);
- await jobItem.waitFor({ state: "visible" });
- await expect(jobItem).toBeVisible();
- });
-
- test("Verify Online or Offline Container Copy Permissions Panel", async () => {
- expect(wrapper).not.toBeNull();
-
- // Opening the Create Copy Job panel again to verify initial state
- const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job");
- await createCopyJobButton.click();
- panel = frame.getByTestId("Panel:Create copy job");
- await expect(panel).toBeVisible();
- await expect(panel.getByRole("heading", { name: "Create copy job" })).toBeVisible();
-
- // select different account dropdown
-
- const accountDropdown = panel.getByTestId("account-dropdown");
- await accountDropdown.click();
-
- const dropdownItemsWrapper = frame.locator("div.ms-Dropdown-items");
- expect(await dropdownItemsWrapper.getAttribute("aria-label")).toEqual("Account");
-
- const allDropdownItems = await dropdownItemsWrapper.locator(`button.ms-Dropdown-item[role='option']`).all();
-
- const filteredItems = [];
- for (const item of allDropdownItems) {
- const testContent = (await item.textContent()) ?? "";
- if (testContent.trim() !== targetAccountName.trim()) {
- filteredItems.push(item);
- }
- }
-
- if (filteredItems.length > 0) {
- const firstDropdownItem = filteredItems[0];
- expectedSourceAccountName = (await firstDropdownItem.textContent()) ?? "";
- await firstDropdownItem.click();
- } else {
- throw new Error("No dropdown items available after filtering");
- }
-
- const migrationTypeContainer = panel.getByTestId("migration-type");
- const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i });
- await onlineCopyRadioButton.click({ force: true });
-
- await panel.getByRole("button", { name: "Next" }).click();
-
- // Verifying Assign Permissions panel for online copy
-
- const permissionScreen = panel.getByTestId("Panel:AssignPermissionsContainer");
- await expect(permissionScreen).toBeVisible();
-
- await expect(permissionScreen.getByText("Online container copy", { exact: true })).toBeVisible();
- await expect(permissionScreen.getByText("Cross-account container copy", { exact: true })).toBeVisible();
-
- // Verify Point-in-Time Restore timer and refresh button workflow
-
- await page.route(`**/Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}**`, async (route) => {
- const mockData = {
- identity: {
- type: "SystemAssigned",
- principalId: "00-11-22-33",
- },
- properties: {
- defaultIdentity: "SystemAssignedIdentity",
- backupPolicy: {
- type: "Continuous",
- },
- capabilities: [{ name: "EnableOnlineContainerCopy" }],
- },
- };
- if (route.request().method() === "GET") {
- const response = await route.fetch();
- const actualData = await response.json();
- const mergedData = { ...actualData };
-
- set(mergedData, "identity", mockData.identity);
- set(mergedData, "properties.defaultIdentity", mockData.properties.defaultIdentity);
- set(mergedData, "properties.backupPolicy", mockData.properties.backupPolicy);
- set(mergedData, "properties.capabilities", mockData.properties.capabilities);
-
- await route.fulfill({
- status: 200,
- contentType: "application/json",
- body: JSON.stringify(mergedData),
- });
- } else {
- await route.continue();
- }
- });
-
- await expect(permissionScreen).toBeVisible();
-
- const expandedOnlineAccordionHeader = permissionScreen
- .getByTestId("permission-group-container-onlineConfigs")
- .locator("button[aria-expanded='true']");
- await expect(expandedOnlineAccordionHeader).toBeVisible();
-
- const accordionItem = expandedOnlineAccordionHeader
- .locator("xpath=ancestor::*[contains(@class, 'fui-AccordionItem') or contains(@data-test, 'accordion-item')]")
- .first();
-
- const accordionPanel = accordionItem
- .locator("[role='tabpanel'], .fui-AccordionPanel, [data-test*='panel']")
- .first();
-
- await page.clock.install({ time: new Date("2024-01-01T10:00:00Z") });
-
- const pitrBtn = accordionPanel.getByTestId("pointInTimeRestore:PrimaryBtn");
- await expect(pitrBtn).toBeVisible();
- await pitrBtn.click();
-
- page.context().on("page", async (newPage) => {
- const expectedUrlEndPattern = new RegExp(
- `/providers/Microsoft.(DocumentDB|DocumentDb)/databaseAccounts/${expectedSourceAccountName}/backupRestore`,
- );
- expect(newPage.url()).toMatch(expectedUrlEndPattern);
- await newPage.close();
- });
-
- const loadingOverlay = frame.locator("[data-test='loading-overlay']");
- await expect(loadingOverlay).toBeVisible();
-
- const refreshBtn = accordionPanel.getByTestId("pointInTimeRestore:RefreshBtn");
- await expect(refreshBtn).not.toBeVisible();
-
- // Fast forward time by 11 minutes (11 * 60 * 1000ms = 660000ms)
- await page.clock.fastForward(11 * 60 * 1000);
-
- await expect(refreshBtn).toBeVisible();
- await expect(pitrBtn).not.toBeVisible();
-
- // Veify Popover & Loading Overlay on permission screen with API mocks and accordion interactions
-
- await page.route(
- `**/Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}/sqlRoleAssignments*`,
- async (route) => {
- await route.fulfill({
- status: 200,
- contentType: "application/json",
- body: JSON.stringify({
- value: [
- {
- principalId: "00-11-22-33",
- roleDefinitionId: `Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}/77-88-99`,
- },
- ],
- }),
- });
- },
- );
-
- await page.route("**/Microsoft.DocumentDB/databaseAccounts/*/77-88-99**", async (route) => {
- await route.fulfill({
- status: 200,
- contentType: "application/json",
- body: JSON.stringify({
- value: [
- {
- name: "00000000-0000-0000-0000-000000000001",
- },
- ],
- }),
- });
- });
-
- await page.route(`**/Microsoft.DocumentDB/databaseAccounts/${targetAccountName}**`, async (route) => {
- const mockData = {
- identity: {
- type: "SystemAssigned",
- principalId: "00-11-22-33",
- },
- properties: {
- defaultIdentity: "SystemAssignedIdentity",
- backupPolicy: {
- type: "Continuous",
- },
- capabilities: [{ name: "EnableOnlineContainerCopy" }],
- },
- };
-
- if (route.request().method() === "PATCH") {
- await route.fulfill({
- status: 200,
- contentType: "application/json",
- body: JSON.stringify({ status: "Succeeded" }),
- });
- } else if (route.request().method() === "GET") {
- // Get the actual response and merge with mock data
- const response = await route.fetch();
- const actualData = await response.json();
- const mergedData = { ...actualData };
- set(mergedData, "identity", mockData.identity);
- set(mergedData, "properties.defaultIdentity", mockData.properties.defaultIdentity);
- set(mergedData, "properties.backupPolicy", mockData.properties.backupPolicy);
- set(mergedData, "properties.capabilities", mockData.properties.capabilities);
-
- await route.fulfill({
- status: 200,
- contentType: "application/json",
- body: JSON.stringify(mergedData),
- });
- } else {
- await route.continue();
- }
- });
-
- await expect(permissionScreen).toBeVisible();
-
- const expandedCrossAccordionHeader = permissionScreen
- .getByTestId("permission-group-container-crossAccountConfigs")
- .locator("button[aria-expanded='true']");
- await expect(expandedCrossAccordionHeader).toBeVisible();
-
- const crossAccordionItem = expandedCrossAccordionHeader
- .locator("xpath=ancestor::*[contains(@class, 'fui-AccordionItem') or contains(@data-test, 'accordion-item')]")
- .first();
-
- const crossAccordionPanel = crossAccordionItem
- .locator("[role='tabpanel'], .fui-AccordionPanel, [data-test*='panel']")
- .first();
-
- const toggleButton = crossAccordionPanel.getByTestId("btn-toggle");
- await expect(toggleButton).toBeVisible();
- await toggleButton.click();
-
- const popover = frame.locator("[data-test='popover-container']");
- await expect(popover).toBeVisible();
-
- const yesButton = popover.getByRole("button", { name: /Yes/i });
- const noButton = popover.getByRole("button", { name: /No/i });
- await expect(yesButton).toBeVisible();
- await expect(noButton).toBeVisible();
-
- await yesButton.click();
-
- await expect(loadingOverlay).toBeVisible();
-
- await expect(loadingOverlay).toBeHidden({ timeout: 10 * 1000 });
- await expect(popover).toBeHidden({ timeout: 10 * 1000 });
-
- await panel.getByRole("button", { name: "Cancel" }).click();
- });
-
- test.afterAll("Container Copy - After All", async () => {
- await page.unroute(/.*/, (route) => route.continue());
- await page.close();
- });
-});
diff --git a/test/sql/containercopy/offlineMigration.spec.ts b/test/sql/containercopy/offlineMigration.spec.ts
new file mode 100644
index 000000000..d7e5e75a3
--- /dev/null
+++ b/test/sql/containercopy/offlineMigration.spec.ts
@@ -0,0 +1,264 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { expect, Frame, Locator, Page, test } from "@playwright/test";
+import { truncateName } from "../../../src/Explorer/ContainerCopy/CopyJobUtils";
+import {
+ ContainerCopy,
+ getAccountName,
+ getDropdownItemByNameOrPosition,
+ interceptAndInspectApiRequest,
+ TestAccount,
+ waitForApiResponse,
+} from "../../fx";
+import { createMultipleTestContainers, TestContainerContext } from "../../testData";
+
+test.describe("Container Copy - Offline Migration", () => {
+ let contexts: TestContainerContext[];
+ let page: Page;
+ let wrapper: Locator;
+ let panel: Locator;
+ let frame: Frame;
+ let expectedJobName: string;
+ let targetAccountName: string;
+ let expectedSubscriptionName: string;
+ let expectedCopyJobNameInitial: string;
+
+ test.beforeEach("Setup for offline migration test", async ({ browser }) => {
+ contexts = await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 });
+
+ page = await browser.newPage();
+ ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly));
+ expectedJobName = `offline_test_job_${Date.now()}`;
+ targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly);
+ });
+
+ test.afterEach("Cleanup after offline migration test", async () => {
+ await page.unroute(/.*/, (route) => route.continue());
+ await page.close();
+ await Promise.all(contexts.map((context) => context?.dispose()));
+ });
+
+ test("Successfully create and manage offline migration copy job", async () => {
+ expect(wrapper).not.toBeNull();
+ await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" });
+
+ // Open Create Copy Job panel
+ const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job");
+ await expect(createCopyJobButton).toBeVisible();
+ await createCopyJobButton.click();
+ panel = frame.getByTestId("Panel:Create copy job");
+ await expect(panel).toBeVisible();
+
+ // Reduced wait time for better performance
+ await page.waitForTimeout(2000);
+
+ // Setup subscription and account
+ const subscriptionDropdown = panel.getByTestId("subscription-dropdown");
+ const expectedAccountName = targetAccountName;
+ expectedSubscriptionName = await subscriptionDropdown.locator("span.ms-Dropdown-title").innerText();
+
+ await subscriptionDropdown.click();
+ const subscriptionItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { name: expectedSubscriptionName },
+ { ariaLabel: "Subscription" },
+ );
+ await subscriptionItem.click();
+
+ // Select account
+ const accountDropdown = panel.getByTestId("account-dropdown");
+ await expect(accountDropdown).toHaveText(new RegExp(expectedAccountName));
+ await accountDropdown.click();
+
+ const accountItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { name: expectedAccountName },
+ { ariaLabel: "Account" },
+ );
+ await accountItem.click();
+
+ // Test offline migration mode toggle functionality
+ const migrationTypeContainer = panel.getByTestId("migration-type");
+
+ // First test online mode (should show permissions screen)
+ const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i });
+ await onlineCopyRadioButton.click({ force: true });
+ await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+ await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).toBeVisible();
+ await expect(panel.getByText("Online container copy", { exact: true })).toBeVisible();
+
+ // Go back and switch to offline mode
+ await panel.getByRole("button", { name: "Previous" }).click();
+
+ const offlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Offline mode/i });
+ await offlineCopyRadioButton.click({ force: true });
+ await expect(migrationTypeContainer.getByTestId("migration-type-description-offline")).toBeVisible();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Verify we skip permissions screen in offline mode
+ await expect(panel.getByTestId("Panel:SelectSourceAndTargetContainers")).toBeVisible();
+ await expect(panel.getByTestId("Panel:AssignPermissionsContainer")).not.toBeVisible();
+
+ // Test source and target container selection with validation
+ const sourceContainerDropdown = panel.getByTestId("source-containerDropdown");
+ expect(sourceContainerDropdown).toBeVisible();
+ await expect(sourceContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/);
+
+ // Select source database first (containers are disabled until database is selected)
+ const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown");
+ await sourceDatabaseDropdown.click();
+ const sourceDbDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Database" },
+ );
+ await sourceDbDropdownItem.click();
+
+ // Now container dropdown should be enabled
+ await expect(sourceContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
+ await sourceContainerDropdown.click();
+ const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Container" },
+ );
+ await sourceContainerDropdownItem.click();
+
+ // Test target container selection
+ const targetContainerDropdown = panel.getByTestId("target-containerDropdown");
+ expect(targetContainerDropdown).toBeVisible();
+ await expect(targetContainerDropdown).toHaveClass(/(^|\s)is-disabled(\s|$)/);
+
+ const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown");
+ await targetDatabaseDropdown.click();
+ const targetDbDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Database" },
+ );
+ await targetDbDropdownItem.click();
+
+ await expect(targetContainerDropdown).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
+ await targetContainerDropdown.click();
+
+ // First try selecting the same container (should show error)
+ const targetContainerDropdownItem1 = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Container" },
+ );
+ await targetContainerDropdownItem1.click();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Verify validation error for same source and target containers
+ const errorContainer = panel.getByTestId("Panel:ErrorContainer");
+ await expect(errorContainer).toBeVisible();
+ await expect(errorContainer).toHaveText(/Source and destination containers cannot be the same/i);
+
+ // Select different target container
+ await targetContainerDropdown.click();
+ const targetContainerDropdownItem2 = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 1 },
+ { ariaLabel: "Container" },
+ );
+ await targetContainerDropdownItem2.click();
+
+ // Generate expected job name based on selections
+ const selectedSourceDatabase = await sourceDatabaseDropdown.innerText();
+ const selectedSourceContainer = await sourceContainerDropdown.innerText();
+ const selectedTargetDatabase = await targetDatabaseDropdown.innerText();
+ const selectedTargetContainer = await targetContainerDropdown.innerText();
+ expectedCopyJobNameInitial = `${truncateName(selectedSourceDatabase)}.${truncateName(
+ selectedSourceContainer,
+ )}_${truncateName(selectedTargetDatabase)}.${truncateName(selectedTargetContainer)}`;
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Error should disappear and preview should be visible
+ await expect(errorContainer).not.toBeVisible();
+ await expect(panel.getByTestId("Panel:PreviewCopyJob")).toBeVisible();
+
+ // Verify job preview details
+ const previewContainer = panel.getByTestId("Panel:PreviewCopyJob");
+ await expect(previewContainer).toBeVisible();
+ await expect(previewContainer.getByTestId("source-subscription-name")).toHaveText(expectedSubscriptionName);
+ await expect(previewContainer.getByTestId("source-account-name")).toHaveText(expectedAccountName);
+
+ const jobNameInput = previewContainer.getByTestId("job-name-textfield");
+ await expect(jobNameInput).toHaveValue(new RegExp(expectedCopyJobNameInitial));
+
+ const primaryBtn = panel.getByRole("button", { name: "Copy", exact: true });
+ await expect(primaryBtn).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
+
+ // Test invalid job name validation (spaces not allowed)
+ await jobNameInput.fill("test job name");
+ await expect(primaryBtn).toHaveClass(/(^|\s)is-disabled(\s|$)/);
+
+ // Test duplicate job name error handling
+ const duplicateJobName = "test-job-name-1";
+ await jobNameInput.fill(duplicateJobName);
+
+ const copyButton = panel.getByRole("button", { name: "Copy", exact: true });
+ const expectedErrorMessage = `Duplicate job name '${duplicateJobName}'`;
+
+ await interceptAndInspectApiRequest(
+ page,
+ `${expectedAccountName}/dataTransferJobs/${duplicateJobName}`,
+ "PUT",
+ new Error(expectedErrorMessage),
+ (url?: string) => url?.includes(duplicateJobName) ?? false,
+ );
+
+ let errorThrown = false;
+ try {
+ await copyButton.click();
+ await page.waitForTimeout(2000);
+ } catch (error: any) {
+ errorThrown = true;
+ expect(error.message).toContain("not allowed");
+ }
+
+ if (!errorThrown) {
+ const errorContainer = panel.getByTestId("Panel:ErrorContainer");
+ await expect(errorContainer).toBeVisible();
+ await expect(errorContainer).toHaveText(new RegExp(expectedErrorMessage, "i"));
+ }
+
+ await expect(panel).toBeVisible();
+
+ // Test successful job creation with valid job name
+ const validJobName = expectedJobName;
+
+ const copyJobCreationPromise = waitForApiResponse(
+ page,
+ `${expectedAccountName}/dataTransferJobs/${validJobName}`,
+ "PUT",
+ );
+
+ await jobNameInput.fill(validJobName);
+ await expect(copyButton).not.toHaveClass(/(^|\s)is-disabled(\s|$)/);
+
+ await copyButton.click();
+
+ const response = await copyJobCreationPromise;
+ expect(response.ok()).toBe(true);
+
+ // Verify panel closes and job appears in the list
+ await expect(panel).not.toBeVisible();
+
+ const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField");
+ await filterTextField.waitFor({ state: "visible" });
+ await filterTextField.fill(validJobName);
+
+ const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page");
+ await jobsListContainer.waitFor({ state: "visible" });
+
+ const jobItem = jobsListContainer.getByText(validJobName);
+ await jobItem.waitFor({ state: "visible" });
+ await expect(jobItem).toBeVisible();
+ });
+});
diff --git a/test/sql/containercopy/onlineMigration.spec.ts b/test/sql/containercopy/onlineMigration.spec.ts
new file mode 100644
index 000000000..1f4b2acb7
--- /dev/null
+++ b/test/sql/containercopy/onlineMigration.spec.ts
@@ -0,0 +1,191 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { expect, Frame, Locator, Page, test } from "@playwright/test";
+import {
+ ContainerCopy,
+ getAccountName,
+ getDropdownItemByNameOrPosition,
+ TestAccount,
+ waitForApiResponse,
+} from "../../fx";
+import { createMultipleTestContainers, TestContainerContext } from "../../testData";
+
+test.describe("Container Copy - Online Migration", () => {
+ let contexts: TestContainerContext[];
+ let page: Page;
+ let wrapper: Locator;
+ let panel: Locator;
+ let frame: Frame;
+ let targetAccountName: string;
+
+ test.beforeEach("Setup for online migration test", async ({ browser }) => {
+ contexts = await createMultipleTestContainers({ accountType: TestAccount.SQLContainerCopyOnly, containerCount: 2 });
+
+ page = await browser.newPage();
+ ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly));
+ targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly);
+ });
+
+ test.afterEach("Cleanup after online migration test", async () => {
+ await page.unroute(/.*/, (route) => route.continue());
+ await page.close();
+ await Promise.all(contexts.map((context) => context?.dispose()));
+ });
+
+ test("Successfully create and manage online migration copy job", async () => {
+ expect(wrapper).not.toBeNull();
+ await wrapper.locator(".commandBarContainer").waitFor({ state: "visible" });
+
+ // Open Create Copy Job panel
+ const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job");
+ await expect(createCopyJobButton).toBeVisible();
+ await createCopyJobButton.click();
+ panel = frame.getByTestId("Panel:Create copy job");
+ await expect(panel).toBeVisible();
+
+ // Reduced wait time for better performance
+ await page.waitForTimeout(1000);
+
+ // Enable online migration mode
+ const migrationTypeContainer = panel.getByTestId("migration-type");
+ const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i });
+ await onlineCopyRadioButton.click({ force: true });
+
+ await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Verify permissions screen is shown for online migration
+ const permissionScreen = panel.getByTestId("Panel:AssignPermissionsContainer");
+ await expect(permissionScreen).toBeVisible();
+ await expect(permissionScreen.getByText("Online container copy", { exact: true })).toBeVisible();
+
+ // Skip permissions setup and proceed to container selection
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Configure source and target containers for online migration
+ const sourceDatabaseDropdown = panel.getByTestId("source-databaseDropdown");
+ await sourceDatabaseDropdown.click();
+ const sourceDbDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Database" },
+ );
+ await sourceDbDropdownItem.click();
+
+ const sourceContainerDropdown = panel.getByTestId("source-containerDropdown");
+ await sourceContainerDropdown.click();
+ const sourceContainerDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Container" },
+ );
+ await sourceContainerDropdownItem.click();
+
+ const targetDatabaseDropdown = panel.getByTestId("target-databaseDropdown");
+ await targetDatabaseDropdown.click();
+ const targetDbDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 0 },
+ { ariaLabel: "Database" },
+ );
+ await targetDbDropdownItem.click();
+
+ const targetContainerDropdown = panel.getByTestId("target-containerDropdown");
+ await targetContainerDropdown.click();
+ const targetContainerDropdownItem = await getDropdownItemByNameOrPosition(
+ frame,
+ { position: 1 },
+ { ariaLabel: "Container" },
+ );
+ await targetContainerDropdownItem.click();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Verify job preview and create the online migration job
+ const previewContainer = panel.getByTestId("Panel:PreviewCopyJob");
+ await expect(previewContainer.getByTestId("source-account-name")).toHaveText(targetAccountName);
+
+ const jobNameInput = previewContainer.getByTestId("job-name-textfield");
+ const onlineMigrationJobName = await jobNameInput.inputValue();
+
+ const copyButton = panel.getByRole("button", { name: "Copy", exact: true });
+
+ const copyJobCreationPromise = waitForApiResponse(
+ page,
+ `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}`,
+ "PUT",
+ );
+ await copyButton.click();
+ await page.waitForTimeout(1000); // Reduced wait time
+
+ const response = await copyJobCreationPromise;
+ expect(response.ok()).toBe(true);
+
+ // Verify panel closes and job appears in the list
+ await expect(panel).not.toBeVisible();
+
+ const filterTextField = wrapper.getByTestId("CopyJobsList/FilterTextField");
+ await filterTextField.waitFor({ state: "visible" });
+ await filterTextField.fill(onlineMigrationJobName);
+
+ const jobsListContainer = wrapper.locator(".CopyJobListContainer .ms-DetailsList-contentWrapper .ms-List-page");
+ await jobsListContainer.waitFor({ state: "visible" });
+
+ let jobRow, statusCell, actionMenuButton;
+ jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName });
+ statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']");
+ await jobRow.waitFor({ state: "visible" });
+
+ // Verify job status changes to queued state
+ await expect(statusCell).toContainText(/running|queued|pending/i);
+
+ // Test job lifecycle management through action menu
+ actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`);
+ await actionMenuButton.click();
+
+ // Test pause functionality
+ const pauseAction = frame.locator(".ms-ContextualMenu-list button:has-text('Pause')");
+ await pauseAction.click();
+
+ const pauseResponse = await waitForApiResponse(
+ page,
+ `${targetAccountName}/dataTransferJobs/${onlineMigrationJobName}/pause`,
+ "POST",
+ );
+ expect(pauseResponse.ok()).toBe(true);
+
+ // Verify job status changes to paused
+ jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName });
+ await jobRow.waitFor({ state: "visible", timeout: 5000 });
+ statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']");
+ await expect(statusCell).toContainText(/paused/i, { timeout: 5000 });
+ await page.waitForTimeout(1000);
+
+ // Test cancel job functionality
+ actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`);
+ await actionMenuButton.click();
+ await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click();
+
+ // Verify cancellation confirmation dialog
+ await expect(frame.locator(".ms-Dialog-main")).toBeVisible({ timeout: 2000 });
+ await expect(frame.locator(".ms-Dialog-main")).toContainText(onlineMigrationJobName);
+
+ const cancelDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Cancel");
+ await expect(cancelDialogButton).toBeVisible();
+ await cancelDialogButton.click();
+ await expect(frame.locator(".ms-Dialog-main")).not.toBeVisible();
+
+ actionMenuButton = wrapper.getByTestId(`CopyJobActionMenu/Button:${onlineMigrationJobName}`);
+ await actionMenuButton.click();
+ await frame.locator(".ms-ContextualMenu-list button:has-text('Cancel')").click();
+
+ const confirmDialogButton = frame.locator(".ms-Dialog-main").getByTestId("DialogButton:Confirm");
+ await expect(confirmDialogButton).toBeVisible();
+ await confirmDialogButton.click();
+
+ // Verify final job status is cancelled
+ jobRow = jobsListContainer.locator(".ms-DetailsRow", { hasText: onlineMigrationJobName });
+ statusCell = jobRow.locator("[data-automationid='DetailsRowCell'][data-automation-key='CopyJobStatus']");
+ await expect(statusCell).toContainText(/cancelled/i, { timeout: 5000 });
+ });
+});
diff --git a/test/sql/containercopy/permissionsScreen.spec.ts b/test/sql/containercopy/permissionsScreen.spec.ts
new file mode 100644
index 000000000..f592bf4c7
--- /dev/null
+++ b/test/sql/containercopy/permissionsScreen.spec.ts
@@ -0,0 +1,270 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { expect, Frame, Locator, Page, test } from "@playwright/test";
+import { set } from "lodash";
+import { ContainerCopy, getAccountName, TestAccount } from "../../fx";
+
+const VISIBLE_TIMEOUT_MS = 30 * 1000;
+
+test.describe("Container Copy - Permission Screen Verification", () => {
+ let page: Page;
+ let wrapper: Locator;
+ let panel: Locator;
+ let frame: Frame;
+ let targetAccountName: string;
+ let expectedSourceAccountName: string;
+
+ test.beforeEach("Setup for each test", async ({ browser }) => {
+ page = await browser.newPage();
+ ({ wrapper, frame } = await ContainerCopy.open(page, TestAccount.SQLContainerCopyOnly));
+ targetAccountName = getAccountName(TestAccount.SQLContainerCopyOnly);
+ });
+
+ test.afterEach("Cleanup after each test", async () => {
+ await page.unroute(/.*/, (route) => route.continue());
+ await page.close();
+ });
+
+ test("Verify online container copy permissions panel functionality", async () => {
+ expect(wrapper).not.toBeNull();
+
+ // Verify all command bar buttons are visible
+ await wrapper.locator(".commandBarContainer").waitFor({ state: "visible", timeout: VISIBLE_TIMEOUT_MS });
+
+ const createCopyJobButton = wrapper.getByTestId("CommandBar/Button:Create Copy Job");
+ await expect(createCopyJobButton).toBeVisible();
+ await expect(wrapper.getByTestId("CommandBar/Button:Refresh")).toBeVisible();
+ await expect(wrapper.getByTestId("CommandBar/Button:Feedback")).toBeVisible();
+
+ // Open the Create Copy Job panel
+ await createCopyJobButton.click();
+ panel = frame.getByTestId("Panel:Create copy job");
+ await expect(panel).toBeVisible();
+ await expect(panel.getByRole("heading", { name: "Create copy job" })).toBeVisible();
+
+ // Select a different account for cross-account testing
+ const accountDropdown = panel.getByTestId("account-dropdown");
+ await accountDropdown.click();
+
+ const dropdownItemsWrapper = frame.locator("div.ms-Dropdown-items");
+ expect(await dropdownItemsWrapper.getAttribute("aria-label")).toEqual("Account");
+
+ const allDropdownItems = await dropdownItemsWrapper.locator(`button.ms-Dropdown-item[role='option']`).all();
+
+ const filteredItems = [];
+ for (const item of allDropdownItems) {
+ const testContent = (await item.textContent()) ?? "";
+ if (testContent.trim() !== targetAccountName.trim()) {
+ filteredItems.push(item);
+ }
+ }
+
+ if (filteredItems.length > 0) {
+ const firstDropdownItem = filteredItems[0];
+ expectedSourceAccountName = (await firstDropdownItem.textContent()) ?? "";
+ await firstDropdownItem.click();
+ } else {
+ throw new Error("No dropdown items available after filtering");
+ }
+
+ // Enable online migration mode
+ const migrationTypeContainer = panel.getByTestId("migration-type");
+ const onlineCopyRadioButton = migrationTypeContainer.getByRole("radio", { name: /Online mode/i });
+ await onlineCopyRadioButton.click({ force: true });
+ await expect(migrationTypeContainer.getByTestId("migration-type-description-online")).toBeVisible();
+
+ await panel.getByRole("button", { name: "Next" }).click();
+
+ // Verify Assign Permissions panel for online copy
+ const permissionScreen = panel.getByTestId("Panel:AssignPermissionsContainer");
+ await expect(permissionScreen).toBeVisible();
+ await expect(permissionScreen.getByText("Online container copy", { exact: true })).toBeVisible();
+ await expect(permissionScreen.getByText("Cross-account container copy", { exact: true })).toBeVisible();
+
+ // Setup API mocking for the source account
+ await page.route(`**/Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}**`, async (route) => {
+ const mockData = {
+ identity: {
+ type: "SystemAssigned",
+ principalId: "00-11-22-33",
+ },
+ properties: {
+ defaultIdentity: "SystemAssignedIdentity",
+ backupPolicy: {
+ type: "Continuous",
+ },
+ capabilities: [{ name: "EnableOnlineContainerCopy" }],
+ },
+ };
+ if (route.request().method() === "GET") {
+ const response = await route.fetch();
+ const actualData = await response.json();
+ const mergedData = { ...actualData };
+
+ set(mergedData, "identity", mockData.identity);
+ set(mergedData, "properties.defaultIdentity", mockData.properties.defaultIdentity);
+ set(mergedData, "properties.backupPolicy", mockData.properties.backupPolicy);
+ set(mergedData, "properties.capabilities", mockData.properties.capabilities);
+
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify(mergedData),
+ });
+ } else {
+ await route.continue();
+ }
+ });
+
+ // Verify Point-in-Time Restore functionality
+ const expandedOnlineAccordionHeader = permissionScreen
+ .getByTestId("permission-group-container-onlineConfigs")
+ .locator("button[aria-expanded='true']");
+ await expect(expandedOnlineAccordionHeader).toBeVisible();
+
+ const accordionItem = expandedOnlineAccordionHeader
+ .locator("xpath=ancestor::*[contains(@class, 'fui-AccordionItem') or contains(@data-test, 'accordion-item')]")
+ .first();
+
+ const accordionPanel = accordionItem
+ .locator("[role='tabpanel'], .fui-AccordionPanel, [data-test*='panel']")
+ .first();
+
+ // Install clock mock and test PITR functionality
+ await page.clock.install({ time: new Date("2024-01-01T10:00:00Z") });
+
+ const pitrBtn = accordionPanel.getByTestId("pointInTimeRestore:PrimaryBtn");
+ await expect(pitrBtn).toBeVisible();
+ await pitrBtn.click({ force: true });
+
+ // Verify new page opens with correct URL pattern
+ page.context().on("page", async (newPage) => {
+ const expectedUrlEndPattern = new RegExp(
+ `/providers/Microsoft.(DocumentDB|DocumentDb)/databaseAccounts/${expectedSourceAccountName}/backupRestore`,
+ );
+ expect(newPage.url()).toMatch(expectedUrlEndPattern);
+ await newPage.close();
+ });
+
+ const loadingOverlay = frame.locator("[data-test='loading-overlay']");
+ await expect(loadingOverlay).toBeVisible();
+
+ const refreshBtn = accordionPanel.getByTestId("pointInTimeRestore:RefreshBtn");
+ await expect(refreshBtn).not.toBeVisible();
+
+ // Fast forward time by 11 minutes
+ await page.clock.fastForward(11 * 60 * 1000);
+
+ await expect(refreshBtn).toBeVisible({ timeout: 5000 });
+ await expect(pitrBtn).not.toBeVisible();
+
+ // Setup additional API mocks for role assignments and permissions
+ await page.route(
+ `**/Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}/sqlRoleAssignments*`,
+ async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify({
+ value: [
+ {
+ principalId: "00-11-22-33",
+ roleDefinitionId: `Microsoft.DocumentDB/databaseAccounts/${expectedSourceAccountName}/77-88-99`,
+ },
+ ],
+ }),
+ });
+ },
+ );
+
+ await page.route("**/Microsoft.DocumentDB/databaseAccounts/*/77-88-99**", async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify({
+ value: [
+ {
+ name: "00000000-0000-0000-0000-000000000001",
+ },
+ ],
+ }),
+ });
+ });
+
+ await page.route(`**/Microsoft.DocumentDB/databaseAccounts/${targetAccountName}**`, async (route) => {
+ const mockData = {
+ identity: {
+ type: "SystemAssigned",
+ principalId: "00-11-22-33",
+ },
+ properties: {
+ defaultIdentity: "SystemAssignedIdentity",
+ backupPolicy: {
+ type: "Continuous",
+ },
+ capabilities: [{ name: "EnableOnlineContainerCopy" }],
+ },
+ };
+
+ if (route.request().method() === "PATCH") {
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify({ status: "Succeeded" }),
+ });
+ } else if (route.request().method() === "GET") {
+ const response = await route.fetch();
+ const actualData = await response.json();
+ const mergedData = { ...actualData };
+ set(mergedData, "identity", mockData.identity);
+ set(mergedData, "properties.defaultIdentity", mockData.properties.defaultIdentity);
+ set(mergedData, "properties.backupPolicy", mockData.properties.backupPolicy);
+ set(mergedData, "properties.capabilities", mockData.properties.capabilities);
+
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify(mergedData),
+ });
+ } else {
+ await route.continue();
+ }
+ });
+
+ // Verify cross-account permissions functionality
+ const expandedCrossAccordionHeader = permissionScreen
+ .getByTestId("permission-group-container-crossAccountConfigs")
+ .locator("button[aria-expanded='true']");
+ await expect(expandedCrossAccordionHeader).toBeVisible();
+
+ const crossAccordionItem = expandedCrossAccordionHeader
+ .locator("xpath=ancestor::*[contains(@class, 'fui-AccordionItem') or contains(@data-test, 'accordion-item')]")
+ .first();
+
+ const crossAccordionPanel = crossAccordionItem
+ .locator("[role='tabpanel'], .fui-AccordionPanel, [data-test*='panel']")
+ .first();
+
+ const toggleButton = crossAccordionPanel.getByTestId("btn-toggle");
+ await expect(toggleButton).toBeVisible();
+ await toggleButton.click({ force: true });
+
+ // Verify popover functionality
+ const popover = frame.locator("[data-test='popover-container']");
+ await expect(popover).toBeVisible();
+
+ const yesButton = popover.getByRole("button", { name: /Yes/i });
+ const noButton = popover.getByRole("button", { name: /No/i });
+ await expect(yesButton).toBeVisible();
+ await expect(noButton).toBeVisible();
+
+ await yesButton.click({ force: true });
+
+ // Verify loading states
+ await expect(loadingOverlay).toBeVisible();
+ await expect(loadingOverlay).toBeHidden({ timeout: 10 * 1000 });
+ await expect(popover).toBeHidden({ timeout: 10 * 1000 });
+
+ // Cancel the panel to clean up
+ await panel.getByRole("button", { name: "Cancel" }).click({ force: true });
+ });
+});
diff --git a/test/sql/document.spec.ts b/test/sql/document.spec.ts
index 5d17c22c3..a093da376 100644
--- a/test/sql/document.spec.ts
+++ b/test/sql/document.spec.ts
@@ -136,9 +136,7 @@ test.describe.serial("Upload Item", () => {
if (existsSync(uploadDocumentDirPath)) {
rmdirSync(uploadDocumentDirPath);
}
- if (!process.env.CI) {
- await context?.dispose();
- }
+ await context?.dispose();
});
test.afterEach("Close Upload Items panel if still open", async () => {
diff --git a/test/sql/indexAdvisor.spec.ts b/test/sql/indexAdvisor.spec.ts
index 4d9ac6aa2..dc6ee978c 100644
--- a/test/sql/indexAdvisor.spec.ts
+++ b/test/sql/indexAdvisor.spec.ts
@@ -10,7 +10,7 @@ let CONTAINER_ID: string;
// Set up test database and container with data before all tests
test.beforeAll(async () => {
- testContainer = await createTestSQLContainer(true);
+ testContainer = await createTestSQLContainer({ includeTestData: true });
DATABASE_ID = testContainer.database.id;
CONTAINER_ID = testContainer.container.id;
});
diff --git a/test/sql/query.spec.ts b/test/sql/query.spec.ts
index f9dfc80f9..6368c4327 100644
--- a/test/sql/query.spec.ts
+++ b/test/sql/query.spec.ts
@@ -30,12 +30,9 @@ test.beforeEach("Open new query tab", async ({ page }) => {
await explorer.frame.getByTestId("NotificationConsole/Contents").waitFor();
});
-// Delete database only if not running in CI
-if (!process.env.CI) {
- test.afterAll("Delete Test Database", async () => {
- await context?.dispose();
- });
-}
+test.afterAll("Delete Test Database", async () => {
+ await context?.dispose();
+});
test("Query results", async () => {
// Run the query and verify the results
diff --git a/test/sql/resourceToken.spec.ts b/test/sql/resourceToken.spec.ts
index e88ba4dd4..0600d3d88 100644
--- a/test/sql/resourceToken.spec.ts
+++ b/test/sql/resourceToken.spec.ts
@@ -2,7 +2,6 @@ import { expect, test } from "@playwright/test";
import { CosmosDBManagementClient } from "@azure/arm-cosmosdb";
import { CosmosClient, PermissionMode } from "@azure/cosmos";
-import { AzureIdentityCredentialAdapter } from "@azure/ms-rest-js";
import {
DataExplorer,
TestAccount,
@@ -18,8 +17,7 @@ test("SQL account using Resource token", async ({ page }) => {
test.skip(nosqlAccountRbacToken.length > 0, "Resource tokens not supported when using data plane RBAC.");
const credentials = getAzureCLICredentials();
- const adaptedCredentials = new AzureIdentityCredentialAdapter(credentials);
- const armClient = new CosmosDBManagementClient(adaptedCredentials, subscriptionId);
+ const armClient = new CosmosDBManagementClient(credentials, subscriptionId);
const accountName = getAccountName(TestAccount.SQL);
const account = await armClient.databaseAccounts.get(resourceGroupName, accountName);
const keys = await armClient.databaseAccounts.listKeys(resourceGroupName, accountName);
diff --git a/test/sql/scaleAndSettings/changePartitionKey.spec.ts b/test/sql/scaleAndSettings/changePartitionKey.spec.ts
index 1f23d3154..b92d65ee7 100644
--- a/test/sql/scaleAndSettings/changePartitionKey.spec.ts
+++ b/test/sql/scaleAndSettings/changePartitionKey.spec.ts
@@ -23,12 +23,9 @@ test.describe("Change Partition Key", () => {
await PartitionKeyTab.click();
});
- // Delete database only if not running in CI
- if (!process.env.CI) {
- test.afterEach("Delete Test Database", async () => {
- await context?.dispose();
- });
- }
+ test.afterEach("Delete Test Database", async () => {
+ await context?.dispose();
+ });
test("Change partition key path", async ({ page }) => {
await expect(explorer.frame.getByText("/partitionKey")).toBeVisible();
diff --git a/test/sql/scaleAndSettings/containerPolicies/vectorPolicy.spec.ts b/test/sql/scaleAndSettings/containerPolicies/vectorPolicy.spec.ts
new file mode 100644
index 000000000..2768ed3c7
--- /dev/null
+++ b/test/sql/scaleAndSettings/containerPolicies/vectorPolicy.spec.ts
@@ -0,0 +1,186 @@
+import { expect, test } from "@playwright/test";
+import { CommandBarButton, DataExplorer, ONE_MINUTE_MS, TestAccount } from "../../../fx";
+import { createTestSQLContainer, TestContainerContext } from "../../../testData";
+
+test.describe("Vector Policy under Scale & Settings", () => {
+ let context: TestContainerContext = null!;
+ let explorer: DataExplorer = null!;
+
+ test.beforeAll("Create Test Database", async () => {
+ context = await createTestSQLContainer();
+ });
+
+ test.beforeEach("Open Container Policy tab under Scale & Settings", async ({ page }) => {
+ explorer = await DataExplorer.open(page, TestAccount.SQL);
+ await explorer.waitForContainerNode(context.database.id, context.container.id);
+
+ // Click Scale & Settings and open Container Policy tab
+ await explorer.openScaleAndSettings(context);
+ const containerPolicyTab = explorer.frame.getByTestId("settings-tab-header/ContainerVectorPolicyTab");
+ await containerPolicyTab.click();
+
+ // Click on Vector Policy tab
+ const vectorPolicyTab = explorer.frame.getByRole("tab", { name: "Vector Policy" });
+ await vectorPolicyTab.click();
+ });
+
+ test.afterAll("Delete Test Database", async () => {
+ await context?.dispose();
+ });
+
+ test("Add new vector embedding policy", async () => {
+ // Click Add vector embedding button
+ const addButton = explorer.frame.locator("#add-vector-policy");
+ await addButton.click();
+
+ // Fill in path
+ const pathInput = explorer.frame.locator("#vector-policy-path-1");
+ await pathInput.fill("/embedding");
+
+ // Fill in dimensions
+ const dimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await dimensionsInput.fill("1500");
+
+ // Save changes
+ const saveButton = explorer.commandBarButton(CommandBarButton.Save);
+ await expect(saveButton).toBeEnabled();
+ await saveButton.click();
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated container ${context.container.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+ });
+
+ test("Existing vector embedding policy fields are disabled", async () => {
+ // First add a vector embedding policy
+ const addButton = explorer.frame.locator("#add-vector-policy");
+ await addButton.click();
+
+ const pathInput = explorer.frame.locator("#vector-policy-path-1");
+ await pathInput.fill("/existingEmbedding");
+
+ const dimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await dimensionsInput.fill("700");
+
+ // Save the policy
+ const saveButton = explorer.commandBarButton(CommandBarButton.Save);
+ await saveButton.click();
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated container ${context.container.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+
+ // Verify the path field is disabled for the existing policy
+ const existingPathInput = explorer.frame.locator("#vector-policy-path-1");
+ await expect(existingPathInput).toBeDisabled();
+
+ // Verify the dimensions field is disabled for the existing policy
+ const existingDimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await expect(existingDimensionsInput).toBeDisabled();
+ });
+
+ test("New vector embedding policy fields are enabled while existing are disabled", async () => {
+ // First, create an existing policy
+ const addButton = explorer.frame.locator("#add-vector-policy");
+ await addButton.click();
+
+ const firstPathInput = explorer.frame.locator("#vector-policy-path-1");
+ await firstPathInput.fill("/existingPolicy");
+
+ const firstDimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await firstDimensionsInput.fill("500");
+
+ // Save the policy to make it "existing"
+ const saveButton = explorer.commandBarButton(CommandBarButton.Save);
+ await saveButton.click();
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated container ${context.container.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+
+ // Now add a new policy
+ await addButton.click();
+
+ // Verify the existing policy fields are disabled
+ const existingPathInput = explorer.frame.locator("#vector-policy-path-1");
+ const existingDimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await expect(existingPathInput).toBeDisabled();
+ await expect(existingDimensionsInput).toBeDisabled();
+
+ // Verify the new policy fields are enabled
+ const newPathInput = explorer.frame.locator("#vector-policy-path-2");
+ const newDimensionsInput = explorer.frame.locator("#vector-policy-dimension-2");
+ await expect(newPathInput).toBeEnabled();
+ await expect(newDimensionsInput).toBeEnabled();
+ });
+
+ test("Delete existing vector embedding policy", async () => {
+ // First add a vector embedding policy
+ const addButton = explorer.frame.locator("#add-vector-policy");
+ await addButton.click();
+
+ const pathInput = explorer.frame.locator("#vector-policy-path-1");
+ await pathInput.fill("/toBeDeleted");
+
+ const dimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await dimensionsInput.fill("256");
+
+ // Save the policy
+ const saveButton = explorer.commandBarButton(CommandBarButton.Save);
+ await saveButton.click();
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated container ${context.container.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+
+ // Verify the policy exists
+ await expect(pathInput).toBeVisible();
+
+ // Click the delete (trash) button for the vector embedding
+ const deleteButton = explorer.frame.locator("#delete-Vector-embedding-1");
+ await expect(deleteButton).toBeEnabled();
+ await deleteButton.click();
+
+ // Verify the policy fields are removed
+ await expect(explorer.frame.locator("#vector-policy-path-1")).not.toBeVisible();
+ await expect(explorer.frame.locator("#vector-policy-dimension-1")).not.toBeVisible();
+
+ // Save the deletion
+ await expect(saveButton).toBeEnabled();
+ await saveButton.click();
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated container ${context.container.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+
+ // Verify the policy is still gone after save
+ await expect(explorer.frame.locator("#vector-policy-path-1")).not.toBeVisible();
+ });
+
+ test("Validation error for empty path", async () => {
+ const addButton = explorer.frame.locator("#add-vector-policy");
+ await addButton.click();
+
+ // Leave path empty, just fill dimensions
+ const dimensionsInput = explorer.frame.locator("#vector-policy-dimension-1");
+ await dimensionsInput.fill("512");
+
+ // Check for validation error on path
+ const pathError = explorer.frame.locator("text=Path should not be empty");
+ await expect(pathError).toBeVisible();
+
+ // Verify save button is disabled due to validation error
+ const saveButton = explorer.commandBarButton(CommandBarButton.Save);
+ await expect(saveButton).toBeDisabled();
+ });
+});
diff --git a/test/sql/scaleAndSettings/dataMasking.spec.ts b/test/sql/scaleAndSettings/dataMasking.spec.ts
new file mode 100644
index 000000000..0c076554f
--- /dev/null
+++ b/test/sql/scaleAndSettings/dataMasking.spec.ts
@@ -0,0 +1,127 @@
+import { expect, test, type Page } from "@playwright/test";
+import { DataExplorer, TestAccount } from "../../fx";
+import { createTestSQLContainer, TestContainerContext } from "../../testData";
+
+/**
+ * Tests for Dynamic Data Masking (DDM) feature.
+ *
+ * Prerequisites:
+ * - Test account must have the EnableDynamicDataMasking capability enabled
+ * - If the capability is not enabled, the DataMaskingTab will not be visible and tests will be skipped
+ *
+ * Important Notes:
+ * - Tests focus on enabling DDM and modifying the masking policy configuration
+ */
+
+let testContainer: TestContainerContext;
+let DATABASE_ID: string;
+let CONTAINER_ID: string;
+
+test.beforeAll(async () => {
+ testContainer = await createTestSQLContainer();
+ DATABASE_ID = testContainer.database.id;
+ CONTAINER_ID = testContainer.container.id;
+});
+
+// Clean up test database after all tests
+test.afterAll(async () => {
+ if (testContainer) {
+ await testContainer.dispose();
+ }
+});
+
+// Helper function to navigate to Data Masking tab
+async function navigateToDataMaskingTab(page: Page, explorer: DataExplorer): Promise {
+ // Refresh the tree to see the newly created database
+ const refreshButton = explorer.frame.getByTestId("Sidebar/RefreshButton");
+ await refreshButton.click();
+ await page.waitForTimeout(3000);
+
+ // Expand database and container nodes
+ const databaseNode = await explorer.waitForNode(DATABASE_ID);
+ await databaseNode.expand();
+ await page.waitForTimeout(2000);
+
+ const containerNode = await explorer.waitForNode(`${DATABASE_ID}/${CONTAINER_ID}`);
+ await containerNode.expand();
+ await page.waitForTimeout(1000);
+
+ // Click Scale & Settings or Settings (depending on container type)
+ let settingsNode = explorer.frame.getByTestId(`TreeNode:${DATABASE_ID}/${CONTAINER_ID}/Scale & Settings`);
+ const isScaleAndSettings = await settingsNode.isVisible().catch(() => false);
+
+ if (!isScaleAndSettings) {
+ settingsNode = explorer.frame.getByTestId(`TreeNode:${DATABASE_ID}/${CONTAINER_ID}/Settings`);
+ }
+
+ await settingsNode.click();
+ await page.waitForTimeout(2000);
+
+ // Check if Data Masking tab is available
+ const dataMaskingTab = explorer.frame.getByTestId("settings-tab-header/DataMaskingTab");
+ const isTabVisible = await dataMaskingTab.isVisible().catch(() => false);
+
+ if (!isTabVisible) {
+ return false;
+ }
+
+ await dataMaskingTab.click();
+ await page.waitForTimeout(1000);
+ return true;
+}
+
+test.describe("Data Masking under Scale & Settings", () => {
+ test("Data Masking tab should be visible and show JSON editor", async ({ page }) => {
+ const explorer = await DataExplorer.open(page, TestAccount.SQL);
+ const isTabAvailable = await navigateToDataMaskingTab(page, explorer);
+
+ if (!isTabAvailable) {
+ test.skip(
+ true,
+ "Data Masking tab is not available. Test account may not have EnableDynamicDataMasking capability.",
+ );
+ }
+
+ // Verify the Data Masking editor is visible
+ const dataMaskingEditor = explorer.frame.locator(".settingsV2Editor");
+ await expect(dataMaskingEditor).toBeVisible();
+ });
+
+ test("Data Masking editor should contain default policy structure", async ({ page }) => {
+ const explorer = await DataExplorer.open(page, TestAccount.SQL);
+ const isTabAvailable = await navigateToDataMaskingTab(page, explorer);
+
+ if (!isTabAvailable) {
+ test.skip(
+ true,
+ "Data Masking tab is not available. Test account may not have EnableDynamicDataMasking capability.",
+ );
+ }
+
+ // Verify the editor contains the expected JSON structure fields
+ const editorContent = explorer.frame.locator(".settingsV2Editor");
+ await expect(editorContent).toBeVisible();
+
+ // Check that the editor contains key policy fields (default policy has empty arrays)
+ await expect(editorContent).toContainText("includedPaths");
+ await expect(editorContent).toContainText("excludedPaths");
+ });
+
+ test("Data Masking editor should have correct default policy values", async ({ page }) => {
+ const explorer = await DataExplorer.open(page, TestAccount.SQL);
+ const isTabAvailable = await navigateToDataMaskingTab(page, explorer);
+
+ if (!isTabAvailable) {
+ test.skip(
+ true,
+ "Data Masking tab is not available. Test account may not have EnableDynamicDataMasking capability.",
+ );
+ }
+
+ const editorContent = explorer.frame.locator(".settingsV2Editor");
+ await expect(editorContent).toBeVisible();
+
+ // Default policy should have empty includedPaths and excludedPaths arrays
+ await expect(editorContent).toContainText("[]");
+ });
+});
diff --git a/test/sql/scaleAndSettings/scale.spec.ts b/test/sql/scaleAndSettings/scale.spec.ts
index d12db999c..d886b2def 100644
--- a/test/sql/scaleAndSettings/scale.spec.ts
+++ b/test/sql/scaleAndSettings/scale.spec.ts
@@ -118,7 +118,5 @@ async function openScaleTab(browser: Browser): Promise {
}
async function cleanup({ context }: Partial) {
- if (!process.env.CI) {
- await context?.dispose();
- }
+ await context?.dispose();
}
diff --git a/test/sql/scaleAndSettings/settings.spec.ts b/test/sql/scaleAndSettings/settings.spec.ts
index 3f14422eb..f60889574 100644
--- a/test/sql/scaleAndSettings/settings.spec.ts
+++ b/test/sql/scaleAndSettings/settings.spec.ts
@@ -17,12 +17,9 @@ test.describe("Settings under Scale & Settings", () => {
await settingsTab.click();
});
- // Delete database only if not running in CI
- if (!process.env.CI) {
- test.afterAll("Delete Test Database", async () => {
- await context?.dispose();
- });
- }
+ test.afterAll("Delete Test Database", async () => {
+ await context?.dispose();
+ });
test("Update TTL to On (no default)", async () => {
const ttlOnNoDefaultRadioButton = explorer.frame.getByRole("radio", { name: "ttl-on-no-default-option" });
diff --git a/test/sql/scaleAndSettings/sharedThroughput.spec.ts b/test/sql/scaleAndSettings/sharedThroughput.spec.ts
new file mode 100644
index 000000000..d1c7d4c90
--- /dev/null
+++ b/test/sql/scaleAndSettings/sharedThroughput.spec.ts
@@ -0,0 +1,229 @@
+import { Locator, expect, test } from "@playwright/test";
+import {
+ CommandBarButton,
+ DataExplorer,
+ ONE_MINUTE_MS,
+ TEST_AUTOSCALE_MAX_THROUGHPUT_RU_4K,
+ TEST_MANUAL_THROUGHPUT_RU,
+ TestAccount,
+} from "../../fx";
+import { TestDatabaseContext, createTestDB } from "../../testData";
+
+test.describe("Database with Shared Throughput", () => {
+ let dbContext: TestDatabaseContext = null!;
+ let explorer: DataExplorer = null!;
+ const containerId = "sharedcontainer";
+
+ // Helper methods
+ const getThroughputInput = (type: "manual" | "autopilot"): Locator => {
+ return explorer.frame.getByTestId(`${type}-throughput-input`);
+ };
+
+ test.afterEach("Delete Test Database", async () => {
+ await dbContext?.dispose();
+ });
+
+ test.describe("Manual Throughput Tests", () => {
+ test.beforeEach(async ({ page }) => {
+ explorer = await DataExplorer.open(page, TestAccount.SQL);
+ });
+
+ test("Create database with shared manual throughput and verify Scale node in UI", async () => {
+ test.setTimeout(120000); // 2 minutes timeout
+ // Create database with shared manual throughput (400 RU/s)
+ dbContext = await createTestDB({ throughput: 400 });
+
+ // Verify database node appears in the tree
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ expect(databaseNode).toBeDefined();
+
+ // Expand the database node to see child nodes
+ await databaseNode.expand();
+
+ // Verify that "Scale" node appears under the database
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ expect(scaleNode).toBeDefined();
+ await expect(scaleNode.element).toBeVisible();
+ });
+
+ test("Add container to shared database without dedicated throughput", async () => {
+ // Create database with shared manual throughput
+ dbContext = await createTestDB({ throughput: 400 });
+
+ // Wait for the database to appear in the tree
+ await explorer.waitForNode(dbContext.database.id);
+
+ // Add a container to the shared database via UI
+ const newContainerButton = await explorer.globalCommandButton("New Container");
+ await newContainerButton.click();
+
+ await explorer.whilePanelOpen(
+ "New Container",
+ async (panel, okButton) => {
+ // Select "Use existing" database
+ const useExistingRadio = panel.getByRole("radio", { name: /Use existing/i });
+ await useExistingRadio.click();
+
+ // Select the database from dropdown using the new data-testid
+ const databaseDropdown = panel.getByRole("combobox", { name: "Choose an existing database" });
+ await databaseDropdown.click();
+
+ await explorer.frame.getByRole("option", { name: dbContext.database.id }).click();
+ // Now you can target the specific database option by its data-testid
+ //await panel.getByTestId(`database-option-${dbContext.database.id}`).click();
+ // Fill container id
+ await panel.getByRole("textbox", { name: "Container id, Example Container1" }).fill(containerId);
+
+ // Fill partition key
+ await panel.getByRole("textbox", { name: "Partition key" }).fill("/pk");
+
+ // Ensure "Provision dedicated throughput" is NOT checked
+ const dedicatedThroughputCheckbox = panel.getByRole("checkbox", {
+ name: /Provision dedicated throughput for this container/i,
+ });
+
+ if (await dedicatedThroughputCheckbox.isVisible()) {
+ const isChecked = await dedicatedThroughputCheckbox.isChecked();
+ if (isChecked) {
+ await dedicatedThroughputCheckbox.uncheck();
+ }
+ }
+
+ await okButton.click();
+ },
+ { closeTimeout: 5 * ONE_MINUTE_MS },
+ );
+
+ // Verify container was created under the database
+ const containerNode = await explorer.waitForContainerNode(dbContext.database.id, containerId);
+ expect(containerNode).toBeDefined();
+ });
+
+ test("Scale shared database manual throughput", async () => {
+ // Create database with shared manual throughput (400 RU/s)
+ dbContext = await createTestDB({ throughput: 400 });
+
+ // Navigate to the scale settings by clicking the "Scale" node in the tree
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ await databaseNode.expand();
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ await scaleNode.element.click();
+
+ // Update manual throughput from 400 to 800
+ await getThroughputInput("manual").fill(TEST_MANUAL_THROUGHPUT_RU.toString());
+
+ // Save changes
+ await explorer.commandBarButton(CommandBarButton.Save).click();
+
+ // Verify success message
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated offer for database ${dbContext.database.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+ });
+
+ test("Scale shared database from manual to autoscale", async () => {
+ // Create database with shared manual throughput (400 RU/s)
+ dbContext = await createTestDB({ throughput: 400 });
+
+ // Open database settings by clicking the "Scale" node
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ await databaseNode.expand();
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ await scaleNode.element.click();
+
+ // Switch to Autoscale
+ const autoscaleRadio = explorer.frame.getByText("Autoscale", { exact: true });
+ await autoscaleRadio.click();
+
+ // Set autoscale max throughput to 1000
+ //await getThroughputInput("autopilot").fill(TEST_AUTOSCALE_THROUGHPUT_RU.toString());
+
+ // Save changes
+ await explorer.commandBarButton(CommandBarButton.Save).click();
+
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated offer for database ${dbContext.database.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+ });
+ });
+
+ test.describe("Autoscale Throughput Tests", () => {
+ test.beforeEach(async ({ page }) => {
+ explorer = await DataExplorer.open(page, TestAccount.SQL);
+ });
+
+ test("Create database with shared autoscale throughput and verify Scale node in UI", async () => {
+ test.setTimeout(120000); // 2 minutes timeout
+
+ // Create database with shared autoscale throughput (max 1000 RU/s)
+ dbContext = await createTestDB({ maxThroughput: 1000 });
+
+ // Verify database node appears
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ expect(databaseNode).toBeDefined();
+
+ // Expand the database node to see child nodes
+ await databaseNode.expand();
+
+ // Verify that "Scale" node appears under the database
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ expect(scaleNode).toBeDefined();
+ await expect(scaleNode.element).toBeVisible();
+ });
+
+ test("Scale shared database autoscale throughput", async () => {
+ // Create database with shared autoscale throughput (max 1000 RU/s)
+ dbContext = await createTestDB({ maxThroughput: 1000 });
+
+ // Open database settings
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ await databaseNode.expand();
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ await scaleNode.element.click();
+
+ // Update autoscale max throughput from 1000 to 4000
+ await getThroughputInput("autopilot").fill(TEST_AUTOSCALE_MAX_THROUGHPUT_RU_4K.toString());
+
+ // Save changes
+ await explorer.commandBarButton(CommandBarButton.Save).click();
+
+ // Verify success message
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated offer for database ${dbContext.database.id}`,
+ {
+ timeout: 2 * ONE_MINUTE_MS,
+ },
+ );
+ });
+
+ test("Scale shared database from autoscale to manual", async () => {
+ // Create database with shared autoscale throughput (max 1000 RU/s)
+ dbContext = await createTestDB({ maxThroughput: 1000 });
+
+ // Open database settings
+ const databaseNode = await explorer.waitForNode(dbContext.database.id);
+ await databaseNode.expand();
+ const scaleNode = await explorer.waitForNode(`${dbContext.database.id}/Scale`);
+ await scaleNode.element.click();
+
+ // Switch to Manual
+ const manualRadio = explorer.frame.getByText("Manual", { exact: true });
+ await manualRadio.click();
+
+ // Save changes
+ await explorer.commandBarButton(CommandBarButton.Save).click();
+
+ // Verify success message
+ await expect(explorer.getConsoleHeaderStatus()).toContainText(
+ `Successfully updated offer for database ${dbContext.database.id}`,
+ { timeout: 2 * ONE_MINUTE_MS },
+ );
+ });
+ });
+});
diff --git a/test/sql/scripts/storedProcedure.spec.ts b/test/sql/scripts/storedProcedure.spec.ts
index 35fb4e0f8..9b53f384d 100644
--- a/test/sql/scripts/storedProcedure.spec.ts
+++ b/test/sql/scripts/storedProcedure.spec.ts
@@ -43,7 +43,7 @@ test.describe("Stored Procedures", () => {
);
// Execute stored procedure
- const executeButton = explorer.commandBarButton(CommandBarButton.Execute);
+ const executeButton = explorer.commandBarButton(CommandBarButton.Execute).first();
await executeButton.click();
const executeSidePanelButton = explorer.frame.getByTestId("Panel/OkButton");
await executeSidePanelButton.click();
diff --git a/test/sql/scripts/trigger.spec.ts b/test/sql/scripts/trigger.spec.ts
index 6874c2aac..9792466d5 100644
--- a/test/sql/scripts/trigger.spec.ts
+++ b/test/sql/scripts/trigger.spec.ts
@@ -26,11 +26,9 @@ test.describe("Triggers", () => {
explorer = await DataExplorer.open(page, TestAccount.SQL);
});
- if (!process.env.CI) {
- test.afterAll("Delete Test Database", async () => {
- await context?.dispose();
- });
- }
+ test.afterAll("Delete Test Database", async () => {
+ await context?.dispose();
+ });
test("Add and delete trigger", async ({ page }, testInfo) => {
// Open container context menu and click New Trigger
diff --git a/test/sql/scripts/userDefinedFunction.spec.ts b/test/sql/scripts/userDefinedFunction.spec.ts
index 911b1f4ce..c46b19989 100644
--- a/test/sql/scripts/userDefinedFunction.spec.ts
+++ b/test/sql/scripts/userDefinedFunction.spec.ts
@@ -19,11 +19,9 @@ test.describe("User Defined Functions", () => {
explorer = await DataExplorer.open(page, TestAccount.SQL);
});
- if (!process.env.CI) {
- test.afterAll("Delete Test Database", async () => {
- await context?.dispose();
- });
- }
+ test.afterAll("Delete Test Database", async () => {
+ await context?.dispose();
+ });
test("Add, execute, and delete user defined function", async ({ page }, testInfo) => {
// Open container context menu and click New UDF
diff --git a/test/sql/testCases.ts b/test/sql/testCases.ts
index 4398c93eb..872f427b4 100644
--- a/test/sql/testCases.ts
+++ b/test/sql/testCases.ts
@@ -249,4 +249,50 @@ export const documentTestCases: DocumentTestCase[] = [
},
],
},
+ {
+ name: "Single Double-Quoted Partition Key",
+ databaseId: "e2etests-sql-readonly",
+ containerId: "doubleQuotedPartitionKey",
+ documents: [
+ {
+ documentId: "doubleQuotedPartitionKey",
+ partitionKeys: [{ key: "/partition-key", value: "doubleQuotedValue" }],
+ },
+ {
+ documentId: "doubleQuotedPartitionKey_empty_string",
+ partitionKeys: [{ key: "/partition-key", value: "" }],
+ },
+ {
+ documentId: "doubleQuotedPartitionKey_null",
+ partitionKeys: [{ key: "/partition-key", value: null }],
+ },
+ {
+ documentId: "doubleQuotedPartitionKey_missing",
+ partitionKeys: [],
+ },
+ ],
+ },
+ {
+ name: "Single Partition Key With Whitespace",
+ databaseId: "e2etests-sql-readonly",
+ containerId: "whitespacePartitionKey",
+ documents: [
+ {
+ documentId: "whitespacePartitionKey",
+ partitionKeys: [{ key: "/ partitionKey", value: "whitespaceValue" }],
+ },
+ {
+ documentId: "whitespacePartitionKey_empty_string",
+ partitionKeys: [{ key: "/ partitionKey", value: "" }],
+ },
+ {
+ documentId: "whitespacePartitionKey_null",
+ partitionKeys: [{ key: "/ partitionKey", value: null }],
+ },
+ {
+ documentId: "whitespacePartitionKey_missing",
+ partitionKeys: [],
+ },
+ ],
+ },
];
diff --git a/test/testData.ts b/test/testData.ts
index 723836a66..f6a15960f 100644
--- a/test/testData.ts
+++ b/test/testData.ts
@@ -1,9 +1,15 @@
-import crypto from "crypto";
-
import { CosmosDBManagementClient } from "@azure/arm-cosmosdb";
-import { BulkOperationType, Container, CosmosClient, CosmosClientOptions, Database, JSONObject } from "@azure/cosmos";
-import { AzureIdentityCredentialAdapter } from "@azure/ms-rest-js";
-
+import {
+ BulkOperationType,
+ Container,
+ CosmosClient,
+ CosmosClientOptions,
+ Database,
+ ErrorResponse,
+ JSONObject,
+} from "@azure/cosmos";
+import { Buffer } from "node:buffer";
+import { webcrypto } from "node:crypto";
import {
generateUniqueName,
getAccountName,
@@ -12,6 +18,7 @@ import {
subscriptionId,
TestAccount,
} from "./fx";
+globalThis.crypto = webcrypto as Crypto;
export interface TestItem {
id: string;
@@ -60,8 +67,9 @@ function createTestItems(): TestItem[] {
// Document IDs cannot contain '/', '\', or '#'
function createSafeRandomString(byteLength: number): string {
- return crypto
- .randomBytes(byteLength)
+ const bytes = new Uint8Array(byteLength);
+ crypto.getRandomValues(bytes);
+ return Buffer.from(bytes)
.toString("base64")
.replace(/[/\\#]/g, "_");
}
@@ -77,11 +85,86 @@ export class TestContainerContext {
public testData: Map,
) {}
+ async dispose() {
+ try {
+ await this.database.delete();
+ } catch (error) {
+ if (error instanceof ErrorResponse && error.code === 404) {
+ return; // Resource already deleted, ignore
+ }
+ throw error; // Re-throw other errors
+ }
+ }
+}
+
+export class TestDatabaseContext {
+ constructor(
+ public armClient: CosmosDBManagementClient,
+ public client: CosmosClient,
+ public database: Database,
+ ) {}
+
async dispose() {
await this.database.delete();
}
}
+export interface CreateTestDBOptions {
+ throughput?: number;
+ maxThroughput?: number; // For autoscale
+}
+
+// Helper function to create ARM client and Cosmos client for SQL account
+async function createCosmosClientForSQLAccount(
+ accountType: TestAccount.SQL | TestAccount.SQLContainerCopyOnly = TestAccount.SQL,
+): Promise<{ armClient: CosmosDBManagementClient; client: CosmosClient }> {
+ const credentials = getAzureCLICredentials();
+ const armClient = new CosmosDBManagementClient(credentials, subscriptionId);
+ const accountName = getAccountName(accountType);
+ const account = await armClient.databaseAccounts.get(resourceGroupName, accountName);
+
+ const clientOptions: CosmosClientOptions = {
+ endpoint: account.documentEndpoint!,
+ };
+
+ const rbacToken =
+ accountType === TestAccount.SQL
+ ? process.env.NOSQL_TESTACCOUNT_TOKEN
+ : accountType === TestAccount.SQLContainerCopyOnly
+ ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN
+ : "";
+
+ if (rbacToken) {
+ clientOptions.tokenProvider = async (): Promise => {
+ const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
+ const authorizationToken = `${AUTH_PREFIX}${rbacToken}`;
+ return authorizationToken;
+ };
+ } else {
+ const keys = await armClient.databaseAccounts.listKeys(resourceGroupName, accountName);
+ clientOptions.key = keys.primaryMasterKey;
+ }
+
+ const client = new CosmosClient(clientOptions);
+
+ return { armClient, client };
+}
+
+export async function createTestDB(options?: CreateTestDBOptions): Promise {
+ const databaseId = generateUniqueName("db");
+ const { armClient, client } = await createCosmosClientForSQLAccount();
+
+ // Create database with provisioned throughput (shared throughput)
+ // This checks the "Provision database throughput" option
+ const { database } = await client.databases.create({
+ id: databaseId,
+ throughput: options?.throughput, // Manual throughput (e.g., 400)
+ maxThroughput: options?.maxThroughput, // Autoscale max throughput (e.g., 1000)
+ });
+
+ return new TestDatabaseContext(armClient, client, database);
+}
+
type createTestSqlContainerConfig = {
includeTestData?: boolean;
partitionKey?: string;
@@ -104,34 +187,7 @@ export async function createMultipleTestContainers({
const creationPromises: Promise[] = [];
const databaseId = databaseName ? databaseName : generateUniqueName("db");
- const credentials = getAzureCLICredentials();
- const adaptedCredentials = new AzureIdentityCredentialAdapter(credentials);
- const armClient = new CosmosDBManagementClient(adaptedCredentials, subscriptionId);
- const accountName = getAccountName(accountType);
- const account = await armClient.databaseAccounts.get(resourceGroupName, accountName);
-
- const clientOptions: CosmosClientOptions = {
- endpoint: account.documentEndpoint!,
- };
-
- const rbacToken =
- accountType === TestAccount.SQL
- ? process.env.NOSQL_TESTACCOUNT_TOKEN
- : accountType === TestAccount.SQLContainerCopyOnly
- ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN
- : "";
- if (rbacToken) {
- clientOptions.tokenProvider = async (): Promise => {
- const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
- const authorizationToken = `${AUTH_PREFIX}${rbacToken}`;
- return authorizationToken;
- };
- } else {
- const keys = await armClient.databaseAccounts.listKeys(resourceGroupName, accountName);
- clientOptions.key = keys.primaryMasterKey;
- }
-
- const client = new CosmosClient(clientOptions);
+ const { armClient, client } = await createCosmosClientForSQLAccount(accountType);
const { database } = await client.databases.createIfNotExists({ id: databaseId });
try {
@@ -158,29 +214,8 @@ export async function createTestSQLContainer({
}: createTestSqlContainerConfig = {}) {
const databaseId = databaseName ? databaseName : generateUniqueName("db");
const containerId = "testcontainer"; // A unique container name isn't needed because the database is unique
- const credentials = getAzureCLICredentials();
- const adaptedCredentials = new AzureIdentityCredentialAdapter(credentials);
- const armClient = new CosmosDBManagementClient(adaptedCredentials, subscriptionId);
- const accountName = getAccountName(TestAccount.SQL);
- const account = await armClient.databaseAccounts.get(resourceGroupName, accountName);
+ const { armClient, client } = await createCosmosClientForSQLAccount();
- const clientOptions: CosmosClientOptions = {
- endpoint: account.documentEndpoint!,
- };
-
- const nosqlAccountRbacToken = process.env.NOSQL_TESTACCOUNT_TOKEN;
- if (nosqlAccountRbacToken) {
- clientOptions.tokenProvider = async (): Promise => {
- const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
- const authorizationToken = `${AUTH_PREFIX}${nosqlAccountRbacToken}`;
- return authorizationToken;
- };
- } else {
- const keys = await armClient.databaseAccounts.listKeys(resourceGroupName, accountName);
- clientOptions.key = keys.primaryMasterKey;
- }
-
- const client = new CosmosClient(clientOptions);
const { database } = await client.databases.createIfNotExists({ id: databaseId });
try {
const { container } = await database.containers.createIfNotExists(
@@ -216,12 +251,19 @@ export async function createTestSQLContainer({
}
export const setPartitionKeys = (partitionKeys: PartitionKey[]) => {
- const result = {};
+ const result: Record = {};
partitionKeys.forEach((partitionKey) => {
const { key: keyPath, value: keyValue } = partitionKey;
const cleanPath = keyPath.startsWith("/") ? keyPath.slice(1) : keyPath;
- const keys = cleanPath.split("/");
+ const keys = cleanPath.split("/").map((segment) => {
+ // Strip enclosing double quotes from partition key path segments
+ // e.g., '"partition-key"' -> 'partition-key'
+ if (segment.length >= 2 && segment.charAt(0) === '"' && segment.charAt(segment.length - 1) === '"') {
+ return segment.slice(1, -1);
+ }
+ return segment;
+ });
let current = result;
keys.forEach((key, index) => {
@@ -229,7 +271,7 @@ export const setPartitionKeys = (partitionKeys: PartitionKey[]) => {
current[key] = keyValue;
} else {
current[key] = current[key] || {};
- current = current[key];
+ current = current[key] as Record;
}
});
});
diff --git a/utils/deployment-status/package-lock.json b/utils/deployment-status/package-lock.json
index cd7f0a461..1e3063056 100644
--- a/utils/deployment-status/package-lock.json
+++ b/utils/deployment-status/package-lock.json
@@ -1,66 +1,180 @@
{
"name": "deployment-status",
"version": "1.0.0",
- "lockfileVersion": 1,
+ "lockfileVersion": 3,
"requires": true,
- "dependencies": {
- "@types/color-name": {
+ "packages": {
+ "": {
+ "name": "deployment-status",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "moment": "^2.30.1",
+ "node-fetch": "^3.3.2"
+ }
+ },
+ "node_modules/@types/color-name": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
},
- "ansi-styles": {
+ "node_modules/ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
- "requires": {
+ "dependencies": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "chalk": {
+ "node_modules/chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "requires": {
+ "dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "color-convert": {
+ "node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
+ "dependencies": {
"color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "color-name": {
+ "node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "has-flag": {
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
},
- "moment": {
- "version": "2.27.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
- "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
+ "node_modules/moment": {
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "engines": {
+ "node": "*"
+ }
},
- "node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "engines": {
+ "node": ">=10.5.0"
+ }
},
- "supports-color": {
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/supports-color": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
- "requires": {
+ "dependencies": {
"has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
+ "engines": {
+ "node": ">= 8"
}
}
}
diff --git a/utils/deployment-status/package.json b/utils/deployment-status/package.json
index 40b922b18..eb9f28ed9 100644
--- a/utils/deployment-status/package.json
+++ b/utils/deployment-status/package.json
@@ -11,7 +11,7 @@
"license": "ISC",
"dependencies": {
"chalk": "^4.1.0",
- "moment": "^2.27.0",
- "node-fetch": "^2.6.1"
+ "moment": "^2.30.1",
+ "node-fetch": "^3.3.2"
}
}
diff --git a/utils/generateI18nKeys.mjs b/utils/generateI18nKeys.mjs
new file mode 100644
index 000000000..e48c4bbd4
--- /dev/null
+++ b/utils/generateI18nKeys.mjs
@@ -0,0 +1,71 @@
+/**
+ * Generates src/Localization/Keys.generated.ts from en/Resources.json.
+ *
+ * Every leaf value becomes its dot-notation key path, with JSDoc annotations
+ * showing the English translation so developers see real text on hover.
+ *
+ * Libraries:
+ * - values-to-keys — replaces translation values with dot-path keys
+ * - i18next-resources-for-ts (json2ts) — serialises objects as typed `as const` TS
+ *
+ * Usage: node utils/generateI18nKeys.mjs
+ */
+
+import { readFileSync, writeFileSync } from "fs";
+import { json2ts } from "i18next-resources-for-ts";
+import { dirname, resolve } from "path";
+import { fileURLToPath } from "url";
+import { replace } from "values-to-keys";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const ROOT = resolve(__dirname, "..");
+const INPUT = resolve(ROOT, "src/Localization/en/Resources.json");
+const OUTPUT = resolve(ROOT, "src/Localization/Keys.generated.ts");
+
+// ── helpers ────────────────────────────────────────────────────────
+
+/**
+ * Walk two parallel objects (keyed + original) and produce TS source
+ * with JSDoc comments showing the English value at every leaf.
+ */
+function serialiseWithJSDoc(obj, orig, indent = 2) {
+ const pad = " ".repeat(indent);
+ const lines = ["{"];
+ for (const key of Object.keys(obj)) {
+ const val = obj[key];
+ const origVal = orig[key];
+ if (typeof val === "object" && val !== null) {
+ lines.push(`${pad}${key}: ${serialiseWithJSDoc(val, origVal, indent + 2)},`);
+ } else {
+ lines.push(`${pad}/** ${origVal} */`);
+ lines.push(`${pad}${key}: ${JSON.stringify(val)},`);
+ }
+ }
+ lines.push(`${" ".repeat(Math.max(0, indent - 2))}}`);
+ return lines.join("\n");
+}
+
+// ── main ───────────────────────────────────────────────────────────
+
+// Keep the original English values for JSDoc annotations
+const original = JSON.parse(readFileSync(INPUT, "utf-8"));
+
+// Use values-to-keys to replace every leaf value with its dot-path key
+const keyed = replace(JSON.parse(readFileSync(INPUT, "utf-8")));
+
+// Use json2ts to verify the shape is valid for `as const` export
+// (We still use our own serialiser because json2ts doesn't add JSDoc comments)
+json2ts(keyed); // validates structure; throws on malformed input
+
+const banner = `\
+// -----------------------------------------------------------------
+// THIS FILE IS AUTO-GENERATED — DO NOT EDIT BY HAND
+// Regenerate with: npm run generate:i18n-keys
+// -----------------------------------------------------------------
+`;
+
+const body = `export const Keys = ${serialiseWithJSDoc(keyed, original)} as const;\n`;
+
+writeFileSync(OUTPUT, banner + body, "utf-8");
+// eslint-disable-next-line no-console
+console.log(`Generated ${OUTPUT}`);
diff --git a/web.config b/web.config
index 8efe7ce6d..e987fa939 100644
--- a/web.config
+++ b/web.config
@@ -30,7 +30,7 @@
-
+
diff --git a/webpack.config.js b/webpack.config.js
index 32760594d..2b00b9f2b 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -117,6 +117,9 @@ module.exports = function (_env = {}, argv = {}) {
selfServe: "./src/SelfServe/SelfServe.tsx",
connectToGitHub: "./src/GitHub/GitHubConnector.ts",
...(mode !== "production" && { testExplorer: "./test/testExplorer/TestExplorer.ts" }),
+ ...(mode !== "production" && {
+ searchableDropdownFixture: "./test/component-fixtures/searchableDropdown/SearchableDropdownFixture.tsx",
+ }),
};
const htmlWebpackPlugins = [
@@ -172,6 +175,11 @@ module.exports = function (_env = {}, argv = {}) {
template: "test/testExplorer/testExplorer.html",
chunks: ["testExplorer"],
}),
+ new HtmlWebpackPlugin({
+ filename: "searchableDropdownFixture.html",
+ template: "test/component-fixtures/searchableDropdown/searchableDropdown.html",
+ chunks: ["searchableDropdownFixture"],
+ }),
]
: []),
];
@@ -303,51 +311,53 @@ module.exports = function (_env = {}, argv = {}) {
}
});
+ // Only handle OPTIONS for /api (preflight)
+ if (server?.app) {
+ server.app.options("/api", (_req, res) => res.sendStatus(200));
+ server.app.options("/api/*", (_req, res) => res.sendStatus(200));
+ }
+
return middlewares;
},
- proxy: {
- "/api": {
+ proxy: [
+ {
+ context: ["/api"],
target: "https://cdb-ms-mpac-pbe.cosmos.azure.com",
changeOrigin: true,
logLevel: "debug",
- bypass: (req, res) => {
- if (req.method === "OPTIONS") {
- res.statusCode = 200;
- res.send();
- }
- },
},
- "/proxy": {
+ {
+ context: ["/proxy"],
target: "https://cdb-ms-mpac-pbe.cosmos.azure.com",
changeOrigin: true,
secure: false,
logLevel: "debug",
pathRewrite: { "^/proxy": "" },
- router: (req) => {
- let newTarget = req.headers["x-ms-proxy-target"];
- return newTarget;
- },
+ router: (req) => req.headers["x-ms-proxy-target"],
},
- "/_explorer": {
+ {
+ context: ["/_explorer"],
target: process.env.EMULATOR_ENDPOINT || "https://localhost:8081/",
changeOrigin: true,
secure: false,
logLevel: "debug",
},
- "/explorerProxy": {
+ {
+ context: ["/explorerProxy"],
target: process.env.EMULATOR_ENDPOINT || "https://localhost:8081/",
pathRewrite: { "^/explorerProxy": "" },
changeOrigin: true,
secure: false,
logLevel: "debug",
},
- [`/${AZURE_TENANT_ID}`]: {
+ {
+ context: [`/${AZURE_TENANT_ID}`],
target: "https://login.microsoftonline.com/",
changeOrigin: true,
secure: false,
logLevel: "debug",
},
- },
+ ],
},
stats: "minimal",
};