Skip to content

Commit 14aca4b

Browse files
authored
New Spanish and Chinese translations
1 parent e100c31 commit 14aca4b

126 files changed

Lines changed: 2164 additions & 1945 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

localizedContent/es/content/_ui-strings.json

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,20 @@
2020
"footer.technicalSupport": "Soporte técnico",
2121
"footer.privacyPolicy": "Política de privacidad y de cookies",
2222
"footer.termsConditions": "Términos y condiciones",
23-
"footer.licenseTerms": "Términos de licencia"
23+
"footer.licenseTerms": "Términos de licencia",
24+
"appliesTo": "Se aplica a: ",
25+
"availableSince": "Disponible desde",
26+
"availableIn": "Disponible en",
27+
"inThisArticle": "En este artículo",
28+
"searchResultsCount": "{count} resultados de \"{query}\"",
29+
"searchNoResults": "No hay resultados para \"{query}\"",
30+
"tocFilter": "Filtrar por título",
31+
"nextArticle": "Siguiente",
32+
"prevArticle": "Anterior",
33+
"themeLight": "Claro",
34+
"themeDark": "Oscuro",
35+
"themeAuto": "Automático",
36+
"changeTheme": "Cambiar tema",
37+
"copy": "Copiar",
38+
"downloadPdf": "Descargar PDF"
2439
}

localizedContent/es/content/features/Best-Practice-Analyzer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Si necesita agregar, quitar o modificar las reglas que se aplican a su modelo, t
4949
Esta interfaz de usuario contiene dos listas: La lista superior representa las **colecciones** de reglas que están cargadas actualmente. Al seleccionar una colección en esta lista, se mostrarán todas las reglas definidas dentro de esa colección en la lista inferior. De forma predeterminada, se muestran tres colecciones de reglas:
5050

5151
- **Reglas dentro del modelo actual**: Como indica el nombre, es la colección de reglas que se han definido dentro del modelo actual. Las definiciones de las reglas se almacenan como una anotación en el objeto modelo.
52-
- **Rules for the local user**: These are rules that are stored in your `%AppData%\..\Local\TabularEditor3\BPARules.json` file (Tabular Editor 3) or `%AppData%\..\Local\TabularEditor\BPARules.json` file (Tabular Editor 2). Estas reglas se aplicarán a todos los modelos que el usuario de Windows que haya iniciado sesión cargue en Tabular Editor.
52+
- **Reglas para el usuario local**: Estas son reglas que se almacenan en el archivo `%AppData%\..\Local\TabularEditor3\BPARules.json` (Tabular Editor 3) o en el archivo `%AppData%\..\Local\TabularEditor\BPARules.json` (Tabular Editor 2). Estas reglas se aplicarán a todos los modelos que el usuario de Windows que haya iniciado sesión cargue en Tabular Editor.
5353
- **Reglas en el equipo local**: Estas reglas se almacenan en `%ProgramData%\\TabularEditor\\BPARules.json`. Estas reglas se aplicarán a todos los modelos que se carguen en Tabular Editor en este equipo.
5454

5555
Si la misma regla (por ID) se encuentra en más de una colección, el orden de prioridad va de arriba abajo; es decir, una regla definida en el modelo tiene prioridad sobre una regla con el mismo ID definida en el equipo local. Esto le permite anular reglas existentes, por ejemplo, para tener en cuenta convenciones específicas del modelo.
Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
uid: script-convert-dlol-to-import
3-
title: Convert Direct Lake on OneLake to import
3+
title: Convertir Direct Lake en OneLake a modo Import
44
author: Morten Lønskov
55
updated: 2025-06-25
66
applies_to:
@@ -11,28 +11,28 @@ applies_to:
1111
full: true
1212
---
1313

14-
# Convert Direct Lake on OneLake to Import
14+
# Convertir Direct Lake en OneLake al modo Import
1515

16-
## Script Purpose
16+
## Objetivo del script
1717

