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: Cílení na systémová pole
description: Odkazujte na automaticky vytvářená systémová pole, jako jsou createdAt nebo updatedAt, ve zobrazeních a dalších entitách pomocí getFieldUniversalIdentifier.
title: Cílení na systémová metadata
description: Vyřešte deterministické univerzální identifikátory metadat, která Twenty automaticky zřizuje u každého objektu, aby se na ně vaše aplikace mohla odkazovat bez hardcodování.
icon: gears
---
Každý objekt v Twenty je dodáván se sadou **systémových polí**, která sami nikdy nedefinujete. Tato pole jsou automaticky vytvářena serverem při zřízení objektu:
Každý objekt v Twenty **systémová metadata**, která sami nedefinujete, například sadu polí a hlavní zobrazení seznamu s jeho sloupci. Server všechno vytvoří při zřízení objektu a tato sada roste spolu s tím, jak roste Twenty.
Protože je nedefinujete, neexistuje žádná konstanta `universalIdentifier`, kterou byste mohli importovat. Místo toho server každý identifikátor **odvozuje** deterministicky a `twenty-sdk` zpřístupňuje stejné odvozování, takže váš manifest může zjistit přesnou hodnotu, kterou server používá.
## Systémová pole
Skalární pole přítomná na každém objektu, z nichž žádné nedefinujete pomocí [`defineField()`](/l/cs/developers/extend/apps/data/extending-objects):
`id`, `createdAt`, `updatedAt`, `deletedAt`, `createdBy`, `updatedBy`, `position`, `searchVector`
Protože tato pole nedefinujete pomocí [`defineField()`](/l/cs/developers/extend/apps/data/extending-objects), neexistuje žádná konstanta `universalIdentifier`, kterou byste mohli importovat. Jak tedy odkážete na `createdAt` jako na sloupec ve [zobrazení](/l/cs/developers/extend/apps/layout/views)?
Jak tedy odkážete na `createdAt` jako na sloupec ve [zobrazení](/l/cs/developers/extend/apps/layout/views)?
## Problém
### Problém
Od Twenty 2.19 je univerzální identifikátor systémového pole **deterministicky odvozován** serverem ze tří vstupů: univerzálního identifikátoru aplikace, univerzálního identifikátoru objektu a názvu pole. Vymyslet si id a natvrdo ho zapsat nebude fungovat: neshoduje se s ničím na serveru a synchronizace zamítne osiřelý odkaz:
@@ -18,7 +24,7 @@ Od Twenty 2.19 je univerzální identifikátor systémového pole **deterministi
Dev sync failed: viewField: INVALID_VIEW_DATA: Field metadata not found
```
## Řešení
### Řešení
<Note>
`getFieldUniversalIdentifier` je k dispozici od `twenty-sdk` verze 2.21 a vyšší.
@@ -40,7 +46,7 @@ const createdAtFieldId = getFieldUniversalIdentifier({
* `objectUniversalIdentifier` je identifikátor objektu, ke kterému pole patří.
* `name` je název systémového pole, jedna z výše uvedených hodnot.
## Příklad: sloupec createdAt v zobrazení
### Příklad: sloupec createdAt v zobrazení
Typickým případem je přidání sloupce `createdAt` do zobrazení některého z vašich vlastních objektů. Odvoďte identifikátor pole a odkažte na něj stejně jako na jakýkoli jiný `fieldMetadataUniversalIdentifier`:
@@ -86,7 +92,7 @@ Tentýž odvozený identifikátor funguje všude tam, kde se očekává `fieldMe
vstupy změní, a předchází odchylkám, pokud se samotný způsob odvozování někdy změní.
</Note>
## Systémová relační pole
### Systémová relační pole
<Note>
`getSystemRelationFieldUniversalIdentifier` je k dispozici od verze `twenty-sdk`
@@ -132,18 +138,68 @@ const attachmentTargetRocketFieldId =
Stejně jako u skalárních systémových polí funguje vyřešené ID všude tam, kde je očekáváno `fieldMetadataUniversalIdentifier`.
## Systémová zobrazení
<Note>
`getSystemViewUniversalIdentifier` a `getSystemViewFieldUniversalIdentifier`
jsou k dispozici od verze `twenty-sdk` 2.26 a vyžadují server Twenty ve
verzi 2.26 nebo novější.
</Note>
Server také pro každý objekt zřizuje **systémové zobrazení**: hlavní zobrazení seznamu (`All {objectLabelPlural}`, s klíčem `ViewKey.INDEX`) s jedním sloupcem pro každé zobrazitelné pole. Stejně jako u systémových relačních polí jsou jejich identifikátory odvozovány **nezávisle na názvu**, takže přejmenování objektu nebo pole je nikdy nezmění.
Použijte `getSystemViewUniversalIdentifier` k vyřešení zobrazení:
```ts
import { getSystemViewUniversalIdentifier, ViewKey } from 'twenty-sdk/define';
const rocketIndexViewId = getSystemViewUniversalIdentifier({
objectMetadataApplicationUniversalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
objectUniversalIdentifier: ROCKET_OBJECT_UNIVERSAL_IDENTIFIER,
viewKey: ViewKey.INDEX,
});
```
* `objectMetadataApplicationUniversalIdentifier` je aplikace, která vlastní **objekt**, podle které je zobrazení namespacované.
* `objectUniversalIdentifier` je objekt, který zobrazení vypisuje.
* `viewKey` je klíč systémového zobrazení, aktuálně `ViewKey.INDEX`.
Vyhodnocené ID funguje všude tam, kde se očekává `viewUniversalIdentifier`, například u položky postranního panelu [`NavigationMenuItemType.VIEW`](/l/cs/developers/extend/apps/layout/navigation-menu-items). Pro pouhé otevření hlavního seznamu objektu preferujte `NavigationMenuItemType.OBJECT` s `targetObjectUniversalIdentifier`: nevyžaduje žádné odvozování.
`getSystemViewFieldUniversalIdentifier` vyhodnotí jeden konkrétní **sloupec** v systémovém zobrazení na základě zobrazení a pole, které zobrazuje:
```ts
import { getSystemViewFieldUniversalIdentifier } from 'twenty-sdk/define';
const rocketNameColumnId = getSystemViewFieldUniversalIdentifier({
fieldMetadataApplicationUniversalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
viewUniversalIdentifier: rocketIndexViewId,
fieldMetadataUniversalIdentifier: ROCKET_NAME_FIELD_UNIVERSAL_IDENTIFIER,
});
```
Všimněte si prvního argumentu: sloupec je namespacován podle aplikace, která vlastní **pole, které zobrazuje**, nikoli podle aplikace, která vlastní zobrazení. Pole, které vaše aplikace přidá ke standardnímu objektu, má svůj sloupec odvozený pod vaší aplikací, a to v rámci zobrazení vlastněného Twenty.
<Warning>
Systémová zobrazení a jejich sloupce jsou **vlastněna serverem**: vyhodnocujte jejich identifikátory pro účely odkazování, nikdy pro jejich deklaraci. `key` u
[`defineView()`](/l/cs/developers/extend/apps/layout/views) je zastaralý a
ignorovaný, takže manifestové zobrazení nikdy nemůže nárokovat klíč `INDEX` a server už zřizuje sloupec pro každé pole, které přidáte, takže deklarovat vlastní
`defineViewField()` pro stejné pole v systémovém zobrazení s tím bude v konfliktu.
</Warning>
## Standardní objekty Twenty
U **standardního** objektu Twenty (Person, Company, Opportunity, …) nemusíte nic odvozovat: identifikátory systémových polí jsou předpočítané konstanty, které můžete přímo importovat.
U **standardního** objektu Twenty (Person, Company, Opportunity, …) nemusíte nic odvozovat: identifikátory jsou předpočítané konstanty, které můžete přímo importovat, a to jak pro pole, tak pro zobrazení.
```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
```
Použijte `getFieldUniversalIdentifier` v případě, kdy je objekt definován **vaší aplikací** pomocí [`defineObject()`](/l/cs/developers/extend/apps/data/objects) a žádná taková konstanta neexistuje.
Použijte pomocné funkce uvedené výše v případě, kdy je objekt definován **vaší aplikací** pomocí [`defineObject()`](/l/cs/developers/extend/apps/data/objects) a žádná taková konstanta neexistuje.
<Note>
`name` je **výchozí** pole, nikoli systémové pole. Má svůj vlastní natvrdo daný
@@ -4,10 +4,12 @@ description: Dodávejte předem nakonfigurovaná uložená zobrazení pořad
icon: list
---
**Zobrazení** je uložená konfigurace toho, jak se zobrazují záznamy objektu: která pole se zobrazují, v jakém pořadí, zda jsou viditelná a jaké filtry nebo seskupení jsou použity. Pomocí `defineView()` můžete s aplikací dodávat předem nakonfigurovaná zobrazení obvykle výchozí indexové zobrazení pro každý vlastní objekt, který vytvoříte.
**Zobrazení** je uložená konfigurace toho, jak se zobrazují záznamy objektu: která pole se zobrazují, v jakém pořadí, zda jsou viditelná a jaké filtry nebo seskupení jsou použity. Pomocí `defineView()` můžete k aplikaci přidat předkonfigurovaná zobrazení.
Každý objekt automaticky získá své hlavní zobrazení seznamu (tabulku „All ...“, kterou otevírá navigační položka `OBJECT`), poskytované serverem včetně objektů, které vaše aplikace vytváří, s jedním sloupcem pro každé pole, které vaše aplikace deklaruje. Zobrazení, která definujete pomocí `defineView()`, jsou vždy **dodatečná** zobrazení nad rámec tohoto výchozího.
```ts src/views/example-view.ts
import { defineView, ViewKey } from 'twenty-sdk/define';
import { defineView } from 'twenty-sdk/define';
import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object';
import { NAME_FIELD_UNIVERSAL_IDENTIFIER } from '../objects/example-object';
@@ -16,7 +18,6 @@ export default defineView({
name: 'All example items',
objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER,
icon: 'IconList',
key: ViewKey.INDEX,
position: 0,
fields: [
{
@@ -33,8 +34,8 @@ export default defineView({
## Hlavní body
* `objectUniversalIdentifier` určuje, na který objekt se toto zobrazení vztahuje. Může to být vlastní objekt, který jste definovali, nebo standardní objekt Twenty.
* `key: ViewKey.INDEX` označuje zobrazení jako hlavní seznamové zobrazení objektu (to, které se otevře po kliknutí na navigační položku `OBJECT`).
* `fields` určuje, které sloupce se zobrazí a v jakém pořadí. Každé pole odkazuje na `fieldMetadataUniversalIdentifier`. Chcete-li odkazovat na automaticky vytvořené systémové pole, například `createdAt`, podívejte se na [Cílení na systémová pole](/l/cs/developers/extend/apps/data/system-fields).
* Hlavní zobrazení seznamu objektu je vlastněné serverem: `key` je zastaralý a ignorován, takže si je zobrazení definované v manifestu nikdy nemůže nárokovat. Dodejte navigační položku `VIEW`, pokud chcete mít své zobrazení na jedno kliknutí v postranm panelu.
* `fields` určuje, které sloupce se zobrazí a v jakém pořadí. Každé pole odkazuje na `fieldMetadataUniversalIdentifier`. Chcete-li odkazovat na automaticky vytvořené systémové pole, například `createdAt`, podívejte se na [Cílení na systémová metadata](/l/cs/developers/extend/apps/data/system-fields).
* Pro pokročilé konfigurace můžete také deklarovat `filters`, `filterGroups`, `sorts`, `groups` a `fieldGroups`.
* `position` určuje pořadí, pokud pro stejný objekt existuje více zobrazení.
@@ -13,17 +13,16 @@ a nativní text **editor** pro šablony.
[view](/l/cs/developers/extend/apps/layout/views) je uložený seznam daného objektu.
[Položka navigačního menu](/l/cs/developers/extend/apps/layout/navigation-menu-items)
umístí toto zobrazení do postranního panelu.
umístí toto zobrazení do postranního panelu. Server už pro každý objekt automaticky poskytuje výchozí zobrazení „All ...“, takže zobrazení, která aplikace definuje, jsou další, pečlivě vybraná.
```ts filename="src/views/documents.view.ts"
import { defineView, ViewKey } from 'twenty-sdk/define';
import { defineView } from 'twenty-sdk/define';
export default defineView({
universalIdentifier: DOCUMENTS_VIEW_UNIVERSAL_IDENTIFIER,
name: 'All documents',
objectUniversalIdentifier: DOCUMENT_OBJECT_UNIVERSAL_IDENTIFIER,
icon: 'IconFile',
key: ViewKey.INDEX,
position: 0,
fields: [
{ universalIdentifier: DOCUMENTS_VIEW_NAME_FIELD_UNIVERSAL_IDENTIFIER,