From 990f7f581709bec416492759025ccdafa532f465 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 16 Oct 2026 18:26:12 +0000
Subject: [PATCH 1/5] New translations (Translated)
---
localizedContent/es/.translation-status.json | 197 ++++++++++-------
localizedContent/es/content/features/toc.md | 131 +++++-------
.../es/content/getting-started/toc.md | 92 +++-----
.../how-tos/formula-fixup-dependencies.md | 13 +-
localizedContent/es/content/how-tos/toc.md | 74 +++----
localizedContent/es/content/references/toc.md | 36 ++--
.../es/content/security/security-privacy.md | 151 +++++++------
localizedContent/es/content/security/toc.md | 11 +-
.../es/content/troubleshooting/toc.md | 16 +-
.../es/content/whats-new/3-18-0.html | 2 +-
.../es/content/whats-new/3-18-1.html | 2 +-
.../es/content/whats-new/3-18-2.html | 2 +-
.../es/content/whats-new/3-26-0.html | 12 ++
.../es/content/whats-new/3-26-1.html | 12 ++
.../es/content/whats-new/3-26-2.html | 11 +
.../es/content/whats-new/3-26-3.html | 11 +
.../es/content/whats-new/index.html | 20 +-
localizedContent/zh/.translation-status.json | 199 ++++++++++--------
localizedContent/zh/content/features/toc.md | 117 +++++-----
.../zh/content/getting-started/toc.md | 72 ++-----
.../how-tos/formula-fixup-dependencies.md | 13 +-
localizedContent/zh/content/how-tos/toc.md | 80 +++----
.../content/references/release-notes/3_0_3.md | 69 +++---
.../content/references/release-notes/3_1_2.md | 100 +++++----
.../content/references/release-notes/3_3_4.md | 110 +++++-----
localizedContent/zh/content/references/toc.md | 40 ++--
.../zh/content/security/security-privacy.md | 147 +++++++------
localizedContent/zh/content/security/toc.md | 9 +-
.../zh/content/troubleshooting/toc.md | 12 +-
.../zh/content/whats-new/3-18-0.html | 2 +-
.../zh/content/whats-new/3-18-1.html | 2 +-
.../zh/content/whats-new/3-18-2.html | 2 +-
.../zh/content/whats-new/3-26-0.html | 12 ++
.../zh/content/whats-new/3-26-1.html | 12 ++
.../zh/content/whats-new/3-26-2.html | 11 +
.../zh/content/whats-new/3-26-3.html | 11 +
.../zh/content/whats-new/index.html | 20 +-
37 files changed, 943 insertions(+), 890 deletions(-)
create mode 100644 localizedContent/es/content/whats-new/3-26-0.html
create mode 100644 localizedContent/es/content/whats-new/3-26-1.html
create mode 100644 localizedContent/es/content/whats-new/3-26-2.html
create mode 100644 localizedContent/es/content/whats-new/3-26-3.html
create mode 100644 localizedContent/zh/content/whats-new/3-26-0.html
create mode 100644 localizedContent/zh/content/whats-new/3-26-1.html
create mode 100644 localizedContent/zh/content/whats-new/3-26-2.html
create mode 100644 localizedContent/zh/content/whats-new/3-26-3.html
diff --git a/localizedContent/es/.translation-status.json b/localizedContent/es/.translation-status.json
index 76a8f672d..367f355c2 100644
--- a/localizedContent/es/.translation-status.json
+++ b/localizedContent/es/.translation-status.json
@@ -375,8 +375,8 @@
"status": "translated"
},
"features/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:7dc2adbeda0cb31f2e08f9530d215f40d39da97a305b2d70c361c71377a687cf",
+ "status": "translated"
},
"features/unsaved-changes.md": {
"sourceHash": "sha256:b4276f4a2d3144459dfc5e6fa6f6e71d560547cad60cc6c6227c8a2207fc3651",
@@ -547,8 +547,8 @@
"status": "translated"
},
"getting-started/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:adf238552f81c08ae51d0b01e45e454d85808fa4cb5f0346102572f8c292fd10",
+ "status": "translated"
},
"getting-started/training-telearn.md": {
"sourceHash": "sha256:cba2b907335edf7e1310d6323c063305cbed3c66013758b932d91466394b4d85",
@@ -631,7 +631,7 @@
"status": "translated"
},
"how-tos/formula-fixup-dependencies.md": {
- "sourceHash": "sha256:f1b335d4a4c069ac21bdd9c20b0e34ed6442c63307f9d3a1cfdb29e4992daec5",
+ "sourceHash": "sha256:47edeccaae5f56e9ee945ebb0361b52f61ca0dc746445cb17413f13e5cfdcd1d",
"status": "translated"
},
"how-tos/import-export-translations.md": {
@@ -791,8 +791,8 @@
"status": "translated"
},
"how-tos/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:6b2bda5655200d7d8468b139409d10f4024adeb90e0ae3177833c7003df10ec9",
+ "status": "translated"
},
"how-tos/undo-redo.md": {
"sourceHash": "sha256:857971043360cef22eb83ee113a0ebbe86160e1250ecfce378e7824e924fcc2d",
@@ -1527,8 +1527,8 @@
"status": "translated"
},
"references/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:dbc3800f9348e300524d13c2beacfc036c700b0df898692e39929d7b4bfcb440",
+ "status": "translated"
},
"references/user-options.md": {
"sourceHash": "sha256:ad092f6088edad3d3e8bd124c227f618338b081a453118946880a2fdc8dccf9d",
@@ -1555,8 +1555,8 @@
"status": "translated"
},
"security/security-privacy.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:5d9f2e13cdc658c57cd7a23bcc73bedef02662c7efa62cb1bf1e780e53b281cd",
+ "status": "translated"
},
"security/terms.md": {
"sourceHash": "sha256:90fd51f0cff45e9e16b2c200fc4dc3ccf769b97a3c6afcd09b7a688cfc5b87f0",
@@ -1567,8 +1567,8 @@
"status": "copied"
},
"security/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:aecf5ca69ba24fc448be9fbff14d4662f5b333222a4ddec6bb6a064575481147",
+ "status": "translated"
},
"toc.yml": {
"sourceHash": "sha256:11d5df2671e45efed1baf56cd10c6634fc48f5f34b8f40d5b83456258a929108",
@@ -1631,8 +1631,8 @@
"status": "translated"
},
"troubleshooting/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:eb90344041259d96a138c386edc99bc3c992c331f293f88539c4deca6fffd323",
+ "status": "translated"
},
"tutorials/calendars.md": {
"sourceHash": "sha256:42d5fbcac1800e22943c402afc8cc0ab45ecae62d802ffafb492d37a3e4096b2",
@@ -1727,126 +1727,169 @@
"status": "translated"
},
"whats-new/3-11-0.html": {
- "sourceHash": "sha256:8e741c7bee681e80aef9a0cac12b2c4a08193ba1a64e896f825400209a615dd0",
- "status": "translated"
+ "sourceHash": "sha256:f05c90ee23a66c16c7f7e97f10f44e50bdd772f3049b4d0e75def4e1562c6664",
+ "status": "copied"
},
"whats-new/3-12-0.html": {
- "sourceHash": "sha256:1185bd5e0f896cf0241dba6051a1d23f8122df33d35ca629751388ca46e5411b",
- "status": "translated"
+ "sourceHash": "sha256:ac4db83ba7bf38d569d8888e29c900ac98bd8528159db2439b310bcb4613ce33",
+ "status": "copied"
},
"whats-new/3-12-1.html": {
- "sourceHash": "sha256:0e1800850f435b7939eaf29d4c05564b315198f49bd8a9539dd180c2289aaca4",
- "status": "translated"
+ "sourceHash": "sha256:05454034ab0295fc27adbd530c98851b2c6d978d1297620c005cbac8723068e2",
+ "status": "copied"
},
"whats-new/3-13-0.html": {
- "sourceHash": "sha256:fe072740d52a6d0664d5a54627f904603dca096280c9a0c3e4d67fa0dfa89236",
- "status": "translated"
+ "sourceHash": "sha256:338340ce38e3d4e0c78ca8939e9f682a39a84144c10c7775b2ebd45fd0a013d8",
+ "status": "copied"
},
"whats-new/3-14-0.html": {
- "sourceHash": "sha256:516c949f7443084eeb6e3c4c5981e5ff4960ddd65622dd0f34b5b9c47b81431e",
- "status": "translated"
+ "sourceHash": "sha256:0ebf84c1ed96b8df959859fedb4294d14f1a785f7d90c898a23552a840a5d66e",
+ "status": "copied"
},
"whats-new/3-15-0.html": {
- "sourceHash": "sha256:21384e1d1473d31ef1d1076640a94dc9f48033a072ae9e56e37b700954319083",
- "status": "translated"
+ "sourceHash": "sha256:be61fe699768f176d186e6121c697e035fabed64aa567550d5e9636e31ee0b5c",
+ "status": "copied"
},
"whats-new/3-16-0.html": {
- "sourceHash": "sha256:2ea751dad6a56088eb1e35934df0e3def7ceb65e15877e869778a2c946bbb322",
- "status": "translated"
+ "sourceHash": "sha256:305e03f418ff43c6b4462466e6df3a048aabbdd677da448067f9f63e9d4131da",
+ "status": "copied"
},
"whats-new/3-17-0.html": {
- "sourceHash": "sha256:5d0ae23d2d1a98813d3c06f3c50039838fe3b4e024ef3b4d61462469d9d904a3",
- "status": "translated"
+ "sourceHash": "sha256:66246fbfd6abce8bb7bd60f3c922f470b96c4a78315fbf1a9b862db29983b50c",
+ "status": "copied"
},
"whats-new/3-17-1.html": {
- "sourceHash": "sha256:5d0ae23d2d1a98813d3c06f3c50039838fe3b4e024ef3b4d61462469d9d904a3",
- "status": "translated"
+ "sourceHash": "sha256:66246fbfd6abce8bb7bd60f3c922f470b96c4a78315fbf1a9b862db29983b50c",
+ "status": "copied"
},
"whats-new/3-18-0.html": {
- "sourceHash": "sha256:379bc949c979ed11804eacb3090b760cb0b67f7e10d4a01b1b7e314b1fe98739",
- "status": "translated"
+ "sourceHash": "sha256:11676c6ea80f5de2ee940db6e5e07bfb1c4d654c363ce8172034e56ea09ad766",
+ "status": "copied"
},
"whats-new/3-18-1.html": {
- "sourceHash": "sha256:264150226e01169f6dd8569bb48d8c13192aedd54d78d17b51df115ca260c0c9",
- "status": "translated"
+ "sourceHash": "sha256:f38aa0f26bb0eec38c07d2926df761a9237ae36fdb8903b71e4b1a115897ef3c",
+ "status": "copied"
},
"whats-new/3-18-2.html": {
- "sourceHash": "sha256:07289f60b049811a09e673f8642fe4dcbc50efddb8ad77718cf55d16e4b69200",
- "status": "translated"
+ "sourceHash": "sha256:3aaee936b3713c578ac67b6bf55cfd638a90fd2d1fdca3b9d06d971af73da0ce",
+ "status": "copied"
},
"whats-new/3-19-0.html": {
- "sourceHash": "sha256:264b6c6843e8a6c737c5e88953856e08a9ece0ebd39ac78b2a58cef1b69796db",
- "status": "translated"
+ "sourceHash": "sha256:c97ca1eaa3a079bbe8ee4ce15231468a917535875b99bf94b66dbfe850ea78f1",
+ "status": "copied"
},
"whats-new/3-20-0.html": {
- "sourceHash": "sha256:165affb599d769434c2e227fc63aa174509c08ec5a501e357ff028b3bb26bbd7",
- "status": "translated"
+ "sourceHash": "sha256:800086470837f7c0ef96b37778a29897895b6ecc41e8b6aa6127b8dbed13370a",
+ "status": "copied"
},
"whats-new/3-21-0.html": {
- "sourceHash": "sha256:0560eecc9d57bfa393d9415121f00a06c9e0692db7bbf924c81fd5e32f99283c",
- "status": "translated"
+ "sourceHash": "sha256:433f0fca243c8efa8f7e643fc432faaedfc6ea9d43c4ddbabed6c55468c15afb",
+ "status": "copied"
},
"whats-new/3-22-0.html": {
- "sourceHash": "sha256:d5c122abcc84f8fdea50724e96e35435f1ce4e71e204cbd4b4bf2822dc98bbb1",
- "status": "translated"
+ "sourceHash": "sha256:d8dadb26e6e39ddb632129d367d22c2512cc8b1cb1f0b4ff9261b2158440fa11",
+ "status": "copied"
},
"whats-new/3-22-1.html": {
- "sourceHash": "sha256:65af209383626dfef5ecc828f1d6050cf336ff370c7f3b58c2233352ab39ef02",
- "status": "translated"
+ "sourceHash": "sha256:132726eaf4923afa154e884b8084fb50cde7472a2e18de4ec06a1d8b8ee8d990",
+ "status": "copied"
},
"whats-new/3-23-0.html": {
- "sourceHash": "sha256:c8a1848ae04394a58fe7146ebfa57ace75dafed1fbe735e6feba8a43d805ac11",
- "status": "translated"
+ "sourceHash": "sha256:57003c0ce3231886266229e77c19fd45b4e0c8a8d816b79d2af5201117f44630",
+ "status": "copied"
},
"whats-new/3-23-1.html": {
- "sourceHash": "sha256:258468e5a7e6f2437aa12b410807dceabf6d5b5060c8607ea88b157ee8dc2b8f",
- "status": "translated"
+ "sourceHash": "sha256:792a9676ccb8bbe2dcf7d1df81d3b3307567e1af2cc15567c78415b2e24d4ec8",
+ "status": "copied"
},
"whats-new/3-24-0.html": {
- "sourceHash": "sha256:addd6ae83a458d866e21cf5b566afd011b438d822206582320568f2a5efa2c5b",
- "status": "translated"
+ "sourceHash": "sha256:7f944c252f7a8c422aa266d7a6fc28a9c05ae602a41e7846f04249d4fc48ef6a",
+ "status": "copied"
},
"whats-new/3-24-1.html": {
- "sourceHash": "sha256:971a290fd477bc5955d7e55e0868b296e8b4016774ca60206f9e04d719a8e273",
- "status": "translated"
+ "sourceHash": "sha256:c43935a7d057dd95816594b369f06182a924aa6a892fad182b0eabe93a7e9501",
+ "status": "copied"
},
"whats-new/3-24-2.html": {
- "sourceHash": "sha256:b4c35a93026703f8aa4b295d1bca544dd64c9fbbd0f191e6c484aaed0d501d02",
- "status": "translated"
+ "sourceHash": "sha256:7a5a2de978c00c85cefdbc798ba050b892549dc039334f947ffffbfd8aa9c6a3",
+ "status": "copied"
},
"whats-new/3-25-0.html": {
- "sourceHash": "sha256:ecb851a842a1bb429299b338684019c5e58c5a41d49e50f52bde33460e1d17c4",
- "status": "translated"
+ "sourceHash": "sha256:d64545aff7bba1e17aa5ea0c1a64c25699af771f3b12a5ce4d5a1b6e67f8e28c",
+ "status": "copied"
},
"whats-new/3-25-1.html": {
- "sourceHash": "sha256:0164edb73af4cbdf606868a921664852b195a2230d52ae4df0b77028c40ea798",
- "status": "translated"
+ "sourceHash": "sha256:a22b5f95bd8281add36952622203e4249a87421aa1f355eb2b8fabea4d52ebd3",
+ "status": "copied"
},
"whats-new/3-25-2.html": {
- "sourceHash": "sha256:d698e79f8caf50a91fb5563c900116a4ed42d0259db6412db4cc0e1a44ad7dca",
- "status": "translated"
+ "sourceHash": "sha256:7dd48026b0f54b9bd1a0087c7a3155cda91de983325d1a59280ff75550f39875",
+ "status": "copied"
},
"whats-new/3-25-3.html": {
- "sourceHash": "sha256:fa93ee8ef8188bc519bde65fb7c222301d13ac1867b883028505bc3a5a7e76c0",
- "status": "translated"
+ "sourceHash": "sha256:b005281766f013aba39b364a5233f5a3308bef9fc7c98ddf77a6330d625e8878",
+ "status": "copied"
+ },
+ "whats-new/3-26-0.html": {
+ "sourceHash": "sha256:e43a553222c48f862abe7993dc460ee413a0b843c62cc0ad18c8ee4669af8cb1",
+ "status": "copied"
+ },
+ "whats-new/3-26-1.html": {
+ "sourceHash": "sha256:68c34fd5ab34fb25fbf53b557a43128c142fdbc69895090ebb76be287698b5d4",
+ "status": "copied"
+ },
+ "whats-new/3-26-2.html": {
+ "sourceHash": "sha256:9052c24f89a6030cebc66e1dfe7ae2ee4b5dc2f845c6be3f14f02afa04fdc262",
+ "status": "copied"
+ },
+ "whats-new/3-26-3.html": {
+ "sourceHash": "sha256:dccf4025abdb99f91e5f04c0a14759b69591e9ffc4253095f6994516954541bb",
+ "status": "copied"
},
"whats-new/generic.html": {
- "sourceHash": "sha256:5db66c26cee732683b90bc9374802446f747ffb7ee43cbbcad0e977805871f2c",
- "status": "translated"
+ "sourceHash": "sha256:2b76277d177968724be678e9d085bf68a7a25d3f6071054d57b096853676bd31",
+ "status": "copied"
},
"whats-new/index.html": {
- "sourceHash": "sha256:5b9c85b1dffecec8f9912e589adb5fb38de25f01803f8a3618053f6994580251",
- "status": "translated"
+ "sourceHash": "sha256:56e416db8f0fa9adcc561aa6bfd06d25309358bcd08aa1983a71d1667cbaf05e",
+ "status": "copied"
}
},
"summary": {
- "translated": 449,
+ "translated": 428,
"outdated": 0,
- "untranslated": 9,
- "copied": 1,
+ "untranslated": 2,
+ "copied": 33,
"pinned": 0,
- "total": 459,
- "completionPercent": 98.0,
- "failures": 0
+ "total": 463,
+ "completionPercent": 99.6,
+ "failures": 5
+ },
+ "failures": {
+ "getting-started/personalizing-te3.md": {
+ "error": "code fences 16 -> 8",
+ "at": "2026-10-16T18:25:48Z",
+ "sourceHash": "sha256:0e2b6a13cb3a279d40f713d56287aca1a7d6d340ebec4e13842b3d51b42f76d8"
+ },
+ "how-tos/Advanced-Filtering-of-the-Explorer-Tree.md": {
+ "error": "code fences 12 -> 6",
+ "at": "2026-10-16T18:25:51Z",
+ "sourceHash": "sha256:88282c7d6522f7528d4115587a3f6a37c0d26be56435f14d66005adbb0770c79"
+ },
+ "how-tos/drag-drop.md": {
+ "error": "code fences 4 -> 2",
+ "at": "2026-10-16T18:25:52Z",
+ "sourceHash": "sha256:ae62dabee90d8104bbccee01dad64504de4a1f6525dd5f07103be4d563f4ae17"
+ },
+ "how-tos/semantic-bridge-rename-objects.md": {
+ "error": "code fences 6 -> 3",
+ "at": "2026-10-16T18:25:53Z",
+ "sourceHash": "sha256:e6486910e9c85e0949fd793b6ef748e19d01c8f3441eda36e07b975682849c7f"
+ },
+ "kb/DR002.md": {
+ "error": "code fences 4 -> 2",
+ "at": "2026-10-16T18:25:55Z",
+ "sourceHash": "sha256:0ad80ebc8cbf3ec27662dffc0210986cbabe8f92810bdb7a33717de8fab16037"
+ }
}
}
diff --git a/localizedContent/es/content/features/toc.md b/localizedContent/es/content/features/toc.md
index 412496b42..1438591b1 100644
--- a/localizedContent/es/content/features/toc.md
+++ b/localizedContent/es/content/features/toc.md
@@ -1,119 +1,100 @@
# Interfaz de usuario
-
## @user-interface
-
-## @tom-explorer-view
-
+## @vista-del-explorador-de-tom
## @properties-view
-
+## @unsaved-changes
## @bpa-view
-
-## @data-refresh-view
-
+## @vista-de-actualización-de-datos
## @find-replace
-
## @messages-view
-
## @diagram-view
-# Características de DAX
-
+# Funciones de DAX
## @dax-debugger
-
## @dax-editor
-
## @dax-query
-
## @dax-scripts
-
## @code-actions
-
## @dax-package-manager
# Secuencias de comandos y automatización
-
## @csharp-scripts
-
-## Biblioteca de C# Script
-
-### @csharp-script-library
-
-### @script-library-beginner
-
-### @script-library-advanced
-
-## @script-helper-methods
-
-## @useful-script-snippets
-
+## Biblioteca de scripts de C#
+### @biblioteca-de-scripts-csharp
+### @biblioteca-de-scripts-principiante
+### @biblioteca-de-scripts-avanzada
+## @métodos-de-ayuda-para-scripts
+## @fragmentos-de-script-útiles
## @macros
# Análisis y calidad del modelo
-
-## @best-practice-analyzer
-
-### @built-in-bpa-rules
-
+## @analizador-de-buenas-prácticas
+### @reglas-bpa-integradas
### @using-bpa
-
-### @using-bpa-sample-rules-expressions
-
-## @dax-optimizer-integration
+### @uso-de-reglas-y-expresiones-de-ejemplo-del-bpa
+## @integración-del-optimizador-de-dax
# Exploración de datos y conectividad
-
## @import-tables
-
+## @connectivity
+### @connect-sql-server
+### @connect-snowflake
+### @connect-databricks
+### @connect-oracle
+### @connect-odbc
+### @connect-oledb
+### @connect-onelake
+### @connect-dataflows
+## @table-preview
## @pivot-grid
-
-## @semantic-model-types
-
-### @direct-lake-sql-model
-
+## @tipos-de-modelos-semánticos
+### @modelo-sql-direct-lake
### @dq-over-as-limitations
-# AI Features
-
+# Funciones de IA
## @ai-assistant
+## @mcp-server
+## @ai-audit-log
# Funciones avanzadas de modelado
-
-## @metadata-translation-editor
-
-## @perspective-editor
+## @columnas-calculadas-contexto-usuario
+## @editor-traducción-metadatos
+## @editor-de-perspectivas
# Organización del modelo
-
-## @hierarchical-display
-
+## @visualización-jerárquica
## @table-groups
-# Implementación y administración del modelo
-
-## [Implementación del modelo](deployment.md)
-
+# Implementación y gestión de modelos
+## [Implementación de modelos](deployment.md)
## @workspace-databases
-
## @workspace-mode
-
## @tmdl
-
## @save-to-folder
-
-## @save-with-supporting-files
-
+## @guardar-con-archivos-de-soporte
+## @auto-reload
## @advanced-refresh
-
-## @refresh-overrides
+## @actualizar-anulaciones
# Línea de comandos e integración
-
-## @command-line-options
-
-# Puente semántico para traducciones multiplataforma
-
+## Tabular Editor CLI (PuPr limitado)
+### [Descripción general](xref:te-cli)
+### [Instalación y configuración](xref:te-cli-install)
+### [Autenticación y conexiones](xref:te-cli-auth)
+### [Referencia de comandos](xref:te-cli-commands)
+### [Configuración personalizada](xref:te-cli-config)
+### [Modo interactivo](xref:te-cli-interactive)
+### [Automatización y secuencias de comandos](xref:te-cli-automation)
+### [Integración de CI/CD](xref:te-cli-cicd)
+### [Resultados legibles por máquina (JSON)](xref:te-cli-findings)
+### [Habilidad del agente de IA](xref:te-cli-skill)
+### [Migración desde la CLI de TE2](xref:te-cli-migrate)
+### [Diferencias de comportamiento y limitaciones conocidas](xref:te-cli-limitations)
+## @opciones-de-línea-de-comandos
+
+# [Semantic Bridge para traducciones multiplataforma](xref:semantic-bridge)
## @semantic-bridge
-
## @semantic-bridge-metric-view-object-model
-
+## @semantic-bridge-metric-view-tabular-translation
## @semantic-bridge-metric-view-validation
+## @semantic-bridge-metric-view-fields-and-dimensions
diff --git a/localizedContent/es/content/getting-started/toc.md b/localizedContent/es/content/getting-started/toc.md
index 8c453828b..36a36e8b0 100644
--- a/localizedContent/es/content/getting-started/toc.md
+++ b/localizedContent/es/content/getting-started/toc.md
@@ -1,75 +1,45 @@
-# [Bienvenido](index.md)
-
-# Introducción a Tabular Editor
-
-## @general-introduction
-
-## @installation-activation-basic
+# [Bienvenida](index.md)
+# Primeros pasos con Tabular Editor 3
+## @introducción-general
+## @getting-started
+## @instalación-activación-básica
## @migrate-from-vs
-
-## @migrate-from-desktop
-
+## @migrar-desde-desktop
## @migrate-from-te2
-
## @azure-marketplace
-
-# Primeros pasos con Tabular Editor 3
-
-## @getting-started
-
## @editions
-
## @training-telearn
-# @getting-started-te2
+# @primeros-pasos-te2
# Power BI Desktop y Tabular Editor
-
-## @desktop-integration
-
-## @desktop-limitations
+## @integración-desktop
+## @desktop-limitations
# Interfaz de usuario
-
-## @user-interface-reference
-
-## @bpa-view-reference
-
-## @data-refresh-view-reference
-
-## @find-replace-reference
-
-## @macros-view-reference
-
-## @messages-view-reference
-
-## @properties-view-reference
-
-## @tom-explorer-view-reference
-
-## @diagram-view-reference
-
-# Desarrollo en paralelo
-
-## @parallel-development
-
-## @optimizing-workflow-workspace-mode
+## @referencia-interfaz-usuario
+## @referencia-vista-bpa
+## @referencia-vista-actualización-datos
+## @referencia-buscar-reemplazar
+## @referencia-vista-macros
+## @referencia-vista-mensajes
+## @referencia-vista-propiedades
+## @referencia-vista-explorador-tom
+## @referencia-vista-diagrama
+## @vista-previa-de-tabla-referencia
+
+# Desarrollo paralelo
+## @desarrollo-paralelo
+## @compartir-macros-reglas-bpa
+## @optimización-flujo-trabajo-modo-espacio-trabajo
# Cree modelos más rápido con Tabular Editor
-
-## @boosting-productivity-te3
-
-## @importing-tables-data-modeling
-
-## @refresh-preview-query
-
-## @creating-and-testing-dax
-
-## @dax-script-introduction
-
+## @aumentar-la-productividad-te3
+## @importación-tablas-modelado-datos
+## @actualizar-vista-previa-consulta
+## @crear-y-probar-dax
+## @introduccion-a-los-scripts-de-dax
## @bpa
-
-## @cs-scripts-and-macros
-
-## @personalizing-te3
\ No newline at end of file
+## @scripts-y-macros-de-cs
+## @personalizar-te3
\ No newline at end of file
diff --git a/localizedContent/es/content/how-tos/formula-fixup-dependencies.md b/localizedContent/es/content/how-tos/formula-fixup-dependencies.md
index 84ab54571..71ae69e60 100644
--- a/localizedContent/es/content/how-tos/formula-fixup-dependencies.md
+++ b/localizedContent/es/content/how-tos/formula-fixup-dependencies.md
@@ -1,6 +1,8 @@
---
uid: formula-fix-up-dependencies
-title: Corrección automática de fórmulas y dependencias de fórmulas
+title: Corrección de fórmulas y dependencias de fórmulas
+author: Morten Lønskov
+updated: 2026-09-23
applies_to:
products:
- product: Tabular Editor 2
@@ -9,10 +11,9 @@ applies_to:
full: true
---
-# Corrección automática de fórmulas y dependencias de fórmulas
+# Corrección de fórmulas y dependencias de fórmulas
+Tabular Editor analiza continuamente las expresiones DAX de todas las medidas, columnas calculadas y tablas calculadas del modelo y crea un árbol de dependencias de estos objetos. La *corrección de fórmulas* utiliza el árbol: cuando cambia el nombre de un objeto, actualiza las expresiones DAX que hacen referencia a él. Habilítela con **Corrección automática de fórmula DAX** en **Herramientas > Preferencias > Tabular Editor > Operaciones de modelado** (**Archivo > Preferencias** en Tabular Editor 2).
-Tabular Editor analiza continuamente las expresiones DAX de todas las medidas, columnas calculadas y tablas calculadas de tu modelo para construir un árbol de dependencias de estos objetos. Este árbol de dependencias se utiliza para la funcionalidad de corrección automática de fórmulas, que se puede habilitar en **Herramientas > Preferencia** (**Archivo > Preferencia** en Tabular Editor 2). La Corrección automática de fórmulas actualiza la expresión DAX de cualquier medida, columna calculada o tabla calculada cada vez que se cambia el nombre de un objeto al que se hacía referencia en la expresión.
+Haga clic derecho en un objeto del Explorador TOM y elija **Mostrar dependencias...** para ver su árbol de dependencias.
-Para visualizar el árbol de dependencias, haz clic con el botón derecho en el objeto del árbol del explorador y selecciona "Mostrar dependencias..."
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/localizedContent/es/content/how-tos/toc.md b/localizedContent/es/content/how-tos/toc.md
index fc5f726f3..b7da648c8 100644
--- a/localizedContent/es/content/how-tos/toc.md
+++ b/localizedContent/es/content/how-tos/toc.md
@@ -1,81 +1,67 @@
# Secuencias de comandos y automatización
-
-## [Secuencias de comandos avanzadas](Advanced-Scripting.md)
-
-## [Objetos de referencia del script](script-reference-objects.md)
-
-# Gestión y despliegue de modelos
-
-## [Desplegar el modelo actual](deploy-current-model.md)
-
+## [Scripting avanzado](Advanced-Scripting.md)
+## [Objetos de referencia de script](script-reference-objects.md)
+
+# Patrones de secuencias de comandos
+## [Navegar por la jerarquía de objetos TOM](scripting-navigate-tom-hierarchy.md)
+## [Comprobar tipos de objetos](scripting-check-object-types.md)
+## [Interfaces TOM clave](scripting-tom-interfaces.md)
+## [Dynamic LINQ frente a C# LINQ](scripting-dynamic-linq-vs-csharp.md)
+## [Filtrar y consultar objetos con LINQ](scripting-filter-query-linq.md)
+## [Usar el objeto seleccionado](scripting-use-selected-object.md)
+## [Trabajar con expresiones y propiedades de DAX](scripting-work-with-expressions.md)
+## [Trabajar con dependencias](scripting-work-with-dependencies.md)
+## [Trabajar con anotaciones y propiedades extendidas](scripting-work-with-annotations.md)
+## [Trabajar con perspectivas y traducciones](scripting-perspectives-translations.md)
+## [Agregar, clonar y eliminar objetos](scripting-add-clone-remove-objects.md)
+## [Usar las ayudas de la interfaz de usuario de scripts](scripting-ui-helpers.md)
+## [Crear cuadros de diálogo WinForms personalizados en scripts](scripting-custom-winforms-dialogs.md)
+
+# Gestión e implementación de modelos
+## [Implementar el modelo actual](deploy-current-model.md)
## [Conectarse a SSAS](connect-ssas.md)
-
-## [Cargar y guardar](load-save.md)
-
+## [Cargar y guardar metadatos del modelo](load-save.md)
## [Serialización de carpetas](folder-serialization.md)
-
## [Patrón de modelo maestro](Master-model-pattern.md)
-
## [Actualizar el nivel de compatibilidad](update-compatibility-level.md)
+## [Cambiar el modo de compatibilidad](change-compatibility-mode.md)
# Importación de datos y tablas
-
-## [Importar tablas (TE2)](Importing-Tables.md)
-
-## [Importar tablas desde Excel (TE2)](importing-tables-from-excel.md)
-
+## [Importación de tablas (TE2)](Importing-Tables.md)
+## [Importación de tablas desde Excel (TE2)](importing-tables-from-excel.md)
## [Reemplazar tablas](replace-tables.md)
# Organización y estructura del modelo
-
## [Filtrado avanzado del árbol del explorador](Advanced-Filtering-of-the-Explorer-Tree.md)
-
## [Arrastrar y soltar](drag-drop.md)
-
-## [Duplicar y cambiar el nombre en lote](duplicate-batchrename.md)
-
+## [Duplicar y cambiar nombre por lotes](duplicate-batchrename.md)
## [Editar propiedades](edit-properties.md)
# Traducciones y perspectivas
-
## [Importar/exportar traducciones](import-export-translations.md)
-
## [Perspectivas y traducciones](perspectives-translations.md)
-# Seguridad de datos y roles
-
+# Seguridad de los datos y roles
## [Roles y seguridad a nivel de filas](roles-rls.md)
# Conectividad e integración
-
-## [Conectividad de Analysis Services mediante XMLA](xmla-as-connectivity.md)
-
-## [Solución alternativa para PBIX con XMLA en Power BI](powerbi-xmla-pbix-workaround.md)
+## [Conectividad de XMLA Analysis Services](xmla-as-connectivity.md)
+## [Solución alternativa para XMLA PBIX de Power BI](powerbi-xmla-pbix-workaround.md)
# Mantenimiento del modelo
-
## [Dependencias de corrección de fórmulas](formula-fixup-dependencies.md)
-
## [Copia de seguridad de metadatos](metadata-backup.md)
-
## [Deshacer y rehacer](undo-redo.md)
# [Puente semántico](semantic-bridge-how-tos.md)
-
## @semantic-bridge-load-inspect
-
+## @semantic-bridge-metric-view-import-from-file
## @semantic-bridge-import
-
## @semantic-bridge-validate-default
-
## @semantic-bridge-validate-simple-rules
-
## @semantic-bridge-validate-contextual-rules
-
## @semantic-bridge-add-object
-
## @semantic-bridge-remove-object
-
## @semantic-bridge-rename-objects
-
## @semantic-bridge-serialize
+## @semantic-bridge-metric-view-handle-failures
diff --git a/localizedContent/es/content/references/toc.md b/localizedContent/es/content/references/toc.md
index d822a18b8..7aebb6393 100644
--- a/localizedContent/es/content/references/toc.md
+++ b/localizedContent/es/content/references/toc.md
@@ -1,33 +1,39 @@
-# Descargas y lanzamientos
-
+# Descargas y versiones
## @downloads
-
+## @requisitos-del-sistema
## @release-history
-## @whats-new
# Referencia técnica
-
## @faq
-
## @preferences
-
## @policies
-
## @shortcuts3
-
## @shortcuts2
-
## @user-options
-
## @supported-files
-
+## @accessibility
## @user-setting-files-te2
-# Desarrollo y planificación
+# Referencia de propiedades de objetos
+## @propiedades-objeto
+## @propiedades-de-objetos-comunes
+## @propiedades-de-objeto-modelo
+## @object-properties-tables
+## @propiedades-objeto-columnas
+## @object-properties-measures
+## @object-properties-calculation-groups
+## @object-properties-hierarchies
+## @object-properties-relationships
+## @object-properties-partitions
+## @object-properties-data-sources
+## @object-properties-security
+## @object-properties-perspectives-cultures
+## @object-properties-calendars
+## @propiedades-objeto-funciones
+# Desarrollo y planificación
## @roadmap
# Funciones obsoletas
-
-## @formatdax
\ No newline at end of file
+## @formatdax
\ No newline at end of file
diff --git a/localizedContent/es/content/security/security-privacy.md b/localizedContent/es/content/security/security-privacy.md
index 4365c2bdf..413cc6706 100644
--- a/localizedContent/es/content/security/security-privacy.md
+++ b/localizedContent/es/content/security/security-privacy.md
@@ -1,6 +1,6 @@
----
+---
uid: security-privacy
-title: Resumen de seguridad
+title: Descripción general de la seguridad
author: Morten Lønskov
updated: 2026-10-12
applies_to:
@@ -16,140 +16,137 @@ applies_to:
- edition: Enterprise
full: true
---
+# Seguridad y privacidad de Tabular Editor 3
-# Seguridad y privacidad de Tabular Editor 3
-
-Este documento describe las consideraciones de seguridad y privacidad de Tabular Editor 3 y su uso. A continuación, la expresión "Tabular Editor" puede referirse tanto a la herramienta comercial Tabular Editor 3 como a la herramienta de código abierto Tabular Editor 2.X. Cuando algo se refiera solo a una de las herramientas, utilizaremos sus nombres explícitos: "Tabular Editor 3" o "Tabular Editor 2.X".
+Este documento describe las consideraciones de seguridad y privacidad de Tabular Editor 3 y su uso. A continuación, la expresión «Tabular Editor» puede referirse tanto a la herramienta comercial Tabular Editor 3 como a la herramienta de código abierto Tabular Editor 2.X. Siempre que se haga referencia a una sola de las herramientas, usaremos sus nombres explícitos «Tabular Editor 3» o «Tabular Editor 2.X».
## Recomendaciones de Microsoft sobre herramientas de terceros como Tabular Editor
-Microsoft respalda el uso de herramientas de terceros de la comunidad, tal y como se indica aquí: [Herramientas comunitarias y de terceros para desarrollar modelos empresariales de Power BI y Analysis Services](https://powerbi.microsoft.com/en-us/blog/community-tools-for-enterprise-powerbi-and-analysisservices)
-
-La documentación de planificación de la implementación de Power BI de Microsoft menciona específicamente Tabular Editor en escenarios avanzados de modelado de datos y desarrollo en entornos empresariales: [Escenarios de uso de Power BI: Administración avanzada del Data model](https://learn.microsoft.com/power-bi/guidance/powerbi-implementation-planning-usage-scenario-advanced-data-model-management#tabular-editor)
+Microsoft respalda el uso de herramientas de terceros de la comunidad, tal y como se indica aquí: [Herramientas de la comunidad y de terceros para desarrollar modelos de Power BI y Analysis Services a nivel empresarial]( https://powerbi.microsoft.com/en-us/blog/community-tools-for-enterprise-powerbi-and-analysisservices)
-## Trust Center
+La documentación de planificación de la implementación de Power BI de Microsoft incluye específicamente a Tabular Editor en escenarios avanzados de modelado de datos y desarrollo empresarial: [Escenarios de uso de Power BI: Gestión avanzada de modelos de datos](https://learn.microsoft.com/power-bi/guidance/powerbi-implementation-planning-usage-scenario-advanced-data-model-management#tabular-editor)
-En Tabular Editor, estamos comprometidos con la transparencia y con prácticas de seguridad sólidas. Visita nuestro [Trust Center](https://trust.tabulareditor.com/) para ver detalles de nuestro Report de auditoría SOC 2, documentos clave de políticas, términos de licencia y nuestro enfoque sobre la seguridad de la infraestructura y la organización. También encontrarás información sobre nuestros subprocesadores y sobre cómo trabajamos para mantener tus datos seguros.
+## Centro de cumplimiento
+En Tabular Editor, estamos comprometidos con la transparencia y con unas sólidas prácticas de seguridad. Visite nuestro [Centro de confianza](https://trust.tabulareditor.com/) para obtener información sobre nuestro informe de auditoría SOC 2, los documentos clave de nuestras políticas, los términos de las licencias y nuestro enfoque en materia de seguridad de la infraestructura y de la organización. También encontrará información sobre nuestros subencargados del tratamiento y sobre cómo trabajamos para mantener sus datos seguros.
## Metadatos y privacidad de los datos
-Tabular Editor es principalmente una herramienta sin conexión, lo que significa que todos los datos y metadatos se almacenan localmente en el equipo cliente donde está instalado Tabular Editor, y que todas las interacciones del usuario también se realizan de forma local. No se requiere una conexión a Internet para ejecutar y usar Tabular Editor.
+Tabular Editor es principalmente una herramienta sin conexión, lo que significa que todos los datos y metadatos residen localmente en el equipo cliente en el que está instalado Tabular Editor, y todas las interacciones de los usuarios también se realizan localmente. No se requiere una conexión a Internet para ejecutar y usar Tabular Editor.
-Dicho esto, hay escenarios en los que Tabular Editor se conecta a servicios remotos con distintos fines. Se describen a continuación:
+Dicho esto, hay situaciones en las que Tabular Editor se conecta a servicios remotos para diversos fines. A continuación se describen:
### Protocolo XMLA de Analysis Services
-Toda la comunicación con instancias de Analysis Services o con los Workspaces de Power BI Premium se realiza mediante las bibliotecas cliente de [Microsoft Analysis Management Objects (AMO)](https://docs.microsoft.com/analysis-services/amo/developing-with-analysis-management-objects-amo?view=asallproducts-allversions) o, más concretamente, mediante la [extensión Tabular Object Model (TOM) para AMO](https://docs.microsoft.com/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions). Estas bibliotecas cliente las proporciona Microsoft para su redistribución en aplicaciones de terceros, como Tabular Editor. Para conocer los detalles de la licencia, consulta el [EULA de AMO](https://go.microsoft.com/fwlink/?linkid=852989).
+Toda la comunicación con las instancias de Analysis Services o los espacios de trabajo de Power BI Premium se realiza mediante el uso de las bibliotecas cliente de [Microsoft Analysis Management Objects (AMO)](https://docs.microsoft.com/analysis-services/amo/developing-with-analysis-management-objects-amo?view=asallproducts-allversions), o más concretamente, de la [extensión Tabular Object Model (TOM) para AMO](https://docs.microsoft.com/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions). Microsoft proporciona estas bibliotecas cliente para su redistribución en aplicaciones de terceros como Tabular Editor. Para obtener información sobre las licencias, consulta el [CLUF de AMO](https://go.microsoft.com/fwlink/?linkid=852989).
-Cuando Tabular Editor se conecta a una instancia de Analysis Services (en la red local o en la nube) o a un Workspace de Power BI Premium (en la nube), esta conexión se realiza a través de las bibliotecas cliente mencionadas anteriormente. Por diseño, la biblioteca AMO se encarga de la autenticación y la autorización del usuario. Solo los usuarios con privilegios administrativos en la instancia de Analysis Services o en el Workspace de Power BI Premium pueden conectarse. Esto no difiere de lo que ocurre al usar herramientas de Microsoft como SQL Server Management Studio o SQL Server Data Tools (que usan las mismas bibliotecas cliente para conectarse).
+Cuando Tabular Editor se conecta a una instancia de Analysis Services (red local o nube) o a un área de trabajo de Power BI Premium (nube), esta conexión se realiza a través de las bibliotecas cliente mencionadas anteriormente. Por diseño, la biblioteca AMO se encarga de la autenticación y la autorización del usuario. Solo los usuarios con privilegios administrativos en la instancia de Analysis Services o en el área de trabajo de Power BI Premium pueden conectarse. Esto no es diferente de cuando se utilizan herramientas de Microsoft como SQL Server Management Studio o SQL Server Data Tools (que utilizan las mismas bibliotecas cliente para la conectividad).
### Metadatos del Tabular Object Model
-Una vez que la biblioteca cliente AMO/TOM establece la conexión, Tabular Editor solicitará todos los metadatos del Tabular Object Model (TOM) correspondientes a la base de datos de Analysis Services o al Dataset de Power BI específico al que el usuario quiera conectarse. A continuación, la biblioteca cliente AMO/TOM proporciona estos metadatos a la aplicación cliente (Tabular Editor) de forma programática, lo que permite a la aplicación aplicar cambios de metadatos, como cambiar el nombre de un objeto, agregar una descripción, modificar una expresión DAX, etc. Además, la biblioteca cliente AMO/TOM ofrece métodos para serializar los metadatos de TOM en un formato basado en JSON. Tabular Editor utiliza esta técnica para permitir a los usuarios guardar los metadatos del modelo como un archivo JSON local, con fines de control de versiones de la estructura del Data model. **Nota: El archivo JSON generado de este modo no contiene ningún registro de datos real. El archivo contiene únicamente metadatos del modelo; es decir, información sobre la estructura del modelo en cuanto a tablas, columnas, medidas, expresiones DAX, etc.** Aunque, por lo general, los metadatos del modelo no se consideran información confidencial, es responsabilidad del usuario de Tabular Editor tratar cualquier archivo generado de este modo con la confidencialidad requerida (por ejemplo, no compartir el archivo con terceros, etc.).
+Una vez que la biblioteca cliente AMO/TOM establece la conexión, Tabular Editor solicitará los metadatos completos del Tabular Object Model (TOM) para la base de datos de Analysis Services o el conjunto de datos de Power BI específicos a los que el usuario desee conectarse. A continuación, la biblioteca cliente AMO/TOM proporciona estos metadatos a la aplicación cliente (Tabular Editor) mediante un enfoque programático, lo que permite a la aplicación aplicar cambios en los metadatos, como cambiar el nombre de un objeto, añadir una descripción, modificar una expresión DAX, etc. Además, la biblioteca cliente AMO/TOM proporciona métodos para serializar los metadatos TOM en un formato basado en JSON. Tabular Editor utiliza esta técnica para permitir a los usuarios guardar los metadatos del modelo como un archivo JSON local, con el fin de controlar las versiones de la estructura del modelo de datos. **Nota: El archivo JSON generado de esta manera no contiene registros de datos reales. El archivo contiene únicamente metadatos del modelo, es decir, información sobre la estructura del modelo en términos de tablas, columnas, medidas, expresiones DAX, etc.** Aunque los metadatos del modelo generalmente no se consideran información confidencial, es responsabilidad del usuario de Tabular Editor tratar cualquier archivo generado de esta manera con la confidencialidad necesaria (es decir, no compartir el archivo con terceros, etc.).
-**Tabular Editor no recopila, publica, comparte, transfiere ni hace públicos de ningún otro modo los metadatos del modelo obtenidos a través de la biblioteca cliente AMO/TOM, a menos que el usuario inicie explícitamente una acción para hacerlo** (por ejemplo, guardando el archivo JSON de metadatos del modelo en una ubicación de red compartida o implementando los metadatos del modelo en otra instancia de Analysis Services o en un Workspace de Power BI).
+**Tabular Editor no recopila, publica, comparte, transfiere ni hace públicos de ninguna otra forma los metadatos del modelo obtenidos a través de la biblioteca cliente AMO/TOM, a menos que el usuario inicie específicamente una acción para hacerlo** (por ejemplo, guardando el archivo JSON de los metadatos del modelo en una ubicación de red compartida o implementando los metadatos del modelo en otra instancia de Analysis Services o en otro área de trabajo de Power BI).
-### Contenido de datos del modelo
+### Contenido de los datos del modelo
-En lo que sigue, "datos del modelo" se refiere a los registros de datos reales almacenados en la base de datos de Analysis Services o en el Dataset de Power BI. Según la base de datos de origen o el Dataset, es muy probable que los datos del modelo sean confidenciales.
+En lo sucesivo, «datos del modelo» se refiere a los registros de datos reales almacenados en la base de datos de Analysis Services o en el conjunto de datos de Power BI. Dependiendo de la base de datos o del conjunto de datos de origen, es muy probable que los datos del modelo sean confidenciales.
-Dado que se requiere que el usuario tenga privilegios administrativos en la instancia de Analysis Services o en el Workspace de Power BI al que se está conectando, el usuario, por definición, también tendrá acceso a todo el contenido de datos de la base de datos de Analysis Services o del Dataset de Power BI. Tabular Editor solo permite recuperar datos a través de la biblioteca cliente AMO mencionada anteriormente. Tabular Editor 3 ofrece funcionalidades para explorar y consultar los datos del modelo. Independientemente de la técnica que se utilice para acceder a los datos, **Tabular Editor solo almacena los datos recuperados en la memoria local. Tabular Editor no recopila, publica, comparte, transfiere ni hace públicos de ningún otro modo los datos del modelo obtenidos a través de la herramienta**. Si un usuario decide copiar o exportar los resultados de consultas obtenidos a través de Tabular Editor, es su responsabilidad tratar los datos copiados o exportados de acuerdo con el nivel de confidencialidad de esos datos. Esto no difiere de cuando un usuario se conecta a la base de datos de Analysis Services o al Dataset de Power BI mediante herramientas cliente como Excel o Power BI; en ese caso, también tendrá la opción de copiar los resultados de la consulta.
+Debido al requisito de que un usuario tenga privilegios administrativos en la instancia de Analysis Services o en el área de trabajo de Power BI a la que se conecta, el usuario, por definición, también tendrá acceso a todo el contenido de datos de la base de datos de Analysis Services o del conjunto de datos de Power BI. Tabular Editor solo permite la recuperación de datos a través de la biblioteca cliente AMO mencionada anteriormente. Tabular Editor 3 ofrece funciones para explorar y consultar los datos del modelo. Independientemente de la técnica que se utilice para acceder a los datos, **Tabular Editor solo almacena los datos recuperados en la memoria local. Tabular Editor no recopila, publica, comparte, transfiere ni hace públicos de ninguna otra forma los datos del modelo obtenidos a través de la herramienta**. Si un usuario decide copiar o exportar los resultados de las consultas obtenidos a través de Tabular Editor, es su responsabilidad tratar los datos copiados o exportados de acuerdo con su nivel de confidencialidad. Esto no es diferente a que un usuario se conecte a la base de datos de Analysis Services o al conjunto de datos de Power BI utilizando herramientas cliente como Excel o Power BI, en cuyo caso también tendrá la opción de copiar los resultados de las consultas.
### Asistente de IA
-Tabular Editor 3 incluye un asistente de IA para el desarrollo de modelos semánticos mediante chat. A partir de la versión 3.27.0 forma parte de la instalación predeterminada; antes había que seleccionarlo expresamente. Si el componente no está instalado, no hay ningún código relacionado con la IA en el equipo y no se aplica nada de lo descrito en esta sección.
+Tabular Editor 3 incluye un Asistente de IA para el desarrollo de modelos semánticos basado en chat. A partir de la versión 3.27.0, forma parte de la instalación predeterminada; antes de esa versión, había que seleccionarlo deliberadamente. Si el componente no está instalado, no hay ningún código relacionado con la IA en el equipo y no se aplica ninguno de los comportamientos descritos en esta sección.
-El Asistente de IA usa un modelo **bring-your-own-key**. Proporcionas una clave de API de un proveedor de IA compatible (OpenAI, Anthropic, Azure OpenAI o cualquier punto de conexión compatible con OpenAI). No se incluye ninguna clave de API integrada y Tabular Editor no proporciona ni intermedia ningún servicio de IA.
+El asistente de IA utiliza un modelo de **trae tu propia clave**. Tú proporcionas una clave de API de un proveedor de IA compatible (OpenAI, Anthropic, Azure OpenAI o cualquier punto de conexión compatible con OpenAI). No se incluye ninguna clave de API integrada y Tabular Editor no proporciona ni intermedia ningún servicio de IA.
-**Flujo de datos.** Toda la comunicación entre el Asistente de IA y el proveedor de IA se realiza directamente desde el equipo cliente hasta la API del proveedor. Ningún dato pasa por los servidores de Tabular Editor. Lo que se envía depende de lo que solicites y está limitado por cinco recursos de permisos, cada uno con un nivel de acceso:
+**Flujo de datos.** Toda la comunicación entre el asistente de IA y el proveedor de IA se realiza directamente desde el equipo cliente hasta la API del proveedor. No pasan datos por los servidores de Tabular Editor. Lo que se envía depende de lo que solicites y está limitado por cinco recursos de permisos, cada uno de los cuales tiene un nivel de acceso:
-| Recurso | Qué abarca | Niveles | Predeterminado |
-| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | -------------- |
-| Metadatos del modelo | Nombres de tablas, columnas y medidas, expresiones, descripciones y similares. La lectura también abarca las estadísticas del Analizador VertiPaq | Denegar / Leer / Escribir | Leer |
-| Datos del modelo | Valores de datos de tu modelo, como los resultados de consultas DAX. Requiere una conexión en directo | Denegar / Leer | Denegar |
-| Best Practice Analyzer | Leer enumera las reglas y ejecuta el análisis; Escribir añade o modifica reglas | Denegar / Leer / Escribir | Leer |
-| Documentos | Tus editores abiertos de C# Script y de consultas DAX. Leer permite acceder a su contenido; Escribir es necesario para crearlos o modificarlos | Denegar / Leer / Escribir | Escribir |
-| Macros | Tu biblioteca de macros | Denegar / Lectura / Escritura | Escritura |
+| Recurso | Qué abarca | Niveles | Predeterminado |
+| -- | -- | -- | -- |
+| Metadatos del modelo | Nombres de tablas, columnas y medidas, expresiones, descripciones y elementos similares. La lectura también abarca las estadísticas del Analizador VertiPaq | Denegar / Lectura / Escritura | Lectura |
+| Datos del modelo | Valores de datos de tu modelo, como los resultados de las consultas DAX. Requiere una conexión en vivo | Denegar / Leer | Denegar |
+| Best Practice Analyzer | Lectura: lee las reglas de las listas y ejecuta el análisis; Escritura: añade o modifica reglas | Denegar / Lectura / Escritura | Lectura |
+| Documentos | Sus editores de scripts de C# y de consultas DAX abiertos. Lectura se refiere a su contenido; Escritura es necesaria para crearlos o modificarlos | Denegar / Lectura / Escritura | Escritura |
+| Macros | Su biblioteca de macros | Denegar / Lectura / Escritura | Escritura |
-Escritura incluye Lectura. El acceso a los datos del modelo se deniega de forma predeterminada porque los metadatos describen un modelo en el que los valores de datos son el contenido del modelo.
+El permiso de escritura incluye el de lectura. Los datos del modelo se deniegan de forma predeterminada, ya que los metadatos describen un modelo en el que los valores de los datos son el contenido del modelo.
-**Gestión de permisos.** Las autorizaciones son configuraciones permanentes, no avisos por solicitud. Revísalas y cámbialas en **Herramientas > Preferencias > Funciones de IA > Permisos** o en el cuadro de diálogo **Herramientas > Servidor MCP...**, que edita el mismo registro. Si el chat necesita algo que una autorización no cubra, muestra una tarjeta de permiso en ese momento y puedes responder para el turno, la sesión, el modelo actual o siempre. **Permitir siempre** aumenta la autorización permanente y nunca la reduce. Las autorizaciones globales se almacenan en el archivo local Preferences.json; las autorizaciones concedidas para un único modelo se almacenan en el archivo de opciones de usuario (.tmuo) de ese modelo y se aplican solo al chat. Restablecer un recurso a **Denegar** hace que el chat vuelva a preguntar.
+**Gestión de permisos.** Los permisos son ajustes permanentes, no solicitudes que se presentan cada vez que se realiza una petición. Revíselos y cámbielos en **Herramientas > Preferencias > Funciones de IA > Permisos**, o en el cuadro de diálogo **Herramientas > Servidor MCP...**, que edita el mismo registro. Cuando el chat necesita algo que un permiso no cubre, muestra una tarjeta de permiso en ese momento, y usted responde para el turno, la sesión, el modelo actual o siempre. **Permitir siempre** aumenta el permiso permanente y nunca lo reduce. Los permisos globales se almacenan en el archivo local Preferences.json; los permisos concedidos para un solo modelo se almacenan en el archivo de opciones de usuario (.tmuo) de ese modelo y se aplican únicamente al chat. Si se vuelve a establecer un recurso en **Denegar**, el chat volverá a preguntar.
-**Límites del administrador.** En las ediciones Enterprise, Consultancy y Trial, un administrador puede fijar un límite para cada recurso mediante una [política](xref:policies), por separado para el chat y para el servidor MCP, y el límite del MCP solo puede ser inferior. Un límite prevalece sobre cualquier autorización, incluida una que el usuario ya haya dado, y la opción correspondiente se muestra como de solo lectura. Estas políticas fallan en modo seguro: si en un equipo no licenciado aparece cualquier valor de política de nivel Enterprise, el Asistente de IA y el servidor MCP se niegan a iniciarse en lugar de ignorar la política.
+**Límites del administrador.** En las ediciones Enterprise, Consultancy y Trial, un administrador puede limitar cada recurso mediante [políticas](xref:policies), por separado para el chat y para el servidor MCP, y el límite del MCP solo puede ser inferior. Un límite tiene prioridad sobre cualquier concesión, incluida una que un usuario ya haya otorgado, y la opción correspondiente se muestra como de solo lectura. Estas políticas fallan en modo cerrado: si algún valor de política de nivel Enterprise está presente en un equipo que no tiene licencia para ello, el asistente de IA y el servidor MCP se niegan a iniciarse en lugar de ignorar la política.
-**Registro de auditoría.** Tabular Editor 3 escribe un registro local de lo que hicieron el Asistente de IA y el servidor MCP: qué permisos se solicitaron y cómo se respondieron, qué herramientas se ejecutaron y si cada una se completó correctamente, falló o fue rechazada, y el texto completo de cualquier C# Script que el Asistente de IA o un agente ejecutó o envió a ejecutar, incluidos los scripts que fallaron durante la ejecución o fueron rechazados. Las indicaciones, las respuestas y los valores de datos no se registran; tampoco se registra un script que no se pueda compilar ni el texto de un script incluido en un documento para que el usuario lo ejecute. Los archivos diarios se conservan durante 30 días, y la opción **Abrir carpeta de auditoría** en **Herramientas > Preferencias > Funciones de IA** los abre. Los administradores pueden cambiar la ubicación y el período de retención.
+**Registro de auditoría.** Tabular Editor 3 escribe un registro local de lo que hicieron el Asistente de IA y el servidor MCP: qué permisos se solicitaron y cómo se respondió a ellos, qué herramientas se ejecutaron y si cada una tuvo éxito, falló o fue rechazada, y el texto completo de cualquier script de C# que el Asistente de IA o un agente ejecutara o enviara para su ejecución, incluidos los scripts que fallaran en tiempo de ejecución o fueran rechazados. No se registran las indicaciones, las respuestas ni los valores de los datos, ni tampoco los scripts que no se compilan ni el texto de los scripts escritos en un documento para que el usuario los ejecute. Los archivos diarios se conservan durante 30 días y se pueden abrir con **Abrir carpeta de auditoría** en **Herramientas > Preferencias > Funciones de IA**. Los administradores pueden redirigir la ubicación y cambiar el período de conservación.
-**Almacenamiento de claves de API.** Las claves de API se almacenan cifradas en el equipo local, en el archivo de preferencias Preferences.json. Si el módulo de IA no se carga (por ejemplo, porque se excluyó durante la instalación o se deshabilitó mediante una directiva), cualquier configuración de claves de API almacenada anteriormente se borra automáticamente.
+**Almacenamiento de claves API.** Las claves API se almacenan cifradas en el equipo local, en el archivo Preferences.json. Si el módulo de IA no se carga (por ejemplo, porque se excluyó durante la instalación o se deshabilitó por una política), cualquier configuración de clave de API almacenada previamente se borra automáticamente.
-**Almacenamiento de conversaciones.** Las conversaciones se almacenan localmente en el equipo cliente en `%LocalAppData%\TabularEditor3\AI\Conversations\`. No se envían datos de conversaciones a los servidores de Tabular Editor.
+**Almacenamiento de conversaciones.** Las conversaciones se almacenan localmente en el equipo cliente en «%LocalAppData%\TabularEditor3\AI\Conversations\». No se envían datos de las conversaciones a los servidores de Tabular Editor.
-**Deshabilitar el Asistente de IA.** Puedes excluir el componente de funciones de IA durante la instalación, borrar el proveedor en **Herramientas > Preferencias > Funciones de IA > Asistente de IA** o aplicar una [política](xref:policies) mediante el Registro de Windows: `DisableAi` desactiva toda la funcionalidad de IA, incluido el servidor MCP, y borra la configuración del proveedor almacenada, mientras que `DisableAiChat` desactiva solo el chat y deja el servidor MCP en ejecución.
+**Desactivación del asistente de IA.** Puede excluir el componente de funciones de IA durante la instalación, eliminar el proveedor en **Herramientas > Preferencias > Funciones de IA > Asistente de IA** o aplicar una [política](xref:policies) a través del registro de Windows: «DisableAi» desactiva todas las funciones de IA, incluido el servidor MCP, y elimina la configuración del proveedor almacenada, mientras que «DisableAiChat» desactiva únicamente el chat y deja el servidor MCP en funcionamiento.
-**Pruebas de penetración.** Se ha realizado una prueba de penetración independiente del Asistente de IA. El Report está disponible en nuestro [Trust Center](https://trust.tabulareditor.com/).
+**Pruebas de penetración.** Se ha realizado una prueba de penetración independiente del asistente de IA. El informe está disponible en nuestro [Centro de cumplimiento](https://trust.tabulareditor.com/).
### Servidor MCP
-Tabular Editor 3 puede actuar como servidor MCP (Model Context Protocol) para que un agente de IA que se ejecute en el mismo equipo pueda trabajar en el modelo que tienes abierto. Consulta @mcp-server para obtener información sobre la función en sí.
+Tabular Editor 3 puede actuar como servidor MCP (Protocolo de Contexto de Modelo), de modo que un agente de IA que se ejecute en el mismo dispositivo pueda trabajar en el modelo que tengas abierto. Consulta @mcp-server para obtener información sobre la propia función.
-**Exposición de red.** El servidor es un listener HTTP enlazado explícitamente a `127.0.0.1`, de forma predeterminada, en el puerto 42100. No es accesible desde otro equipo. Las solicitudes del navegador que llevan un encabezado `Origin` no local se rechazan como medida de protección frente al DNS rebinding. El servidor se ejecuta solo después de iniciarlo, o desde el inicio de la aplicación si así lo has indicado.
+**Exposición de la red.** El servidor es un «listener» HTTP vinculado explícitamente a «127.0.0.1», de forma predeterminada en el puerto 42100. No se puede acceder a él desde otro equipo. Las solicitudes del navegador que llevan un encabezado «Origin» no local se rechazan como medida de defensa contra el «rebinding» de DNS. El servidor se ejecuta solo después de que lo inicies, o desde el inicio de la aplicación si lo has solicitado.
-**Autenticación.** La vinculación a loopback es el perímetro de seguridad predeterminado, por lo que el servidor acepta conexiones locales sin credenciales de forma predeterminada. En un host en el que varias personas tienen sesión iniciada a la vez, como un servidor de Remote Desktop o Citrix, eso no basta: cualquier sesión de la máquina puede acceder a `127.0.0.1`. Mientras el token esté desactivado, cualquier proceso de la máquina puede conectarse sin credenciales. Activa **Requerir token de acceso** en **Herramientas > Preferencias > Funciones de IA > Servidor MCP** y los clientes tendrán que presentar un bearer token, que se almacena cifrado en el archivo local Preferences.json. Los administradores pueden imponerlo con la [directiva](xref:policies) `RequireMcpAccessToken`.
+**Autenticación.** La vinculación de bucle invertido es el límite predeterminado, por lo que el servidor acepta conexiones locales sin credenciales de forma automática. En un host en el que varias personas han iniciado sesión a la vez, como un Escritorio remoto o un servidor Citrix, eso no es suficiente: cualquier sesión en el equipo llega a «127.0.0.1». Mientras el token esté desactivado, cualquier proceso del equipo puede conectarse sin credenciales. Active **Requerir token de acceso** en **Herramientas > Preferencias > Funciones de IA > Servidor MCP**. Los clientes deberán presentar un token al portador, que se almacena cifrado en el archivo local Preferences.json. Los administradores pueden imponer esto con la [directiva](xref:policies) «RequireMcpAccessToken».
-**Flujo de datos.** Tabular Editor no contacta con ningún proveedor de IA para esta característica ni almacena ninguna clave de API para ella. El agente es la única parte que se comunica con un proveedor, con su propia configuración y su propia suscripción. Lo que el agente puede leer del modelo está limitado por las mismas cinco concesiones de permisos que rigen el Asistente de IA, capturadas al iniciarse el servidor, y nunca se ofrece al agente ninguna herramienta que no esté cubierta por una de ellas. El acceso a los datos del modelo está denegado de forma predeterminada, por lo que ningún resultado de consulta DAX sale del modelo a menos que lo autorices explícitamente. Los valores escritos en la definición del modelo, como una expresión `DATATABLE` o una tabla de «Introducir datos», son metadatos del modelo y están cubiertos por el permiso Model metadata.
+**Flujo de datos.** Tabular Editor no se pone en contacto con ningún proveedor de IA para esta función y no dispone de ninguna clave de API para ella. El agente es la única parte que se comunica con un proveedor, con su propia configuración y su propia suscripción. Lo que el agente puede leer del modelo está limitado por los mismos cinco permisos que rigen el Asistente de IA, de los que se toma una instantánea cuando se inicia el servidor, y cualquier herramienta que no esté cubierta por un permiso nunca se ofrece al agente. Los datos del modelo se deniegan de forma predeterminada, por lo que ningún resultado de consulta DAX sale del modelo a menos que lo concedas explícitamente. Los valores introducidos en la definición del modelo, como una expresión «DATATABLE» o una tabla Introducir datos, son metadatos del modelo y están cubiertos por el permiso de metadatos del modelo.
-**Cambios en el modelo.** Un agente solo cambia el modelo a través del motor de scripting de C#, usando **C# Script**, de forma atómica y como un único paso de deshacer, y solo con la concesión de metadatos del modelo en Write. La ejecución directa de TMSL y XMLA nunca está disponible para un agente, y nunca se ejecuta para él un script que vaya más allá del modelo.
+**Cambios en el modelo.** Un agente solo puede cambiar el modelo a través del motor de scripting de C# Script, de forma atómica y como un único paso de deshacer, y únicamente con el permiso de metadatos del modelo en Escritura. La ejecución de TMSL y XMLA en bruto nunca está disponible para un agente, y nunca se ejecuta para él un script que se extienda más allá del modelo.
-**Registro de auditoría.** Las decisiones de permisos, las llamadas a herramientas y el texto completo de cualquier C# Script que un agente ejecutó o envió a ejecutar se registran en un registro de auditoría local. Los prompts, las respuestas y los valores de datos no se registran.
+**Registro de auditoría.** Las decisiones sobre permisos, las llamadas a herramientas y el texto completo de cualquier script de C# que un agente haya ejecutado o enviado para su ejecución se registran en un registro de auditoría local. No se registran las indicaciones, las respuestas ni los valores de los datos.
-**Desactivación del servidor MCP.** Desmarca **Habilitar servidor MCP** en **Herramientas > Preferencias > Funciones de IA > Servidor MCP**, o aplica la [directiva](xref:policies) `DisableMcpServer` o `DisableAi`. El servidor forma parte del componente de funciones de IA, por lo que, si excluyes ese componente durante la instalación, también se quitará.
+**Deshabilitar el servidor MCP.** Desactive **Habilitar servidor MCP** en **Herramientas > Preferencias > Funciones de IA > Servidor MCP**, o aplique la [política](xref:policies) «DisableMcpServer» o «DisableAi». El servidor forma parte del componente de funciones de IA, por lo que, si se excluye ese componente durante la instalación, también se elimina el servidor.
### Solicitudes web
-Tabular Editor puede realizar solicitudes a recursos en línea (URL web) solo en los siguientes casos:
+Tabular Editor puede realizar solicitudes a recursos en línea (URL web) únicamente en los siguientes casos:
-- **Activación de licencia\*.** Cuando Tabular Editor 3 se inicia por primera vez y, posteriormente, a intervalos periódicos, la herramienta puede realizar una solicitud a nuestro servicio de licencias. Esta solicitud contiene información cifrada sobre la clave de licencia introducida por el usuario, la dirección de correo electrónico del usuario (si se proporciona), el nombre del equipo local y un hash codificado unidireccional que identifica la instalación actual. No se transmite ningún otro dato en esta solicitud. El propósito de esta solicitud es activar y validar la clave de licencia utilizada por la instalación, aplicar las limitaciones de la versión de prueba y permitir que el usuario gestione sus instalaciones de Tabular Editor 3 a través de nuestro servicio de licencias.
-- **Comprobaciones de actualización\*.** Cada vez que se inicia Tabular Editor 3, puede realizar una solicitud a nuestro servicio de aplicaciones para determinar si hay disponible una versión más reciente de Tabular Editor 3. Esta solicitud no contiene ningún dato.
-- **Telemetría de uso\*.** De forma predeterminada, Tabular Editor 3 recopila y transmite datos de uso anónimos a medida que los usuarios interactúan con la herramienta. Estos datos incluyen información sobre los objetos de la interfaz de usuario con los que interactúa un usuario y el momento de cada interacción. También contiene información de alto nivel sobre el Data model tabular que se está editando con la herramienta. Esta información solo se refiere a propiedades de alto nivel como el nivel de compatibilidad y el modo, el número de tablas, el tipo de servidor (Analysis Services vs. Power BI vs. Power BI Desktop), etc. **No se recopilan datos personales identificables de esta manera**, ni recopilamos información sobre los nombres de los objetos o las expresiones DAX en el propio Tabular Object Model. Un usuario puede optar por no enviarnos datos de telemetría en cualquier momento.
-- **Reports de error\*.** Cuando se produce un error inesperado, transmitimos la traza de la pila y los mensajes de error (anonimizados), junto con una descripción opcional proporcionada por el usuario. Si un usuario decide no enviar datos de telemetría, tampoco se enviarán los Reports de error.
-- **Uso del formateador de DAX.** (Solo Tabular Editor 2.x) Se puede dar formato a una expresión DAX haciendo clic en un botón en Tabular Editor. En este caso, la expresión DAX (y nada más) se envía al servicio web www.daxformatter.com. La primera vez que un usuario hace clic en este botón, se muestra un mensaje de advertencia explícito para que confirme su intención. Tabular Editor 3 no realiza solicitudes web al dar formato al código DAX.
-- **Optimizador de DAX**. Si un usuario tiene una [cuenta de Tabular Tools](https://tabulartools.com) con una suscripción a [Optimizador de DAX](https://daxoptimizer.com), podrá explorar su Workspace del Optimizador de DAX, ver incidencias y sugerencias, y cargar nuevos archivos VPAX directamente desde Tabular Editor 3. Los archivos VPAX contienen metadatos y estadísticas del modelo, pero no _datos_ reales del modelo. La función de integración del Optimizador de DAX en Tabular Editor 3 realiza varias solicitudes a uno o varios de los endpoints indicados a continuación (en función del tipo de autenticación y de la región especificados al crear la cuenta de Tabular Tools).
- Para obtener más información, consulta la [documentación de Optimizador de DAX](https://docs.daxoptimizer.com/legal/data-processing).
- Endpoints utilizados:
+- **Activación de la licencia\*.** Cuando se inicia Tabular Editor 3 por primera vez, y a intervalos periódicos a partir de entonces, la herramienta puede realizar una solicitud a nuestro servicio de licencias. Esta solicitud contiene información cifrada sobre la clave de licencia introducida por el usuario, la dirección de correo electrónico del usuario (si se proporciona), el nombre del equipo local y un hash codificado unidireccional que identifica la instalación actual. No se transmiten otros datos en esta solicitud. El propósito de esta solicitud es activar y validar la clave de licencia utilizada por la instalación, hacer cumplir las limitaciones de la versión de prueba, así como permitir al usuario gestionar sus instalaciones de Tabular Editor 3 a través de nuestro servicio de licencias.
+- **Comprobaciones de actualizaciones\*.** Cada vez que se inicia Tabular Editor 3, puede realizar una solicitud a nuestro servicio de aplicaciones para determinar si hay una versión más reciente de Tabular Editor 3 disponible. Esta solicitud no contiene ningún dato.
+- **Telemetría de uso\*.** De forma predeterminada, Tabular Editor 3 recopila y transmite datos de uso anónimos a medida que los usuarios interactúan con la herramienta. Estos datos incluyen información sobre los objetos de la interfaz de usuario con los que interactúa un usuario y el momento en que lo hace. También contiene información de alto nivel sobre el modelo de datos tabulares que se está editando a través de la herramienta. Esta información solo se refiere a propiedades de alto nivel, como el nivel y el modo de compatibilidad, el número de tablas, el tipo de servidor (Analysis Services frente a Power BI frente a Power BI Desktop), etc. **No se recopilan datos de identificación personal de esta manera**, ni tampoco recopilamos información sobre los nombres de los objetos o las expresiones DAX en el propio Tabular Object Model. Un usuario puede optar por no enviarnos datos de telemetría en cualquier momento.
+- **Informes de errores\*.** Cuando se produce un error inesperado, transmitimos el seguimiento de la pila y el mensaje de error (anonimizado), junto con una descripción opcional proporcionada por el usuario. Si un usuario opta por no enviar datos de telemetría, tampoco se enviarán los informes de errores.
+- **Uso del formateador de DAX.** (Solo en Tabular Editor 2.x) Se puede formatear una expresión DAX haciendo clic en un botón de Tabular Editor. En este caso, la expresión DAX (y nada más) se envía al servicio web www.daxformatter.com. La primera vez que un usuario hace clic en este botón, se muestra un mensaje de advertencia explícito en el que se le pide que confirme su intención. Tabular Editor 3 no realiza solicitudes web al formatear código DAX.
+- **Optimizador de DAX**. Si un usuario tiene una [cuenta de Tabular Tools](https://tabulartools.com) con una suscripción al [Optimizador de DAX](https://daxoptimizer.com), podrá navegar por su espacio de trabajo del Optimizador de DAX, ver problemas y sugerencias, y cargar nuevos archivos VPAX directamente desde Tabular Editor 3. Los archivos VPAX contienen metadatos y estadísticas del modelo, pero no *datos* reales del modelo. La función de integración de DAX Optimizer en Tabular Editor 3 genera varias solicitudes a uno o más de los siguientes puntos finales (en función del tipo de autenticación y de la región especificados al crear la cuenta de Tabular Tools).
+ Para obtener más información, consulta la [documentación de DAX Optimizer](https://docs.daxoptimizer.com/legal/data-processing).
+ Puntos finales utilizados:
- https://account.tabulartools.com
- https://licensing.api.daxoptimizer.com/api
- https://australiaeast.api.daxoptimizer.com/api
- https://eastus.api.daxoptimizer.com/api
- https://westeurope.api.daxoptimizer.com/api
-- **Asistente de IA.** Cuando el Asistente de IA está configurado y en uso, Tabular Editor 3 envía solicitudes directamente a la API del proveedor de IA configurado. Los endpoints dependen del proveedor seleccionado (por ejemplo, `https://api.openai.com` para OpenAI, `https://api.anthropic.com` para Anthropic o el endpoint que especifiques para Azure OpenAI y proveedores personalizados). En estas solicitudes solo se incluyen los datos cubiertos por las concesiones de permisos. Consulta la sección [Asistente de IA](#ai-assistant) anterior para ver los recursos y sus valores predeterminados.
-- **Actualizaciones de la base de conocimientos de IA.** La base de conocimientos en la que busca el Asistente de IA es una base de datos local incluida en el componente de funciones de IA. Tabular Editor 3 comprueba si hay una copia más reciente y la descarga desde `https://cdn.tabulareditor.com`. La solicitud no contiene datos sobre ti ni sobre tu modelo.
-- **Catálogo de modelos de IA.** Cuando un usuario abre la lista de modelos del proveedor OpenAI o Anthropic, Tabular Editor 3 descarga la lista de modelos disponibles desde `https://api.tabulareditor.com/AiModels` y la almacena en caché en `%LocalAppData%\TabularEditor3\AiModels.json` durante 24 horas. La solicitud es anónima y no incluye datos sobre ti, tu clave de API ni tu modelo. La directiva `DisableUpdates` lo desactiva.
-- **Servidor MCP.** El servidor MCP no realiza solicitudes salientes. Solo acepta conexiones en la interfaz loopback, y el agente que se conecta a él es quien se comunica con un proveedor de IA, con su propia configuración. Consulta la sección [servidor MCP](#mcp-server) anterior.
-- **Importación de reglas de prácticas recomendadas.** Tabular Editor incluye una funcionalidad que permite especificar una dirección URL desde la que obtener una lista de reglas de prácticas recomendadas en formato JSON. Este tipo de solicitud solo descarga los datos JSON desde la URL; no se transmite ningún dato a la URL.
-- **Uso de C# Scripts.** Tabular Editor permite a los usuarios escribir y ejecutar código en C# con fines de automatización. Este tipo de script puede conectarse a recursos en línea mediante características del lenguaje C# y el entorno de ejecución de .NET. El usuario es siempre responsable de garantizar que el código ejecutado no provoque ningún intercambio de datos no deseado. Tabular Editor ApS no se hace responsable de ningún daño, pérdida o filtración causados por el uso, en general, de la funcionalidad de C# Script. Tabular Editor nunca ejecutará C# Scripts sin una acción explícita del usuario.
-
-\***Toda la información que obtengamos a través del servicio de activación de licencias, la telemetría de uso o los Reports de errores se mantendrá confidencial. No compartiremos, publicaremos ni distribuiremos los datos recopilados de ninguna forma.**
-
-**Lista de permitidos / aceptados del firewall**
-Para permitir el tráfico de las solicitudes web mencionadas anteriormente, deberás incluir en la lista de permitidos:
-
-- Activación de licencias / comprobaciones de actualización / catálogo de modelos de IA: **https://api.tabulareditor.com**
-- Telemetría de uso / Reports de errores: **https://\*.in.applicationinsights.azure.com**
-- DAX Formatter (solo Tabular Editor 2.x): **https://www.daxformatter.com**
-- Importar reglas de prácticas recomendadas / C# Scripts: depende del contexto
-- Optimizador de DAX: puntos de conexión enumerados arriba.
-- Asistente de IA: Depende del proveedor configurado (p. ej., **https://api.openai.com**, **https://api.anthropic.com** o endpoints de Azure OpenAI o personalizados especificados por el usuario)
+- **Asistente de IA.** Cuando el Asistente de IA está configurado y en uso, Tabular Editor 3 envía solicitudes directamente a la API del proveedor de IA configurado. Los puntos de conexión dependen del proveedor seleccionado (por ejemplo, «https://api.openai.com» para OpenAI, «https://api.anthropic.com» para Anthropic o un punto de conexión especificado por el usuario para Azure OpenAI y proveedores personalizados). En estas solicitudes solo se incluyen los datos cubiertos por las concesiones de permisos. Consulta la sección [Asistente de IA](#ai-assistant) anterior para conocer los recursos y sus valores predeterminados.
+- **Actualizaciones de la base de conocimientos de IA.** La base de conocimientos en la que busca el asistente de IA es una base de datos local que se incluye con el componente de características de IA. Tabular Editor 3 busca una copia más reciente y la descarga desde «https://cdn.tabulareditor.com». La solicitud no contiene datos sobre ti ni sobre tu modelo.
+- **Catálogo de modelos de IA.** Cuando un usuario abre la lista de modelos del proveedor OpenAI o Anthropic, Tabular Editor 3 descarga la lista de modelos disponibles desde «https://api.tabulareditor.com/AiModels» y la almacena en caché en «%LocalAppData%\TabularEditor3\AiModels.json» durante 24 horas. La solicitud es anónima y no contiene datos sobre usted, su clave de API ni su modelo. La directiva «DisableUpdates» la desactiva.
+- **Servidor MCP.** El servidor MCP no realiza solicitudes salientes. Solo acepta conexiones en la interfaz de bucle invertido, y el agente que se conecta a él es el que se comunica con un proveedor de IA, según su propia configuración. Consulta la sección [Servidor MCP](#mcp-server) anterior.
+- **Importación de reglas de buenas prácticas.** Tabular Editor dispone de una función que permite al usuario especificar una URL desde la que recuperar una lista de reglas de buenas prácticas en un formato basado en JSON. Este tipo de solicitud solo descarga los datos JSON de la URL; no se transmiten datos a la URL.
+- **Uso de scripts de C#.** Tabular Editor permite a los usuarios escribir y ejecutar código escrito en C# con fines de automatización. Dicho script puede conectarse potencialmente a recursos en línea, utilizando las características del lenguaje C# y el tiempo de ejecución de .NET. El usuario es siempre responsable de garantizar que el código ejecutado no provoque ningún intercambio involuntario de datos. Tabular Editor ApS no se hace responsable de ningún daño, pérdida o filtración causados por el uso de la función de C# Script en general. Tabular Editor nunca ejecutará scripts de C# sin la acción explícita del usuario.
+
+\***Cualquier información que obtengamos a través del servicio de activación de licencias, la telemetría de uso o los informes de errores se mantiene confidencial. No compartiremos, publicaremos ni distribuiremos los datos recopilados de ninguna manera, forma o modo.**
+
+**Lista de elementos permitidos/lista de elementos aceptados del cortafuegos**
+Para permitir el tráfico hacia las solicitudes web mencionadas anteriormente, tendrás que incluir en la lista blanca:
+- Activación de licencias / Comprobaciones de actualización / Catálogo de modelos de IA: **https://api.tabulareditor.com**
+- Telemetría de uso / Informes de errores: **https://*.in.applicationinsights.azure.com**
+- Formateador DAX (solo Tabular Editor 2.x): **https://www.daxformatter.com**
+- Importar reglas de buenas prácticas / scripts C#: depende del contexto
+- Optimizador de DAX: puntos de conexión enumerados anteriormente.
+- Asistente de IA: depende del proveedor configurado (por ejemplo, **https://api.openai.com**, **https://api.anthropic.com** o puntos de conexión de Azure OpenAI/personalizados especificados por el usuario).
- Actualizaciones de la base de conocimientos de IA: **https://cdn.tabulareditor.com**
-- Servidor MCP: nada. Escucha en **127.0.0.1** y no realiza solicitudes salientes
+- Servidor MCP: nada. Escucha en **127.0.0.1** y no realiza ninguna solicitud saliente.
> [!NOTE]
-> Un administrador del sistema puede aplicar determinadas [directivas](xref:policies), que pueden usarse para deshabilitar algunas o todas las funciones mostradas en la lista anterior.
+> Un administrador del sistema puede aplicar ciertas [políticas](xref:policies), que se pueden utilizar para desactivar algunas o todas las funciones que se muestran en la lista anterior.
## Seguridad de la aplicación
-Tabular Editor no requiere ningún privilegio elevado en el equipo Windows donde está instalado, ni accede a ningún recurso restringido del equipo. Una excepción a esta regla es si se usa el archivo del instalador de Tabular Editor (.msi); en ese caso, el ejecutable y los archivos de soporte necesarios para la herramienta se copian, de forma predeterminada, en la carpeta `Program Files`, que normalmente requiere permisos elevados. Tanto los archivos binarios de Tabular Editor como el archivo del instalador se han firmado con un certificado de firma de código emitido a nombre de Tabular Editor ApS, lo cual le garantiza que el código no ha sido manipulado por ninguna tercera parte.
+Tabular Editor no requiere ningún privilegio elevado en el equipo Windows en el que está instalado, ni accede a ningún recurso restringido del equipo. Una excepción a esta regla se da si se utiliza el archivo de instalación de Tabular Editor (.msi), en cuyo caso el ejecutable y los archivos de soporte que requiere la herramienta se copian de forma predeterminada en la carpeta «Archivos de programa», que normalmente requiere permisos elevados. Tanto los archivos binarios de Tabular Editor como el archivo del instalador se han firmado con un certificado de firma de código emitido a Tabular Editor ApS, lo que constituye su garantía de que ningún tercero ha manipulado el código.
-Mientras la aplicación se está ejecutando, todo el acceso a recursos externos se realiza a través de la biblioteca cliente AMO/TOM o de las solicitudes web mencionadas anteriormente.
+Cuando la aplicación se está ejecutando, todos los accesos a recursos externos se realizan a través de la biblioteca cliente AMO/TOM o de las solicitudes web mencionadas anteriormente.
-La funcionalidad de C# Script permite a Tabular Editor ejecutar código C# arbitrario dentro del runtime de .NET. Ese código solo se compila y ejecuta cuando lo solicitas explícitamente. Los C# Script también pueden guardarse como "macros", lo que te facilita administrar y ejecutar varios scripts distintos. El código se almacena en tu propia carpeta `%localappdata%`, lo que garantiza que solo tú o un administrador local del equipo pueden acceder a los scripts. Siempre eres responsable de garantizar que el código ejecutado no provoque efectos secundarios no deseados. En ningún caso Tabular Editor ApS será responsable de ningún daño, pérdida o filtración causados por el uso de las funciones de C# Script o de acciones personalizadas/macros.
+La función de C# Script permite a Tabular Editor ejecutar código C# arbitrario dentro del tiempo de ejecución de .NET. Dicho código solo se compila y ejecuta a petición explícita del usuario. Los C# Scripts también se pueden guardar como «macros», lo que facilita al usuario la gestión y ejecución de varios scripts diferentes. El código se almacena en la carpeta «%localappdata%» del propio usuario, lo que garantiza que solo él o un administrador del equipo local puedan acceder a los scripts. El usuario es siempre responsable de garantizar que el código ejecutado no provoque ningún efecto secundario no deseado. Bajo ninguna circunstancia se podrá considerar a Tabular Editor ApS responsable de ningún daño, pérdida o filtración causados por el uso de las funciones de C# Script o de las acciones/macros personalizadas.
-Las organizaciones que no quieran dejar esto a criterio de cada usuario pueden gestionarlo de forma centralizada. Las [políticas](xref:policies) `DisableCSharpScripts` y `DisableMacros` desactivan por completo los scripts de C# y las macros, en todas las ediciones. Con Tabular Editor 3 Edición Enterprise, `BlockUnsafeScripts` mantiene el scripting disponible, pero solo permite scripts y macros que permanezcan dentro del modelo semántico: se rechaza, antes de ejecutarse, cualquier cosa que lea o escriba un archivo, acceda a la red, inicie otro programa o cargue código externo, independientemente de dónde provenga el script: un documento de script, el Best Practice Analyzer, una macro, el Asistente de IA, el servidor MCP o la línea de comandos. Consulta las [políticas de administrador](xref:csharp-scripts#administrator-policies).
+Las organizaciones que no quieran dejar esto en manos de cada usuario pueden gestionarlo de forma centralizada. Las [políticas](xref:policies) «DisableCSharpScripts» y «DisableMacros» desactivan por completo las funciones, en todas las ediciones. Con Tabular Editor 3 Edición Enterprise, «BlockUnsafeScripts» mantiene disponible el scripting, pero solo permite scripts y macros que se queden dentro del modelo semántico: cualquier elemento que lea o escriba un archivo, acceda a la red, inicie otro programa o cargue código externo se rechaza antes de ejecutarse, independientemente de la procedencia del script: un documento de script, Best Practice Analyzer, una macro, el Asistente de IA, el servidor MCP o la línea de comandos. Consulte [Políticas de administrador](xref:csharp-scripts#administrator-policies).
diff --git a/localizedContent/es/content/security/toc.md b/localizedContent/es/content/security/toc.md
index 3d3b79dbe..cc3894e11 100644
--- a/localizedContent/es/content/security/toc.md
+++ b/localizedContent/es/content/security/toc.md
@@ -1,11 +1,8 @@
# @security-privacy
+# @ai-compliance
-# Legal
-
-## @te3-eula
-
-## @third-party-notices
-
+# Aspectos legales
+## @terms
+## @avisos-de-terceros
## @privacy-policy
-
## @gdpr-delete
\ No newline at end of file
diff --git a/localizedContent/es/content/troubleshooting/toc.md b/localizedContent/es/content/troubleshooting/toc.md
index c4e7b7572..a7a4d6c12 100644
--- a/localizedContent/es/content/troubleshooting/toc.md
+++ b/localizedContent/es/content/troubleshooting/toc.md
@@ -1,9 +1,17 @@
-# @licensing-activation
+# @activación-de-licencias
# @proxy-settings
-# @locale-not-supported
+# @idioma-no-compatible
-# @calendar-blank-value
+# @valor-en-blanco-en-calendario
-# @direct-lake-entity-updates-reverting
\ No newline at end of file
+# @revertir-actualizaciones-entidades-direct-lake
+
+# @errores-de-conexión-de-azure-openai
+
+# @formato-medida-modelo-compuesto
+
+# @longitud-comentarios-columna-databricks
+
+# @databricks-actualizar-catálogo-vacío
diff --git a/localizedContent/es/content/whats-new/3-18-0.html b/localizedContent/es/content/whats-new/3-18-0.html
index 788bf22b6..24a7bcfb4 100644
--- a/localizedContent/es/content/whats-new/3-18-0.html
+++ b/localizedContent/es/content/whats-new/3-18-0.html
@@ -4,7 +4,7 @@
Tabular Editor 3.18.0
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/es/content/whats-new/3-18-1.html b/localizedContent/es/content/whats-new/3-18-1.html
index 4a4213f22..db3a3be62 100644
--- a/localizedContent/es/content/whats-new/3-18-1.html
+++ b/localizedContent/es/content/whats-new/3-18-1.html
@@ -4,7 +4,7 @@ Tabular Editor 3.18.1
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/es/content/whats-new/3-18-2.html b/localizedContent/es/content/whats-new/3-18-2.html
index cd2ad7a73..a37721ec0 100644
--- a/localizedContent/es/content/whats-new/3-18-2.html
+++ b/localizedContent/es/content/whats-new/3-18-2.html
@@ -4,7 +4,7 @@ Tabular Editor 3.18.2
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/es/content/whats-new/3-26-0.html b/localizedContent/es/content/whats-new/3-26-0.html
new file mode 100644
index 000000000..a99676ef7
--- /dev/null
+++ b/localizedContent/es/content/whats-new/3-26-0.html
@@ -0,0 +1,12 @@
+Tabular Editor 3.26.0
+Release blog: March 2026 (v. 3.26.0, release notes)
+
+ - AI Assistant (Public Preview): A built-in assistant for common semantic model development tasks -- explore your model, write DAX queries, generate C# scripts, run BPA analysis and more. Bring your own API key and privacy guards. Read the announcement.
+ - Run script with preview: A new option for C# scripts that snapshots your model before execution and shows a side-by-side diff of all changes, letting you review and accept or revert them.
+ - New built-in BPA rule: Detects User-Defined Functions without compound names (separators), preventing future naming conflicts with built-in DAX functions.
+ - Expanded C# scripting accessors: Complete singular and plural
Selected.* accessor support for all object types, including roles, KPIs, calendars, calculation items, functions and more.
+ - Workspace database improvements: Tabular Editor now detects changes to incremental refresh Source Expression or Polling Expression and prompts before overwriting workspace partitions.
+ - TOM Explorer table groups toggle: New toolbar button to show or hide table groups directly from the TOM Explorer.
+ - New DAX function support: TABLEOF, NAMEOF (table references), DATESINPERIOD EndBehavior parameter.
+ - Various bugfixes including Calendar Editor, DAX Debugger Call Tree, M Editor comment highlighting and C# script editor autocomplete. See release notes for details.
+
diff --git a/localizedContent/es/content/whats-new/3-26-1.html b/localizedContent/es/content/whats-new/3-26-1.html
new file mode 100644
index 000000000..564fd0372
--- /dev/null
+++ b/localizedContent/es/content/whats-new/3-26-1.html
@@ -0,0 +1,12 @@
+Tabular Editor 3.26.1
+Release blog: March 2026 (v. 3.26.1, release notes)
+
+ - AI Assistant (Public Preview): A built-in assistant for common semantic model development tasks -- explore your model, write DAX queries, generate C# scripts, run BPA analysis and more. Bring your own API key and privacy guards. Read the announcement.
+ - Run script with preview: A new option for C# scripts that snapshots your model before execution and shows a side-by-side diff of all changes, letting you review and accept or revert them.
+ - New built-in BPA rule: Detects User-Defined Functions without compound names (separators), preventing future naming conflicts with built-in DAX functions.
+ - Expanded C# scripting accessors: Complete singular and plural
Selected.* accessor support for all object types, including roles, KPIs, calendars, calculation items, functions and more.
+ - Workspace database improvements: Tabular Editor now detects changes to incremental refresh Source Expression or Polling Expression and prompts before overwriting workspace partitions.
+ - TOM Explorer table groups toggle: New toolbar button to show or hide table groups directly from the TOM Explorer.
+ - New DAX function support: TABLEOF, NAMEOF (table references), DATESINPERIOD EndBehavior parameter.
+ - Various bugfixes including Calendar Editor, DAX Debugger Call Tree, M Editor comment highlighting and C# script editor autocomplete. See release notes for details.
+
diff --git a/localizedContent/es/content/whats-new/3-26-2.html b/localizedContent/es/content/whats-new/3-26-2.html
new file mode 100644
index 000000000..5f8f18ae2
--- /dev/null
+++ b/localizedContent/es/content/whats-new/3-26-2.html
@@ -0,0 +1,11 @@
+Tabular Editor 3.26.2
+Release blog: June 2026 (v. 3.26.2, release notes)
+
+ - DAX UDFs are generally available: DAX user-defined functions are now GA. Tabular Editor 3.26.2 supports their syntax and metadata for models at compatibility level 1702 or higher, so you can package logic once and reuse it in measures, calculated columns, visual calculations, and other functions. Learn more.
+ - Optional parameters for DAX UDFs: A parameter can now carry a default expression, keeping the common case short while the edge cases stay configurable. The Semantic Analyzer also warns when an argument doesn't match a parameter's declared type.
+ - New NAMEOF parameters: Tabular Editor 3.26.2 understands the optional
component and escaped parameters introduced in Power BI Desktop's April 2026 update -- validating them as you type, suggesting calendars alongside tables, columns, and measures, and updating table references inside NAMEOF during formula fixup.
+ - Move tables to groups from the context menu: Right-click one or more selected tables in the TOM Explorer to move them into a Table Group or remove them. The new Move to group submenu lists your existing groups, plus a (New...) entry that creates a group from the selection and a (None) entry that clears the assignment.
+ - Semantic Bridge supports metric view YAML 1.1 (Enterprise): Importing a Databricks Metric View now carries more metadata -- display names, descriptions, and format strings -- into the generated semantic model, with improved SQL-to-DAX translation and support for snowflake schemas with nested joins.
+ - Also in the Tabular Editor CLI: these DAX language and semantic analysis improvements are available in te-cli, helping with scripting operations and giving agents better DAX results.
+ - Other fixes include more reliable Data Preview sorting and pagination across storage modes, several Semantic Analyzer corrections, and Update Table Schema working on mixed selections and Table Groups. See release notes for details.
+
diff --git a/localizedContent/es/content/whats-new/3-26-3.html b/localizedContent/es/content/whats-new/3-26-3.html
new file mode 100644
index 000000000..e0d8ca304
--- /dev/null
+++ b/localizedContent/es/content/whats-new/3-26-3.html
@@ -0,0 +1,11 @@
+Tabular Editor 3.26.3
+Release blog: June 2026 (v. 3.26.3, release notes)
+
+ - DAX UDFs are generally available: DAX user-defined functions are now GA. Tabular Editor 3.26.2 and higher supports their syntax and metadata for models at compatibility level 1702 or higher, so you can package logic once and reuse it in measures, calculated columns, visual calculations, and other functions. Learn more.
+ - Optional parameters for DAX UDFs: A parameter can now carry a default expression, keeping the common case short while the edge cases stay configurable. The Semantic Analyzer also warns when an argument doesn't match a parameter's declared type.
+ - New NAMEOF parameters: Tabular Editor 3.26.2 and higher understands the optional
component and escaped parameters introduced in Power BI Desktop's April 2026 update -- validating them as you type, suggesting calendars alongside tables, columns, and measures, and updating table references inside NAMEOF during formula fixup.
+ - Move tables to groups from the context menu: Right-click one or more selected tables in the TOM Explorer to move them into a Table Group or remove them. The new Move to group submenu lists your existing groups, plus a (New...) entry that creates a group from the selection and a (None) entry that clears the assignment.
+ - Semantic Bridge supports metric view YAML 1.1 (Enterprise): Importing a Databricks Metric View now carries more metadata -- display names, descriptions, and format strings -- into the generated semantic model, with improved SQL-to-DAX translation and support for snowflake schemas with nested joins.
+ - Also in the Tabular Editor CLI: these DAX language and semantic analysis improvements are available in te-cli, helping with scripting operations and giving agents better DAX results.
+ - Other fixes include more reliable Data Preview sorting and pagination across storage modes, several Semantic Analyzer corrections, and Update Table Schema working on mixed selections and Table Groups. See release notes for details.
+
diff --git a/localizedContent/es/content/whats-new/index.html b/localizedContent/es/content/whats-new/index.html
index 08c7cd070..d5556b17d 100644
--- a/localizedContent/es/content/whats-new/index.html
+++ b/localizedContent/es/content/whats-new/index.html
@@ -46,14 +46,15 @@ Community
Ask questions, suggest enhancements and help other TE fans get their answers at our GitHub community:
Articles
Share your favorite blog or SoMe post with the community
Video
@@ -85,12 +86,9 @@ Tabular Editor Learn
Meet the team
The Tabular Editor Team will be at the following conferences:
- - SQL Konferenz in Hanau, Germany, March 2-4
- - Power BI Gebruikersdagen in Utrecht, March 5-7
- - FabCon US in Atlanta, March 16-20
- - SQLBits in Newport, Wales, April 22-25
- - SQLDay in Wroclaw, Poland, May 11-13
- - Data Point Prague in Prague, May 28-29
+ - Power BI Next Step in Odense, Denmark, September 7-8
+ - FabCon Barcelona in Barcelona, Spain, September 28 - October 1
+ - dataMinds Connect in Mechelen, Belgium, October 12-14
diff --git a/localizedContent/zh/.translation-status.json b/localizedContent/zh/.translation-status.json
index f85892cf9..2213023e9 100644
--- a/localizedContent/zh/.translation-status.json
+++ b/localizedContent/zh/.translation-status.json
@@ -375,8 +375,8 @@
"status": "translated"
},
"features/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:7dc2adbeda0cb31f2e08f9530d215f40d39da97a305b2d70c361c71377a687cf",
+ "status": "translated"
},
"features/unsaved-changes.md": {
"sourceHash": "sha256:b4276f4a2d3144459dfc5e6fa6f6e71d560547cad60cc6c6227c8a2207fc3651",
@@ -547,8 +547,8 @@
"status": "translated"
},
"getting-started/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:adf238552f81c08ae51d0b01e45e454d85808fa4cb5f0346102572f8c292fd10",
+ "status": "translated"
},
"getting-started/training-telearn.md": {
"sourceHash": "sha256:cba2b907335edf7e1310d6323c063305cbed3c66013758b932d91466394b4d85",
@@ -631,7 +631,7 @@
"status": "translated"
},
"how-tos/formula-fixup-dependencies.md": {
- "sourceHash": "sha256:f1b335d4a4c069ac21bdd9c20b0e34ed6442c63307f9d3a1cfdb29e4992daec5",
+ "sourceHash": "sha256:47edeccaae5f56e9ee945ebb0361b52f61ca0dc746445cb17413f13e5cfdcd1d",
"status": "translated"
},
"how-tos/import-export-translations.md": {
@@ -791,8 +791,8 @@
"status": "translated"
},
"how-tos/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:6b2bda5655200d7d8468b139409d10f4024adeb90e0ae3177833c7003df10ec9",
+ "status": "translated"
},
"how-tos/undo-redo.md": {
"sourceHash": "sha256:857971043360cef22eb83ee113a0ebbe86160e1250ecfce378e7824e924fcc2d",
@@ -1179,8 +1179,8 @@
"status": "translated"
},
"references/release-notes/3_0_3.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:e34eb6b6cc40a550c2b1e5555ab3dd5ae9aab4fe150191da8b217f7e1c44b7f8",
+ "status": "translated"
},
"references/release-notes/3_0_4.md": {
"sourceHash": "sha256:0745acfac1154de9e0b61300052c871454382fff3120fa89b0bf5b794522bcb1",
@@ -1283,8 +1283,8 @@
"status": "translated"
},
"references/release-notes/3_1_2.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:9f7ef93ca36c28f28b2a61b62b7cf68738da2a31a73abbc67ebacd4be6b05915",
+ "status": "translated"
},
"references/release-notes/3_1_3.md": {
"sourceHash": "sha256:63da26ecf5029706dd4a732a7494b15ff4df4bbf3d4e1e7743f61b46d979d2ef",
@@ -1419,8 +1419,8 @@
"status": "translated"
},
"references/release-notes/3_3_4.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:dabac3bc52ea3ecb59ffc39e10a13d252a29530412a604c284cf33fa988e7ccb",
+ "status": "translated"
},
"references/release-notes/3_3_5.md": {
"sourceHash": "sha256:b88d6bc31375caca6ccbc5af1f95d1c64a64bac5d5861d540a5a111046ec2709",
@@ -1527,8 +1527,8 @@
"status": "translated"
},
"references/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:dbc3800f9348e300524d13c2beacfc036c700b0df898692e39929d7b4bfcb440",
+ "status": "translated"
},
"references/user-options.md": {
"sourceHash": "sha256:ad092f6088edad3d3e8bd124c227f618338b081a453118946880a2fdc8dccf9d",
@@ -1555,8 +1555,8 @@
"status": "translated"
},
"security/security-privacy.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:5d9f2e13cdc658c57cd7a23bcc73bedef02662c7efa62cb1bf1e780e53b281cd",
+ "status": "translated"
},
"security/terms.md": {
"sourceHash": "sha256:90fd51f0cff45e9e16b2c200fc4dc3ccf769b97a3c6afcd09b7a688cfc5b87f0",
@@ -1567,8 +1567,8 @@
"status": "copied"
},
"security/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:aecf5ca69ba24fc448be9fbff14d4662f5b333222a4ddec6bb6a064575481147",
+ "status": "translated"
},
"toc.yml": {
"sourceHash": "sha256:11d5df2671e45efed1baf56cd10c6634fc48f5f34b8f40d5b83456258a929108",
@@ -1631,8 +1631,8 @@
"status": "translated"
},
"troubleshooting/toc.md": {
- "sourceHash": "",
- "status": "untranslated"
+ "sourceHash": "sha256:eb90344041259d96a138c386edc99bc3c992c331f293f88539c4deca6fffd323",
+ "status": "translated"
},
"tutorials/calendars.md": {
"sourceHash": "sha256:42d5fbcac1800e22943c402afc8cc0ab45ecae62d802ffafb492d37a3e4096b2",
@@ -1727,126 +1727,159 @@
"status": "translated"
},
"whats-new/3-11-0.html": {
- "sourceHash": "sha256:8e741c7bee681e80aef9a0cac12b2c4a08193ba1a64e896f825400209a615dd0",
- "status": "translated"
+ "sourceHash": "sha256:f05c90ee23a66c16c7f7e97f10f44e50bdd772f3049b4d0e75def4e1562c6664",
+ "status": "copied"
},
"whats-new/3-12-0.html": {
- "sourceHash": "sha256:1185bd5e0f896cf0241dba6051a1d23f8122df33d35ca629751388ca46e5411b",
- "status": "translated"
+ "sourceHash": "sha256:ac4db83ba7bf38d569d8888e29c900ac98bd8528159db2439b310bcb4613ce33",
+ "status": "copied"
},
"whats-new/3-12-1.html": {
- "sourceHash": "sha256:0e1800850f435b7939eaf29d4c05564b315198f49bd8a9539dd180c2289aaca4",
- "status": "translated"
+ "sourceHash": "sha256:05454034ab0295fc27adbd530c98851b2c6d978d1297620c005cbac8723068e2",
+ "status": "copied"
},
"whats-new/3-13-0.html": {
- "sourceHash": "sha256:fe072740d52a6d0664d5a54627f904603dca096280c9a0c3e4d67fa0dfa89236",
- "status": "translated"
+ "sourceHash": "sha256:338340ce38e3d4e0c78ca8939e9f682a39a84144c10c7775b2ebd45fd0a013d8",
+ "status": "copied"
},
"whats-new/3-14-0.html": {
- "sourceHash": "sha256:516c949f7443084eeb6e3c4c5981e5ff4960ddd65622dd0f34b5b9c47b81431e",
- "status": "translated"
+ "sourceHash": "sha256:0ebf84c1ed96b8df959859fedb4294d14f1a785f7d90c898a23552a840a5d66e",
+ "status": "copied"
},
"whats-new/3-15-0.html": {
- "sourceHash": "sha256:21384e1d1473d31ef1d1076640a94dc9f48033a072ae9e56e37b700954319083",
- "status": "translated"
+ "sourceHash": "sha256:be61fe699768f176d186e6121c697e035fabed64aa567550d5e9636e31ee0b5c",
+ "status": "copied"
},
"whats-new/3-16-0.html": {
- "sourceHash": "sha256:2ea751dad6a56088eb1e35934df0e3def7ceb65e15877e869778a2c946bbb322",
- "status": "translated"
+ "sourceHash": "sha256:305e03f418ff43c6b4462466e6df3a048aabbdd677da448067f9f63e9d4131da",
+ "status": "copied"
},
"whats-new/3-17-0.html": {
- "sourceHash": "sha256:5d0ae23d2d1a98813d3c06f3c50039838fe3b4e024ef3b4d61462469d9d904a3",
- "status": "translated"
+ "sourceHash": "sha256:66246fbfd6abce8bb7bd60f3c922f470b96c4a78315fbf1a9b862db29983b50c",
+ "status": "copied"
},
"whats-new/3-17-1.html": {
- "sourceHash": "sha256:5d0ae23d2d1a98813d3c06f3c50039838fe3b4e024ef3b4d61462469d9d904a3",
- "status": "translated"
+ "sourceHash": "sha256:66246fbfd6abce8bb7bd60f3c922f470b96c4a78315fbf1a9b862db29983b50c",
+ "status": "copied"
},
"whats-new/3-18-0.html": {
- "sourceHash": "sha256:379bc949c979ed11804eacb3090b760cb0b67f7e10d4a01b1b7e314b1fe98739",
- "status": "translated"
+ "sourceHash": "sha256:11676c6ea80f5de2ee940db6e5e07bfb1c4d654c363ce8172034e56ea09ad766",
+ "status": "copied"
},
"whats-new/3-18-1.html": {
- "sourceHash": "sha256:264150226e01169f6dd8569bb48d8c13192aedd54d78d17b51df115ca260c0c9",
- "status": "translated"
+ "sourceHash": "sha256:f38aa0f26bb0eec38c07d2926df761a9237ae36fdb8903b71e4b1a115897ef3c",
+ "status": "copied"
},
"whats-new/3-18-2.html": {
- "sourceHash": "sha256:07289f60b049811a09e673f8642fe4dcbc50efddb8ad77718cf55d16e4b69200",
- "status": "translated"
+ "sourceHash": "sha256:3aaee936b3713c578ac67b6bf55cfd638a90fd2d1fdca3b9d06d971af73da0ce",
+ "status": "copied"
},
"whats-new/3-19-0.html": {
- "sourceHash": "sha256:264b6c6843e8a6c737c5e88953856e08a9ece0ebd39ac78b2a58cef1b69796db",
- "status": "translated"
+ "sourceHash": "sha256:c97ca1eaa3a079bbe8ee4ce15231468a917535875b99bf94b66dbfe850ea78f1",
+ "status": "copied"
},
"whats-new/3-20-0.html": {
- "sourceHash": "sha256:165affb599d769434c2e227fc63aa174509c08ec5a501e357ff028b3bb26bbd7",
- "status": "translated"
+ "sourceHash": "sha256:800086470837f7c0ef96b37778a29897895b6ecc41e8b6aa6127b8dbed13370a",
+ "status": "copied"
},
"whats-new/3-21-0.html": {
- "sourceHash": "sha256:0560eecc9d57bfa393d9415121f00a06c9e0692db7bbf924c81fd5e32f99283c",
- "status": "translated"
+ "sourceHash": "sha256:433f0fca243c8efa8f7e643fc432faaedfc6ea9d43c4ddbabed6c55468c15afb",
+ "status": "copied"
},
"whats-new/3-22-0.html": {
- "sourceHash": "sha256:d5c122abcc84f8fdea50724e96e35435f1ce4e71e204cbd4b4bf2822dc98bbb1",
- "status": "translated"
+ "sourceHash": "sha256:d8dadb26e6e39ddb632129d367d22c2512cc8b1cb1f0b4ff9261b2158440fa11",
+ "status": "copied"
},
"whats-new/3-22-1.html": {
- "sourceHash": "sha256:65af209383626dfef5ecc828f1d6050cf336ff370c7f3b58c2233352ab39ef02",
- "status": "translated"
+ "sourceHash": "sha256:132726eaf4923afa154e884b8084fb50cde7472a2e18de4ec06a1d8b8ee8d990",
+ "status": "copied"
},
"whats-new/3-23-0.html": {
- "sourceHash": "sha256:c8a1848ae04394a58fe7146ebfa57ace75dafed1fbe735e6feba8a43d805ac11",
- "status": "translated"
+ "sourceHash": "sha256:57003c0ce3231886266229e77c19fd45b4e0c8a8d816b79d2af5201117f44630",
+ "status": "copied"
},
"whats-new/3-23-1.html": {
- "sourceHash": "sha256:258468e5a7e6f2437aa12b410807dceabf6d5b5060c8607ea88b157ee8dc2b8f",
- "status": "translated"
+ "sourceHash": "sha256:792a9676ccb8bbe2dcf7d1df81d3b3307567e1af2cc15567c78415b2e24d4ec8",
+ "status": "copied"
},
"whats-new/3-24-0.html": {
- "sourceHash": "sha256:addd6ae83a458d866e21cf5b566afd011b438d822206582320568f2a5efa2c5b",
- "status": "translated"
+ "sourceHash": "sha256:7f944c252f7a8c422aa266d7a6fc28a9c05ae602a41e7846f04249d4fc48ef6a",
+ "status": "copied"
},
"whats-new/3-24-1.html": {
- "sourceHash": "sha256:971a290fd477bc5955d7e55e0868b296e8b4016774ca60206f9e04d719a8e273",
- "status": "translated"
+ "sourceHash": "sha256:c43935a7d057dd95816594b369f06182a924aa6a892fad182b0eabe93a7e9501",
+ "status": "copied"
},
"whats-new/3-24-2.html": {
- "sourceHash": "sha256:b4c35a93026703f8aa4b295d1bca544dd64c9fbbd0f191e6c484aaed0d501d02",
- "status": "translated"
+ "sourceHash": "sha256:7a5a2de978c00c85cefdbc798ba050b892549dc039334f947ffffbfd8aa9c6a3",
+ "status": "copied"
},
"whats-new/3-25-0.html": {
- "sourceHash": "sha256:ecb851a842a1bb429299b338684019c5e58c5a41d49e50f52bde33460e1d17c4",
- "status": "translated"
+ "sourceHash": "sha256:d64545aff7bba1e17aa5ea0c1a64c25699af771f3b12a5ce4d5a1b6e67f8e28c",
+ "status": "copied"
},
"whats-new/3-25-1.html": {
- "sourceHash": "sha256:0164edb73af4cbdf606868a921664852b195a2230d52ae4df0b77028c40ea798",
- "status": "translated"
+ "sourceHash": "sha256:a22b5f95bd8281add36952622203e4249a87421aa1f355eb2b8fabea4d52ebd3",
+ "status": "copied"
},
"whats-new/3-25-2.html": {
- "sourceHash": "sha256:d698e79f8caf50a91fb5563c900116a4ed42d0259db6412db4cc0e1a44ad7dca",
- "status": "translated"
+ "sourceHash": "sha256:7dd48026b0f54b9bd1a0087c7a3155cda91de983325d1a59280ff75550f39875",
+ "status": "copied"
},
"whats-new/3-25-3.html": {
- "sourceHash": "sha256:fa93ee8ef8188bc519bde65fb7c222301d13ac1867b883028505bc3a5a7e76c0",
- "status": "translated"
+ "sourceHash": "sha256:b005281766f013aba39b364a5233f5a3308bef9fc7c98ddf77a6330d625e8878",
+ "status": "copied"
+ },
+ "whats-new/3-26-0.html": {
+ "sourceHash": "sha256:e43a553222c48f862abe7993dc460ee413a0b843c62cc0ad18c8ee4669af8cb1",
+ "status": "copied"
+ },
+ "whats-new/3-26-1.html": {
+ "sourceHash": "sha256:68c34fd5ab34fb25fbf53b557a43128c142fdbc69895090ebb76be287698b5d4",
+ "status": "copied"
+ },
+ "whats-new/3-26-2.html": {
+ "sourceHash": "sha256:9052c24f89a6030cebc66e1dfe7ae2ee4b5dc2f845c6be3f14f02afa04fdc262",
+ "status": "copied"
+ },
+ "whats-new/3-26-3.html": {
+ "sourceHash": "sha256:dccf4025abdb99f91e5f04c0a14759b69591e9ffc4253095f6994516954541bb",
+ "status": "copied"
},
"whats-new/generic.html": {
- "sourceHash": "sha256:5db66c26cee732683b90bc9374802446f747ffb7ee43cbbcad0e977805871f2c",
- "status": "translated"
+ "sourceHash": "sha256:2b76277d177968724be678e9d085bf68a7a25d3f6071054d57b096853676bd31",
+ "status": "copied"
},
"whats-new/index.html": {
- "sourceHash": "sha256:5b9c85b1dffecec8f9912e589adb5fb38de25f01803f8a3618053f6994580251",
- "status": "translated"
+ "sourceHash": "sha256:56e416db8f0fa9adcc561aa6bfd06d25309358bcd08aa1983a71d1667cbaf05e",
+ "status": "copied"
}
},
"summary": {
- "translated": 448,
+ "translated": 430,
"outdated": 0,
- "untranslated": 10,
- "copied": 1,
+ "untranslated": 0,
+ "copied": 33,
"pinned": 0,
- "total": 459,
- "completionPercent": 97.8,
- "failures": 0
+ "total": 463,
+ "completionPercent": 100.0,
+ "failures": 3
+ },
+ "failures": {
+ "how-tos/Advanced-Filtering-of-the-Explorer-Tree.md": {
+ "error": "code fences 12 -> 6",
+ "at": "2026-10-16T18:26:02Z",
+ "sourceHash": "sha256:88282c7d6522f7528d4115587a3f6a37c0d26be56435f14d66005adbb0770c79"
+ },
+ "how-tos/drag-drop.md": {
+ "error": "code fences 4 -> 2",
+ "at": "2026-10-16T18:26:03Z",
+ "sourceHash": "sha256:ae62dabee90d8104bbccee01dad64504de4a1f6525dd5f07103be4d563f4ae17"
+ },
+ "how-tos/semantic-bridge-rename-objects.md": {
+ "error": "code fences 6 -> 3",
+ "at": "2026-10-16T18:26:05Z",
+ "sourceHash": "sha256:e6486910e9c85e0949fd793b6ef748e19d01c8f3441eda36e07b975682849c7f"
+ }
}
}
diff --git a/localizedContent/zh/content/features/toc.md b/localizedContent/zh/content/features/toc.md
index 0a167a41f..d0006105f 100644
--- a/localizedContent/zh/content/features/toc.md
+++ b/localizedContent/zh/content/features/toc.md
@@ -1,119 +1,100 @@
# 用户界面
-
## @user-interface
-
-## @tom-explorer-view
-
+## @tom-资源管理器视图
## @properties-view
-
+## @unsaved-changes
## @bpa-view
-
## @data-refresh-view
-
## @find-replace
-
## @messages-view
-
## @diagram-view
# DAX 功能
-
## @dax-debugger
-
## @dax-editor
-
## @dax-query
-
## @dax-scripts
-
## @code-actions
-
## @dax-package-manager
-# 脚本编写与自动化
-
+# 脚本和自动化
## @csharp-scripts
-
-## C# Script 脚本库
-
-### @csharp-script-library
-
-### @script-library-beginner
-
-### @script-library-advanced
-
-## @script-helper-methods
-
-## @useful-script-snippets
-
+## C# Script库
+### @csharp-脚本库
+### @脚本库-初级
+### @脚本库-高级
+## @脚本-帮助程序-方法
+## @有用的脚本片段
## @macros
-# 模型分析与质量
-
-## @best-practice-analyzer
-
-### @built-in-bpa-rules
-
+# 模型分析和质量
+## @最佳实践分析器
+### @内置-bpa-规则
### @using-bpa
-
### @using-bpa-sample-rules-expressions
-
## @dax-optimizer-integration
-# 数据探索与连接性
-
+# 数据探索和连接性
## @import-tables
-
+## @connectivity
+### @connect-sql-server
+### @connect-snowflake
+### @connect-databricks
+### @connect-oracle
+### @connect-odbc
+### @connect-oledb
+### @connect-onelake
+### @connect-dataflows
+## @table-preview
## @pivot-grid
-
## @semantic-model-types
-
### @direct-lake-sql-model
-
### @dq-over-as-limitations
-# AI Features
-
+# AI 功能
## @ai-assistant
+## @mcp-server
+## @ai-audit-log
# 高级建模功能
-
-## @metadata-translation-editor
-
+## @user-context-calculated-columns
+## @元数据-翻译-编辑器
## @perspective-editor
# 模型组织
-
## @hierarchical-display
-
## @table-groups
-# 模型部署与管理
-
+# 模型部署和管理
## [模型部署](deployment.md)
-
## @workspace-databases
-
## @workspace-mode
-
## @tmdl
-
## @save-to-folder
-
## @save-with-supporting-files
-
+## @auto-reload
## @advanced-refresh
-
## @refresh-overrides
-# 命令行与集成
-
-## @command-line-options
-
-# 用于跨平台翻译的语义桥
-
+# 命令行和集成
+## Tabular Editor CLI(有限 PuPr)
+### [概述](xref:te-cli)
+### [安装和设置](xref:te-cli-install)
+### [身份验证和连接](xref:te-cli-auth)
+### [命令参考](xref:te-cli-commands)
+### [自定义配置](xref:te-cli-config)
+### [交互模式](xref:te-cli-interactive)
+### [自动化和脚本](xref:te-cli-automation)
+### [CI/CD 集成](xref:te-cli-cicd)
+### [机器可读结果(JSON)](xref:te-cli-findings)
+### [AI 代理技能](xref:te-cli-skill)
+### [从 TE2 CLI 迁移](xref:te-cli-migrate)
+### [行为差异和已知限制](xref:te-cli-limitations)
+## @命令行选项
+
+# [用于跨平台翻译的语义桥](xref:semantic-bridge)
## @semantic-bridge
-
## @semantic-bridge-metric-view-object-model
-
+## @semantic-bridge-metric-view-tabular-translation
## @semantic-bridge-metric-view-validation
+## @semantic-bridge-metric-view-fields-and-dimensions
diff --git a/localizedContent/zh/content/getting-started/toc.md b/localizedContent/zh/content/getting-started/toc.md
index a24b06c87..579182b94 100644
--- a/localizedContent/zh/content/getting-started/toc.md
+++ b/localizedContent/zh/content/getting-started/toc.md
@@ -1,75 +1,45 @@
-# [欢迎](index.md)
-
-# Tabular Editor 简介
-
-## @general-introduction
-
-## @installation-activation-basic
+# [欢迎](index.md)
+# Tabular Editor 3 入门指南
+## @概述
+## @getting-started
+## @安装-激活-基础
## @migrate-from-vs
-
## @migrate-from-desktop
-
## @migrate-from-te2
-
## @azure-marketplace
-
-# Tabular Editor 3 入门指南
-
-## @getting-started
-
## @editions
-
## @training-telearn
# @getting-started-te2
# Power BI Desktop 和 Tabular Editor
-
## @desktop-integration
-
-## @desktop-limitations
+## @desktop-limitations
# 用户界面
-
## @user-interface-reference
-
-## @bpa-view-reference
-
-## @data-refresh-view-reference
-
-## @find-replace-reference
-
-## @macros-view-reference
-
-## @messages-view-reference
-
-## @properties-view-reference
-
-## @tom-explorer-view-reference
-
-## @diagram-view-reference
+## @bpa-视图-参考
+## @数据刷新视图参考
+## @查找-替换-参考
+## @宏视图-参考
+## @消息-视图-参考
+## @属性-视图-参考
+## @tom-explorer-视图-参考
+## @图视图-参考
+## @table-preview-reference
# 并行开发
-
-## @parallel-development
-
-## @optimizing-workflow-workspace-mode
+## @并行开发
+## @sharing-macros-bpa-rules
+## @优化-工作流-工作区-模式
# 使用 Tabular Editor 更快地构建模型
-
## @boosting-productivity-te3
-
-## @importing-tables-data-modeling
-
+## @导入-表-数据-建模
## @refresh-preview-query
-
## @creating-and-testing-dax
-
-## @dax-script-introduction
-
+## @dax-脚本-简介
## @bpa
-
-## @cs-scripts-and-macros
-
+## @cs-脚本和宏
## @personalizing-te3
\ No newline at end of file
diff --git a/localizedContent/zh/content/how-tos/formula-fixup-dependencies.md b/localizedContent/zh/content/how-tos/formula-fixup-dependencies.md
index e92840d5e..cab50b5c2 100644
--- a/localizedContent/zh/content/how-tos/formula-fixup-dependencies.md
+++ b/localizedContent/zh/content/how-tos/formula-fixup-dependencies.md
@@ -1,6 +1,8 @@
---
uid: formula-fix-up-dependencies
-title: 公式修复与公式依赖关系
+title: 公式修正和公式依赖关系
+author: Morten Lønskov
+updated: 2026-09-23
applies_to:
products:
- product: Tabular Editor 2
@@ -9,10 +11,9 @@ applies_to:
full: true
---
-# 公式修复与公式依赖关系
+# 公式修正和公式依赖关系
+Tabular Editor 持续解析模型中所有度量值、计算列和计算表的 DAX 表达式,并构建这些对象的依赖关系树。*公式修正*使用该树:当您重命名一个对象时,它会更新引用该对象的 DAX 表达式。在**工具 > 首选项 > Tabular Editor > 建模操作**(Tabular Editor 2 中为**文件 > 首选项**)下,通过**自动 DAX 公式修正**启用此功能。
-Tabular Editor 会持续解析模型中所有度量值、计算列和计算表格的 DAX 表达式,以构建这些对象的依赖关系树。此依赖关系树用于“公式修复”功能,可在 **工具 > 偏好设置** 中启用(在 Tabular Editor 2 中为 **文件 > 偏好设置**)。一旦表达式中引用的对象被重命名,“公式修复”就会自动更新相应度量值、计算列或计算表格的 DAX 表达式。
+在 TOM Explorer 中右键单击一个对象,然后选择**显示依赖项…**,以查看其依赖关系树。
-若要查看依赖关系树,请在资源管理器树中右键单击该对象,然后选择“显示依赖关系……”
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/localizedContent/zh/content/how-tos/toc.md b/localizedContent/zh/content/how-tos/toc.md
index 44736cd2b..82773aac7 100644
--- a/localizedContent/zh/content/how-tos/toc.md
+++ b/localizedContent/zh/content/how-tos/toc.md
@@ -1,81 +1,67 @@
# 脚本和自动化
-
## [高级脚本](Advanced-Scripting.md)
-
## [脚本引用对象](script-reference-objects.md)
-# 模型管理与部署
-
+# 脚本模式
+## [导航 TOM 对象层次结构](scripting-navigate-tom-hierarchy.md)
+## [检查对象类型](scripting-check-object-types.md)
+## [关键 TOM 接口](scripting-tom-interfaces.md)
+## [动态 LINQ 与 C# LINQ](scripting-dynamic-linq-vs-csharp.md)
+## [使用 LINQ 筛选和查询对象](scripting-filter-query-linq.md)
+## [使用 Selected 对象](scripting-use-selected-object.md)
+## [使用表达式和 DAX 属性](scripting-work-with-expressions.md)
+## [使用依赖关系](scripting-work-with-dependencies.md)
+## [使用注释和扩展属性](scripting-work-with-annotations.md)
+## [使用透视和翻译](scripting-perspectives-translations.md)
+## [添加、克隆和删除对象](scripting-add-clone-remove-objects.md)
+## [使用脚本 UI 助手](scripting-ui-helpers.md)
+## [在脚本中构建自定义 WinForms 对话框](scripting-custom-winforms-dialogs.md)
+
+# 模型管理和部署
## [部署当前模型](deploy-current-model.md)
-
## [连接到 SSAS](connect-ssas.md)
-
-## [加载与保存](load-save.md)
-
+## [加载和保存模型元数据](load-save.md)
## [文件夹序列化](folder-serialization.md)
-
## [主模型模式](Master-model-pattern.md)
-
## [更新兼容级别](update-compatibility-level.md)
+## [更改兼容性模式](change-compatibility-mode.md)
-# 数据导入与表格
-
-## [导入表(TE2)](Importing-Tables.md)
-
-## [从 Excel 导入表(TE2)](importing-tables-from-excel.md)
-
+# 数据导入和表格
+## [导入表 (TE2)](Importing-Tables.md)
+## [从 Excel 导入表 (TE2)](importing-tables-from-excel.md)
## [替换表](replace-tables.md)
-# 模型组织与结构
-
+# 模型组织和结构
## [资源管理器树的高级筛选](Advanced-Filtering-of-the-Explorer-Tree.md)
-
## [拖放](drag-drop.md)
-
-## [复制与批量重命名](duplicate-batchrename.md)
-
+## [复制和批量重命名](duplicate-batchrename.md)
## [编辑属性](edit-properties.md)
-# 翻译与透视
-
+# 翻译和透视
## [导入/导出翻译](import-export-translations.md)
+## [透视和翻译](perspectives-translations.md)
-## [透视与翻译](perspectives-translations.md)
-
-# 数据安全与角色
-
-## [角色与行级安全性](roles-rls.md)
-
-# 连接与集成
+# 数据安全和角色
+## [角色和行级安全性](roles-rls.md)
+# 连接和集成
## [XMLA Analysis Services 连接](xmla-as-connectivity.md)
-
-## [Power BI XMLA PBIX 变通方案](powerbi-xmla-pbix-workaround.md)
+## [Power BI XMLA PBIX 解决方法](powerbi-xmla-pbix-workaround.md)
# 模型维护
-
-## [公式修复依赖项](formula-fixup-dependencies.md)
-
+## [公式修正依赖项](formula-fixup-dependencies.md)
## [元数据备份](metadata-backup.md)
-
-## [撤销与重做](undo-redo.md)
+## [撤消和重做](undo-redo.md)
# [语义桥](semantic-bridge-how-tos.md)
-
## @semantic-bridge-load-inspect
-
+## @semantic-bridge-metric-view-import-from-file
## @semantic-bridge-import
-
## @semantic-bridge-validate-default
-
## @semantic-bridge-validate-simple-rules
-
## @semantic-bridge-validate-contextual-rules
-
## @semantic-bridge-add-object
-
## @semantic-bridge-remove-object
-
## @semantic-bridge-rename-objects
-
## @semantic-bridge-serialize
+## @semantic-bridge-metric-view-handle-failures
diff --git a/localizedContent/zh/content/references/release-notes/3_0_3.md b/localizedContent/zh/content/references/release-notes/3_0_3.md
index f70303071..1fac7ea7e 100644
--- a/localizedContent/zh/content/references/release-notes/3_0_3.md
+++ b/localizedContent/zh/content/references/release-notes/3_0_3.md
@@ -1,54 +1,53 @@
-# Tabular Editor 3.0.3
+# Tabular Editor 3.0.3
> [!IMPORTANT]
-> Tabular Editor 已推出新版本。你可以在[这里](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
+> Tabular Editor 有较新版本可用。您可以在[此处](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
-- 下载[Tabular Editor 3.0.3](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x86.msi)
-- 下载[Tabular Editor 3.0.3(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x64.msi)
+- 下载 [Tabular Editor 3.0.3](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x86.msi)
+- 下载 [Tabular Editor 3.0.3(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.0.3.x64.msi)
-_如果你此前未使用过 Tabular Editor 3,则有资格申请 30 天试用,可在安装后提出申请。你也可以 [购买许可证](https://tabulareditor.com/#licensing)._
+*如果您此前从未使用过 Tabular Editor 3,则有资格获得 30 天试用,可在安装后申请。您还可以[购买许可证](https://tabulareditor.com/#licensing)。*
-\*\*注意:\*\*如果你之前安装过某个 BETA 版本,则需要在安装此新版本之前手动卸载该版本。
+**注意:**如果您之前安装了某个 BETA 版本,则必须先手动卸载该版本,然后才能安装此新版本。
## 已知问题
-- 由于需要先修复一些高优先级的 Bug,表导入向导未能赶上此次发布。我们会尽快提供!作为临时替代方案,只需创建一个新表并指定分区查询(SQL 或 M)。然后,右键单击该表,选择“Update Table Schema...”,即可导入列。
-- 更多信息见[路线图](https://github.com/TabularEditor/TabularEditor3/issues/12)。
+- 由于需要修复一些高优先级漏洞,表导入向导未包含在此版本中。它将尽快提供!作为一种变通方法,只需创建一个新表并指定分区查询(SQL 或 M)。然后,右键单击该表并选择“更新表架构……”,以导入列。
+- 有关详细信息,请参阅[路线图](https://github.com/TabularEditor/TabularEditor3/issues/12)。
## 3.0.3 中的新功能:
-- 在处理视图中右键单击某个项,现在可以将其重新加入队列;如果该项代表单个表,还会打开该表的数据预览。
+- 现在,右键单击“处理视图”中的项目,即可将该项目重新排入队列,或者,如果该项目代表单个表,则可打开该表的数据预览。
-## 3.0.3 中修复的问题:
+## 3.0.3 中的错误修复:
-- 当语义分析器在计算列/计算表格上检测到错误时,将不再修改该表中的列(此前在某些情况下会导致关系被删除)
-- 修复了查找/替换对话框中某些控件启用状态不正确的问题
-- 根据遥测数据和错误 Report 修复了多个问题,例如:
- - 现在可以正常复制/粘贴带有 Lineage tag 的列
- - 在表已重命名时,将表粘贴覆盖到现有表不再导致崩溃
- - “还原”按钮现在会在刷新本地 TOM 之前先重新连接到 AS,从而避免崩溃
+- 当语义分析器在计算列/计算表格上检测到错误时,它不再修改该表格上的列(这在以前会导致在某些情况下关系被删除)
+- 修复了“查找/替换”对话框上某些控件的启用状态问题
+- 根据遥测和错误报告修复了多处漏洞,例如:
+ - 复制/粘贴带有 Lineage tag 的列现在可以正常工作
+ - 在表重命名时将表粘贴到现有表上不再导致崩溃
+ - “还原”按钮现在会在刷新本地 TOM 之前重新连接到 AS,而不会导致崩溃
- 在属性网格为空时右键单击不再导致崩溃
- - 以及许多其他修复……
-- 修复“Server”下拉框的最近使用项 MRU 未能正确保存的问题
-- 修复工作区模式无法从“用户选项”文件正确加载数据源覆盖值等多个问题。参见 [#28](https://github.com/TabularEditor/TabularEditor3/issues/28)。
-- 修复并改进多项“虚假”DAX 语义错误(支持 ROLLUPADDISSUBTOTAL、带 0 个参数的 COUNTROWS 等)
-- 改进多项 DAX 函数的自动补全/参数提示(TOPN、TOPNPERLEVEL、DATEADD/DATESINPERIOD/PARALLELPERIOD 的 interval 参数等),并改进 RETURN 关键字后的提示。
+ - 还有很多很多……
+- 修复了“服务器”下拉菜单的 MRU 未正确保存的问题
+- 修复了工作区模式无法从用户选项文件正确加载数据源覆盖值的多个问题。请参阅 [#28](https://github.com/TabularEditor/TabularEditor3/issues/28)。
+- 修复并改进了几个“虚假”DAX 语义错误(支持 ROLLUPADDISSUBTOTAL、COUNTROWS(0 个参数)等)
+- 改进了多个 DAX 函数(TOPN、TOPNPERLEVEL、DATEADD/DATESINPERIOD/PARALLELPERIOD 的间隔参数)、RETURN 关键字后的自动补全/参数信息等。
-## 从 Tabular Editor 2.x 升级而来?
+## 来自 Tabular Editor 2.x?
-观看 [此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),快速了解 Tabular Editor 3 的新功能。 另外,也别忘了查看我们的 [入门指南](https://docs.tabulareditor.com/onboarding/index.html)。
+观看[此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),了解 Tabular Editor 3 的新功能。
**Tabular Editor 3 主要功能概览:**
-
- 完全可自定义的 IDE,支持多显示器、高 DPI 和主题
-- 全新强大的 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等更多功能
-- \*工作区模式,可将更改保存到磁盘,并同时将模型元数据同步到 Analysis Services
-- \*以无限滚动预览表数据,创建 PivotGrid,或编写 DAX 查询来浏览模型或测试计算逻辑
-- \*更新 Provider 和 Structured数据源上的表架构(是的,连 M 查询也支持!)
-- \*安排数据刷新计划
-- 创建 Data model 图表
-- 创建 DAX 脚本,让您在一个文档中同时编辑多个度量值或其他计算对象
-- 录制 C# Script 并保存为宏(以前称为“自定义操作”)
-- 集成 VertiPaq分析器
-
-\*=仅在连接到 Analysis Services 或 Power BI 实例时才可用
+- 全新的强大 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等众多功能
+- *工作区模式,允许您将更改保存到磁盘,并同时将模型元数据同步到 Analysis Services
+- *使用无限滚动预览表格数据,创建数据透视网格或编写 DAX 查询以浏览模型或测试计算逻辑
+- *在提供程序和结构化数据源上更新表格架构(是的,即使对于 M 查询也是如此!)
+- *安排数据刷新
+- 创建数据模型图
+- 创建 DAX 脚本,让您能够在单个文档中编辑多个度量值或其他计算对象
+- 录制 C# 脚本并另存为宏(以前称为“自定义操作”)
+- VertiPaq分析器集成
+
+*=仅在连接到 Analysis Services 或 Power BI 实例时
diff --git a/localizedContent/zh/content/references/release-notes/3_1_2.md b/localizedContent/zh/content/references/release-notes/3_1_2.md
index 666ca57d9..02b87e349 100644
--- a/localizedContent/zh/content/references/release-notes/3_1_2.md
+++ b/localizedContent/zh/content/references/release-notes/3_1_2.md
@@ -1,72 +1,70 @@
-# Tabular Editor 3.1.2
+# Tabular Editor 3.1.2
> [!IMPORTANT]
-> Tabular Editor 已推出新版本。你可以在[这里](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
+> Tabular Editor 有较新版本可用。您可以在[此处](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
-- 下载 [Tabular Editor 3.1.2(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x64.msi) _(推荐)_
+- 下载 [Tabular Editor 3.1.2(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x64.msi) *(推荐)*
- 下载 [Tabular Editor 3.1.2](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x86.msi)
- 便携版:[x64](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x64.zip)、[x86](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x86.zip)
-_如果你此前未使用过 Tabular Editor 3,则有资格申请 30 天试用,可在安装后提出申请。你也可以[购买许可证](https://tabulareditor.com/#licensing)。_
+*如果您此前从未使用过 Tabular Editor 3,则有资格获得 30 天试用,可在安装后申请。您还可以[购买许可证](https://tabulareditor.com/#licensing)。*
-## 3.1.2 的错误修复
+## 3.1.2 中的错误修复
-- 修复了“更新表架构”在 SQL DW / Synapse SQL Pool 数据源上无法工作的问题,参见 [#231](https://github.com/TabularEditor/TabularEditor3/issues/231)。
-- 修复了被忽略的规则仍会被 Best Practice Analyzer 纳入考虑的问题,参见 [#203](https://github.com/TabularEditor/TabularEditor3/issues/203)。
-- 修复了因 JSON 序列化错误导致模型无法保存到磁盘(文件或文件夹)的问题,参见 [#232](https://github.com/TabularEditor/TabularEditor3/issues/232)。
-- 修复了在检查 Structured数据源的属性值时导致崩溃的问题。
+- 修复了“更新表架构”对 SQL DW/Synapse SQL 池数据源不起作用的问题,请参阅 [#231](https://github.com/TabularEditor/TabularEditor3/issues/231)。
+- 修复了 Best Practice Analyzer 仍会考虑已忽略规则的问题,请参阅 [#203](https://github.com/TabularEditor/TabularEditor3/issues/203)。
+- 修复了由于 JSON 序列化错误而无法将模型保存到磁盘(文件或文件夹)的问题,请参阅[#232](https://github.com/TabularEditor/TabularEditor3/issues/232)。
+- 修复了在检查结构化数据源的属性值时导致崩溃的问题。
-## 3.1.1 的改进
+## 3.1.1 中的改进
-- 现在可以将共享表达式(Power Query / M 表达式)序列化为单独的文件。你可以在 **Tools > 偏好 > Save-to-folder** 中控制序列化方式;对于现有模型,则在 **Model > 序列化选项...** 中设置(参见 [#218](https://github.com/TabularEditor/TabularEditor3/issues/218))
-- 在 **Tools > 偏好 > Modeling Operations** 下新增选项,用于控制将透视成员关系应用到新对象的方式(参见问题 [#216](https://github.com/TabularEditor/TabularEditor3/issues/216))。
-- 现在可以在序列化时排除 `PrivacySetting` 属性,以避免 Microsoft.AnalysisServices.Deployment 相关问题。可在 **模型 > 序列化选项...** 中控制此项(参见问题 [#210](https://github.com/TabularEditor/TabularEditor3/issues/210))。
-- 你现在可以直接在 C# Script 中定义枚举、结构体和类,更便于组织并复用 C# 代码。
-- VertiPaq分析器现新增从数据中收集统计信息的选项(**Tools > 偏好 > VertiPaq分析器**),可提升统计信息的质量,例如当列的 IsAvailableInMDX = false 时。参见问题 [#190](https://github.com/TabularEditor/TabularEditor3/issues/290)。
-- 创建新模型后,Tabular Editor 3 现在会在首次保存时提示你:要将模型保存为文件还是文件夹。你也可以在 **工具 > 偏好 > 常规 > 新模型的默认保存格式** 中设置默认模式。参见问题 [#50](https://github.com/TabularEditor/TabularEditor3/issues/50)。
-- 启动性能已改进(部分用户反馈,在 TabularEditor3.exe 快捷方式中添加 `-multicorejit` 开关后,启动时间还能进一步缩短)。
-- 重构了“模型”菜单,使“新建计算组”等选项更易找到。
-- 已将 AMO/TOM 客户端库更新到 [19.26.1.7](https://www.nuget.org/packages/Microsoft.AnalysisServices.retail.amd64/)。
-- 现在可在 Best Practice Analyzer 中逐个遍历模型角色成员
-- 为避免与 [工作区模式](https://docs.tabulareditor.com/te3/tutorials/workspace-mode.html) 混淆,“窗口”菜单中的“Workspace”已更名为“布局”。
-- 新增 Ctrl+Shift+D 作为“部署”的快捷键
-- 支持新的 DAX 函数([`HASH`](https://dax.guide/hash)、[`NAMEOF`](https://dax.guide/nameof)、[`COLUMNSTATISTICS`](https://dax.guide/columnstatistics)、[`BITAND`](https://dax.guide/bitand)、[`BITLSHIFT`](https://dax.guide/bitlshift)、[`BITOR`](https://dax.guide/bitor)、[`BITRSHIFT`](https://dax.guide/bitrshift)、[`BITXOR`](https://dax.guide/bitxor)),并支持在 [`SELECTCOLUMNS`](https://dax.guide/selectcolumns) 中使用可选的列名参数。
+- 共享表达式(Power Query/M 表达式)现在可以序列化为单个文件。您可以在**工具 > 首选项 > 保存到文件夹**下控制序列化,或在**模型 > 序列化选项…**下为现有模型控制序列化([#218](https://github.com/TabularEditor/TabularEditor3/issues/218))。
+- 新增选项,用于控制如何将透视成员资格应用于**工具 > 首选项 > 建模操作**下的新对象(请参阅问题 [#216](https://github.com/TabularEditor/TabularEditor3/issues/216))。
+- 现在可以将“PrivacySetting”属性从序列化中排除,以避免出现 Microsoft.AnalysisServices.Deployment 相关问题。这在**模型 > 序列化选项...**下进行控制(请参阅问题[#210](https://github.com/TabularEditor/TabularEditor3/issues/210))。
+- 您现在可以直接在 C# 脚本中定义枚举、结构和类,从而使 C# 代码的结构化和重用更加容易。
+- VertiPaq Analyzer 现在提供了一个从数据收集统计信息的选项(**工具 > 首选项 > VertiPaq Analyzer**),从而提高了统计信息的质量,例如当列的 IsAvailableInMDX = false 时。请参阅问题 [#190](https://github.com/TabularEditor/TabularEditor3/issues/290)。
+- 创建新模型时,Tabular Editor 3 现在会在首次保存时提示是否应将模型保存为文件或文件夹。您还可以在**工具 > 首选项 > 常规 > 新模型的默认保存格式**下设置默认模式。请参阅问题 [#50](https://github.com/TabularEditor/TabularEditor3/issues/50)。
+- 提高了启动性能(一些用户报告称,通过将“-multicorejit”开关添加到 TabularEditor3.exe 快捷方式,进一步缩短了启动时间)。
+- 重新设计了“模型”菜单,使“新建计算组”等选项易于使用。
+- 将 AMO/TOM 客户端库更新为 [19.26.1.7](https://www.nuget.org/packages/Microsoft.AnalysisServices.retail.amd64/)。
+- 现在,可以在最佳实践分析器中单独迭代模型角色成员。
+- “窗口”菜单中的“工作区”已重命名为“布局”,以避免与[工作区模式](https://docs.tabulareditor.com/te3/tutorials/workspace-mode.html)混淆。
+- 添加了 Ctrl+Shift+D 作为“部署”的快捷键
+- 支持新的 DAX 函数(['HASH'](https://dax.guide/hash)、['NAMEOF'](https://dax.guide/nameof)、['COLUMNSTATISTICS'](https://dax.guide/columnstatistics)、['BITAND'](https://dax.guide/bitand)、['BITLSHIFT'](https://dax.guide/bitlshift)、['BITOR'](https://dax.guide/bitor)、['BITRSHIFT'](https://dax.guide/bitrshift)、['BITXOR'](https://dax.guide/bitxor)),并支持 ['SELECTCOLUMNS'](https://dax.guide/selectcolumns) 中的可选列名参数。
## 3.1.1 中的错误修复
-- 删除对象时,TOM Explorer 不再会出现卡死或崩溃(参见问题 [#223](https://github.com/TabularEditor/TabularEditor3/issues/223)、[#209](https://github.com/TabularEditor/TabularEditor3/issues/209))。
-- 修复了编辑器([#207](https://github.com/TabularEditor/TabularEditor3/issues/207))和图标([#215](https://github.com/TabularEditor/TabularEditor3/issues/215))在深色主题下的颜色问题
-- “创建/编辑关系”对话框中的表现在会按字母顺序排序(参见问题 [#214](https://github.com/TabularEditor/TabularEditor3/issues/214)
-- 修复了一个 C# Script 问题:该问题会导致无法将 C# Script 保存为宏(参见问题 [#208](https://github.com/TabularEditor/TabularEditor3/issues/208))。
-- 修复了一个问题:数据源密码/凭据未能正确应用到 Workspace 数据库(参见问题 [#205](https://github.com/TabularEditor/TabularEditor3/issues/205))。
-- “选择所有列”复选框不再会导致崩溃(参见问题 [#204](https://github.com/TabularEditor/TabularEditor3/issues/204))。
-- 当脚本使用 `#r` 预编译指令引用外部 DLL 时,Tabular Editor 现在始终会在安装目录中查找(参见问题 [#192](https://github.com/TabularEditor/TabularEditor3/issues/192))。
-- 修复了语言架构中的一个 Bug,该 Bug 会在某些情况下导致 Q&A 停止工作
-- 在数据预览中对日期列进行筛选不再会导致崩溃
-- 在 TOM Explorer 的透视下拉列表中选择“所有透视”时,不属于任何透视的对象将不再显示。还修复了下拉框无法更新透视名称的问题。
-- 允许将某些 DAX 关键字用作变量(`WEEK`、`DAY`、`INTEGER` 等)且不会显示错误。
-- 修复了一个问题:首次保存模型时,序列化选项未被保存。
-- 修复了 DAX 解析器中的一个问题,该问题会导致在加载模型时崩溃(参见 [#229](https://github.com/TabularEditor/TabularEditor3/issues/229))。
+- 删除对象时,TOM 资源管理器不应再冻结或崩溃(请参阅问题 [#223](https://github.com/TabularEditor/TabularEditor3/issues/223)、[#209](https://github.com/TabularEditor/TabularEditor3/issues/209))。
+- 修复了编辑器([#207](https://github.com/TabularEditor/TabularEditor3/issues/207))和图标([#215](https://github.com/TabularEditor/TabularEditor3/issues/215))中深色主题的颜色问题
+- 表格现已在“创建/编辑关系”对话框中按字母顺序排序(请参阅问题 [#214](https://github.com/TabularEditor/TabularEditor3/issues/214)
+- 修复了 C# 脚本无法保存为宏的问题(请参阅问题 [#208](https://github.com/TabularEditor/TabularEditor3/issues/208))。
+- 修复了数据源密码/凭据未正确应用于工作区数据库的问题(请参阅问题 [#205](https://github.com/TabularEditor/TabularEditor3/issues/205))。
+- “选择所有列”复选框不应再导致崩溃(请参阅问题 [#204](https://github.com/TabularEditor/TabularEditor3/issues/204))。
+- 当脚本引用外部 DLL 时(使用“#r”预编译器指令),Tabular Editor 现在始终会在安装目录中进行查找,请参阅问题 [#192](https://github.com/TabularEditor/TabularEditor3/issues/192)。
+- 修复了语言架构的一个漏洞,该漏洞导致问答功能在某些情况下停止工作
+- 在“数据预览”中对日期列进行筛选不再会导致崩溃
+- 在 TOM Explorer 透视下拉列表中选择所有透视时,不再显示不包含在任何透视中的对象。还修复了下拉框不更新透视名称的问题。
+- 允许将某些 DAX 关键字用作变量(“WEEK”、“DAY”、“INTEGER”等),且不会显示错误。
+- 修复了首次保存模型时序列化选项未被存储的问题。
+- 修复了 DAX 解析器的一个问题,该问题会导致在加载模型时发生崩溃(请参阅 [#229](https://github.com/TabularEditor/TabularEditor3/issues/229))。
---
+## 来自 Tabular Editor 2.x?
-## 从 Tabular Editor 2.x 升级而来?
-
-观看 [此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),快速了解 Tabular Editor 3 的新功能。 另外,也别忘了查看我们的 [入门指南](https://docs.tabulareditor.com/onboarding/index.html)。
+观看[此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),了解 Tabular Editor 3 的新功能。
**Tabular Editor 3 主要功能概览:**
-
- 完全可自定义的 IDE,支持多显示器、高 DPI 和主题
-- 全新强大的 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等更多功能
-- \*工作区模式,可将更改保存到磁盘,并同时将模型元数据同步到 Analysis Services
-- \*以无限滚动预览表数据,创建 PivotGrid,或编写 DAX 查询来浏览模型或测试计算逻辑
-- \*支持计划数据刷新
-- 在提供程序和 Structured数据源上更新表架构(是的,甚至包括 M 查询!)
-- 创建 Data model 图表
-- 创建 DAX 脚本,让您在一个文档中同时编辑多个度量值或其他计算对象
-- 录制 C# Script 并保存为宏(以前称为“自定义操作”)
-- 集成 VertiPaq分析器
-
-\*=仅在连接到 Analysis Services 或 Power BI 实例时才可用
+- 全新的强大 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等众多功能
+- *工作区模式,允许您将更改保存到磁盘,并同时将模型元数据同步到Analysis Services
+- *使用无限滚动预览表格数据,创建数据透视网格或编写 DAX 查询以浏览模型或测试计算逻辑
+- *安排数据刷新
+- 更新提供程序和结构化数据源上的表格架构(是的,即使对于 M 查询也是如此!)
+- 创建数据模型图
+- 创建 DAX 脚本,让您能够在单个文档中编辑多个度量值或其他计算对象
+- 录制 C# 脚本并保存为宏(以前称为“自定义操作”)
+- VertiPaq Analyzer 集成
+
+*=仅在连接到 Analysis Services 或 Power BI 实例时
---
\ No newline at end of file
diff --git a/localizedContent/zh/content/references/release-notes/3_3_4.md b/localizedContent/zh/content/references/release-notes/3_3_4.md
index 7ae5b0d74..e2b45e669 100644
--- a/localizedContent/zh/content/references/release-notes/3_3_4.md
+++ b/localizedContent/zh/content/references/release-notes/3_3_4.md
@@ -1,76 +1,74 @@
# Tabular Editor 3.3.4
> [!IMPORTANT]
-> Tabular Editor 已推出新版本。你可以在[这里](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
+> Tabular Editor 有较新版本可用。您可以在[此处](https://docs.tabulareditor.com/references/release-notes)找到最新版本。
-- 下载 [Tabular Editor 3.3.4(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x64.exe) _(推荐)_
+- 下载 [Tabular Editor 3.3.4(64 位)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x64.exe) *(推荐)*
- 下载 [Tabular Editor 3.3.4](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x86.exe)
-- 便携版:[x64](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x64.zip)、[x86](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x86.zip)
+- 便携版: [x64](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x64.zip)、[x86](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x86.zip)
- MSI 版本:[x64](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x64.msi)、[x86](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.x86.msi)
-_如果你此前未使用过 Tabular Editor 3,则有资格申请 30 天试用,可在安装后提出申请。你也可以[购买许可证](https://tabulareditor.com/licensing)。_
+*如果您此前从未使用过 Tabular Editor 3,则有资格获得 30 天试用,可在安装后申请。您还可以[购买许可证](https://tabulareditor.com/licensing )。*
-## 重要!
+## 重要提示!
-**注意**:Tabular Editor 3.3.0(及更高版本)使用 .NET 6。在启动 Tabular Editor 3.3.0(或更高版本)之前,你可能需要先安装[适用于桌面的.NET 6.0 运行时](https://dotnet.microsoft.com/en-us/download/dotnet/6.0/runtime)。从 3.3.1 开始,如果缺少这些必备组件,Tabular Editor 3 安装程序会下载并安装它们。
+**注意**:Tabular Editor 3.3.0(及更新版本)使用 .NET 6。您可能需要先安装[.NET 6.0 Runtime for Desktop](https://dotnet.microsoft.com/en-us/download/dotnet/6.0/runtime),然后才能启动 Tabular Editor 3.3.0(或更高版本)。从 3.3.1 开始,如果缺少这些先决条件,Tabular Editor 3 安装程序将下载并安装这些先决条件。
## 3.3.4 中的改进
-- 将 TOM 更新到 [19.46.0](https://www.nuget.org/packages/Microsoft.AnalysisServices.NetCore.retail.amd64) 版。
-- 将 Microsoft.Data.SqlClient 更新到 [5.0.0](https://www.nuget.org/packages/Microsoft.Data.SqlClient) 版。
-- 将 SciLexer.dll 更新到 4.4.6 版,不受此 [CVE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2019-16294) 影响。
-- 多项小修复与改进。
-- “新建/编辑关系”对话框改进:列会按字母顺序排序,并按匹配类型排序。我们现在也会根据“from-column”的名称来建议“to-column”。
-- 将新建 Power BI Dataset 的默认 CL 更改为 1571,并新增对 [ObjectTranslation.Altered](https://docs.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.tabular.objecttranslation.altered?view=analysisservices-dotnet) 属性的支持。在基于 AS Dataset 创建 DirectQuery 时,应将该属性设置为 "true",以防元数据翻译被源端覆盖。
-- 新增快捷键 **Ctrl+Alt+S**,用于保存当前模型。参见 [#595](https://github.com/TabularEditor/TabularEditor3/issues/595)、[#561](https://github.com/TabularEditor/TabularEditor3/issues/561)。
-- 新增快捷键 **Ctrl+Shift+F6**,用于 Debug Comma DAX 格式化。参见 [#595](https://github.com/TabularEditor/TabularEditor3/issues/595)。
-- 离线架构检测现已可正常工作,即使将 Server Name、Database Name 等参数存储在共享的 M 表达式中也是如此。
-
-## 3.3.4 中的 Bug 修复
-
-- 修复“更新表架构”选项会将所有列都 Report 为已删除的问题,参见 [#612](https://github.com/TabularEditor/TabularEditor3/issues/612)。
-- 修复在使用嵌套筛选表达式时出现的误报语义分析器错误。
-- 修复在对通过关系而非公共列联接的表使用 `NATURALINNERJOIN` / `NATURALLEFTOUTERJOIN` 时出现的语义分析器误报错误。
-- 修复尝试显示 ODBC 连接器的连接对话框时的问题,参见 [#448](https://github.com/TabularEditor/TabularEditor3/issues/448)
-- Microsoft.Data.SqlClient 的 AAD 身份验证现在会显示模态弹窗(而不是打开操作系统浏览器)
-- 修复 SQL Server 连接对话框中的“高级按钮”有时会导致崩溃的问题。
-- 表导入向导现在允许在 Azure Synapse 上预览数据(数据预览查询中不再添加 NOLOCK 提示)
-- 32 位安装程序现在应能正确检测 32 位 .NET 桌面运行时
-- DAX 自动完成现在也可以建议 Variant 类型的标量变量,参见 [#615](https://github.com/TabularEditor/TabularEditor3/issues/615)
-- 修复 DAX调试器无法显示包含嵌套条件分支的本地/观察表达式的问题。
-- 将 SciLexer.dll 放在应用程序文件夹中,而不是将其解压/加载到 %LocalAppData%\Temp 中。这应该可以避免在组策略阻止从此位置加载 DLL 时偶尔出现的“Exception has been thrown by the target of an invocation”错误。
-- 修复了在多选时“属性网格”无法设置嵌套属性的问题。参见 [#614](https://github.com/TabularEditor/TabularEditor3/issues/614)。
-- 修复属性网格未刷新以显示动态添加/删除属性的问题,例如切换“增量刷新策略”属性时。
-- 修复一个问题:AAS Developer Tier 实例会被视为 Standard Tier 实例,导致无法连接到 TE3 商业版
-- 修复 NAMEOF 自动完成在某些情况下无法显示所有列/度量值引用的问题,参见 [#620](https://github.com/TabularEditor/TabularEditor3/issues/620)。
-- 修复了某些 DAX 关键字(START、ORDER、RETURN 等)在未加引号用作表引用时未被视为错误的问题。此问题还会导致包含对此类表的带引号引用的代码无法被正确格式化。
-- 修复“4096 (0x1000) is an invalid culture identifier”这一“无效的区域设置标识符”错误,参见 [#576](https://github.com/TabularEditor/TabularEditor3/issues/576)。
-- 修复查找/替换搜索时可能导致崩溃的问题,参见 [#611](https://github.com/TabularEditor/TabularEditor3/issues/611)。
-- 在只读模式下显示所有属性,参见 [#596](https://github.com/TabularEditor/TabularEditor3/issues/596)。
-- 已移除窗口固定/取消固定时的动画效果,详见 [#595](https://github.com/TabularEditor/TabularEditor3/issues/595)。
-- 在 DAX 注释中不再自动补全括号,详见 [#597](https://github.com/TabularEditor/TabularEditor3/issues/597)。
-- 修复在“首选项”对话框中将默认 CL 值设置为非标准值时导致崩溃的问题。
+- 将 TOM 更新至 [19.46.0](https://www.nuget.org/packages/Microsoft.AnalysisServices.NetCore.retail.amd64) 版本。
+- 将 Microsoft.Data.SqlClient 更新至 [5.0.0](https://www.nuget.org/packages/Microsoft.Data.SqlClient) 版本。
+- 将 SciLexer.dll 更新至 4.4.6 版本,该版本不受[此 CVE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2019-16294)的影响。
+- 多项小修小改和改进。
+- “新建/编辑关系”对话框改进:列按字母顺序和匹配类型排序。我们现在还会根据“源列”的名称建议“目标列”。
+- 将新 Power BI 数据集的默认 CL 更改为 1571,并添加了对 [ObjectTranslation.Altered](https://docs.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.tabular.objecttranslation.altered?view=analysisservices-dotnet) 属性的支持,该属性应设置为“true”,以防止在对 AS 数据集创建 DirectQuery 时元数据翻译被源覆盖。
+- 添加了用于保存当前模型的新快捷键 **Ctrl+Alt+S**。请参阅[#595](https://github.com/TabularEditor/TabularEditor3/issues/595)、[#561](https://github.com/TabularEditor/TabularEditor3/issues/561)。
+- 添加了用于调试逗号 DAX 格式的快捷键 **Ctrl+Shift+F6**。请参阅[#595](https://github.com/TabularEditor/TabularEditor3/issues/595 )。
+- 当服务器名称和数据库名称等参数存储在共享 M 表达式中时,离线架构检测现在应该可以正常工作。
+
+## 3.3.4 中的错误修复
+
+- 修复了“更新表架构”选项将所有列报告为已删除的问题,请参阅 [#612](https://github.com/TabularEditor/TabularEditor3/issues/612)。
+- 修复了使用嵌套筛选器表达式时出现的语义分析器误报错误。
+- 修复在使用“NATURALINNERJOIN”/“NATURALLEFTOUTERJOIN”时,对于通过关系而非公共列联接的表格,语义分析器报告的错误。
+- 修复了尝试显示 ODBC 连接器的连接对话框时出现的问题,请参阅 [#448](https://github.com/TabularEditor/TabularEditor3/issues/448)
+- 使用 Microsoft.Data.SqlClient 进行 AAD 身份验证现在会显示模式弹出窗口(而不是打开操作系统浏览器)
+- 修复了 SQL Server 连接对话框“高级按钮”有时导致崩溃的问题。
+- 表格导入向导现在允许在 Azure Synapse 上预览数据(不再将 NOLOCK 提示添加到数据预览查询中)
+- 32 位安装程序现在应能正确检查 32 位 .NET Desktop Runtime
+- DAX 自动补全现在还可以建议 Variant 类型的标量变量,请参阅 [#615](https://github.com/TabularEditor/TabularEditor3/issues/615)
+- 修复了 DAX 调试器无法显示包含嵌套条件分支的局部/监视表达式的问题。
+- 将 SciLexer.dll 包含在应用程序文件夹中,而不是将其提取/加载到 %LocalAppData%\Temp。应能避免有时在组策略阻止从该位置加载 DLL 时出现的“调用目标引发了异常”错误。
+- 修复了属性网格无法对多项选择设置嵌套属性的问题。请参阅[#614](https://github.com/TabularEditor/TabularEditor3/issues/614)。
+- 修复了属性网格未刷新以显示动态添加/删除的属性的问题,例如在切换“增量刷新策略”属性时。
+- 修复了 AAS 开发人员层实例被视为标准层实例的问题,从而避免了与 TE3 Business Edition 的连接问题。
+- 修复了 NAMEOF 自动补全在某些情况下未显示所有列/Measure 引用的问题,请参阅 [#620](https://github.com/TabularEditor/TabularEditor3/issues/620)。
+- 修复了某些 DAX 关键字(START、ORDER、RETURN 等)在不加引号用作表引用时未被视为错误的问题。此漏洞还导致无法正确格式化包含对此类表格的带引号引用代码。
+- 修复了“4096 (0x1000) 是无效的区域设置标识符”问题,请参阅 [#576](https://github.com/TabularEditor/TabularEditor3/issues/576)。
+- 防止查找/替换搜索崩溃,请参阅 [#611](https://github.com/TabularEditor/TabularEditor3/issues/611)。
+- 在只读模式下显示所有属性,请参阅 [#596](https://github.com/TabularEditor/TabularEditor3/issues/596)。
+- 移除了固定/取消固定窗口的动画,请参阅 [#595](https://github.com/TabularEditor/TabularEditor3/issues/595)。
+- 不要在 DAX 注释中自动添加大括号,请参阅 [#597](https://github.com/TabularEditor/TabularEditor3/issues/597)。
+- 修复了默认 CL 值在设置为非标准值时导致“偏好”对话框崩溃的问题。
---
+## 来自 Tabular Editor 2.x?
-## 从 Tabular Editor 2.x 升级而来?
-
-观看 [此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),快速了解 Tabular Editor 3 的新功能。 另外,也别忘了查看我们的 [入门指南](https://docs.tabulareditor.com/onboarding/index.html)。另外,请务必查看我们的[上手指南](https://docs.tabulareditor.com/onboarding/index.html)。
+观看[此视频](https://www.youtube.com/watch?v=pt3DdcjfImY),了解 Tabular Editor 3 的新功能。此外,请务必查看我们的[入门指南](https://docs.tabulareditor.com/onboarding/index.html)。
**Tabular Editor 3 主要功能概览:**
-
- 完全可自定义的 IDE,支持多显示器、高 DPI 和主题
-- 全新强大的 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等更多功能
-- \*工作区模式,可将更改保存到磁盘,并同时将模型元数据同步到 Analysis Services
-- \*以无限滚动预览表数据,创建 PivotGrid,或编写 DAX 查询来浏览模型或测试计算逻辑
-- \*支持计划数据刷新
-- 在提供程序和 Structured数据源上更新表架构(是的,甚至包括 M 查询!)
-- 创建 Data model 图表
-- 创建 DAX 脚本,让您在一个文档中同时编辑多个度量值或其他计算对象
-- 录制 C# Script 并保存为宏(以前称为“自定义操作”)
-- 集成 VertiPaq分析器
-- \*DAX调试器
-
-\*=仅在连接到 Analysis Services 或 Power BI 实例时才可用
+- 全新的强大 DAX 代码编辑器,具备自动完成、语法检查、代码折叠等众多功能
+- *工作区模式,允许您将更改保存到磁盘,并同时将模型元数据同步到 Analysis Services
+- *使用无限滚动预览表格数据,创建数据透视网格或编写 DAX 查询以浏览模型或测试计算逻辑
+- *安排数据刷新
+- 更新提供程序和结构化数据源上的表格架构(是的,即使对于 M 查询也是如此!)
+- 创建数据模型图
+- 创建 DAX 脚本,让您能够在单个文档中编辑多个度量值或其他计算对象
+- 录制 C# 脚本并另存为宏(以前称为“自定义操作”)
+- VertiPaq分析器集成
+- *DAX 调试器
+
+*=仅在连接到 Analysis Services 或 Power BI 实例时
---
\ No newline at end of file
diff --git a/localizedContent/zh/content/references/toc.md b/localizedContent/zh/content/references/toc.md
index 9b6d88d49..25658d424 100644
--- a/localizedContent/zh/content/references/toc.md
+++ b/localizedContent/zh/content/references/toc.md
@@ -1,33 +1,39 @@
-# 下载与版本发布
-
+# 下载和版本
## @downloads
-
+## @系统要求
## @release-history
-## @whats-new
# 技术参考
-
## @faq
-
## @preferences
-
## @policies
-
## @shortcuts3
-
## @shortcuts2
-
## @user-options
-
## @supported-files
-
+## @accessibility
## @user-setting-files-te2
-# 开发与规划
-
+# 对象属性参考
+## @object-properties
+## @object-properties-common
+## @object-properties-model
+## @object-properties-tables
+## @object-properties-columns
+## @object-properties-measures
+## @object-properties-calculation-groups
+## @object-properties-hierarchies
+## @object-properties-relationships
+## @object-properties-partitions
+## @object-properties-data-sources
+## @object-properties-security
+## @object-properties-perspectives-cultures
+## @object-properties-calendars
+## @object-properties-functions
+
+# 开发和规划
## @roadmap
-# 已弃用的功能
-
-## @formatdax
\ No newline at end of file
+# 已弃用功能
+## @formatdax
\ No newline at end of file
diff --git a/localizedContent/zh/content/security/security-privacy.md b/localizedContent/zh/content/security/security-privacy.md
index 90e687d1d..70ec88780 100644
--- a/localizedContent/zh/content/security/security-privacy.md
+++ b/localizedContent/zh/content/security/security-privacy.md
@@ -1,6 +1,6 @@
----
+---
uid: security-privacy
-title: 安全概述
+title: 安全概览
author: Morten Lønskov
updated: 2026-10-12
applies_to:
@@ -16,138 +16,137 @@ applies_to:
- edition: Enterprise
full: true
---
+# Tabular Editor 3 安全与隐私
-# Tabular Editor 3 的安全与隐私
-
-本文档介绍 Tabular Editor 3 及其使用中的安全与隐私注意事项。下文中,“Tabular Editor”一词既可指商业工具 Tabular Editor 3,也可指开源工具 Tabular Editor 2.X。每当内容仅涉及其中一个工具时,我们会明确使用其名称“Tabular Editor 3”或“Tabular Editor 2.X”。
+本文档介绍了 Tabular Editor 3 及其使用的安全和隐私注意事项。在下文中,“Tabular Editor”一词既可以指商业工具 Tabular Editor 3,也可以指开源工具 Tabular Editor 2.X。每当仅涉及其中一个工具时,我们将使用其明确的名称“Tabular Editor 3”或“Tabular Editor 2.X”。
## Microsoft 关于 Tabular Editor 等第三方工具的建议
-Microsoft 在此处说明其支持使用社区第三方工具:[用于开发企业级 Power BI 和 Analysis Services 模型的社区和第三方工具](https://powerbi.microsoft.com/en-us/blog/community-tools-for-enterprise-powerbi-and-analysisservices)
+Microsoft 支持使用社区第三方工具,具体说明请参阅此处:[用于开发企业级 Power BI 和 Analysis Services 模型的社区和第三方工具]( https://powerbi.microsoft.com/en-us/blog/community-tools-for-enterprise-powerbi-and-analysisservices)
-Microsoft的 Power BI 实施规划文档在高级数据建模场景与企业级开发中明确提及 Tabular Editor:[Power BI 使用场景:高级 Data model 管理](https://learn.microsoft.com/power-bi/guidance/powerbi-implementation-planning-usage-scenario-advanced-data-model-management#tabular-editor)
+Microsoft 的 Power BI 实施规划文档特别将 Tabular Editor 列入高级数据建模场景和企业开发中:[Power BI 使用场景:高级数据模型管理](https://learn.microsoft.com/power-bi/guidance/powerbi-implementation-planning-usage-scenario-advanced-data-model-management#tabular-editor)
## 信任中心
+在 Tabular Editor,我们致力于透明度和强有力的安全实践。请访问我们的[信任中心](https://trust.tabulareditor.com/),了解有关我们的 SOC 2 审计报告、关键政策文件、许可条款以及我们对基础设施和组织安全的做法的详细信息。您还将找到有关我们的分包处理者以及我们如何努力保护您的数据安全的信息。
-在 Tabular Editor,我们始终坚持透明原则,并践行严格的安全实践。访问我们的[信任中心](https://trust.tabulareditor.com/),查看 SOC 2 审计 Report、关键政策文件、许可条款,以及我们在基础设施和组织安全方面的做法。您还可以找到有关我们子处理方的信息,以及我们如何确保您的数据安全。
-
-## 元数据与数据隐私
+## 元数据和数据隐私
-Tabular Editor 主要是一款离线工具,这意味着所有数据和元数据都保存在安装了 Tabular Editor 的本机上,所有用户交互也都在本地完成。运行和使用 Tabular Editor 无需互联网连接。
+Tabular Editor 主要是一款离线工具,这意味着所有数据和元数据都驻留在安装了 Tabular Editor 的客户端计算机的本地,所有用户交互也都在本地进行。运行和使用 Tabular Editor 无需互联网连接。
-不过,在某些场景下,Tabular Editor 会出于不同目的连接到远程服务。具体如下:
+话虽如此,在某些情况下,Tabular Editor 会出于各种目的连接到远程服务。这些情况描述如下:
### Analysis Services XMLA 协议
-与 Analysis Services 实例或 Power BI Premium Workspace 的所有通信都通过 [Microsoft Analysis Management Objects (AMO)](https://docs.microsoft.com/analysis-services/amo/developing-with-analysis-management-objects-amo?view=asallproducts-allversions) 客户端库完成;更具体地说,是通过 [用于 AMO 的 Tabular Object Model (TOM) 扩展](https://docs.microsoft.com/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions)。这些客户端库由 Microsoft 提供,可在 Tabular Editor 等第三方应用程序中再分发。有关许可的详细信息,见 [AMO EULA](https://go.microsoft.com/fwlink/?linkid=852989)。
+与 Analysis Services 实例或 Power BI Premium 工作区的所有通信均通过使用 [Microsoft Analysis Management Objects (AMO)](https://docs.microsoft.com/analysis-services/amo/developing-with-analysis-management-objects-amo?view=asallproducts-allversions) 客户端库,更具体地说,通过使用 [AMO 的 Tabular Object Model (TOM) 扩展](https://docs.microsoft.com/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions)进行。这些客户端库由 Microsoft 提供,用于在 Tabular Editor 等第三方应用程序中进行再分发。有关许可的详细信息,请参阅[AMO EULA](https://go.microsoft.com/fwlink/?linkid=852989)。
-当 Tabular Editor 连接到 Analysis Services 实例(本地网络或云端)或 Power BI Premium Workspace(云端)时,会通过上述客户端库建立连接。按照设计,AMO 库负责处理用户的身份验证和授权。只有在 Analysis Services 实例或 Power BI Premium Workspace 中具有管理员权限的用户才能连接。这与使用 SQL Server Management Studio 或 SQL Server Data Tools 等 Microsoft 工具并无不同(它们使用相同的客户端库进行连接)。
+当 Tabular Editor 连接到 Analysis Services 实例(本地网络或云)或 Power BI Premium 工作区(云)时,此连接通过上述客户端库进行。根据设计,AMO 库负责处理用户的身份验证和授权。只有在 Analysis Services 实例或 Power BI Premium 工作区上拥有管理员权限的用户才能进行连接。这与使用 SQL Server Management Studio 或 SQL Server Data Tools 等 Microsoft 工具(它们使用相同的客户端库进行连接)的情况并无不同。
### Tabular Object Model 元数据
-AMO/TOM 客户端库建立连接后,Tabular Editor 会请求用户要连接的特定 Analysis Services 数据库或 Power BI Dataset 的完整 Tabular Object Model(TOM)元数据。然后,AMO/TOM 客户端库会以编程方式将这些元数据提供给客户端应用程序(Tabular Editor),使应用程序能够应用元数据更改,例如重命名对象、添加说明、修改 DAX 表达式等。此外,AMO/TOM 客户端库还提供了将 TOM 元数据序列化为基于 JSON 的格式的方法。 Tabular Editor 使用此技术让用户可以将模型元数据保存为本地 JSON 文件,用于对 Data model 结构进行版本控制。\*\*注意:以这种方式生成的 JSON 文件不包含任何实际数据记录。该文件仅包含模型元数据,即有关模型结构的信息,包括表、列、度量值、DAX 表达式等。\*\*虽然模型元数据通常不被视为机密信息,但使用 Tabular Editor 的用户仍有责任按所需的保密要求处理以这种方式生成的任何文件(即不与第三方共享此类文件等)。
+AMO/TOM 客户端库建立连接后,Tabular Editor 将请求用户希望连接到的特定 Analysis Services 数据库或 Power BI 数据集的完整 Tabular Object Model (TOM) 元数据。然后,AMO/TOM 客户端库以编程方式将这些元数据提供给客户端应用程序(Tabular Editor),使应用程序能够应用元数据更改,例如重命名对象、添加描述、修改 DAX 表达式等。此外,AMO/TOM 客户端库还提供了将 TOM 元数据序列化为基于 JSON 的格式的方法。Tabular Editor 使用此技术允许用户将模型元数据保存为本地 JSON 文件,以便对数据模型结构进行版本控制。**注意:以这种方式生成的 JSON 文件不包含实际数据记录。该文件仅包含模型元数据,即有关模型结构的表、列、度量值、DAX 表达式等信息。**虽然模型元数据通常不被视为机密信息,但 Tabular Editor 用户有责任以必要的保密方式处理以这种方式生成的任何文件(即不与第三方共享文件等)。
-**除非用户明确发起相关操作,否则 Tabular Editor 不会收集、发布、共享、传输或以其他方式公开通过 AMO/TOM 客户端库获取的任何模型元数据**(例如,将模型元数据 JSON 文件保存到共享网络位置,或将模型元数据部署到另一个 Analysis Services 实例或 Power BI Workspace)。
+**除非用户明确发起相关操作,否则 Tabular Editor 不会收集、发布、共享、传输或以其他方式公开通过 AMO/TOM 客户端库获得的任何模型元数据**(例如,将模型元数据 JSON 文件保存到共享网络位置,或将模型元数据部署到另一个 Analysis Services 实例或 Power BI 工作区)。
### 模型数据内容
-下文中,“模型数据”指存储在 Analysis Services 数据库或 Power BI Dataset 中的实际数据记录。根据源数据库或 Dataset 的不同,模型数据很可能属于机密信息。
+在下文中,“模型数据”是指存储在 Analysis Services 数据库或 Power BI 数据集中的实际数据记录。根据源数据库或数据集的不同,模型数据很可能属于机密。
-由于用户必须在要连接的 Analysis Services 实例或 Power BI Workspace 中具有管理员权限,因此从定义上说,用户也能访问 Analysis Services 数据库或 Power BI Dataset 中的全部数据内容。 Tabular Editor 仅允许通过上述 AMO 客户端库检索数据。 Tabular Editor 3 提供了浏览和查询模型数据的功能。无论使用哪种技术访问数据,**Tabular Editor 都只会将检索到的数据存储在本地内存中。 Tabular Editor 不会收集、发布、共享、传输或以其他方式公开通过该工具获取的任何模型数据**。如果用户选择复制或导出通过 Tabular Editor 获取的查询结果,则有责任根据数据的保密级别妥善处理所复制或导出的数据。这与用户使用 Excel 或 Power BI 等客户端工具连接到 Analysis Services 数据库或 Power BI Dataset 并无不同;在这种情况下,用户同样可以选择复制查询结果。
+由于要求用户在其连接到的 Analysis Services 实例或 Power BI 工作区上具有管理员权限,因此,从定义上讲,用户也将有权访问 Analysis Services 数据库或 Power BI 数据集的所有数据内容。Tabular Editor 仅允许通过上述 AMO 客户端库检索数据。Tabular Editor 3 提供浏览和查询模型数据的功能。无论使用哪种技术访问数据,**Tabular Editor 都只将检索到的数据存储在本地内存中。Tabular Editor不会收集、发布、共享、传输或以其他方式公开通过该工具获得的任何模型数据**。如果用户选择复制或导出通过 Tabular Editor 获取的查询结果,则有责任根据数据的机密性处理复制或导出的数据。这与用户使用 Excel 或 Power BI 等客户端工具连接到 Analysis Services 数据库或 Power BI 数据集的情况并无不同,在这种情况下,他们也可以选择复制查询结果。
### AI 助手
-Tabular Editor 3 内置 AI 助手,用于基于聊天的语义模型开发。从 3.27.0 起,它已成为默认安装的一部分;在此之前,需要手动选择安装。如果未安装该组件,计算机上就不会存在任何与 AI 相关的代码,本节所述的行为也都不适用。
+Tabular Editor 3 包含一个用于基于聊天的语义模型开发的 AI 助手。从 3.27.0 版本开始,它是默认安装的一部分;在此之前,必须有意识地选择它。如果未安装该组件,则计算机上不存在任何与 AI 相关的代码,本节中描述的任何行为均不适用。
-AI 助手采用 **自备密钥** 模式。您需要提供来自受支持的 AI 提供商的 API 密钥(OpenAI、Anthropic、Azure OpenAI 或任何与 OpenAI 兼容的端点)。不包含内置 API 密钥,Tabular Editor 也不提供或中转任何 AI 服务。
+AI 助手使用**自带密钥**模型。您需要提供来自受支持的 AI 提供商(OpenAI、Anthropic、Azure OpenAI 或任何 OpenAI 兼容端点)的 API 密钥。不包含内置API密钥,Tabular Editor不提供或中介任何AI服务。
-**数据流。** AI 助手与 AI 提供商之间的所有通信都在客户端计算机与提供商 API 之间直接进行。不会有任何数据经过 Tabular Editor 的服务器。发送哪些内容取决于您的请求,并受五类权限资源的限制;每类资源对应一个访问级别:
+**数据流。** AI 助手与 AI 提供商之间的所有通信都直接从客户端电脑到提供商 API 进行。没有数据通过 Tabular Editor 服务器。发送的内容取决于您的请求,并受五种权限资源的约束,每种资源都具有一个访问级别:
-| 资源 | 涵盖内容 | 级别 | 默认值 |
-| ------- | -------------------------------------------------------------- | ------------ | --- |
-| 模型元数据 | 表、列和度量值名称、表达式、说明等。“读取”还包括 VertiPaq分析器统计信息 | 拒绝 / 读取 / 写入 | 读取 |
-| 模型数据 | 模型中的数据值,例如 DAX 查询结果。需要实时连接 | 拒绝 / 读取 | 拒绝 |
-| 最佳实践分析器 | “读取”用于列出规则并运行分析;“写入”用于添加或修改规则 | 拒绝 / 读取 / 写入 | 读取 |
-| 文档 | 你当前打开的 C# Script 脚本编辑器和 DAX 查询编辑器。“读取”用于查看其内容;要创建或修改它们,则需要“写入” | 拒绝 / 读取 / 写入 | 写入 |
-| 宏 | 你的宏库 | 拒绝 / 读取 / 写入 | 写入 |
+| 资源 | 涵盖内容 | 级别 | 默认 |
+| -- | -- | -- | -- |
+| 模型元数据 | 表、列和度量值名称、表达式、描述等。“读”还涵盖 VertiPaq 分析器统计数据 | 拒绝/读/写 | 读 |
+| 模型数据 | 来自您模型的数据值,例如 DAX 查询结果。需要实时连接 | 拒绝/读取 | 拒绝 |
+| Best Practice Analyzer | “读”可读取规则列表并运行分析;“写”可添加或修改规则 | 拒绝/读/写 | 读 |
+| 文档 | 您打开的 C# Script 和 DAX 查询编辑器。“读”是指它们的内容;“写”是指创建或修改它们所需的权限 | 拒绝/读/写 | 写 |
+| 宏 | 您的宏库 | 拒绝/读/写 | 写 |
-写入权限包含读取权限。默认拒绝访问模型数据,因为元数据描述的是模型本身,而数据值才是模型的内容。
+“写”涵盖“读”。默认情况下,模型数据被拒绝,因为元数据描述的是一个模型,其中数据值是模型的内容。
-**权限管理。** 这些授权是持续生效的设置,而不是按每次请求弹出的提示。你可以在 **工具 > 偏好 > AI 功能 > 权限** 中查看和更改这些设置,也可以在 **工具 > MCP 服务器...** 对话框中进行编辑;两处修改的是同一项设置。当聊天需要的权限超出当前授权范围时,会在当时显示权限卡片,你可以选择仅对本轮、本次会话、当前模型或始终允许。**始终允许** 会提高持续授权级别,但不会降低已有授权。全局授权存储在本地 Preferences.json 偏好文件中;针对单个模型授予的授权存储在该模型的用户选项 (.tmuo) 文件中,并且仅对该聊天生效。将某个资源重新设为 **拒绝** 后,聊天会再次询问。
+**权限管理。**授权是永久性设置,而不是针对每次请求的提示。请在**工具 > 首选项 > AI 功能 > 权限**下或在**工具 > MCP 服务器……**对话框中查看并更改这些权限,这两个位置编辑的是同一条记录。如果聊天需要某项权限而授权未涵盖,则此时会显示权限卡,您可以选择为该轮、该会话、当前模型或始终授予权限。**始终允许**会提升常设授权,但绝不会降低授权。全局授权存储在本地 Preferences.json 文件中;针对单个模型授予的授权存储在该模型的用户选项 (.tmuo) 文件中,且仅适用于聊天。将资源设置回**拒绝**会导致聊天再次询问。
-**管理员上限。** 在企业版、咨询版和试用版中,管理员可以通过 [策略](xref:policies) 为每项资源分别设置上限,并分别应用于聊天和 MCP 服务器;MCP 的上限只能更低。上限优先于任何授权,包括用户已经给出的授权,并且对应选项会显示为只读。这些策略采用默认拒绝机制:如果某台机器上存在任何企业级策略值,但该机器并未获得相应许可,AI 助手和 MCP 服务器将拒绝启动,而不是忽略该策略。
+**管理员上限。**在 Enterprise、Consultancy 和 Trial 版本中,管理员可以通过[策略](xref:policies)为每项资源设置上限,分别针对聊天和 MCP 服务器,且 MCP 的上限只能更低。上限优先于所有授权,包括用户已经授予的授权,并且相应的选项显示为只读。这些策略采用“故障关闭”机制:如果在未获得相应许可证的计算机上存在任何企业级策略值,AI 助手和 MCP 服务器将拒绝启动,而非忽略该策略。
-**审计记录。** Tabular Editor 3 会在本地记录 AI Assistant 和 MCP 服务器执行过的操作:请求了哪些权限以及这些请求如何得到回应;调用了哪些工具,以及每个工具是成功、失败还是被拒绝;以及 AI Assistant 或代理运行或提交运行的任何 C# Script 的完整文本,包括在运行时失败或被拒绝的脚本。提示词、回复和数据值不会被记录;编译失败的脚本,以及写入文档供你运行的脚本文本,也不会被记录。每日文件会保留 30 天,在 **工具 > 偏好 > AI 功能** 下选择 **打开审计文件夹** 可打开它们所在的文件夹。管理员可以重定向存储位置并更改保留期限。
+**审计记录。** Tabular Editor 3 会记录 AI 助手和 MCP 服务器的操作的本地记录:请求了哪些权限以及如何回应这些请求,运行了哪些工具以及每个工具是成功、失败还是被拒绝,以及 AI 助手或代理运行或提交运行的任何 C# 脚本的完整文本,包括运行时失败或被拒绝的脚本。提示、回复和数据值均不会被记录,无法编译的脚本或写入文档供用户运行的脚本文本也不会被记录。每日文件将保留 30 天,可通过 **工具 > 首选项 > AI 功能** 下的 **打开审计文件夹** 打开这些文件。管理员可以重定向位置并更改保留期。
-**API 密钥存储。** API 密钥会以加密方式存储在本地计算机的偏好文件 Preferences.json 中。如果 AI 模块未加载(例如在安装期间被排除,或因策略而被禁用),之前存储的 API 密钥配置会自动清除。
+**API 密钥存储。** API 密钥以加密形式存储在本地计算机的 Preferences.json 文件中。如果未加载 AI 模块(例如,因为在安装过程中被排除在外或因策略而被禁用),则之前存储的所有 API 密钥配置都会自动清除。
-**对话存储。** 对话会存储在客户端本地的 `%LocalAppData%\TabularEditor3\AI\Conversations\` 中。不会将任何对话数据发送到 Tabular Editor 服务器。
+**对话存储。**对话存储在客户端计算机的“%LocalAppData%\TabularEditor3\AI\Conversations\”中。不会将任何对话数据发送到 Tabular Editor 服务器。
-**禁用 AI 助手。** 你可以在安装时排除 AI 功能组件,在 **工具 > 偏好 > AI 功能 > AI 助手** 下清除提供程序,或通过 Windows 注册表强制实施 [策略](xref:policies):`DisableAi` 会关闭包括 MCP 服务器在内的所有 AI 功能,并清除已存储的提供程序配置;`DisableAiChat` 则只关闭聊天功能,并让 MCP 服务器继续运行。
+**禁用 AI 助手。**您可以在安装过程中排除 AI 功能组件,在**工具 > 首选项 > AI 功能 > AI 助手**下清除提供商,或通过 Windows 注册表强制执行[策略](xref:policies):“DisableAi”将关闭包括 MCP 服务器在内的所有 AI 功能,并清除已存储的提供商配置;而“DisableAiChat”仅关闭聊天功能,并使 MCP 服务器继续运行。
-**渗透测试。** 已对 AI 助手进行了单独的渗透测试。该 Report 可在我们的 [信任中心](https://trust.tabulareditor.com/) 查看。
+**渗透测试。**已对 AI 助手进行了单独的渗透测试。该报告可在我们的[信任中心](https://trust.tabulareditor.com/)查阅。
### MCP 服务器
-Tabular Editor 3 可以充当 MCP(Model Context Protocol)服务器,使在同一台计算机上运行的 AI 代理能够处理你当前打开的模型。关于该功能本身,可参见 @mcp-server。
+Tabular Editor 3 可以充当 MCP(模型上下文协议)服务器,以便在同一台计算机上运行的 AI 代理可以在您打开的模型上工作。有关该功能本身的信息,请参阅 @mcp-server。
-**网络暴露。** 该服务器是一个显式绑定到 `127.0.0.1` 的 HTTP 侦听器,默认使用端口 42100。无法从另一台计算机访问它。为防范 DNS 重绑定,浏览器发出的、携带非本地 `Origin` 标头的请求会被拒绝。该服务器仅在你启动后才会运行;如果你选择随应用启动,也可以在应用启动时自动运行。
+**网络暴露。**该服务器是一个 HTTP 侦听器,显式绑定到“127.0.0.1”,默认情况下位于端口 42100。无法从其他计算机访问。为防范 DNS 重新绑定,系统会拒绝带有非本地“Origin”标头的浏览器请求。服务器仅在您启动后才会运行,或者如果您有此要求,则会在应用程序启动时运行。
-**身份验证。** 回环绑定是默认的安全边界,因此服务器默认会在无需凭据的情况下接受本地连接。但在一个同时有多名用户登录的主机上(例如远程桌面或 Citrix 服务器),这还不够:该机器上的任何会话都可以访问 `127.0.0.1`。未启用访问令牌时,该机器上的任何进程都可以在无凭据的情况下连接。在 **工具 > 偏好 > AI 功能 > MCP 服务器** 下启用 **要求访问令牌**,客户端就必须提供 Bearer 令牌;该令牌会以加密形式存储在本地的 Preferences.json 文件中。管理员可以通过 `RequireMcpAccessToken` [策略](xref:policies) 强制实施此要求。
+**身份验证。**环回绑定是默认边界,因此服务器开箱即用即可接受无需凭据的本地连接。在有数人同时登录的主机上(例如远程桌面或 Citrix 服务器),这并不够:该机器上的任何会话都能访问“127.0.0.1”。在令牌关闭时,计算机上的任何进程都可以在没有凭据的情况下进行连接。在**工具 > 首选项 > AI 功能 > MCP 服务器**下启用**需要访问令牌**,客户端必须出示持有者令牌,该令牌以加密形式存储在本地 Preferences.json 文件中。管理员可以使用“RequireMcpAccessToken”[策略](xref:policies)强制执行此操作。
-**数据流。** Tabular Editor 不会为此功能联系任何 AI 提供程序,也不会为其保存任何 API 密钥。只有代理会与提供程序通信,并使用其自身的配置和订阅。代理可从模型中读取的内容,受与 AI 助手相同的五项权限授予所限制;这些授予会在服务器启动时进行快照保存,任何不在授予范围内的工具都不会提供给代理。默认禁止访问模型数据,因此除非你明确授予该权限,否则任何 DAX 查询结果都不会离开模型。在模型定义中输入的值,例如 `DATATABLE` 表达式或“输入数据”表,属于模型元数据,并受“模型元数据”授权涵盖。
+**数据流。** Tabular Editor不会就此功能联系 AI 提供商,也不会持有其 API 密钥。代理是唯一一个根据自己的配置和订阅与提供商通信的一方。代理可以从模型中读取的内容受制于与管控 AI 助手的相同的五项权限授予,这些权限授予在服务器启动时进行快照,并且任何未被权限授予涵盖的工具绝不会提供给代理。默认情况下,模型数据会被拒绝,因此除非您明确授予权限,否则任何 DAX 查询结果都不会离开模型。在模型定义中输入的值(例如“DATATABLE”表达式或“输入数据表”)是模型元数据,受模型元数据权限的约束。
-**对模型的更改。** 代理只能通过 C# Script 脚本引擎更改模型;更改会以原子方式执行,并作为单个撤销步骤记录,而且仅在模型元数据权限被授予“写入”时才允许这样做。代理永远无法执行原始 TMSL 和 XMLA;此外,任何会访问模型之外内容的脚本也不会为代理执行。
+**对模型的更改。**代理仅通过 C# 脚本引擎以原子方式并作为单个撤消步骤更改模型,并且仅在具有“写入”权限的模型元数据授权的情况下才能更改。代理永远无法执行原始 TMSL 和 XMLA,并且永远不会为其执行超出模型范围的脚本。
-**审计记录。** 权限决策、工具调用,以及代理运行或提交运行的任何 C# Script 的完整文本,都会写入本地审计日志中。提示词、回复和数据值不会被记录。
+**审计记录。**权限决策、工具调用以及代理运行或提交运行的任何 C# 脚本的完整文本都会写入本地审计日志。提示、回复和数据值不会被记录。
-**禁用 MCP 服务器。** 在 **工具 > 偏好 > AI 功能 > MCP 服务器** 中取消勾选 **启用 MCP 服务器**,或强制执行 `DisableMcpServer` 或 `DisableAi` [策略](xref:policies)。该服务器属于 AI 功能组件,因此在安装时排除该组件也会一并移除它。
+**禁用 MCP 服务器。**在**工具 > 首选项 > AI 功能 > MCP 服务器**下取消选中**启用 MCP 服务器**,或强制执行“DisableMcpServer”或“DisableAi”[策略](xref:policies)。服务器是 AI 功能组件的一部分,因此在安装时排除该组件也会将其一并移除。
### Web 请求
-Tabular Editor 仅会在以下情况下向在线资源(Web URL)发起请求:
+Tabular Editor 仅在以下情况下才会向在线资源(网页网址)发起请求:
-- **许可证激活\*.** 首次启动 Tabular Editor 3 时,以及之后的定期时间点,工具可能会向我们的许可服务发起请求。该请求包含以下经过加密的信息:用户输入的许可证密钥、用户的电子邮件地址(如果提供)、本地计算机名称,以及用于标识当前安装的单向编码哈希值。此请求不会传输其他数据。此请求的目的是激活并验证该安装所使用的许可证密钥、实施试用限制,以及让用户能够通过我们的许可服务管理其 Tabular Editor 3 安装。
-- **升级检查\*.** 每次启动 Tabular Editor 3 时,它可能会向我们的应用服务发起请求,以确定是否有可用的新版 Tabular Editor 3。此请求不包含任何数据。
-- **使用情况遥测\*.** 默认情况下,Tabular Editor 3 会在用户与该工具交互时收集并传输匿名使用数据。这些数据包括用户与哪些 UI 对象交互,以及每次交互的时间信息。其中还包含有关通过该工具编辑的 Tabular Data model 的高级信息。这些信息仅涉及兼容级别、模式、表数量、服务器类型(Analysis Services、Power BI 或 Power BI Desktop)等高级属性。**不会通过这种方式收集任何可识别个人身份的数据**;我们也不会收集 Tabular Object Model 本身中任何对象名称或 DAX 表达式的信息。用户可随时选择停止向我们发送遥测数据。
-- **错误 Report\*.** 当发生意外错误时,我们会传输堆栈跟踪和(已匿名化的)错误信息,并附带你提供的可选说明。如果用户选择不发送遥测数据,错误 Report 也不会发送。
-- **使用 DAX 格式化器。**(仅限 Tabular Editor 2.x)你可以在 Tabular Editor 中点击按钮来格式化 DAX 表达式。在这种情况下,会将 DAX 表达式(且仅此一项)发送到 www.daxformatter.com Web 服务。用户首次单击此按钮时,会显示一条明确的警告信息,要求其确认此操作。 Tabular Editor 3 在格式化 DAX 代码时不会发起 Web 请求。
-- **DAX优化器**。如果用户拥有 [Tabular Tools 账户](https://tabulartools.com),并订阅了 [DAX优化器](https://daxoptimizer.com),即可直接在 Tabular Editor 3 中浏览自己的 DAX优化器 Workspace、查看问题和建议,并上传新的 VPAX 文件。 VPAX 文件包含模型元数据和统计信息,但不包含实际的模型 _数据_。 Tabular Editor 3 中的 DAX优化器集成功能会向以下一个或多个端点发送请求(具体取决于创建 Tabular Tools 账户时指定的身份验证类型和区域)。
如需了解更多信息,请参阅 [DAX优化器文档](https://docs.daxoptimizer.com/legal/data-processing)。
使用的端点:
+- **许可证激活\*\。** Tabular Editor 3 首次启动时,以及此后的定期时间间隔内,该工具可能会向我们的许可服务发起请求。此请求包含有关用户输入的许可证密钥、用户电子邮件地址(如果提供)、本地计算机名称以及标识当前安装的单向编码哈希的加密信息。此请求中不会传输其他数据。此请求的目的是激活和验证安装所使用的许可证密钥,实施试用限制,以及允许用户通过我们的许可服务管理其 Tabular Editor 3 的安装。
+- **升级检查\*\。**每次启动 Tabular Editor 3 时,它都可能向我们的应用程序服务发出请求,以确定是否有更新版本的 Tabular Editor 3 可用。此请求不包含任何数据。
+- **使用遥测数据\*\。**默认情况下,Tabular Editor 3 会在用户与该工具交互时收集并传输匿名使用数据。这些数据包括有关用户与哪些 UI 对象进行交互以及每次交互的时间的信息。它还包含有关通过该工具编辑的表格数据模型的高级信息。这些信息仅与兼容性级别和模式、表数、服务器类型(Analysis Services、Power BI 或 Power BI Desktop)等高级属性相关。**我们不会以这种方式收集任何个人身份识别数据**,也不会收集有关 Tabular Object Model 本身中对象名称或 DAX 表达式的任何信息。用户可以随时选择退出向我们发送遥测数据。
+- **错误报告\*\。**当发生意外错误时,我们会传输堆栈跟踪和(匿名的)错误消息,以及用户提供的可选描述。如果用户选择不发送遥测数据,则也不会发送错误报告。
+- **使用 DAX 格式化程序。**(仅限 Tabular Editor 2.x)可以通过点击 Tabular Editor 中的按钮来格式化 DAX 表达式。在这种情况下,DAX 表达式(仅此而已)将发送到 www.daxformatter.com Web 服务。用户首次单击此按钮时,系统会显示一条明确的警告消息,要求他们确认自己的意图。Tabular Editor 3 在格式化 DAX 代码时不会执行 Web 请求。
+- **DAX Optimizer**。如果用户拥有具有 [DAX Optimizer](https://tabulartools.com) 订阅的 [Tabular Tools 帐户](https://daxoptimizer.com),他们将能够浏览其 DAX Optimizer 工作区、查看问题和建议,并直接从 Tabular Editor 3 中上传新的 VPAX 文件。VPAX 文件包含模型元数据和统计信息,但不包含实际的模型*数据*。Tabular Editor 3 中的 DAX Optimizer 集成功能会导致向以下一个或多个端点发出各种请求(具体取决于创建 Tabular Tools 账户时指定的身份验证类型和区域)。
+ 有关更多信息,请参阅[DAX Optimizer 文档](https://docs.daxoptimizer.com/legal/data-processing)。
+ 使用的端点:
- https://account.tabulartools.com
- https://licensing.api.daxoptimizer.com/api
- https://australiaeast.api.daxoptimizer.com/api
- https://eastus.api.daxoptimizer.com/api
- https://westeurope.api.daxoptimizer.com/api
-- **AI 助手。** 当 AI 助手已完成配置并在使用时,Tabular Editor 3 会将请求直接发送到所配置的 AI 提供商 API。具体端点取决于所选提供商(例如:OpenAI 使用 `https://api.openai.com`,Anthropic 使用 `https://api.anthropic.com`;Azure OpenAI 和自定义提供商则使用用户指定的端点)。这些请求中仅包含权限授予范围内的数据。有关这些资源及其默认值,请查看上文的 [AI 助手](#ai-assistant) 部分。
-- **AI 知识库更新。** AI 助手搜索的知识库是随 AI 功能组件一同提供的本地数据库。 Tabular Editor 3 会检查是否有新版本,并从 `https://cdn.tabulareditor.com` 下载。该请求不会携带任何关于用户或其模型的数据。
-- **AI 模型目录。** 当你打开 OpenAI 或 Anthropic 提供商的模型列表时,Tabular Editor 3 会从 `https://api.tabulareditor.com/AiModels` 下载可用模型列表,并将其缓存在 `%LocalAppData%\TabularEditor3\AiModels.json` 中 24 小时。该请求是匿名的,不会携带关于你、你的 API 密钥或你的模型的任何数据。 `DisableUpdates` 策略可将其关闭。
-- **MCP 服务器。** MCP 服务器不会发起任何出站请求。它只接受来自回环接口的连接,而与其连接的代理会按照其自身配置与 AI 提供程序通信。请查看上文的 [MCP 服务器](#mcp-server) 部分。
-- **导入最佳实践规则。** Tabular Editor 提供一项功能,让你可以指定一个 URL,从中获取以 JSON 格式提供的最佳实践规则列表。此类请求只会从该 URL 下载 JSON 数据,不会向该 URL 传输任何数据。
-- **使用 C# Script。** Tabular Editor 允许用户编写并执行用 C# 编写的代码,以实现自动化。此类脚本可利用 C# 语言功能和 .NET 运行时连接到联机资源。用户始终有责任确保所执行的代码不会导致任何非预期的数据共享。对于因使用 C# Script 功能而造成的任何损害、损失或泄露,Tabular Editor ApS 概不负责。如果没有用户的明确操作,Tabular Editor 绝不会执行 C# Script。
-
-\***我们通过许可证激活服务、使用情况遥测或错误 Report 获得的任何信息,都会予以保密。我们绝不会以任何形式共享、发布或分发所收集的数据。**
-
-**防火墙允许列表 / 接受列表**
-如需允许上述 Web 请求的流量,请将以下地址加入允许列表:
-
-- 许可证激活 / 升级检查 / AI 模型目录:**https://api.tabulareditor.com**
-- 使用情况遥测 / 错误 Report:**https://\*.in.applicationinsights.azure.com**
-- DAX Formatter(仅 Tabular Editor 2.x):**https://www.daxformatter.com**
-- 导入最佳实践规则 / C# Script:视具体情况而定
-- DAX优化器:端点见上文列表。
-- AI 助手:取决于所配置的提供商(例如 \*\*https://api.openai.com\*\*、\*\*https://api.anthropic.com\*\*,或你指定的 Azure OpenAI / 自定义端点)
+- **AI 助手。**配置并使用 AI 助手时,Tabular Editor 3 会直接向配置的 AI 提供商 API 发送请求。端点取决于所选的提供商(例如,OpenAI 为“https://api.openai.com”,Anthropic 为“https://api.anthropic.com”,Azure OpenAI 和自定义提供商为用户指定的端点)。这些请求中仅包含权限授予所涵盖的数据。有关资源及其默认值,请参阅上文的[AI 助手](#ai-assistant)部分。
+- **AI 知识库更新。** AI 助手搜索的知识库是随 AI 功能组件一起提供的本地数据库。Tabular Editor 3 会检查是否有更新的副本,并从“https://cdn.tabulareditor.com”下载。该请求不包含有关您或您的模型的数据。
+- **AI 模型目录。**当用户打开 OpenAI 或 Anthropic 提供程序的模型列表时,Tabular Editor 3 会从“https://api.tabulareditor.com/AiModels”下载可用模型列表,并将其缓存到“%LocalAppData%\TabularEditor3\AiModels.json”中 24 小时。该请求是匿名的,不包含有关您、您的 API 密钥或您的模型的数据。“DisableUpdates”策略会将其关闭。
+- **MCP 服务器。** MCP 服务器不发出出站请求。它仅接受环回接口上的连接,与之连接的代理根据其自身的配置与 AI 提供商进行通信。请参阅上方的[MCP 服务器](#mcp-server)部分。
+- **导入最佳实践规则。** Tabular Editor 有一项功能,允许用户指定一个 URL,从中以基于 JSON 的格式检索最佳实践规则列表。此类型的请求仅从 URL 下载 JSON 数据,不会向 URL 传输任何数据。
+- **使用 C# 脚本。** Tabular Editor 允许用户编写和执行用 C# 编写的代码,以实现自动化。此类脚本可能使用 C# 语言功能和 .NET 运行时连接到在线资源。用户始终有责任确保所执行的代码不会导致任何意外的数据共享。对于因使用 C# 脚本功能而导致的任何损害、损失或泄露,Tabular Editor ApS 概不承担责任。如果没有用户的明确操作,Tabular Editor 绝不会执行 C# 脚本。
+
+\***我们通过许可证激活服务、使用情况遥测数据或错误报告获得的任何信息均将予以保密。我们不会以任何方式、形式或形式分享、发布或分发所收集的数据。**
+
+**防火墙允许列表/接受列表**
+要允许上述 Web 请求的流量,您必须将以下地址列入白名单:
+- 许可证激活/升级检查/AI 模型目录:**https://api.tabulareditor.com**
+- 使用情况遥测/错误报告:**https://*.in.applicationinsights.azure.com**
+- DAX Formatter(仅限 Tabular Editor 2.x):**https://www.daxformatter.com**
+- 导入最佳做法规则/C# 脚本:取决于上下文
+- DAX优化器:上述端点。
+- AI 助手:取决于所配置的提供商(例如 **https://api.openai.com**、**https://api.anthropic.com** 或用户指定的 Azure OpenAI/自定义端点)
- AI 知识库更新:**https://cdn.tabulareditor.com**
-- MCP 服务器:无。它监听在 **127.0.0.1**,且不会发起任何出站请求
+- MCP 服务器:无。它在 **127.0.0.1** 上侦听,不发出任何出站请求。
> [!NOTE]
-> 系统管理员可能会强制执行某些[策略](xref:policies),用来禁用上面列表中的部分或全部功能。
+> 系统管理员可能会强制执行某些[策略](xref:policies),这些策略可用于禁用上述列表中显示的部分或全部功能。
## 应用程序安全
-Tabular Editor 安装在 Windows 电脑上时不需要任何提升权限,也不会访问这台电脑上的任何受限资源。不过有一个例外:如果使用 Tabular Editor 安装程序文件 (.msi),该工具所需的可执行文件和支持文件默认会复制到 `Program Files` 文件夹,这通常需要提升权限。 Tabular Editor 的二进制文件和安装程序文件均已使用颁发给 Tabular Editor ApS 的代码签名证书进行签名,这能保证代码未被任何第三方篡改。
+Tabular Editor 在其安装所在的 Windows 计算机上不需要任何提升的权限,也不会访问该计算机上的任何受限资源。此规则的一个例外是,如果使用 Tabular Editor 安装程序文件 (.msi),则该工具所需的可执行文件和支持文件默认情况下会复制到“Program Files”文件夹,该文件夹通常需要提升的权限。Tabular Editor 二进制文件和安装程序文件均已使用签发给 Tabular Editor ApS 的代码签名证书进行签名,这可以保证代码未被任何第三方篡改。
-应用程序运行时,所有对外部资源的访问都通过 AMO/TOM 客户端库或上面提到的 Web 请求完成。
+当应用程序运行时,对外部资源的所有访问均通过 AMO/TOM 客户端库或上述 Web 请求进行。
-C# Script 功能允许 Tabular Editor 在 .NET 运行时中执行任意 C# 代码。此类代码仅会在用户明确请求时才会编译和执行。 C# Script 也可以保存为“宏”,这样用户就能更轻松地管理和执行多个不同的脚本。代码会存储在用户自己的 `%localappdata%` 文件夹中,从而确保只有该用户本人或本机管理员才能访问这些脚本。用户始终有责任确保所执行的代码不会产生任何意外的副作用。在任何情况下,Tabular Editor ApS 均不对因使用 C# Script 或自定义操作/宏功能而造成的任何损害、损失或泄漏承担责任。
+C# 脚本功能允许 Tabular Editor 在 .NET 运行时中执行任意 C# 代码。此类代码仅在用户明确要求时才会编译和执行。C# 脚本还可以保存为“宏”,这使用户能够更轻松地管理和执行多个不同的脚本。代码存储在用户自己的“%localappdata%”文件夹中,确保只有用户本人或本地计算机管理员才能访问脚本。用户始终有责任确保所执行的代码不会造成任何意外的副作用。在任何情况下,Tabular Editor ApS 均不对因使用 C# 脚本或自定义操作/宏功能而导致的任何损害、损失或泄露承担责任。
-不希望由单个用户自行决定此事的组织,可以进行集中管控。 `DisableCSharpScripts` 和 `DisableMacros` [策略](xref:policies)会在所有版本中将这些功能(C# 脚本和宏)完全关闭。在 Tabular Editor 3 企业版中,`BlockUnsafeScripts` 会保留脚本功能,但只允许在语义模型范围内运行的脚本和宏:任何读取或写入文件、访问网络、启动其他程序或加载外部代码的操作,都会在运行前被拒绝,无论脚本来自何处——脚本文档、Best Practice Analyzer、宏、AI Assistant、MCP 服务器或命令行。参见[管理员策略](xref:csharp-scripts#administrator-policies)。
+不想将此事项留给个人用户处理的组织可以集中管理。“DisableCSharpScripts”和“DisableMacros”[策略](xref:policies)会在所有版本中完全禁用这些功能。使用 Tabular Editor 3 企业版,“BlockUnsafeScripts”使脚本功能保持可用,但仅允许在语义模型范围内的脚本和宏:任何读取或写入文件、访问网络、启动其他程序或加载外部代码的操作,无论脚本来自何处(脚本文档、Best Practice Analyzer、宏、AI 助手、MCP 服务器或命令行),都会在其运行之前被拒绝。请参阅[管理员策略](xref:csharp-scripts#administrator-policies)。
diff --git a/localizedContent/zh/content/security/toc.md b/localizedContent/zh/content/security/toc.md
index 57d01411b..3ed671aa1 100644
--- a/localizedContent/zh/content/security/toc.md
+++ b/localizedContent/zh/content/security/toc.md
@@ -1,11 +1,8 @@
# @security-privacy
+# @ai-compliance
# 法律
-
-## @te3-eula
-
-## @third-party-notices
-
+## @terms
+## @第三方声明
## @privacy-policy
-
## @gdpr-delete
\ No newline at end of file
diff --git a/localizedContent/zh/content/troubleshooting/toc.md b/localizedContent/zh/content/troubleshooting/toc.md
index c4e7b7572..82e5a055e 100644
--- a/localizedContent/zh/content/troubleshooting/toc.md
+++ b/localizedContent/zh/content/troubleshooting/toc.md
@@ -2,8 +2,16 @@
# @proxy-settings
-# @locale-not-supported
+# @不支持的区域设置
# @calendar-blank-value
-# @direct-lake-entity-updates-reverting
\ No newline at end of file
+# @direct-lake-entity-updates-reverting
+
+# @azure-openai-连接-错误
+
+# @复合模型-度量值-格式化
+
+# @databricks-列-注释-长度
+
+# @databricks-刷新-空-目录
diff --git a/localizedContent/zh/content/whats-new/3-18-0.html b/localizedContent/zh/content/whats-new/3-18-0.html
index 788bf22b6..24a7bcfb4 100644
--- a/localizedContent/zh/content/whats-new/3-18-0.html
+++ b/localizedContent/zh/content/whats-new/3-18-0.html
@@ -4,7 +4,7 @@ Tabular Editor 3.18.0
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/zh/content/whats-new/3-18-1.html b/localizedContent/zh/content/whats-new/3-18-1.html
index 4a4213f22..db3a3be62 100644
--- a/localizedContent/zh/content/whats-new/3-18-1.html
+++ b/localizedContent/zh/content/whats-new/3-18-1.html
@@ -4,7 +4,7 @@ Tabular Editor 3.18.1
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/zh/content/whats-new/3-18-2.html b/localizedContent/zh/content/whats-new/3-18-2.html
index cd2ad7a73..a37721ec0 100644
--- a/localizedContent/zh/content/whats-new/3-18-2.html
+++ b/localizedContent/zh/content/whats-new/3-18-2.html
@@ -4,7 +4,7 @@ Tabular Editor 3.18.2
DAX Optimizer integration is GA and includes 4 free runs per day for Tabular Editor 3 Enterprise Edition customers
One-click DAX improvements and refactorings with the new code actions feature
Explicit authentication against XMLA endpoints, using Microsoft Entra MFA
- Customize how Auto-exists work with the new model property Value Filter behavior
+ Customize how Auto-exists work with the new model property Value Filter behavior
Set your own number of recent items in the preferences - default is 10
Fixed several bugs including ensuring DAX Debugger support for FormatString measures in DAX Queries
And more...
diff --git a/localizedContent/zh/content/whats-new/3-26-0.html b/localizedContent/zh/content/whats-new/3-26-0.html
new file mode 100644
index 000000000..a99676ef7
--- /dev/null
+++ b/localizedContent/zh/content/whats-new/3-26-0.html
@@ -0,0 +1,12 @@
+Tabular Editor 3.26.0
+Release blog: March 2026 (v. 3.26.0, release notes)
+
+ - AI Assistant (Public Preview): A built-in assistant for common semantic model development tasks -- explore your model, write DAX queries, generate C# scripts, run BPA analysis and more. Bring your own API key and privacy guards. Read the announcement.
+ - Run script with preview: A new option for C# scripts that snapshots your model before execution and shows a side-by-side diff of all changes, letting you review and accept or revert them.
+ - New built-in BPA rule: Detects User-Defined Functions without compound names (separators), preventing future naming conflicts with built-in DAX functions.
+ - Expanded C# scripting accessors: Complete singular and plural
Selected.* accessor support for all object types, including roles, KPIs, calendars, calculation items, functions and more.
+ - Workspace database improvements: Tabular Editor now detects changes to incremental refresh Source Expression or Polling Expression and prompts before overwriting workspace partitions.
+ - TOM Explorer table groups toggle: New toolbar button to show or hide table groups directly from the TOM Explorer.
+ - New DAX function support: TABLEOF, NAMEOF (table references), DATESINPERIOD EndBehavior parameter.
+ - Various bugfixes including Calendar Editor, DAX Debugger Call Tree, M Editor comment highlighting and C# script editor autocomplete. See release notes for details.
+
diff --git a/localizedContent/zh/content/whats-new/3-26-1.html b/localizedContent/zh/content/whats-new/3-26-1.html
new file mode 100644
index 000000000..564fd0372
--- /dev/null
+++ b/localizedContent/zh/content/whats-new/3-26-1.html
@@ -0,0 +1,12 @@
+Tabular Editor 3.26.1
+Release blog: March 2026 (v. 3.26.1, release notes)
+
+ - AI Assistant (Public Preview): A built-in assistant for common semantic model development tasks -- explore your model, write DAX queries, generate C# scripts, run BPA analysis and more. Bring your own API key and privacy guards. Read the announcement.
+ - Run script with preview: A new option for C# scripts that snapshots your model before execution and shows a side-by-side diff of all changes, letting you review and accept or revert them.
+ - New built-in BPA rule: Detects User-Defined Functions without compound names (separators), preventing future naming conflicts with built-in DAX functions.
+ - Expanded C# scripting accessors: Complete singular and plural
Selected.* accessor support for all object types, including roles, KPIs, calendars, calculation items, functions and more.
+ - Workspace database improvements: Tabular Editor now detects changes to incremental refresh Source Expression or Polling Expression and prompts before overwriting workspace partitions.
+ - TOM Explorer table groups toggle: New toolbar button to show or hide table groups directly from the TOM Explorer.
+ - New DAX function support: TABLEOF, NAMEOF (table references), DATESINPERIOD EndBehavior parameter.
+ - Various bugfixes including Calendar Editor, DAX Debugger Call Tree, M Editor comment highlighting and C# script editor autocomplete. See release notes for details.
+
diff --git a/localizedContent/zh/content/whats-new/3-26-2.html b/localizedContent/zh/content/whats-new/3-26-2.html
new file mode 100644
index 000000000..5f8f18ae2
--- /dev/null
+++ b/localizedContent/zh/content/whats-new/3-26-2.html
@@ -0,0 +1,11 @@
+Tabular Editor 3.26.2
+Release blog: June 2026 (v. 3.26.2, release notes)
+
+ - DAX UDFs are generally available: DAX user-defined functions are now GA. Tabular Editor 3.26.2 supports their syntax and metadata for models at compatibility level 1702 or higher, so you can package logic once and reuse it in measures, calculated columns, visual calculations, and other functions. Learn more.
+ - Optional parameters for DAX UDFs: A parameter can now carry a default expression, keeping the common case short while the edge cases stay configurable. The Semantic Analyzer also warns when an argument doesn't match a parameter's declared type.
+ - New NAMEOF parameters: Tabular Editor 3.26.2 understands the optional
component and escaped parameters introduced in Power BI Desktop's April 2026 update -- validating them as you type, suggesting calendars alongside tables, columns, and measures, and updating table references inside NAMEOF during formula fixup.
+ - Move tables to groups from the context menu: Right-click one or more selected tables in the TOM Explorer to move them into a Table Group or remove them. The new Move to group submenu lists your existing groups, plus a (New...) entry that creates a group from the selection and a (None) entry that clears the assignment.
+ - Semantic Bridge supports metric view YAML 1.1 (Enterprise): Importing a Databricks Metric View now carries more metadata -- display names, descriptions, and format strings -- into the generated semantic model, with improved SQL-to-DAX translation and support for snowflake schemas with nested joins.
+ - Also in the Tabular Editor CLI: these DAX language and semantic analysis improvements are available in te-cli, helping with scripting operations and giving agents better DAX results.
+ - Other fixes include more reliable Data Preview sorting and pagination across storage modes, several Semantic Analyzer corrections, and Update Table Schema working on mixed selections and Table Groups. See release notes for details.
+
diff --git a/localizedContent/zh/content/whats-new/3-26-3.html b/localizedContent/zh/content/whats-new/3-26-3.html
new file mode 100644
index 000000000..e0d8ca304
--- /dev/null
+++ b/localizedContent/zh/content/whats-new/3-26-3.html
@@ -0,0 +1,11 @@
+Tabular Editor 3.26.3
+Release blog: June 2026 (v. 3.26.3, release notes)
+
+ - DAX UDFs are generally available: DAX user-defined functions are now GA. Tabular Editor 3.26.2 and higher supports their syntax and metadata for models at compatibility level 1702 or higher, so you can package logic once and reuse it in measures, calculated columns, visual calculations, and other functions. Learn more.
+ - Optional parameters for DAX UDFs: A parameter can now carry a default expression, keeping the common case short while the edge cases stay configurable. The Semantic Analyzer also warns when an argument doesn't match a parameter's declared type.
+ - New NAMEOF parameters: Tabular Editor 3.26.2 and higher understands the optional
component and escaped parameters introduced in Power BI Desktop's April 2026 update -- validating them as you type, suggesting calendars alongside tables, columns, and measures, and updating table references inside NAMEOF during formula fixup.
+ - Move tables to groups from the context menu: Right-click one or more selected tables in the TOM Explorer to move them into a Table Group or remove them. The new Move to group submenu lists your existing groups, plus a (New...) entry that creates a group from the selection and a (None) entry that clears the assignment.
+ - Semantic Bridge supports metric view YAML 1.1 (Enterprise): Importing a Databricks Metric View now carries more metadata -- display names, descriptions, and format strings -- into the generated semantic model, with improved SQL-to-DAX translation and support for snowflake schemas with nested joins.
+ - Also in the Tabular Editor CLI: these DAX language and semantic analysis improvements are available in te-cli, helping with scripting operations and giving agents better DAX results.
+ - Other fixes include more reliable Data Preview sorting and pagination across storage modes, several Semantic Analyzer corrections, and Update Table Schema working on mixed selections and Table Groups. See release notes for details.
+
diff --git a/localizedContent/zh/content/whats-new/index.html b/localizedContent/zh/content/whats-new/index.html
index 08c7cd070..d5556b17d 100644
--- a/localizedContent/zh/content/whats-new/index.html
+++ b/localizedContent/zh/content/whats-new/index.html
@@ -46,14 +46,15 @@ Community
Ask questions, suggest enhancements and help other TE fans get their answers at our GitHub community:
Articles
Share your favorite blog or SoMe post with the community
Video
@@ -85,12 +86,9 @@ Tabular Editor Learn
Meet the team
The Tabular Editor Team will be at the following conferences:
- - SQL Konferenz in Hanau, Germany, March 2-4
- - Power BI Gebruikersdagen in Utrecht, March 5-7
- - FabCon US in Atlanta, March 16-20
- - SQLBits in Newport, Wales, April 22-25
- - SQLDay in Wroclaw, Poland, May 11-13
- - Data Point Prague in Prague, May 28-29
+ - Power BI Next Step in Odense, Denmark, September 7-8
+ - FabCon Barcelona in Barcelona, Spain, September 28 - October 1
+ - dataMinds Connect in Mechelen, Belgium, October 12-14
From ae021e547942e76e42817b7a989ced37a76c95e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20L=C3=B8nskov?=
Date: Mon, 19 Oct 2026 09:56:49 +0200
Subject: [PATCH 2/5] Fix C# doctest failure in Metric View rename how-to
(#435)
Restore plain output fence in Metric View rename how-to
csharp_doctest requires a run block with output=true to be followed
immediately by a plain (untagged) fence. #416 changed it to ```text,
which fails the Doctest C# code blocks job on main.
---
content/how-tos/semantic-bridge-rename-objects.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/how-tos/semantic-bridge-rename-objects.md b/content/how-tos/semantic-bridge-rename-objects.md
index d6cfc7cca..8903c5cdb 100644
--- a/content/how-tos/semantic-bridge-rename-objects.md
+++ b/content/how-tos/semantic-bridge-rename-objects.md
@@ -47,7 +47,7 @@ Output(sb.ToString());
**Output:**
-```text
+```
Fields:
product_name
product_category
From 86507791120e295c82cb977f7c1fde04d4efd3f9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 19 Oct 2026 07:57:06 +0000
Subject: [PATCH 3/5] New translations (Translated)
---
localizedContent/es/.translation-status.json | 6 +++---
localizedContent/zh/.translation-status.json | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/localizedContent/es/.translation-status.json b/localizedContent/es/.translation-status.json
index 367f355c2..c21529722 100644
--- a/localizedContent/es/.translation-status.json
+++ b/localizedContent/es/.translation-status.json
@@ -1882,9 +1882,9 @@
"sourceHash": "sha256:ae62dabee90d8104bbccee01dad64504de4a1f6525dd5f07103be4d563f4ae17"
},
"how-tos/semantic-bridge-rename-objects.md": {
- "error": "code fences 6 -> 3",
- "at": "2026-10-16T18:25:53Z",
- "sourceHash": "sha256:e6486910e9c85e0949fd793b6ef748e19d01c8f3441eda36e07b975682849c7f"
+ "error": "code fences 6 -> 4",
+ "at": "2026-10-19T07:57:04Z",
+ "sourceHash": "sha256:3cb819a90b4c798f3f736dda4333bb4ca4757bc37687178bf68e48702389192f"
},
"kb/DR002.md": {
"error": "code fences 4 -> 2",
diff --git a/localizedContent/zh/.translation-status.json b/localizedContent/zh/.translation-status.json
index 2213023e9..51c74df56 100644
--- a/localizedContent/zh/.translation-status.json
+++ b/localizedContent/zh/.translation-status.json
@@ -1877,9 +1877,9 @@
"sourceHash": "sha256:ae62dabee90d8104bbccee01dad64504de4a1f6525dd5f07103be4d563f4ae17"
},
"how-tos/semantic-bridge-rename-objects.md": {
- "error": "code fences 6 -> 3",
- "at": "2026-10-16T18:26:05Z",
- "sourceHash": "sha256:e6486910e9c85e0949fd793b6ef748e19d01c8f3441eda36e07b975682849c7f"
+ "error": "code fences 6 -> 4",
+ "at": "2026-10-19T07:57:05Z",
+ "sourceHash": "sha256:3cb819a90b4c798f3f736dda4333bb4ca4757bc37687178bf68e48702389192f"
}
}
}
From 623793f41f9053ebd972f4e6c4e7b13d3ce82c9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20L=C3=B8nskov?=
Date: Mon, 19 Oct 2026 14:32:58 +0200
Subject: [PATCH 4/5] Release 27.1.0 (#428)
---
content/assets/images/basic-ui.png | Bin 260189 -> 330413 bytes
.../common/OpenModelPinDeleteOption.png | Bin 0 -> 43166 bytes
content/assets/images/deployment-options.png | Bin 52448 -> 50580 bytes
content/assets/images/messages-view-copy.png | Bin 32761 -> 71786 bytes
content/assets/images/te-messages.png | Bin 63254 -> 159232 bytes
content/assets/images/te3-diagram-view.png | Bin 61611 -> 181888 bytes
content/assets/images/te3-table-preview.png | Bin 65053 -> 186910 bytes
content/assets/images/tom-explorer.png | Bin 67012 -> 163834 bytes
.../incremental-refresh-deploy-partitions.png | Bin 323821 -> 50788 bytes
.../images/user-interface/messages-view.png | Bin 29070 -> 62916 bytes
.../Semantic-Model/direct-lake-sql-model.md | 2 +-
content/features/ai-assistant.md | 12 +-
content/features/auto-reload.md | 6 +-
content/features/dax-debugger.md | 2 +-
content/features/dax-editor.md | 6 +-
content/features/dax-optimizer-integration.md | 4 +-
content/features/dax-query.md | 10 +-
content/features/deployment.md | 18 +-
content/features/mcp-server.md | 22 +-
.../features/metadata-translation-editor.md | 9 +-
content/features/pivot-grid.md | 26 +-
content/features/unsaved-changes.md | 2 +-
content/features/views/messages-view.md | 36 +-
content/features/views/user-interface.md | 79 +-
.../creating-and-testing-dax.md | 2 +-
.../getting-started/refresh-preview-query.md | 2 +
content/how-tos/deploy-current-model.md | 4 +-
content/how-tos/drag-drop.md | 4 +-
content/how-tos/duplicate-batchrename.md | 6 +-
content/how-tos/load-save.md | 4 +-
content/how-tos/perspectives-translations.md | 2 +
content/how-tos/xmla-as-connectivity.md | 15 +-
content/references/downloads.md | 27 +-
content/references/preferences.md | 785 ++++++------------
content/references/release-history.md | 8 +
content/references/release-notes/3_27_1_0.md | 110 +++
content/references/supported-files.md | 19 +-
content/references/user-options.md | 5 +-
content/security/ai-compliance.md | 14 +-
content/security/security-privacy.md | 6 +-
content/tutorials/new-as-model.md | 12 +-
content/tutorials/new-pbi-model.md | 2 +-
42 files changed, 597 insertions(+), 664 deletions(-)
create mode 100644 content/assets/images/common/OpenModelPinDeleteOption.png
create mode 100644 content/references/release-notes/3_27_1_0.md
diff --git a/content/assets/images/basic-ui.png b/content/assets/images/basic-ui.png
index 4725ab5765d75ccfe587b52c8649ee58e43a4943..71754b7a5ccc930341da44fc82954c8b88270477 100644
GIT binary patch
literal 330413
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