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 bedd0e1a09b1ae..86ff3f20f98906 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -13,6 +13,8 @@ title: Notas del lanzamiento - Nueva clase [`4D.Method`](../API/MethodClass.md) para crear y ejecutar un código de método 4D a partir de una fuente de texto. [`METHOD Get path`](../commands/method-get-path) and [`METHOD RESOLVE PATH`](../commands/method-resolve-path) commands support a new `path volatile method` constant (128). - IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifier.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter). - Remote [session](../API/SessionClass.md) objects are now [available client-side](../Desktop/sessions.md#availability). +- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component. +- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md). - Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions. - Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Project/architecture.md b/i18n/es/docusaurus-plugin-content-docs/current/Project/architecture.md index 8eadbaf72a024a..85b1d5ddc28e06 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Project/architecture.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Project/architecture.md @@ -59,6 +59,7 @@ Este archivo de texto también puede contener llaves de configuración, en parti | menus.json | Definiciones de los menús | JSON | | roles.json | [Privilegios, permisos](../ORDA/privileges.md#rolesjson-file) y otros ajustes de seguridad del proyecto | JSON | | settings.4DSettings | Propiedades de la base *Structure*. No se tienen en cuenta si se definen *[parámetros de usuario](#settings-user)* o *[parámetros de usuario para datos](#settings-user-data)* (ver también [Prioridad de los parámetros](../settings/overview.md#priority-of-settings). **Atención**: en las aplicaciones compiladas, la configuración de la estructura se almacena en el archivo .4dz (de sólo lectura). Para las necesidades de despliegue, es necesario [habilitar](../settings/overview.md#enabling-user-settings) y utilizar *parámetros usuario* o *parámetros usuario para datos* para definir parámetros personalizados. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for Structure | JSON | | tips.json | Mensajes de ayuda definidos | JSON | | lists.json | Listas definidas | JSON | | filters.json | Filtros definidos | JSON | @@ -186,6 +187,7 @@ Esta carpeta contiene [**parámetros usuario para datos**](../settings/overview. | directory.json | Descripción de los grupos y usuarios de 4D y sus derechos de acceso cuando la aplicación se lanza con este archivo de datos. | JSON | | Backup.4DSettings | Parámetros de copia de seguridad de la base de datos, utilizados para definir las [opciones de copia de seguridad](Backup/settings.md) cuando la base se lanza con este archivo de datos. Las llaves relativas a la configuración de la copia de seguridad se describen en el manual *Backup de las llaves XML 4D*. | XML | | settings.4DSettings | Propiedades de la base personalizadas para este archivo de datos. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this data file | JSON | ### `Logs` @@ -212,6 +214,7 @@ Esta carpeta contiene [**parámetros de usuario**](../settings/overview.md#user- | BuildApp.4DSettings | Archivo de parámetros de generación, creado automáticamente cuando se utiliza la caja de diálogo del generador de aplicaciones o del comando `BUILD APPLICATION` | XML | | settings.4DSettings | Parámetros personalizados para este proyecto (todos los archivos de datos) | XML | | logConfig.json | [Archivo de configuración de historial](../Debugging/debugLogFiles.md#using-a-log-configuration-file) personalizado | json | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this project (all data files) | JSON | ## `userPreferences.` diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index 6478740c260b03..f7bb2622fc9e95 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -77,3 +77,7 @@ $client.images.generate(...) $client.files.create(...) $client.model.lists(...) ``` + +## Provider Model Aliases + +The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md index 7300e8538ec975..c55aa8b59e42b1 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,20 +13,20 @@ La clase `OpenAIChatCompletionParameters` está diseñada para manejar los pará ## Propiedades -| Propiedad | Tipo | Valor por defecto | Descripción | -| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. | -| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | -| `stream_options` | Object | `Null` | Propiedad para stream=True. Por ejemplo: `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | El número máximo de tokens que se pueden generar en la respuesta. | -| `n` | Integer | `1` | Número de respuestas a generar para cada invite (prompt). | -| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Los valores más altos hacen que la salida sea más aleatoria, mientras que los valores más bajos la hacen más centrada y determinista. | -| `store` | Boolean | `False` | Almacena o no el resultado de esta solicitud de finalización de chat. | -| `reasoning_effort` | Text | `Null` | Restringe el esfuerzo de razonamiento para los modelos de razonamiento. Los valores actualmente soportados son `"low"`, `"medium"` y `"high"`. | -| `response_format` | Object | `Null` | Un objeto que especifica el formato que el modelo debe producir. Compatible con las salidas estructuradas. | -| `herramientas` | Collection | `Null` | Una lista de herramientas ([OpenAITool](OpenAITool.md)) a las que el modelo puede llamar. Sólo se soporta el tipo "function". | -| `tool_choice` | Variant | `Null` | Controla la herramienta (si hay alguna) que es llamada por el modelo. Puede ser `"none"`, `"auto"`, `"required"`, o especificar una herramienta concreta. | -| `prediction` | Object | `Null` | Contenido de salida estático, como el contenido de un archivo texto que se está regenerando. | +| Propiedad | Tipo | Valor por defecto | Descripción | +| ----------------------- | ---------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). | +| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | +| `stream_options` | Object | `Null` | Propiedad para stream=True. Por ejemplo: `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | El número máximo de tokens que se pueden generar en la respuesta. | +| `n` | Integer | `1` | Número de respuestas a generar para cada invite (prompt). | +| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Los valores más altos hacen que la salida sea más aleatoria, mientras que los valores más bajos la hacen más centrada y determinista. | +| `store` | Boolean | `False` | Almacena o no el resultado de esta solicitud de finalización de chat. | +| `reasoning_effort` | Text | `Null` | Restringe el esfuerzo de razonamiento para los modelos de razonamiento. Los valores actualmente soportados son `"low"`, `"medium"` y `"high"`. | +| `response_format` | Object | `Null` | Un objeto que especifica el formato que el modelo debe producir. Compatible con las salidas estructuradas. | +| `herramientas` | Collection | `Null` | Una lista de herramientas ([OpenAITool](OpenAITool.md)) a las que el modelo puede llamar. Sólo se soporta el tipo "function". | +| `tool_choice` | Variant | `Null` | Controla la herramienta (si hay alguna) que es llamada por el modelo. Puede ser `"none"`, `"auto"`, `"required"`, o especificar una herramienta concreta. | +| `prediction` | Object | `Null` | Contenido de salida estático, como el contenido de un archivo texto que se está regenerando. | ### Propiedades de retrollamada asíncrona diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md index cd9d8ecbdada51..66e8d0d248d1c9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings Crea una representación vectorial para la entrada, el modelo y los parámetros ofrecidos. -| Argumento | Tipo | Descripción | -| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| *entrada* | Texto o colección de texto | La entrada a vectorizar. | -| *model* | Text | El [modelo a utilizar] (https://platform.openai.com/docs/guides/embeddings#embedding-models) | -| *parámetros* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Los parámetros para personalizar la petición de representaciones vectoriales. | -| Resultado | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Las integraciones. | +| Argumento | Tipo | Descripción | +| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| *entrada* | Texto o colección de texto | La entrada a vectorizar. | +| *model* | Text | El [modelo a utilizar] (https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). | +| *parámetros* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Los parámetros para personalizar la petición de representaciones vectoriales. | +| Resultado | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Las integraciones. | #### Ejemplos de uso diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md index 692705efcc3fa2..01be17f1ebe3e7 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ The `OpenAIImageParameters` class is designed to configure and manage the parame ## Propiedades -| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | -| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | -| `n` | Integer | 1 | El número de imágenes a generar (debe estar entre 1 y 10; sólo `n=1` es soportado para `dall-e-3`). | -| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | -| `style` | Text | "" | El estilo de las imágenes generadas (debe ser `vivid` o `natural`). | -| `response_format` | Text | "url" | El formato de las imágenes devueltas puede ser `url` o `b64_json`. | +| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | +| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. Supports [provider:model aliases](../provider-model-aliases.md). | +| `n` | Integer | 1 | El número de imágenes a generar (debe estar entre 1 y 10; sólo `n=1` es soportado para `dall-e-3`). | +| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | +| `style` | Text | "" | El estilo de las imágenes generadas (debe ser `vivid` o `natural`). | +| `response_format` | Text | "url" | El formato de las imágenes devueltas puede ser `url` o `b64_json`. | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md new file mode 100644 index 00000000000000..39879bb87dea61 --- /dev/null +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md @@ -0,0 +1,186 @@ +--- +id: openaiproviders +title: OpenAIProviders +--- + +# OpenAIProviders + +## Resumen + +The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format. + +For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md). + +## Descripción + +This class enables multi-provider support by: + +- Loading provider configurations from a single JSON file +- Loading named model aliases that map to providers and model IDs +- Resolving `provider:model` syntax to full API configurations +- Resolving named model aliases by bare name to full provider + model configurations + +The `OpenAI` class automatically loads provider configurations when instantiated. + +## Constructor + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +``` + +Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format). + +**Important:** + +- Only the first existing file is loaded. There is no merging of multiple files. +- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration. + +## Utilización + +### Integration with OpenAI Class + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use model aliases with provider:model syntax +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) +``` + +### Direct Provider Access + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() + +// Get a specific provider configuration +var $config := $providers.get("openai") +// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null + +// Get all provider names +var $names := $providers.list() +// Returns: ["openai", "anthropic", "mistral", "local"] +``` + +## Funciones + +### get() + +**get**(*name* : Text) : Object + +Get a provider configuration by name. + +| Parámetros | Tipo | Descripción | +| ---------- | ------ | ----------------------------------------------------- | +| *name* | Text | The provider name | +| Resultado | Object | Provider configuration object, or `Null` if not found | + +#### Ejemplo + +```4d +var $config := $providers.get("openai") +If ($config # Null) + // Use $config.baseURL, $config.apiKey, etc. + + // We could build a client with it + var $client:=cs.AIKit.OpenAI.new($config) +End if +``` + +### lista() + +**list**() : Collection + +Get all provider names. + +| Parámetros | Tipo | Descripción | +| ---------- | ---------- | ---------------------------- | +| Resultado | Collection | Collection of provider names | + +#### Ejemplo + +```4d +var $names := $providers.list() +// Returns: ["openai", "anthropic", ...] + +For each ($name; $names) + var $config := $providers.get($name) +End for each +``` + +### modelAliases() + +**modelAliases**() : Collection + +Get all configured model aliases. + +| Parámetros | Tipo | Descripción | +| ---------- | ---------- | --------------------------------- | +| Resultado | Collection | Collection of model alias objects | + +Each object in the collection contains: + +| Propiedad | Tipo | Descripción | +| ----------- | ---- | --------------------------------- | +| `name` | Text | Model alias name | +| `proveedor` | Text | Provider name | +| `model` | Text | Model ID to use with the provider | + +#### Ejemplo + +```4d +var $models := $providers.modelAliases() +// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...] + +For each ($model; $models) + // $m.name, $m.provider, $m.model +End for each +``` + +## Model Resolution + +Two syntaxes are supported for model resolution: + +### Provider alias (`provider:model`) + +Specify the provider and model name directly: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +``` + +This is resolved internally to: + +1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"` +2. Look up the `"openai"` provider configuration +3. Extract `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Ejemplos:** + +- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model +- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus +- `"local:llama3"` → Use local provider with llama3 model + +### Model alias (bare name) + +Use a named model by its bare name from the `models` section of the configuration: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: ":my-gpt"}) +``` + +This is resolved internally to: + +1. Look up `"my-gpt"` in the `models` configuration +2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`) +3. Resolve the provider to get `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Ejemplos:** + +- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model) +- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations + diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md new file mode 100644 index 00000000000000..20da20c51e3ae0 --- /dev/null +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md @@ -0,0 +1,372 @@ +--- +id: provider-model-aliases +title: Provider & Model Aliases +--- + +# Provider & Model Aliases + +The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes. + +## Generalidades + +Instead of hard-coding API endpoints and credentials in your code, you can: + +- Define provider configurations in a JSON file +- Use the `provider:model` syntax to specify a provider and model directly +- Define named model aliases that map to a provider and a model ID +- Use a named model alias by bare name (e.g., `my-gpt`) +- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily + +## Configuration Files + +The client automatically loads provider configurations from the first existing file found (in priority order): + +| Prioridad | Ubicación | File Path | +| ---------------------------------- | --------- | ------------------------------------------------- | +| 1 (el mayor) | userData | `/Settings/AIProviders.json` | +| 2 | user | `/Settings/AIProviders.json` | +| 3 (el más bajo) | structure | `/SOURCES/AIProviders.json` | + +**Important:** Only the **first existing file** is loaded. There is no merging of multiple files. + +### Configuration File Format + +```json +{ + "providers": { + "provider_name": { + "baseURL": "https://api.example.com/v1", + "apiKey": "optional-key", + "organization": "optional-org-id", + "project": "optional-project-id" + } + }, + "models": { + "model_alias_name": { + "provider": "provider_name", + "model": "actual-model-id", + } + } +} +``` + +### Provider Fields + +| Campo | Tipo | Requerido | Descripción | +| -------------- | ---- | --------- | -------------------------------------------------------------- | +| `baseURL` | Text | Sí | API endpoint URL | +| `apiKey` | Text | No | API key value | +| `organization` | Text | No | Organization ID (optional, OpenAI-specific) | +| `project` | Text | No | Project ID (optional, OpenAI-specific) | + +### Model Alias Fields + +| Campo | Tipo | Requerido | Descripción | +| ----------- | ---- | --------- | ------------------------------------------------------------------- | +| `proveedor` | Text | Sí | Name of the provider (must exist in `providers`) | +| `model` | Text | Sí | Model ID used by the provider | + +### Example Configuration + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1" + }, + "local": { + "baseURL": "http://localhost:11434/v1" + }, + "mistral": { + "baseURL": "https://api.mistral.ai/v1", + "apiKey": "your-mistral-key" + } + }, + "models": { + "my-gpt": { + "provider": "openai", + "model": "gpt-5.1" + }, + "my-claude": { + "provider": "anthropic", + "model": "claude-3-5-sonnet-20241022" + }, + "my-embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } + } +} +``` + +## Usage in API Calls + +### Model Parameter Formats + +Two syntaxes are supported: + +| Sintaxis | Descripción | +| --------------------- | ---------------------------------------------------------------------------------- | +| `provider:model_name` | Provider alias — specify provider and model directly | +| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name | + +#### Provider alias syntax + +Use the `provider:model_name` syntax in any API call that accepts a model parameter: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Chat completions +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) + +// Embeddings +var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small") +var $result := $client.embeddings.create("text"; "local:nomic-embed-text") + +// Image generation +var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"}) +``` + +#### Model alias syntax + +Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use a named model alias +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) +var $result := $client.chat.completions.create($messages; {model: ":my-claude"}) + +// Embeddings with a named model alias +var $result := $client.embeddings.create("text"; ":my-embedding") +``` + +### How It Works + +#### Provider alias (`provider:model`) + +When you use the `provider:model` syntax, the client automatically: + +1. **Parses** the model string to extract provider name and model name + - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"` + +2. **Looks up** the provider configuration from the loaded JSON file + - Retrieves `baseURL`, `apiKey`, `organization`, `project` + +3. **Makes the API request** using the resolved configuration + - Sends request to the provider's `baseURL` with the correct `apiKey` + +#### Model alias (bare name) + +When you use a bare model name that matches a configured alias, the client automatically: + +1. **Looks up** the model alias in the `models` section of the configuration + - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"` + +2. **Resolves** the associated provider to get `baseURL` and `apiKey` + +3. **Makes the API request** using the provider's endpoint and the stored model ID + +### Using Plain Model Names + +If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor: + +```4d +// Use constructor configuration +var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"}) +var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"}) + +// Override with provider alias +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) + +// Override with model alias (bare name) +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) + +``` + +## Ejemplos + +### Multi-Provider Chat Application + +```4d +var $client := cs.AIKit.OpenAI.new() +var $messages := [] +$messages.push({role: "user"; content: "What is the capital of France?"}) + +// Try OpenAI +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) + +// Try Anthropic +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"}) + +// Try local Ollama +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Embeddings with Multiple Providers + +```4d +var $client := cs.AIKit.OpenAI.new() +var $text := "Hello world" + +// Use OpenAI embeddings +var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small") + +// Use local embeddings +var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text") +``` + +## Configuration Management + +Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files. + +**To add or modify providers:** + +1. Use 4D Settings interface (recommended), or +2. Edit the appropriate JSON file (userData, user, or structure) +3. Restart your application or create a new OpenAI client instance to load changes + +**Recommended file location:** + +- **For user-specific configs:** `/Settings/AIProviders.json` +- **For application defaults:** `/SOURCES/AIProviders.json` + +### No Reload Capability + +Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes: + +```4d +// Configuration changed - create new client +var $client := cs.AIKit.OpenAI.new() +``` + +## Security Considerations + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines. + +## Common Use Cases + +### Local Development with Ollama + +```json +{ + "providers": { + "local": { + "baseURL": "http://localhost:11434/v1" + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Named Model Aliases + +Define models once, use them everywhere by name: + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + } + }, + "models": { + "chat": { + "provider": "openai", + "model": "gpt-5.1" + }, + "fast": { + "provider": "anthropic", + "model": "claude-3-5-haiku-20241022" + }, + "embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use named model aliases — no need to remember provider or model ID +var $result := $client.chat.completions.create($messages; {model: ":chat"}) +var $result := $client.chat.completions.create($messages; {model: ":fast"}) +var $embedding := $client.embeddings.create("text"; ":embedding") +``` + +### List All Configured Models + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +var $models := $providers.modelAliases() +// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...] +``` + +### Production with Multiple Cloud Providers + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + }, + "azure": { + "baseURL": "https://your-resource.openai.azure.com", + "apiKey": "your-azure-key" + } + } +} +``` + +### Provider-Specific Organizations + +```json +{ + "providers": { + "openai-team-a": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-a-id" + }, + "openai-team-b": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-b-id" + } + } +} +``` + +```4d +// Route to different organizations +var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"}) +var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"}) +``` + +## Related Documentation + +- [OpenAI Class](Classes/OpenAI.md) - Main client class +- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management +- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png new file mode 100644 index 00000000000000..2bd536326bf335 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png new file mode 100644 index 00000000000000..132fcb58c1e5fc Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png new file mode 100644 index 00000000000000..7af048330e16aa Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/settings/ai.md b/i18n/es/docusaurus-plugin-content-docs/current/settings/ai.md new file mode 100644 index 00000000000000..8b17f6d8173fc9 --- /dev/null +++ b/i18n/es/docusaurus-plugin-content-docs/current/settings/ai.md @@ -0,0 +1,140 @@ +--- +id: ai +title: AI page +--- + +The AI page allows you to add, remove, or view the list of all your AI providers and their related model aliases, whether they come from local sources or internet-based services. Providers and model aliases can then be used in your code througout your 4D application, especially with the [**4D-AIKit component**](../aikit/overview.md) using the [**model aliases**](../aikit/provider-model-aliases.md) feature. + +:::tip Entrada de blog relacionada + +[Centralizing AI Providers and Model Aliases in 4D](https://blog.4d.com/centralizing-ai-providers-and-model-aliases-in-4d) + +::: + +## Managing providers + +4D supports [various AI providers](../aikit/compatible-openai.md) with an OpenAI-like API, each offering unique models and features for database needs. + +By default, the Providers list is empty. + +### Adding a provider + +To add an AI provider: + +1. Click on the **+** button at the bottom of the Providers list. +2. Enter the required [provider's configuration fields](#provider-properties), including credentials. +3. (optional) Click the **Test connection** button to make sure the provided URL and credentials are valid. + +If the connection is successful, the number of available models is displayed on the right side of the button: + +![](../assets/en/settings/ai-connection-ok.png) + +If the connection test fails, an error message is displayed (e.g. "Request failed: Not found" or "Request failed: Unauthorized"). + +4. Click **OK** to save the new provider, or **Cancel** to revert all modifications. + +### Editing a provider + +To edit or remove a provider: + +1. Select a registered provider in the list. +2. Edit the provider's information OR to remove a provider, click on the **-** button at the bottom of the Providers list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +## Provider properties + +When you select a provider in the Providers list, several properties are available. Property names in **bold** are mandatory to create a Provider. + +### Nombre + +Local name used to identify the provider in your code, for example "claude". The name must be [compliant with property names](../Concepts/identifiers.md) since it will be used in the application's code to reference the provider. + +### Base URL + +Endpoint of the provider's API, for example `https://api.openai.com/v1` or `http://localhost:11434/v1`. + +The combo box lists the main providers, you can select a value to enter the provider endpoint: + +![](../assets/en/settings/ai-base-url.png) + +### API Key + +(optional) API key for the provider. For instructions on generating an API key, please refer to your AI provider’s official documentation. Some AI providers may also require additional specific credentials. + +### Organization + +(optional, OpenAI-specific) Organization ID used by the OpenAI API. + +### Project + +(optional, OpenAI-specific) ID of the project. Each OpenAI API key is attached to a project. + +### AIProviders.json + +The provider configuration is stored in a JSON file named *AIProviders.json* located next to the active *settings.4DSettings file* within the [project folder](../Project/architecture.md), [depending on your deployment configuration](./overview.md#enabling-user-settings). + +### Deployment with an API key + +When configuring an AI provider, you need to provide your own API key. It requires an external registration for getting API keys/credentials from AI providers. + +Using the Settings dialog box, the 4D developer can define a custom **provider name** (for example "open-ai-v1") and use this custom name in the code. They can also test it using their API key. + +When the 4D application is deployed with the [User settings enabled](../settings/overview.md#enabling-user-settings), the administrator can configure the User settings by using the **same AI provider name** ("open-ai-v1") and **customize the API key** to use the customer's key. Thanks to the [User settings priority rules](../settings/overview.md#priority-of-settings), the customer settings will automatically override the developer settings. + +:::warning + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API keys and credentials from exposure to remote machines. + +::: + +## Model Aliases + +The Model Aliases page allows you to list models from registered Providers that you want to use in your code and to name them with *aliases*. Thanks to model aliases, you avoid hardcoding model names, switch models without changing your code, and keep consistency across environments. + +When using a model alias: + +- The provider is automatically resolved (see [Model resolution](../aikit/Classes/OpenAIProviders.md#model-resolution) in the 4D-AIKit documentation). +- The model ID is applied. +- All credentials and endpoints are used. + +### Adding a model alias + +:::note + +To be able to add a model alias, you must have entered at least one valid provider in the **Providers** tab. + +::: + +To add a model alias: + +1. Click on the **+** button at the bottom of the model aliases list. +2. In the **Name** column, enter the name of the alias. +3. Click on the corresponding row in the **Provider** column to display the list of available providers ([provider names](#name) you entered in the Providers page), and select the name of the provider. +4. Click on the corresponding row in the **Model** column to display the list of available models exposed by the selected provider and select the model. +5. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +![](../assets/en/settings/model-alias.png) + +### Editing a model alias + +To edit or remove an alias: + +1. Select a model alias in the list. +2. Edit the alias information OR to remove a alias, click on the **-** button at the bottom of the list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +### Using a model alias + +You can directly use the model alias name wherever a model name is required (provided that model aliases are supported). + +For example, in 4D-AIKit, you can reference a model with the syntax: *{model:"ModelName"}*, where *ModelName* is a valid model defined in the Model Aliases tab: + +```4d +var $client:=cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; \ + {model: "Chat Model"}) +``` + +### Ver también + +["Provider & Model Aliases"](../aikit/provider-model-aliases.md) in the 4D AIKit documentation. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/IMAPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/IMAPTransporterClass.md index 0801276cdc78cc..df4fc8236cd869 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/IMAPTransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/IMAPTransporterClass.md @@ -72,18 +72,18 @@ El comando `IMAP New transporter` ](#acceptunsecureconnection)    | False | -| .**accessTokenOAuth2**: Text
.**accessTokenOAuth2**: Object
Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](#checkconnectiondelay)    | 300 | -| [](#connectiontimeout)    | 30 | -| [](#host)    | *mandatory* | -| [](#logfile)    | ninguno | -| .**password**: Text
Contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | -| [](#port)    | 993 | -| [](#user)    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](#acceptunsecureconnection)    | False | +| .**accessTokenOAuth2**: Text
.**accessTokenOAuth2**: Object
Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | +| [](#authenticationmode)    | the most secure authentication mode supported by the server is used | +| [](#checkconnectiondelay)    | 300 | +| [](#connectiontimeout)    | 30 | +| [](#host)    | *mandatory* | +| [](#logfile)    | ninguno | +| .**password**: Text
Contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | +| [](#port)    | 993 | +| [](#user)    | ninguno | > **Atención**: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil. #### Resultado @@ -351,12 +351,12 @@ La propiedad `.checkConnectionDelay` contiene
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|destinationBox|Text|->|Mailbox to receive copied messages| -|Result|Object|<-|Status of the copy operation| +|msgsIDs|Collection|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|destinationBox|Text|->|Buzón para recibir los mensajes copiados| +|Resultado|Object|<-|Status of the copy operation|
@@ -535,11 +535,11 @@ End for each
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|Result|Object|<-|Status of the delete operation| +|msgsIDs|Colección|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|Resultado|Object|<-|Status of the delete operation|
@@ -968,12 +968,12 @@ Caracter delimitador del nombre del buzón.
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|->|Sequence number of the message| -|msgID|Text|->|Unique ID of the message| -|options|Object|->|Message handling instructions| -|Result|Object|<-|[Email object](EmailObjectClass.md#email-object)| +|msgNumber|Integer|->|Número de secuencia del mensaje| +|msgID|Text|->|Identificación única del mensaje| +|options|Object|->|Instrucciones de gestión del mensaje| +|Resultado|Object|<-|[Email object](EmailObjectClass.md#email-object)|
@@ -1044,13 +1044,13 @@ Quiere obtener el mensaje con ID = 1:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|ids |Collection|->|Collection of message ID| -|startMsg|Integer|->|Sequence number of the first message| -|endMsg |Integer|->|Sequence number of the last message| -|options|Object|->|Message handling instructions| -|Result|Object|<-|Object containing:
  • una colección de [objetos Email](EmailObjectClass.md#email-object) y
  • una colección de identificadores o números para los mensajes que faltan, si los hay
| +|ids |Collection|->|Colección de ID de mensaje| +|startMsg|Integer|->|Número de secuencia del primer mensaje| +|endMsg |Integer|->|Número de secuencia del último mensaje| +|options|Object|->|Instrucciones de gestión de mensajes| +|Resultado|Object|<-|Object containing:
  • una colección de [objetos Email](EmailObjectClass.md#email-object) y
  • una colección de identificadores o números para los mensajes que faltan, si los hay
|
@@ -1149,11 +1149,11 @@ Quiere recuperar los 20 correos electrónicos más recientes sin cambiar el esta
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|-> |Sequence number of the message| -|msgID|Text|-> |Unique ID of the message| -|updateSeen|Boolean|->|If True, the message is marked "seen" in the mailbox. Si es False el mensaje se deja intacto.| +|msgNumber|Integer|-> |Número de secuencia del mensaje| +|msgID|Text|-> |Identificación única del mensaje| +|updateSeen|Boolean|->|Si es True, el mensaje se marca como "visto" en el buzón. Si es False el mensaje se deja intacto.| |Resultado|BLOB|<-|Blob of the MIME string returned from the mail server|
@@ -1226,12 +1226,12 @@ El parámetro opcional *updateSeen* permite indicar si el mensaje está marcado
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|destinationBox|Text|->|Mailbox to receive moved messages| -|Result|Object|<-|Status of the move operation| +|msgsIDs|Collection|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|destinationBox|Text|->|Buzón para recibir los mensajes movidos| +|Resultado|Object|<-|Status of the move operation|
@@ -1330,11 +1330,11 @@ Para mover todos los mensajes del buzón actual:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |-----|--- |:---:|------| -|startMsg|Integer|-> |Sequence number of the first message| -|endMsg|Integer|->|Sequence number of the last message| -|Result|Collection|<-|Collection of unique IDs| +|startMsg|Integer|-> |Número de secuencia del primer mensaje| +|endMsg|Integer|->|Número de secuencia del último mensaje| +|Resultado|Collection||<-|Collection of unique IDs|
@@ -1394,17 +1394,17 @@ La función devuelve una colección de cadenas (IDs únicos).
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgIDs|any|->|Collection of strings: Message unique IDs (text)
Text: Unique ID of a message
Longint (IMAP all): All messages in the selected mailbox| -|keywords|Object|->|Keyword flags to remove| +|msgIDs|any|->|Colección de cadenas: Identificadores únicos de mensajes (texto)
Texto: ID único de un mensaje
Longint (IMAP all): todos los mensajes del buzón seleccionado| +|keywords|Object|->|Banderas de palabras clave a eliminar| |Result|Object|<-|Status of the removeFlags operation|
#### Descripción -The `.delete()` function sets the "deleted" flag for the messages defined in `msgsIDs` or `allMsgs`. +La función `.removeFlags()` elimina las banderas de los `msgIDs` para las `palabras clave` especificadas. En el parámetro `msgIDs`, puede pasar: @@ -1483,11 +1483,11 @@ $status:=$transporter.removeFlags(IMAP all;$flags)
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|currentName|Text|->|Name of the current mailbox| -|newName|Text|->|New mailbox name| -|Result|Object|<-|Status of the renaming operation| +|currentName|Text|->|Nombre del buzón actual| +|newName|Text|->|Nombre del nuevo buzón| +|Resultado|Object|<-|Status of the renaming operation|
@@ -1647,7 +1647,7 @@ Las claves de búsqueda pueden solicitar el valor a buscar: * **Marcadores**: los valores de tipo marcador (flags) aceptan una o varias palabras claves (incluyendo marcadores estándar) separados por espacios. Ejemplo: `searchCriteria = KEYWORD \Flagged \Draft` -* **Conjunto de mensajes**: identifica un conjunto de mensajes. En el caso de los números de secuencia de los mensajes, se trata de números consecutivos desde el 1 hasta el número total de mensajes en el buzón. Los números son separados por coma; un dos puntos (:) delimita entre dos números inclusive. Examples: `2,4:7,9,12:*` is `2,4,5,6,7,9,12,13,14,15` for a mailbox with 15 messages. `searchCriteria = 1:5 ANSWERED` busca en la selección de mensajes 1 a 5, los mensajes que tienen el marcador \Answered. `searchCriteria= 2,4 ANSWERED` busca en la selección de mensajes (números de mensaje 2 y 4) los mensajes que tienen el marcador \Answered. +* **Conjunto de mensajes**: identifica un conjunto de mensajes. En el caso de los números de secuencia de los mensajes, se trata de números consecutivos desde el 1 hasta el número total de mensajes en el buzón. Los números son separados por coma; un dos puntos (:) delimita entre dos números inclusive. Ejemplos: `2,4:7,9,12:*` es `2,4,5,6,7,9,12,13,14,15` para un buzón con 15 mensajes. `searchCriteria = 1:5 ANSWERED` busca en la selección de mensajes 1 a 5, los mensajes que tienen el marcador \Answered. `searchCriteria= 2,4 ANSWERED` busca en la selección de mensajes (números de mensaje 2 y 4) los mensajes que tienen el marcador \Answered. #### Teclas de búsqueda disponibles @@ -1706,11 +1706,11 @@ Las claves de búsqueda pueden solicitar el valor a buscar:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|name|Text|-> |Name of the mailbox| -|state|Integer|->|Mailbox access status| -|Result|Object|<-|boxInfo object| +|name|Text|-> |Nombre del buzón| +|state|Integer|->|Estado de acceso al buzón| +|Resultado|Object|<-|boxInfo object|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/MailAttachmentClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/MailAttachmentClass.md index 9c5b9189cdf711..dbbaf5f9fdfa53 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/MailAttachmentClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/MailAttachmentClass.md @@ -27,14 +27,14 @@ Los objetos Attachment ofrecen las siguientes propiedades y funciones de sólo l
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|path|Text|->|Path of the attachment file| -|blob|Blob|->|BLOB containing the attachment| -|name|Text|->|Name + extension used by the mail client to designate the attachment| -|cid|Text|->|ID of attachment (HTML messages only), or " " if no cid is required| -|type|Text|->|Value of the content-type header| -|disposition|Text|->|Value of the content-disposition header: "inline" or "attachment".| +|path|Text|->|Ruta del archivo adjunto| +|blob|Blob|->|BLOB que contiene el adjunto| +|name|Text|->|Nombre + extensión utilizados por el cliente de correo para designar el adjunto| +|cid|Text|->|ID del adjunto (sólo mensajes HTML), o " " si no se requiere cid| +|type|Text|->|Valor del encabezado content-type| +|disposition|Text|->|Valor del encabezado content-disposition: "inline" o "attachment".| |Result|4D.MailAttachment|<-|Attachment object|
@@ -163,14 +163,14 @@ $transporter.send($email)
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|path|Text|->|Path of the attachment file| -|blob|Blob|->|BLOB containing the attachment| -|name|Text|->|Name + extension used by the mail client to designate the attachment| -|cid|Text|->|ID of attachment (HTML messages only), or " " if no cid is required| -|type|Text|->|Value of the content-type header| -|disposition|Text|->|Value of the content-disposition header: "inline" or "attachment".| +|path|Text|->|Ruta del archivo adjunto| +|blob|Blob|->|BLOB que contiene el adjunto| +|name|Text|->|Nombre + extensión utilizados por el cliente de correo para designar el adjunto| +|cid|Text|->|ID del adjunto (sólo mensajes HTML), o " " si no se requiere cid| +|type|Text|->|Valor del encabezado content-type| +|disposition|Text|->|Valor del encabezado content-disposition: "inline" o "attachment".| |Result|4D.MailAttachment|<-|Attachment object|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/POP3TransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/POP3TransporterClass.md index e2e8a3506501e6..b830d56b550e2f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/POP3TransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/POP3TransporterClass.md @@ -59,17 +59,17 @@ El comando `POP3 New transporter` ](#acceptunsecureconnection)    | False | -| .**accessTokenOAuth2**: Text Cadena que representa las credenciales de autorización OAuth 2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No devuelto en el objeto *[SMTP transporter](./SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](#connectiontimeout)    | 30 | -| [](#host)    | *mandatory* | -| [](#logfile)    | ninguno | -| **.password**: Text contraseña de usuario para la autenticación en el servidor. No devuelto en el objeto *[SMTP transporter](./SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | -| [](#port)    | 995 | -| [](#user)    | ninguno | +| *server* | Valor por defecto (si se omite) | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](#acceptunsecureconnection)    | False | +| .**accessTokenOAuth2**: Text Cadena que representa las credenciales de autorización OAuth 2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No devuelto en el objeto *[SMTP transporter](./SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | +| [](#authenticationmode)    | the most secure authentication mode supported by the server is used | +| [](#connectiontimeout)    | 30 | +| [](#host)    | *mandatory* | +| [](#logfile)    | ninguno | +| **.password**: Text contraseña de usuario para la autenticación en el servidor. No devuelto en el objeto *[SMTP transporter](./SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | +| [](#port)    | 995 | +| [](#user)    | ninguno | #### Resultado @@ -269,10 +269,10 @@ El objeto `boxInfo` devuelto contiene las siguientes propiedades:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|->|Number of the message in the list | -|Result|Object|<-|[Email object](EmailObjectClass.md#email-object)| +|msgNumber|Integer|->|Número del mensaje en la lista | +|Resultado|Objeto|<-|[Email object](EmailObjectClass.md#email-object)|
@@ -328,10 +328,10 @@ Quiere saber el remitente del primer correo del buzón:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|->|Number of the message in the list | -|Result|Object|<-|mailInfo object| +|msgNumber|Integer|->|Número del mensaje en la lista | +|Resultado|Objeto|<-|mailInfo object|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SMTPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SMTPTransporterClass.md index 43e6dd9926b143..1f9e0321491178 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SMTPTransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SMTPTransporterClass.md @@ -68,7 +68,7 @@ En el parámetro *server*, pase un objeto que contenga las siguientes propiedade | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [](#acceptunsecureconnection)    | False | | .**accessTokenOAuth2**: cadena Text que representa las credenciales de autorización OAuth 2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | +| [](#authenticationmode)    | el modo de autenticación más seguro se utiliza soportado por el servidor | | [](#bodycharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | | [](#connectiontimeout)    | 30 | | [](#headercharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | @@ -217,10 +217,10 @@ La conexión SMTP se cierra automáticamente:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|mail|Object|->|[Email](EmailObjectClass.md#email-object) to send| -|Result|Object|<-|SMTP status| +|mail|Object|->|[Email](EmailObjectClass.md#email-object) a enviar| +|Resultado|Object|<-|SMTP status|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SessionClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SessionClass.md index ed9073398acce2..0de4bbeef9e5f7 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SessionClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SessionClass.md @@ -283,11 +283,11 @@ End if
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|privilege|Text|->|Privilege name| -|privileges|Collection|->|Collection of privilege names| -|settings|Object|->|Object with a "privileges" property (string or collection)| +|privilege|Text|->|Nombre de privilegio| +|privileges|Collection|->|Colección de nombres de privilegio| +|settings|Object|->Objeto con una propiedad "privilegios" (cadena o colección)|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SignalClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SignalClass.md index ac962ae2cd2944..467f0c231c4426 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/SignalClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/SignalClass.md @@ -103,10 +103,10 @@ Método ***OpenForm***:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|description|Text|->|Description for the signal| -|Result|4D.Signal|<-|Native object encapsulating the signal| +|description|Text|->|Descripción de la señal| +|Resultado|4D.Señal|<-|Native object encapsulating the signal|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/WebServerClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/WebServerClass.md index ac41782122b392..715fc81dfaa531 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/WebServerClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/WebServerClass.md @@ -73,10 +73,10 @@ Ofrecen las siguientes propiedades y funciones:
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---|---|----|---| -|option|Integer|->|Web server to get (default if omitted = `Web server database`)| -|Result|4D.WebServer|<-|Web server object| +|option|Integer|->|Servidor web a obtener (por defecto si se omite = `Web server database`)| +|Resultado|4D.WebServer|<-|Web server object|
@@ -178,7 +178,7 @@ Camino de la carpeta donde **.characterSet** : Number
**.characterSet** : Text -El conjunto de caracteres que el servidor web 4D debe utilizar para comunicarse con los navegadores conectados a la aplicación. El valor por defecto depende del lenguaje del sistema operativo. Puede ser un entero MIBEnum o una cadena Name, identificadores [definidos por IANA](http://www.iana.org/assignments/character-sets/character-sets.xhtml). Aquí está la lista de identificadores correspondientes a los conjuntos de caracteres soportados por el servidor web 4D: +The conjunto de caracteres que el servidor web 4D debe utilizar para comunicarse con los navegadores conectados a la aplicación. El valor por defecto depende del lenguaje del sistema operativo. Puede ser un entero MIBEnum o una cadena Name, identificadores [definidos por IANA](http://www.iana.org/assignments/character-sets/character-sets.xhtml). Aquí está la lista de identificadores correspondientes a los conjuntos de caracteres soportados por el servidor web 4D: - 4 = ISO-8859-1 - 12 = ISO-8859-9 @@ -203,7 +203,7 @@ El conjunto de caracteres que e **.cipherSuite** : Text -El lista de cifrado utilizada para el protocolo seguro. Define la prioridad de los algoritmos de cifrado implementados por el servidor web de 4D. Puede ser una secuencia de cadenas separadas por dos puntos (por ejemplo "ECDHE-RSA-AES128-..."). Ver la [página de cifrados](https://www.openssl.org/docs/manmaster/man1/ciphers.html) en el sitio OpenSSL. +The lista de cifrado utilizada para el protocolo seguro. Define la prioridad de los algoritmos de cifrado implementados por el servidor web de 4D. Puede ser una secuencia de cadenas separadas por dos puntos (por ejemplo "ECDHE-RSA-AES128-..."). Ver la [página de cifrados](https://www.openssl.org/docs/manmaster/man1/ciphers.html) en el sitio OpenSSL. @@ -214,7 +214,7 @@ El lista de cifrado utilizada pa **.CORSEnabled** : Boolean -El estado del servicio CORS (*Cross-origin resource sharing*) para el servidor web. Por razones de seguridad, las peticiones "cross-domain" están prohibidas por defecto a nivel del navegador. Cuando está habilitado (True), las llamadas XHR (por ejemplo, peticiones REST) de páginas web fuera del dominio pueden ser permitidas en su aplicación (necesita definir la lista de direcciones permitidas en la lista de dominios CORS, ver `CORSSettings` abajo). Cuando se desactiva (False, por defecto), se ignoran todas las peticiones cruzadas enviadas con CORS. Cuando se activa (True) y un dominio o método no permitido envía una solicitud de sitio cruzado, se rechaza con una respuesta de error "403 - prohibido". +The estado del servicio CORS (*Cross-origin resource sharing*) para el servidor web. Por razones de seguridad, las peticiones "cross-domain" están prohibidas por defecto a nivel del navegador. Cuando está habilitado (True), las llamadas XHR (por ejemplo, peticiones REST) de páginas web fuera del dominio pueden ser permitidas en su aplicación (necesita definir la lista de direcciones permitidas en la lista de dominios CORS, ver `CORSSettings` abajo). Cuando se desactiva (False, por defecto), se ignoran todas las peticiones cruzadas enviadas con CORS. Cuando se activa (True) y un dominio o método no permitido envía una solicitud de sitio cruzado, se rechaza con una respuesta de error "403 - prohibido". Por defecto: False (desactivado) @@ -255,7 +255,7 @@ Contiene el lista de hosts y m **.debugLog** : Number -El estado del archivo de log de las peticiones HTTP (HTTPDebugLog_nn.txt, almacenado en la carpeta "Logs" de la aplicación -- nn es el número del archivo). +The estado del archivo de log de las peticiones HTTP (HTTPDebugLog_nn.txt, almacenado en la carpeta "Logs" de la aplicación -- nn es el número del archivo). - 0 = desactivado - 1 = activado sin partes del cuerpo (en este caso se suministra el tamaño del cuerpo) @@ -272,7 +272,7 @@ El estado del archivo de log de las **.defaultHomepage** : Text -El nombre de la página de inicio por defecto o "" para no enviar la página de inicio personalizada. +The nombre de la página de inicio por defecto o "" para no enviar la página de inicio personalizada. @@ -283,7 +283,7 @@ El nombre de la página de i **.HSTSEnabled** : Boolean -El estado del HTTP Strict Transport Security (HSTS). HSTS permite al servidor web declarar que los navegadores sólo deben interactuar con él a través de conexiones HTTPS seguras. Los navegadores registrarán la información HSTS la primera vez que reciban una respuesta del servidor web, luego cualquier solicitud HTTP futura se transformará automáticamente en solicitudes HTTPS. El tiempo que esta información es almacenada por el navegador se especifica con la propiedad `HSTSMaxAge`. HSTS requiere que HTTPS esté activado en el servidor. HTTP también debe estar activado para permitir las conexiones cliente iniciales. +The estado del HTTP Strict Transport Security (HSTS). HSTS permite al servidor web declarar que los navegadores sólo deben interactuar con él a través de conexiones HTTPS seguras. Los navegadores registrarán la información HSTS la primera vez que reciban una respuesta del servidor web, luego cualquier solicitud HTTP futura se transformará automáticamente en solicitudes HTTPS. El tiempo que esta información es almacenada por el navegador se especifica con la propiedad `HSTSMaxAge`. HSTS requiere que HTTPS esté activado en el servidor. HTTP también debe estar activado para permitir las conexiones cliente iniciales. @@ -296,7 +296,7 @@ El estado del HTTP Strict Transp **.HSTSMaxAge** : Number -El duración máxima (en segundos) de activación de HSTS para cada nueva conexión cliente. Esta información se almacena del lado del cliente durante el tiempo especificado. +The duración máxima (en segundos) de activación de HSTS para cada nueva conexión cliente. Esta información se almacena del lado del cliente durante el tiempo especificado. Valor por defecto: 63072000 (2 años). @@ -309,7 +309,7 @@ Valor por defecto: 63072000 (2 años). **.HTTPCompressionLevel** : Number -El nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones clientes o respuestas servidor). Este selector permite optimizar los intercambios priorizando la velocidad de ejecución (menos compresión) o la cantidad de compresión (menos velocidad). +The nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones clientes o respuestas servidor). Este selector permite optimizar los intercambios priorizando la velocidad de ejecución (menos compresión) o la cantidad de compresión (menos velocidad). Valores posibles: @@ -327,7 +327,7 @@ Valores posibles: **.HTTPCompressionThreshold** : Number -El umbral de tamaño (bytes) de las peticiones por debajo del cual no se deben comprimir los intercambios. Este parámetro es útil para evitar la pérdida de tiempo de la máquina al comprimir los intercambios pequeños. +The umbral de tamaño (bytes) de las peticiones por debajo del cual no se deben comprimir los intercambios. Este parámetro es útil para evitar la pérdida de tiempo de la máquina al comprimir los intercambios pequeños. Umbral de compresión por defecto = 1024 bytes @@ -340,7 +340,7 @@ Umbral de compresión por defecto = 1024 bytes **.HTTPEnabled** : Boolean -El estado del protocolo HTTP. +The estado del protocolo HTTP. @@ -351,7 +351,7 @@ El estado del protocolo HTTP**.HTTPPort** : Number -El número de puerto IP de escucha para HTTP. +The número de puerto IP de escucha para HTTP. Por defecto = 80 @@ -364,7 +364,7 @@ Por defecto = 80 **.HTTPTrace** : Boolean -El activación de `HTTP TRACE`. Por razones de seguridad, por defecto el servidor web rechaza las peticiones `HTTP TRACE` con un error 405. Cuando se activa, el servidor web responde a las peticiones `HTTP TRACE` con la línea de petición, el encabezado y el cuerpo. +The activación de `HTTP TRACE`. Por razones de seguridad, por defecto el servidor web rechaza las peticiones `HTTP TRACE` con un error 405. Cuando se activa, el servidor web responde a las peticiones `HTTP TRACE` con la línea de petición, el encabezado y el cuerpo. @@ -375,7 +375,7 @@ El activación de `HTTP TRACE`**.HTTPSEnabled** : Boolean -El estado del protocolo HTTPS. +The estado del protocolo HTTPS. @@ -386,7 +386,7 @@ El estado del protocolo HTTPS**.HTTPSPort** : Number -El número de puerto IP de escucha para HTTPS. +The número de puerto IP de escucha para HTTPS. Por defecto = 443 @@ -400,7 +400,7 @@ Por defecto = 443 > Esta propiedad no se devuelve en [modo sesiones escalables](#scalablesession). -El duración de vida (en minutos) de los procesos de sesión legacy inactivos. Al final del tiempo de espera, el proceso se mata en el servidor, se llama al método base `On Web Legacy Close Session` y se destruye el contexto de la sesión heredada. +The duración de vida (en minutos) de los procesos de sesión legacy inactivos. Al final del tiempo de espera, el proceso se mata en el servidor, se llama al método base `On Web Legacy Close Session` y se destruye el contexto de la sesión heredada. Por defecto = 480 minutos @@ -414,7 +414,7 @@ Por defecto = 480 minutos > Esta propiedad no se devuelve en [modo sesiones escalables](#scalablesession). -El duración de vida (en minutos) de las sesiones legacy inactivas (duración definida en la cookie). Al final de este periodo, la cookie de sesión expira y deja de ser enviada por el cliente HTTP. +The duración de vida (en minutos) de las sesiones legacy inactivas (duración definida en la cookie). Al final de este periodo, la cookie de sesión expira y deja de ser enviada por el cliente HTTP. Por defecto = 480 minutos @@ -427,7 +427,7 @@ Por defecto = 480 minutos **.IPAddressToListen** : Text -El Dirección IP en la que el servidor web 4D recibirá las peticiones HTTP. Por defecto, no se define ninguna dirección específica. Se soportan tanto los formatos de cadena IPv6 como los IPv4. +The Dirección IP en la que el servidor web 4D recibirá las peticiones HTTP. Por defecto, no se define ninguna dirección específica. Se soportan tanto los formatos de cadena IPv6 como los IPv4. @@ -440,7 +440,7 @@ El Dirección IP en la que *Propiedad de sólo lectura* -El estado de ejecución del servidor web. +The estado de ejecución del servidor web. @@ -466,7 +466,7 @@ Contiene `True` si las sesiones **.logRecording** : Number -El valor de registro del log de peticiones (logweb.txt). +The valor de registro del log de peticiones (logweb.txt). - 0 = No registrar (por defecto) - 1 = Registro en formato CLF @@ -483,7 +483,7 @@ El valor de registro del log de **.maxConcurrentProcesses** : Number -El número máximo de procesos web simultáneos soportados por el servidor web. Cuando se alcance este número (menos uno), 4D no creará ningún otro proceso y devolverá el estado HTTP 503 - Servicio no disponible a todas las nuevas peticiones. +The número máximo de procesos web simultáneos soportados por el servidor web. Cuando se alcance este número (menos uno), 4D no creará ningún otro proceso y devolverá el estado HTTP 503 - Servicio no disponible a todas las nuevas peticiones. Valores posibles: 500000 - 2147483647 @@ -523,7 +523,7 @@ Contiene el número máximo de s **.minTLSVersion** : Number -El versión mínima de TLS aceptada para las conexiones. Se rechazarán los intentos de conexión de clientes que sólo soporten versiones inferiores a la mínima. +La versión mínima de TLS aceptada para las conexiones. Se rechazarán los intentos de conexión de clientes que sólo soporten versiones inferiores a la mínima. Valores posibles: @@ -558,7 +558,7 @@ El nombre de la aplicación del servido *Propiedad de sólo lectura* -El versión de la librería OpenSSL utilizada. +La versión de la librería OpenSSL utilizada. @@ -571,7 +571,7 @@ El versión de la librería O *Propiedad de sólo lectura* -El disponibilidad de PFS en el servidor. +La disponibilidad de PFS en el servidor. @@ -581,7 +581,7 @@ El disponibilidad de P **.rootFolder** : Text -El ruta de la carpeta raíz del servidor web. La ruta se formatea en la ruta completa POSIX utilizando filesystems. Cuando se utiliza esta propiedad en el parámetro `settings`, puede ser un objeto `Folder`. +La ruta de la carpeta raíz del servidor web. La ruta se formatea en la ruta completa POSIX utilizando filesystems. Cuando se utiliza esta propiedad en el parámetro `settings`, puede ser un objeto `Folder`. @@ -605,7 +605,7 @@ Contiene `True` si las sesio **.sessionCookieDomain** : Text -El campo "domain" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/*.4d.fr" para este selector, el cliente sólo enviará una cookie cuando la solicitud se dirija al dominio ".4d.fr", lo que excluye a los servidores que alojan datos estáticos externos. +The campo "domain" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/*.4d.fr" para este selector, el cliente sólo enviará una cookie cuando la solicitud se dirija al dominio ".4d.fr", lo que excluye a los servidores que alojan datos estáticos externos. @@ -616,7 +616,7 @@ El campo "domain" de la **.sessionCookieName** : Text -El nombre de la cookie utilizada para almacenar el ID de sesión. +The nombre de la cookie utilizada para almacenar el ID de sesión. *Propiedad de sólo lectura* @@ -629,7 +629,7 @@ El nombre de la cookie uti **.sessionCookiePath** : Text -El campo "path" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/4DACTION" para este selector, el cliente sólo enviará una cookie para las peticiones dinámicas que empiecen por 4DACTION, y no para las imágenes, páginas estáticas, etc. +The campo "path" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/4DACTION" para este selector, el cliente sólo enviará una cookie para las peticiones dinámicas que empiecen por 4DACTION, y no para las imágenes, páginas estáticas, etc. @@ -648,7 +648,7 @@ El campo "path" de la cook **.sessionCookieSameSite** : Text -El valor de la cookie de session "SameSite". Valores posibles (utilizando constantes): +The valor de la cookie de session "SameSite". Valores posibles (utilizando constantes): | Constante | Valor | Descripción | | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -669,7 +669,7 @@ Ver la descripción de [Session Cookie SameSite](WebServer/webServerConfig.md#se > Esta propiedad no se utiliza en el modo [sesiones escalables](#scalablesession) (no hay validación de la dirección IP). -El validación de la dirección IP para las cookies de sesión. Por razones de seguridad, por defecto el servidor web comprueba la dirección IP de cada solicitud que contiene una cookie de sesión y la rechaza si esta dirección no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, es posible que desee desactivar esta validación y aceptar las cookies de sesión, incluso cuando sus direcciones IP no coinciden. Por ejemplo, cuando los dispositivos móviles cambian entre las redes WiFi y 3G/4G, su dirección IP cambiará. En este caso, puede permitir que los clientes puedan seguir utilizando sus sesiones web incluso cuando las direcciones IP cambien (esta configuración reduce el nivel de seguridad de su aplicación). +The validación de la dirección IP para las cookies de sesión. Por razones de seguridad, por defecto el servidor web comprueba la dirección IP de cada solicitud que contiene una cookie de sesión y la rechaza si esta dirección no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, es posible que desee desactivar esta validación y aceptar las cookies de sesión, incluso cuando sus direcciones IP no coinciden. Por ejemplo, cuando los dispositivos móviles cambian entre las redes WiFi y 3G/4G, su dirección IP cambiará. En este caso, puede permitir que los clientes puedan seguir utilizando sus sesiones web incluso cuando las direcciones IP cambien (esta configuración reduce el nivel de seguridad de su aplicación). @@ -691,10 +691,10 @@ El validación de
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---|---|----|---| -|settings|Object|->|Web server settings to set at startup| -|Result|Object|<-|Status of the web server startup| +|settings|Object|->|Configuración del servidor web para establecer al inicio| +|Resultado|Object|<-|Status of the web server startup|
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/API/ZipArchiveClass.md b/i18n/es/docusaurus-plugin-content-docs/version-19/API/ZipArchiveClass.md index fd804d90948dd1..9ba3141af38033 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/API/ZipArchiveClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/API/ZipArchiveClass.md @@ -51,14 +51,14 @@ End if
-|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|fileToZip|4D.File|->|File or Folder object to compress| -|folderToZip|4D.Folder|->|File or Folder object to compress| -|zipStructure|Object|->|File or Folder object to compress| -|destinationFile|4D.File|->|Destination file for the archive| -|options|Integer|->|*folderToZip* option: `ZIP Without enclosing folder`| -|Result|Object|<-|Status object| +|fileToZip|4D.File|->|Objeto Archivo o Carpeta a comprimir| +|folderToZip|4D.Folder|->|Objeto Archivo o Carpeta a comprimir| +|zipStructure|Object|->|Objeto Archivo o Carpeta a comprimir| +|destinationFile|4D.File|->|Archivo de destino del archivo| +|options|Integer|->|Opción *folderToZip*: `ZIP Without enclosing folder`| +|Resultado|Object|<-|Status object|
@@ -76,7 +76,7 @@ Puede pasar un objeto 4D.File, 4D.Folder, o una estructura zip como primer pará | Propiedad | Tipo | Descripción | | ------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| compression | Integer |
  • `ZIP Compression standard`: Reducir la compresión (por defecto)
  • `ZIP Compression LZMA`: compresión LZMA
  • `ZIP Compression XZ`: compresión XZ
  • `ZIP Compression none`: sin compresión
  • | +| compression | Integer |
  • `ZIP Compression standard`: reducir la compresión (por defecto)
  • `ZIP Compression LZMA`: compresión LZMA
  • `ZIP Compression XZ`: compresión XZ
  • `ZIP Compression none`: sin compresión
  • | | level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omiten:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | | encryption | Integer | La encriptación a utilizar si se define una contraseña:
  • `ZIP Encryption AES128`: encriptación AES con una llave de 128 bits.
  • `ZIP Encryption AES192`: encriptación AES con una llave de 192 bits.
  • `ZIP Encryption AES256`: encriptación AES con una llave de 256 bits (por defecto si se define la contraseña).
  • `ZIP Encryption none`: los datos no están encriptados (por defecto si no se define una contraseña)
  • | | contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | @@ -190,11 +190,11 @@ Quiere pasar una colección de carpetas y archivos para comprimir al objeto *zip
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|zipFile|4D.File|->|Zip archive file| -|password|Text|->|ZIP archive password if any| -|Result|4D.ZipArchive|<-|Archive object| +|zipFile|4D.File|->|Archivo Zip| +|password|Text|->|Contraseña del archivo Zip si la hubiera| +|Resultado|4D.ZipArchive|<-|Archive object|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAfterKeystroke.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAfterKeystroke.md index 0d038670906466..b88a189f0ec628 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAfterKeystroke.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAfterKeystroke.md @@ -24,7 +24,7 @@ Después de que las propiedades de evento [`On Before Keystroke`](onBeforeKeystr El evento `On After Keystroke` no se genera: -- in [list box columns](FormObjects/listbox-column.md) method except when a cell is being edited (however it is generated in any cases in the [list box](FormObjects/listbox_overview.md) method), +- en el método [columnas de list box](FormObjects/listbox-column.md) excepto cuando se está editando una celda (sin embargo se genera en cualquier caso en el método [list box](FormObjects/listbox_overview.md)), - cuando las modificaciones usuario no se realizan con el teclado (pegar, arrastrar y soltar, casilla de verificación, lista desplegable, combo box). Para procesar estos eventos, debe utilizar [`On After Edit`](onAfterEdit.md). ### Secuencia de tecla diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAlternativeClick.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAlternativeClick.md index d6611c13d570fa..9135ba92eb4260 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAlternativeClick.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onAlternativeClick.md @@ -5,7 +5,7 @@ title: On Alternative Click | Code | Puede ser llamado por | Definición | | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| 38 | [Button](FormObjects/button_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) |
  • Botones: el área "flecha" de un botón se presiona
  • List box: en una columna de un array, se hace clic en un botón de selección (atributo "alternateButton")
  • | +| 38 | [Botón](FormObjects/button_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna List Box](FormObjects/listbox-column.md) |
  • Botones: el área "flecha" de un botón se presiona
  • List box: en una columna de un array, se hace clic en un botón de selección (atributo "alternateButton")
  • | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onBeforeKeystroke.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onBeforeKeystroke.md index 6ab3bbc2d4cbe0..4e90d559582116 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onBeforeKeystroke.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onBeforeKeystroke.md @@ -22,7 +22,7 @@ Después de haber seleccionado los eventos `On Before Keystroke` y [`On After Ke El evento `On Before Keystroke` no se genera: -- in a [List Box Column](FormObjects/listbox-column.md) method except when a cell is being edited (however it is generated in any cases in the [list box](FormObjects/listbox_overview.md) method), +- en un método [columna List Box](FormObjects/listbox-column.md) excepto cuando se está editando una celda (sin embargo, se genera en cualquier caso en el método [List Box](FormObjects/listbox_overview.md)), - cuando las modificaciones usuario no se realizan con el teclado (pegar, arrastrar y soltar, casilla de verificación, lista desplegable, combo box). Para procesar estos eventos, debe utilizar [`On After Edit`](onAfterEdit.md). ### Objetos no editables diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onColumnResize.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onColumnResize.md index a53a4c9d5cfd91..dca5fda5b269f5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onColumnResize.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onColumnResize.md @@ -3,9 +3,9 @@ id: onColumnResize title: On Column Resize --- -| Code | Puede ser llamado por | Definición | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| 33 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) | El ancho de una columna es modificado directamente por el usuario o en consecuencia de un redimensionamiento de la ventana del formulario | +| Code | Puede ser llamado por | Definición | +| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | +| 33 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box](FormObjects/listbox-column.md) | El ancho de una columna es modificado directamente por el usuario o en consecuencia de un redimensionamiento de la ventana del formulario | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onHeaderClick.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onHeaderClick.md index b6de29e4ec49b2..b45111bf16509e 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onHeaderClick.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onHeaderClick.md @@ -3,9 +3,9 @@ id: onHeaderClick title: On Header Click --- -| Code | Puede ser llamado por | Definición | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | -| 42 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) | Se produce un clic en el encabezado de columna | +| Code | Puede ser llamado por | Definición | +| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | +| 42 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box](FormObjects/listbox-column.md) | Se produce un clic en el encabezado de columna | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onLoad.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onLoad.md index 16c1fe5b8dcad8..a351a0f239f2b5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onLoad.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onLoad.md @@ -3,9 +3,9 @@ id: onLoad title: On Load --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | -| 1 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview.md) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Tab control](FormObjects/tabControl.md) - [Web Area](FormObjects/webArea_overview.md) | El formulario está a punto de ser mostrado o impreso | +| Code | Puede ser llamado por | Definición | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | +| 1 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [Área 4D Write Pro](FormObjects/writeProArea_overview.md) - [Botón](FormObjects/button_overview.md) - [Rejilla de botones](FormObjects/buttonGrid_overview.md) - [Casilla de selección](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Lista desplegable](FormObjects/dropdownList_Overview.md) - Formulario - [Lista jerárquica](FormObjects/list_overview.md) - [Entrada](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box ](FormObjects/listbox-column.md) - [Botón imagen](FormObjects/pictureButton_overview.md) - [Menú pop up imagen](FormObjects/picturePopupMenu_overview.md) - [Área de plug-in](FormObjects/pluginArea_overview.md) - [Indicador de progreso ](FormObjects/progressIndicator.md) - [Botón radio](FormObjects/radio_overview.md) - [Regla](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subformulario](FormObjects/subform_overview.md) - [Control de pestañas](FormObjects/tabControl.md) - [Área Web](FormObjects/webArea_overview.md) | El formulario está a punto de ser mostrado o impreso | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onRowMoved.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onRowMoved.md index 6c7e4af8fa5ca4..539b7ce688f0f6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onRowMoved.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onRowMoved.md @@ -3,9 +3,9 @@ id: onRowMoved title: On Row Moved --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| 34 | [List Box of the array type](FormObjects/listbox_overview.md#array-list-boxes) - [List Box Column](FormObjects/listbox-column.md) | Una línea de list box es movida por el usuario por medio de arrastrar y soltar | +| Code | Puede ser llamado por | Definición | +| ---- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| 34 | [List Box de tipo array](FormObjects/listbox_overview.md#array-list-boxes) - [List Box Columna](FormObjects/listbox-column.md) | Una línea de list box es movida por el usuario por medio de arrastrar y soltar | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onUnload.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onUnload.md index dea1e96bb1a951..fde2d0a10b100f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onUnload.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onUnload.md @@ -3,9 +3,9 @@ id: onUnload title: On Unload --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | -| 24 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview.md) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Tab control](FormObjects/tabControl.md) - [Web Area](FormObjects/webArea_overview.md) | El formulario está a punto de salir y liberarse | +| Code | Puede ser llamado por | Definición | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | +| 24 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [Área 4D Write Pro](FormObjects/writeProArea_overview.md) - [Botón](FormObjects/button_overview.md) - [Rejilla de botones](FormObjects/buttonGrid_overview.md) - [Casilla de selección](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Lista desplegable](FormObjects/dropdownList_Overview.md) - Formulario - [Lista jerárquica](FormObjects/list_overview.md) - [Entrada](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box ](FormObjects/listbox-column.md) - [Botón imagen](FormObjects/pictureButton_overview.md) - [Menú pop up imagen](FormObjects/picturePopupMenu_overview.md) - [Área de plug-in](FormObjects/pluginArea_overview.md) - [Indicador de progreso ](FormObjects/progressIndicator.md) - [Botón radio](FormObjects/radio_overview.md) - [Regla](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subformulario](FormObjects/subform_overview.md) - [Control de pestañas](FormObjects/tabControl.md) - [Área Web](FormObjects/webArea_overview.md) | El formulario está a punto de salir y liberarse | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onValidate.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onValidate.md index be10ac3ab75d4d..5a75184b752c45 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onValidate.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/onValidate.md @@ -10,7 +10,7 @@ title: On Validate ## Descripción -This event is triggered when the record data entry has been validated, for example after an `accept` [standard action](FormObjects/properties_Action.md#standard-action). +Este evento se activa cuando se ha validado la entrada de datos del registro, por ejemplo después de una [acción estándar ](FormObjects/properties_Action.md#standard-action) `accept`. ### Subformulario diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/overview.md b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/overview.md index e5b0cce2fc56ba..c421ce75f67d63 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/Events/overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/Events/overview.md @@ -28,7 +28,7 @@ Cada evento es devuelto como un objeto por el comando `FORM Event`. Por defecto, Se devuelven propiedades adicionales cuando el evento se produce en objetos específicos. En particular: -- [list boxes](FormObjects/listbox-object.md#supported-form-events) and [list box columns](FormObjects/listbox-column.md#supported-form-events) return [additional properties](FormObjects/listbox-object.md#supported-form-events) such as `columnName` or `isRowSelected`. +- Los [list box](FormObjects/listbox-object.md#supported-form-events) y las [columnas de list box](FormObjects/listbox-column.md#supported-form-events) devuelven las [propiedades adicionales](FormObjects/listbox-object.md#supported-form-events) tales como `columnName` o `isRowSelected`. - Las [áreas de View Pro](FormObjects/viewProArea_overview.md) devuelven por ejemplo las propiedades `sheetName` o `action` en el objeto evento [On After Edit](onAfterEdit.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md index dd85d58a049e18..553a8e7a57d642 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y cambiar el tamaño de los objetos del formulario.
    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Desplazamiento](#moving-objects) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -235,12 +235,12 @@ La agrupación sólo afecta a los objetos en el editor de formularios. Cuando se Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. -2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. +2. Elija **Agrupar** en el menú Objetos. O Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:
    ![](../assets/en/FormEditor/group.png) 4D marca el límite de los objetos recién agrupados con manijas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca los bordes de los objetos individuales con marcas. +2. Seleccione **Desagrupar** en el menú **Objeto**.
    O
    Haga clic en el botón **Desagrupar** (variante del botón **Agrupar**) de la barra de herramientas del editor de formularios.
    Si **Desagrupar** aparece atenuado, significa que el objeto seleccionado ya está separado en su forma más simple. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -304,7 +304,7 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. En la barra de herramientas, haga clic en la herramienta de distribución correspondiente a la distribución que desee aplicar.
    ![](../assets/en/FormEditor/distributionTool.png)
    O
    Seleccione un comando de menú de distribución en el submenú **Alinear** del menú **Objeto** o en el menú contextual del editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. +3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Icono de distribución horizontal estándar)
    El área de ejemplo muestra los resultados de su selección. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    +4. Para realizar una distribución que utiliza el esquema estándar, haga clic en **Vista previa** o *Aplica*.
    En este caso, 4D realizará una distribución estándar para que los objetos estén espaciados de manera equitativa entre ellos.
    O:
    para ejecutar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdo, central (hor.) y derecho de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y bordes inferiores de los objetos seleccionados. @@ -378,7 +378,7 @@ Para ver o cambiar el orden de entrada: El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. +2. Para cambiar el orden de entrada de datos, ubique el puntero sobre un objeto del formulario y mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee a continuación en el orden de entrada de datos.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D ajustará el orden de entrada en consecuencia. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/IMAPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/IMAPTransporterClass.md index 6d20cd06f10a24..282930daf2004f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/IMAPTransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/IMAPTransporterClass.md @@ -72,18 +72,18 @@ El comando `IMAP New transporter` ](#acceptunsecureconnection)    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](#checkconnectiondelay)    | 300 | -| [](#connectiontimeout)    | 30 | -| [](#host)    | *mandatory* | -| [](#logfile)    | ninguno | -| .**password**: Text
    Contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | -| [](#port)    | 993 | -| [](#user)    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](#acceptunsecureconnection)    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | +| [](#authenticationmode)    | the most secure authentication mode supported by the server is used | +| [](#checkconnectiondelay)    | 300 | +| [](#connectiontimeout)    | 30 | +| [](#host)    | *mandatory* | +| [](#logfile)    | ninguno | +| .**password**: Text
    Contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](#imap-transporter-object)*. | ninguno | +| [](#port)    | 993 | +| [](#user)    | ninguno | > **Atención**: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil. #### Resultado @@ -356,12 +356,12 @@ La propiedad `.checkConnectionDelay` contiene
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|destinationBox|Text|->|Mailbox to receive copied messages| -|Result|Object|<-|Status of the copy operation| +|msgsIDs|Collection|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|destinationBox|Text|->|Buzón para recibir los mensajes copiados| +|Resultado|Object|<-|Status of the copy operation|
    @@ -540,11 +540,11 @@ End for each
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|Result|Object|<-|Status of the delete operation| +|msgsIDs|Colección|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|Resultado|Object|<-|Status of the delete operation|
    @@ -974,12 +974,12 @@ Caracter delimitador del nombre del buzón.
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|->|Sequence number of the message| -|msgID|Text|->|Unique ID of the message| -|options|Object|->|Message handling instructions| -|Result|Object|<-|[Email object](EmailObjectClass.md#email-object)| +|msgNumber|Integer|->|Número de secuencia del mensaje| +|msgID|Text|->|Identificación única del mensaje| +|options|Object|->|Instrucciones de gestión del mensaje| +|Resultado|Object|<-|[Email object](EmailObjectClass.md#email-object)|
    @@ -1050,13 +1050,13 @@ Quiere obtener el mensaje con ID = 1:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|ids |Collection|->|Collection of message ID| -|startMsg|Integer|->|Sequence number of the first message| -|endMsg |Integer|->|Sequence number of the last message| -|options|Object|->|Message handling instructions| -|Result|Object|<-|Object containing:
    • una colección de [objetos Email](EmailObjectClass.md#email-object) y
    • una colección de identificadores o números para los mensajes que faltan, si los hay
    | +|ids |Collection|->|Colección de ID de mensaje| +|startMsg|Integer|->|Número de secuencia del primer mensaje| +|endMsg |Integer|->|Número de secuencia del último mensaje| +|options|Object|->|Instrucciones de gestión de mensajes| +|Resultado|Object|<-|Object containing:
    • una colección de [objetos Email](EmailObjectClass.md#email-object) y
    • una colección de identificadores o números para los mensajes que faltan, si los hay
    |
    @@ -1153,11 +1153,11 @@ Quiere recuperar los 20 correos electrónicos más recientes sin cambiar el esta
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|-> |Sequence number of the message| -|msgID|Text|-> |Unique ID of the message| -|updateSeen|Boolean|->|If True, the message is marked "seen" in the mailbox. Si es False el mensaje se deja intacto.| +|msgNumber|Integer|-> |Número de secuencia del mensaje| +|msgID|Text|-> |Identificación única del mensaje| +|updateSeen|Boolean|->|Si es True, el mensaje se marca como "visto" en el buzón. Si es False el mensaje se deja intacto.| |Resultado|BLOB|<-|Blob of the MIME string returned from the mail server|
    @@ -1230,12 +1230,12 @@ El parámetro opcional *updateSeen* permite indicar si el mensaje está marcado
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgsIDs|Collection|->|Collection of message unique IDs (strings)| -|allMsgs|Integer|->|`IMAP all`: All messages in the selected mailbox| -|destinationBox|Text|->|Mailbox to receive moved messages| -|Result|Object|<-|Status of the move operation| +|msgsIDs|Collection|->|Colección de IDs únicos de mensajes (cadenas)| +|allMsgs|Integer|->|`IMAP all`: todos los mensajes del buzón seleccionado| +|destinationBox|Text|->|Buzón para recibir los mensajes movidos| +|Resultado|Object|<-|Status of the move operation|
    @@ -1334,11 +1334,11 @@ Para mover todos los mensajes del buzón actual:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |-----|--- |:---:|------| -|startMsg|Integer|-> |Sequence number of the first message| -|endMsg|Integer|->|Sequence number of the last message| -|Result|Collection|<-|Collection of unique IDs| +|startMsg|Integer|-> |Número de secuencia del primer mensaje| +|endMsg|Integer|->|Número de secuencia del último mensaje| +|Resultado|Collection||<-|Collection of unique IDs|
    @@ -1400,17 +1400,17 @@ La función devuelve una colección de cadenas (IDs únicos).
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgIDs|any|->|Collection of strings: Message unique IDs (text)
    Text: Unique ID of a message
    Longint (IMAP all): All messages in the selected mailbox| -|keywords|Object|->|Keyword flags to remove| +|msgIDs|any|->|Colección de cadenas: Identificadores únicos de mensajes (texto)
    Texto: ID único de un mensaje
    Longint (IMAP all): todos los mensajes del buzón seleccionado| +|keywords|Object|->|Banderas de palabras clave a eliminar| |Result|Object|<-|Status of the removeFlags operation|
    #### Descripción -The `.delete()` function sets the "deleted" flag for the messages defined in `msgsIDs` or `allMsgs`. +La función `.removeFlags()` elimina las banderas de los `msgIDs` para las `palabras clave` especificadas. En el parámetro `msgIDs`, puede pasar: @@ -1491,11 +1491,11 @@ $status:=$transporter.removeFlags(IMAP all;$flags)
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|currentName|Text|->|Name of the current mailbox| -|newName|Text|->|New mailbox name| -|Result|Object|<-|Status of the renaming operation| +|currentName|Text|->|Nombre del buzón actual| +|newName|Text|->|Nombre del nuevo buzón| +|Resultado|Object|<-|Status of the renaming operation|
    @@ -1655,7 +1655,7 @@ Las claves de búsqueda pueden solicitar el valor a buscar: * **Marcadores**: los valores de tipo marcador (flags) aceptan una o varias palabras claves (incluyendo marcadores estándar) separados por espacios. Ejemplo: `searchCriteria = KEYWORD \Flagged \Draft` -* **Conjunto de mensajes**: identifica un conjunto de mensajes. En el caso de los números de secuencia de los mensajes, se trata de números consecutivos desde el 1 hasta el número total de mensajes en el buzón. Los números son separados por coma; un dos puntos (:) delimita entre dos números inclusive. Examples: `2,4:7,9,12:*` is `2,4,5,6,7,9,12,13,14,15` for a mailbox with 15 messages. `searchCriteria = 1:5 ANSWERED` busca en la selección de mensajes 1 a 5, los mensajes que tienen el marcador \Answered. `searchCriteria= 2,4 ANSWERED` busca en la selección de mensajes (números de mensaje 2 y 4) los mensajes que tienen el marcador \Answered. +* **Conjunto de mensajes**: identifica un conjunto de mensajes. En el caso de los números de secuencia de los mensajes, se trata de números consecutivos desde el 1 hasta el número total de mensajes en el buzón. Los números son separados por coma; un dos puntos (:) delimita entre dos números inclusive. Ejemplos: `2,4:7,9,12:*` es `2,4,5,6,7,9,12,13,14,15` para un buzón con 15 mensajes. `searchCriteria = 1:5 ANSWERED` busca en la selección de mensajes 1 a 5, los mensajes que tienen el marcador \Answered. `searchCriteria= 2,4 ANSWERED` busca en la selección de mensajes (números de mensaje 2 y 4) los mensajes que tienen el marcador \Answered. #### Teclas de búsqueda disponibles @@ -1716,11 +1716,11 @@ Las claves de búsqueda pueden solicitar el valor a buscar:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|name|Text|-> |Name of the mailbox| -|state|Integer|->|Mailbox access status| -|Result|Object|<-|boxInfo object| +|name|Text|-> |Nombre del buzón| +|state|Integer|->|Estado de acceso al buzón| +|Resultado|Object|<-|boxInfo object|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/POP3TransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/POP3TransporterClass.md index ab9e5b49356db0..e5341f75a88e9a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/POP3TransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/POP3TransporterClass.md @@ -60,17 +60,17 @@ El comando `POP3 New transporter` ](#acceptunsecureconnection)    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No devuelto en el objeto *[POP3 transporter](#pop3-transporter-object)*. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](#connectiontimeout)    | 30 | -| [](#host)    | *mandatory* | -| [](#logfile)    | ninguno | -| **.password**: Text
    Contraseña de usuario para la autenticación en el servidor. No devuelto en el objeto *[POP3 transporter](#pop3-transporter-object)*. | ninguno | -| [](#port)    | 995 | -| [](#user)    | ninguno | +| *server* | Valor por defecto (si se omite) | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](#acceptunsecureconnection)    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No devuelto en el objeto *[POP3 transporter](#pop3-transporter-object)*. | ninguno | +| [](#authenticationmode)    | the most secure authentication mode supported by the server is used | +| [](#connectiontimeout)    | 30 | +| [](#host)    | *mandatory* | +| [](#logfile)    | ninguno | +| **.password**: Text
    Contraseña de usuario para la autenticación en el servidor. No devuelto en el objeto *[POP3 transporter](#pop3-transporter-object)*. | ninguno | +| [](#port)    | 995 | +| [](#user)    | ninguno | #### Resultado @@ -341,10 +341,10 @@ Quiere saber el remitente del primer correo del buzón:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|msgNumber|Integer|->|Number of the message in the list | -|Result|Object|<-|mailInfo object| +|msgNumber|Integer|->|Número del mensaje en la lista | +|Resultado|Objeto|<-|mailInfo object|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SMTPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SMTPTransporterClass.md index cb77d66dfe8333..a7e46cfef089cb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SMTPTransporterClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SMTPTransporterClass.md @@ -64,21 +64,21 @@ El comando `SMTP New transporter` ](#acceptunsecureconnection)    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | -| [](#authenticationmode)    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](#bodycharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | -| [](#connectiontimeout)    | 30 | -| [](#headercharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | -| [](#host)    | *mandatory* | -| [](#keepalive)    | True | -| [](#logfile)    | ninguno | -| **password**: Text
    Contraseña usuario para la autenticación en el servidor. Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | -| [](#port)    | 587 | -| [](#sendtimeout)    | 100 | -| [](#user)    | ninguno | +| *server* | Valor por defecto (si se omite) | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](#acceptunsecureconnection)    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 `authenticationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | +| [](#authenticationmode)    | the most secure authentication mode supported by the server is used | +| [](#bodycharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | +| [](#connectiontimeout)    | 30 | +| [](#headercharset)    | `mail mode UTF8` (US-ASCII_UTF8_QP) | +| [](#host)    | *mandatory* | +| [](#keepalive)    | True | +| [](#logfile)    | ninguno | +| **password**: Text
    Contraseña usuario para la autenticación en el servidor. Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | +| [](#port)    | 587 | +| [](#sendtimeout)    | 100 | +| [](#user)    | ninguno | #### Resultado @@ -217,10 +217,10 @@ La conexión SMTP se cierra automáticamente:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|mail|Object|->|[Email](EmailObjectClass.md#email-object) to send| -|Result|Object|<-|SMTP status| +|mail|Object|->|[Email](EmailObjectClass.md#email-object) a enviar| +|Resultado|Object|<-|SMTP status|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SessionClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SessionClass.md index 0ebb70a0017174..5416d01611ca2f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SessionClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SessionClass.md @@ -307,11 +307,11 @@ End if
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|privilege|Text|->|Privilege name| -|privileges|Collection|->|Collection of privilege names| -|settings|Object|->|Object with a "privileges" property (string or collection)| +|privilege|Text|->|Nombre de privilegio| +|privileges|Collection|->|Colección de nombres de privilegio| +|settings|Object|->Objeto con una propiedad "privilegios" (cadena o colección)|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SignalClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SignalClass.md index 398a9118ad1b71..d3af628bda723b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/SignalClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/SignalClass.md @@ -111,10 +111,10 @@ Método ***OpenForm***:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|description|Text|->|Description for the signal| -|Result|4D.Signal|<-|Native object encapsulating the signal| +|description|Text|->|Descripción de la señal| +|Resultado|4D.Señal|<-|Native object encapsulating the signal|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/WebServerClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/WebServerClass.md index aa9bfd85671336..5423d93287e06b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/WebServerClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/WebServerClass.md @@ -73,10 +73,10 @@ Ofrecen las siguientes propiedades y funciones:
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---|---|----|---| -|option|Integer|->|Web server to get (default if omitted = `Web server database`)| -|Result|4D.WebServer|<-|Web server object| +|option|Integer|->|Servidor web a obtener (por defecto si se omite = `Web server database`)| +|Resultado|4D.WebServer|<-|Web server object|
    @@ -178,7 +178,7 @@ Camino de la carpeta donde **.characterSet** : Number
    **.characterSet** : Text -El conjunto de caracteres que el servidor web 4D debe utilizar para comunicarse con los navegadores conectados a la aplicación. El valor por defecto depende del lenguaje del sistema operativo. Puede ser un entero MIBEnum o una cadena Name, identificadores [definidos por IANA](http://www.iana.org/assignments/character-sets/character-sets.xhtml). Aquí está la lista de identificadores correspondientes a los conjuntos de caracteres soportados por el servidor web 4D: +The conjunto de caracteres que el servidor web 4D debe utilizar para comunicarse con los navegadores conectados a la aplicación. El valor por defecto depende del lenguaje del sistema operativo. Puede ser un entero MIBEnum o una cadena Name, identificadores [definidos por IANA](http://www.iana.org/assignments/character-sets/character-sets.xhtml). Aquí está la lista de identificadores correspondientes a los conjuntos de caracteres soportados por el servidor web 4D: - 4 = ISO-8859-1 - 12 = ISO-8859-9 @@ -203,7 +203,7 @@ El conjunto de caracteres que e **.cipherSuite** : Text -El lista de cifrado utilizada para el protocolo seguro. Define la prioridad de los algoritmos de cifrado implementados por el servidor web de 4D. Puede ser una secuencia de cadenas separadas por dos puntos (por ejemplo "ECDHE-RSA-AES128-..."). Ver la [página de cifrados](https://www.openssl.org/docs/manmaster/man1/ciphers.html) en el sitio OpenSSL. +The lista de cifrado utilizada para el protocolo seguro. Define la prioridad de los algoritmos de cifrado implementados por el servidor web de 4D. Puede ser una secuencia de cadenas separadas por dos puntos (por ejemplo "ECDHE-RSA-AES128-..."). Ver la [página de cifrados](https://www.openssl.org/docs/manmaster/man1/ciphers.html) en el sitio OpenSSL. @@ -214,7 +214,7 @@ El lista de cifrado utilizada pa **.CORSEnabled** : Boolean -El estado del servicio CORS (*Cross-origin resource sharing*) para el servidor web. Por razones de seguridad, las peticiones "cross-domain" están prohibidas por defecto a nivel del navegador. Cuando está habilitado (True), las llamadas XHR (por ejemplo, peticiones REST) de páginas web fuera del dominio pueden ser permitidas en su aplicación (necesita definir la lista de direcciones permitidas en la lista de dominios CORS, ver `CORSSettings` abajo). Cuando se desactiva (False, por defecto), se ignoran todas las peticiones cruzadas enviadas con CORS. Cuando se activa (True) y un dominio o método no permitido envía una solicitud de sitio cruzado, se rechaza con una respuesta de error "403 - prohibido". +The estado del servicio CORS (*Cross-origin resource sharing*) para el servidor web. Por razones de seguridad, las peticiones "cross-domain" están prohibidas por defecto a nivel del navegador. Cuando está habilitado (True), las llamadas XHR (por ejemplo, peticiones REST) de páginas web fuera del dominio pueden ser permitidas en su aplicación (necesita definir la lista de direcciones permitidas en la lista de dominios CORS, ver `CORSSettings` abajo). Cuando se desactiva (False, por defecto), se ignoran todas las peticiones cruzadas enviadas con CORS. Cuando se activa (True) y un dominio o método no permitido envía una solicitud de sitio cruzado, se rechaza con una respuesta de error "403 - prohibido". Por defecto: False (desactivado) @@ -255,7 +255,7 @@ Contiene el lista de hosts y m **.debugLog** : Number -El estado del archivo de log de las peticiones HTTP (HTTPDebugLog_nn.txt, almacenado en la carpeta "Logs" de la aplicación -- nn es el número del archivo). +The estado del archivo de log de las peticiones HTTP (HTTPDebugLog_nn.txt, almacenado en la carpeta "Logs" de la aplicación -- nn es el número del archivo). - 0 = desactivado - 1 = activado sin partes del cuerpo (en este caso se suministra el tamaño del cuerpo) @@ -272,7 +272,7 @@ El estado del archivo de log de las **.defaultHomepage** : Text -El nombre de la página de inicio por defecto o "" para no enviar la página de inicio personalizada. +The nombre de la página de inicio por defecto o "" para no enviar la página de inicio personalizada. @@ -283,7 +283,7 @@ El nombre de la página de i **.HSTSEnabled** : Boolean -El estado del HTTP Strict Transport Security (HSTS). HSTS permite al servidor web declarar que los navegadores sólo deben interactuar con él a través de conexiones HTTPS seguras. Los navegadores registrarán la información HSTS la primera vez que reciban una respuesta del servidor web, luego cualquier solicitud HTTP futura se transformará automáticamente en solicitudes HTTPS. El tiempo que esta información es almacenada por el navegador se especifica con la propiedad `HSTSMaxAge`. HSTS requiere que HTTPS esté activado en el servidor. HTTP también debe estar activado para permitir las conexiones cliente iniciales. +The estado del HTTP Strict Transport Security (HSTS). HSTS permite al servidor web declarar que los navegadores sólo deben interactuar con él a través de conexiones HTTPS seguras. Los navegadores registrarán la información HSTS la primera vez que reciban una respuesta del servidor web, luego cualquier solicitud HTTP futura se transformará automáticamente en solicitudes HTTPS. El tiempo que esta información es almacenada por el navegador se especifica con la propiedad `HSTSMaxAge`. HSTS requiere que HTTPS esté activado en el servidor. HTTP también debe estar activado para permitir las conexiones cliente iniciales. @@ -296,7 +296,7 @@ El estado del HTTP Strict Transp **.HSTSMaxAge** : Number -El duración máxima (en segundos) de activación de HSTS para cada nueva conexión cliente. Esta información se almacena del lado del cliente durante el tiempo especificado. +The duración máxima (en segundos) de activación de HSTS para cada nueva conexión cliente. Esta información se almacena del lado del cliente durante el tiempo especificado. Valor por defecto: 63072000 (2 años). @@ -309,7 +309,7 @@ Valor por defecto: 63072000 (2 años). **.HTTPCompressionLevel** : Number -El nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones clientes o respuestas servidor). Este selector permite optimizar los intercambios priorizando la velocidad de ejecución (menos compresión) o la cantidad de compresión (menos velocidad). +The nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones clientes o respuestas servidor). Este selector permite optimizar los intercambios priorizando la velocidad de ejecución (menos compresión) o la cantidad de compresión (menos velocidad). Valores posibles: @@ -327,7 +327,7 @@ Valores posibles: **.HTTPCompressionThreshold** : Number -El umbral de tamaño (bytes) de las peticiones por debajo del cual no se deben comprimir los intercambios. Este parámetro es útil para evitar la pérdida de tiempo de la máquina al comprimir los intercambios pequeños. +The umbral de tamaño (bytes) de las peticiones por debajo del cual no se deben comprimir los intercambios. Este parámetro es útil para evitar la pérdida de tiempo de la máquina al comprimir los intercambios pequeños. Umbral de compresión por defecto = 1024 bytes @@ -340,7 +340,7 @@ Umbral de compresión por defecto = 1024 bytes **.HTTPEnabled** : Boolean -El estado del protocolo HTTP. +The estado del protocolo HTTP. @@ -351,7 +351,7 @@ El estado del protocolo HTTP**.HTTPPort** : Number -El número de puerto IP de escucha para HTTP. +The número de puerto IP de escucha para HTTP. Por defecto = 80 @@ -364,7 +364,7 @@ Por defecto = 80 **.HTTPTrace** : Boolean -El activación de `HTTP TRACE`. Por razones de seguridad, por defecto el servidor web rechaza las peticiones `HTTP TRACE` con un error 405. Cuando se activa, el servidor web responde a las peticiones `HTTP TRACE` con la línea de petición, el encabezado y el cuerpo. +The activación de `HTTP TRACE`. Por razones de seguridad, por defecto el servidor web rechaza las peticiones `HTTP TRACE` con un error 405. Cuando se activa, el servidor web responde a las peticiones `HTTP TRACE` con la línea de petición, el encabezado y el cuerpo. @@ -375,7 +375,7 @@ El activación de `HTTP TRACE`**.HTTPSEnabled** : Boolean -El estado del protocolo HTTPS. +The estado del protocolo HTTPS. @@ -386,7 +386,7 @@ El estado del protocolo HTTPS**.HTTPSPort** : Number -El número de puerto IP de escucha para HTTPS. +The número de puerto IP de escucha para HTTPS. Por defecto = 443 @@ -400,7 +400,7 @@ Por defecto = 443 > Esta propiedad no se devuelve en [modo sesiones escalables](#scalablesession). -El duración de vida (en minutos) de los procesos de sesión legacy inactivos. Al final del tiempo de espera, el proceso se mata en el servidor, se llama al método base `On Web Legacy Close Session` y se destruye el contexto de la sesión heredada. +The duración de vida (en minutos) de los procesos de sesión legacy inactivos. Al final del tiempo de espera, el proceso se mata en el servidor, se llama al método base `On Web Legacy Close Session` y se destruye el contexto de la sesión heredada. Por defecto = 480 minutos @@ -414,7 +414,7 @@ Por defecto = 480 minutos > Esta propiedad no se devuelve en [modo sesiones escalables](#scalablesession). -El duración de vida (en minutos) de las sesiones legacy inactivas (duración definida en la cookie). Al final de este periodo, la cookie de sesión expira y deja de ser enviada por el cliente HTTP. +The duración de vida (en minutos) de las sesiones legacy inactivas (duración definida en la cookie). Al final de este periodo, la cookie de sesión expira y deja de ser enviada por el cliente HTTP. Por defecto = 480 minutos @@ -427,7 +427,7 @@ Por defecto = 480 minutos **.IPAddressToListen** : Text -El Dirección IP en la que el servidor web 4D recibirá las peticiones HTTP. Por defecto, no se define ninguna dirección específica. Se soportan tanto los formatos de cadena IPv6 como los IPv4. +The Dirección IP en la que el servidor web 4D recibirá las peticiones HTTP. Por defecto, no se define ninguna dirección específica. Se soportan tanto los formatos de cadena IPv6 como los IPv4. @@ -440,7 +440,7 @@ El Dirección IP en la que *Propiedad de sólo lectura* -El estado de ejecución del servidor web. +The estado de ejecución del servidor web. @@ -466,7 +466,7 @@ Contiene `True` si las sesiones **.logRecording** : Number -El valor de registro del log de peticiones (logweb.txt). +The valor de registro del log de peticiones (logweb.txt). - 0 = No registrar (por defecto) - 1 = Registro en formato CLF @@ -483,7 +483,7 @@ El valor de registro del log de **.maxConcurrentProcesses** : Number -El número máximo de procesos web simultáneos soportados por el servidor web. Cuando se alcance este número (menos uno), 4D no creará ningún otro proceso y devolverá el estado HTTP 503 - Servicio no disponible a todas las nuevas peticiones. +The número máximo de procesos web simultáneos soportados por el servidor web. Cuando se alcance este número (menos uno), 4D no creará ningún otro proceso y devolverá el estado HTTP 503 - Servicio no disponible a todas las nuevas peticiones. Valores posibles: 500000 - 2147483647 @@ -523,7 +523,7 @@ Contiene el número máximo de s **.minTLSVersion** : Number -El versión mínima de TLS aceptada para las conexiones. Se rechazarán los intentos de conexión de clientes que sólo soporten versiones inferiores a la mínima. +The versión mínima de TLS aceptada para las conexiones. Se rechazarán los intentos de conexión de clientes que sólo soporten versiones inferiores a la mínima. Valores posibles: @@ -545,7 +545,7 @@ Valores posibles: *Propiedad de sólo lectura* -El nombre de la aplicación del servidor web. +The nombre de la aplicación del servidor web. @@ -558,7 +558,7 @@ El nombre de la aplicación del servido *Propiedad de sólo lectura* -El versión de la librería OpenSSL utilizada. +The versión de la librería OpenSSL utilizada. @@ -571,7 +571,7 @@ El versión de la librería O *Propiedad de sólo lectura* -El disponibilidad de PFS en el servidor. +The disponibilidad de PFS en el servidor. @@ -581,7 +581,7 @@ El disponibilidad de P **.rootFolder** : Text -El ruta de la carpeta raíz del servidor web. La ruta se formatea en la ruta completa POSIX utilizando filesystems. Cuando se utiliza esta propiedad en el parámetro `settings`, puede ser un objeto `Folder`. +The ruta de la carpeta raíz del servidor web. La ruta se formatea en la ruta completa POSIX utilizando filesystems. Cuando se utiliza esta propiedad en el parámetro `settings`, puede ser un objeto `Folder`. @@ -607,7 +607,7 @@ Contiene `True` si las sesio **.sessionCookieDomain** : Text -El campo "domain" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/*.4d.fr" para este selector, el cliente sólo enviará una cookie cuando la solicitud se dirija al dominio ".4d.fr", lo que excluye a los servidores que alojan datos estáticos externos. +The campo "domain" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/*.4d.fr" para este selector, el cliente sólo enviará una cookie cuando la solicitud se dirija al dominio ".4d.fr", lo que excluye a los servidores que alojan datos estáticos externos. @@ -618,7 +618,7 @@ El campo "domain" de la **.sessionCookieName** : Text -El nombre de la cookie utilizada para almacenar el ID de sesión. +The nombre de la cookie utilizada para almacenar el ID de sesión. *Propiedad de sólo lectura* @@ -631,7 +631,7 @@ El nombre de la cookie uti **.sessionCookiePath** : Text -El campo "path" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/4DACTION" para este selector, el cliente sólo enviará una cookie para las peticiones dinámicas que empiecen por 4DACTION, y no para las imágenes, páginas estáticas, etc. +The campo "path" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/4DACTION" para este selector, el cliente sólo enviará una cookie para las peticiones dinámicas que empiecen por 4DACTION, y no para las imágenes, páginas estáticas, etc. @@ -650,7 +650,7 @@ El campo "path" de la cook **.sessionCookieSameSite** : Text -El valor de la cookie de session "SameSite". Valores posibles (utilizando constantes): +The valor de la cookie de session "SameSite". Valores posibles (utilizando constantes): | Constante | Valor | Descripción | | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -671,7 +671,7 @@ Ver la descripción de [Session Cookie SameSite](WebServer/webServerConfig.md#se > Esta propiedad no se utiliza en el modo [sesiones escalables](#scalablesession) (no hay validación de la dirección IP). -El validación de la dirección IP para las cookies de sesión. Por razones de seguridad, por defecto el servidor web comprueba la dirección IP de cada solicitud que contiene una cookie de sesión y la rechaza si esta dirección no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, es posible que desee desactivar esta validación y aceptar las cookies de sesión, incluso cuando sus direcciones IP no coinciden. Por ejemplo, cuando los dispositivos móviles cambian entre las redes WiFi y 3G/4G, su dirección IP cambiará. En este caso, puede permitir que los clientes puedan seguir utilizando sus sesiones web incluso cuando las direcciones IP cambien (esta configuración reduce el nivel de seguridad de su aplicación). +The validación de la dirección IP para las cookies de sesión. Por razones de seguridad, por defecto el servidor web comprueba la dirección IP de cada solicitud que contiene una cookie de sesión y la rechaza si esta dirección no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, es posible que desee desactivar esta validación y aceptar las cookies de sesión, incluso cuando sus direcciones IP no coinciden. Por ejemplo, cuando los dispositivos móviles cambian entre las redes WiFi y 3G/4G, su dirección IP cambiará. En este caso, puede permitir que los clientes puedan seguir utilizando sus sesiones web incluso cuando las direcciones IP cambien (esta configuración reduce el nivel de seguridad de su aplicación). @@ -693,10 +693,10 @@ El validación de
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---|---|----|---| -|settings|Object|->|Web server settings to set at startup| -|Result|Object|<-|Status of the web server startup| +|settings|Object|->|Configuración del servidor web para establecer al inicio| +|Resultado|Object|<-|Status of the web server startup|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/API/ZipArchiveClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20/API/ZipArchiveClass.md index c09f3b96f75cf9..924626c22cedb8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/API/ZipArchiveClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/API/ZipArchiveClass.md @@ -52,14 +52,14 @@ End if
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|fileToZip|4D.File|->|File or Folder object to compress| -|folderToZip|4D.Folder|->|File or Folder object to compress| -|zipStructure|Object|->|File or Folder object to compress| -|destinationFile|4D.File|->|Destination file for the archive| -|options|Integer|->|*folderToZip* option: `ZIP Without enclosing folder`| -|Result|Object|<-|Status object| +|fileToZip|4D.File|->|Objeto Archivo o Carpeta a comprimir| +|folderToZip|4D.Folder|->|Objeto Archivo o Carpeta a comprimir| +|zipStructure|Object|->|Objeto Archivo o Carpeta a comprimir| +|destinationFile|4D.File|->|Archivo de destino del archivo| +|options|Integer|->|Opción *folderToZip*: `ZIP Without enclosing folder`| +|Resultado|Object|<-|Status object|
    @@ -77,7 +77,7 @@ Puede pasar un objeto 4D.File, 4D.Folder, o una estructura zip como primer pará | Propiedad | Tipo | Descripción | | ------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| compression | Integer |
  • `ZIP Compression standard`: Reducir la compresión (por defecto)
  • `ZIP Compression LZMA`: compresión LZMA
  • `ZIP Compression XZ`: compresión XZ
  • `ZIP Compression none`: sin compresión
  • | +| compression | Integer |
  • `ZIP Compression standard`: reducir la compresión (por defecto)
  • `ZIP Compression LZMA`: compresión LZMA
  • `ZIP Compression XZ`: compresión XZ
  • `ZIP Compression none`: sin compresión
  • | | level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omiten:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | | encryption | Integer | La encriptación a utilizar si se define una contraseña:
  • `ZIP Encryption AES128`: encriptación AES con una llave de 128 bits.
  • `ZIP Encryption AES192`: encriptación AES con una llave de 192 bits.
  • `ZIP Encryption AES256`: encriptación AES con una llave de 256 bits (por defecto si se define la contraseña).
  • `ZIP Encryption none`: los datos no están encriptados (por defecto si no se define una contraseña)
  • | | contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | @@ -208,11 +208,11 @@ $err:=ZIP Create archive($zip; $destination)
    -|Parameter|Type||Description| +|Parámetro|Tipo||Descripción| |---------|--- |:---:|------| -|zipFile|4D.File|->|Zip archive file| -|password|Text|->|ZIP archive password if any| -|Result|4D.ZipArchive|<-|Archive object| +|zipFile|4D.File|->|Archivo Zip| +|password|Text|->|Contraseña del archivo Zip si la hubiera| +|Resultado|4D.ZipArchive|<-|Archive object|
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAfterKeystroke.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAfterKeystroke.md index 9a329090b9540b..f3580605419424 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAfterKeystroke.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAfterKeystroke.md @@ -24,7 +24,7 @@ Después de que las propiedades de evento [`On Before Keystroke`](onBeforeKeystr El evento `On After Keystroke` no se genera: -- in [list box columns](FormObjects/listbox-column.md) method except when a cell is being edited (however it is generated in any cases in the [list box](FormObjects/listbox_overview.md) method), +- en el método [columnas de list box](FormObjects/listbox-column.md) excepto cuando se está editando una celda (sin embargo se genera en cualquier caso en el método [list box](FormObjects/listbox_overview.md)), - cuando las modificaciones usuario no se realizan con el teclado (pegar, arrastrar y soltar, casilla de verificación, lista desplegable, combo box). Para procesar estos eventos, debe utilizar [`On After Edit`](onAfterEdit.md). ### Secuencia de tecla diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAlternativeClick.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAlternativeClick.md index e7d25d23ffdd4f..93d46702e3f75a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAlternativeClick.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onAlternativeClick.md @@ -5,7 +5,7 @@ title: On Alternative Click | Code | Puede ser llamado por | Definición | | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| 38 | [Button](FormObjects/button_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) |
  • Botones: el área "flecha" de un botón se presiona
  • List box: en una columna de un array, se hace clic en un botón de selección (atributo "alternateButton")
  • | +| 38 | [Botón](FormObjects/button_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna List Box](FormObjects/listbox-column.md) |
  • Botones: el área "flecha" de un botón se presiona
  • List box: en una columna de un array, se hace clic en un botón de selección (atributo "alternateButton")
  • | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onBeforeKeystroke.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onBeforeKeystroke.md index 94bbe0765c588c..456a067a0578c1 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onBeforeKeystroke.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onBeforeKeystroke.md @@ -22,7 +22,7 @@ Después de haber seleccionado los eventos `On Before Keystroke` y [`On After Ke El evento `On Before Keystroke` no se genera: -- in a [List Box Column](FormObjects/listbox-column.md) method except when a cell is being edited (however it is generated in any cases in the [list box](FormObjects/listbox_overview.md) method), +- en un método [columna List Box](FormObjects/listbox-column.md) excepto cuando se está editando una celda (sin embargo, se genera en cualquier caso en el método [List Box](FormObjects/listbox_overview.md)), - cuando las modificaciones usuario no se realizan con el teclado (pegar, arrastrar y soltar, casilla de verificación, lista desplegable, combo box). Para procesar estos eventos, debe utilizar [`On After Edit`](onAfterEdit.md). ### Objetos no editables diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onHeaderClick.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onHeaderClick.md index fa5f42768ee6de..61ac555ef4855f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onHeaderClick.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onHeaderClick.md @@ -3,9 +3,9 @@ id: onHeaderClick title: On Header Click --- -| Code | Puede ser llamado por | Definición | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | -| 42 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) | Se produce un clic en el encabezado de columna | +| Code | Puede ser llamado por | Definición | +| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | +| 42 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box](FormObjects/listbox-column.md) | Se produce un clic en el encabezado de columna | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onLoad.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onLoad.md index 16c1fe5b8dcad8..a351a0f239f2b5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onLoad.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onLoad.md @@ -3,9 +3,9 @@ id: onLoad title: On Load --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | -| 1 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview.md) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Tab control](FormObjects/tabControl.md) - [Web Area](FormObjects/webArea_overview.md) | El formulario está a punto de ser mostrado o impreso | +| Code | Puede ser llamado por | Definición | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | +| 1 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [Área 4D Write Pro](FormObjects/writeProArea_overview.md) - [Botón](FormObjects/button_overview.md) - [Rejilla de botones](FormObjects/buttonGrid_overview.md) - [Casilla de selección](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Lista desplegable](FormObjects/dropdownList_Overview.md) - Formulario - [Lista jerárquica](FormObjects/list_overview.md) - [Entrada](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box ](FormObjects/listbox-column.md) - [Botón imagen](FormObjects/pictureButton_overview.md) - [Menú pop up imagen](FormObjects/picturePopupMenu_overview.md) - [Área de plug-in](FormObjects/pluginArea_overview.md) - [Indicador de progreso ](FormObjects/progressIndicator.md) - [Botón radio](FormObjects/radio_overview.md) - [Regla](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subformulario](FormObjects/subform_overview.md) - [Control de pestañas](FormObjects/tabControl.md) - [Área Web](FormObjects/webArea_overview.md) | El formulario está a punto de ser mostrado o impreso | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onRowMoved.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onRowMoved.md index 6c7e4af8fa5ca4..539b7ce688f0f6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onRowMoved.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onRowMoved.md @@ -3,9 +3,9 @@ id: onRowMoved title: On Row Moved --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| 34 | [List Box of the array type](FormObjects/listbox_overview.md#array-list-boxes) - [List Box Column](FormObjects/listbox-column.md) | Una línea de list box es movida por el usuario por medio de arrastrar y soltar | +| Code | Puede ser llamado por | Definición | +| ---- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| 34 | [List Box de tipo array](FormObjects/listbox_overview.md#array-list-boxes) - [List Box Columna](FormObjects/listbox-column.md) | Una línea de list box es movida por el usuario por medio de arrastrar y soltar | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onUnload.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onUnload.md index dea1e96bb1a951..fde2d0a10b100f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onUnload.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onUnload.md @@ -3,9 +3,9 @@ id: onUnload title: On Unload --- -| Code | Puede ser llamado por | Definición | -| ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | -| 24 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview.md) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox-column.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Tab control](FormObjects/tabControl.md) - [Web Area](FormObjects/webArea_overview.md) | El formulario está a punto de salir y liberarse | +| Code | Puede ser llamado por | Definición | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | +| 24 | [Área 4D View Pro](FormObjects/viewProArea_overview.md) - [Área 4D Write Pro](FormObjects/writeProArea_overview.md) - [Botón](FormObjects/button_overview.md) - [Rejilla de botones](FormObjects/buttonGrid_overview.md) - [Casilla de selección](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Lista desplegable](FormObjects/dropdownList_Overview.md) - Formulario - [Lista jerárquica](FormObjects/list_overview.md) - [Entrada](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Columna de List Box ](FormObjects/listbox-column.md) - [Botón imagen](FormObjects/pictureButton_overview.md) - [Menú pop up imagen](FormObjects/picturePopupMenu_overview.md) - [Área de plug-in](FormObjects/pluginArea_overview.md) - [Indicador de progreso ](FormObjects/progressIndicator.md) - [Botón radio](FormObjects/radio_overview.md) - [Regla](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subformulario](FormObjects/subform_overview.md) - [Control de pestañas](FormObjects/tabControl.md) - [Área Web](FormObjects/webArea_overview.md) | El formulario está a punto de salir y liberarse | ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onValidate.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onValidate.md index be10ac3ab75d4d..5a75184b752c45 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onValidate.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/onValidate.md @@ -10,7 +10,7 @@ title: On Validate ## Descripción -This event is triggered when the record data entry has been validated, for example after an `accept` [standard action](FormObjects/properties_Action.md#standard-action). +Este evento se activa cuando se ha validado la entrada de datos del registro, por ejemplo después de una [acción estándar ](FormObjects/properties_Action.md#standard-action) `accept`. ### Subformulario diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/overview.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/overview.md index b6c52763b8eb31..462b586912af54 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Events/overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Events/overview.md @@ -28,7 +28,7 @@ Cada evento es devuelto como un objeto por el comando `FORM Event`. Por defecto, Se devuelven propiedades adicionales cuando el evento se produce en objetos específicos. En particular: -- [list boxes](FormObjects/listbox-object.md#supported-form-events) and [list box columns](FormObjects/listbox-column.md#supported-form-events) return [additional properties](FormObjects/listbox-object.md#supported-form-events) such as `columnName` or `isRowSelected`. +- Los [list box](FormObjects/listbox-object.md#supported-form-events) y las [columnas de list box](FormObjects/listbox-column.md#supported-form-events) devuelven las [propiedades adicionales](FormObjects/listbox-object.md#supported-form-events) tales como `columnName` o `isRowSelected`. - Las [áreas de View Pro](FormObjects/viewProArea_overview.md) devuelven por ejemplo las propiedades `sheetName` o `action` en el objeto evento [On After Edit](onAfterEdit.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md index dd85d58a049e18..553a8e7a57d642 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y cambiar el tamaño de los objetos del formulario.
    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Desplazamiento](#moving-objects) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -235,12 +235,12 @@ La agrupación sólo afecta a los objetos en el editor de formularios. Cuando se Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. -2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. +2. Elija **Agrupar** en el menú Objetos. O Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:
    ![](../assets/en/FormEditor/group.png) 4D marca el límite de los objetos recién agrupados con manijas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca los bordes de los objetos individuales con marcas. +2. Seleccione **Desagrupar** en el menú **Objeto**.
    O
    Haga clic en el botón **Desagrupar** (variante del botón **Agrupar**) de la barra de herramientas del editor de formularios.
    Si **Desagrupar** aparece atenuado, significa que el objeto seleccionado ya está separado en su forma más simple. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -304,7 +304,7 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. En la barra de herramientas, haga clic en la herramienta de distribución correspondiente a la distribución que desee aplicar.
    ![](../assets/en/FormEditor/distributionTool.png)
    O
    Seleccione un comando de menú de distribución en el submenú **Alinear** del menú **Objeto** o en el menú contextual del editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. +3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Icono de distribución horizontal estándar)
    El área de ejemplo muestra los resultados de su selección. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    +4. Para realizar una distribución que utiliza el esquema estándar, haga clic en **Vista previa** o *Aplica*.
    En este caso, 4D realizará una distribución estándar para que los objetos estén espaciados de manera equitativa entre ellos.
    O:
    para ejecutar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdo, central (hor.) y derecho de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y bordes inferiores de los objetos seleccionados. @@ -378,7 +378,7 @@ Para ver o cambiar el orden de entrada: El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. +2. Para cambiar el orden de entrada de datos, ubique el puntero sobre un objeto del formulario y mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee a continuación en el orden de entrada de datos.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D ajustará el orden de entrada en consecuencia. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/imap-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/imap-new-transporter.md index dce455319860cf..aee7b4629d592d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/imap-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/imap-new-transporter.md @@ -34,18 +34,18 @@ El comando `IMAP New transporter` ](../API/IMAPTransporterClass.md#acceptunsecureconnection)
    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | -| [](../API/IMAPTransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](../API/IMAPTransporterClass.md#checkconnectiondelay)
    | 300 | -| [](../API/IMAPTransporterClass.md#connectiontimeout)
    | 30 | -| [](../API/IMAPTransporterClass.md#host)
    | *obligatorio* | -| [](../API/IMAPTransporterClass.md#logfile)
    | ninguno | -| .**password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | -| [](../API/IMAPTransporterClass.md#port)
    | 993 | -| [](../API/IMAPTransporterClass.md#user)
    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](../API/IMAPTransporterClass.md#acceptunsecureconnection)
    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | +| [](../API/IMAPTransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | +| [](../API/IMAPTransporterClass.md#checkconnectiondelay)
    | 300 | +| [](../API/IMAPTransporterClass.md#connectiontimeout)
    | 30 | +| [](../API/IMAPTransporterClass.md#host)
    | *obligatorio* | +| [](../API/IMAPTransporterClass.md#logfile)
    | ninguno | +| .**password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | +| [](../API/IMAPTransporterClass.md#port)
    | 993 | +| [](../API/IMAPTransporterClass.md#user)
    | ninguno | > **Atención**: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/pop3-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/pop3-new-transporter.md index 08e00c57313831..e11511d22fd9bb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/pop3-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/pop3-new-transporter.md @@ -34,17 +34,17 @@ El comando `POP3 New transporter` ](../API/POP3TransporterClass.md#acceptunsecureconnection)
    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | -| [](../API/POP3TransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](../API/POP3TransporterClass.md#connectiontimeout)
    | 30 | -| [](../API/POP3TransporterClass.md#host)
    | *obligatorio* | -| [](../API/POP3TransporterClass.md#logfile)
    | ninguno | -| **.password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | -| [](../API/POP3TransporterClass.md#port)
    | 995 | -| [](../API/POP3TransporterClass.md#user)
    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](../API/POP3TransporterClass.md#acceptunsecureconnection)
    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | +| [](../API/POP3TransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | +| [](../API/POP3TransporterClass.md#connectiontimeout)
    | 30 | +| [](../API/POP3TransporterClass.md#host)
    | *obligatorio* | +| [](../API/POP3TransporterClass.md#logfile)
    | ninguno | +| **.password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | +| [](../API/POP3TransporterClass.md#port)
    | 995 | +| [](../API/POP3TransporterClass.md#user)
    | ninguno | ## Resultado diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/smtp-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/smtp-new-transporter.md index 530879550701cd..d7f9ab0bc5a3d4 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/smtp-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/commands/smtp-new-transporter.md @@ -47,7 +47,7 @@ En el parámetro *server*, pase un objeto que contenga las siguientes propiedade | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | [](../API/SMTPTransporterClass.md#acceptunsecureconnection)
    | False | | .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[SMTP transporter](../API/SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | -| [](../API/SMTPTransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | +| [](../API/SMTPTransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | | [](../API/SMTPTransporterClass.md#bodycharset)
    | `mail mode UTF8` (US-ASCII_UTF8_QP) | | [](../API/SMTPTransporterClass.md#connectiontimeout)
    | 30 | | [](../API/SMTPTransporterClass.md#headercharset)
    | `mail mode UTF8` (US-ASCII_UTF8_QP) | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/imap-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/imap-new-transporter.md index dce455319860cf..aee7b4629d592d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/imap-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/imap-new-transporter.md @@ -34,18 +34,18 @@ El comando `IMAP New transporter` ](../API/IMAPTransporterClass.md#acceptunsecureconnection)
    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | -| [](../API/IMAPTransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](../API/IMAPTransporterClass.md#checkconnectiondelay)
    | 300 | -| [](../API/IMAPTransporterClass.md#connectiontimeout)
    | 30 | -| [](../API/IMAPTransporterClass.md#host)
    | *obligatorio* | -| [](../API/IMAPTransporterClass.md#logfile)
    | ninguno | -| .**password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | -| [](../API/IMAPTransporterClass.md#port)
    | 993 | -| [](../API/IMAPTransporterClass.md#user)
    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](../API/IMAPTransporterClass.md#acceptunsecureconnection)
    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | +| [](../API/IMAPTransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | +| [](../API/IMAPTransporterClass.md#checkconnectiondelay)
    | 300 | +| [](../API/IMAPTransporterClass.md#connectiontimeout)
    | 30 | +| [](../API/IMAPTransporterClass.md#host)
    | *obligatorio* | +| [](../API/IMAPTransporterClass.md#logfile)
    | ninguno | +| .**password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[IMAP transporter](../API/IMAPTransporterClass.md#imap-transporter-object)*. | ninguno | +| [](../API/IMAPTransporterClass.md#port)
    | 993 | +| [](../API/IMAPTransporterClass.md#user)
    | ninguno | > **Atención**: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/pop3-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/pop3-new-transporter.md index 08e00c57313831..e11511d22fd9bb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/pop3-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/pop3-new-transporter.md @@ -34,17 +34,17 @@ El comando `POP3 New transporter` ](../API/POP3TransporterClass.md#acceptunsecureconnection)
    | False | -| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | -| [](../API/POP3TransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | -| [](../API/POP3TransporterClass.md#connectiontimeout)
    | 30 | -| [](../API/POP3TransporterClass.md#host)
    | *obligatorio* | -| [](../API/POP3TransporterClass.md#logfile)
    | ninguno | -| **.password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | -| [](../API/POP3TransporterClass.md#port)
    | 995 | -| [](../API/POP3TransporterClass.md#user)
    | ninguno | +| *server* | Valor por defecto (si se omite) | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [](../API/POP3TransporterClass.md#acceptunsecureconnection)
    | False | +| .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | +| [](../API/POP3TransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | +| [](../API/POP3TransporterClass.md#connectiontimeout)
    | 30 | +| [](../API/POP3TransporterClass.md#host)
    | *obligatorio* | +| [](../API/POP3TransporterClass.md#logfile)
    | ninguno | +| **.password** : Text
    contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto *[POP3 transporter](../API/POP3TransporterClass.md#pop3-transporter-object)*. | ninguno | +| [](../API/POP3TransporterClass.md#port)
    | 995 | +| [](../API/POP3TransporterClass.md#user)
    | ninguno | ## Resultado diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/smtp-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/smtp-new-transporter.md index 530879550701cd..d7f9ab0bc5a3d4 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/smtp-new-transporter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/smtp-new-transporter.md @@ -47,7 +47,7 @@ En el parámetro *server*, pase un objeto que contenga las siguientes propiedade | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | [](../API/SMTPTransporterClass.md#acceptunsecureconnection)
    | False | | .**accessTokenOAuth2**: Text
    .**accessTokenOAuth2**: Object
    Cadena u objeto token que representa las credenciales de autorización OAuth2. Utilizado sólo con OAUTH2 `authationMode`. Si se utiliza `accessTokenOAuth2` pero se omite `authenticationMode`, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto *[SMTP transporter](../API/SMTPTransporterClass.md#smtp-transporter-object)*. | ninguno | -| [](../API/SMTPTransporterClass.md#authenticationmode)
    | se utiliza el modo de autenticación más seguro soportado por el servidor | +| [](../API/SMTPTransporterClass.md#authenticationmode)
    | the most secure authentication mode supported by the server is used | | [](../API/SMTPTransporterClass.md#bodycharset)
    | `mail mode UTF8` (US-ASCII_UTF8_QP) | | [](../API/SMTPTransporterClass.md#connectiontimeout)
    | 30 | | [](../API/SMTPTransporterClass.md#headercharset)
    | `mail mode UTF8` (US-ASCII_UTF8_QP) | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md index 64243efc2d0d77..bd492ef06077c5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -13,6 +13,8 @@ title: Release Notes - New [`4D.Method` class](../API/MethodClass.md) to create and execute a 4D method code from text source. [`METHOD Get path`](../commands/method-get-path) and [`METHOD RESOLVE PATH`](../commands/method-resolve-path) commands support a new `path volatile method` constant (128). - IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifier.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter). - Remote [session](../API/SessionClass.md) objects are now [available client-side](../Desktop/sessions.md#availability). +- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component. +- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md). - Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions. - Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository). diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Project/architecture.md b/i18n/fr/docusaurus-plugin-content-docs/current/Project/architecture.md index 97876690f2a02b..6d90ffc0fc37e3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Project/architecture.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Project/architecture.md @@ -59,6 +59,7 @@ Ce fichier texte peut également contenir des clés de configuration, en particu | menus.json | Définit les menus | JSON | | roles.json | [Privilèges, permissions](../ORDA/privileges.md#rolesjson-file) et autres paramètres de sécurité pour le projet | JSON | | settings.4DSettings | Propriétés de *structure*. Elles ne sont pas prises en compte si des *[propriétés utilisateur](#settings-user)* ou des *[propriétés utilisateur pour les données](#settings-user-data)* sont définies (voir également [Priorité des propriétés](../settings/overview.md#priority-of-settings)). **Attention** : dans les applications compilées, les propriétés de structure sont stockés dans le fichier .4dz (lecture seule). Pour les besoins du déploiement, il est nécessaire d'[activer](../settings/overview.md#enabling-user-settings) et d'utiliser les *propriétés utilisateurs* ou les*propriétés utilisateurs pour les données* pour définir des paramétrages personnalisés. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for Structure | JSON | | tips.json | Définit les messages d'aide | JSON | | lists.json | Listes définies | JSON | | filters.json | Filtres définis | JSON | @@ -186,6 +187,7 @@ Ce dossier contient les [**propriétés utilisateur pour les données**](../sett | directory.json | Description des groupes et utilisateurs 4D et de leurs droits d'accès lorsque l'application est lancée avec ce fichier de données. | JSON | | Backup.4DSettings | Paramètres de sauvegarde de la base de données, utilisés pour définir les [options de sauvegarde](Backup/settings.md)) lorsque la base est lancée avec ce fichier de données. Les clés concernant la configuration de la sauvegarde sont décrites dans le manuel *Sauvegarde des clés XML 4D*. | XML | | settings.4DSettings | Propriétés de la base personnalisées pour ce fichier de données. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this data file | JSON | ### `Logs` @@ -212,6 +214,7 @@ Ce dossier contient les [**propriétés utilisateur**](../settings/overview.md#u | BuildApp.4DSettings | Fichier de paramètres de génération, créé automatiquement lors de l'utilisation de la boîte de dialogue du générateur d'applications ou de la commande `BUILD APPLICATION` | XML | | settings.4DSettings | Paramètres personnalisés pour ce projet (tous les fichiers de données) | XML | | logConfig.json | [Fichier de configuration du journal](../Debugging/debugLogFiles.md#using-a-log-configuration-file) personnalisé | json | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this project (all data files) | JSON | ## `userPreferences.` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index 4e67f7e2e7bc9c..28c927f4594f94 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -77,3 +77,7 @@ $client.images.generate(...) $client.files.create(...) $client.model.lists(...) ``` + +## Provider Model Aliases + +The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md index 00ea4e7ebc4671..c61ea26f7df83e 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,20 +13,20 @@ La classe `OpenAIChatCompletionParameters` permet de gérer les paramètres requ ## Propriétés -| Propriété | Type | Valeur par défaut | Description | -| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. | -| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. | -| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. | -| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). | -| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. | -| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. | -| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". | -| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. | -| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. | -| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. | -| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. | +| Propriété | Type | Valeur par défaut | Description | +| ----------------------- | ---------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). | +| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. | +| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. | +| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). | +| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. | +| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. | +| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". | +| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. | +| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. | +| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. | +| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. | ### Propriétés du callback asynchrone diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md index f44a428ad7e5b1..26abe440b712ed 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings Crée une représentation vectorielle pour l'entrée, le modèle et les paramètres fournis. -| Paramètre | Type | Description | -| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| *input* | Text ou Collection de textes | L'entrée à vectoriser. | -| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models) | -| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. | -| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles | +| Paramètre | Type | Description | +| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| *input* | Text ou Collection de textes | L'entrée à vectoriser. | +| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). | +| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. | +| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles | #### Exemples d'utilisation diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md index ab6166c5d4c9df..68a2dc88e3dce5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ La classe `OpenAIImageParameters` permet de configurer et gérer les paramètres ## Propriétés -| Nom de propriété | Type | Valeur par défaut | Description | -| ----------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. | -| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). | -| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. | -| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). | -| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. | +| Nom de propriété | Type | Valeur par défaut | Description | +| ----------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. Supports [provider:model aliases](../provider-model-aliases.md). | +| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). | +| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. | +| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). | +| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. | ## Voir également diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md new file mode 100644 index 00000000000000..4e714401f5c59c --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md @@ -0,0 +1,186 @@ +--- +id: openaiproviders +title: OpenAIProviders +--- + +# OpenAIProviders + +## Sommaire + +The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format. + +For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md). + +## Description + +This class enables multi-provider support by: + +- Loading provider configurations from a single JSON file +- Loading named model aliases that map to providers and model IDs +- Resolving `provider:model` syntax to full API configurations +- Resolving named model aliases by bare name to full provider + model configurations + +The `OpenAI` class automatically loads provider configurations when instantiated. + +## Constructeur + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +``` + +Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format). + +**Important:** + +- Only the first existing file is loaded. There is no merging of multiple files. +- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration. + +## Utilisation + +### Integration with OpenAI Class + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use model aliases with provider:model syntax +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) +``` + +### Direct Provider Access + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() + +// Get a specific provider configuration +var $config := $providers.get("openai") +// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null + +// Get all provider names +var $names := $providers.list() +// Returns: ["openai", "anthropic", "mistral", "local"] +``` + +## Fonctions + +### get() + +**get**(*name* : Text) : Object + +Get a provider configuration by name. + +| Paramètres | Type | Description | +| ---------- | ------ | ----------------------------------------------------- | +| *name* | Text | The provider name | +| Résultat | Object | Provider configuration object, or `Null` if not found | + +#### Exemple + +```4d +var $config := $providers.get("openai") +If ($config # Null) + // Use $config.baseURL, $config.apiKey, etc. + + // We could build a client with it + var $client:=cs.AIKit.OpenAI.new($config) +End if +``` + +### list() + +**list**() : Collection + +Get all provider names. + +| Paramètres | Type | Description | +| ---------- | ---------- | ---------------------------- | +| Résultat | Collection | Collection of provider names | + +#### Exemple + +```4d +var $names := $providers.list() +// Returns: ["openai", "anthropic", ...] + +For each ($name; $names) + var $config := $providers.get($name) +End for each +``` + +### modelAliases() + +**modelAliases**() : Collection + +Get all configured model aliases. + +| Paramètres | Type | Description | +| ---------- | ---------- | --------------------------------- | +| Résultat | Collection | Collection of model alias objects | + +Each object in the collection contains: + +| Propriété | Type | Description | +| ------------- | ---- | --------------------------------- | +| `name` | Text | Model alias name | +| `fournisseur` | Text | Provider name | +| `model` | Text | Model ID to use with the provider | + +#### Exemple + +```4d +var $models := $providers.modelAliases() +// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...] + +For each ($model; $models) + // $m.name, $m.provider, $m.model +End for each +``` + +## Model Resolution + +Two syntaxes are supported for model resolution: + +### Provider alias (`provider:model`) + +Specify the provider and model name directly: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +``` + +This is resolved internally to: + +1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"` +2. Look up the `"openai"` provider configuration +3. Extract `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Exemples :** + +- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model +- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus +- `"local:llama3"` → Use local provider with llama3 model + +### Model alias (bare name) + +Use a named model by its bare name from the `models` section of the configuration: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: ":my-gpt"}) +``` + +This is resolved internally to: + +1. Look up `"my-gpt"` in the `models` configuration +2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`) +3. Resolve the provider to get `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Exemples :** + +- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model) +- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations + diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md new file mode 100644 index 00000000000000..15dc100e3b12ba --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md @@ -0,0 +1,372 @@ +--- +id: provider-model-aliases +title: Provider & Model Aliases +--- + +# Provider & Model Aliases + +The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes. + +## Vue d’ensemble + +Instead of hard-coding API endpoints and credentials in your code, you can: + +- Define provider configurations in a JSON file +- Use the `provider:model` syntax to specify a provider and model directly +- Define named model aliases that map to a provider and a model ID +- Use a named model alias by bare name (e.g., `my-gpt`) +- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily + +## Configuration Files + +The client automatically loads provider configurations from the first existing file found (in priority order): + +| Priorité | Emplacement | File Path | +| ------------------------------------- | ----------- | ------------------------------------------------- | +| 1 (le plus élevé) | userData | `/Settings/AIProviders.json` | +| 2 | user | `/Settings/AIProviders.json` | +| 3 (le plus faible) | structure | `/SOURCES/AIProviders.json` | + +**Important:** Only the **first existing file** is loaded. There is no merging of multiple files. + +### Configuration File Format + +```json +{ + "providers": { + "provider_name": { + "baseURL": "https://api.example.com/v1", + "apiKey": "optional-key", + "organization": "optional-org-id", + "project": "optional-project-id" + } + }, + "models": { + "model_alias_name": { + "provider": "provider_name", + "model": "actual-model-id", + } + } +} +``` + +### Provider Fields + +| Champ | Type | Obligatoire | Description | +| -------------- | ---- | ----------- | -------------------------------------------------------------- | +| `baseURL` | Text | Oui | API endpoint URL | +| `apiKey` | Text | Non | API key value | +| `organisation` | Text | Non | Organization ID (optional, OpenAI-specific) | +| `project` | Text | Non | Project ID (optional, OpenAI-specific) | + +### Model Alias Fields + +| Champ | Type | Obligatoire | Description | +| ------------- | ---- | ----------- | ------------------------------------------------------------------- | +| `fournisseur` | Text | Oui | Name of the provider (must exist in `providers`) | +| `model` | Text | Oui | Model ID used by the provider | + +### Example Configuration + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1" + }, + "local": { + "baseURL": "http://localhost:11434/v1" + }, + "mistral": { + "baseURL": "https://api.mistral.ai/v1", + "apiKey": "your-mistral-key" + } + }, + "models": { + "my-gpt": { + "provider": "openai", + "model": "gpt-5.1" + }, + "my-claude": { + "provider": "anthropic", + "model": "claude-3-5-sonnet-20241022" + }, + "my-embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } + } +} +``` + +## Usage in API Calls + +### Model Parameter Formats + +Two syntaxes are supported: + +| Syntaxe | Description | +| --------------------- | ---------------------------------------------------------------------------------- | +| `provider:model_name` | Provider alias — specify provider and model directly | +| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name | + +#### Provider alias syntax + +Use the `provider:model_name` syntax in any API call that accepts a model parameter: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Chat completions +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) + +// Embeddings +var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small") +var $result := $client.embeddings.create("text"; "local:nomic-embed-text") + +// Image generation +var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"}) +``` + +#### Model alias syntax + +Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use a named model alias +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) +var $result := $client.chat.completions.create($messages; {model: ":my-claude"}) + +// Embeddings with a named model alias +var $result := $client.embeddings.create("text"; ":my-embedding") +``` + +### How It Works + +#### Provider alias (`provider:model`) + +When you use the `provider:model` syntax, the client automatically: + +1. **Parses** the model string to extract provider name and model name + - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"` + +2. **Looks up** the provider configuration from the loaded JSON file + - Retrieves `baseURL`, `apiKey`, `organization`, `project` + +3. **Makes the API request** using the resolved configuration + - Sends request to the provider's `baseURL` with the correct `apiKey` + +#### Model alias (bare name) + +When you use a bare model name that matches a configured alias, the client automatically: + +1. **Looks up** the model alias in the `models` section of the configuration + - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"` + +2. **Resolves** the associated provider to get `baseURL` and `apiKey` + +3. **Makes the API request** using the provider's endpoint and the stored model ID + +### Using Plain Model Names + +If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor: + +```4d +// Use constructor configuration +var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"}) +var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"}) + +// Override with provider alias +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) + +// Override with model alias (bare name) +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) + +``` + +## Exemples + +### Multi-Provider Chat Application + +```4d +var $client := cs.AIKit.OpenAI.new() +var $messages := [] +$messages.push({role: "user"; content: "What is the capital of France?"}) + +// Try OpenAI +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) + +// Try Anthropic +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"}) + +// Try local Ollama +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Embeddings with Multiple Providers + +```4d +var $client := cs.AIKit.OpenAI.new() +var $text := "Hello world" + +// Use OpenAI embeddings +var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small") + +// Use local embeddings +var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text") +``` + +## Configuration Management + +Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files. + +**To add or modify providers:** + +1. Use 4D Settings interface (recommended), or +2. Edit the appropriate JSON file (userData, user, or structure) +3. Restart your application or create a new OpenAI client instance to load changes + +**Recommended file location:** + +- **For user-specific configs:** `/Settings/AIProviders.json` +- **For application defaults:** `/SOURCES/AIProviders.json` + +### No Reload Capability + +Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes: + +```4d +// Configuration changed - create new client +var $client := cs.AIKit.OpenAI.new() +``` + +## Security Considerations + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines. + +## Common Use Cases + +### Local Development with Ollama + +```json +{ + "providers": { + "local": { + "baseURL": "http://localhost:11434/v1" + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Named Model Aliases + +Define models once, use them everywhere by name: + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + } + }, + "models": { + "chat": { + "provider": "openai", + "model": "gpt-5.1" + }, + "fast": { + "provider": "anthropic", + "model": "claude-3-5-haiku-20241022" + }, + "embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use named model aliases — no need to remember provider or model ID +var $result := $client.chat.completions.create($messages; {model: ":chat"}) +var $result := $client.chat.completions.create($messages; {model: ":fast"}) +var $embedding := $client.embeddings.create("text"; ":embedding") +``` + +### List All Configured Models + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +var $models := $providers.modelAliases() +// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...] +``` + +### Production with Multiple Cloud Providers + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + }, + "azure": { + "baseURL": "https://your-resource.openai.azure.com", + "apiKey": "your-azure-key" + } + } +} +``` + +### Provider-Specific Organizations + +```json +{ + "providers": { + "openai-team-a": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-a-id" + }, + "openai-team-b": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-b-id" + } + } +} +``` + +```4d +// Route to different organizations +var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"}) +var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"}) +``` + +## Related Documentation + +- [OpenAI Class](Classes/OpenAI.md) - Main client class +- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management +- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png new file mode 100644 index 00000000000000..2bd536326bf335 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png new file mode 100644 index 00000000000000..132fcb58c1e5fc Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png new file mode 100644 index 00000000000000..7af048330e16aa Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/settings/ai.md b/i18n/fr/docusaurus-plugin-content-docs/current/settings/ai.md new file mode 100644 index 00000000000000..7920137b590933 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/settings/ai.md @@ -0,0 +1,140 @@ +--- +id: ai +title: AI page +--- + +The AI page allows you to add, remove, or view the list of all your AI providers and their related model aliases, whether they come from local sources or internet-based services. Providers and model aliases can then be used in your code througout your 4D application, especially with the [**4D-AIKit component**](../aikit/overview.md) using the [**model aliases**](../aikit/provider-model-aliases.md) feature. + +:::tip Article(s) de blog sur le sujet + +[Centralizing AI Providers and Model Aliases in 4D](https://blog.4d.com/centralizing-ai-providers-and-model-aliases-in-4d) + +::: + +## Managing providers + +4D supports [various AI providers](../aikit/compatible-openai.md) with an OpenAI-like API, each offering unique models and features for database needs. + +By default, the Providers list is empty. + +### Adding a provider + +To add an AI provider: + +1. Click on the **+** button at the bottom of the Providers list. +2. Enter the required [provider's configuration fields](#provider-properties), including credentials. +3. (optional) Click the **Test connection** button to make sure the provided URL and credentials are valid. + +If the connection is successful, the number of available models is displayed on the right side of the button: + +![](../assets/en/settings/ai-connection-ok.png) + +If the connection test fails, an error message is displayed (e.g. "Request failed: Not found" or "Request failed: Unauthorized"). + +4. Click **OK** to save the new provider, or **Cancel** to revert all modifications. + +### Editing a provider + +To edit or remove a provider: + +1. Select a registered provider in the list. +2. Edit the provider's information OR to remove a provider, click on the **-** button at the bottom of the Providers list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +## Provider properties + +When you select a provider in the Providers list, several properties are available. Property names in **bold** are mandatory to create a Provider. + +### Nom + +Local name used to identify the provider in your code, for example "claude". The name must be [compliant with property names](../Concepts/identifiers.md) since it will be used in the application's code to reference the provider. + +### Base URL + +Endpoint of the provider's API, for example `https://api.openai.com/v1` or `http://localhost:11434/v1`. + +The combo box lists the main providers, you can select a value to enter the provider endpoint: + +![](../assets/en/settings/ai-base-url.png) + +### API Key + +(optional) API key for the provider. For instructions on generating an API key, please refer to your AI provider’s official documentation. Some AI providers may also require additional specific credentials. + +### Organisation + +(optional, OpenAI-specific) Organization ID used by the OpenAI API. + +### Project + +(optional, OpenAI-specific) ID of the project. Each OpenAI API key is attached to a project. + +### AIProviders.json + +The provider configuration is stored in a JSON file named *AIProviders.json* located next to the active *settings.4DSettings file* within the [project folder](../Project/architecture.md), [depending on your deployment configuration](./overview.md#enabling-user-settings). + +### Deployment with an API key + +When configuring an AI provider, you need to provide your own API key. It requires an external registration for getting API keys/credentials from AI providers. + +Using the Settings dialog box, the 4D developer can define a custom **provider name** (for example "open-ai-v1") and use this custom name in the code. They can also test it using their API key. + +When the 4D application is deployed with the [User settings enabled](../settings/overview.md#enabling-user-settings), the administrator can configure the User settings by using the **same AI provider name** ("open-ai-v1") and **customize the API key** to use the customer's key. Thanks to the [User settings priority rules](../settings/overview.md#priority-of-settings), the customer settings will automatically override the developer settings. + +:::warning + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API keys and credentials from exposure to remote machines. + +::: + +## Model Aliases + +The Model Aliases page allows you to list models from registered Providers that you want to use in your code and to name them with *aliases*. Thanks to model aliases, you avoid hardcoding model names, switch models without changing your code, and keep consistency across environments. + +When using a model alias: + +- The provider is automatically resolved (see [Model resolution](../aikit/Classes/OpenAIProviders.md#model-resolution) in the 4D-AIKit documentation). +- The model ID is applied. +- All credentials and endpoints are used. + +### Adding a model alias + +:::note + +To be able to add a model alias, you must have entered at least one valid provider in the **Providers** tab. + +::: + +To add a model alias: + +1. Click on the **+** button at the bottom of the model aliases list. +2. In the **Name** column, enter the name of the alias. +3. Click on the corresponding row in the **Provider** column to display the list of available providers ([provider names](#name) you entered in the Providers page), and select the name of the provider. +4. Click on the corresponding row in the **Model** column to display the list of available models exposed by the selected provider and select the model. +5. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +![](../assets/en/settings/model-alias.png) + +### Editing a model alias + +To edit or remove an alias: + +1. Select a model alias in the list. +2. Edit the alias information OR to remove a alias, click on the **-** button at the bottom of the list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +### Using a model alias + +You can directly use the model alias name wherever a model name is required (provided that model aliases are supported). + +For example, in 4D-AIKit, you can reference a model with the syntax: *{model:"ModelName"}*, where *ModelName* is a valid model defined in the Model Aliases tab: + +```4d +var $client:=cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; \ + {model: "Chat Model"}) +``` + +### Voir également + +["Provider & Model Aliases"](../aikit/provider-model-aliases.md) in the 4D AIKit documentation. \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/BlobClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/BlobClass.md index 499cc3640c35d6..ed29479f54d509 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/BlobClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/BlobClass.md @@ -7,7 +7,7 @@ Blobクラスを使って、[BLOB オブジェクト](../Concepts/dt_blob.md#BLO :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/CollectionClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/CollectionClass.md index 6320f308b428d5..0682ac05945ff6 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/CollectionClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/CollectionClass.md @@ -9,7 +9,7 @@ Collectionクラスは [コレクション](Concepts/dt_collection.md) 型の式 :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/EmailObjectClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/EmailObjectClass.md index 701dac53cae3b9..9586cfcc410b97 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/EmailObjectClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/EmailObjectClass.md @@ -19,7 +19,7 @@ title: Email :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/FileClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/FileClass.md index 09e29a626f8701..fd617bdf53111a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/FileClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/FileClass.md @@ -7,7 +7,7 @@ title: File :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/FolderClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/FolderClass.md index f3ec76126dd497..6b0e0fcfaf2b01 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/FolderClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/FolderClass.md @@ -7,7 +7,7 @@ title: Folder :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/FormulaClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/FormulaClass.md index 82697c41a6b328..c4f215a5b84a7d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/FormulaClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/FormulaClass.md @@ -14,7 +14,7 @@ title: Formula :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/MailAttachmentClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/MailAttachmentClass.md index 6ee0f348c50ec0..839bc9ffd7310c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/MailAttachmentClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/MailAttachmentClass.md @@ -7,7 +7,7 @@ Attachment オブジェクトによって、[`Email`](EmailObjectClass.md) オ :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/MethodClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/MethodClass.md index bd7a2ec3957cef..1681defc4cbcfb 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/MethodClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/MethodClass.md @@ -22,7 +22,7 @@ title: メソッド :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/VectorClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/VectorClass.md index c78b1fd626513f..2d42f83abd9979 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/VectorClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/VectorClass.md @@ -9,7 +9,7 @@ AI の世界では、ベクトルとは、機会が複雑なデータを理解 :::info -This class is [**streamable**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) in binary. +このクラスは、バイナリーで[**ストリーム可能**](../Concepts/dt_object.md#binary-streaming-variable-to-blob) です。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md index a513ac15a1be81..a65074025c7f41 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -13,6 +13,8 @@ title: リリースノート - テキストソースから4D メソッドを作成し実行するための[`4D.Method` クラス](../API/MethodClass.md)。 [`METHOD Get path`](../commands/method-get-path) および [`METHOD RESOLVE PATH`](../commands/method-resolve-path) コマンドは新しい`path volatile method` 定数 (128) をサポートするようになりました。 - IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifier.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter). - リモートの[session](../API/SessionClass.md) オブジェクトは、[クライアント側でも利用可能](../Desktop/sessions.md#availability) になりました。 +- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component. +- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md). - Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions. - Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository). diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Project/architecture.md b/i18n/ja/docusaurus-plugin-content-docs/current/Project/architecture.md index f55a50cf5cb535..c9ab2a76054d1a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Project/architecture.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Project/architecture.md @@ -59,6 +59,7 @@ title: アーキテクチャー | menus.json | メニュー定義 | JSON | | roles.json | プロジェクトの [権限、パーミッション](../ORDA/privileges.md#rolesjson-ファイル)およびその他のセキュリティ設定 | JSON | | settings.4DSettings | *ストラクチャー*データベース設定。 *[ユーザー設定](#settings-ユーザー)* または *[データファイル用のユーザー設定](#settings-ユーザーデータ)* が定義されている場合は、そちらの設定が優先されます ([設定の優先順位](../settings/overview.md#設定の優先順位) も参照ください)。 **警告**: コンパイル済みアプリケーションの場合、ストラクチャー設定は読み取り専用の .4dz ファイルに格納されます。 運用時にカスタム設定を定義するには、[ユーザー設定を有効化](../settings/overview.md#ユーザー設定の有効化) し、*ユーザー設定* または *データファイル用のユーザー設定* を使う必要があります。 | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for Structure | JSON | | tips.json | 定義されたヘルプTips | JSON | | lists.json | 定義されたリスト | JSON | | filters.json | 定義されたフィルター | JSON | @@ -174,7 +175,7 @@ Data フォルダーには、データファイルのほか、データに関わ | data.journal | データベースがログファイルを使用する場合のみ作成されます。 ログファイルは2つのバックアップ間のデータ保護を確実なものにするために使用されます。 データに対して実行されたすべての処理が、このファイルに順番に記録されます。 つまりデータに対して操作がおこなわれるたびに、データ上の処理 (操作の実行) とログファイル上の処理 (操作の記録) という 2つの処理が同時に発生します。 ログファイルはユーザーの処理を妨げたり遅くしたりすることなく、独立して構築されます。 データベースは 1つのログファイルしか同時に使用できません。 ログファイルにはレコードの追加・更新・削除やトランザクションなどの処理が記録されます。 ログファイルはデータベースが作成される際にデフォルトで生成されます。 | binary | | data.match | (内部用) テーブル番号に対応する UUID | XML | -(\*) .4db バイナリデータベースからプロジェクトに変換した場合、データファイルは変換による影響を受けません。 このデータファイルの名称を変更して移動させることができます。 +(\*) When the project is created from a .4db binary database, the data file is left untouched. このデータファイルの名称を変更して移動させることができます。 ### `Settings` (ユーザーデータ) @@ -187,6 +188,7 @@ Data フォルダーには、データファイルのほか、データに関わ | directory.json | このデータファイルを使ってアプリケーションが実行されている場合に使用する 4D グループとユーザー、およびアクセス権の定義 | JSON | | Backup.4DSettings | このデータファイルを使ってデータベースが実行されている場合に使用する [バックアップオプション](Backup/settings.md) を定義したデータベースバックアップ設定です。 バックアップ設定に使われるキーについての説明は [バックアップ設定ファイル](https://doc.4d.com/4Dv18/4D/18/4D-XML-Keys-Backup.100-4673706.ja.html) マニュアルを参照ください。 | XML | | settings.4DSettings | データファイル用のカスタムデータベース設定。 | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this data file | JSON | ### `Logs` @@ -213,6 +215,7 @@ Logs フォルダーには、プロジェクトが使用するすべてのログ | BuildApp.4DSettings | アプリケーションビルダーのダイアログボックス、または `BUILD APPLICATION` コマンドを使ったときに自動的に作成されるビルド設定ファイル | XML | | settings.4DSettings | プロジェクト用のカスタム設定 (すべてのデータファイル) | XML | | logConfig.json | カスタムの [ログ設定ファイル](../Debugging/debugLogFiles.md#ログ設定ファイルを使用する) | json | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this project (all data files) | JSON | ## `userPreferences.` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index e7600f787ec75f..ca90d959f4ba9d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -77,3 +77,7 @@ $client.images.generate(...) $client.files.create(...) $client.model.lists(...) ``` + +## Provider Model Aliases + +The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md index 5ec4547197b87a..e90fadcdc5f835 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,20 +13,20 @@ title: OpenAIChatCompletionParameters ## プロパティ -| プロパティ | 型 | デフォルト値 | 説明 | -| ----------------------- | ---------- | --------------- | ----------------------------------------------------------------------------------------------------------- | -| `model` | Text | `"gpt-4o-mini"` | 使用するモデルのID。 | -| `stream` | Boolean | `false` | 部分的な進捗をストリームで返すかどうかを決めます。 設定されていれば、トークンはデータオンリーとして送信されます。 コールバックフォーミュラが必要となります。 | -| `stream_options` | Object | `Null` | stream = True の場合のオプションを指定するプロパティ。 例: `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | チャット補完の中で生成可能なトークンの最大数。 | -| `n` | Integer | `1` | 各プロンプトに対して生成するチャット補完の数。 | -| `temperature` | Real | `-1` | 使用するサンプリング温度。0から2の間の値。 値が大きいほど出力はよりランダムになり、値が小さいほど出力はより集中して決まりきったものになります。 | -| `store` | Boolean | `false` | このチャット補完リクエストの出力を保存するかどうか。 | -| `reasoning_effort` | Text | `Null` | 推論モデルにおける推論の努力に対する制約。 現在サポートされている値は `"low"`、`"medium"`、および`"high"`です。 | -| `response_format` | Object | `Null` | モデルが出力するフォーマットを指定するオブジェクト。 構造化された出力に対応します。 | -| `ツール` | Collection | `Null` | モデルが呼び出し得るツール([OpenAITool](OpenAITool.md)) の一覧。 "function" 型のみがサポートされます。 | -| `tool_choice` | Variant | `Null` | どのモデルによってどのツール(あれば)が呼び出されるかを管理します。 `"none"`、`"auto"`、`"required"`、または特定のツールを指定することができます。 | -| `prediction` | Object | `Null` | 再生成されているテキストファイルのコンテンツなど、静的に予想される出力内容。 | +| プロパティ | 型 | デフォルト値 | 説明 | +| ----------------------- | ---------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | 使用するモデルのID。 Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). | +| `stream` | Boolean | `false` | 部分的な進捗をストリームで返すかどうかを決めます。 設定されていれば、トークンはデータオンリーとして送信されます。 コールバックフォーミュラが必要となります。 | +| `stream_options` | Object | `Null` | stream = True の場合のオプションを指定するプロパティ。 例: `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | チャット補完の中で生成可能なトークンの最大数。 | +| `n` | Integer | `1` | 各プロンプトに対して生成するチャット補完の数。 | +| `temperature` | Real | `-1` | 使用するサンプリング温度。0から2の間の値。 値が大きいほど出力はよりランダムになり、値が小さいほど出力はより集中して決まりきったものになります。 | +| `store` | Boolean | `false` | このチャット補完リクエストの出力を保存するかどうか。 | +| `reasoning_effort` | Text | `Null` | 推論モデルにおける推論の努力に対する制約。 現在サポートされている値は `"low"`、`"medium"`、および`"high"`です。 | +| `response_format` | Object | `Null` | モデルが出力するフォーマットを指定するオブジェクト。 構造化された出力に対応します。 | +| `ツール` | Collection | `Null` | モデルが呼び出し得るツール([OpenAITool](OpenAITool.md)) の一覧。 "function" 型のみがサポートされます。 | +| `tool_choice` | Variant | `Null` | どのモデルによってどのツール(あれば)が呼び出されるかを管理します。 `"none"`、`"auto"`、`"required"`、または特定のツールを指定することができます。 | +| `prediction` | Object | `Null` | 再生成されているテキストファイルのコンテンツなど、静的に予想される出力内容。 | ### 非同期コールバック用プロパティ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md index f21fd7a85be26c..c7c26388b05ecb 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings 提供された入力、モデル、パラメータに対する埋め込みを作成します。 -| 引数 | 型 | 説明 | -| ------------ | ----------------------------------------------------------- | --------------------------------------------------------------------- | -| *input* | テキストまたはテキストのコレクション | ベクター化する入力。 | -| *model* | Text | [使用するモデル](https://platform.openai.com/docs/guides/embeddings#埋め込みモデル) | -| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | 埋め込みリクエストをカスタマイズするための引数。 | -| 戻り値 | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | 埋め込み。 | +| 引数 | 型 | 説明 | +| ------------ | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| *input* | テキストまたはテキストのコレクション | ベクター化する入力。 | +| *model* | Text | The [model to use](https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). | +| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | 埋め込みリクエストをカスタマイズするための引数。 | +| 戻り値 | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | 埋め込み。 | #### 使用例 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md index 938abaf42238d3..6cc1b394187015 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ title: OpenAIImageParameters ## プロパティ -| プロパティ名 | 型 | デフォルト値 | 説明 | -| ----------------- | ------- | ----------- | ---------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | 画像生成に使用するモデルを指定します。 | -| `n` | Integer | 1 | 生成する画像の数(1から10の間でなければなりません、また `dall-e-3` では `n=1` のみがサポートされます)。 | -| `size` | Text | "1024x1024" | 生成される画像のサイズ。 モデルの仕様に準拠している必要があります。 | -| `style` | Text | "" | 生成される画像のスタイル(`vivid` または `natural`のどちらかでなければなりません)。 | -| `response_format` | Text | "url" | 返される画像のフォーマット。`url` または `b64_json` のいずれかです。 | +| プロパティ名 | 型 | デフォルト値 | 説明 | +| ----------------- | ------- | ----------- | -------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | 画像生成に使用するモデルを指定します。 Supports [provider:model aliases](../provider-model-aliases.md). | +| `n` | Integer | 1 | 生成する画像の数(1から10の間でなければなりません、また `dall-e-3` では `n=1` のみがサポートされます)。 | +| `size` | Text | "1024x1024" | 生成される画像のサイズ。 モデルの仕様に準拠している必要があります。 | +| `style` | Text | "" | 生成される画像のスタイル(`vivid` または `natural`のどちらかでなければなりません)。 | +| `response_format` | Text | "url" | 返される画像のフォーマット。`url` または `b64_json` のいずれかです。 | ## 参照 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md new file mode 100644 index 00000000000000..45747d12665237 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md @@ -0,0 +1,186 @@ +--- +id: openaiproviders +title: OpenAIProviders +--- + +# OpenAIProviders + +## 概要 + +The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format. + +For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md). + +## 説明 + +This class enables multi-provider support by: + +- Loading provider configurations from a single JSON file +- Loading named model aliases that map to providers and model IDs +- Resolving `provider:model` syntax to full API configurations +- Resolving named model aliases by bare name to full provider + model configurations + +The `OpenAI` class automatically loads provider configurations when instantiated. + +## コンストラクター + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +``` + +Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format). + +**Important:** + +- Only the first existing file is loaded. There is no merging of multiple files. +- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration. + +## 効果 + +### Integration with OpenAI Class + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use model aliases with provider:model syntax +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) +``` + +### Direct Provider Access + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() + +// Get a specific provider configuration +var $config := $providers.get("openai") +// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null + +// Get all provider names +var $names := $providers.list() +// Returns: ["openai", "anthropic", "mistral", "local"] +``` + +## 関数 + +### get() + +**get**(*name* : Text) : Object + +Get a provider configuration by name. + +| 引数 | 型 | 説明 | +| ---- | ------ | ----------------------------------------------------- | +| *名称* | Text | The provider name | +| 戻り値 | Object | Provider configuration object, or `Null` if not found | + +#### 例題 + +```4d +var $config := $providers.get("openai") +If ($config # Null) + // Use $config.baseURL, $config.apiKey, etc. + + // We could build a client with it + var $client:=cs.AIKit.OpenAI.new($config) +End if +``` + +### list() + +**list**() : Collection + +Get all provider names. + +| 引数 | 型 | 説明 | +| --- | ---------- | ---------------------------- | +| 戻り値 | Collection | Collection of provider names | + +#### 例題 + +```4d +var $names := $providers.list() +// Returns: ["openai", "anthropic", ...] + +For each ($name; $names) + var $config := $providers.get($name) +End for each +``` + +### modelAliases() + +**modelAliases**() : Collection + +Get all configured model aliases. + +| 引数 | 型 | 説明 | +| --- | ---------- | --------------------------------- | +| 戻り値 | Collection | Collection of model alias objects | + +Each object in the collection contains: + +| プロパティ | 型 | 説明 | +| ------- | ---- | --------------------------------- | +| `名称` | Text | Model alias name | +| `プロバイダ` | Text | Provider name | +| `model` | Text | Model ID to use with the provider | + +#### 例題 + +```4d +var $models := $providers.modelAliases() +// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...] + +For each ($model; $models) + // $m.name, $m.provider, $m.model +End for each +``` + +## Model Resolution + +Two syntaxes are supported for model resolution: + +### Provider alias (`provider:model`) + +Specify the provider and model name directly: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +``` + +This is resolved internally to: + +1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"` +2. Look up the `"openai"` provider configuration +3. Extract `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**例題:** + +- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model +- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus +- `"local:llama3"` → Use local provider with llama3 model + +### Model alias (bare name) + +Use a named model by its bare name from the `models` section of the configuration: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: ":my-gpt"}) +``` + +This is resolved internally to: + +1. Look up `"my-gpt"` in the `models` configuration +2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`) +3. Resolve the provider to get `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**例題:** + +- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model) +- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md new file mode 100644 index 00000000000000..986065ab669709 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md @@ -0,0 +1,372 @@ +--- +id: provider-model-aliases +title: Provider & Model Aliases +--- + +# Provider & Model Aliases + +The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes. + +## 概要 + +Instead of hard-coding API endpoints and credentials in your code, you can: + +- Define provider configurations in a JSON file +- Use the `provider:model` syntax to specify a provider and model directly +- Define named model aliases that map to a provider and a model ID +- Use a named model alias by bare name (e.g., `my-gpt`) +- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily + +## Configuration Files + +The client automatically loads provider configurations from the first existing file found (in priority order): + +| 優先順位 | 場所 | File Path | +| ------------------------ | --------- | ------------------------------------------------- | +| 1 (高) | userData | `/Settings/AIProviders.json` | +| 2 | user | `/Settings/AIProviders.json` | +| 3 (低) | structure | `/SOURCES/AIProviders.json` | + +**Important:** Only the **first existing file** is loaded. There is no merging of multiple files. + +### Configuration File Format + +```json +{ + "providers": { + "provider_name": { + "baseURL": "https://api.example.com/v1", + "apiKey": "optional-key", + "organization": "optional-org-id", + "project": "optional-project-id" + } + }, + "models": { + "model_alias_name": { + "provider": "provider_name", + "model": "actual-model-id", + } + } +} +``` + +### Provider Fields + +| フィールド | 型 | 必須 | 説明 | +| --------- | ---- | -- | -------------------------------------------------------------- | +| `baseURL` | Text | ◯ | API endpoint URL | +| `apiKey` | Text | × | API key value | +| `組織` | Text | × | Organization ID (optional, OpenAI-specific) | +| `project` | Text | × | Project ID (optional, OpenAI-specific) | + +### Model Alias Fields + +| フィールド | 型 | 必須 | 説明 | +| ------- | ---- | -- | ------------------------------------------------------------------- | +| `プロバイダ` | Text | ◯ | Name of the provider (must exist in `providers`) | +| `model` | Text | ◯ | Model ID used by the provider | + +### Example Configuration + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1" + }, + "local": { + "baseURL": "http://localhost:11434/v1" + }, + "mistral": { + "baseURL": "https://api.mistral.ai/v1", + "apiKey": "your-mistral-key" + } + }, + "models": { + "my-gpt": { + "provider": "openai", + "model": "gpt-5.1" + }, + "my-claude": { + "provider": "anthropic", + "model": "claude-3-5-sonnet-20241022" + }, + "my-embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } + } +} +``` + +## Usage in API Calls + +### Model Parameter Formats + +Two syntaxes are supported: + +| シンタックス | 説明 | +| --------------------- | ---------------------------------------------------------------------------------- | +| `provider:model_name` | Provider alias — specify provider and model directly | +| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name | + +#### Provider alias syntax + +Use the `provider:model_name` syntax in any API call that accepts a model parameter: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Chat completions +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) + +// Embeddings +var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small") +var $result := $client.embeddings.create("text"; "local:nomic-embed-text") + +// Image generation +var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"}) +``` + +#### Model alias syntax + +Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use a named model alias +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) +var $result := $client.chat.completions.create($messages; {model: ":my-claude"}) + +// Embeddings with a named model alias +var $result := $client.embeddings.create("text"; ":my-embedding") +``` + +### How It Works + +#### Provider alias (`provider:model`) + +When you use the `provider:model` syntax, the client automatically: + +1. **Parses** the model string to extract provider name and model name + - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"` + +2. **Looks up** the provider configuration from the loaded JSON file + - Retrieves `baseURL`, `apiKey`, `organization`, `project` + +3. **Makes the API request** using the resolved configuration + - Sends request to the provider's `baseURL` with the correct `apiKey` + +#### Model alias (bare name) + +When you use a bare model name that matches a configured alias, the client automatically: + +1. **Looks up** the model alias in the `models` section of the configuration + - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"` + +2. **Resolves** the associated provider to get `baseURL` and `apiKey` + +3. **Makes the API request** using the provider's endpoint and the stored model ID + +### Using Plain Model Names + +If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor: + +```4d +// Use constructor configuration +var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"}) +var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"}) + +// Override with provider alias +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) + +// Override with model alias (bare name) +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) + +``` + +## 例題 + +### Multi-Provider Chat Application + +```4d +var $client := cs.AIKit.OpenAI.new() +var $messages := [] +$messages.push({role: "user"; content: "What is the capital of France?"}) + +// Try OpenAI +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) + +// Try Anthropic +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"}) + +// Try local Ollama +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Embeddings with Multiple Providers + +```4d +var $client := cs.AIKit.OpenAI.new() +var $text := "Hello world" + +// Use OpenAI embeddings +var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small") + +// Use local embeddings +var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text") +``` + +## Configuration Management + +Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files. + +**To add or modify providers:** + +1. Use 4D Settings interface (recommended), or +2. Edit the appropriate JSON file (userData, user, or structure) +3. Restart your application or create a new OpenAI client instance to load changes + +**Recommended file location:** + +- **For user-specific configs:** `/Settings/AIProviders.json` +- **For application defaults:** `/SOURCES/AIProviders.json` + +### No Reload Capability + +Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes: + +```4d +// Configuration changed - create new client +var $client := cs.AIKit.OpenAI.new() +``` + +## Security Considerations + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines. + +## Common Use Cases + +### Local Development with Ollama + +```json +{ + "providers": { + "local": { + "baseURL": "http://localhost:11434/v1" + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Named Model Aliases + +Define models once, use them everywhere by name: + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + } + }, + "models": { + "chat": { + "provider": "openai", + "model": "gpt-5.1" + }, + "fast": { + "provider": "anthropic", + "model": "claude-3-5-haiku-20241022" + }, + "embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use named model aliases — no need to remember provider or model ID +var $result := $client.chat.completions.create($messages; {model: ":chat"}) +var $result := $client.chat.completions.create($messages; {model: ":fast"}) +var $embedding := $client.embeddings.create("text"; ":embedding") +``` + +### List All Configured Models + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +var $models := $providers.modelAliases() +// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...] +``` + +### Production with Multiple Cloud Providers + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + }, + "azure": { + "baseURL": "https://your-resource.openai.azure.com", + "apiKey": "your-azure-key" + } + } +} +``` + +### Provider-Specific Organizations + +```json +{ + "providers": { + "openai-team-a": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-a-id" + }, + "openai-team-b": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-b-id" + } + } +} +``` + +```4d +// Route to different organizations +var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"}) +var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"}) +``` + +## Related Documentation + +- [OpenAI Class](Classes/OpenAI.md) - Main client class +- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management +- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png new file mode 100644 index 00000000000000..2bd536326bf335 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png new file mode 100644 index 00000000000000..132fcb58c1e5fc Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png new file mode 100644 index 00000000000000..7af048330e16aa Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/settings/ai.md b/i18n/ja/docusaurus-plugin-content-docs/current/settings/ai.md new file mode 100644 index 00000000000000..e48b38cdca7577 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/settings/ai.md @@ -0,0 +1,140 @@ +--- +id: ai +title: AI page +--- + +The AI page allows you to add, remove, or view the list of all your AI providers and their related model aliases, whether they come from local sources or internet-based services. Providers and model aliases can then be used in your code througout your 4D application, especially with the [**4D-AIKit component**](../aikit/overview.md) using the [**model aliases**](../aikit/provider-model-aliases.md) feature. + +:::tip 関連したblog 記事 + +[Centralizing AI Providers and Model Aliases in 4D](https://blog.4d.com/centralizing-ai-providers-and-model-aliases-in-4d) + +::: + +## Managing providers + +4D supports [various AI providers](../aikit/compatible-openai.md) with an OpenAI-like API, each offering unique models and features for database needs. + +By default, the Providers list is empty. + +### Adding a provider + +To add an AI provider: + +1. Click on the **+** button at the bottom of the Providers list. +2. Enter the required [provider's configuration fields](#provider-properties), including credentials. +3. (optional) Click the **Test connection** button to make sure the provided URL and credentials are valid. + +If the connection is successful, the number of available models is displayed on the right side of the button: + +![](../assets/en/settings/ai-connection-ok.png) + +If the connection test fails, an error message is displayed (e.g. "Request failed: Not found" or "Request failed: Unauthorized"). + +4. Click **OK** to save the new provider, or **Cancel** to revert all modifications. + +### Editing a provider + +To edit or remove a provider: + +1. Select a registered provider in the list. +2. Edit the provider's information OR to remove a provider, click on the **-** button at the bottom of the Providers list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +## Provider properties + +When you select a provider in the Providers list, several properties are available. Property names in **bold** are mandatory to create a Provider. + +### 名称 + +Local name used to identify the provider in your code, for example "claude". The name must be [compliant with property names](../Concepts/identifiers.md) since it will be used in the application's code to reference the provider. + +### Base URL + +Endpoint of the provider's API, for example `https://api.openai.com/v1` or `http://localhost:11434/v1`. + +The combo box lists the main providers, you can select a value to enter the provider endpoint: + +![](../assets/en/settings/ai-base-url.png) + +### API Key + +(optional) API key for the provider. For instructions on generating an API key, please refer to your AI provider’s official documentation. Some AI providers may also require additional specific credentials. + +### 組織 + +(optional, OpenAI-specific) Organization ID used by the OpenAI API. + +### Project + +(optional, OpenAI-specific) ID of the project. Each OpenAI API key is attached to a project. + +### AIProviders.json + +The provider configuration is stored in a JSON file named *AIProviders.json* located next to the active *settings.4DSettings file* within the [project folder](../Project/architecture.md), [depending on your deployment configuration](./overview.md#enabling-user-settings). + +### Deployment with an API key + +When configuring an AI provider, you need to provide your own API key. It requires an external registration for getting API keys/credentials from AI providers. + +Using the Settings dialog box, the 4D developer can define a custom **provider name** (for example "open-ai-v1") and use this custom name in the code. They can also test it using their API key. + +When the 4D application is deployed with the [User settings enabled](../settings/overview.md#enabling-user-settings), the administrator can configure the User settings by using the **same AI provider name** ("open-ai-v1") and **customize the API key** to use the customer's key. Thanks to the [User settings priority rules](../settings/overview.md#priority-of-settings), the customer settings will automatically override the developer settings. + +:::warning + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API keys and credentials from exposure to remote machines. + +::: + +## Model Aliases + +The Model Aliases page allows you to list models from registered Providers that you want to use in your code and to name them with *aliases*. Thanks to model aliases, you avoid hardcoding model names, switch models without changing your code, and keep consistency across environments. + +When using a model alias: + +- The provider is automatically resolved (see [Model resolution](../aikit/Classes/OpenAIProviders.md#model-resolution) in the 4D-AIKit documentation). +- The model ID is applied. +- All credentials and endpoints are used. + +### Adding a model alias + +:::note + +To be able to add a model alias, you must have entered at least one valid provider in the **Providers** tab. + +::: + +To add a model alias: + +1. Click on the **+** button at the bottom of the model aliases list. +2. In the **Name** column, enter the name of the alias. +3. Click on the corresponding row in the **Provider** column to display the list of available providers ([provider names](#name) you entered in the Providers page), and select the name of the provider. +4. Click on the corresponding row in the **Model** column to display the list of available models exposed by the selected provider and select the model. +5. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +![](../assets/en/settings/model-alias.png) + +### Editing a model alias + +To edit or remove an alias: + +1. Select a model alias in the list. +2. Edit the alias information OR to remove a alias, click on the **-** button at the bottom of the list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +### Using a model alias + +You can directly use the model alias name wherever a model name is required (provided that model aliases are supported). + +For example, in 4D-AIKit, you can reference a model with the syntax: *{model:"ModelName"}*, where *ModelName* is a valid model defined in the Model Aliases tab: + +```4d +var $client:=cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; \ + {model: "Chat Model"}) +``` + +### 参照 + +["Provider & Model Aliases"](../aikit/provider-model-aliases.md) in the 4D AIKit documentation. \ No newline at end of file diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md index ac653bb1f379e5..901233c8525629 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -13,6 +13,8 @@ title: Notas de lançamento - New [`4D.Method` class](../API/MethodClass.md) to create and execute a 4D method code from text source. [`METHOD Get path`](../commands/method-get-path) and [`METHOD RESOLVE PATH`](../commands/method-resolve-path) commands support a new `path volatile method` constant (128). - IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifier.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter). - Remote [session](../API/SessionClass.md) objects are now [available client-side](../Desktop/sessions.md#availability). +- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component. +- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md). - Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions. - Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository). diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Project/architecture.md b/i18n/pt/docusaurus-plugin-content-docs/current/Project/architecture.md index 0ed50865b253a1..c325089c8780fa 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Project/architecture.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Project/architecture.md @@ -59,6 +59,7 @@ Esse arquivo de texto também pode conter chaves de configuração, em particula | menus.json | Definições de menus | JSON | | roles.json | [Privilégios, permissões](../ORDA/privileges.md#rolesjson-file) e outras configurações de segurança do projeto | JSON | | settings.4DSettings | Propiedades de la base *Structure*. No se tienen en cuenta si se definen *[parámetros de usuario](#settings-user)* o *[parámetros de usuario para datos](#settings-user-data)* (ver también [Prioridad de los parámetros](../settings/overview.md#priority-of-settings). **Atención**: en las aplicaciones compiladas, la configuración de la estructura se almacena en el archivo .4dz (de sólo lectura). Para las necesidades de despliegue, es necesario [habilitar](../settings/overview.md#enabling-user-settings) y utilizar *parámetros usuario* o *parámetros usuario para datos* para definir parámetros personalizados. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for Structure | JSON | | tips.json | Dicas definidas | JSON | | lists.json | Listas definidas | JSON | | filters.json | Filtros definidos | JSON | @@ -186,6 +187,7 @@ Essa pasta contém [**configurações de usuário para os dados**](../settings/o | directory.json | Descrição de os grupos e usuários de 4D e seus direitos de acesso quando o banco for lançado com este arquivo de dados. | JSON | | Backup.4DSettings | Parámetros de copia de seguridad de la base de datos, utilizados para definir las [opciones de copia de seguridad](Backup/settings.md) cuando la base se lanza con este archivo de datos. As teclas relativas à configuração da cópia de segurança são descritas no manual *4D XML Keys Backup*. | XML | | settings.4DSettings | Propriedades personalizadas de o banco de dados para este arquivo de dados. | XML | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this data file | JSON | ### `Logs` @@ -212,6 +214,7 @@ Essa pasta contém [**configurações de usuário**](../settings/overview.md#use | BuildApp.4DSettings | Build settings file, created automatically when using the application builder dialog box or the `BUILD APPLICATION` command | XML | | settings.4DSettings | Definições personalizadas para este projeto (todos os arquivos de dados) | XML | | logConfig.json | [Archivo de configuración de historial](../Debugging/debugLogFiles.md#using-a-log-configuration-file) personalizado | json | +| AIProviders.json | [AI provider configuration file](../settings/ai.md#aiprovidersjson) for this project (all data files) | JSON | ## `userPreferences.` diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index d997ac1b8e9866..677ce1b00759e0 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -77,3 +77,7 @@ $client.images.generate(...) $client.files.create(...) $client.model.lists(...) ``` + +## Provider Model Aliases + +The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation. diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md index 1b32c11ed9b665..c41a84d41d0d91 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,20 +13,20 @@ The `OpenAIChatCompletionParameters` class is designed to handle the parameters ## Propriedades -| Propriedade | Tipo | Valor padrão | Descrição | -| ----------------------- | ------------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | `"gpt-4o-mini"` | ID of the model to use. | -| `stream` | Parâmetros | `False` | Whether to stream back partial progress. Se definido, os tokens serão enviados como somente dados. Fórmula de retorno de chamada necessária. | -| `stream_options` | Object | `Null` | Property for stream=True. For example: `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | -| `n` | Integer | `1` | How many completions to generate for each prompt. | -| `temperature` | Real | `-1` | What sampling temperature to use, between 0 and 2. Higher values make the output more random, while lower values make it more focused and deterministic. | -| `store` | Parâmetros | `False` | Whether or not to store the output of this chat completion request. | -| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Currently supported values are `"low"`, `"medium"`, and `"high"`. | -| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | -| `tools` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | -| `tool_choice` | Diferente de | `Null` | Controls which (if any) tool is called by the model. Can be `"none"`, `"auto"`, `"required"`, or specify a particular tool. | -| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | +| Propriedade | Tipo | Valor padrão | Descrição | +| ----------------------- | ------------ | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | ID of the model to use. Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). | +| `stream` | Parâmetros | `False` | Whether to stream back partial progress. Se definido, os tokens serão enviados como somente dados. Fórmula de retorno de chamada necessária. | +| `stream_options` | Object | `Null` | Property for stream=True. For example: `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | +| `n` | Integer | `1` | How many completions to generate for each prompt. | +| `temperature` | Real | `-1` | What sampling temperature to use, between 0 and 2. Higher values make the output more random, while lower values make it more focused and deterministic. | +| `store` | Parâmetros | `False` | Whether or not to store the output of this chat completion request. | +| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Currently supported values are `"low"`, `"medium"`, and `"high"`. | +| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | +| `tools` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | +| `tool_choice` | Diferente de | `Null` | Controls which (if any) tool is called by the model. Can be `"none"`, `"auto"`, `"required"`, or specify a particular tool. | +| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | ### Asynchronous Callback Properties diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md index 8c13cc7d1fbba7..5bf0505365d701 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings Creates an embeddings for the provided input, model and parameters. -| Argumento | Tipo | Descrição | -| ------------ | ----------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| *entrada* | Text or Collection of Text | The input to vectorize. | -| *model* | Text | The [model to use](https://platform.openai.com/docs/guides/embeddings#embedding-models) | -| *parâmetros* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | The parameters to customize the embeddings request. | -| Resultado | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | The embeddings. | +| Argumento | Tipo | Descrição | +| ------------ | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| *entrada* | Text or Collection of Text | The input to vectorize. | +| *model* | Text | The [model to use](https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). | +| *parâmetros* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | The parameters to customize the embeddings request. | +| Resultado | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | The embeddings. | #### Example Usages diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md index a0e306ae5e8450..8930586f1ec4a5 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ The `OpenAIImageParameters` class is designed to configure and manage the parame ## Propriedades -| Nome da propriedade | Tipo | Valor padrão | Descrição | -| ------------------- | ------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Specifies the model to use for image generation. | -| `n` | Integer | 1 | The number of images to generate (must be between 1 and 10; only `n=1` is supported for `dall-e-3`). | -| `size` | Text | "1024x1024" | O tamanho das imagens geradas. Must conform to model specifications. | -| `style` | Text | "" | O estilo das imagens geradas (deve ser `vivid` ou `natural`). | -| `response_format` | Text | "url" | O formato para imagens retornadas, pode ser `url` ou `b64_json`. | +| Nome da propriedade | Tipo | Valor padrão | Descrição | +| ------------------- | ------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Specifies the model to use for image generation. Supports [provider:model aliases](../provider-model-aliases.md). | +| `n` | Integer | 1 | The number of images to generate (must be between 1 and 10; only `n=1` is supported for `dall-e-3`). | +| `size` | Text | "1024x1024" | O tamanho das imagens geradas. Must conform to model specifications. | +| `style` | Text | "" | O estilo das imagens geradas (deve ser `vivid` ou `natural`). | +| `response_format` | Text | "url" | O formato para imagens retornadas, pode ser `url` ou `b64_json`. | ## Veja também diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md new file mode 100644 index 00000000000000..be38db228be8c4 --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md @@ -0,0 +1,186 @@ +--- +id: openaiproviders +title: OpenAIProviders +--- + +# OpenAIProviders + +## Resumo + +The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format. + +For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md). + +## Descrição + +This class enables multi-provider support by: + +- Loading provider configurations from a single JSON file +- Loading named model aliases that map to providers and model IDs +- Resolving `provider:model` syntax to full API configurations +- Resolving named model aliases by bare name to full provider + model configurations + +The `OpenAI` class automatically loads provider configurations when instantiated. + +## Constructor + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +``` + +Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format). + +**Important:** + +- Only the first existing file is loaded. There is no merging of multiple files. +- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration. + +## Utilização + +### Integration with OpenAI Class + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use model aliases with provider:model syntax +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) +``` + +### Direct Provider Access + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() + +// Get a specific provider configuration +var $config := $providers.get("openai") +// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null + +// Get all provider names +var $names := $providers.list() +// Returns: ["openai", "anthropic", "mistral", "local"] +``` + +## Funções + +### get() + +**get**(*name* : Text) : Object + +Get a provider configuration by name. + +| Parâmetro | Tipo | Descrição | +| --------- | ------ | ----------------------------------------------------- | +| *name* | Text | The provider name | +| Resultado | Object | Provider configuration object, or `Null` if not found | + +#### Exemplo + +```4d +var $config := $providers.get("openai") +If ($config # Null) + // Use $config.baseURL, $config.apiKey, etc. + + // We could build a client with it + var $client:=cs.AIKit.OpenAI.new($config) +End if +``` + +### lista() + +**list**() : Collection + +Get all provider names. + +| Parâmetro | Tipo | Descrição | +| --------- | ---------- | ---------------------------- | +| Resultado | Collection | Collection of provider names | + +#### Exemplo + +```4d +var $names := $providers.list() +// Returns: ["openai", "anthropic", ...] + +For each ($name; $names) + var $config := $providers.get($name) +End for each +``` + +### modelAliases() + +**modelAliases**() : Collection + +Get all configured model aliases. + +| Parâmetro | Tipo | Descrição | +| --------- | ---------- | --------------------------------- | +| Resultado | Collection | Collection of model alias objects | + +Each object in the collection contains: + +| Propriedade | Tipo | Descrição | +| ----------- | ---- | --------------------------------- | +| `name` | Text | Model alias name | +| `provider` | Text | Provider name | +| `model` | Text | Model ID to use with the provider | + +#### Exemplo + +```4d +var $models := $providers.modelAliases() +// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...] + +For each ($model; $models) + // $m.name, $m.provider, $m.model +End for each +``` + +## Model Resolution + +Two syntaxes are supported for model resolution: + +### Provider alias (`provider:model`) + +Specify the provider and model name directly: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +``` + +This is resolved internally to: + +1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"` +2. Look up the `"openai"` provider configuration +3. Extract `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Exemplos:** + +- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model +- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus +- `"local:llama3"` → Use local provider with llama3 model + +### Model alias (bare name) + +Use a named model by its bare name from the `models` section of the configuration: + +```4d +var $client := cs.AIKit.OpenAI.new() +$client.chat.completions.create($messages; {model: ":my-gpt"}) +``` + +This is resolved internally to: + +1. Look up `"my-gpt"` in the `models` configuration +2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`) +3. Resolve the provider to get `baseURL` and `apiKey` +4. Make the API request using the resolved configuration + +**Exemplos:** + +- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model) +- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations + diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md new file mode 100644 index 00000000000000..b99a4383f69cd0 --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md @@ -0,0 +1,372 @@ +--- +id: provider-model-aliases +title: Provider & Model Aliases +--- + +# Provider & Model Aliases + +The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes. + +## Visão Geral + +Instead of hard-coding API endpoints and credentials in your code, you can: + +- Define provider configurations in a JSON file +- Use the `provider:model` syntax to specify a provider and model directly +- Define named model aliases that map to a provider and a model ID +- Use a named model alias by bare name (e.g., `my-gpt`) +- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily + +## Configuration Files + +The client automatically loads provider configurations from the first existing file found (in priority order): + +| Prioridade | Localização | File Path | +| --------------------------------- | ----------- | ------------------------------------------------- | +| 1 (mais alto) | userData | `/Settings/AIProviders.json` | +| 2 | user | `/Settings/AIProviders.json` | +| 3 (mais baixo) | structure | `/SOURCES/AIProviders.json` | + +**Important:** Only the **first existing file** is loaded. There is no merging of multiple files. + +### Configuration File Format + +```json +{ + "providers": { + "provider_name": { + "baseURL": "https://api.example.com/v1", + "apiKey": "optional-key", + "organization": "optional-org-id", + "project": "optional-project-id" + } + }, + "models": { + "model_alias_name": { + "provider": "provider_name", + "model": "actual-model-id", + } + } +} +``` + +### Provider Fields + +| Campo | Tipo | Required | Descrição | +| -------------- | ---- | -------- | -------------------------------------------------------------- | +| `baseURL` | Text | Sim | API endpoint URL | +| `apiKey` | Text | Não | API key value | +| `organization` | Text | Não | Organization ID (optional, OpenAI-specific) | +| `project` | Text | Não | Project ID (optional, OpenAI-specific) | + +### Model Alias Fields + +| Campo | Tipo | Required | Descrição | +| ---------- | ---- | -------- | ------------------------------------------------------------------- | +| `provider` | Text | Sim | Name of the provider (must exist in `providers`) | +| `model` | Text | Sim | Model ID used by the provider | + +### Example Configuration + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1" + }, + "local": { + "baseURL": "http://localhost:11434/v1" + }, + "mistral": { + "baseURL": "https://api.mistral.ai/v1", + "apiKey": "your-mistral-key" + } + }, + "models": { + "my-gpt": { + "provider": "openai", + "model": "gpt-5.1" + }, + "my-claude": { + "provider": "anthropic", + "model": "claude-3-5-sonnet-20241022" + }, + "my-embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } + } +} +``` + +## Usage in API Calls + +### Model Parameter Formats + +Two syntaxes are supported: + +| Sintaxe | Descrição | +| --------------------- | ---------------------------------------------------------------------------------- | +| `provider:model_name` | Provider alias — specify provider and model directly | +| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name | + +#### Provider alias syntax + +Use the `provider:model_name` syntax in any API call that accepts a model parameter: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Chat completions +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) +var $result := $client.chat.completions.create($messages; {model: "local:llama3"}) + +// Embeddings +var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small") +var $result := $client.embeddings.create("text"; "local:nomic-embed-text") + +// Image generation +var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"}) +``` + +#### Model alias syntax + +Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically: + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use a named model alias +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) +var $result := $client.chat.completions.create($messages; {model: ":my-claude"}) + +// Embeddings with a named model alias +var $result := $client.embeddings.create("text"; ":my-embedding") +``` + +### How It Works + +#### Provider alias (`provider:model`) + +When you use the `provider:model` syntax, the client automatically: + +1. **Parses** the model string to extract provider name and model name + - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"` + +2. **Looks up** the provider configuration from the loaded JSON file + - Retrieves `baseURL`, `apiKey`, `organization`, `project` + +3. **Makes the API request** using the resolved configuration + - Sends request to the provider's `baseURL` with the correct `apiKey` + +#### Model alias (bare name) + +When you use a bare model name that matches a configured alias, the client automatically: + +1. **Looks up** the model alias in the `models` section of the configuration + - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"` + +2. **Resolves** the associated provider to get `baseURL` and `apiKey` + +3. **Makes the API request** using the provider's endpoint and the stored model ID + +### Using Plain Model Names + +If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor: + +```4d +// Use constructor configuration +var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"}) +var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"}) + +// Override with provider alias +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"}) + +// Override with model alias (bare name) +var $result := $client.chat.completions.create($messages; {model: ":my-gpt"}) + +``` + +## Exemplos + +### Multi-Provider Chat Application + +```4d +var $client := cs.AIKit.OpenAI.new() +var $messages := [] +$messages.push({role: "user"; content: "What is the capital of France?"}) + +// Try OpenAI +var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"}) + +// Try Anthropic +var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"}) + +// Try local Ollama +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Embeddings with Multiple Providers + +```4d +var $client := cs.AIKit.OpenAI.new() +var $text := "Hello world" + +// Use OpenAI embeddings +var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small") + +// Use local embeddings +var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text") +``` + +## Configuration Management + +Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files. + +**To add or modify providers:** + +1. Use 4D Settings interface (recommended), or +2. Edit the appropriate JSON file (userData, user, or structure) +3. Restart your application or create a new OpenAI client instance to load changes + +**Recommended file location:** + +- **For user-specific configs:** `/Settings/AIProviders.json` +- **For application defaults:** `/SOURCES/AIProviders.json` + +### No Reload Capability + +Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes: + +```4d +// Configuration changed - create new client +var $client := cs.AIKit.OpenAI.new() +``` + +## Security Considerations + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines. + +## Common Use Cases + +### Local Development with Ollama + +```json +{ + "providers": { + "local": { + "baseURL": "http://localhost:11434/v1" + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"}) +``` + +### Named Model Aliases + +Define models once, use them everywhere by name: + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + } + }, + "models": { + "chat": { + "provider": "openai", + "model": "gpt-5.1" + }, + "fast": { + "provider": "anthropic", + "model": "claude-3-5-haiku-20241022" + }, + "embedding": { + "provider": "openai", + "model": "text-embedding-3-small", + } + } +} +``` + +```4d +var $client := cs.AIKit.OpenAI.new() + +// Use named model aliases — no need to remember provider or model ID +var $result := $client.chat.completions.create($messages; {model: ":chat"}) +var $result := $client.chat.completions.create($messages; {model: ":fast"}) +var $embedding := $client.embeddings.create("text"; ":embedding") +``` + +### List All Configured Models + +```4d +var $providers := cs.AIKit.OpenAIProviders.new() +var $models := $providers.modelAliases() +// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...] +``` + +### Production with Multiple Cloud Providers + +```json +{ + "providers": { + "openai": { + "baseURL": "https://api.openai.com/v1", + "apiKey": "your-openai-key" + }, + "anthropic": { + "baseURL": "https://api.anthropic.com/v1", + "apiKey": "your-anthropic-key" + }, + "azure": { + "baseURL": "https://your-resource.openai.azure.com", + "apiKey": "your-azure-key" + } + } +} +``` + +### Provider-Specific Organizations + +```json +{ + "providers": { + "openai-team-a": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-a-id" + }, + "openai-team-b": { + "baseURL": "https://api.openai.com/v1", + "organization": "org-team-b-id" + } + } +} +``` + +```4d +// Route to different organizations +var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"}) +var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"}) +``` + +## Related Documentation + +- [OpenAI Class](Classes/OpenAI.md) - Main client class +- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management +- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png new file mode 100644 index 00000000000000..2bd536326bf335 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-base-url.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png new file mode 100644 index 00000000000000..132fcb58c1e5fc Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/ai-connection-ok.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png new file mode 100644 index 00000000000000..7af048330e16aa Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/settings/model-alias.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/settings/ai.md b/i18n/pt/docusaurus-plugin-content-docs/current/settings/ai.md new file mode 100644 index 00000000000000..31dd6276335c81 --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current/settings/ai.md @@ -0,0 +1,140 @@ +--- +id: ai +title: AI page +--- + +The AI page allows you to add, remove, or view the list of all your AI providers and their related model aliases, whether they come from local sources or internet-based services. Providers and model aliases can then be used in your code througout your 4D application, especially with the [**4D-AIKit component**](../aikit/overview.md) using the [**model aliases**](../aikit/provider-model-aliases.md) feature. + +:::tip Related blog post + +[Centralizing AI Providers and Model Aliases in 4D](https://blog.4d.com/centralizing-ai-providers-and-model-aliases-in-4d) + +::: + +## Managing providers + +4D supports [various AI providers](../aikit/compatible-openai.md) with an OpenAI-like API, each offering unique models and features for database needs. + +By default, the Providers list is empty. + +### Adding a provider + +To add an AI provider: + +1. Click on the **+** button at the bottom of the Providers list. +2. Enter the required [provider's configuration fields](#provider-properties), including credentials. +3. (optional) Click the **Test connection** button to make sure the provided URL and credentials are valid. + +If the connection is successful, the number of available models is displayed on the right side of the button: + +![](../assets/en/settings/ai-connection-ok.png) + +If the connection test fails, an error message is displayed (e.g. "Request failed: Not found" or "Request failed: Unauthorized"). + +4. Click **OK** to save the new provider, or **Cancel** to revert all modifications. + +### Editing a provider + +To edit or remove a provider: + +1. Select a registered provider in the list. +2. Edit the provider's information OR to remove a provider, click on the **-** button at the bottom of the Providers list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +## Provider properties + +When you select a provider in the Providers list, several properties are available. Property names in **bold** are mandatory to create a Provider. + +### Nome + +Local name used to identify the provider in your code, for example "claude". The name must be [compliant with property names](../Concepts/identifiers.md) since it will be used in the application's code to reference the provider. + +### Base URL + +Endpoint of the provider's API, for example `https://api.openai.com/v1` or `http://localhost:11434/v1`. + +The combo box lists the main providers, you can select a value to enter the provider endpoint: + +![](../assets/en/settings/ai-base-url.png) + +### API Key + +(optional) API key for the provider. For instructions on generating an API key, please refer to your AI provider’s official documentation. Some AI providers may also require additional specific credentials. + +### Organization + +(optional, OpenAI-specific) Organization ID used by the OpenAI API. + +### Project + +(optional, OpenAI-specific) ID of the project. Each OpenAI API key is attached to a project. + +### AIProviders.json + +The provider configuration is stored in a JSON file named *AIProviders.json* located next to the active *settings.4DSettings file* within the [project folder](../Project/architecture.md), [depending on your deployment configuration](./overview.md#enabling-user-settings). + +### Deployment with an API key + +When configuring an AI provider, you need to provide your own API key. It requires an external registration for getting API keys/credentials from AI providers. + +Using the Settings dialog box, the 4D developer can define a custom **provider name** (for example "open-ai-v1") and use this custom name in the code. They can also test it using their API key. + +When the 4D application is deployed with the [User settings enabled](../settings/overview.md#enabling-user-settings), the administrator can configure the User settings by using the **same AI provider name** ("open-ai-v1") and **customize the API key** to use the customer's key. Thanks to the [User settings priority rules](../settings/overview.md#priority-of-settings), the customer settings will automatically override the developer settings. + +:::warning + +When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API keys and credentials from exposure to remote machines. + +::: + +## Model Aliases + +The Model Aliases page allows you to list models from registered Providers that you want to use in your code and to name them with *aliases*. Thanks to model aliases, you avoid hardcoding model names, switch models without changing your code, and keep consistency across environments. + +When using a model alias: + +- The provider is automatically resolved (see [Model resolution](../aikit/Classes/OpenAIProviders.md#model-resolution) in the 4D-AIKit documentation). +- The model ID is applied. +- All credentials and endpoints are used. + +### Adding a model alias + +:::note + +To be able to add a model alias, you must have entered at least one valid provider in the **Providers** tab. + +::: + +To add a model alias: + +1. Click on the **+** button at the bottom of the model aliases list. +2. In the **Name** column, enter the name of the alias. +3. Click on the corresponding row in the **Provider** column to display the list of available providers ([provider names](#name) you entered in the Providers page), and select the name of the provider. +4. Click on the corresponding row in the **Model** column to display the list of available models exposed by the selected provider and select the model. +5. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +![](../assets/en/settings/model-alias.png) + +### Editing a model alias + +To edit or remove an alias: + +1. Select a model alias in the list. +2. Edit the alias information OR to remove a alias, click on the **-** button at the bottom of the list. +3. Click **OK** to save the modifications, or **Cancel** to revert all modifications. + +### Using a model alias + +You can directly use the model alias name wherever a model name is required (provided that model aliases are supported). + +For example, in 4D-AIKit, you can reference a model with the syntax: *{model:"ModelName"}*, where *ModelName* is a valid model defined in the Model Aliases tab: + +```4d +var $client:=cs.AIKit.OpenAI.new() +var $result := $client.chat.completions.create($messages; \ + {model: "Chat Model"}) +``` + +### Veja também + +["Provider & Model Aliases"](../aikit/provider-model-aliases.md) in the 4D AIKit documentation. \ No newline at end of file