i18n - docs translations (#23515)

Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot]
2026-07-29 17:23:57 +02:00
committed by GitHub
parent e5c6cbcf80
commit 8707ebb7ac
36 changed files with 865 additions and 214 deletions
@@ -1,16 +1,22 @@
---
title: Fare riferimento ai campi di sistema
description: Fai riferimento ai campi di sistema creati automaticamente, come createdAt o updatedAt, nelle viste e in altre entità con getFieldUniversalIdentifier.
title: Fare riferimento ai metadati di sistema
description: Risolvi gli identificatori universali deterministici dei metadati che Twenty predispone automaticamente su ogni oggetto, così la tua app può farvi riferimento senza doverli codificare in modo statico.
icon: gears
---
Ogni oggetto in Twenty viene distribuito con un insieme di **campi di sistema** che non dichiari mai esplicitamente. Vengono creati automaticamente dal server quando viene effettuato il provisioning dell'oggetto:
Ogni oggetto in Twenty include **metadati di sistema** che non dichiari mai direttamente, come ad esempio un insieme di campi e una vista elenco principale con le sue colonne. Il server crea tutto questo quando l'oggetto viene predisposto e l'insieme cresce man mano che Twenty cresce.
Poiché non lo dichiari, non esiste alcuna costante `universalIdentifier` da importare. Invece, il server **deriva** ogni identificatore in modo deterministico e `twenty-sdk` espone la stessa derivazione affinché il tuo manifest possa risolvere il valore esatto utilizzato dal server.
## Campi di sistema
I campi scalari presenti su ogni oggetto, nessuno dei quali dichiari con [`defineField()`](/l/it/developers/extend/apps/data/extending-objects):
`id`, `createdAt`, `updatedAt`, `deletedAt`, `createdBy`, `updatedBy`, `position`, `searchVector`
Poiché non dichiari questi campi con [`defineField()`](/l/it/developers/extend/apps/data/extending-objects), non esiste alcuna costante `universalIdentifier` da importare. Quindi, come fai a fare riferimento a `createdAt` come colonna in una [vista](/l/it/developers/extend/apps/layout/views)?
Quindi, come fai a fare riferimento a `createdAt` come colonna in una [vista](/l/it/developers/extend/apps/layout/views)?
## Il problema
### Il problema
A partire da Twenty 2.19, l'identificatore universale di un campo di sistema viene derivato in modo deterministico dal server sulla base di tre input: l'identificatore universale dell'applicazione, l'identificatore universale dell'oggetto e il nome del campo. Inventare un id e hardcodarlo non funziona: non corrisponde a nulla sul server e la sincronizzazione rifiuta il riferimento orfano:
@@ -18,7 +24,7 @@ A partire da Twenty 2.19, l'identificatore universale di un campo di sistema vie
Dev sync failed: viewField: INVALID_VIEW_DATA: Field metadata not found
```
## La soluzione
### La soluzione
<Note>
`getFieldUniversalIdentifier` è disponibile da `twenty-sdk` 2.21 in poi.
@@ -40,7 +46,7 @@ const createdAtFieldId = getFieldUniversalIdentifier({
* `objectUniversalIdentifier` è l'identificatore dell'oggetto a cui il campo appartiene.
* `name` è il nome del campo di sistema, uno dei valori elencati sopra.
## Esempio: una colonna createdAt in una vista
### Esempio: una colonna createdAt in una vista
Il caso tipico è aggiungere una colonna `createdAt` a una vista di uno dei tuoi oggetti personalizzati. Risolvi l'id del campo e usalo come qualsiasi altro `fieldMetadataUniversalIdentifier`:
@@ -86,7 +92,7 @@ Lo stesso id risolto funziona ovunque ci si aspetti un `fieldMetadataUniversalId
input cambiano ed evita discrepanze se la modalità di derivazione dovesse mai evolvere.
</Note>
## Campi di relazione di sistema
### Campi di relazione di sistema
<Note>
`getSystemRelationFieldUniversalIdentifier` è disponibile da `twenty-sdk`
@@ -132,18 +138,68 @@ const attachmentTargetRocketFieldId =
Come per i campi di sistema scalari, l'id risolto funziona ovunque ci si aspetti un `fieldMetadataUniversalIdentifier`.
## Viste di sistema
<Note>
`getSystemViewUniversalIdentifier` e `getSystemViewFieldUniversalIdentifier`
sono disponibili da `twenty-sdk` 2.26 in poi e richiedono un server Twenty
dalla versione 2.26 o successiva.
</Note>
Il server predispone anche una **vista di sistema** su ogni oggetto: la vista elenco principale (`All {objectLabelPlural}`, con chiave `ViewKey.INDEX`), con una colonna per ogni campo visualizzabile. Come per i campi di relazione di sistema, i loro identificatori sono derivati senza dipendere dai nomi, quindi rinominare un oggetto o un campo non li modifica mai.
Usa `getSystemViewUniversalIdentifier` per risolvere la vista:
```ts
import { getSystemViewUniversalIdentifier, ViewKey } from 'twenty-sdk/define';
const rocketIndexViewId = getSystemViewUniversalIdentifier({
objectMetadataApplicationUniversalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
objectUniversalIdentifier: ROCKET_OBJECT_UNIVERSAL_IDENTIFIER,
viewKey: ViewKey.INDEX,
});
```
* `objectMetadataApplicationUniversalIdentifier` è lapplicazione proprietaria dell**oggetto**, che è ciò in base a cui viene definito lo spazio dei nomi della vista.
* `objectUniversalIdentifier` è loggetto che la vista elenca.
* `viewKey` è la chiave della vista di sistema, oggi `ViewKey.INDEX`.
Lid risolto funziona ovunque ci si aspetti un `viewUniversalIdentifier`, ad esempio in una voce della sidebar [`NavigationMenuItemType.VIEW`](/l/it/developers/extend/apps/layout/navigation-menu-items). Per aprire semplicemente la lista principale di un oggetto, è preferibile usare `NavigationMenuItemType.OBJECT` con `targetObjectUniversalIdentifier`: non richiede alcuna derivazione.
`getSystemViewFieldUniversalIdentifier` risolve una singola **colonna** su una vista di sistema, a partire dalla vista e dal campo che visualizza:
```ts
import { getSystemViewFieldUniversalIdentifier } from 'twenty-sdk/define';
const rocketNameColumnId = getSystemViewFieldUniversalIdentifier({
fieldMetadataApplicationUniversalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
viewUniversalIdentifier: rocketIndexViewId,
fieldMetadataUniversalIdentifier: ROCKET_NAME_FIELD_UNIVERSAL_IDENTIFIER,
});
```
Nota il primo argomento: una colonna appartiene allo spazio dei nomi dellapplicazione proprietaria del **campo che visualizza**, non di quella proprietaria della vista. Un campo che la tua app aggiunge a un oggetto standard ottiene la propria colonna derivata sotto la tua applicazione, su una vista di proprietà di Twenty.
<Warning>
Le viste di sistema e le loro colonne sono **di proprietà del server**: risolvi i loro identificatori per fare riferimento ad esse, mai per dichiararle. `key` su
[`defineView()`](/l/it/developers/extend/apps/layout/views) è deprecato e
ignorato, quindi una vista del manifest non può mai rivendicare la chiave `INDEX`, e il server predispone già una colonna per ogni campo che aggiungi, pertanto dichiarare un tuo
`defineViewField()` per quello stesso campo su una vista di sistema entra in conflitto con essa.
</Warning>
## Oggetti standard di Twenty
Per un oggetto **standard** di Twenty (Person, Company, Opportunity, …), non hai bisogno di derivare nulla: gli identificatori dei campi di sistema sono costanti pre-calcolate che puoi importare direttamente.
Per un oggetto **standard** di Twenty (Person, Company, Opportunity, …), non hai bisogno di derivare nulla: gli identificatori sono costanti pre-calcolate che puoi importare direttamente, sia per i campi che per le viste.
```ts
import { STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS } from 'twenty-sdk/define';
// STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.createdAt.universalIdentifier
// STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.updatedAt.universalIdentifier
// STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.views.allPeople.universalIdentifier
```
Usa `getFieldUniversalIdentifier` quando l'oggetto è uno che **la tua app** definisce con [`defineObject()`](/l/it/developers/extend/apps/data/objects), per cui non esiste alcuna costante di questo tipo.
Usa gli helper sopra quando loggetto è uno che **la tua app** definisce con [`defineObject()`](/l/it/developers/extend/apps/data/objects), per cui non esiste alcuna costante di questo tipo.
<Note>
`name` è un campo **predefinito**, non un campo di sistema. Mantiene un proprio identificatore universale hardcoded e non viene risolto tramite