18-
This script converts Direct Lake on OneLake (DL/OL) to Import mode tables. As laid out in the [Direct Lake guidance article](xref:direct-lake-guidance), we need to replace the [EntityPartition](https://learn.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.tabular.entitypartitionsource?view=analysisservices-dotnet) on such tables, with a corresponding regular M partition in Import mode.
18+
Este script convierte las tablas de Direct Lake en OneLake (DL/OL) al modo Import mode. Tal como se indica en el [artículo de orientación de Direct Lake](xref:direct-lake-guidance), necesitamos reemplazar el [EntityPartition](https://learn.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.tabular.entitypartitionsource?view=analysisservices-dotnet) de este tipo de tablas por la partición M normal correspondiente en el modo Import mode.
1919

20-
## Prerequisites
20+
## Requisitos previos
2121

22-
You will need the **SQL Endpoint** as well as the **Name** of your Fabric Warehouse or Lakehouse. Both can be found in the Fabric portal.
22+
Necesitarás el **punto de conexión de análisis SQL** y el **nombre** de tu Warehouse o Lakehouse de Fabric. Ambos pueden encontrarse en el portal de Fabric.
2323

24-
You will also need to know the **Schema** of the table/materialized view you wish to connect to. For Lakehouses the default is dbo.
24+
También tendrás que conocer el **esquema** de la tabla o vista materializada a la que quieres conectarte. En los Lakehouse, el valor predeterminado es dbo.
2525

2626
## Script
2727

28-
### Convert Direct Lake on OneLake tables to Import mode
28+
### Convertir tablas Direct Lake en OneLake al modo Import mode
2929

3030
```csharp
3131
// ===================================================================================
32-
// Convert Direct Lake on OneLake tables back to Import mode
32+
// Convertir tablas Direct Lake en OneLake de vuelta a Import mode
3333
// ----------------------------------------
34-
// This scripts converts the selected or all tables from Direct Lake on OneLake to import
35-
// It adds a shared expression named SQLEndpoint and replaces the existing DatabaseQuery if it no longer needed
34+
// Este script convierte las tablas seleccionadas o todas de Direct Lake en OneLake a Import mode
35+
// Agrega una expresión compartida llamada SQLEndpoint y reemplaza la DatabaseQuery existente si ya no se necesita
3636
// ===================================================================================
3737
using System;
3838
using System.Linq;
@@ -41,7 +41,7 @@ using System.Windows.Forms;
4141
using System.Drawing;
4242

4343
// -------------------------------------------------------------------
44-
// 1) Scope‐picker dialog
44+
// 1) Diálogo para elegir el ámbito
4545
// -------------------------------------------------------------------
4646
public class ScopeSelectionDialog : Form
4747
{
@@ -50,7 +50,7 @@ public class ScopeSelectionDialog : Form
5050

5151
public ScopeSelectionDialog(int selectedCount, int totalCount)
5252
{
53-
Text = "Choose tables to convert";
53+
Text = "Elige las tablas que quieres convertir";
5454
AutoSize = true; AutoSizeMode = AutoSizeMode.GrowAndShrink;
5555
StartPosition = FormStartPosition.CenterParent;
5656
Padding = new Padding(20);
@@ -62,7 +62,7 @@ public class ScopeSelectionDialog : Form
6262
Controls.Add(layout);
6363

6464
layout.Controls.Add(new Label {
65-
Text = $"You have {selectedCount} table(s) selected,\nand {totalCount} Direct Lake table(s) in the model.",
65+
Text = $"Tienes {selectedCount} tabla(s) seleccionadas,\ny {totalCount} tabla(s) Direct Lake en el modelo.",
6666
AutoSize = true, TextAlign = ContentAlignment.MiddleLeft
6767
});
6868

@@ -73,19 +73,19 @@ public class ScopeSelectionDialog : Form
7373
};
7474

7575
var btnOnly = new Button {
76-
Text = "Only selected tables", AutoSize = true,
76+
Text = "Solo las tablas seleccionadas", AutoSize = true,
7777
DialogResult = DialogResult.OK
7878
};
7979
btnOnly.Click += (s, e) => SelectedOption = ScopeOption.OnlySelected;
8080

8181
var btnAll = new Button {
82-
Text = "All tables", AutoSize = true,
82+
Text = "Todas las tablas", AutoSize = true,
8383
DialogResult = DialogResult.Retry
8484
};
8585
btnAll.Click += (s, e) => SelectedOption = ScopeOption.All;
8686

8787
var btnCancel = new Button {
88-
Text = "Cancel", AutoSize = true,
88+
Text = "Cancelar", AutoSize = true,
8989
DialogResult = DialogResult.Cancel
9090
};
9191
btnCancel.Click += (s, e) => SelectedOption = ScopeOption.Cancel;
@@ -99,7 +99,7 @@ public class ScopeSelectionDialog : Form
9999
}
100100

101101
// -------------------------------------------------------------------
102-
// 2) SQL‐import dialog (schema now required)
102+
// 2) Diálogo de importación SQL (ahora el esquema es obligatorio)
103103
// -------------------------------------------------------------------
104104
public class SqlImportDialog : Form
105105
{
@@ -110,7 +110,7 @@ public class SqlImportDialog : Form
110110

111111
public SqlImportDialog(string endpoint, string db, string schema)
112112
{
113-
Text = "Convert Direct Lake → Import";
113+
Text = "Convertir Direct Lake → Import mode";
114114
AutoSize = true; AutoSizeMode = AutoSizeMode.GrowAndShrink;
115115
StartPosition = FormStartPosition.CenterParent;
116116
Padding = new Padding(20);
@@ -122,38 +122,38 @@ public class SqlImportDialog : Form
122122
Controls.Add(layout);
123123

124124
// Endpoint
125-
layout.Controls.Add(new Label { Text = "SQL Analytics Endpoint:", AutoSize = true });
125+
layout.Controls.Add(new Label { Text = "Punto de conexión de análisis SQL:", AutoSize = true });
126126
SqlEndpoint = new TextBox { Width = 800, Text = endpoint };
127127
layout.Controls.Add(SqlEndpoint);
128128

129-
// Database
129+
// Base de datos
130130
layout.Controls.Add(new Label {
131-
Text = "Lakehouse/Warehouse Name:", Padding = new Padding(0, 20, 0, 0),
131+
Text = "Nombre del Lakehouse/Warehouse:", Padding = new Padding(0, 20, 0, 0),
132132
AutoSize = true
133133
});
134134
DatabaseName = new TextBox { Width = 800, Text = db };
135135
layout.Controls.Add(DatabaseName);
136136

137-
// Schema (required)
137+
// Esquema (obligatorio)
138138
layout.Controls.Add(new Label {
139-
Text = "Schema:", Padding = new Padding(0, 20, 0, 0),
139+
Text = "Esquema:", Padding = new Padding(0, 20, 0, 0),
140140
AutoSize = true
141141
});
142142
Schema = new TextBox { Width = 800, Text = schema };
143143
layout.Controls.Add(Schema);
144144

145-
// Buttons
145+
// Botones
146146
var panel = new FlowLayoutPanel {
147147
FlowDirection = FlowDirection.RightToLeft,
148148
Dock = DockStyle.Fill, AutoSize = true,
149149
Padding = new Padding(0, 20, 0, 0)
150150
};
151151
okButton = new Button {
152-
Text = "OK", DialogResult = DialogResult.OK,
152+
Text = "Aceptar", DialogResult = DialogResult.OK,
153153
AutoSize = true, Enabled = false
154154
};
155155
var cancel = new Button {
156-
Text = "Cancel", DialogResult = DialogResult.Cancel,
156+
Text = "Cancelar", DialogResult = DialogResult.Cancel,
157157
AutoSize = true
158158
};
159159
panel.Controls.AddRange(new Control[] { okButton, cancel });
@@ -162,7 +162,7 @@ public class SqlImportDialog : Form
162162
AcceptButton = okButton;
163163
CancelButton = cancel;
164164

165-
// Only enable OK when all three fields are non-empty
165+
// Solo habilitar Aceptar cuando los tres campos no estén vacíos
166166
SqlEndpoint.TextChanged += Validate;
167167
DatabaseName.TextChanged += Validate;
168168
Schema.TextChanged += Validate;
@@ -179,27 +179,27 @@ public class SqlImportDialog : Form
179179
}
180180

181181
// -------------------------------------------------------------------
182-
// 3) Main conversion logic
182+
// 3) Lógica principal de conversión
183183
// -------------------------------------------------------------------
184184
WaitFormVisible = false;
185185
Application.UseWaitCursor = false;
186186

187-
// 3.1) Find all Direct Lake tables
187+
// 3,1) Encontrar todas las tablas Direct Lake
188188
var allDirectLake = Model.Tables
189189
.Where(t => t.Partitions.Count == 1
190190
&& t.Partitions[0].SourceType == PartitionSourceType.Entity
191191
&& t.Partitions[0].Mode == ModeType.DirectLake)
192192
.ToList();
193193

194-
// 3.2) And those you’ve selected
194+
// 3,2) Y las que has seleccionado
195195
var selectedDirect = Selected.Tables
196196
.Cast<Table>()
197197
.Where(t => t.Partitions.Count == 1
198198
&& t.Partitions[0].SourceType == PartitionSourceType.Entity
199199
&& t.Partitions[0].Mode == ModeType.DirectLake)
200200
.ToList();
201201

202-
// 3.3) Ask scope
202+
// 3,3) Preguntar el ámbito
203203
var scopeDialog = new ScopeSelectionDialog(selectedDirect.Count, allDirectLake.Count);
204204
var dr = scopeDialog.ShowDialog();
205205
if (dr == DialogResult.Cancel || scopeDialog.SelectedOption == ScopeSelectionDialog.ScopeOption.Cancel)
@@ -212,15 +212,15 @@ var tablesToConvert = isAllTables
212212

213213
if (tablesToConvert.Count == 0)
214214
{
215-
Warning("No Direct Lake tables found in the chosen scope.");
215+
Warning("No se encontraron tablas Direct Lake en el ámbito seleccionado.");
216216
return;
217217
}
218218

219-
// 3.4) Ask for connection + schema
219+
// 3,4) Pedir conexión + esquema
220220
var sqlDialog = new SqlImportDialog("", "", "");
221221
if (sqlDialog.ShowDialog() == DialogResult.Cancel) return;
222222

223-
// 3.5) Upsert shared expression "SQLEndpoint"
223+
// 3,5) Insertar o actualizar la expresión compartida "SQLEndpoint"
224224
const string sqlTemplate = @"let
225225
endpoint = Sql.Database(""{0}"",""{1}"")
226226
in
@@ -232,14 +232,14 @@ sqlexpr.Expression = string.Format(
232232
sqlDialog.SqlEndpoint.Text,
233233
sqlDialog.DatabaseName.Text);
234234

235-
// 3.6) M‐partition template
235+
// 3,6) Plantilla de partición M
236236
const string mTemplate = @"let
237237
Source = SQLEndpoint,
238238
Data = Source{{[Schema=""{0}"",Item=""{1}""]}}[Data]
239239
in
240240
Data";
241241

242-
// 3.7) Swap partitions
242+
// 3,7) Cambiar particiones
243243
foreach (var table in tablesToConvert)
244244
{
245245
var oldP = table.Partitions[0];
@@ -253,33 +253,33 @@ foreach (var table in tablesToConvert)
253253
oldP.Delete();
254254
}
255255

256-
// 3.8) If converting the **entire model**, delete the old DatabaseQuery expr
256+
// 3,8) Si se convierte **todo el modelo**, eliminar la expresión DatabaseQuery anterior
257257
if (isAllTables)
258258
{
259259
var oldDbq = Model.Expressions.FirstOrDefault(e => e.Name == "DatabaseQuery");
260260
if (oldDbq != null)
261-
oldDbq.Delete(); // TE3 API: Expression.Delete() removes it from the model
261+
oldDbq.Delete(); // API de TE3: Expression.Delete() la elimina del modelo
262262
}
263263

264-
// 3.9) Ensure default mode is Import
264+
// 3,9) Asegurar que el modo predeterminado sea Import mode
265265
Model.DefaultMode = ModeType.Import;
266266

267-
Info("Conversion complete: Direct Lake → Import" +
268-
(isAllTables ? " (DatabaseQuery removed)" : "") + ".");
267+
Info("Conversión completada: Direct Lake → Import mode" +
268+
(isAllTables ? " (DatabaseQuery eliminado)" : "") + ".");
269269
```
270270

271-
### Explanation
271+
### Explicación
272272

273-
The script first prompts the user to determine the scope of the conversion by choosing between converting only the selected tables or all tables in the model. It then identifies which tables are currently in Direct Lake mode within the chosen scope. If no applicable tables are found, or if the user cancels the dialog, the script terminates.
273+
El script primero te pide que determines el alcance de la conversión, eligiendo entre convertir solo las tablas seleccionadas o todas las tablas del modelo. A continuación, identifica qué tablas están actualmente en modo Direct Lake dentro del ámbito elegido. Si no se encuentran tablas aplicables o si cancelas el cuadro de diálogo, el script finaliza.
274274

275-
The user is then prompted to enter the SQL Analytics Endpoint, the name of the Lakehouse or Warehouse, and a required Schema name. The script ensures all three fields are populated before allowing the user to proceed.
275+
Después, el script te pide que introduzcas el punto de conexión de análisis SQL, el nombre del Lakehouse o Warehouse y un nombre de esquema obligatorio. El script se asegura de que los tres campos estén rellenados antes de dejarte continuar.
276276

277-
Next, the script creates or updates a Shared Expression named `SQLEndpoint`, using the provided connection details. This expression uses the `Sql.Database` connector to access the Lakehouse or Warehouse.
277+
A continuación, el script crea o actualiza una expresión compartida llamada `SQLEndpoint` con los detalles de conexión proporcionados. Esta expresión usa el conector `Sql.Database` para acceder al Lakehouse o Warehouse.
278278

279-
For each table being converted, the script creates a new Import mode M partition that references the `SQLEndpoint` expression and uses the specified schema and table name. The existing Direct Lake partition is renamed and then removed, leaving only the new Import partition.
279+
Para cada tabla que se convierte, el script crea una nueva partición M en modo Import mode que hace referencia a la expresión `SQLEndpoint` y usa el esquema indicado y el nombre de la tabla. La partición Direct Lake existente se renombra y luego se elimina, dejando únicamente la nueva partición en modo Import.
280280

281-
Finally, if the user chose to convert all Direct Lake tables in the model, the script checks for an existing Shared Expression named `DatabaseQuery` and deletes it if found. The model's default storage mode is then set to Import, and a confirmation message is displayed.
281+
Por último, si elegiste convertir todas las tablas Direct Lake del modelo, el script busca una expresión compartida existente llamada `DatabaseQuery` y la elimina si la encuentra. Luego, el modo de almacenamiento predeterminado del modelo se establece en Import y se muestra un mensaje de confirmación.
282282

283-
## Use of AI disclaimer
283+
## Descargo de responsabilidad sobre el uso de IA
284284

285-
This script was created with the help of an LLM.
285+
Este script se creó con la ayuda de un LLM.

localizedContent/es/content/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,4 +200,5 @@ Luego buscará el valor predeterminado en todas las particiones M y lo reemplaza
200200

201201
<figure style="padding-top: 15px;">
202202
<img class="noscale" src="~/content/assets/images/Cscripts/script-create-parameter-auto-replace.png" alt="Data Security Create Role" style="width: 550px;"/><figcaption style="font-size: 12px; padding-top: 10px; padding-bottom: 15px; padding-left: 75px; padding-right: 75px; color:#00766e"><strong>Figura 2:</strong> Cuadro de diálogo de confirmación que muestra que se ha creado el parámetro y que la subcadena de valor correspondiente se ha reemplazado en todas las expresiones de las particiones M. Para parámetros de otros tipos, ajusta el código C# según corresponda.</figcaption>
203+
Para parámetros de otros tipos, ajusta el código C# según corresponda.</figcaption>
203204
</figure>

localizedContent/es/content/features/CSharpScripts/Advanced/script-implement-incremental-refresh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Para usar el script, selecciona la columna de fecha de la tabla para la que quie
2525
> Asegúrate de comprobar que se ha hecho correctamente.
2626
>
2727
> Si tienes muchos pasos, asegúrate de mover este paso a un punto en el que pueda plegarse hasta la fuente de datos.
28-
> Asegúrate de ajustar todas las \`#"Step References" en Power Query
28+
> Asegúrate de ajustar todas las \\`#"Step References" en Power Query
2929
3030
> [!NOTE]
3131
> Este script usa la entrada del usuario para generar la política de actualización.

0 commit comments

Comments
 (0)