i18n - docs translations (#17064)

Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot]
2026-01-10 14:36:59 +01:00
committed by GitHub
parent a8331dc43e
commit d4d5f57347
15 changed files with 204 additions and 204 deletions
@@ -1,5 +1,5 @@
---
title: Zapier App
title: Aplicația Zapier
---
Sincronizează fără efort Twenty cu peste 3000 de aplicații folosind [Zapier](https://zapier.com/). Automatizează sarcinile, stimulează productivitatea și îmbunătățește relațiile cu clienții!
@@ -10,10 +10,10 @@ React și Recoil se ocupă de managementul stării în cod.
### Folosiți `useRecoilState` pentru a stoca starea
It's good practice to create as many atoms as you need to store your state.
Este o bună practică să creezi atâția atomi câți ai nevoie pentru a-ți stoca starea.
<Warning>
It's better to use extra atoms than trying to be too concise with props drilling.
Este mai bine să folosești atomi suplimentari decât să încerci să fii prea concis recurgând la prop drilling.
</Warning>
```tsx
@@ -42,19 +42,19 @@ Evitați utilizarea `useRef` pentru a stoca starea.
Dacă doriți să stocați starea, ar trebui să folosiți `useState` sau `useRecoilState`.
See [how to manage re-renders](#managing-re-renders) if you feel like you need `useRef` to prevent some re-renders from happening.
Vezi [cum să gestionezi re-randările](#managing-re-renders) dacă ți se pare că ai nevoie de `useRef` pentru a preveni apariția unor re-randări.
## Managing re-renders
## Gestionarea re-randărilor
Re-render-urile pot fi greu de gestionat în React.
Aici sunt câteva reguli de urmat pentru a evita re-render-urile inutile.
Keep in mind that you can **always** avoid re-renders by understanding their cause.
Ține minte că poți **întotdeauna** evita re-randările înțelegând cauza lor.
### Lucrați la nivelul rădăcinii
Avoiding re-renders in new features is now made easy by eliminating them at the root level.
Evitarea re-randărilor în funcționalități noi este acum ușoară prin eliminarea lor de la rădăcină.
Componenta secundară `PageChangeEffect` conține doar un `useEffect` ce deține toată logica de execuție la o schimbare de pagină.
@@ -77,8 +77,8 @@ Dacă simțiți nevoia să adăugați un `useEffect` în componenta rădăcină,
Puteți aplica același principiu pentru logica de interogare de date, folosind hooks cu Apollo.
```tsx
// ❌ Bad, will cause re-renders even if data is not changing,
// because useEffect needs to be re-evaluated
// ❌ Greșit, va provoca re-randări chiar dacă datele nu se schimbă,
// deoarece useEffect trebuie re-evaluat
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
const [someDependency] = useRecoilState(someDependencyState);
@@ -100,8 +100,8 @@ export const App = () => (
```
```tsx
// ✅ Good, will not cause re-renders if data is not changing,
// because useEffect is re-evaluated in another sibling component
// ✅ Bun, nu va provoca re-randări dacă datele nu se schimbă,
// deoarece useEffect este re-evaluat într-o altă componentă la același nivel
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
@@ -168,13 +168,13 @@ Denumirile variabilelor trebuie să descrie cu precizie scopul sau funcția vari
Denumirile generice în programare nu sunt ideale deoarece nu au specificitate, ducând la ambiguitate și la reducerea lizibilității codului. Astfel de denumiri nu reușesc să transmită scopul variabilei sau funcției, ceea ce îngreunează înțelegerea intenției codului de către dezvoltatori fără o investigație mai profundă. Acest lucru poate duce la creșterea timpului de depanare, la o mai mare susceptibilitate la erori și dificultăți în întreținere și colaborare. Între timp, denumirile descriptive fac codul auto-explicativ și mai ușor de navigat, îmbunătățind calitatea codului și productivitatea dezvoltatorilor.
```tsx
// ❌ Bad, uses a generic name that doesn't communicate its
// purpose or content clearly
// ❌ Greșit, folosește un nume generic care nu îi comunică
// clar scopul sau conținutul
const [value, setValue] = useState('');
```
```tsx
// ✅ Good, uses a descriptive name
// ✅ Bun, folosește un nume descriptiv
const [email, setEmail] = useState('');
```
@@ -187,14 +187,14 @@ const [email, setEmail] = useState('');
Numele handlerelor de evenimente ar trebui să înceapă cu `handle`, în timp ce `on` este un prefix folosit pentru a denumi evenimentele în prop-urile componentelor.
```tsx
// ❌ Bad
// ❌ Greșit
const onEmailChange = (val: string) => {
// ...
};
```
```tsx
// ✅ Good
// ✅ Bun
const handleEmailChange = (val: string) => {
// ...
};
@@ -222,12 +222,12 @@ const EmailField = ({ value, disabled = false }: EmailFieldProps) => (
**Utilizare**
```tsx
// ❌ Bad, passing in the same value as the default value adds no value
// ❌ Greșit, transmiterea aceleiași valori ca valoarea implicită nu aduce niciun beneficiu
const Form = () => <EmailField value="username@email.com" disabled={false} />;
```
```tsx
// ✅ Good, assumes the default value
// ✅ Bun, presupune valoarea implicită
const Form = () => <EmailField value="username@email.com" />;
```
@@ -240,7 +240,7 @@ Cel mai frecvent exemplu pentru aceasta sunt componentele de pictograme:
```tsx
const SomeParentComponent = () => <MyComponent Icon={MyIcon} />;
// In MyComponent
// În MyComponent
const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
const theme = useTheme();
@@ -285,7 +285,7 @@ Când importați, optați pentru pseudonimele desemnate în loc să specificați
**Utilizare**
```tsx
// ❌ Bad, specifies the entire relative path
// ❌ Greșit, specifică întreaga cale relativă
import {
CatalogDecorator
} from '../../../../../testing/decorators/CatalogDecorator';
@@ -295,7 +295,7 @@ import {
```
```tsx
// ✅ Good, utilises the designated aliases
// ✅ Bun, utilizează aliasurile stabilite
import { CatalogDecorator } from '~/testing/decorators/CatalogDecorator';
import { ComponentDecorator } from 'twenty-ui/testing';
```
@@ -310,10 +310,10 @@ const validationSchema = z
exist: z.boolean(),
email: z
.string()
.email('Email must be a valid email'),
.email('Adresa de email trebuie să fie validă'),
password: z
.string()
.regex(PASSWORD_REGEX, 'Password must contain at least 8 characters'),
.regex(PASSWORD_REGEX, 'Parola trebuie să conțină cel puțin 8 caractere'),
})
.required();
@@ -10,7 +10,7 @@ title: Comenzi Frontend
npx nx start twenty-front
```
### Regenerate graphql schema based on API graphql schema
### Regenerează schema graphql pe baza schemei graphql a API-ului
```bash
npx nx run twenty-front:graphql:generate --configuration=metadata
@@ -46,7 +46,7 @@ npx nx run twenty-front:storybook:coverage # (are nevoie de yarn storybook:serve
## Tehnologii Utilizate
The project has a clean and simple stack, with minimal boilerplate code.
Proiectul are un stack curat și simplu, cu cod boilerplate minim.
**Aplicație**
@@ -1,44 +1,44 @@
---
title: Webhooks
description: Receive real-time notifications when events occur in your CRM.
description: Primiți notificări în timp real atunci când au loc evenimente în CRM-ul dvs.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
Webhook-urile trimit date către sistemele dvs. în timp real atunci când au loc evenimente în Twenty — nu este necesară interogarea periodică. Folosiți-le pentru a menține sistemele externe sincronizate, a declanșa automatizări sau a trimite alerte.
## Creează Webhook
1. Mergeți la **Setări → API-uri şi Webhooks → Webhooks**
2. Faceți clic pe **+ Creează webhook**
3. Enter your webhook URL (must be publicly accessible)
3. Introduceți URL-ul webhook-ului dvs. (trebuie să fie accesibil public)
4. Faceți clic pe **Salvare**
The webhook activates immediately and starts sending notifications.
Webhook-ul se activează imediat și începe să trimită notificări.
<VimeoEmbed videoId="928786708" title="Creating a webhook" />
<VimeoEmbed videoId="928786708" title="Crearea unui webhook" />
### Administrează Webhooks
**Edit**: Click the webhook → Update URL → **Save**
**Editează**: Faceți clic pe webhook → Actualizați URL-ul → **Salvează**
**Delete**: Click the webhook → **Delete** → Confirm
**Șterge**: Faceți clic pe webhook → **Șterge** → Confirmă
## Evenimente
Twenty sends webhooks for these event types:
Twenty trimite webhook-uri pentru aceste tipuri de evenimente:
| Eveniment | Exemplu |
| ------------------ | ---------------------------------------------------------- |
| **Record Created** | `person.created`, `company.created`, `note.created` |
| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` |
| **Record Deleted** | `person.deleted`, `company.deleted` |
| Eveniment | Exemplu |
| ---------------------------- | ---------------------------------------------------------- |
| **Înregistrare creată** | `person.created`, `company.created`, `note.created` |
| **Înregistrare actualizată** | `person.updated`, `company.updated`, `opportunity.updated` |
| **Înregistrare ștearsă** | `person.deleted`, `company.deleted` |
All event types are sent to your webhook URL. Event filtering may be added in future releases.
Toate tipurile de evenimente sunt trimise către URL-ul webhook-ului dvs. Filtrarea evenimentelor poate fi adăugată în versiunile viitoare.
## Payload Format
## Formatul payload-ului
Each webhook sends an HTTP POST with a JSON body:
Fiecare webhook trimite un HTTP POST cu un corp JSON:
```json
{
@@ -55,35 +55,35 @@ Each webhook sends an HTTP POST with a JSON body:
}
```
| Câmp | Descriere |
| ----------------- | ------------------------------------------------ |
| `eveniment` | What happened (e.g., `person.created`) |
| `date` | The full record that was created/updated/deleted |
| `marcaj temporal` | When the event occurred (UTC) |
| Câmp | Descriere |
| ----------------- | ------------------------------------------------------------- |
| `eveniment` | Ce s-a întâmplat (de ex., `person.created`) |
| `date` | Înregistrarea completă care a fost creată/actualizată/ștearsă |
| `marcaj temporal` | Când a avut loc evenimentul (UTC) |
<Note>
Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
Răspundeți cu un **status HTTP 2xx** (200-299) pentru a confirma primirea. Răspunsurile non-2xx sunt înregistrate ca eșecuri de livrare.
</Note>
## Validarea Webhook-ului
Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
Twenty semnează fiecare cerere webhook din motive de securitate. Validați semnăturile pentru a vă asigura că cererile sunt autentice.
### Headers
### Anteturi
| Antet | Descriere |
| ---------------------------- | --------------------- |
| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature |
| `X-Twenty-Webhook-Timestamp` | Request timestamp |
| Antet | Descriere |
| ---------------------------- | -------------------------- |
| `X-Twenty-Webhook-Signature` | Semnătură HMAC SHA256 |
| `X-Twenty-Webhook-Timestamp` | Marcaj temporal al cererii |
### Validation Steps
### Pași de validare
1. Get the timestamp from `X-Twenty-Webhook-Timestamp`
2. Create the string: `{timestamp}:{JSON payload}`
3. Compute HMAC SHA256 using your webhook secret
4. Compare with `X-Twenty-Webhook-Signature`
1. Obțineți marcajul temporal din `X-Twenty-Webhook-Timestamp`
2. Creați șirul: `{timestamp}:{JSON payload}`
3. Calculați HMAC SHA256 folosind secretul webhook-ului dvs.
4. Comparați cu `X-Twenty-Webhook-Signature`
### Example (Node.js)
### Exemplu (Node.js)
```javascript
const crypto = require("crypto");
@@ -101,12 +101,12 @@ const expectedSignature = crypto
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
```
## Webhooks vs Workflows
## Webhook-uri vs Fluxuri de lucru
| Metodă | Direcție | Use Case |
| ---------------------------- | -------- | ---------------------------------------------------------- |
| **Webhooks** | OUT | Automatically notify external systems of any record change |
| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) |
| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems |
| Metodă | Direcție | Caz de utilizare |
| ------------------------------------------ | -------- | -------------------------------------------------------------------------------- |
| **Webhook-uri** | OUT | Notificați automat sistemele externe despre orice modificare a unei înregistrări |
| **Flux de lucru + Cerere HTTP** | OUT | Trimiteți date în exterior cu logică personalizată (filtre, transformări) |
| **Declanșator webhook în fluxul de lucru** | IN | Primiți date în Twenty din sisteme externe |
For receiving external data, see [Set Up a Webhook Trigger](/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
Pentru a primi date externe, consultați [Configurați un declanșator Webhook](/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
@@ -2,7 +2,7 @@
title: Configurare
---
# Configuration Management
# Gestionarea configurației
<Warning>
**Prima instalare?** Urmați [ghidul de instalare Docker Compose](/l/ro/developers/self-host/capabilities/docker-compose) pentru a rula Twenty, apoi reveniți aici pentru configurare.
@@ -35,7 +35,7 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # implicit
* **E-mail** - setări SMTP, șabloane, verificare
* **Stocare** - configurație S3, căi stocare locală
* **Integrări** - Gmail, Google Calendar, servicii Microsoft
* **Workflow & Rate Limiting** - Execution limits, API throttling
* **Flux de lucru și limitarea ratei** - limite de execuție, limitarea ratei pentru API
* **Și multe altele...**
![Variabile de Configurare Panou Admin](/images/user-guide/setup/admin-panel-config-variables.png)
@@ -60,61 +60,61 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
3. Reporniți containerele pentru ca schimbările să aibă efect
4. Panoul de administrare va afișa valorile curente, dar nu le poate modifica
## Multi-Workspace Mode
## Mod cu mai multe spații de lucru
By default, Twenty runs in **single-workspace mode** — ideal for most self-hosted deployments where you need one CRM instance for your organization.
În mod implicit, Twenty rulează în **modul cu un singur spațiu de lucru** — ideal pentru majoritatea implementărilor auto-găzduite în care aveți nevoie de o singură instanță CRM pentru organizația dvs.
### Single-Workspace Mode (Default)
### Modul cu un singur spațiu de lucru (implicit)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
* One workspace per Twenty instance
* First user automatically becomes admin with full privileges (`canImpersonate` and `canAccessFullAdminPanel`)
* New signups are disabled after the first workspace is created
* Simple URL structure: `https://your-domain.com`
* Un spațiu de lucru pentru fiecare instanță Twenty
* Primul utilizator devine automat administrator cu privilegii complete (`canImpersonate` și `canAccessFullAdminPanel`)
* Înregistrările noi sunt dezactivate după crearea primului spațiu de lucru
* Structură URL simplă: `https://your-domain.com`
### Enabling Multi-Workspace Mode
### Activarea modului cu mai multe spații de lucru
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
Enable multi-workspace mode for SaaS-like deployments where multiple independent teams need their own workspaces on the same Twenty instance.
Activați modul cu mai multe spații de lucru pentru implementări de tip SaaS, în care mai multe echipe independente au nevoie de propriile spații de lucru pe aceeași instanță Twenty.
**Key differences from single-workspace mode:**
**Diferențe cheie față de modul cu un singur spațiu de lucru:**
* Multiple workspaces can be created on the same instance
* Each workspace gets its own subdomain (e.g., `sales.your-domain.com`, `marketing.your-domain.com`)
* Users sign up and log in at `{DEFAULT_SUBDOMAIN}.your-domain.com` (e.g., `app.your-domain.com`)
* No automatic admin privileges — first user in each workspace is a regular user
* Workspace-specific settings like subdomain and custom domain become available in workspace settings
* Pe aceeași instanță pot fi create mai multe spații de lucru
* Fiecare spațiu de lucru primește propriul subdomeniu (de ex., `sales.your-domain.com`, `marketing.your-domain.com`)
* Utilizatorii se înregistrează și se autentifică la `{DEFAULT_SUBDOMAIN}.your-domain.com` (de ex., `app.your-domain.com`)
* Fără privilegii administrative automate — primul utilizator din fiecare spațiu de lucru este un utilizator obișnuit
* Setări specifice spațiului de lucru, precum subdomeniu și domeniu personalizat, devin disponibile în setările spațiului de lucru
<Warning>
**Environment-only setting:** `IS_MULTIWORKSPACE_ENABLED` can only be configured via `.env` file and requires a restart. It cannot be changed through the admin panel.
**Setare exclusiv de mediu:** `IS_MULTIWORKSPACE_ENABLED` poate fi configurată doar prin fișierul `.env` și necesită o repornire. Nu poate fi modificată prin panoul de administrare.
</Warning>
### DNS Configuration for Multi-Workspace
### Configurarea DNS pentru modul cu mai multe spații de lucru
When using multi-workspace mode, configure your DNS with a wildcard record to allow dynamic subdomain creation:
Când folosiți modul cu mai multe spații de lucru, configurați DNS-ul cu o înregistrare wildcard pentru a permite crearea dinamică de subdomenii:
```
*.your-domain.com -> your-server-ip
```
This enables automatic subdomain routing for new workspaces without manual DNS configuration.
Acest lucru permite rutarea automată a subdomeniilor pentru spațiile de lucru noi, fără configurare DNS manuală.
### Restricting Workspace Creation
### Restricționarea creării de spații de lucru
In multi-workspace mode, you may want to limit who can create new workspaces:
În modul cu mai multe spații de lucru, este posibil să doriți să limitați cine poate crea spații de lucru noi:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
When enabled, only users with `canAccessFullAdminPanel` can create additional workspaces. Users can still create their first workspace during initial signup.
Când este activată, doar utilizatorii cu `canAccessFullAdminPanel` pot crea spații de lucru suplimentare. Utilizatorii își pot crea în continuare primul spațiu de lucru în timpul înregistrării inițiale.
## Integrare Gmail & Google Calendar
@@ -133,8 +133,8 @@ When enabled, only users with `canAccessFullAdminPanel` can create additional wo
1. Mergeți la [Credentials](https://console.cloud.google.com/apis/credentials)
2. Creați Client ID OAuth 2.0
3. Adăugați aceste URI-uri de redirecționare:
* `https://{your-domain}/auth/google/redirect` (for SSO)
* `https://{your-domain}/auth/google-apis/get-access-token` (for integrations)
* `https://{your-domain}/auth/google/redirect` (pentru SSO)
* `https://{your-domain}/auth/google-apis/get-access-token` (pentru integrări)
### Configurați în Twenty
@@ -194,7 +194,7 @@ Notă: "Mail.ReadWrite" și "Mail.Send" sunt obligatorii doar dacă doriți să
Trebuie să adăugați următoarele URI-uri de redirecționare în proiectul dvs.:
* `https://{your-domain}/auth/microsoft/redirect` if you want to use Microsoft SSO
* `https://{your-domain}/auth/microsoft/redirect` dacă doriți să utilizați SSO Microsoft
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
### Configurați în Twenty
@@ -214,7 +214,7 @@ Trebuie să adăugați următoarele URI-uri de redirecționare în proiectul dvs
**Mod doar pentru mediu:** Dacă setați `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adăugați aceste variabile în fișierul dvs. `.env` în schimb.
</Warning>
### Configure scopes
### Configurați scopurile
[Consultați codul sursă relevant](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
@@ -232,7 +232,7 @@ Dacă aplicația dvs. este în modul de test, va trebui să adăugați utilizato
Adăugați utilizatorii de test în secțiunea "Utilizatori și grupuri".
## Background Jobs for Calendar & Messaging
## Procese în fundal pentru Calendar și Mesagerie
După configurarea integrărilor Gmail, Google Calendar, sau Microsoft 365, trebuie să porniți joburile de fundal care sincronizează datele.
@@ -2,17 +2,17 @@
title: Ghid de actualizare
---
## General guidelines
## Linii directoare generale
**Always make sure to back up your database before starting the upgrade process** by running `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
**Asigurați-vă întotdeauna că realizați un backup al bazei de date înainte de a începe procesul de actualizare** utilizând comanda `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
Pentru a restaura backup-ul, executați comanda `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
Dacă ați utilizat Docker Compose, urmați acești pași:
1. Într-un terminal, pe găzduitorul unde rulează Twenty, opriți Twenty: `docker compose down`.
2. Actualizați versiunea modificând valoarea `TAG` din fișierul .env în apropierea docker-compose-ului. ( We recommend consuming `major.minor` version such as `v0.53` )
2. Actualizați versiunea modificând valoarea `TAG` din fișierul .env în apropierea docker-compose-ului. ( recomandăm să utilizați o versiune de tip `major.minor`, cum ar fi `v0.53` )
3. Repuneți Twenty în funcțiune cu comanda `docker compose up -d`.
@@ -316,8 +316,8 @@ Comanda `yarn command:prod upgrade-0.31` se ocupă de migrația datelor pentru t
Actualizați instanța Twenty pentru a utiliza imaginea v0.30.0
**Breaking change**:
To enhance performances, Twenty now requires redis cache to be configured. Am actualizat [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) pentru a reflecta acest lucru.
**Schimbare importantă**:
Pentru a îmbunătăți performanțele, Twenty necesită acum cache de tip Redis configurat. Am actualizat [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) pentru a reflecta acest lucru.
Asigurați-vă că vă actualizați configurația și actualizați variabilele de mediu corespunzător:
```
@@ -48,11 +48,11 @@ Reprezintă o pictogramă de bifă cu caracteristica suplimentară de animație.
</Tab>
<Tab title="Proprietăți">
| Proprietăți | Tip | Descriere | Implicit |
| ----------- | ------- | ------------------------------------------- | ------------ |
| isAnimating | boolean | Controls whether the checkmark is animating | fals |
| culoare | șir | Culoarea bifei | |
| durată | număr | Durata animației în secunde | 0,5 secunde |
| dimensiune | număr | Dimensiunea bifei | 28 de pixeli |
| Proprietăți | Tip | Descriere | Implicit |
| ----------- | ------- | ------------------------------ | ------------ |
| isAnimating | boolean | Controlează dacă bifa se animă | fals |
| culoare | șir | Culoarea bifei | |
| durată | număr | Durata animației în secunde | 0,5 secunde |
| dimensiune | număr | Dimensiunea bifei | 28 de pixeli |
</Tab>
</Tabs>
@@ -23,7 +23,7 @@ Folosim pictograme Tabler pentru React în toată aplicația.
</Tab>
<Tab title="Proprietăți">
You can import each icon as a component. Iată un exemplu:
Poți importa fiecare pictogramă ca o componentă. Iată un exemplu:
<br />
@@ -47,15 +47,15 @@ Când deschideți un fir de e-mail, puteți:
## Comportamentul sincronizării e-mailului
### Sync Rate
### Rată de sincronizare
Twenty imports emails at approximately **400 messages per minute**. This rate is currently limited by Gmail API rate limiting (and applies similarly to other providers).
Twenty importă e-mailuri cu aproximativ **400 de mesaje pe minut**. Această rată este în prezent limitată de restricțiile de rată ale API-ului Gmail (și se aplică în mod similar altor furnizori).
For reference:
Pentru referință:
* 1,000 emails → ~2.5 minutes
* 10,000 emails → ~25 minutes
* 50,000 emails → ~2 hours
* 1,000 de e-mailuri → ~2.5 minute
* 10,000 de e-mailuri → ~25 minute
* 50,000 de e-mailuri → ~2 ore
### Ce se sincronizează
@@ -70,12 +70,12 @@ For reference:
* **E-mailuri de grup**: Liste de distribuție și e-mailuri de grup sunt excluse
* **Foldere excluse**: Folderele pe care ați ales să nu le sincronizați (configurate sub Setări → Conturi → E-mail)
### Selective Folder Sync
### Sincronizare selectivă a folderelor
Controlați care foldere de e-mail se sincronizează cu Twenty:
1. Go to **Settings → Accounts** and select your connected email account
2. Configure folders under the Email section
1. Accesați **Setări → Conturi** și selectați contul dvs. de e-mail conectat
2. Configurați folderele în secțiunea Email
3. Alegeți foldere specifice de inclus sau exclus (Inbox, Trimise, Arhivă, foldere personalizate)
## Depanarea sincronizării e-mailurilor
@@ -25,7 +25,7 @@ Fiecare căsuță poștală conectată are propriile setări:
* **Vizibilitatea e-mailurilor**: Alegeți ce pot vedea membrii echipei
* **Creare automată a contactelor**: Activați/dezactivați pentru fiecare căsuță poștală
* **Folder selection**: Choose which folders to sync
* **Selectarea folderelor**: Alegeți ce foldere să sincronizați
## Cum apar e-mailurile
@@ -68,11 +68,11 @@ Alegeți diferite niveluri de vizibilitate pentru e-mailurile dvs.:
<Note>Când este activată, contactele sunt asociate automat cu înregistrările companiei lor, pe baza domeniului lor de e-mail. Dacă compania nu există încă, Twenty o creează pentru dvs.</Note>
### Control which emails get synced with Message Folder Selection
### Controlați ce e-mailuri se sincronizează cu Selectarea dosarelor de mesaje
Controlați care foldere de e-mail se sincronizează cu Twenty:
1. Go to **Settings → Accounts** and select your connected email account
1. Accesați **Setări → Conturi** și selectați contul dvs. de e-mail conectat
2. Alegeți ce dosare să sincronizați:
* **Inbox**: E-mailurile primare primite
* **Trimise**: E-mailurile trimise de dvs.
@@ -121,7 +121,7 @@ Alegeți ce va fi vizibil pentru alți utilizatori din workspace-ul dvs.:
**Actualizări la fiecare 5 minute**: Atât e-mailurile cât și datele din calendar se sincronizează automat la fiecare 5 minute după importul inițial.
<Note>
**Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes. Twenty imports emails at approximately **400 messages per minute** (limited by Gmail API rate limiting), so a mailbox with 10,000 emails takes about 25 minutes. Nu vă faceți griji dacă vedeți contacte din evenimentele din calendar apărând înaintea contactelor din e-mail; acest lucru este un comportament normal.
**Timpul sincronizării inițiale**: Sincronizarea calendarului se finalizează rapid (de obicei în câteva minute), în timp ce sincronizarea e-mailurilor durează mai mult pentru căsuțele poștale mari. Twenty importă e-mailuri la aproximativ **400 de mesaje pe minut** (limitat de restricțiile de rată ale API-ului Gmail), astfel încât importul unei căsuțe poștale cu 10.000 de e-mailuri durează aproximativ 25 de minute. Nu vă faceți griji dacă vedeți contacte din evenimentele din calendar apărând înaintea contactelor din e-mail; acest lucru este un comportament normal.
</Note>
## Pașii următori
@@ -9,7 +9,7 @@ image: /images/user-guide/reporting/pie-chart.png
</Frame>
<Note>
Dashboards are currently in beta. Activate them under **Settings → Updates → Early Access**.
Tablourile de bord sunt în prezent în versiune beta. Activați-le din **Setări → Actualizări → Acces timpuriu**.
</Note>
## Înțelegerea tablourilor de bord
@@ -1,36 +1,36 @@
---
title: Updates Settings
description: Enable Early Access features in Twenty.
title: Setări pentru actualizări
description: Activați funcțiile de Acces timpuriu în Twenty.
---
## About Updates Settings
## Despre setările pentru actualizări
The Updates section allows you to enable Early Access features before they're generally available.
Secțiunea Actualizări vă permite să activați funcții de Acces timpuriu înainte ca acestea să fie disponibile în general.
## Early Access Features
## Funcții de Acces timpuriu
Early Access features are capabilities that are still being tested before general availability.
Funcțiile de Acces timpuriu sunt capabilități aflate încă în testare înainte de disponibilitatea generală.
**Currently in Early Access:**
**În prezent în Acces timpuriu:**
* **Dashboards** — Visual reporting and analytics
* **Tablouri de bord** — Raportare vizuală și analiză
### How to Enable Early Access Features
### Cum să activați funcțiile de Acces timpuriu
1. Go to **Settings → Updates**
2. Navigate to the **Early Access** section
3. Find the feature you want to enable
4. Toggle it on
5. The feature will be available immediately
1. Accesați **Setări → Actualizări**
2. Navigați la secțiunea **Acces timpuriu**
3. Găsiți funcția pe care doriți să o activați
4. Activați-o
5. Funcția va fi disponibilă imediat
<Note>
Early Access features may change based on user feedback. Your input helps us improve Twenty!
Funcțiile de Acces timpuriu se pot schimba pe baza feedbackului utilizatorilor. Feedbackul dvs. ne ajută să îmbunătățim Twenty!
</Note>
## Feature Feedback
## Feedback pentru funcții
Your feedback helps improve Twenty:
Feedbackul dvs. ajută la îmbunătățirea Twenty:
* Report issues with Early Access features
* Share how you're using new features
* Suggest improvements via the community Discord
* Raportați problemele legate de funcțiile de Acces timpuriu
* Împărtășiți cum utilizați noile funcții
* Propuneți îmbunătățiri pe Discordul comunității
@@ -151,19 +151,19 @@ image: /images/user-guide/setup/settings.png
</Accordion>
</AccordionGroup>
## Early Access Features
## Funcții de Acces timpuriu
<AccordionGroup>
<Accordion title="What are Early Access features?">
Early Access features are capabilities being tested before general release. Currently, only **Dashboards** are in Early Access. They may change based on user feedback.
<Accordion title="Care sunt funcțiile din Acces timpuriu?">
Funcțiile de Acces timpuriu sunt capabilități aflate în testare înainte de lansarea generală. În prezent, doar **Tablourile de bord** se află în Acces timpuriu. Se pot schimba pe baza feedback-ului utilizatorilor.
</Accordion>
<Accordion title="Are Early Access features safe to use?">
Early Access features are functional but may change based on user feedback. They are safe to use but may evolve before general availability.
<Accordion title="Sunt funcțiile de Acces timpuriu sigure de utilizat?">
Funcțiile de Acces timpuriu sunt funcționale, dar se pot schimba pe baza feedback-ului utilizatorilor. Sunt sigure de utilizat, dar se pot modifica înainte de disponibilitatea generală.
</Accordion>
<Accordion title="How do I enable Early Access features?">
1. Go to **Settings → Updates → Early Access**
<Accordion title="Cum activez funcțiile de Acces timpuriu?">
1. Accesați **Setări → Actualizări → Acces timpuriu**
2. Găsiți funcția dorită
3. Activați-o
4. Funcția devine disponibilă imediat
@@ -1,92 +1,92 @@
---
title: Notify Teammates of a Note to Review
description: Send automatic email notifications when assigning a colleague to review a note.
title: Notificați colegii despre o notă de revizuit
description: Trimiteți notificări automate prin e-mail când atribuiți unui coleg revizuirea unei note.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
<Note>
**Tagging teammates directly in notes is not yet supported.** This feature is planned for the second half of 2026. In the meantime, this workflow provides a practical workaround.
**Etichetarea colegilor direct în note nu este încă suportată.** Această funcție este planificată pentru a doua jumătate a anului 2026. Între timp, acest flux de lucru oferă o soluție practică de ocolire.
</Note>
## The Challenge
## Provocarea
You want to tag a colleague in a note so they receive a notification to review it. Today, Twenty doesn't support @mentions in notes or tasks.
Doriți să etichetați un coleg într-o notă, astfel încât să primească o notificare pentru a o revizui. În prezent, Twenty nu suportă mențiuni cu @ în note sau sarcini.
## The Workaround
## Soluția de ocolire
Instead of tagging in the note text, you can:
În loc să etichetați în textul notei, puteți:
1. Create a **Reviewer** relation field on the Notes object
2. Assign the reviewer when creating or editing the note
3. A workflow automatically sends an email to the reviewer with a link to the note
1. Creați un câmp de relație **Reviewer** pe obiectul Note
2. Atribuiți recenzentul atunci când creați sau editați nota
3. Un flux de lucru trimite automat un e-mail recenzentului cu un link către notă
<Warning>
**Limitation**: This approach allows assigning one reviewer per field. If you need to notify multiple people, create additional relation fields (e.g., Reviewer 1, Reviewer 2). This won't scale well if you need to tag many collaborators at once.
**Limitare**: Această abordare permite atribuirea unui singur recenzent per câmp. Dacă trebuie să notificați mai multe persoane, creați câmpuri de relație suplimentare (de ex., Reviewer 1, Reviewer 2). Aceasta nu scalează bine dacă trebuie să etichetați mulți colaboratori deodată.
</Warning>
## Configurare pas cu pas
### Step 1: Create the Reviewer Field
### Pasul 1: Creați câmpul Reviewer
<img src="/images/user-guide/workflows/reviewer-field-for-note.png" style={{width:'100%'}} />
1. Go to **Settings → Data Model → Notes**
2. Click **Add Field**
1. Accesați **Setări → Model de date → Note**
2. Faceți clic pe **Adaugă câmp**
3. Configurați:
| Setare | Valoare |
| ------------------ | --------------------------------- |
| **Name** | Reviewer |
| **Tip** | Relație |
| **Related Object** | Membru al Spațiului de Lucru |
| **Relation Type** | Many NotesOne Workspace Member |
| Setare | Valoare |
| ------------------ | -------------------------------------------- |
| **Name** | Reviewer |
| **Tip** | Relație |
| **Obiect asociat** | Membru al Spațiului de Lucru |
| **Tipul relației** | Multe note → Un membru al spațiului de lucru |
4. Save the field
4. Salvați câmpul
### Pasul 2: Creați fluxul de lucru
<VimeoEmbed videoId="1151897168" title="Demonstrație video" />
#### Create the Workflow Trigger
#### Creați declanșatorul fluxului de lucru
1. Go to the main view and create a new workflow
2. Select **Record Updated** as the trigger
3. Choose **Note** as the object and specify the Reviewer field.
4. This will trigger whenever the reviewer of a note is updated.
1. Accesați vizualizarea principală și creați un nou flux de lucru
2. Selectați **Record Updated** ca declanșator
3. Alegeți **Note** ca obiect și specificați câmpul Reviewer.
4. Acesta se va declanșa ori de câte ori recenzentul unei note este actualizat.
#### Add a Filter to Check Reviewer Was Just Assigned
#### Adăugați un filtru pentru a verifica dacă recenzentul tocmai a fost atribuit
Add a **Filter** action to ensure the workflow only continues when a reviewer is assigned:
Adăugați o acțiune **Filter** pentru a vă asigura că fluxul de lucru continuă doar atunci când este atribuit un recenzent:
| Condition | Valoare |
| Condiție | Valoare |
| ------------ | ----------- |
| **Reviewer** | nu este gol |
#### Search for the Workspace Member
#### Căutați membrul spațiului de lucru
1. Add a **Search Records** action
2. Select **Workspace Member** (under Advanced Objects)
3. Add a filter:
1. Adăugați o acțiune **Search Records**
2. Selectați **Workspace Member** (sub obiecte avansate)
3. Adăugați un filtru:
| Condition | Valoare |
| --------- | ---------------------------- |
| **ID** | equals `{{note.reviewerId}}` |
| Condiție | Valoare |
| -------- | ----------------------------- |
| **ID** | egal cu `{{note.reviewerId}}` |
This retrieves the full workspace member record, including their email address and name.
Aceasta preia înregistrarea completă a membrului spațiului de lucru, inclusiv adresa de e-mail și numele.
#### Send the Notification Email
#### Trimiteți e-mailul de notificare
1. Add a **Send Email** action
1. Adăugați o acțiune **Send Email**
2. Configurați:
| Câmp | Valoare |
| ----------- | --------------------------------------------------- |
| **Către** | Search Record → First Workspace Member → User Email |
| **Subiect** | A note needs your review |
| **Corp** | See example below |
| **Subiect** | O notă are nevoie de revizuirea dvs. |
| **Corp** | Consultați exemplul de mai jos |
**Email body example:**
**Exemplu de corp al e-mailului:**
```text
Hi {{searchRecord.firstWorkspaceMember.name.firstName}},
@@ -101,27 +101,27 @@ Twenty
```
<Note>
Replace `yourSubDomain` with your actual Twenty workspace subdomain.
Înlocuiți `yourSubDomain` cu subdomeniul real al spațiului dvs. de lucru Twenty.
</Note>
#### Test and Activate
#### Testați și activați
1. Click **Test** to run the workflow manually
2. Create or edit a note and assign a reviewer
3. Check the reviewer's inbox for the notification email
4. Activate the workflow
1. Faceți clic pe **Test** pentru a rula manual fluxul de lucru
2. Creați sau editați o notă și atribuiți un recenzent
3. Verificați căsuța de e-mail a recenzentului pentru e-mailul de notificare
4. Activați fluxul de lucru
## Utilizare
Once set up, your team can use this workflow by:
După configurare, echipa dvs. poate utiliza acest flux de lucru astfel:
1. Creating a new note (or editing an existing one)
2. Selecting a colleague in the **Reviewer** field
3. The colleague automatically receives an email with a direct link to the note
1. Creând o notă nouă (sau editând una existentă)
2. Selectând un coleg în câmpul **Reviewer**
3. Colegul primește automat un e-mail cu un link direct către notă
## Conexe
* [Declanșatoare ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-triggers)
* [Send Emails from Workflows](/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows)
* [Create Custom Fields](/l/ro/user-guide/data-model/how-tos/create-custom-fields)
* [Create Relation Fields](/l/ro/user-guide/data-model/how-tos/create-relation-fields)
* [Trimiteți e-mailuri din fluxuri de lucru](/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows)
* [Creați câmpuri personalizate](/l/ro/user-guide/data-model/how-tos/create-custom-fields)
* [Creați câmpuri de relație](/l/ro/user-guide/data-model/how-tos/create-relation-fields)