diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md
index 0f94cc2da2bb9d..9ec0540feb02f6 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/API/VectorClass.md
@@ -11,13 +11,13 @@ En el mundo de las IA, un vector es una secuencia de números que permite a una
La clase `4D.Vector` propone tres tipos de cálculos vectoriales. La siguiente tabla resume las principales características de cada uno:
-| | cosineSimilarity | dotSimilarity | euclideanDistance |
-| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. |
-| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? |
-| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). A page with just one sentence on the subject will have a lower score. | Imagina una aplicación de citas. The algorithm can use Euclidean distance to compare your profile (your interests, age, location, etc.) con las de otros usuarios. If your profiles are very similar (for example, you both like hiking, pop music, and you live 5 km apart), the Euclidean distance between your profiles will be low, and the app will suggest this person as a good "match". Here, all differences (however small) count, not just the general direction of your tastes. |
+| | cosineSimilarity | dotSimilarity | euclideanDistance |
+| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. |
+| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? |
+| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). Una página con una sola frase sobre el tema tendrá una puntuación más baja. | Imagine una aplicación de citas. El algoritmo puede utilizar la distancia euclidiana para comparar su perfil (sus intereses, edad, ubicación, etc.) con las de otros usuarios. Si sus perfiles son muy similares (por ejemplo, a ambos les gusta el senderismo, la música pop, y viven a 5 km de distancia), la distancia euclidiana entre sus perfiles será baja, y la aplicación sugerirá a esta persona como un buen "match". Aquí cuentan todas las diferencias (por pequeñas que sean), no sólo la orientación general de sus gustos. |
-In any cases, it's a good idea to test the different vectors to determine which best suits your needs and data.
+En cualquier caso, conviene probar los distintos vectores para determinar cuál se adapta mejor a sus necesidades y datos.
### Objeto vector
@@ -56,7 +56,7 @@ Los objetos vectoriales son compartidos, inmutables y transmisibles.
La función `4D.Vector.new()` crea y devuelve un nuevo objeto del tipo `4D.Vector`.
-En *parameter*, pase una colección de números reales que representen el vector a crear. These values are provided by artifical intelligences and represent mathematically objects like words or data.
+En *parameter*, pase una colección de números reales que representen el vector a crear. Estos valores los ofrecen las inteligencias artificiales y representan matemáticamente objetos como palabras o datos.
#### Ejemplo
@@ -90,12 +90,12 @@ var $collection := $vector.toCollection()
La función `.cosineSimilarity()` calcula la similitud coseno entre el vector 4D actual y el que se paso en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. It is recommended for text embeddings, documents, sentences, and any data where **direction** matters more than **magnitude** (e.g. for semantic search or text classification).
+Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. Se recomienda para incrustaciones de texto, documentos, frases y cualquier dato en el que la **dirección** importe más que la **magnitud** (por ejemplo, para la búsqueda semántica o la clasificación de textos).
**Valor devuelto**
- Rango: -1 (opuesto) a 1 (idéntico).
-- The higher the returned value is, more similar vectors are.
+- Cuanto mayor sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo 1
@@ -109,7 +109,7 @@ var $similarity := $vector.cosineSimilarity($anotherVector)
:::info
-This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings.
+Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones.
:::
@@ -127,23 +127,23 @@ String($people.Phone)+". Family IDs - Father: "+String($people.FatherID)+\
var $clientAI:=cs.AIKit.OpenAI.new(getAIKey())
-// Vector calculation with 4D AIKit
+// Cálculo de vectores con 4D AIKit
var $result:=$clientAI.embeddings.create($prompt; $model)
-// 4D.vector object creation
+// Creación de objetos 4D.vector
var $vector:=$result.vector
var $question:="I'm looking for John who lives in USA"
-// Vector calculation with 4D AIKit component
+// Cálculo vectorial con componente 4D AIKit
var $questionVector:=$clientAI.embeddings.create($question; $model).vector
-// similarity calculation
+// cálculo de similitud
If ($vector.cosineSimilarity($questionVector)>0.9)
ALERT("Interesting result")
End if
-//actual result: 0,7360136465949
+//resultado real: 0,7360136465949
```
@@ -163,14 +163,14 @@ End if
#### Descripción
-The `.dotSimilarity()` function calculates the dot product of the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño.
+La función `.dotSimilarity()` calcula el producto punto del vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-This metric reflects both **similarity** and **magnitude**, and is generally used in models where vector norms (magnitudes) vary. It is recommended for scenarios where embeddings have been fine-tuned with magnitude in mind (e.g., recommendation engines, scoring relevance).
+Esta métrica refleja tanto la **similitud** como la **magnitud**, y se utiliza generalmente en modelos en los que varían las normas vectoriales (magnitudes). Se recomienda para escenarios en los que las incrustaciones se han afinado teniendo en cuenta la magnitud (por ejemplo, motores de recomendación, puntuación de relevancia).
**Valor devuelto**
- Depende de las magnitudes y direcciones de los vectores
-- The higher the returned value is, more similar vectors are.
+- Cuanto mayor sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo
@@ -185,7 +185,7 @@ var $score := $vector.dotSimilarity($anotherVector)
:::info
-This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings.
+Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones.
:::
@@ -200,13 +200,13 @@ $documents:=[{text: "How to bake a chocolate cake"; similarity: 0}; \
$question:="4D coding tutorials"
-// Vector calculation with 4D AIKit component
+// Cálculo de vectores con el componente AIKit 4D
$questionVector:=$clientAI.embeddings.create($question; $model).vector
For each ($document; $documents)
- // Vector calculation with 4D AIKit component
+ // Cálculo de vectores con el componente AIKit 4D
$vector:=$clientAI.embeddings.create($document.text; $model).vector
- // similarity
+ // similitud
$document.similarity:=$vector.dotSimilarity($questionVector)
End for each
@@ -236,14 +236,14 @@ ALERT("Best answer: "+$documents[0].text)
#### Descripción
-The `.euclideanDistance()` function calculates the Euclidean distance between the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño.
+La función `.euclideanDistance()` calcula la distancia euclídea entre el vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-This measures the straight-line distance in the vector space. It is recommended for numeric or structured data embeddings, or when using models where proximity in raw space directly correlates with similarity.
+Esto mide la distancia de línea recta en el espacio vectorial. Se recomienda para incrustaciones de datos numéricos o estructurados, o cuando se utilizan modelos en los que la proximidad en el espacio bruto se correlaciona directamente con la similitud.
**Valor devuelto**
- valor devuelto >= 0
-- The lower the returned value is, more similar vectors are.
+- Cuanto más bajo sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo 1
@@ -281,7 +281,7 @@ ALERT("Nearest monument: "+$places[0].name)
#### Descripción
-The `.length` property contains the number of vector components.
+La propiedad `.length` contiene el número de componentes del vector.
## .toCollection()
@@ -289,12 +289,12 @@ The `.length` property contains the numb
-| Parámetros | Tipo | | Descripción |
-| ---------- | ---------- | --------------------------- | ------------------------------------------------------------- |
-| Resultado | Collection | <- | Collection of real numbers representing the vector components |
+| Parámetros | Tipo | | Descripción |
+| ---------- | ---------- | --------------------------- | ---------------------------------------------------------------------- |
+| Resultado | Collection | <- | Colección de números reales que representan los componentes del vector |
-The `.toCollection()` function returns the vector components as a collection of reals.
+La función `.toCollection()` devuelve los componentes del vector como una colección de reales.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
index 7dfd8f499d8d8f..9a60f12964430d 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
@@ -15,6 +15,12 @@ Lea [**Novedades en 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), la ent
- New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md).
- Los comandos [`Num`](../commands/num.md) y [`String`](../commands/string.md) han sido actualizados para soportar conversiones en diferentes bases (radix).
+#### Cambios de comportamiento
+
+- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe.
+- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore.
+- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md).
+
## 4D 20 R10
Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R10/), la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R10.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
index 150b59ba0a90ab..b3a9e0c58f7db5 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
@@ -5,9 +5,9 @@ title: Eventos ORDA
Historia
-| Lanzamiento | Modificaciones |
-| ----------- | -------------- |
-| 20 R10 | Añadidos |
+| Lanzamiento | Modificaciones |
+| ----------- | ------------------- |
+| 20 R10 | touched event added |
This.lastname:=Uppercase(This.lastname)
+
+Note over Client:$people.lastname is uppercased
+
+ Client->>+Server: $people.apply()
+
+ Note over Server: The $people entity is received with the lastname attribute uppercased
+
+```
+
+#### Example 4 (diagram): Client/server without the `local` keyword
+
+```mermaid
+
+sequenceDiagram
+
+ Client->>+Server: $people:=ds.People.all().first()
+
+ Client->>+Client: $people.lastname:="Brown"
+
+ Note over Client:$people.lastname is not uppercased
+
+ Client->>+Server: $people.apply()
+
+ Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname)
+
+ Server-->>-Client: The $people entity is updated
+
+ Note over Client:$people.lastname is uppercased
+
+
+```
+
+#### Ejemplo 5 (diagrama): Aplicación Qodly
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+ Server: Get an entity into the People Qodly source
+
+Qodly page->>+Qodly page: The user updates People.lastname
+
+Note over Qodly page: The People Qodly source lastname attribute is not uppercased
+
+Qodly page->>+ Server: Function call People.apply()
+
+Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname)
+
+Server-->>-Qodly page: The People Qodly source is updated
+Note over Qodly page: The People Qodly source lastname attribute is uppercased
+
+
+```
+
+
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md
index 5c6791c05f9f74..218d3c746df949 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md
@@ -355,7 +355,7 @@ Dado que funciones como [`dataClass.fromCollection()`](../API/DataClassClass.md#
:::
-#### Ejemplo
+#### Ejemplo 1
```4d
@@ -367,6 +367,83 @@ Class constructor()
```
+#### Ejemplo 2 (diagrama): cliente/servidor
+
+```mermaid
+
+sequenceDiagram
+
+Client->>+Client: Form.product:=ds.Products.new()
+
+Note over Client: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Note over Client: Form.product.creationDate is "06/17/25"
Form.product.comment is "Automatic comment"
+
+Client->>+Server: Form.product.save()
+
+Server-->>-Client: Success
+
+
+```
+
+#### Ejemplo 3 (diagrama): Qodly - Acción estándar
+
+```mermaid
+
+sequenceDiagram
+
+ Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source)
+
+ Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source
+
+ Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+ Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled
+
+ Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment"
+
+```
+
+#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source)
+
+Qodly page->>+ Qodly page: Update product comment with "Front end comment"
+
+Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source
+
+Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Note over Server: The comment attribute is set with "Front end comment"
+
+Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled
+
+Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Front end comment"
+
+```
+
+#### Example 5 (diagram): Qodly - Entity instanciated in a function
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+Server: product Qodly source := Function call Products.createNew()
+
+Note over Server: CreateNew() function on the Products class
return This.new()
+
+Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Server-->>-Qodly page: The product entity creationDate and comment attributes are filled
+
+Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment"
+
+```
+
## Atributos calculados
### Generalidades
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md
index 9a1efe7d78e973..298ae339ac8bb9 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/authentication.md
@@ -76,7 +76,7 @@ El método base `On Web Authentication` se llama automáticamente cuando una sol
Por tanto, se llama al método base `On Web Authentication`:
- cuando el servidor web recibe una URL que solicita un recurso que no existe
-- cuando el servidor web recibe una URL que empieza por `4DACTION/`, `4DCGI/`...
+- when the web server receives a URL beginning with `4DACTION/`
- cuando el servidor web recibe una URL de acceso raíz y no se ha definido ninguna página de inicio en los Parámetros o mediante el comando [`WEB SET HOME PAGE`](../commands-legacy/web-set-home-page.md)
- cuando el servidor web procesa una etiqueta que ejecuta código (por ejemplo, `4DSCRIPT`) en una página semidinámica.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md
index dcb4cb4da8bf23..6c5d48722696dc 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md
@@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**.
Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"`
- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente.
- Ex: `"regexPattern" : "/docs/.+/index\.html"`
+ Ej: `"regexPattern" : "/docs/.+/index\.html"`
"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account).
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md
index 7c3140ffad4881..7d8fc3cf7f7ea9 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md
@@ -26,10 +26,11 @@ La siguiente tabla indica si el modo apropiativo se utiliza o está disponible,
- Servidor REST: gestiona las [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md)
- Servidor web: maneja las [plantillas web](templates.md), [4DACTION y los métodos base](httpRequests.md)
- Servidor de servicios web: gestiona las peticiones SOAP
-- ***web setting*** significa que el modo apropiativo depende de un valor de configuración:
- - cuando se selecciona la opción de [**sesiones escalables**](sessions.md#enabling-web-sessions), el modo apropiativo se utiliza automáticamente para los procesos web.
- - en caso contrario, se tendrá en cuenta la opción [**Utilizar procesos apropiativos**](webServerConfig.md#use-preemptive-processes).
- - en lo que respecta a los procesos de servicios web (servidor o cliente), se soporta el modo apropiativo a nivel del método. Sólo tiene que seleccionar la propiedad "Puede ejecutarse en procesos apropiativos" para los métodos del servidor SOAP publicados (ver [Publicación de un servicio web con 4D](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.en.html)) o los métodos del cliente proxy (ver [Suscripción a un servicio web en 4D](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.en.html)) y asegurarse de que el compilador confirme que son hilo seguro.
+- ***web setting*** means that the preemptive mode depends on the [**scalable sessions**](sessions.md#enabling-web-sessions) status:
+ - if scalable sessions are enabled, the preemptive mode is automatically used for web and web service processes.
+ - if scalable sessions are not enabled:
+ - for web processes, the [**Use preemptive processes**](webServerConfig.md#use-preemptive-processes) option is taken into account.
+ - for web service processes (server or client), preemptive mode is supported at method level.
## Escribir código servidor web hilo seguro
@@ -51,7 +52,7 @@ Todo el código 4D ejecutado por el servidor web debe ser hilo seguro si quiere
- [funciones de clase del modelo de datos ORDA](../REST/ClassFunctions.md) llamadas vía REST
-Para cada uno de estos métodos y partes de código, el compilador comprobará si se respetan las reglas de seguridad de hilos, y devolverá errores en caso de que haya problemas. Para más información sobre las reglas hilo seguro, consulte el párrafo *Escribir un método hilo seguro* en el capítulo *Procesos* del manual de [Lenguaje 4D](https://doc.4d.com).
+For each of these methods and code parts, the compiler will check if the [thread-safety rules are respected](../Develop/preemptive.md#writing-a-thread-safe-method), and will return errors in case of issues.
## Código web 4D hilo seguro
@@ -73,7 +74,6 @@ Por supuesto, el código ejecutado por estos métodos también debe ser hilo seg
Las siguientes URLs 4D Web Server son hilo seguro y pueden ser utilizadas en modo apropiativo:
- *4daction/* (el método proyecto llamado también debe ser hilo seguro)
-- *4dcgi/* (los métodos base llamados también deben ser hilo seguro)
- *4dwebtest/*
- *4dblank/*
- *4dstats/*
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md
index e137691f98a3f6..e6c30f462d912c 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md
@@ -16,7 +16,7 @@ Las sesiones web permiten:
Las sesiones web se utilizan para:
-- [Aplicaciones web](gettingStarted.md) que envían peticiones http,
+- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests),
- llamadas a la [REST API](../REST/authUsers.md), que utilizan [datastores remotos](../ORDA/remoteDatastores.md) y [formularios Qodly](qodly-studio.md).
## Habilitando sesiones web
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md
index d107668e627c3e..3a5757f2bf5bfe 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/webServerConfig.md
@@ -597,10 +597,6 @@ Esta opción activa el modo apropiativo para el código del servidor web de su a
Los parámetros siguientes siguen siendo compatibles, pero se basan en funcionalidades o tecnologías obsoletas. Generalmente se recomienda mantener los valores por defecto.
-#### Autorizar el acceso a la base de datos a través de las URL 4DSYNC
-
-Esta opción controla el soporte de las peticiones de sincronización HTTP que contienen las URLs obsoletas */4DSYNC*.
-
#### Validación de la dirección IP de la sesión
> Esta opción no está disponible en [modo sesiones evolutivas](WebServer/sessions.md) (no hay validación).
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md
index c87e08a1e75f6a..81fa2aadfd2d03 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/form-event-code.md
@@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p
End case
```
-Result: https://www.youtube.com/watch?v=YIRfsW1BmHE
+Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE
## Ejemplo 13
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md
index 399a5b3fb6fef6..1358e18b92a2e4 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/print-form.md
@@ -8,28 +8,28 @@ displayed_sidebar: docs
-| Parámetros | Tipo | | Descripción |
-| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| aTable | Tabla | → | Table owning the form, or Default table, if omitted |
-| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print |
-| formData | Object | → | Datos a asociar al formulario |
-| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) |
-| areaEnd | Integer | → | Área final (si se especifica areaStart) |
-| Resultado | Integer | ← | Altura de la sección impresa |
+| Parámetros | Tipo | | Descripción |
+| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite |
+| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir |
+| formData | Object | → | Datos a asociar al formulario |
+| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) |
+| areaEnd | Integer | → | Área final (si se especifica areaStart) |
+| Resultado | Integer | ← | Altura de la sección impresa |
## Descripción
-The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*.The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
+The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*.El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
En el parámetro *form*, puede pasar:
- el nombre de un formulario, o
-- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or
+- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o
- un objeto que contiene la descripción del formulario.
-Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
+Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
Se pueden utilizar tres sintaxis diferentes:
@@ -41,7 +41,7 @@ Sintaxis:
height:=Print form(myTable;myForm)
```
-In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form.
+En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle).
- **Impresión de área de formulario**
@@ -51,7 +51,7 @@ Sintaxis:
height:=Print form(myTable;myForm;marker)
```
-In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter:
+En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador:
| Constante | Tipo | Valor |
| ------------- | ------- | ----- |
@@ -87,41 +87,41 @@ Sintaxis:
height:=Print form(myTable;myForm;areaStart;areaEnd)
```
-In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles.
+En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles.
**formData**
-Opcionalmente, puede pasar parámetros al *form* usando el objeto *formData* o el objeto de clase form automáticamente instanciado por 4D si has [asociado una clase de usuario al formulario](../FormEditor/properties_FormProperties.md#form-class). Any properties of the form data object will then be available from within the form context through the [Form](form.md) command. Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../FormEditor/properties_FormProperties.md#form-class).
+Opcionalmente, puede pasar parámetros al *form* usando el objeto *formData* o el objeto de clase form automáticamente instanciado por 4D si has [asociado una clase de usuario al formulario](../FormEditor/properties_FormProperties.md#form-class). Todas la propiedades del objeto de datos del formulario estarán entonces disponibles desde el contexto del formulario a través del comando [Form](form.md). Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../FormEditor/properties_FormProperties.md#form-class).
Para obtener información detallada sobre el objeto de datos del formulario, consulte el comando [`DIALOG`](dialog.md).
**Valor devuelto**
-The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
+El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
-Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**:
+Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**:
-- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings.
-- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically.
+- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración.
+- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación.
-**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed.
+**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime.
-**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
+**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
-This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando.
+Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando.
-**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
+**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
-**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
+**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
-**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto:
+**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto:
-- Make sure that no dialog box appears on the server machine (except for a specific requirement).
-- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
+- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico).
+- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error.
## Ejemplo 1
-El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:
+El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso:
```4d
QUERY([Register]) // Seleccionar los registros
@@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print-
## Ejemplo 3
-This form is used as dialog, then printed with modifications:
+Este formulario se utiliza como diálogo y luego se imprime con modificaciones:

diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md
index 1c4abf9915ca5e..81ddc4abeb9dfb 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/process-activity.md
@@ -21,6 +21,7 @@ displayed_sidebar: docs
| Lanzamiento | Modificaciones |
| ----------- | --------------------------------- |
| 20 R7 | Soporte del parámetro *sessionID* |
+| 21 | Support of web user sessions |
@@ -54,10 +55,9 @@ Cuando se ejecuta en 4D en modo remoto o local, `Process activity` siempre devue
The "sessions" property contains a collection of objects describing all running sessions on the server. Para una descripción de las propiedades del objeto de sesión, por favor consulte el comando [`Session info`](session-info.md).
-:::note Notas
+:::note
-- Puede obtener el objeto de una sesión utilizando el comando [Session](session.md).
-- `Process activity` returns remote client sessions, stored procedure session and rest sessions but not Web sessions (limitation).
+Puede obtener el objeto de una sesión utilizando el comando [Session](session.md).
:::
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md b/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md
index ad022faa6f57ea..393e819fd4f19d 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/settings/web.md
@@ -33,10 +33,6 @@ Indica si el servidor web acepta conexiones seguras. Ver [Activar HTTPS](../WebS
Permite modificar el número de puerto TCP/IP utilizado por el servidor web para las conexiones HTTP seguras sobre TLS (protocolo HTTPS). Ver [Puerto HTTPS](../WebServer/webServerConfig.md#https-port).
-#### Autorizar el acceso a la base de datos a través de las URL 4DSYNC
-
-*Nota de compatibilidad:* esta opción es [obsoleta](../WebServer/webServerConfig.md#deprecated-settings). Para el acceso a la base de datos a través de HTTP, ahora se recomienda utilizar las funcionalidades del almacén de datos remoto ORDA y las peticiones REST.
-
### Rutas
#### Raíz HTML por defecto
@@ -112,7 +108,7 @@ No disponible con las [sesiones extensibles](../WebServer/sessions.md).
Activa los procesos web apropiativos en sus aplicaciones compiladas. Cuando se selecciona **Utilizar los procesos apropiativos**, la elegibilidad de su código relacionado con la web (incluyendo las etiquetas 4D y los métodos base Web) para la ejecución apropiativa será evaluada durante la compilación. Para más información, consulte [Utilizar los procesos web apropiativos](../WebServer/preemptiveWeb.md).
-> Esta opción no se aplica a las sesiones extensibles, a los procesos REST (modo compilado) ni a los procesos de servicios web (servidor o cliente). Ver [Activar el modo apropiativo para el servidor web](../WebServer/webServerConfig.md#use-preemptive-processes).
+> Esta opción no se aplica a las sesiones extensibles, a los procesos REST (modo compilado) ni a los procesos de servicios web (servidor o cliente). Ver [Activar el modo apropiativo para el servidor web](../WebServer/webServerConfig.md#use-preemptive-processes).
#### Tiempo de espera del proceso inactivo
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md
index 9646077643b305..1a2f8d82d798ea 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/VectorClass.md
@@ -11,13 +11,13 @@ En el mundo de las IA, un vector es una secuencia de números que permite a una
La clase `4D.Vector` propone tres tipos de cálculos vectoriales. La siguiente tabla resume las principales características de cada uno:
-| | cosineSimilarity | dotSimilarity | euclideanDistance |
-| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. |
-| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? |
-| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). A page with just one sentence on the subject will have a lower score. | Imagina una aplicación de citas. The algorithm can use Euclidean distance to compare your profile (your interests, age, location, etc.) con las de otros usuarios. If your profiles are very similar (for example, you both like hiking, pop music, and you live 5 km apart), the Euclidean distance between your profiles will be low, and the app will suggest this person as a good "match". Here, all differences (however small) count, not just the general direction of your tastes. |
+| | cosineSimilarity | dotSimilarity | euclideanDistance |
+| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Definición | Compara la orientación de dos textos representados como vectores. Cuanto más apunta en la misma dirección, más cerca están. | Suma de productos entre cada dimensión vectorial. Es como una puntuación ponderada de compatibilidad. | Distancia real entre dos vectores, como si se midiera con una regla. |
+| Analogía simple | ¿Estamos hablando del mismo tema? | ¿Se refiere usted al mismo tema de forma insistente? | ¿Está realmente lejos de lo que estoy diciendo? |
+| Ejemplo | Imagine que busca películas para ver en un servicio de streaming de vídeo a la carta. La similitud del coseno se utiliza para comparar sus gustos (por ejemplo, le gustan las películas de acción con un poco de comedia) con las descripciones de las películas de su base de datos. No importa si es un "pequeño" fan (ve 1 película al mes) o un "gran" fan (ve 10 películas a la semana), lo que importa es si las películas tienen características similares a lo que le gusta (acción + comedia). El servicio de streaming utiliza la similitud del coseno para recomendar películas que "apuntan en la misma dirección" que sus preferencias. | Piense en un motor de búsqueda. Cuando escribe "receta de tarta de chocolate", el algoritmo compara su consulta con páginas web. El producto punto se puede utilizar no sólo para comprobar si una página habla de pasteles de chocolate (una dirección similar a la de su búsqueda), sino también para dar más peso a las páginas que son muy relevantes (por ejemplo, una página con mucho contenido detallado sobre pasteles de chocolate tendrá una mayor "longitud" y, por tanto, una puntuación más alta). Una página con una sola frase sobre el tema tendrá una puntuación más baja. | Imagine una aplicación de citas. El algoritmo puede utilizar la distancia euclidiana para comparar su perfil (sus intereses, edad, ubicación, etc.) con las de otros usuarios. Si sus perfiles son muy similares (por ejemplo, a ambos les gusta el senderismo, la música pop, y viven a 5 km de distancia), la distancia euclidiana entre sus perfiles será baja, y la aplicación sugerirá a esta persona como un buen "match". Aquí cuentan todas las diferencias (por pequeñas que sean), no sólo la orientación general de sus gustos. |
-In any cases, it's a good idea to test the different vectors to determine which best suits your needs and data.
+En cualquier caso, conviene probar los distintos vectores para determinar cuál se adapta mejor a sus necesidades y datos.
### Objeto vector
@@ -58,7 +58,7 @@ Los objetos vectoriales son compartidos, inmutables y transmisibles.
La función `4D.Vector.new()` crea y devuelve un nuevo objeto del tipo `4D.Vector`.
-En *parameter*, pase una colección de números reales que representen el vector a crear. These values are provided by artifical intelligences and represent mathematically objects like words or data.
+En *parameter*, pase una colección de números reales que representen el vector a crear. Estos valores los ofrecen las inteligencias artificiales y representan matemáticamente objetos como palabras o datos.
#### Ejemplo
@@ -92,12 +92,12 @@ var $collection := $vector.toCollection()
La función `.cosineSimilarity()` calcula la similitud coseno entre el vector 4D actual y el que se paso en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. It is recommended for text embeddings, documents, sentences, and any data where **direction** matters more than **magnitude** (e.g. for semantic search or text classification).
+Esta métrica mide el **ángulo entre vectores** y se utiliza habitualmente para determinar la similitud semántica entre textos. Se recomienda para incrustaciones de texto, documentos, frases y cualquier dato en el que la **dirección** importe más que la **magnitud** (por ejemplo, para la búsqueda semántica o la clasificación de textos).
**Valor devuelto**
- Rango: -1 (opuesto) a 1 (idéntico).
-- The higher the returned value is, more similar vectors are.
+- Cuanto mayor sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo 1
@@ -111,7 +111,7 @@ var $similarity := $vector.cosineSimilarity($anotherVector)
:::info
-This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings.
+Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones.
:::
@@ -129,23 +129,23 @@ String($people.Phone)+". Family IDs - Father: "+String($people.FatherID)+\
var $clientAI:=cs.AIKit.OpenAI.new(getAIKey())
-// Vector calculation with 4D AIKit
+// Cálculo de vectores con 4D AIKit
var $result:=$clientAI.embeddings.create($prompt; $model)
-// 4D.vector object creation
+// Creación de objetos 4D.vector
var $vector:=$result.vector
var $question:="I'm looking for John who lives in USA"
-// Vector calculation with 4D AIKit component
+// Cálculo vectorial con componente 4D AIKit
var $questionVector:=$clientAI.embeddings.create($question; $model).vector
-// similarity calculation
+// cálculo de similitud
If ($vector.cosineSimilarity($questionVector)>0.9)
ALERT("Interesting result")
End if
-//actual result: 0,7360136465949
+//resultado real: 0,7360136465949
```
@@ -165,14 +165,14 @@ End if
#### Descripción
-The `.dotSimilarity()` function calculates the dot product of the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño.
+La función `.dotSimilarity()` calcula el producto punto del vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-This metric reflects both **similarity** and **magnitude**, and is generally used in models where vector norms (magnitudes) vary. It is recommended for scenarios where embeddings have been fine-tuned with magnitude in mind (e.g., recommendation engines, scoring relevance).
+Esta métrica refleja tanto la **similitud** como la **magnitud**, y se utiliza generalmente en modelos en los que varían las normas vectoriales (magnitudes). Se recomienda para escenarios en los que las incrustaciones se han afinado teniendo en cuenta la magnitud (por ejemplo, motores de recomendación, puntuación de relevancia).
**Valor devuelto**
- Depende de las magnitudes y direcciones de los vectores
-- The higher the returned value is, more similar vectors are.
+- Cuanto mayor sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo
@@ -187,7 +187,7 @@ var $score := $vector.dotSimilarity($anotherVector)
:::info
-This example uses the [4D AIKit extension](../aikit/overview.md) to generate embeddings.
+Este ejemplo utiliza la extensión [4D AIKit](../aikit/overview.md) para generar incrustaciones.
:::
@@ -202,13 +202,13 @@ $documents:=[{text: "How to bake a chocolate cake"; similarity: 0}; \
$question:="4D coding tutorials"
-// Vector calculation with 4D AIKit component
+// Cálculo de vectores con el componente AIKit 4D
$questionVector:=$clientAI.embeddings.create($question; $model).vector
For each ($document; $documents)
- // Vector calculation with 4D AIKit component
+ // Cálculo de vectores con el componente AIKit 4D
$vector:=$clientAI.embeddings.create($document.text; $model).vector
- // similarity
+ // similitud
$document.similarity:=$vector.dotSimilarity($questionVector)
End for each
@@ -238,14 +238,14 @@ ALERT("Best answer: "+$documents[0].text)
#### Descripción
-The `.euclideanDistance()` function calculates the Euclidean distance between the current 4D vector and the one you passed in the *vector* parameter. Ambos vectores deben tener el mismo tamaño.
+La función `.euclideanDistance()` calcula la distancia euclídea entre el vector 4D actual y el que pasó en el parámetro *vector*. Ambos vectores deben tener el mismo tamaño.
-This measures the straight-line distance in the vector space. It is recommended for numeric or structured data embeddings, or when using models where proximity in raw space directly correlates with similarity.
+Esto mide la distancia de línea recta en el espacio vectorial. Se recomienda para incrustaciones de datos numéricos o estructurados, o cuando se utilizan modelos en los que la proximidad en el espacio bruto se correlaciona directamente con la similitud.
**Valor devuelto**
- valor devuelto >= 0
-- The lower the returned value is, more similar vectors are.
+- Cuanto más bajo sea el valor devuelto, más parecidos son los vectores.
#### Ejemplo 1
@@ -283,7 +283,7 @@ ALERT("Nearest monument: "+$places[0].name)
#### Descripción
-The `.length` property contains the number of vector components.
+La propiedad `.length` contiene el número de componentes del vector.
## .toCollection()
@@ -291,12 +291,12 @@ The `.length` property contains the numb
-| Parámetros | Tipo | | Descripción |
-| ---------- | ---------- | --------------------------- | ------------------------------------------------------------- |
-| Resultado | Collection | <- | Collection of real numbers representing the vector components |
+| Parámetros | Tipo | | Descripción |
+| ---------- | ---------- | --------------------------- | ---------------------------------------------------------------------- |
+| Resultado | Collection | <- | Colección de números reales que representan los componentes del vector |
-The `.toCollection()` function returns the vector components as a collection of reals.
+La función `.toCollection()` devuelve los componentes del vector como una colección de reales.
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
index 8128fb72ee6d0d..b3a9e0c58f7db5 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md
@@ -5,9 +5,9 @@ title: Eventos ORDA
Historia
-| Lanzamiento | Modificaciones |
-| ----------- | -------------- |
-| 20 R10 | Añadidos |
+| Lanzamiento | Modificaciones |
+| ----------- | ------------------- |
+| 20 R10 | touched event added |
This.lastname:=Uppercase(This.lastname)
+
+Note over Client:$people.lastname is uppercased
+
+ Client->>+Server: $people.apply()
+
+ Note over Server: The $people entity is received with the lastname attribute uppercased
+
+```
+
+#### Example 4 (diagram): Client/server without the `local` keyword
+
+```mermaid
+
+sequenceDiagram
+
+ Client->>+Server: $people:=ds.People.all().first()
+
+ Client->>+Client: $people.lastname:="Brown"
+
+ Note over Client:$people.lastname is not uppercased
+
+ Client->>+Server: $people.apply()
+
+ Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname)
+
+ Server-->>-Client: The $people entity is updated
+
+ Note over Client:$people.lastname is uppercased
+
+
+```
+
+#### Ejemplo 5 (diagrama): Aplicación Qodly
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+ Server: Get an entity into the People Qodly source
+
+Qodly page->>+Qodly page: The user updates People.lastname
+
+Note over Qodly page: The People Qodly source lastname attribute is not uppercased
+
+Qodly page->>+ Server: Function call People.apply()
+
+Note over Server: Function event touched lastname($event : Object)
This.lastname:=Uppercase(This.lastname)
+
+Server-->>-Qodly page: The People Qodly source is updated
+Note over Qodly page: The People Qodly source lastname attribute is uppercased
+
+
+```
+
+
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md
index 5c6791c05f9f74..218d3c746df949 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md
@@ -355,7 +355,7 @@ Dado que funciones como [`dataClass.fromCollection()`](../API/DataClassClass.md#
:::
-#### Ejemplo
+#### Ejemplo 1
```4d
@@ -367,6 +367,83 @@ Class constructor()
```
+#### Ejemplo 2 (diagrama): cliente/servidor
+
+```mermaid
+
+sequenceDiagram
+
+Client->>+Client: Form.product:=ds.Products.new()
+
+Note over Client: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Note over Client: Form.product.creationDate is "06/17/25"
Form.product.comment is "Automatic comment"
+
+Client->>+Server: Form.product.save()
+
+Server-->>-Client: Success
+
+
+```
+
+#### Ejemplo 3 (diagrama): Qodly - Acción estándar
+
+```mermaid
+
+sequenceDiagram
+
+ Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source)
+
+ Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source
+
+ Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+ Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled
+
+ Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment"
+
+```
+
+#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+ Qodly page: Standard action Create a new entity (product Qodly source)
+
+Qodly page->>+ Qodly page: Update product comment with "Front end comment"
+
+Qodly page->>+Server: Function call product.apply() OR Save standard action for the product Qodly source
+
+Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Note over Server: The comment attribute is set with "Front end comment"
+
+Server-->>-Qodly page: The product Qodly source creationDate and comment attributes are filled
+
+Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Front end comment"
+
+```
+
+#### Example 5 (diagram): Qodly - Entity instanciated in a function
+
+```mermaid
+
+sequenceDiagram
+
+Qodly page->>+Server: product Qodly source := Function call Products.createNew()
+
+Note over Server: CreateNew() function on the Products class
return This.new()
+
+Note over Server: Class constructor
This.creationDate:=Current date()
This.comment:="Automatic comment"
+
+Server-->>-Qodly page: The product entity creationDate and comment attributes are filled
+
+Note over Qodly page: product.creationDate is "06/17/25"
and product.comment is "Automatic comment"
+
+```
+
## Atributos calculados
### Generalidades
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md
index dcb4cb4da8bf23..6c5d48722696dc 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md
@@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**.
Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"`
- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente.
- Ex: `"regexPattern" : "/docs/.+/index\.html"`
+ Ej: `"regexPattern" : "/docs/.+/index\.html"`
"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account).
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md
index c87e08a1e75f6a..81fa2aadfd2d03 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/form-event-code.md
@@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p
End case
```
-Result: https://www.youtube.com/watch?v=YIRfsW1BmHE
+Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE
## Ejemplo 13
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md
index 52543485d5adb4..1b8d5d973a23d6 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/print-form.md
@@ -8,28 +8,28 @@ displayed_sidebar: docs
-| Parámetros | Tipo | | Descripción |
-| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| aTable | Tabla | → | Table owning the form, or Default table, if omitted |
-| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print |
-| formData | Object | → | Datos a asociar al formulario |
-| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) |
-| areaEnd | Integer | → | Área final (si se especifica areaStart) |
-| Resultado | Integer | ← | Altura de la sección impresa |
+| Parámetros | Tipo | | Descripción |
+| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite |
+| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir |
+| formData | Object | → | Datos a asociar al formulario |
+| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) |
+| areaEnd | Integer | → | Área final (si se especifica areaStart) |
+| Resultado | Integer | ← | Altura de la sección impresa |
## Descripción
-The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
+El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
En el parámetro *form*, puede pasar:
- el nombre de un formulario, o
-- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or
+- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o
- un objeto que contiene la descripción del formulario.
-Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
+Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
Se pueden utilizar tres sintaxis diferentes:
@@ -41,7 +41,7 @@ Sintaxis:
height:=Print form(myTable;myForm)
```
-In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form.
+En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle).
- **Impresión de área de formulario**
@@ -51,7 +51,7 @@ Sintaxis:
height:=Print form(myTable;myForm;marker)
```
-In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter:
+En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador:
| Constante | Tipo | Valor |
| ------------- | ------- | ----- |
@@ -87,7 +87,7 @@ Sintaxis:
height:=Print form(myTable;myForm;areaStart;areaEnd)
```
-In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles.
+En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles.
**formData**
@@ -97,31 +97,31 @@ Para obtener información detallada sobre el objeto de datos del formulario, con
**Valor devuelto**
-The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
+El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
-Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**:
+Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**:
-- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings.
-- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically.
+- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración.
+- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación.
-**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed.
+**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime.
-**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
+**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
-This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando.
+Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando.
-**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
+**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
-**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
+**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
-**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto:
+**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto:
-- Make sure that no dialog box appears on the server machine (except for a specific requirement).
-- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
+- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico).
+- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error.
## Ejemplo 1
-El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:
+El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso:
```4d
QUERY([Register]) // Seleccionar los registros
@@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print-
## Ejemplo 3
-This form is used as dialog, then printed with modifications:
+Este formulario se utiliza como diálogo y luego se imprime con modificaciones:

diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md
index b3001faa332972..3dd4ef7516eba8 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/Notes/updates.md
@@ -72,7 +72,7 @@ Lea [**Novedades en 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/),
- Lenguaje 4D:
- Nuevos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md)
- Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md)
- - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*".
+ - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands-legacy/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*".
- 4D Write Pro:
- Nuevo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md)
- Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) y [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md)
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md
index dcb4cb4da8bf23..6c5d48722696dc 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md
@@ -76,7 +76,7 @@ URL patterns can be given as **prefixes** or using **regular expressions**.
Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"`
- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente.
- Ex: `"regexPattern" : "/docs/.+/index\.html"`
+ Ej: `"regexPattern" : "/docs/.+/index\.html"`
"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account).
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md
index c87e08a1e75f6a..81fa2aadfd2d03 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/form-event-code.md
@@ -300,7 +300,7 @@ En este ejemplo, el evento formulario [`On Scroll`](../Events/onScroll.md) nos p
End case
```
-Result: https://www.youtube.com/watch?v=YIRfsW1BmHE
+Resultado: https://www.youtube.com/watch?v=YIRfsW1BmHE
## Ejemplo 13
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md
index 52543485d5adb4..1b8d5d973a23d6 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/print-form.md
@@ -8,28 +8,28 @@ displayed_sidebar: docs
-| Parámetros | Tipo | | Descripción |
-| ---------- | ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| aTable | Tabla | → | Table owning the form, or Default table, if omitted |
-| form | Text, Object | → | Name (string) of the form, or a POSIX path (string) to a .json file describing the form, or an object describing the form to print |
-| formData | Object | → | Datos a asociar al formulario |
-| areaStart | Integer | → | Marcador de impresión, o Área inicial (si se especifica areaEnd) |
-| areaEnd | Integer | → | Área final (si se especifica areaStart) |
-| Resultado | Integer | ← | Altura de la sección impresa |
+| Parámetros | Tipo | | Descripción |
+| ---------- | ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| aTable | Tabla | → | Tabla del formulario, o tabla por defecto, si se omite |
+| form | Text, Object | → | Nombre (cadena) del formulario, o ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a imprimir |
+| formData | Object | → | Datos a asociar al formulario |
+| areaStart | Integer | → | Marcador de impresión, o área de inicio (si se especifica areaEnd) |
+| areaEnd | Integer | → | Área final (si se especifica areaStart) |
+| Resultado | Integer | ← | Altura de la sección impresa |
## Descripción
-The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
+El comando **Print form** simplemente imprime *form* con los valores actuales de los campos y variables de la tabla *aTable*. Suele utilizarse para imprimir informes muy complejos que requieren un control total del proceso de impresión. **Print form** no realiza ningún procesamiento de registros, ni las rupturas, ni de saltos de página. Estas operaciones son responsabilidad suya. **Print form*** imprime campos y variables solo en un marco de tamaño fijo.
En el parámetro *form*, puede pasar:
- el nombre de un formulario, o
-- the path (in POSIX syntax) to a valid .json file containing a description of the form to use (see *Form file path*), or
+- la ruta (en sintaxis POSIX) de un archivo .json válido que contenga una descripción del formulario a utilizar (ver *Ruta de acceso al archivo de formulario*), o
- un objeto que contiene la descripción del formulario.
-Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
+Como **Print form** no genera un salto de página después de imprimir el formulario, es fácil combinar diferentes formularios en la misma página. Así, **Print form** es perfecto para tareas de impresión complejas que implican diferentes tablas y diferentes formularios. Para forzar un salto de página entre formularios, utilice el comando [PAGE BREAK](../commands-legacy/page-break.md). Para transferir la impresión a la página siguiente de un formulario cuya altura es superior al espacio disponible, invoque el comando [CANCEL](../commands-legacy/cancel.md) antes del comando [PAGE BREAK](../commands-legacy/page-break.md).
Se pueden utilizar tres sintaxis diferentes:
@@ -41,7 +41,7 @@ Sintaxis:
height:=Print form(myTable;myForm)
```
-In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form.
+En este caso, **Print form** sólo imprime el área de detalle del formulario (el área entre la línea de encabezado y la línea de detalle).
- **Impresión de área de formulario**
@@ -51,7 +51,7 @@ Sintaxis:
height:=Print form(myTable;myForm;marker)
```
-In this case, the command will print the section designated by the *marker*. Pass one of the constants of the *Form Area* theme in the marker parameter:
+En este caso, el comando imprimirá la sección designada por el *marker*. Pase una de las constantes del tema *Form Area* en el parámetro marcador:
| Constante | Tipo | Valor |
| ------------- | ------- | ----- |
@@ -87,7 +87,7 @@ Sintaxis:
height:=Print form(myTable;myForm;areaStart;areaEnd)
```
-In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. Los valores introducidos deben expresarse en píxeles.
+En este caso, el comando imprimirá la sección incluida entre los parámetros *areaStart* y *areaEnd*. Los valores introducidos deben expresarse en píxeles.
**formData**
@@ -97,31 +97,31 @@ Para obtener información detallada sobre el objeto de datos del formulario, con
**Valor devuelto**
-The value returned by **Print form** indicates the height of the printable area. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
+El valor devuelto por **Print form** indica la altura del área de impresión. Este valor será tomado en cuenta automáticamente por el comando [Get printed height](../commands-legacy/get-printed-height.md).
-Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**:
+Las cajas de diálogo de la impresora no aparecen cuando se utiliza **Print form**. El informe no utiliza la configuración de impresión definida en el modo Diseño para el formulario. Hay dos formas de especificar los parámetros de impresión antes de realizar una serie de llamadas a **Print form**:
-- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). In this case, you let the user choose the settings.
-- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). In this case, print settings are specified programmatically.
+- Llamar a [PRINT SETTINGS](../commands-legacy/print-settings.md). En este caso, deja que el usuario elija la configuración.
+- Llame a [SET PRINT OPTION](../commands-legacy/set-print-option.md) y [GET PRINT OPTION](../commands-legacy/get-print-option.md). En este caso, los parámetros de impresión se especifican por programación.
-**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). Otherwise, if the last page is not full, it stays in memory and is not printed.
+**Print form** crea cada página impresa en la memoria. Cada página se imprime cuando la página en memoria está llena o cuando se llama a [PAGE BREAK](../commands-legacy/page-break.md). Para asegurar la impresión de la última página después de cualquier uso de **Print form**, debe concluir con el comando [PAGE BREAK](../commands-legacy/page-break.md) (excepto en el contexto de un [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), ver nota). En caso contrario, si la última página no está llena, permanece en memoria y no se imprime.
-**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), you must NOT call [PAGE BREAK](../commands-legacy/page-break.md) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md) command. Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
+**Atención:** si se llama al comando en el contexto de un trabajo de impresión abierto con [OPEN PRINTING JOB](../commands-legacy/open-printing-job.md), NO se debe llamar a [PAGE BREAK](../commands-legacy/page-break.md) para la última página porque se imprime automáticamente con el comando [CLOSE PRINTING JOB](../commands-legacy/close-printing-job.md). Si llama a [PAGE BREAK](../commands-legacy/page-break.md) en este caso, se imprime una página en blanco.
-This command prints external areas and objects (for example, 4D Write or 4D View areas). El área se reinicializa cada vez que se ejecuta el comando.
+Este comando imprime áreas y objetos externos (por ejemplo, áreas 4D Write o 4D View). El área se reinicializa cada vez que se ejecuta el comando.
-**Warning:** Subforms are not printed with **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
+**Atención:** los subformularios no se imprimen con **Print form**. Para imprimir sólo un formulario con dichos objetos, utilice [PRINT RECORD](../commands-legacy/print-record.md) en su lugar.
-**Print form** genera sólo un [evento [`On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
+**Print form** genera sólo un [evento `On Printing Detail`](../Events/onPrintingDetail.md) para el método formulario.
-**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. En este contexto:
+**4D Server:** este comando puede ejecutarse en 4D Server en el marco de un procedimiento almacenado. En este contexto:
-- Make sure that no dialog box appears on the server machine (except for a specific requirement).
-- In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
+- Asegúrese de que no aparezca ningún cuadro de diálogo en el equipo servidor (salvo que se trate de un requisito específico).
+- En el caso de un problema relacionado con la impresora (falta de papel, impresora desconectada, etc.), no se genera ningún mensaje de error.
## Ejemplo 1
-El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:
+El siguiente ejemplo funciona como lo haría un comando [PRINT SELECTION](../commands-legacy/print-selection.md). Sin embargo, el informe utiliza una de dos formas diferentes, dependiendo de si el registro corresponde a un cheque o a un ingreso:
```4d
QUERY([Register]) // Seleccionar los registros
@@ -150,7 +150,7 @@ Consulte el ejemplo del comando [SET PRINT MARKER](../commands-legacy/set-print-
## Ejemplo 3
-This form is used as dialog, then printed with modifications:
+Este formulario se utiliza como diálogo y luego se imprime con modificaciones:

diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md b/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md
index e6e6d7b27e0add..ef229096fa650a 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Debugging/debugLogFiles.md
@@ -3,7 +3,7 @@ id: debugLogFiles
title: Fichiers journaux
---
-Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Logs are usually started or stopped using selectors of the [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), or [HTTP SET OPTION](../commands-legacy/http-set-option.md) commands and are stored in the [Logs folder](../Project/architecture.md#logs) of the project.
+Les applications 4D peuvent générer divers fichiers journaux (ou "logs") qui sont utiles pour le débogage ou l'optimisation de leur exécution. Les journaux sont généralement lancés ou arrêtés à l'aide des sélecteurs des commandes [SET DATABASE PARAMETER](../commands-legacy/set-database-parameter.md), [WEB SET OPTION](../commands-legacy/web-set-option.md), ou [HTTP SET OPTION](../commands-legacy/http-set-option.md) et sont stockés dans le [dossier Logs](../Project/architecture.md#logs) du projet.
Les informations stockées dans les journaux doivent être analysées pour détecter et corriger les problèmes. Cette section fournit une description complète des fichiers journaux suivants :
@@ -222,23 +222,23 @@ SET DATABASE PARAMETER(Current process debug log recording;2+4)
Les champs suivants sont enregistrés pour chaque évènement :
-| Colonne # | Noms des champs | Description |
-| --------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 1 | sequence_number | Numéro d'opération séquentiel et unique dans la session de log |
-| 2 | time | Date et heure au format ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm) |
-| 3 | ProcessID | ID du process |
-| 4 | unique_processID | ID unique du process |
-| 5 | stack_level | Niveau de stack (pile) |
-| 6 | operation_type | Type d'opération enregistrée. This value may be an absolute value: