i18n - docs translations (#22511)
Created by Github action <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22511?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
committed by
GitHub
parent
1db9b0c657
commit
b7fc0872c8
@@ -36,6 +36,60 @@ Notas:
|
||||
* El rol predeterminado se detecta automáticamente a partir del archivo de rol marcado con [`defineApplicationRole()`](/l/es/developers/extend/apps/config/roles); no necesitas hacer referencia a él desde `defineApplication()`.
|
||||
* Las funciones de preinstalación y posinstalación se detectan automáticamente durante la compilación del manifiesto; no necesitas referenciarlas en `defineApplication()`.
|
||||
* Pasar `defaultRoleUniversalIdentifier` explícitamente sigue siendo compatible por motivos de retrocompatibilidad, pero está en desuso en favor de `defineApplicationRole()`.
|
||||
* `serverVariables` son configuraciones y secretos con ámbito de instancia (por ejemplo, claves de API). A diferencia de `applicationVariables`, no declaran ningún valor en el manifiesto: el operador del espacio de trabajo los completa desde la configuración de la aplicación, y se inyectan en las funciones lógicas solo una vez que se han establecido.
|
||||
|
||||
## Tipos de variables
|
||||
|
||||
Tanto `applicationVariables` como `serverVariables` aceptan un `type` opcional (y, para `SELECT` / `MULTI_SELECT`, una lista de `options`). Tipos admitidos: `TEXT` (predeterminado), `BOOLEAN`, `NUMBER`, `NUMERIC`, `DATE`, `DATE_TIME`, `SELECT`, `MULTI_SELECT`, `ARRAY`, `RAW_JSON`, `RICH_TEXT`.
|
||||
|
||||
```ts src/application-config.ts
|
||||
import { defineApplication, FieldType } from 'twenty-sdk/define';
|
||||
|
||||
export default defineApplication({
|
||||
// ...identity, role...
|
||||
applicationVariables: {
|
||||
MAX_POSTCARDS: {
|
||||
universalIdentifier: '5f4497e4-9030-4085-85eb-2c48b8d53713',
|
||||
description: 'Maximum postcards per batch',
|
||||
type: FieldType.NUMBER,
|
||||
value: 10,
|
||||
},
|
||||
DEFAULT_REGION: {
|
||||
universalIdentifier: '76c5c321-b6b6-46eb-b4fc-f9f04bb04227',
|
||||
description: 'Default shipping region',
|
||||
type: FieldType.SELECT,
|
||||
options: [
|
||||
{ label: 'Europe', value: 'eu' },
|
||||
{ label: 'United States', value: 'us' },
|
||||
],
|
||||
value: 'eu',
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
El `type` solo afecta a la **presentación y validación**: selecciona la entrada correspondiente en la interfaz de configuración del espacio de trabajo (un interruptor, campo numérico, lista desplegable, selector de fecha, editor JSON, …) y permite que la compilación valide tu configuración (por ejemplo, `SELECT` / `MULTI_SELECT` deben declarar `options` no vacías). **No** cambia cómo el valor llega a tu código.
|
||||
|
||||
Los valores **siempre se inyectan como cadenas**; esto es inherente a las variables de entorno (`process.env.*` solo admite cadenas). Cuando se ejecuta tu función lógica, el ejecutor serializa cada valor según su `type` declarado al construir `process.env`, por lo que el formato de cadena es coherente independientemente de cómo se haya establecido el valor (valor predeterminado del manifiesto, interfaz de configuración o una versión anterior):
|
||||
|
||||
| Tipo | Cadena de `process.env` |
|
||||
| ------------------------------------- | ---------------------------------------------- |
|
||||
| `TEXT`, `SELECT`, `DATE`, `DATE_TIME` | el valor sin procesar (`"eu"`, `"2026-01-01"`) |
|
||||
| `BOOLEAN` | `"true"` / `"false"` |
|
||||
| `NUMBER`, `NUMERIC` | cadena decimal (`"10"`, `"2.5"`) |
|
||||
| `MULTI_SELECT`, `ARRAY` | Array JSON (`'["email","postcard"]'`) |
|
||||
| `RAW_JSON`, `RICH_TEXT` | Objeto JSON (`'{"retries":3}'`) |
|
||||
|
||||
Analiza la cadena para volver al tipo que esperas:
|
||||
|
||||
```ts
|
||||
const maxCards = Number(process.env.MAX_POSTCARDS); // "10" -> 10
|
||||
const enabled = process.env.ENABLE_TRACKING === 'true'; // "true" -> true
|
||||
const channels = JSON.parse(process.env.ENABLED_CHANNELS ?? '[]'); // '["email"]' -> ["email"]
|
||||
const config = JSON.parse(process.env.PROVIDER_CONFIG ?? '{}'); // '{"retries":3}' -> { retries: 3 }
|
||||
```
|
||||
|
||||
Lo mismo se aplica a los componentes de interfaz que leen valores mediante `getApplicationVariable('VARIABLE_NAME')`: el valor devuelto es una cadena; analízalo según sea necesario.
|
||||
|
||||
## Rol de función predeterminado
|
||||
|
||||
|
||||
@@ -377,6 +377,8 @@ export default defineFrontComponent({
|
||||
Las variables secretas (`isSecret: true`) **no** se exponen a los componentes de front. Solo están disponibles en las [funciones de lógica](/l/es/developers/extend/apps/logic/logic-functions), que se ejecutan del lado del servidor. Esto evita que valores confidenciales como las claves de API se envíen al navegador.
|
||||
</Warning>
|
||||
|
||||
`getApplicationVariable` siempre devuelve una **cadena** (o `undefined`), independientemente del `type` declarado de la variable. La cadena se serializa de forma coherente según el tipo (booleanos como `"true"` / `"false"`, números como cadenas decimales, arrays / objetos como JSON), el mismo formato que se usa para la función lógica `process.env` — parsea tú mismo (`Number(...)`, `JSON.parse(...)`, `=== 'true'`). Consulta [Tipos de variables](/l/es/developers/extend/apps/config/application#variable-types).
|
||||
|
||||
Las siguientes variables de sistema siempre están disponibles a través de `process.env`:
|
||||
|
||||
| Variable | Descripción |
|
||||
|
||||
Reference in New Issue
Block a user