blob: 3bc5afa3ca976400b29be77fa6832ef98b8ece57 [file] [log] [blame]
# LANGUAGE translation of FILENAME.pot
# Copyright (C) 2018-2024 Savoir-faire Linux Inc. and contributors
# This file is distributed under the same license as the Jami documentation.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Urmanschi Mihail <urmanschi.mihail@gmail.com>, 2022
# Ionut-Cristian Florescu <ionut.florescu@gmail.com>, 2022
# savoirfairelinux <support@savoirfairelinux.com>, 2023
# liberi liberi <trfex.mtqx8@slmail.me>, 2024
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Jami\n"
"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
"POT-Creation-Date: 2024-04-23 02:52+0000\n"
"PO-Revision-Date: 2022-09-14 17:48+0000\n"
"Last-Translator: liberi liberi <trfex.mtqx8@slmail.me>, 2024\n"
"Language-Team: Romanian (https://app.transifex.com/savoirfairelinux/teams/49466/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: ../../../developer/account-management.md:1
msgid "Account management"
msgstr "Administrarea contului"
#: ../../../developer/account-management.md:4
msgid ""
"In this part, we will learn how to manage a Jami account. This means, how to"
" create a Jami account, modify the basic settings and delete the account. "
"This part will *NOT* explain what all the settings mean or how we can use "
"the account to do any action like adding a contact."
msgstr ""
#: ../../../developer/account-management.md:6
msgid "Create a new account"
msgstr "Creează un cont nou"
#: ../../../developer/account-management.md:8
#: ../../../developer/account-management.md:89 ../../../developer/calls.md:8
msgid "Daemon side"
msgstr "Partea de serviciu"
#: ../../../developer/account-management.md:10
#: ../../../developer/account-management.md:91
#: ../../../developer/account-management.md:116
#: ../../../developer/account-management.md:143
#: ../../../developer/account-management.md:168
#: ../../../developer/account-management.md:192
msgid "API"
msgstr "API"
#: ../../../developer/account-management.md:12
#: ../../../developer/account-management.md:93
#: ../../../developer/account-management.md:118
#: ../../../developer/account-management.md:145
#: ../../../developer/account-management.md:170
msgid "In cx.ring.Ring.ConfigurationManager:"
msgstr "În cx.ring.Ring.ConfigurationManager:"
#: ../../../developer/account-management.md:35
msgid ""
"The details can be retrieven from the method `getAccountTemplate(type)` with"
" `type=RING` or `type=SIP`. For example, this is the following code used in "
"LRC."
msgstr ""
"Detaliile pot fi obținute din metoda `getAccountTemplate(type)` cu "
"`type=RING` sau `type=SIP`. De exemplu, acesta este următorul cod utilizat "
"în LRC."
#: ../../../developer/account-management.md:62
msgid ""
"When a new account is added, the signal `accountsChanged` will be emitted. "
"The client should update its internal structure after this signal with other"
" methods in ConfigurationManager."
msgstr ""
"Când se adaugă un nou cont, se emite semnalul `accountsChanged`. Clientul "
"trebuie să actualizeze structura sa internă după acest semnal cu alte metode"
" din ConfigurationManager."
#: ../../../developer/account-management.md:64
#: ../../../developer/account-management.md:110
msgid "Core"
msgstr "Core"
#: ../../../developer/account-management.md:66
msgid ""
"The main logic to create a new account is located in "
"`src/ringdht/ringaccount.cpp`, in `RingAccount::createAccount`"
msgstr ""
"Logică principală pentru crearea unui nou cont se află în "
"`src/ringdht/ringaccount.cpp`, în `RingAccount::createAccount`"
#: ../../../developer/account-management.md:68
msgid "How it works, from scratch"
msgstr "Cum funcţionează, de la zero"
#: ../../../developer/account-management.md:70
msgid ""
"A Jami account is in fact represented by some files stored in a gzip "
"archive. If a password is provided during the account creation, the archive "
"will be encrypted as following: `dht::crypto::aesEncrypt(archive, password)`"
" (`dht::crypto::aesEncrypt` is defined in OpenDHT and use "
"`nettle/{aes,gcm}`). This is what the archive will contain a big JSON file "
"with:"
msgstr ""
#: ../../../developer/account-management.md:72
msgid ""
"The private key `ringAccountKey` and certificate chain `ringAccountCert` "
"(base64 encoded)"
msgstr ""
"Cheia privată `ringAccountKey` și lanțul de certificate `ringAccountCert` "
"(codat în baza 64)"
#: ../../../developer/account-management.md:73
msgid "Generated CA key (for self-signed certificates) `ringCAKey`"
msgstr "Generat CA key (pentru certificatele autografice) `ringCAKey`"
#: ../../../developer/account-management.md:74
msgid "Revocated devices `ringAccountCRL`"
msgstr "Dispozitivele revocate `ringAccountCRL`"
#: ../../../developer/account-management.md:75
msgid ""
"The ethereum private key `ethKey` for the device. It's only used when you "
"register your name on `ns.jami.net`. Not mandatory."
msgstr ""
#: ../../../developer/account-management.md:76
msgid "The contacts"
msgstr "Contactele"
#: ../../../developer/account-management.md:77
msgid "The account settings"
msgstr "Setările contului"
#: ../../../developer/account-management.md:79
msgid "So let's generate it!"
msgstr "Deci, hai să-l generăm!"
#: ../../../developer/account-management.md:81
#: ../../../developer/contact-management.md:162
msgid "**TODO**"
msgstr "** TODO**"
#: ../../../developer/account-management.md:84
msgid "Delete the account"
msgstr "Ștergeți contul"
#: ../../../developer/account-management.md:86
msgid ""
"Deleting a Jami account is pretty simple. Because the keys are only on the "
"device, if the keys are deleted... the account is deleted! The only thing "
"outside the device is the username, on the nameserver. To remove this info, "
"it depends how the nameserver work. For example, it's not possible with "
"https://ns.jami.net"
msgstr ""
#: ../../../developer/account-management.md:108
msgid ""
"When the account is deleted, the signal `accountsChanged` will be emitted. "
"The client should update its internal structure after this signal with other"
" methods in ConfigurationManager."
msgstr ""
"Când contul este șters, va fi emis semnalul `accountsChanged`. Clientul "
"trebuie să actualizeze structura sa internă după acest semnal cu alte metode"
" în ConfigurationManager."
#: ../../../developer/account-management.md:112
msgid ""
"The main logic to create a new account is located in `src/manager.cpp`, in "
"`Manager::removeAccount`. It removes the accounts files and update the "
"config (`dring.yml`)."
msgstr ""
"Logică principală pentru crearea unui nou cont se află în `src/manager.cpp`,"
" în `Manager::removeAccount`. Acesta elimină fișierele conturilor și "
"actualizează configurarea (`dring.yml`)."
#: ../../../developer/account-management.md:114
msgid "Update the details of an account"
msgstr ""
#: ../../../developer/account-management.md:135
msgid ""
"The map can contains a partial update and `accountDetailsChanged` will be "
"emitted on success. `getAccountDetails`"
msgstr ""
#: ../../../developer/account-management.md:137
msgid "Add a device"
msgstr "Adaugă un aparat"
#: ../../../developer/account-management.md:139
msgid "There is two possibilities to add a device."
msgstr ""
#: ../../../developer/account-management.md:141
msgid "Backup archive (Then import from backup)"
msgstr ""
#: ../../../developer/account-management.md:166
msgid "Export on DHT"
msgstr ""
#: ../../../developer/account-management.md:188
msgid "Then `exportOnRingEnded` is emitted."
msgstr ""
#: ../../../developer/account-management.md:190
msgid "Revoke device"
msgstr "Elimină aparatul"
#: ../../../developer/apis-of-jami.md:1
msgid "The APIs of Jami"
msgstr "APIs-urile Jami"
#: ../../../developer/apis-of-jami.md:4
msgid "OpenDHT"
msgstr "OptDHT"
#: ../../../developer/apis-of-jami.md:6
msgid ""
"The documentation related to the API of OpenDHT is "
"[here](https://github.com/savoirfairelinux/opendht/wiki/API-Overview) and "
"will not be detailed in the following part."
msgstr ""
"Documentarea referitoare la API-ul OpenDHT se află la "
"[aceasta]https://github.com/savoirfairelinux/opendht/wiki/API-Overview) și "
"nu va fi detaliată în partea următoare."
#: ../../../developer/apis-of-jami.md:8
msgid "Daemon"
msgstr "Serviciu"
#: ../../../developer/apis-of-jami.md:10
msgid "The managers"
msgstr "Managerii"
#: ../../../developer/apis-of-jami.md:12
msgid ""
"The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
msgstr ""
"API-ul serviciului este împărțit în 5 administratori + 1 fișier de situație:"
#: ../../../developer/apis-of-jami.md:13
msgid ""
"The **CallManager** interface is used to manage call and conference related "
"actions. Since the Jami daemon supports multiple incoming/outgoing calls, "
"any actions involving a specific call must address the method by the means "
"of a unique callID. Jami daemon will generate a unique callID for outgoing "
"and incoming calls."
msgstr ""
"Interfața **CallManager** este utilizată pentru a gestiona acțiunile legate "
"de apeluri și conferințe. Deoarece daemonul Jami suportă mai multe apeluri "
"intrante / ieșite, orice acțiuni care implică un apel specific trebuie să "
"abordeze metoda prin intermediul unui callID unic. Daemonul Jami va genera "
"un callID unic pentru apelurile ieșite și intrante."
#: ../../../developer/apis-of-jami.md:14
msgid ""
"The **ConfigurationManager** used to handle the configuration stuff: "
"accounts settings, user preferences, ..."
msgstr ""
"**ConfigurationManager** a fost folosit pentru a gestiona lucrurile de "
"configurare: setările conturilor, preferințele utilizatorului,..."
#: ../../../developer/apis-of-jami.md:15
msgid "The **PresenceManager** is used to track the presence of contacts"
msgstr "**PresenceManager** este folosit pentru a urmări prezența de contacte"
#: ../../../developer/apis-of-jami.md:16
msgid "The **VideoManager** used to manage video devices and renderers"
msgstr ""
"**VideoManager** folosit pentru a gestiona dispozitivele video și renderele"
#: ../../../developer/apis-of-jami.md:17
msgid ""
"The **Instance** is used to count the number of clients actually registered "
"to the core. When initializing your client, you need to register it against "
"the core by using this interface."
msgstr ""
"**Situația** este utilizată pentru a calcula numărul de aplicații "
"înregistrate efectiv în nucleu. La inițializarea aplicației, trebuie s-o "
"înregistrezi în nucleu prin utilizarea acestei interfețe."
#: ../../../developer/apis-of-jami.md:19
msgid "DBUS"
msgstr "DBUS"
#: ../../../developer/apis-of-jami.md:21
msgid ""
"All the documentation and code for the dbus API is located in `jami-"
"daemon/bin/dbus`."
msgstr ""
"Toate documentele și codul API-ului dbus se află în `jami-daemon/bin/dbus`."
#: ../../../developer/apis-of-jami.md:23
msgid ""
"If you use linux, you can use `d-feet` when the daemon is running to "
"manipulate the API (or with any another tool)."
msgstr ""
"Dacă folosiți linux, puteți folosi `d-feet` atunci când daemonul este în "
"funcțiune pentru a manipula API-ul (sau cu orice alt instrument)."
#: ../../../developer/apis-of-jami.md:25
msgid "The LRC project uses this API (and use libwrap on windows and mac os)."
msgstr ""
"Proiectul LRC utilizează această API (și folosește libwrap pe Windows și "
"macOS)."
#: ../../../developer/apis-of-jami.md:27
msgid "JNI"
msgstr "JNI"
#: ../../../developer/apis-of-jami.md:29
msgid ""
"All the documentation and code for the JNI API is located in `jami-"
"daemon/bin/jni`."
msgstr ""
"Toate documentele și codul pentru API-ul JNI se află în `jami-"
"daemon/bin/jni`."
#: ../../../developer/apis-of-jami.md:31
msgid "node js"
msgstr "node js"
#: ../../../developer/apis-of-jami.md:33
msgid ""
"All the documentation and code for the Node JS API is located in `jami-"
"daemon/bin/nodejs`. This API is not used in any known project and maybe is "
"not up-to-date."
msgstr ""
"Toate documentele și codul pentru API-ul Node JS se află în `jami-"
"daemon/bin/nodejs`. Această API nu este utilizată în niciun proiect cunoscut"
" și poate nu este actualizată."
#: ../../../developer/apis-of-jami.md:35
msgid "REST"
msgstr "REST"
#: ../../../developer/apis-of-jami.md:37
msgid ""
"All the documentation and code for the REST API is located in `jami-"
"daemon/bin/restcpp`. This API is not used in any known project and maybe is "
"not up-to-date."
msgstr ""
"Toate documentele și codul pentru API REST se află în `jami-"
"daemon/bin/restcpp`. Această API nu este utilizată în niciun proiect "
"cunoscut și poate nu este actualizată."
#: ../../../developer/apis-of-jami.md:39
msgid "Python wrapper"
msgstr "Înfășurare Python"
#: ../../../developer/apis-of-jami.md:41
msgid ""
"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This wrapper "
"uses DBus."
msgstr "Un înveliș Python este disponibil în `jami-daemon/tools/jamictrl`."
#: ../../../developer/banned-contacts.md:1
msgid "Banned contacts"
msgstr "Contacte interzise"
#: ../../../developer/banned-contacts.md:4
msgid ""
"Following information are here for development purposes and may not reflect "
"the current state of any Jami client."
msgstr ""
#: ../../../developer/banned-contacts.md:7
msgid "Introducing scenario"
msgstr "Scenariul de introducere"
#: ../../../developer/banned-contacts.md:10
msgid "Let's explain banned contacts with a simple scenario:"
msgstr "Să explicăm legăturile interzise cu un scenariu simplu:"
#: ../../../developer/banned-contacts.md:12
msgid ""
"Alice and Jessica are friends, and like all good friends do, they use Jami "
"to communicate. They are both Jami contact of each other, so Alice is a "
"contact of Jessica and Jessica is a contact of Alice. Some day however, "
"Jessica does something really bad to Alice and Alice doesn't want to hear "
"from her anymore. Instead of removing Jessica from her Ring contacts -- "
"which would still allow Jessica to send her contact requests, Alice *bans* "
"Jessica."
msgstr ""
#: ../../../developer/banned-contacts.md:20
msgid "**So, what does it mean ?**"
msgstr "Deci, ce înseamnă asta?"
#: ../../../developer/banned-contacts.md:22
msgid "In the daemon"
msgstr "În serviciu"
#: ../../../developer/banned-contacts.md:25
msgid "Jessica *won't be notified that she was banned by Alice*."
msgstr "Jessica *nu va fi notificată că a fost interzisă de Alice *."
#: ../../../developer/banned-contacts.md:27
msgid ""
"As a *banned contact* of Alice, Jessica *won't be allowed to contact her "
"anymore*, in any way. Text messages, voice or video calls won't be "
"acknowledged or answered in any way. Alice won't even be aware that Jessica "
"tried to contact her."
msgstr ""
"Ca un contact interzis al lui Alice, Jessica * nu va mai fi autorizată să o "
"contacteze în niciun fel. mesaje text, apeluri vocale sau video nu vor fi "
"recunoscute sau răspuns în niciun fel. Alice nu va fi nici măcar conștient "
"că Jessica a încercat să o contacteze."
#: ../../../developer/banned-contacts.md:32
msgid "Banned contacts are synched across linked devices like other contacts."
msgstr ""
"Contactele interzise sunt sincronizate pe dispozitive conectate ca și alte "
"contacte."
#: ../../../developer/banned-contacts.md:34
msgid "In Jami clients (recommended implementation)"
msgstr "În clienții Jami (implementare recomandată)"
#: ../../../developer/banned-contacts.md:37
msgid ""
"As long as Jessica is a banned contact, the conversation with Jessica "
"doesn't appears in the conversations list. The conversation history, "
"however, is not deleted. Jessica appears in Alice' account banned contact "
"list. Alice might also find/open the conversation by performing an exact "
"search for Jessica' username."
msgstr ""
"În timp ce Jessica este un contact interzis, conversația cu Jessica nu apare"
" în lista conversațiilor. Istoria conversației, totuși, nu este ștersă. "
"Jessica apare în lista de contacte interzise a contului Alice. Alice ar "
"putea, de asemenea, găsi / deschide conversația efectuând o căutare exactă "
"pentru numele de utilizator al lui Jessica."
#: ../../../developer/banned-contacts.md:43
msgid ""
"Alice can un-ban Jessica from the conversation or the banned contact list."
msgstr ""
"Alice poate să-l interzică pe Jessica de la conversaţie sau de la lista de "
"contacte interzise."
#: ../../../developer/banned-contacts.md:46
msgid ""
"The search result and the conversation indicates Jessica' banned status. "
"Alice must unban Jessica to send her a message, call her or otherwise "
"interract with her."
msgstr ""
"Rezultatele căutării şi conversaţia indică faptul că Jessica a fost "
"interzisă, iar Alice trebuie să-i dea drumul unei interdicţii de a-i trimite"
" mesaje, să o sune sau să interacţioneze cu ea."
#: ../../../developer/banned-contacts.md:50
msgid ""
"Alice can still delete the conversation history using a *Delete History* "
"button."
msgstr ""
"Alice poate șterge istoricul conversației folosind butonul *Sters istoricul "
"*."
#: ../../../developer/calls.md:1 ../../../developer/swarm.md:536
#: ../../../developer/synchronizing-profiles.md:19
msgid "Calls"
msgstr "Apeluri"
#: ../../../developer/calls.md:4
msgid ""
"**NOTE: this page detail the principle for Jami accounts. For SIP accounts, "
"the SIP protocol is used.**"
msgstr "** NOTĂ: această pagină detaliază principiul conturilor Jami."
#: ../../../developer/calls.md:6
msgid "Let's do a call in Jami!"
msgstr "Hai să facem un apel în Jami!"
#: ../../../developer/calls.md:10
msgid ""
"When creating a call between two peers, Jami mainly uses known protocols "
"such as ICE, SIP or TLS. However, to make it distributed, the process of "
"creating a call is a bit different. To summarize, when someone wants to "
"contact one of its contact, this is what they will do:"
msgstr ""
"Când creează un apel între doi colegi, Jami folosește în principal "
"protocoale cunoscute cum ar fi ICE, SIP sau TLS. Cu toate acestea, pentru a "
"face distribuit, procesul de creare a unui apel este puțin diferit."
#: ../../../developer/calls.md:12
msgid ""
"Search the contact presence on the DHT (for more details, see {doc}`contact-"
"management`)"
msgstr ""
"Căutați prezența de contact pe DHT (pentru mai multe detalii, a se vedea "
"{doc}`contakt-management`)"
#: ../../../developer/calls.md:13
msgid ""
"Once the contact is found, send a call request, announcing the known "
"candidates (the ip of each network interfaces + relay addresses (TURN) + "
"reflexives addresses (UPnP, public ones)."
msgstr ""
"După ce contactul este găsit, trimiteți o cerere de apel, anunțând "
"candidații cunoscuți (IP-ul fiecărei interfețe de rețea + adrese de relea "
"(TURN) + adrese reflexivă (UPnP, cele publice)."
#: ../../../developer/calls.md:14
msgid ""
"Wait for the response of the contact (they will respond their known "
"addresses)."
msgstr ""
"Aşteptaţi răspunsul contactului (îi vor răspunde la adresele lor cunoscute)."
#: ../../../developer/calls.md:15
msgid ""
"Negotiate the socket via ICE. In fact, two ICE sessions are negotiated. One "
"(preferred) in TCP, one in UDP (as a fallback)."
msgstr ""
"Negociați socketul prin ICE. De fapt, se negociează două sesiuni ICE. Una "
"(preferită) în TCP, una în UDP (în mod de retragere)."
#: ../../../developer/calls.md:16
msgid "Then, the socket is encrypted in TLS (if TCP) or DTLS (if UDP)."
msgstr "Apoi, socketul este criptat în TLS (dacă TCP) sau DTLS (dacă UDP)."
#: ../../../developer/calls.md:17
msgid ""
"The contact is now able to accept or decline the call. When they accept, a "
"ICE transport (UDP only for now) is negotiated to create 4 new sockets for "
"the medias (2 for audio, 2 for video)."
msgstr ""
"Când acceptă, se negociază un transport ICE (UDP doar pentru moment) pentru "
"a crea 4 noi socate pentru media (2 pentru audio, 2 pentru video)."
#: ../../../developer/calls.md:18
msgid "The call is now alive!"
msgstr "Apelul este acum viu!"
#: ../../../developer/calls.md:20
msgid "Exchange ICE candidates"
msgstr "Cumpărarea de candidaturi pentru ICE"
#: ../../../developer/calls.md:22
msgid ""
"Everything really starts in `jamiaccount.cpp` "
"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and when"
" the contact is found via the DHT, the call request for the contact is "
"crafted. This request contains all the informations necessary for the remote"
" ICE session defined by:"
msgstr ""
"Totul începe cu adevărat în `jamiaccount.cpp` "
"(`JamiAccount::startOutgoingCall`). Odată ce ambele obiecte ICE sunt gata și"
" când contactul este găsit prin DHT, este elaborată cererea de apel pentru "
"contact."
#: ../../../developer/calls.md:28
msgid ""
"where `callvid` is a random number used to identify the call and blob "
"contains two concatened ICE messages (`IceTransport::packIceMsg` in "
"`ice_transport.cpp`) containing the password of the session, the *ufrag* and"
" ICE candidates.) like:"
msgstr ""
"unde `callvid` este un număr aleatoriu utilizat pentru identificarea "
"apelului și blob conține două mesaje ICE concatenate "
"(`IceTransport::packIceMsg` în `ice_transport.cpp`) care conțin parola "
"sesiunii, *ufrag* și candidații ICE.) cum ar fi:"
#: ../../../developer/calls.md:48
msgid ""
"and is sent via the DHT in an encrypted message for the device to "
"`hash(callto:xxxxxx)` where `xxxxxx` is the device id. The peer will answer "
"at the exact same place (but encrypted for the sender device) its own "
"`dht::IceCandidates`. See `JamiAccount::replyToIncomingIceMsg` for more "
"details."
msgstr ""
"și este trimis prin DHT într-un mesaj criptat pentru dispozitiv la "
"`hash(call:xxxxxx)` unde `xxxxxx` este ID-ul dispozitivului. Peer va "
"răspunde la exact același loc (dar criptat pentru dispozitivul de trimitere)"
" propriul său `dht::IceCandidates`. Vezi "
"`JamiAccount::replyToIncomingIceMsg` pentru mai multe detalii."
#: ../../../developer/calls.md:50
msgid ""
"The ICE session is created both side when they have all the candidates (so "
"for the sender, when the reply from the contact is received)."
msgstr ""
"Seșința ICE este creată pe ambele părți atunci când acestea au toate "
"candidatele (de exemplu, pentru expeditor, atunci când răspunsul de la "
"contact este primit)."
#: ../../../developer/calls.md:52
msgid "ICE negotiation"
msgstr "Negocierea ICE"
#: ../../../developer/calls.md:54
msgid ""
"Pending calls are managed by `JamiAccount::handlePendingCallList()`, which "
"first wait that the TCP negotiation finish (and if it fails, wait for the "
"UDP one). The code for the ICE negotiation is mainly managed by "
"[pjproject](https://github.com/pjsip/pjproject) but for Jami, the "
"interesting part is located in `ice_transport.cpp`. Moreover, we add some "
"important patches/features on top of *pjproject* not merged upstream for now"
" (for example, ICE over TCP). These patches are present in "
"`contrib/src/pjproject`."
msgstr ""
"Apelurile în aşteptare sunt gestionate de "
"`JamiAccount::handlePendingCallList() `, care mai întâi așteaptă până la "
"finalizarea negocierilor TCP (și dacă nu reușește, așteaptă cea UDP). Codul "
"pentru negocierea ICE este gestionat în principal de "
"[pjproject]https://github.com/pjsip/pjproject) dar pentru Jami, partea "
"interesantă este localizată în `ice_transport.cpp`. În plus, adăugăm unele "
"patch-uri/fecțiuni importante în partea de sus a *pjproject* care nu au fost"
" fuzionate în aval până acum (de exemplu, ICE peste TCP). Aceste patch-uri "
"sunt prezente în `contrib/src/pjproject`."
#: ../../../developer/calls.md:56
msgid "Encrypt the control socket"
msgstr "Encrypţi controlul"
#: ../../../developer/calls.md:58
msgid ""
"Once the socket is created and managed by an **IceTransport** instance, it "
"is then wrapped in a **SipTransport** corresponding to a *TlsIceTransport*. "
"The main code is located into `JamiAccount::handlePendingCall()` and the "
"wrapping is done into `SipTransportBroker::getTlsIceTransport`. Finally, our"
" session is managed by **TlsSession** in "
"`daemon/src/security/tls_session.cpp` and uses the GnuTLS library."
msgstr ""
"Odată ce socketul este creat și gestionat de o instanță **IceTransport**, "
"acesta este apoi înfășurat într-un **SipTransport** corespunzător unui "
"*TlsIceTransport*. Codul principal este localizat în "
"`JamiAccount::handlePendingCall()` și înfășurarea se face în "
"`SipTransportBroker::getTlsIceTransport`. În cele din urmă, sesiunea noastră"
" este gestionată de **TlsSession** în `daemon/src/security/tls_session.cpp` "
"și folosește biblioteca GnuTLS."
#: ../../../developer/calls.md:60
msgid ""
"So, the control socket will be a TLS (1.3 if your and your peer gnutls "
"version support it) if a TCP socket is negotiated. If a UDP socket is "
"negotiated instead (due to firewall restrictions/problem in the "
"negotiation/etc), the socket will use DTLS (still managed by the same "
"parts)."
msgstr ""
"Deci, socket-ul de control va fi un TLS (1.3 dacă versiunea dvs. și a "
"colegilor dvs. gnutls îl susțin) dacă se negociază o socket-ul TCP. Dacă se "
"negociază un socket UDP în schimb (din cauza restricțiilor firewall / "
"problemei în negociere / etc), socket-ul va folosi DTLS (înca gestionat de "
"aceleași părți)."
#: ../../../developer/calls.md:62
msgid ""
"The control socket is used to transmit SIP packets, like invites, custom "
"messages (Jami sends the VCard of your profile on this socket at the start "
"of the call, or the rotation of the camera), text messages."
msgstr ""
"Socketul de control este utilizat pentru a transmite pachete SIP, cum ar fi "
"invitații, mesaje personalizate (Jami trimite VCard-ul profilului dvs. pe "
"această socket la începutul apelului, sau rotația camerei), mesaje text."
#: ../../../developer/calls.md:64
msgid "Related articles:"
msgstr "Articolul următor"
#: ../../../developer/calls.md:66
msgid "https://jami.net/improved-video-rotation-support/"
msgstr ""
"În cazul în care se aplică un sistem de control al emisiilor de energie "
"electrică, se aplică un sistem de control al emisiilor de energie electrică."
#: ../../../developer/calls.md:67
msgid "https://jami.net/peer-to-peer-file-sharing-support-in-jami/"
msgstr ""
"În cazul în care un proiect de proiect este realizat, se poate utiliza un "
"sistem de transfer de date."
#: ../../../developer/calls.md:69
msgid "Media sockets"
msgstr "Suporturi de comunicare"
#: ../../../developer/calls.md:71
msgid ""
"Media sockets are SRTP sockets where the key is negotiated through the TLS "
"Session previously created. **TODO**"
msgstr ""
"Socket-urile media sunt socket-urile SRTP în care cheia este negociată prin "
"sesiunea TLS creată anterior. ** TODO**"
#: ../../../developer/calls.md:74 ../../../developer/drt.rst:140
msgid "Architecture"
msgstr "Arhitectura"
#: ../../../developer/calls.md:76
msgid "**TOOD**"
msgstr "** TOOD**"
#: ../../../developer/calls.md:79
msgid "Multi-stream"
msgstr "Multicurent"
#: ../../../developer/calls.md:81
msgid ""
"Since daemon's version 13.3.0, multi-stream is fully supported. This "
"feature allows users to share multiple videos during a call at the same "
"time. In the following parts, we will describe all related changes."
msgstr ""
"De la versiunea 13.3.0 a lui Daemon, multi-stream este complet suportat. "
"Această caracteristică permite utilizatorilor să partageze mai multe "
"videoclipuri în timpul unui apel în același timp. În următoarele părți, vom "
"descrie toate schimbările aferente."
#: ../../../developer/calls.md:86
msgid "pjsip"
msgstr "cu oţel"
#: ../../../developer/calls.md:88
msgid ""
"The first part is to negotiate enough media streams. In fact, every media "
"stream uses 2 UDP sockets. We consider three scenarios:"
msgstr ""
"Primul aspect este negocierea unor fluxuri media suficiente. De fapt, "
"fiecare flux de media folosește 2 socate UDP."
#: ../../../developer/calls.md:91
msgid ""
"If it's the host of a conference who wants to add media, there is nothing "
"more to negotiate, because we already mix the videos into one stream. So, "
"we add the new media directly to the video-mixer without negotiations."
msgstr ""
"Dacă este gazda unei conferințe care vrea să adauge media, nu mai este nimic"
" de negociat, pentru că am amestecat deja videoclipurile într-un singur "
"flux."
#: ../../../developer/calls.md:96
msgid ""
"If we're in 1:1, for now, as there is no conference information, multi-"
"stream is not supported."
msgstr ""
"Dacă suntem la 1:1, pentru moment, deoarece nu există informații de "
"conferință, multi-stream nu este susținut."
#: ../../../developer/calls.md:99
msgid "Else, 2 new sockets are negotiated for new media."
msgstr "Altfel, 2 noi socate sunt negociate pentru noi mass-media."
#: ../../../developer/calls.md:101
msgid ""
"To make pjsip able to generate more sockets per ICE session, "
"`PJ_ICE_COMP_BITS` was modified to `5` (which corresponds to `2^5`, so 32 "
"streams)."
msgstr ""
"Pentru a face pjsip să poată genera mai multe socate pe sesiune ICE, "
"`PJ_ICE_COMP_BITS` a fost modificat la `5` (care corespunde `2^5`, deci 32 "
"de fluxuri)."
#: ../../../developer/calls.md:105
msgid "Deprecate switchInput, support requestMediaChange"
msgstr "Deprecate switchInput, solicitare de suportMediaChange"
#: ../../../developer/calls.md:107
msgid ""
"In the daemon, the old API `switchInput` is now **DEPRECATED**; same for "
"`switchSecondaryInput`:"
msgstr ""
"În daemon, vechea API `switchInput` este acum **DEPRECATED**; același lucru "
"pentru `switchSecondaryInput`:"
#: ../../../developer/calls.md:133
msgid "`requestMediaChange` replaces this, for both calls and conferences:"
msgstr ""
"`requestMediaChange` înlocuieşte acest lucru, atât pentru apeluri, cât şi "
"pentru conferinţe:"
#: ../../../developer/calls.md:157
msgid "Compability"
msgstr "Compatibilitate"
#: ../../../developer/calls.md:159
msgid ""
"If a call is done with a peer where the daemon's version is < 13.3.0, multi-"
"stream is not enabled and the old behavior is used (1 video only)."
msgstr ""
"Dacă un apel este efectuat cu un peer în cazul în care versiunea deemonului "
"este < 13.3.0, multi-stream nu este activat și se utilizează comportamentul "
"vechi (numai 1 video)."
#: ../../../developer/calls.md:163
msgid "Identifications of streams"
msgstr "Identificarea fluxurilor"
#: ../../../developer/calls.md:165
msgid ""
"Because there can be multiple streams now, every media stream is identified "
"by its identifier, and the format is \"<type>_<idx>\"; for example: "
"\"audio_0\", \"video_2\", etc."
msgstr ""
"Deoarece acum pot exista mai multe fluxuri, fiecare flux de mass-media este "
"identificat prin identificatorul său, iar formatul este \"<type>_<idx>\"; de"
" exemplu: \"audio_0\", \"video_2\", etc."
#: ../../../developer/calls.md:169
msgid "Rotation"
msgstr "Rotare"
#: ../../../developer/calls.md:171 ../../../developer/calls.md:187
#: ../../../developer/calls.md:201
msgid "The XML was updated to add the wanted stream:"
msgstr "XML a fost actualizat pentru a adăuga fluxul dorit:"
#: ../../../developer/calls.md:185
msgid "Key-frame"
msgstr "Cadru de cheie"
#: ../../../developer/calls.md:199
msgid "Voice activity"
msgstr "Activitatea vocală"
#: ../../../developer/calls.md:215
msgid "Conference"
msgstr "Conferință"
#: ../../../developer/calls.md:217
msgid "Reflected changes are documented {doc}`here <conference-protocol>`."
msgstr "Modificările reflectate sunt documentate aici."
#: ../../../developer/calls.md:219
msgid "Client"
msgstr "Client"
#: ../../../developer/calls.md:221
msgid ""
"Even if the back-end supports up to 32 media at the same time, except for "
"custom clients we currently recommend only giving the ability to share one "
"camera and one video at the same time. The camera is controlled via the "
"camera button, and the other media via the \"Share\" button."
msgstr ""
"Chiar dacă back-end-ul suportă până la 32 de media în același timp, cu "
"excepția clienților personalizați, recomandăm în prezent să oferim doar "
"posibilitatea de a împărtăși o cameră și un video în același timp."
#: ../../../developer/calls.md:227
msgid ""
"In client-qt, the interesting part is in `AvAdapter` (methods like "
"`isCapturing`, `shareAllScreens`, `stopSharing`). In the library's logic, "
"`addMedia` and `removeMedia` in the `callModel` directly use the "
"`requestMediaChange` and can be used as a design reference."
msgstr ""
"În client-qt, partea interesantă este în `AvAdapter` (metode cum ar fi "
"`isCapturing`, `shareAllScreens`, `stopSharing`). În logica bibliotecii, "
"`addMedia` și `removeMedia` în `callModel` folosesc direct "
"`requestMediaChange` și pot fi folosite ca referință de proiectare."
#: ../../../developer/calls-in-swarm.md:1
msgid "Calls in Swarm"
msgstr "Chelul în Swarm"
#: ../../../developer/calls-in-swarm.md:4
msgid "Goals"
msgstr "Obiective"
#: ../../../developer/calls-in-swarm.md:6
msgid ""
"This page aims to describe how call will works with groups. This method will"
" allow clients to provides call for multiple participants with a shared text"
" history. The protocol must be flexible, keep compatibility with the SIP "
"stack, adn must work in a distributed environment. This distributed "
"environment also brings some challenges, such as possible race conditions "
"(where multiple parties can start a call at the same time). Finally, because"
" the Swarm can be with members only using mobiles, or by companies with "
"dedicated servers to mix the video, it should also be able to work with the "
"best experience possible on heterogeneous environment."
msgstr ""
"Acest articol are ca scop să descrie modul în care apelul va funcționa cu "
"grupurile. Această metodă va permite clienților să ofere apel pentru mulți "
"participanți cu un istoric de text comun. Protocolul trebuie să fie "
"flexibil, să păstreze compatibilitatea cu stacul SIP, adn trebuie să lucreze"
" într-un mediu distribuit. Acest mediu distribuit aduce, de asemenea, unele "
"provocări, cum ar fi posibile condiții de cursă (unde mai multe părți pot "
"începe o apelare în același timp). În sfârșit, deoarece Swarm poate fi cu "
"membrii folosind doar telefoane mobile sau de către companii cu servere "
"dedicate pentru a mixa videoclipul, ar trebui să fie capabil să lucreze cu "
"cea mai bună experiență posibilă pe un mediu heterogen."
#: ../../../developer/calls-in-swarm.md:8
#: ../../../developer/conference-protocol.md:5
#: ../../../developer/design-process.md:4 ../../../developer/drt.rst:23
msgid "Definitions"
msgstr "Definitorii"
#: ../../../developer/calls-in-swarm.md:10
msgid ""
"a **Rendezvous** will mix all authorized incoming calls in a conference."
msgstr ""
"Un **Rendezvous** va amesteca toate apelurile autorizate intrante într-o "
"conferință."
#: ../../../developer/calls-in-swarm.md:11
msgid "Two new URIs will be used for this feature:"
msgstr "Pentru această funcție vor fi utilizate două noi URIs:"
#: ../../../developer/calls-in-swarm.md:12
msgid "`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`"
msgstr ""
"`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#: ../../../developer/calls-in-swarm.md:13
msgid "`rdv:accountUri/deviceId/conversationId/confId`"
msgstr "`rdv:accountUri/deviceId/conversareId/confId`"
#: ../../../developer/calls-in-swarm.md:14
msgid ""
"**Swarm's profile** is the profile of the swarm stored in a vCard "
"(`profile.vcf`, see {ref}`developer/swarm:Conversation's profile "
"synchronization` and {doc}`synchronizing-profiles`)"
msgstr ""
"**Profilul grupului** este profilul grupului stocat într-o vCard "
"(`profile.vcf`, vezi {ref}`developer/swarm:Conversation's profile "
"synchronization` și {doc}`synchronizing-profiles`)"
#: ../../../developer/calls-in-swarm.md:15
msgid "`rdvUri` is the default URI for a Swarm, set in the *Swarm's profile*"
msgstr ""
"`rdvUri` este URI-ul standard pentru un grup de persoane, setat în profilul "
"grupului de persoane*"
#: ../../../developer/calls-in-swarm.md:17
msgid ""
"Note: those two URIs allow the client to place a call in order to join a "
"*Rendezvous* or to init a call to a swarm, resulting in the logic described "
"in the next section."
msgstr ""
"Notă: aceste două URI permit clientului să facă un apel pentru a se alătura "
"unui *Rendezvous* sau să inițieze un apel către un cior, rezultând în logica"
" descrisă în secțiunea următoare."
#: ../../../developer/calls-in-swarm.md:19
msgid "Place a call in a Swarm"
msgstr "Pune un apel într-un grup"
#: ../../../developer/calls-in-swarm.md:21
msgid "Proposed flow:"
msgstr "Fluxul propus:"
#: ../../../developer/calls-in-swarm.md:23
msgid "**a:** If `rdvUri` is set:"
msgstr "**a:** Dacă `rdvUri` este setat:"
#: ../../../developer/calls-in-swarm.md:24
#: ../../../developer/calls-in-swarm.md:27
msgid "Call it"
msgstr "Spune-mi."
#: ../../../developer/calls-in-swarm.md:25
msgid "If failed, go to **b:**"
msgstr "Dacă nu reuşeşti, merge la **b:**"
#: ../../../developer/calls-in-swarm.md:26
msgid "**b:** else if there is a current active call:"
msgstr "**b:** în cazul în care există un apel activ curent:"
#: ../../../developer/calls-in-swarm.md:28
msgid "If failed, go to **c:**"
msgstr "Dacă nu reuşeşti, merge la **c:**"
#: ../../../developer/calls-in-swarm.md:29
msgid "**c:** else, host a new *Rendezvous* and join it."
msgstr "Altfel, găzduiţi un nou \"Rendezvous\" şi alăturaţi-vă."
#: ../../../developer/calls-in-swarm.md:30
msgid "Also, ask users if they want to be the host for next calls."
msgstr ""
"De asemenea, întrebați utilizatorii dacă vor să fie gazda pentru următoarele"
" apeluri."
#: ../../../developer/calls-in-swarm.md:32
msgid ""
"![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-"
"diagram.png)"
msgstr ""
"! [Diagram: plasarea unui apel într-un swarm](images/placing-call-in-swarm-"
"diagram.png)"
#: ../../../developer/calls-in-swarm.md:32
msgid "Diagram: Placing a call in a Swarm"
msgstr "Diagram: plasarea unei apeluri într-un grup de persoane"
#: ../../../developer/calls-in-swarm.md:34
msgid "**TODO, when to commit and who is commiting**"
msgstr "** TODO, când să se angajeze și cine se angajează**"
#: ../../../developer/calls-in-swarm.md:36
msgid "Incoming calls for swarm"
msgstr "Apeluri de urmărire"
#: ../../../developer/calls-in-swarm.md:38
msgid ""
"When receiving a new incoming call, the URI MUST be parsed. If the incoming "
"call is for a *Rendezvous* which is currently hosted by the device and the "
"caller is authorized to join, the call MUST be answered and added to the "
"current *Rendezvous*"
msgstr ""
"Când primești un nou apel intrând, URI trebuie analizat. Dacă apelul intrând"
" este pentru un *Rendezvous* care este găzduit în prezent de dispozitiv și "
"sunătorul este autorizat să se alăture, apelul trebuie răspuns și adăugat la"
" *Rendezvous* actual"
#: ../../../developer/calls-in-swarm.md:41
msgid "Defining a host for a Swarm"
msgstr "Definirea unui gazde pentru un grup de oameni"
#: ../../../developer/calls-in-swarm.md:43
msgid ""
"To define a default URI, the member who wants to be the host should update "
"the profile of the conversation, and this will be synced and validated by "
"peers. However, the host MUST be able to accept or not to be the host and a "
"member with enough permissions SHOULD be able to ask a device to be the "
"host. This process is not decided for now."
msgstr ""
"Pentru a defini un URI de parapoartă, membruul care dorește să fie gazda "
"trebuie să actualizeze profilul conversației, iar acest lucru va fi "
"sincronizat și validat de colegii. Cu toate acestea, gazda trebuie să fie în"
" măsură să accepte sau să nu fie gazda și un membru cu permise suficiente AR"
" trebui să fie în măsură să solicite unui dispozitiv să fie gazda. Acest "
"proces nu este decis pentru moment."
#: ../../../developer/calls-in-swarm.md:45
msgid "**TODO? Permissions to update, negotiation of the host**"
msgstr "Permisiuni de actualizare, negociere a gazdei**"
#: ../../../developer/calls-in-swarm.md:47
#: ../../../developer/conference-protocol.md:181
#: ../../../developer/file-transfer.md:196
msgid "Future"
msgstr "Viitorul"
#: ../../../developer/calls-in-swarm.md:49
msgid "Join notifications?"
msgstr "Să ne alăturăm notificărilor?"
#: ../../../developer/calls-in-swarm.md:51
msgid ""
"Members of the swarm that aren't in a call SHOULD be able to know who is in "
"the active calls."
msgstr ""
"Membrii grupului care nu sunt în apel ar trebui să poată şti cine este în "
"apeluri active."
#: ../../../developer/calls-in-swarm.md:53
msgid "SIP Bridge?"
msgstr "Podul SIP?"
#: ../../../developer/calls-in-swarm.md:55
msgid ""
"Because conferences are still mixed SIP calls, a SIP bridge is still "
"possible. In the *Swarm's profile* it should be possible to add a SIP entry,"
" like some popular VoIP systems)"
msgstr ""
"Întrucât conferințele sunt încă apeluri mixte SIP, o punte SIP este încă "
"posibilă. În profilul *Swarm's* ar trebui să fie posibil să se adauge o "
"intrare SIP, ca unele sisteme VoIP populare)"
#: ../../../developer/choosing-crf-value-for-encoder.md:1
msgid "Choosing CRF value for encoder"
msgstr "Selecția valorii CRF pentru codare"
#: ../../../developer/choosing-crf-value-for-encoder.md:4
#: ../../../developer/design-process.md:13
msgid "Context"
msgstr "Contextul"
#: ../../../developer/choosing-crf-value-for-encoder.md:5
msgid ""
"Bandwidth usage by the Jami application is not optimal for all types of "
"connections. Indeed, in some cases, the user experience is not good "
"(satellite connection, ...) despite the bandwidth management algorithm."
msgstr ""
"Utilizarea lățimii de bandă de către aplicația Jami nu este optimă pentru "
"toate tipurile de conexiuni. Într-adevăr, în unele cazuri, experiența "
"utilizatorului nu este bună (conexiune prin satelit,...) în ciuda "
"algoritmului de gestionare a lățimii de bandă."
#: ../../../developer/choosing-crf-value-for-encoder.md:7
msgid "Observation"
msgstr "Observație"
#: ../../../developer/choosing-crf-value-for-encoder.md:8
msgid ""
"It is not necessary to aim for an optimal quality (CRF < 20) because beyond "
"that, the visual perception is almost similar while the data flow (bitrate) "
"required is much higher."
msgstr ""
"Nu este necesar să se urmărească o calitate optimă (CRF < 20) deoarece, în "
"afară de aceasta, percepția vizuală este aproape similară, în timp ce fluxul"
" de date (bitrate) necesar este mult mai mare."
#: ../../../developer/choosing-crf-value-for-encoder.md:10
msgid "Objective"
msgstr "Obiectivul"
#: ../../../developer/choosing-crf-value-for-encoder.md:11
msgid ""
"The purpose of this document is to verify the impact of a change in video "
"quality with the CRF parameter of the encoder."
msgstr ""
"Scopul prezentului document este de a verifica impactul unei modificări a "
"calității video cu ajutorul parametrului CRF al codatorului."
#: ../../../developer/choosing-crf-value-for-encoder.md:13
msgid "Test"
msgstr "Test"
#: ../../../developer/choosing-crf-value-for-encoder.md:14
msgid "These tests were performed by comparing :"
msgstr "Aceste teste au fost efectuate prin compararea:"
#: ../../../developer/choosing-crf-value-for-encoder.md:15
msgid "The first one encoded with Jami's current parameters"
msgstr "Primul codat cu parametrii curenti ai Jami"
#: ../../../developer/choosing-crf-value-for-encoder.md:16
msgid "The second encoded with a lower quality"
msgstr "Al doilea codat cu o calitate mai mică"
#: ../../../developer/choosing-crf-value-for-encoder.md:18
msgid ""
"Each of these tests were performed for the following resolutions: 1080p, "
"720p and 436p."
msgstr ""
"Fiecare dintre aceste teste a fost efectuată pentru următoarele rezoluții: "
"1080p, 720p și 436p."
#: ../../../developer/choosing-crf-value-for-encoder.md:20
msgid "For each of these resolutions several bitrates have been used:"
msgstr ""
"Pentru fiecare dintre aceste rezoluții au fost utilizate mai multe rate de "
"bitare:"
#: ../../../developer/choosing-crf-value-for-encoder.md:21
msgid "300 Kbit/s (Jami low value)"
msgstr "300 Kbit/s (valor scăzut de jam)"
#: ../../../developer/choosing-crf-value-for-encoder.md:22
msgid "1.5 Mbit/s (Intermediate value)"
msgstr "1,5 Mbit/s (valorul intermediar)"
#: ../../../developer/choosing-crf-value-for-encoder.md:23
msgid "6 Mbit/s (High value)"
msgstr "6 Mbit/s (valor ridicat)"
#: ../../../developer/choosing-crf-value-for-encoder.md:25
msgid ""
"The graphs show the evolution of the bitrate with the file being tested "
"(resolution and specific set bitrate)."
msgstr ""
"Graficele arată evoluția ratei de bitare cu fișierul testat (rezoluție și "
"rate de bitare setare specifice)."
#: ../../../developer/choosing-crf-value-for-encoder.md:27
msgid "A visual comparison (side by side) was made for each test."
msgstr ""
"Pentru fiecare test s-a efectuat o comparație vizuală (peste alături)."
#: ../../../developer/choosing-crf-value-for-encoder.md:29
msgid ""
"Thanks to this test we can estimate the bitrate that will be emitted in Jami"
" according to the chosen parameters. We also have an overview of the visual "
"quality."
msgstr ""
"Datorită acestui test putem estima bitrata care va fi emisă în Jami în "
"funcție de parametrii aleși."
#: ../../../developer/choosing-crf-value-for-encoder.md:33
msgid ""
"1080p / 300 kbit/s / CRF28 ![image](images/choosing-crf-1080p-300kbps-"
"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-"
"crf-1080p-300kbps-crf38.png)"
msgstr ""
"1080p / 300 kbit/s / CRF28! [image](images/choosing-crf-1080p-300kbps-"
"crf28.png) 1080p / 300 kbit/s / CRF38! [image](images/choosing-"
"crf-1080p-300kbps-crf38.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:33
#: ../../../developer/choosing-crf-value-for-encoder.md:40
#: ../../../developer/choosing-crf-value-for-encoder.md:47
#: ../../../developer/choosing-crf-value-for-encoder.md:56
#: ../../../developer/choosing-crf-value-for-encoder.md:62
#: ../../../developer/choosing-crf-value-for-encoder.md:69
#: ../../../developer/choosing-crf-value-for-encoder.md:78
#: ../../../developer/choosing-crf-value-for-encoder.md:85
#: ../../../developer/choosing-crf-value-for-encoder.md:92
msgid "image"
msgstr "imaginea"
#: ../../../developer/choosing-crf-value-for-encoder.md:38
msgid "Visual comparison (CRF28 a gauche / CRF38 a droite)"
msgstr "Comparatie vizuala (CRF28 la stânga / CRF38 la dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:40
msgid ""
"1080p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-1080p-1.5mbps-"
"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-"
"crf-1080p-1.5mbps-crf30.png)"
msgstr ""
"1080p / 1.5 Mbps / CRF22! [image](images/choosing-crf-1080p-1.5mbps-"
"crf22.png) 1080p / 1.5 Mbit/s / CRF30! [image](images/choosing-"
"crf-1080p-1.5mbps-crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:45
#: ../../../developer/choosing-crf-value-for-encoder.md:67
#: ../../../developer/choosing-crf-value-for-encoder.md:90
msgid "Visual comparison (CRF22 left / CRF30 right)"
msgstr "Comparatie vizuala (CRF22 stânga / CRF30 dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:47
msgid ""
"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-crf17.png) "
"1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-6mbps-crf23.png)"
msgstr ""
"1080p / 6 Mbps / CRF17! [image](images/choosing-crf-1080p-6mbps-crf17.png) "
"1080p / 6 Mbit/s / CRF23! [image](images/choosing-crf-1080p-6mbps-crf23.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:52
msgid "Visual comparison (CRF17 on the left / CRF23 on the right)"
msgstr "Comparatie vizuala (CRF17 din stanga / CRF23 din dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:56
msgid ""
"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-crf28.png)"
" 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-300kbps-"
"crf38.png) Visual comparison (CRF28 left / CRF38 right)"
msgstr ""
"720p / 300 kbps / CRF28![image](images/choosing-crf-720p-300kbps-crf28.png) "
"720p / 300 kbit/s / CRF38![image](images/choosing-crf-720p-300kbps-"
"crf38.png) Comparatie vizuala (CRF28 stânga / CRF38 dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:62
msgid ""
"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-crf22.png)"
" 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) ![image](images/choosing-"
"crf-720p-1.5mbps-crf30.png)"
msgstr ""
"720p / 1.5 Mbps / CRF22![image](images/choosing-crf-720p-1.5mbps-crf22.png) "
"720p / 1.5 Mbit/s / CRF30 (Test cu CRF redus)![image](images/choosing-"
"crf-720p-1.5mbps-crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:69
msgid ""
"720p / 6 Mbps / CRF17 ![image](images/choosing-crf-720p-6mbps-crf17.png) "
"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-crf23.png)"
msgstr ""
"720p / 6 Mbps / CRF17! [image](images/choosing-crf-720p-6mbps-crf17.png) "
"720p / 6 Mbit/s / CRF23! [image](images/choosing-crf-720p-6mbps-crf23.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:74
#: ../../../developer/choosing-crf-value-for-encoder.md:97
msgid "Visual comparison (CRF17 left / CRF23 right)"
msgstr "Comparatie vizuala (CRF17 stânga / CRF23 dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:78
msgid ""
"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-crf28.png)"
" 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-300kbps-"
"crf38.png)"
msgstr ""
"436p / 300 kbps / CRF28! [image](images/choosing-crf-436p-300kbps-crf28.png)"
" 436p / 300 kbit/s / CRF38! [image](images/choosing-crf-436p-300kbps-"
"crf38.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:83
msgid "Visual comparison (CRF28 left / CRF38 right)"
msgstr "Comparatie vizuala (CRF28 stânga / CRF38 dreapta)"
#: ../../../developer/choosing-crf-value-for-encoder.md:85
msgid ""
"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-crf22.png)"
" 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1.5mbps-"
"crf30.png)"
msgstr ""
"436p / 1.5 Mbps / CRF22![image](images/choosing-crf-436p-1.5mbps-crf22.png) "
"436p / 1.5 Mbit/s / CRF30![image](images/choosing-crf-436p-1.5mbps-"
"crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:92
msgid ""
"436p / 6 Mbps / CRF17 ![image](images/choosing-crf-436p-6mbps-crf17.png) "
"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-crf23.png)"
msgstr ""
"436p / 6 Mbps / CRF17! [image](images/choosing-crf-436p-6mbps-crf17.png) "
"436p / 6 Mbit/s / CRF23! [image](images/choosing-crf-436p-6mbps-crf23.png)"
#: ../../../developer/coding-style.md:1
msgid "Coding style"
msgstr "Stil de codare"
#: ../../../developer/coding-style.md:4
msgid ""
"**This page gives rules and/or guidances to all developers that want to "
"integrate some code to Jami**"
msgstr ""
#: ../../../developer/coding-style.md:7
msgid ""
"C++ format rules are defined by this clang-format file: "
"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-format"
msgstr ""
"Regulile formatului C++ sunt definite de acest fișier de format clang: "
"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-format"
#: ../../../developer/coding-style.md:10
msgid ""
"QML format rules are defined by the source code used to build the qmlformat "
"executable: "
"https://codebrowser.dev/qt6/qtdeclarative/tools/qmlformat/qmlformat.cpp.html"
msgstr ""
#: ../../../developer/coding-style.md:13
msgid ""
"All developers are recommended to format their code using the script in "
"`jami-project/scripts/format.sh`. This is done automatically (as a pre-"
"commit hook) when using `./build.py --init --qt=<path-to-qt>`."
msgstr ""
#: ../../../developer/conference-protocol.md:1
msgid "Conference protocol"
msgstr "Protocolul conferinței"
#: ../../../developer/conference-protocol.md:3
msgid ""
"This document aims to describe the evolutions we will do for managing "
"conferences (audio/video). The goal is to improve the current implementation"
" which simply merges SIP calls and provide a grid view, to a view where "
"participants are listed, can be muted independently, or the video layout "
"changed (to show only one participant)"
msgstr ""
"Acest document își propune să descrie evoluțiile pe care le vom face pentru "
"gestionarea conferințelor (audio/video). Scopul este de a îmbunătăți "
"implementarea actuală, care doar unește apelurile SIP și oferă o vizualizare"
" în grilă, printr-o vizualizare în care participanții sînt enumerați, pot fi"
" mutați în mod independent sau aspectul video poate fi modificat (pentru a "
"arăta doar un singur participant)."
#: ../../../developer/conference-protocol.md:7
msgid "Host: Is the user who mix the audio/video streams for the others"
msgstr ""
"Host: Este utilizatorul care amestecă fluxurile audio/video pentru celelalte"
#: ../../../developer/conference-protocol.md:8
msgid "Participant: Every user in the conference, even the host"
msgstr "Participant: Fiecare utilizator la conferință, chiar și gazda"
#: ../../../developer/conference-protocol.md:10
msgid "Disclaimer"
msgstr "Disclaimer"
#: ../../../developer/conference-protocol.md:12
msgid ""
"This document only describes the first steps for now. This means the "
"identification of participants and position in the video mixer sent to all "
"participants."
msgstr "Acest document descrie doar primele pași pentru moment."
#: ../../../developer/conference-protocol.md:14
msgid "Possible layouts"
msgstr "Posibile layouturi"
#: ../../../developer/conference-protocol.md:16
msgid "GRID: Every member is shown with the same height/width"
msgstr "GRID: Fiecare membru este prezentat cu aceeași înălțime/ lățime"
#: ../../../developer/conference-protocol.md:17
msgid ""
"ONE_BIG_WITH_SMALL: One member is zoomed and the other preview is shown"
msgstr ""
"ONE_BIG_WITH_SMALL: Un membru este îndepărtat și se afișează prealabil "
"celălalt"
#: ../../../developer/conference-protocol.md:18
msgid "ONE_BIG: One member take the full screen rendered"
msgstr "ONE_BIG: Un membru face ecranul complet"
#: ../../../developer/conference-protocol.md:20
msgid ""
"Two new methods are available to manage the conference Layout in "
"CallManager:"
msgstr ""
"Există două metode noi de gestionare a configurării conferinței în "
"CallManager:"
#: ../../../developer/conference-protocol.md:38
#: ../../../developer/conference-protocol.md:95 ../../../developer/drt.rst:120
#: ../../../developer/swarm.md:493
msgid "Implementation"
msgstr "Implementare"
#: ../../../developer/conference-protocol.md:40
msgid ""
"The implementation is pretty straightforward. Everything is managed by "
"`conference.cpp` (to link participant to sources) and `video_mixer.cpp` (to "
"render the wanted layout)."
msgstr ""
"Implementarea este destul de simplă. Totul este gestionat de "
"`conference.cpp` (pentru a lega participantul la surse) și `video_mixer.cpp`"
" (pentru a face reprodusarea layoutului dorit)."
#: ../../../developer/conference-protocol.md:43
msgid "Syncing Conferences Informations"
msgstr "Informaţii despre conferinţele de sincronizare"
#: ../../../developer/conference-protocol.md:45
msgid ""
"Note: Actually, the word participant is used for callId mixed in a "
"conference. This can lead at first to some problems for the API and must be "
"fixed in the future"
msgstr ""
"Notă: De fapt, cuvântul participant este folosit pentru apeluri amestecate "
"într-o conferință."
#: ../../../developer/conference-protocol.md:47
msgid ""
"The goal is to notify all participants of the metadata of the rendered "
"video. This means what participant is in the conference and where the video "
"is located."
msgstr ""
"Scopul este de a informa toți participanții cu privire la metadatele "
"videoclipului prezentat."
#: ../../../developer/conference-protocol.md:49
msgid ""
"If a participant is itself a conference, its incoming layout info should be "
"merged when sent to other participants. Layout info must not be merged when "
"sent back to a conference."
msgstr ""
"Dacă un participant este în sine o conferință, informațiile sale de layout "
"intrante ar trebui să fie fuzionate atunci când sunt trimise altor "
"participanți."
#: ../../../developer/conference-protocol.md:51
msgid "Layout Info"
msgstr "Informaţii despre formatare"
#: ../../../developer/conference-protocol.md:53
msgid ""
"The Layout is stored as a VectorMapStringString for clients and internally "
"with a vector<ParticipantInfo> with the following format:"
msgstr ""
"Layout-ul este stocat ca VectorMapStringString pentru clienți și intern cu "
"un vector<ParticipantInfo> cu următorul format:"
#: ../../../developer/conference-protocol.md:67
msgid "Possible keys are:"
msgstr "Cheile posibile sunt:"
#: ../../../developer/conference-protocol.md:69
msgid "uri = account's uri"
msgstr "uri = uri de cont"
#: ../../../developer/conference-protocol.md:70
msgid "device = device's id"
msgstr "dispozitivul = identificarea dispozitivului"
#: ../../../developer/conference-protocol.md:71
msgid "media = media's id"
msgstr "media = ID-ul mediului"
#: ../../../developer/conference-protocol.md:72
msgid "active = if the participant is active"
msgstr "activ = dacă participantul este activ"
#: ../../../developer/conference-protocol.md:73
msgid "x = position (x) in the video"
msgstr "x = poziția (x) în video"
#: ../../../developer/conference-protocol.md:74
msgid "y = position (y) in the video"
msgstr "y = poziția (y) în video"
#: ../../../developer/conference-protocol.md:75
msgid "w = size (width) in the video"
msgstr "w = dimensiunea (amplitudinea) în video"
#: ../../../developer/conference-protocol.md:76
msgid "h = size (height) in the video"
msgstr "h = dimensiunea (ălțimea) în video"
#: ../../../developer/conference-protocol.md:77
msgid "videoMuted = if the video is muted"
msgstr "videocameră oprită = dacă este oprită camera video"
#: ../../../developer/conference-protocol.md:78
msgid "audioLocalMuted = if the audio is locally muted"
msgstr ""
"microfon local oprit = dacă microfonul aparatului tău este oprit de tine"
#: ../../../developer/conference-protocol.md:79
msgid "audioModeratorMuted = if the audio is muted by moderators"
msgstr "microfon oprit la Moderator = dacă moderatorii își opresc microfonul"
#: ../../../developer/conference-protocol.md:80
msgid "isModerator = if it's a moderator"
msgstr "isModerator = dacă este un moderator"
#: ../../../developer/conference-protocol.md:81
msgid "handRaised = if the hand is raised"
msgstr "Mâna ridicată = dacă mâna este ridicată"
#: ../../../developer/conference-protocol.md:82
msgid "voiceActivity = if the stream has voice activity"
msgstr "activitate vocală = dacă fluxul are activitate vocală"
#: ../../../developer/conference-protocol.md:83
msgid "recording = if the peer is recording the conference"
msgstr "înregistrare = dacă partenerul înregistrează conferința"
#: ../../../developer/conference-protocol.md:85
msgid "New API"
msgstr "Nouă API"
#: ../../../developer/conference-protocol.md:87
msgid ""
"A new method (in CallManager) and a new signal to respectively get current "
"conference infos and updates are available:"
msgstr ""
"O nouă metodă (în CallManager) și un nou semnal pentru a obține informații "
"și actualizări actuale ale conferinței sunt disponibile:"
#: ../../../developer/conference-protocol.md:97
msgid ""
"The `Conference` Object (which only exists if we mix calls, this means that "
"we are the master) manages the information for the whole conference, based "
"on the LayoutInfos of each `Call` object. The getConferenceInfos will "
"retrieve info directly from this object."
msgstr ""
"Obiectul `Conference` (care există numai dacă am amesteca apelurile, ceea ce"
" înseamnă că suntem maestrul) gestionează informațiile pentru întreaga "
"conferință, bazându-se pe LayoutInfos al fiecărui obiect `Call`."
#: ../../../developer/conference-protocol.md:99
msgid ""
"So, every `Call` object now has a LayoutInfo and if updated, ask the "
"`Conference` object to updates its info."
msgstr ""
"Astfel, fiecare obiect `Call` are acum o LayoutInfo și, dacă este "
"actualizat, cere obiectului `Conference` să actualizeze informațiile sale."
#: ../../../developer/conference-protocol.md:101
msgid ""
"The master of a conference sends its info via the SIP channel as a message "
"with the following MIME type: `application/confInfo+json`"
msgstr ""
"Maestrul unei conferințe își trimite informațiile prin intermediul canalului"
" SIP ca un mesaj cu următorul tip de MIME: `application/confInfo+json`"
#: ../../../developer/conference-protocol.md:104
msgid ""
"So, if a call receives some confInfo, we know that this call is a member of "
"a conference."
msgstr ""
"Deci, dacă un apel primeşte informaţii, ştim că apelul este membru al unei "
"conferinţe."
#: ../../../developer/conference-protocol.md:106
msgid ""
"To summarize, `Call` manages received layouts, `Conference`-managed sent "
"layouts."
msgstr ""
"În concluzie, `Call` gestionează layouts primite, `Conference`-managează "
"layouts trimise."
#: ../../../developer/conference-protocol.md:108
msgid "Changing the state of the conference"
msgstr "Schimbarea stării conferinței"
#: ../../../developer/conference-protocol.md:110
msgid ""
"To change the state of the conference, participants needs to send orders "
"that the host will handle."
msgstr ""
"Pentru a schimba starea conferinţei, participanţii trebuie să trimită ordine"
" pe care gazda le va gestiona."
#: ../../../developer/conference-protocol.md:112
msgid "The protocol have the following needs:"
msgstr "Protocolul are următoarele nevoi:"
#: ../../../developer/conference-protocol.md:114
msgid ""
"It should handle orders at multiple levels. In fact for a conference the is "
"3 levels to define a participant:"
msgstr ""
"De fapt, pentru o conferinţă, este nevoie de 3 nivele pentru a defini un "
"participant:"
#: ../../../developer/conference-protocol.md:115
msgid "The account which is the identity of the participant"
msgstr "Contul care reprezintă identitatea participantului"
#: ../../../developer/conference-protocol.md:116
msgid "Devices, because each account can join via multiple devices"
msgstr ""
"Dispozitivele, deoarece fiecare cont poate fi conectat prin mai multe "
"dispozitive"
#: ../../../developer/conference-protocol.md:117
msgid ""
"Medias, because there can be multiple videos by devices (eg 1 camera and 1 "
"screen sharing)"
msgstr ""
"Medii, deoarece pot exista mai multe videoclipuri de către dispozitive (de "
"exemplu, 1 cameră și 1 partajare a ecranului)"
#: ../../../developer/conference-protocol.md:119
msgid ""
"To save bandwidth, clients should be able to send multiple orders at once."
msgstr ""
"Pentru a economisi lățimea de bandă, clienții ar trebui să poată trimite mai"
" multe comenzi simultan."
#: ../../../developer/conference-protocol.md:121
msgid "General actions"
msgstr "Acțiuni generale"
#: ../../../developer/conference-protocol.md:123
msgid ""
"To change a layout, the moderator can send a payload with "
"\"application/confOrder+json\" as type: where **0** is a grid, **1** is one "
"user in big, others in small, **2** is one in big"
msgstr ""
"Pentru a schimba un layout, moderatorul poate trimite o încărcare utile cu "
"\"application/confOrder+json\" ca tip: unde **0** este o grilă, **1** este "
"un utilizator în mare, alții în mic, **2** este unul în mare"
#: ../../../developer/conference-protocol.md:126
msgid "Account's actions"
msgstr "Acțiunile contului"
#: ../../../developer/conference-protocol.md:128
msgid ""
"For now, there is no action supported, however, in the future `moderator: "
"true/false` should be handled to change a moderator."
msgstr ""
"În prezent, nu există nicio acțiune susținută, cu toate acestea, în viitor "
"`moderator: true/false ` ar trebui tratat pentru a schimba un moderator."
#: ../../../developer/conference-protocol.md:130
msgid "Device's actions"
msgstr "Acțiunile dispozitivului"
#: ../../../developer/conference-protocol.md:132
msgid ""
"`hangup: true` to hangup a device from the conference (only moderators)"
msgstr ""
"`hangup: true` pentru a atârna un dispozitiv de la conferință (numai "
"moderatori)"
#: ../../../developer/conference-protocol.md:133
msgid ""
"`raisehand: true/false` to change the raise hand's status. Only doable by "
"the device itself, else dropped."
msgstr ""
"`raisehand: true/false ` pentru a schimba statutul mâinii de ridicare."
#: ../../../developer/conference-protocol.md:135
msgid "Media's actions"
msgstr "Acţiunile mass-mediei"
#: ../../../developer/conference-protocol.md:137
msgid ""
"`muteAudio` only doable by moderators to mute the audio of a participant"
msgstr ""
"„oprește microfonul” poate fi făcut doar de moderatori pentru a dezactiva "
"microfonul unui participant"
#: ../../../developer/conference-protocol.md:138
msgid "`muteVideo` not supported yet."
msgstr "„oprește videocamera” nu este încă disponibil."
#: ../../../developer/conference-protocol.md:139
msgid "`active` to mark the media as active."
msgstr "`active ` pentru a marca media ca fiind activă."
#: ../../../developer/conference-protocol.md:140
msgid ""
"`voiceActivity` to indiciate a media stream's voice activity status (only "
"relevant for audio)"
msgstr ""
"`voiceActivitate ` pentru a indica starea de activitate vocală a unui flux "
"de media (încetat relevant pentru audio)"
#: ../../../developer/conference-protocol.md:142
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Example"
msgstr "Exemplu"
#: ../../../developer/conference-protocol.md:144
msgid "So, the `application/confOrder+json` will contains:"
msgstr "Deci, `applicarea/confOrder+json` va conține:"
#: ../../../developer/conference-protocol.md:169
msgid ""
"Note: the type of the media should be included in conferences informations "
"and can be used for the client to improve display (e.g. do not crop screen "
"sharing)"
msgstr ""
"Notă: tipul de suport de presa trebuie inclus în informațiile conferințelor "
"și poate fi utilizat pentru clientul pentru a îmbunătăți afișarea (de "
"exemplu, nu se reduce partajarea ecranului)"
#: ../../../developer/conference-protocol.md:172
msgid "Controlling moderators"
msgstr "Controlul moderatorilor"
#: ../../../developer/conference-protocol.md:174
msgid "There is actually 3 possibilities:"
msgstr "De fapt, există 3 posibilităţi:"
#: ../../../developer/conference-protocol.md:176
msgid ""
"Changing account's config to add a list of moderators (In the config.yml "
"(`defaultModerators` can contains a list of default moderators)"
msgstr ""
"Configul contului de schimbare pentru a adăuga o listă de moderatori (în "
"config.yml (`defaultModerators` poate conține o listă de moderatori "
"standard)"
#: ../../../developer/conference-protocol.md:177
msgid ""
"If `localModeratorsEnabled` is true, all accounts of the device will be "
"moderators"
msgstr ""
"Dacă `localModeratorsEnabled` este adevărat, toate conturile dispozitivului "
"vor fi moderatori"
#: ../../../developer/conference-protocol.md:178
msgid ""
"If `allModeratorsEnabled` is true, anybody in the conference will be a "
"moderator"
msgstr ""
"Dacă `allModeratorsEnabled` este adevărat, oricine va fi moderator la "
"conferinţă"
#: ../../../developer/conference-protocol.md:183
msgid "Separate streams to allow more controls?"
msgstr "Strume separate pentru a permite mai multe controale?"
#: ../../../developer/conference-protocol.md:185
msgid "Notes/Comments"
msgstr "Notă/Comentare"
#: ../../../developer/conference-protocol.md:186
msgid ""
"It's likely that the protocol will evolve for future needs. I believe it's "
"best if we have a \"version\" field. The older version will be recognized if"
" this field is missing."
msgstr ""
"Este probabil ca protocolul va evolua pentru nevoile viitoare. Cred ca este "
"cel mai bine daca avem un câmp \"versiune\". Versiunea veche va fi "
"recunoscută dacă acest câmp lipsește."
#: ../../../developer/connection-manager.md:1
msgid "The connection manager"
msgstr "Managerul de conexiune"
#: ../../../developer/connection-manager.md:4
#: ../../../developer/file-transfer.md:49 ../../../developer/introduction.md:1
#: ../../../developer/location-sharing.md:42
msgid "Introduction"
msgstr "Introducere"
#: ../../../developer/connection-manager.md:6
msgid ""
"The connection manager is the first piece of the group chat features. This "
"class manages connections to peers and offer to the user multiplexed sockets"
" to devices they want to connect. For example, if Alice wants to be "
"connected to one of Bob's device to transfer 2 files, she will ask the "
"ConnectionManager to open 2 channels (one per file) to Bob. This will give:"
msgstr ""
"Managerul de conexiune este prima piesă a caracteristicilor de chat de grup."
" Această clasă gestionează conexiunile cu colegii și oferă utilizatorului "
"socket-uri multiplexate la dispozitivele pe care doresc să le conecteze. De "
"exemplu, dacă Alice vrea să fie conectată la unul dintre dispozitivele lui "
"Bob pentru a transfera 2 fișiere, ea va cere ConnectionManager să deschidă 2"
" canale (unul pe fișier) pentru Bob."
#: ../../../developer/connection-manager.md:24
msgid ""
"Behind that, the ConnectionManager will first connect to Bob's device via "
"the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a channel, "
"and when the channel is ready, inform Alice via a callback. For the second "
"file, it will use the first socket and will just open a new channel (only "
"needs 2 TLS packet, so it's fast)"
msgstr ""
"În spatele acestui lucru, ConnectionManager va conecta primul la "
"dispozitivul lui Bob prin DHT (prin ICE) și va configura un TLS Socket. "
"Apoi, va cere un canal, iar când canalul este gata, informează Alice prin "
"intermediul unui callback. Pentru al doilea fișier, va folosi prima socket "
"și va deschide un nou canal (necesită doar 2 pachete TLS, așa că este rapid)"
#: ../../../developer/connection-manager.md:26
msgid "DHT side"
msgstr "DHT lateral"
#: ../../../developer/connection-manager.md:28
msgid ""
"It's the same as {doc}`calls`, see **Exchange ICE candidates**, **ICE "
"negotiation**, **Encrypt the control socket** but only in TCP."
msgstr ""
"Este la fel ca {doc}`call`, vezi **Exchange ICE candidate**, **ICE "
"negociere**, **Encrypt socket de control** dar numai în TCP."
#: ../../../developer/connection-manager.md:30
msgid ""
"However, when a side receives a new ICE request, the callback set by ` void "
"onICERequest(onICERequestCallback&& cb);` is triggered."
msgstr ""
"Cu toate acestea, atunci când o parte primește o nouă cerere ICE, se "
"declanșează retragerea de apel stabilită de ` nul "
"onICERequest(onICERequestCallback&&& cb);`."
#: ../../../developer/connection-manager.md:32
msgid "Negotiating a new channel"
msgstr "Negocierea unui nou canal"
#: ../../../developer/connection-manager.md:34
msgid ""
"A channel is defined by an id (unique) and a uri (not unique). For example "
"(1, 'git://*')"
msgstr ""
"Un canal este definit de un id (unic) și un uri (nu unic). De exemplu (1, "
"'git://*')"
#: ../../../developer/connection-manager.md:36
msgid ""
"When ready, the ConnectionManager considers that the channel 0 exists. This "
"channel is called the *CONTROL* channel and is used to ask for new channels."
msgstr ""
"Când este pregătit, ConnectionManager consideră că canalul 0 există. Acest "
"canal se numește canalul *CONTROL* și este folosit pentru a solicita noi "
"canale."
#: ../../../developer/connection-manager.md:38
msgid "The protocol used is pretty simple and looks like the RTP protocol:"
msgstr "Protocolul folosit este destul de simplu şi arată ca protocolul RTP:"
#: ../../../developer/connection-manager.md:40
msgid "16 bits are used to store the length of the body."
msgstr "16 bits sunt folosite pentru a stoca lungimea corpului."
#: ../../../developer/connection-manager.md:41
msgid "16 bits for the channel id (destination)"
msgstr "16 bits pentru identificarea canalului (destinație)"
#: ../../../developer/connection-manager.md:42
msgid "body"
msgstr "corp"
#: ../../../developer/connection-manager.md:44
msgid "So all packets have a 32 bits len header."
msgstr "Deci toate pachetele au un len header de 32 de bituri."
#: ../../../developer/connection-manager.md:46
msgid ""
"To ask for a new channel, the ConnectionManager will send a `ChannelRequest`"
" object (msgpack is used to serialize the struct) in the channel 0 to send "
"the id and the name of the new channel to the peer (with `isAnswer = "
"false`). The peer will call the callback given with ̀ void "
"onChannelRequest(ChannelRequestCallBack&& cb);` and will refuse or accept "
"the request. If accepted, the peer will answer with a ChannelRequest with "
"the same data (and ̀`isAnswer = true`) and then both peers callbacks will be"
" triggered to inform that the ChannelSock is usable."
msgstr ""
"Pentru a solicita un nou canal, ConnectionManager va trimite un obiect "
"`ChannelRequest` (msgpack este folosit pentru a serializa structul) în "
"canalul 0 pentru a trimite ID-ul și numele noului canal către coleg (cu "
"`isAnswer = false`)."
#: ../../../developer/connection-manager.md:48
msgid "Closing a channel"
msgstr "Închiderea unui canal"
#: ../../../developer/connection-manager.md:50
msgid ""
"A *EOF* is transmitted for a channel if the length of the content is 0."
msgstr ""
"O *EOF* este transmisă pentru un canal dacă lungimea conținutului este de 0."
#: ../../../developer/connection-manager.md:52
msgid "Structure of the connectionManager"
msgstr "Structura conexiuniiManager"
#: ../../../developer/connection-manager.md:54
msgid "Ownership"
msgstr "Proprietatea"
#: ../../../developer/connection-manager.md:56
msgid ""
"A JamiAccount owns the ConnectionManager and have access to the "
"ChannelSocket objects (shared_ptr owned with the MultiplexedSocket."
msgstr ""
"Un JamiAccount deține ConnectionManager și are acces la obiecte "
"ChannelSocket (shared_ptr deținut cu MultiplexedSocket."
#: ../../../developer/connection-manager.md:57
msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
msgstr "ConnectionManager deține multiplexedSockets și obiecte ICE"
#: ../../../developer/connection-manager.md:58
msgid ""
"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
msgstr "MultiplexedSockets deține transportul TLS și obiectele ChannelSocket"
#: ../../../developer/connection-manager.md:59
msgid "ChannelSocket owns the data buffers"
msgstr "ChannelSocket deţine buferele de date"
#: ../../../developer/connection-manager.md:61
msgid "Roles"
msgstr "Rolul"
#: ../../../developer/connection-manager.md:63
msgid "ConnectionManager is used to manage connections to peers."
msgstr ""
"ConnectionManager este utilizat pentru a gestiona conexiunile cu colegii."
#: ../../../developer/connection-manager.md:64
msgid ""
"MultiplexedSockets are used to send data over the TLSSocket, read the "
"incoming packets and manage channels."
msgstr ""
"MultiplexedSockets sunt utilizate pentru a trimite date prin TLSSocket, a "
"citi pachetele primite și a gestiona canalele."
#: ../../../developer/connection-manager.md:65
msgid "ChannelSockets are used by the client to interact with the other peer."
msgstr ""
"ChannelSockets sunt folosite de client pentru a interacționa cu celălalt "
"coleg."
#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:620
msgid "Usage"
msgstr "Utilizarea"
#: ../../../developer/connection-manager.md:69
msgid ""
"Scenarios are described in the corresponding unit tests "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
msgstr ""
"Scenariile sunt descrise în testele unitare corespunzătoare "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
#: ../../../developer/contact-management.md:1
msgid "Contact management"
msgstr "Managementul contactului"
#: ../../../developer/contact-management.md:4
msgid ""
"This section will present how to find and add a contact from the DHT to the "
"client. The usage of a name server will not be explained here. If you'd "
"like more details about that, please read {doc}`name-server-protocol`."
msgstr ""
"În această secțiune se va prezenta modul de a găsi și de a adăuga un contact"
" de la DHT la client. Utilizarea unui server de nume nu va fi explicată "
"aici. Dacă doriți mai multe detalii despre asta, vă rugăm să citiți "
"{doc}`name-server-protocol`."
#: ../../../developer/contact-management.md:6
msgid "Presence on the network"
msgstr "Prezența pe rețea"
#: ../../../developer/contact-management.md:8
msgid "Announce the presence on the DHT"
msgstr "Anunţaţi prezenţa pe DHT"
#: ../../../developer/contact-management.md:10
msgid ""
"The presence is pretty simple to announce on the DHT. In fact, it's just a "
"value containing the device hash (see the previous section, {doc}`account-"
"management`) on the hash corresponding to the fingerprint of the key. So, if"
" we have the account `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the "
"device `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined "
"value will be sent over the DHT:"
msgstr ""
"Prezența este destul de simplă de anunțat pe DHT. De fapt, este doar o "
"valoare care conține hash-ul dispozitivului (vezi secțiunea precedentă, "
"{doc}`account-management`) pe hash-ul corespunzător amprentului de deget al "
"cheii. Deci, dacă avem contul `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` cu "
"dispozitivul `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, următoarea valoare "
"definită va fi trimisă prin DHT:"
#: ../../../developer/contact-management.md:29
msgid ""
"(This value can be put with `dht_.put(h, VALUE, dht::DoneCallback{}, {}, "
"true);`, as a permanent put). If the device is announced, the device is "
"present. For now, there is no way to delete or edit a value on the DHT (this"
" will come when OpenDHT will supports ECC). So, the presence always have a "
"delay for now (mean delay: expire-time/2, so 2min30 for now)."
msgstr ""
"(Această valoare poate fi pusă cu `dht_.put(h, VALUE, dht::DoneCallback{}, "
"{}, true);`, ca put permanent). Dacă dispozitivul este anunțat, dispozitivul"
" este prezent. Pentru moment, nu există nici o modalitate de a șterge sau "
"edita o valoare pe DHT (aceasta va veni când OpenDHT va susține ECC)."
#: ../../../developer/contact-management.md:31
msgid "Get if a contact is present"
msgstr "Dacă e vreun contact, să-l anunţăm."
#: ../../../developer/contact-management.md:33
msgid ""
"Now our presence on the network, it's time to get if somebody is present on "
"the DHT. With the previous section, it's easy to do the reverse process. To "
"know if somebody is present on the DHT (ex: "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9`), we have to get value at "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` and retrieve the "
"`DeviceAnnouncement` on this hash. The related code in the ring daemon is in"
" `ringaccount.cpp`:"
msgstr ""
"Acum prezența noastră pe rețea, este timpul să obținem dacă cineva este "
"prezent pe DHT. Cu secțiunea precedentă, este ușor să facem procesul invers."
" Pentru a ști dacă cineva este prezent pe DHT (ex: "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9b9b0000), trebuie să obținem valoarea la"
" `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b90000 și să recuperăm "
"`DeviceAnunțarea ` pe acest hash. Codul aferent în demonul de inel este în "
"`ccount.cpp`:"
#: ../../../developer/contact-management.md:66
msgid "And that's all."
msgstr "Şi asta e tot."
#: ../../../developer/contact-management.md:68
msgid "Client perspective"
msgstr ""
#: ../../../developer/contact-management.md:139
msgid ""
"Are the main APIs for clients. `subscribeBuddy` will listen on the DHT to "
"detect presence changes and `newBuddyNotification` will be sent whenever a "
"new status is detected:"
msgstr ""
#: ../../../developer/contact-management.md:140
msgid ""
"The status sent to the client is now 0=offline (no device found on the DHT),"
" 1=dht_presence (at least a device is found on the DHT), 2=connected (with a"
" TCP + SIP channel, so ready to exchange data)."
msgstr ""
#: ../../../developer/contact-management.md:141
msgid ""
"`lineStatus` will contain any custom status sent by the peer (e.g. *Lunch "
"Time!*)"
msgstr ""
#: ../../../developer/contact-management.md:143
msgid ""
"`publish` is used for publishing a custom note (`status` is ignored for Jami"
" accounts, note will contain the custom status)."
msgstr ""
#: ../../../developer/contact-management.md:145
msgid "RFC3863 is used to send status over the SIP connection."
msgstr ""
#: ../../../developer/contact-management.md:147
msgid "Pending request"
msgstr "Cerere în curs de executare"
#: ../../../developer/contact-management.md:149
msgid "Send a request"
msgstr "Trimite o cerere"
#: ../../../developer/contact-management.md:151
msgid "**TODO craft request**"
msgstr "** Cererea de navă TODO**"
#: ../../../developer/contact-management.md:153
msgid ""
"Finally, once the trust request is crafted, we can push the request to the "
"following hash: `InfoHash(\"inbox:\" + deviceId)`"
msgstr ""
"În cele din urmă, odată ce solicitarea de încredere este elaborată, putem "
"împinge cererea în următorul hash: `InfoHash(\"inbox:\" + deviceId) `"
#: ../../../developer/contact-management.md:155
msgid "The following code is used in the daemon:"
msgstr "În daemon se utilizează următorul cod:"
#: ../../../developer/contact-management.md:160
msgid "Receiving a request"
msgstr "Primirea unei cereri"
#: ../../../developer/contact-management.md:164
msgid "(Accept/Block/Discard)"
msgstr "(Accept/bloc/disculp)"
#: ../../../developer/contact-management.md:166
msgid "Daemon API"
msgstr "API-ul de serviciu"
#: ../../../developer/contact-management.md:168
msgid ""
"All methods to follow the presence of a buddy is located in the "
"`PresenceManager` such as:"
msgstr ""
"Toate metodele de urmărire a prezenței unui prieten se află în "
"`PresenceManager`, cum ar fi:"
#: ../../../developer/contact-management.md:199
msgid ""
"All methods and signals used to manage trust requests and contacts are in "
"the `ConfigurationManager` such as:"
msgstr ""
"Toate metodele și semnalele utilizate pentru gestionarea cererilor de "
"încredere și a contacților se află în `ConfigurationManager`, cum ar fi:"
#: ../../../developer/contact-management.md:291
msgid ""
"If you want some examples, these methods are used into `contactmodel.cpp` in"
" LRC."
msgstr ""
"Dacă doriţi câteva exemple, aceste metode sunt utilizate în "
"`contactmodel.cpp` în LRC."
#: ../../../developer/debugging-tools.rst:2
msgid "Debugging Tools"
msgstr "Instrumente de debugging"
#: ../../../developer/debugging-tools.rst:4
msgid ""
"There are several ways to debug Jami from a developer perspective, depending"
" on what you want to debug."
msgstr ""
"Există mai multe modalități de a debug Jami din perspectiva dezvoltatorului,"
" în funcție de ceea ce doriți să debug."
#: ../../../developer/debugging-tools.rst:7
msgid "Loggers"
msgstr "Albișoare"
#: ../../../developer/debugging-tools.rst:9
msgid ""
"The first way is to use runtime loggers. Starting `jami` with `-d` will "
"enable logging by the deamon (or the Troubleshoot section in the General "
"settings). Because Jami uses several libraries, we do not enable all logs by"
" default. But you can pass some environment variables to show it:"
msgstr ""
"Primul mod este de a folosi logger-uri de timp de rulare. Începând cu `jami`"
" cu `-d` va permite înregistrarea prin deamon (sau secțiunea de rezolvare a "
"problemei în setările generale). Deoarece Jami folosește mai multe "
"biblioteci, nu activăm toate logurile prin default. Dar puteți trece unele "
"variabile de mediu pentru a o arăta:"
#: ../../../developer/debugging-tools.rst:13
msgid "`SIPLOGLEVEL=5` for enabling logs from PJSIP."
msgstr "`SIPLOGLEVEL=5` pentru a permite logurile din PJSIP."
#: ../../../developer/debugging-tools.rst:14
msgid "`DHTLOGLEVEL=5` for enabling logs from OpenDHT."
msgstr "`DHTLOGLEVEL=5` pentru a permite înregistrările de la OpenDHT."
#: ../../../developer/debugging-tools.rst:15
msgid "`AVLOGLEVEL=50` for enabling logs from ffmpeg."
msgstr "`AVLOGLEVEL=50` pentru a permite logurile de la ffmpeg."
#: ../../../developer/debugging-tools.rst:18
msgid "Debuggers"
msgstr "Debugger"
#: ../../../developer/debugging-tools.rst:20
msgid ""
"Generally your IDE has an embedded debuggger. Else, you can use `gdb` for "
"example to be able to add breakpoints, backtraces from crashes, print "
"internal structures, etc. You need to compile the project in *DEBUG* mode to"
" get debug symbols."
msgstr ""
"În general, IDE-ul dvs. are un debugger integrat. Altfel, puteți folosi "
"`gdb`, de exemplu, pentru a putea adăuga puncte de ruptură, retrase de la "
"accidente, structuri interne de tipărire, etc. Trebuie să compilezi "
"proiectul în modul *DEBUG* pentru a obține simboluri de debugging."
#: ../../../developer/debugging-tools.rst:24
msgid "Some useful commands:"
msgstr "Câteva comenzi utile:"
#: ../../../developer/debugging-tools.rst:26
msgid ""
"`b file.cpp:line` - Add a breakpoint (*file.cpp:line* can be replaced by a "
"symbol)"
msgstr ""
"`b file.cpp:line` - Adăugați un punct de rupere (*file.cpp:line* poate fi "
"înlocuit cu un simbol)"
#: ../../../developer/debugging-tools.rst:27
msgid "`t a a bt` - (thread apply all backtrace) to get all backtraces"
msgstr ""
"`t a a bt` - (filament aplicat toate retrogradarea) pentru a obține toate "
"retrogradarea"
#: ../../../developer/debugging-tools.rst:28
msgid "`Ctrl + X / A` - pass in graphical view"
msgstr "`Ctrl + X / A` - trecere în vizualizare grafică"
#: ../../../developer/debugging-tools.rst:29
msgid "`p` - print an internal value."
msgstr "`p` - imprimează o valoare internă."
#: ../../../developer/debugging-tools.rst:32
msgid "Profilers"
msgstr "Profiluri"
#: ../../../developer/debugging-tools.rst:34
msgid ""
"Debuggers are useful, but they do not show real-time memory "
"consumption/network activity/CPU usage. For this, you can use the embedded "
"profiler in your IDE (from Android Studio or Qt Creator/Visual Studio for "
"example)."
msgstr ""
"Debugger-urile sunt utile, dar nu arată consumul de memorie/activitatea "
"rețelei/utilizarea CPU în timp real. Pentru aceasta, puteți folosi profilul "
"încorporat în IDE (de exemplu, de la Android Studio sau Qt Creator/Visual "
"Studio)."
#: ../../../developer/debugging-tools.rst:39
msgid "Address Sanitizer"
msgstr "Adresa de sanitizare"
#: ../../../developer/debugging-tools.rst:41
msgid ""
"This can be useful to detect leaks, crashes, potential deadlocks at runtime."
" To enable this, you can compile the daemon with "
"`CXXFLAGS+=\"-fsanitize=address\"`. Other flags like `tsan` may be useful."
msgstr ""
"Acest lucru poate fi util pentru a detecta scurgeri, accidente, blocuri "
"impuse potențiale în timpul de rulare. Pentru a permite acest lucru, puteți "
"compila daemonul cu `CXXFLAGS+=\"-fsanitize=address\"`. Alte steaguri precum"
" `tsan` pot fi utile."
#: ../../../developer/debugging-tools.rst:45
msgid "Valgrind/Callgrind"
msgstr "Valgrind/Callgrind"
#: ../../../developer/debugging-tools.rst:47
msgid ""
"Valgrind is a tool to watch allocations, CPU usage and more and can be used "
"via: `valgrind --tool=callgrind ./jami -d`. This will make the application "
"very slow but can provide useful reports about memory allocation/performance"
" usage (**KCacheGrind** can be used to read reports)."
msgstr ""
"Valgrind este un instrument de monitorizare a alocărilor, utilizării CPU și "
"altele și poate fi utilizat prin: `valgrind --tool=callgrind./jami -d`. "
"Acest lucru va face ca aplicația să fie foarte lentă, dar poate oferi "
"rapoarte utile despre alocarea memoriei / utilizarea performanței "
"(**KCacheGrind** poate fi folosit pentru a citi rapoarte)."
#: ../../../developer/debugging-tools.rst:52
msgid "Tests"
msgstr "Testuri"
#: ../../../developer/debugging-tools.rst:54
msgid ""
"Daemon has many tests and coverage enabled. If the daemon is built in static"
" (else private symbols will not be available), adding new tests can help to "
"reproduce bugs, solve bugs and avoid any regression. (cf. "
"`daemon/tests/unitTests``)"
msgstr ""
"Daemon are multe teste și acoperire activată. Dacă daemonul este construit "
"în static (alt simboluri private nu vor fi disponibile), adăugarea de noi "
"teste poate ajuta la reproducerea bugurilor, rezolvarea bugurilor și "
"evitarea oricărei regresii."
#: ../../../developer/debugging-tools.rst:59
msgid "Agent"
msgstr "Agentul."
#: ../../../developer/debugging-tools.rst:61
msgid ""
"Tests are only using one daemon to simulate both peers. So it can be "
"difficult to test in various environments. Another possibility is to write a"
" scenario and run an agent (documentation is available in the daemon's "
"repository)."
msgstr ""
"Testurile folosesc doar un singur daemon pentru a simula ambele perechi. "
"Deci, poate fi dificil să se testeze în diferite medii. O altă posibilitate "
"este să se scrie un scenariu și să se rula un agent (documentarea este "
"disponibilă în repository-ul daemon-ului)."
#: ../../../developer/debugging-tools.rst:66
msgid "LTTng"
msgstr "LTTng"
#: ../../../developer/debugging-tools.rst:68
msgid ""
"Finally, tracepoints can be created and analyzed. `daemon/tools/trace` "
"provide the documentation and some examples. The advantage of LTTng is that "
"it is quicker than logs, can be triggered by system events and can be used "
"with tracepoints already present in the kernel (so that it can be used with "
"tracepoints from network interfaces)."
msgstr ""
"În cele din urmă, se pot crea și analiza puncte de urmărire. "
"`daemon/tools/trace` oferă documentația și câteva exemple. Avantajul LTTng "
"este că este mai rapid decât jurnalurile, poate fi declanșat de evenimente "
"ale sistemului și poate fi utilizat cu puncte de urmărire deja prezente în "
"kernel (de aceea poate fi utilizat cu puncte de urmărire din interfețele de "
"rețea)."
#: ../../../developer/delivery-status.md:1
msgid "Synchronization of delivery status"
msgstr ""
#: ../../../developer/delivery-status.md:3
msgid ""
"When we send a message to a conversation, the delivery status must be "
"explicit and understandable for the end user. So, Jami must offer the "
"possibility to know if the message was delivered to the other members of a "
"conversation and synchronize this status (sent and displayed) across "
"devices."
msgstr ""
#: ../../../developer/delivery-status.md:5
msgid "How it works (backend)"
msgstr ""
#: ../../../developer/delivery-status.md:7
msgid ""
"The status of messages is stored in the conversation layer via the variable "
"`messagesStatus (map<string, map<string, string>)` with the following "
"structure:"
msgstr ""
#: ../../../developer/delivery-status.md:19
msgid ""
"The `fetch` status is the commitId of the last message fetched by the "
"member. The `fetched_ts` is the timestamp of the last message fetched by the"
" member. The `read` status is the commitId of the last message read by the "
"member. The `read_ts` is the timestamp of the last message read by the "
"member."
msgstr ""
#: ../../../developer/delivery-status.md:21
msgid ""
"When a member fetches a message, the `fetch` status is updated with the "
"commitId of the message and the `fetched_ts` is updated with the timestamp "
"of the message. When a member reads a message, the `read` status is updated "
"with the commitId of the message and the `read_ts` is updated with the "
"timestamp of the message. This information is synced across devices and "
"other devices will update their internal structure if the timestamp is "
"newer."
msgstr ""
#: ../../../developer/delivery-status.md:23
msgid "This information is stored in `conversation_data/xxxxxxxxx/status`."
msgstr ""
#: ../../../developer/delivery-status.md:25
msgid "Client API"
msgstr ""
#: ../../../developer/delivery-status.md:27
msgid ""
"The client should get status from the current **SwarmMessage** structure "
"when loading conversation and update the status via "
"`AccountMessageStatusChanged`. In `AccountMessageStatusChanged` the client "
"will have the commitId, peer uri and new status. So, this will correspond to"
" `message.status[uri]`."
msgstr ""
#: ../../../developer/delivery-status.md:30
msgid "SwarmMessage's status structure is:"
msgstr ""
#: ../../../developer/delivery-status.md:39
msgid ""
"Where `uri` is the peer uri and `status` is the status of the message for "
"this peer (from the `MessageStates` enum)."
msgstr ""
#: ../../../developer/delivery-status.md:41
msgid ""
"When sending a new message, the `status` map can be empty (because no one "
"fetched). By default, if there is no fetch/read information for a message, "
"the message MUST be considered as sending. The global status of a message is"
" the maximum of the status of all members except ourselves. For example, if "
"Alice sends a message and we have:"
msgstr ""
#: ../../../developer/delivery-status.md:48
msgid "The global status is `sent`."
msgstr ""
#: ../../../developer/delivery-status.md:50
msgid "Notes for client"
msgstr ""
#: ../../../developer/delivery-status.md:52
msgid ""
"If the client wants to show which message is the last read message for a "
"member, they must check the index when responding to "
"`AccountMessageStatusChanged`. Because this signal can emit that a previous "
"message is displayed later."
msgstr ""
#: ../../../developer/delivery-status.md:53
msgid ""
"The status of a message can be used to create a detailed view of who "
"received/displayed a specific message. However, timestamps of those events "
"are not stored, because this would represent too much data."
msgstr ""
#: ../../../developer/design-process.md:1
msgid "Design Process"
msgstr ""
#: ../../../developer/design-process.md:6
msgid ""
"Client: The person who is paying for the feature (and can be the PO because "
"it's a R&D project)"
msgstr ""
#: ../../../developer/design-process.md:8
#: ../../../developer/file-transfer.md:59
msgid "Process"
msgstr "Procesul"
#: ../../../developer/design-process.md:10
msgid "Ideas:"
msgstr ""
#: ../../../developer/design-process.md:11
msgid "The **client** come with a new Idea"
msgstr ""
#: ../../../developer/design-process.md:12
msgid "Ask for justifications:"
msgstr ""
#: ../../../developer/design-process.md:14
msgid "Who (user definitions)"
msgstr ""
#: ../../../developer/design-process.md:15
msgid "Why do we want this feature"
msgstr ""
#: ../../../developer/design-process.md:16
msgid "When do we want this feature"
msgstr ""
#: ../../../developer/design-process.md:17
msgid "Where do we want this feature (platforms)"
msgstr ""
#: ../../../developer/design-process.md:18
msgid "Priority"
msgstr ""
#: ../../../developer/design-process.md:19
msgid "Decide if we want or not this feature, Yes/No"
msgstr ""
#: ../../../developer/design-process.md:20
msgid "If yes, Brainstorming"
msgstr ""
#: ../../../developer/design-process.md:21
msgid "Should be the max of person (users/tech/**client**)"
msgstr ""
#: ../../../developer/design-process.md:22
msgid ""
"Produce a brief of the feature (User Story, Details from step 2, Notes from "
"Step 4.) => Meta ticket on GitLab"
msgstr ""
#: ../../../developer/design-process.md:23
msgid "Create UX Wireframe"
msgstr ""
#: ../../../developer/design-process.md:24
#: ../../../developer/design-process.md:27
msgid "Validation (user/technical/**client**) Yes/No"
msgstr ""
#: ../../../developer/design-process.md:25
msgid "If no, return to step 6."
msgstr ""
#: ../../../developer/design-process.md:26
msgid "If validated, POC (Adobe XD/Figma)"
msgstr ""
#: ../../../developer/design-process.md:28
msgid "If no, return to step 9."
msgstr ""
#: ../../../developer/design-process.md:29
msgid ""
"Create sub-tickets (GitLab) with design specification, resources evaluation "
"(time/resource)"
msgstr ""
#: ../../../developer/design-process.md:30
msgid "Prioritize or stop the process (too much time needed)"
msgstr ""
#: ../../../developer/design-process.md:31
msgid "Develop"
msgstr ""
#: ../../../developer/design-process.md:32
msgid "Validate implementation (Design + **client**) - YES/No"
msgstr ""
#: ../../../developer/design-process.md:33
msgid "If no return to 12."
msgstr ""
#: ../../../developer/design-process.md:34
msgid "If validated merge and release!"
msgstr ""
#: ../../../developer/drt.rst:2
msgid "Dynamic Routing Table (DRT)"
msgstr ""
#: ../../../developer/drt.rst:4
msgid ""
"The DRT is a novel concept utilized in swarm technology to maintain peer-to-"
"peer (P2P) connections. In this approach, group members establish a graph of"
" nodes, each identified by a unique hash, and these nodes must be "
"interconnected."
msgstr ""
#: ../../../developer/drt.rst:6
msgid ""
"Therefore, we require a structural framework that accomplishes the following"
" objectives:"
msgstr ""
#: ../../../developer/drt.rst:8
msgid "Maximizes the number of connected nodes at all times."
msgstr ""
#: ../../../developer/drt.rst:9
msgid "Minimizes message transmission times."
msgstr ""
#: ../../../developer/drt.rst:10
msgid "Reduces the number of links between peers."
msgstr ""
#: ../../../developer/drt.rst:11
msgid "Requires minimal computational resources."
msgstr ""
#: ../../../developer/drt.rst:13
msgid "Several solutions have been proposed to achieve these goals:"
msgstr ""
#: ../../../developer/drt.rst:15
msgid ""
"Each node is connected to the next node, resulting in only 'N' connections. "
"However, this approach is not efficient for transmitting messages since the "
"message must traverse all peers one by one."
msgstr ""
#: ../../../developer/drt.rst:16
msgid ""
"Every node is connected to all other nodes, leading to 'N x N' connections. "
"This configuration is effective for message transmission but demands more "
"resources. **This option will be selected for the first version.**"
msgstr ""
#: ../../../developer/drt.rst:17
msgid ""
"An alternative solution is presented in the paper titled [*Maximizing the "
"Coverage of Roadmap Graph for Optimal Motion "
"Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/), which"
" offers optimal motion planning coverage but necessitates significant "
"computational calculations."
msgstr ""
#: ../../../developer/drt.rst:18
msgid ""
"Utilizing the DHT (Distributed Hash Table) algorithm for the routing table, "
"which effectively addresses all four points and is already employed by Jami "
"in their UDP implementation."
msgstr ""
#: ../../../developer/drt.rst:20
msgid ""
"Additionally, to optimize the number of sockets, a socket will be allocated "
"by a **ConnectionManager** to enable multiplexing sockets with a specific "
"hash. This means that if there is a need to transmit multiple files and "
"engage in a chat with someone, only one socket will be utilized."
msgstr ""
#: ../../../developer/drt.rst:25
msgid "**Notations:**"
msgstr ""
#: ../../../developer/drt.rst:27
msgid "`n`: Node identifier"
msgstr ""
#: ../../../developer/drt.rst:28
msgid "`N`: Number of nodes in the network"
msgstr ""
#: ../../../developer/drt.rst:29
msgid "`b`: Configuration parameter"
msgstr ""
#: ../../../developer/drt.rst:31
msgid "**Terms and Concepts:**"
msgstr ""
#: ../../../developer/drt.rst:33
msgid ""
"**Mobile Node**: Some devices in the network can establish dynamic "
"connectivity, allowing them to quickly connect and disconnect to optimize "
"battery usage. Instead of maintaining a dedicated peer-to-peer socket with "
"these devices, the protocol opts to use existing sockets if available or "
"relies on push notifications to transmit information. These nodes are marked"
" with a dedicated flag in the protocol."
msgstr ""
#: ../../../developer/drt.rst:35
msgid ""
"**Bucket**: This class is used to manipulate and store connections and to "
"manage the state of nodes (connecting, known, mobile). Known nodes are used "
"when the connection with a node goes offline."
msgstr ""
#: ../../../developer/drt.rst:37
msgid ""
"**Routing Table**: It is employed to organize buckets, enabling the search "
"for nearest nodes and establishing the link between the swarm manager and "
"the DRT (Distributed Routing Table)."
msgstr ""
#: ../../../developer/drt.rst:39
msgid ""
"**Swarm Manager**: This component is responsible for managing the internal "
"logic and overseeing the distribution of connections within the network."
msgstr ""
#: ../../../developer/drt.rst:41
msgid ""
"**Swarm Protocol**: It is used for data exchange between peers. The "
"following types of data can be exchanged:"
msgstr ""
#: ../../../developer/drt.rst:43
msgid "Request (e.g., FIND): Query | num | nodeId"
msgstr ""
#: ../../../developer/drt.rst:44
msgid "Response (e.g., FOUND): Query | nodes | mobileNodes"
msgstr ""
#: ../../../developer/drt.rst:45
msgid "Message: Version | isMobile | Request or Response"
msgstr ""
#: ../../../developer/drt.rst:49
msgid "Algorithms comparison"
msgstr ""
#: ../../../developer/drt.rst:52
msgid "Chord"
msgstr ""
#: ../../../developer/drt.rst:54
msgid ""
"In a Chord network, each node is associated with a unique key computed using"
" either SHA-1 or MD5 hash functions. The nodes are organized into a ring in "
"increasing order, and each node maintains a routing table that stores "
"information about its nearest nodes. Each entry `i` in the routing table "
"contains nodes with keys such that :math:`hash = (n + 2i - 1) mod 2^m`, "
"where `m` represents the number of bits in the key."
msgstr ""
#: ../../../developer/drt.rst:56
msgid ""
"Every node is aware of its successors and predecessors in the Chord network."
msgstr ""
#: ../../../developer/drt.rst:58
msgid ""
"To retrieve data, a node sends a request to its immediate successor. If the "
"node possesses the required key, it responds; otherwise, it forwards the "
"request to its own successor."
msgstr ""
#: ../../../developer/drt.rst:60
msgid ""
"When adding a new node to the network, the node broadcasts messages to other"
" nodes to update their routing tables and ensure proper integration."
msgstr ""
#: ../../../developer/drt.rst:62
msgid ""
"If a node goes offline, it must update its routing table to reroute traffic "
"through other available nodes."
msgstr ""
#: ../../../developer/drt.rst:64
msgid "The distance between two nodes is: :math:`d(n1,n2,) = (n1-n2) mod 2b``"
msgstr ""
#: ../../../developer/drt.rst:67
msgid "The routing table size is: :math:`log{N}`"
msgstr ""
#: ../../../developer/drt.rst:70
msgid "The number of hops to get a value is: :math:`log{N}`"
msgstr ""
#: ../../../developer/drt.rst:73
msgid ""
"Sources: (Stoica, Morris, Karger, Kaashoek & Balakrishnan, 2001). (Liben-"
"Nowell, Balakrishnan & Karger, 2002)."
msgstr ""
#: ../../../developer/drt.rst:79
msgid "Pastry"
msgstr ""
#: ../../../developer/drt.rst:81
msgid ""
"In a Pastry network, each node is associated with a 128-bit identifier "
"generated from a hashing function. Pastry is commonly used with IP "
"addresses, and nodes are organized in a ring with increasing order. The "
"routing table is divided into segments, typically determined by :math:`128 /"
" 2b`, where :math:`b` is typically set to 4, and IP addresses are placed "
"within these segments."
msgstr ""
#: ../../../developer/drt.rst:83
msgid ""
"When a message needs to be transmitted to a leaf node, it is sent directly "
"to the intended recipient. If the message is not intended for a leaf node, "
"the network attempts to locate the nearest node and forwards the data to "
"that node for further transmission."
msgstr ""
#: ../../../developer/drt.rst:85
msgid "Distance is: :math:`d(n1,n2,) = (prefix(n1) - prefix(n2)) mod 2b`"
msgstr ""
#: ../../../developer/drt.rst:88
msgid "Size of the routing table: :math:`(2b - 1)log{_2}{N}`"
msgstr ""
#: ../../../developer/drt.rst:91
msgid "Number of hops to get a value: :math:`log{_2}{N}`"
msgstr ""
#: ../../../developer/drt.rst:94
msgid "where b is generally 2."
msgstr ""
#: ../../../developer/drt.rst:96
msgid "Sources: Tirée de Castro, Druschel, Hu, Rowstron (2002, p.3)21"
msgstr ""
#: ../../../developer/drt.rst:100
msgid "Kademlia"
msgstr ""
#: ../../../developer/drt.rst:102
msgid ""
"This algorithm is used by BitTorrent and Ethereum. In this scheme, each node"
" is assigned a 160-bit identifier, and nodes can be organized in a ring with"
" increasing order. Data is stored in the nearest nodes. However, the routing"
" table employs a binary tree structure with k-buckets (where k represents "
"the number of nodes in each bucket) to store information about the nearest "
"nodes."
msgstr ""
#: ../../../developer/drt.rst:104
msgid ""
"When a node connects to the DHT (Distributed Hash Table), it attempts to "
"populate the routing table by inserting discovered nodes into appropriate "
"buckets. If a bucket becomes full, a node may be ignored if it is too "
"distant; however, if the bucket represents the nearest available, it will be"
" split into two to accommodate the new node. When a new node is added, its "
"routing table is queried to obtain information about the nearest nodes."
msgstr ""
#: ../../../developer/drt.rst:106
msgid ""
"To retrieve a specific value, a node sends a request to the nearest node "
"with the corresponding hash."
msgstr ""
#: ../../../developer/drt.rst:108
msgid "Distance is :math:`d(n1, n2,) = n1 XOR n2`"
msgstr ""
#: ../../../developer/drt.rst:111
msgid "Size of the routing table: :math:`K \\times log{_2}{N}`"
msgstr ""
#: ../../../developer/drt.rst:114
msgid "Number of hops: :math:`log{_2}{N}`"
msgstr ""
#: ../../../developer/drt.rst:117
msgid "where b is generally 1."
msgstr ""
#: ../../../developer/drt.rst:122
msgid ""
"When starting Jami, every conversation initiates the creation of its routing"
" table. The initial step is to establish contact with a first node to begin "
"synchronization with other nodes. This process is known as \"bootstrapping\""
" and consists of two main parts."
msgstr ""
#: ../../../developer/drt.rst:124
msgid ""
"The first part involves retrieving all known devices in a conversation. This"
" is accomplished by checking for known certificates in the repository or "
"verifying the presence of certain members on the DHT (Distributed Hash "
"Table). If a TCP connection already exists with any device in the "
"conversation, it will be utilized. Additionally, known nodes are injected "
"into the routing table."
msgstr ""
#: ../../../developer/drt.rst:126
msgid ""
"The routing table is subsequently updated whenever an event occurs on a "
"node."
msgstr ""
#: ../../../developer/drt.rst:128
msgid ""
"During routing table updates, the component will attempt to establish "
"connections with new nodes if necessary. The decision to connect to new "
"nodes is determined by the following conditions: - For the nearest bucket, a"
" connection attempt is made if :math:`(maxSize(Bucket) - connected nodes - "
"connecting nodes) > 0`. - For other buckets, a connection is initiated if "
":math:`(maxSize(Bucket) - connecting nodes) > 0`."
msgstr ""
#: ../../../developer/drt.rst:132
msgid ""
"The distinction lies in the fact that, in the case of the nearest bucket, "
"the goal is to attempt to split buckets if required while compensating for "
"disconnections in other buckets. This is essential to maintain knowledge of "
"the nearest nodes."
msgstr ""
#: ../../../developer/drt.rst:134
msgid ""
"Upon connecting to a new node, a \"FIND\" request is sent to discover new "
"identifiers nearby and identify all mobile nodes. Subsequently, a \"FIND\" "
"request is sent every ten minutes to keep the routing table up to date."
msgstr ""
#: ../../../developer/drt.rst:136
msgid ""
"The primary class responsible for this process in the codebase is "
"`SwarmManager`, and the bootstrapping phase is handled within the "
"conversation's section."
msgstr ""
#: ../../../developer/drt.rst-1
msgid "Global architecture"
msgstr ""
#: ../../../developer/drt.rst:147
msgid "Perfomance analysis"
msgstr ""
#: ../../../developer/drt.rst:150
msgid "Tools"
msgstr ""
#: ../../../developer/drt.rst:152
msgid ""
"To validate the implementation and performance of the DRT component, we have"
" developed several tools located in `daemon/tests/unitTest/swarm`, including"
" `swarm_spread`, `bootstrap`, and more."
msgstr ""
#: ../../../developer/drt.rst:154
msgid "To interpret the results, we utilize the following tools:"
msgstr ""
#: ../../../developer/drt.rst:156
msgid "`gcov` for test coverage analysis."
msgstr ""
#: ../../../developer/drt.rst:157
msgid "`ASan` to check for memory leaks and heap overflows."
msgstr ""
#: ../../../developer/drt.rst:158
msgid "`gdb` for debugging internal structures."
msgstr ""
#: ../../../developer/drt.rst:160
msgid ""
"While the major focus is on unit tests, for performance analysis, we rely on"
" `swarm_spread` to assess various aspects, including:"
msgstr ""
#: ../../../developer/drt.rst:162
msgid "The number of hops required for message transmission."
msgstr ""
#: ../../../developer/drt.rst:163
msgid "The number of messages received per node."
msgstr ""
#: ../../../developer/drt.rst:164
msgid "Determining the maximum and minimum messages received by each node."
msgstr ""
#: ../../../developer/drt.rst:165
msgid "Calculating the iterations needed to transmit a message to all nodes."
msgstr ""
#: ../../../developer/drt.rst:166
msgid "Measuring message reception times."
msgstr ""
#: ../../../developer/drt.rst:169
msgid "Results"
msgstr "Rezultate"
#: ../../../developer/drt.rst-1
msgid "Number of iterations to send a message"
msgstr ""
#: ../../../developer/drt.rst-1
msgid "Routing table size"
msgstr ""
#: ../../../developer/drt.rst:181
msgid "Future work"
msgstr ""
#: ../../../developer/drt.rst:183
msgid ""
"Dynamic bucket size limit to get different bucket size depending on how "
"large is the routing table"
msgstr ""
#: ../../../developer/drt.rst:184
msgid "Declining some connections to speed-up the transmission a bit"
msgstr ""
#: ../../../developer/feature-requests.md:1
msgid "Feature requests"
msgstr "Cereri de caracteristici"
#: ../../../developer/feature-requests.md:4
msgid ""
"This page exists to classify feature requests per users' feedback, to avoid "
"leaving tickets open for years. Under construction, will sort the tickets."
msgstr ""
"Această pagină există pentru a clasifica cererile de caracteristici pe "
"feedback-ul utilizatorilor, pentru a evita să lase bilete deschise timp de "
"ani."
#: ../../../developer/feature-requests.md:8
msgid "SFL"
msgstr "SFL"
#: ../../../developer/feature-requests.md:10
msgid ""
"{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`"
" -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress"
msgstr ""
"{daemon-issue}`Implementarea de fire de conducte <13> pentru a sprijini "
"partajarea ecranului pe Wayland` -> Contact #Jami (Adrien, Sébastien, etc.) "
"/ hard / În curs de desfășurare"
#: ../../../developer/feature-requests.md:12
msgid "Connectivity -> Contact #Jami (Sébastien) / medium:"
msgstr "Conectivitate -> Contact #Jami (Sébastien) / mediu:"
#: ../../../developer/feature-requests.md:13
msgid "TURN ipv6 support"
msgstr "Suport de tip TURN ipv6"
#: ../../../developer/feature-requests.md:14
msgid "connection ipv6 only<->ipv4 only"
msgstr "conexiune ipv6 numai<->ipv4 numai"
#: ../../../developer/feature-requests.md:15
msgid "SIP:"
msgstr "SIP:"
#: ../../../developer/feature-requests.md:16
msgid "Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy"
msgstr "Fix IP-ul la IP -> Contactați #Jami (Adrien, Sébastien) / ușor"
#: ../../../developer/feature-requests.md:17
msgid "Add unit-tests / probably easy"
msgstr "Adăugați teste unitare / probabil ușor"
#: ../../../developer/feature-requests.md:18
msgid ""
"Search in system contacts ({client-gnome-issue}`1191`, {client-gnome-"
"issue}`829`, etc.) -> Contact #Jami (Adrien, Sébastien, Andreas, etc.) / "
"easy but long"
msgstr ""
"Căutare în contactele de sistem ({client-gnome-issues}`1191`, {client-gnome-"
"issues}`829`, etc.) -> Contact #Jami (Adrien, Sébastien, Andreas, etc.) / "
"ușor dar lung"
#: ../../../developer/feature-requests.md:21
msgid "Crypto: (Contact #Jami - Adrien)"
msgstr "Crypto: (contact #Jami - Adrien)"
#: ../../../developer/feature-requests.md:22
msgid "Update media RTP ciphers for ffmpeg / probably easy"
msgstr "Actualizează cripturile RTP pentru ffmpeg / probabil uşor"
#: ../../../developer/feature-requests.md:23
msgid "Support ECC (instead RSA) for Jami accounts / hard but short"
msgstr "Suport ECC (în loc de RSA) pentru conturile Jami / greu dar scurt"
#: ../../../developer/feature-requests.md:24
msgid "Remove usages of SHA1 (ids + git) / hard"
msgstr "Îndepărtați utilizările SHA1 (ids + git) / hard"
#: ../../../developer/feature-requests.md:25
msgid "Media -> Contact #Jami (Adrien, Andreas, etc.)"
msgstr "Media -> Contact #Jami (Adrien, Andreas, etc.)"
#: ../../../developer/feature-requests.md:26
msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard"
msgstr "{daemon-issues}`POC pentru AV1 suport <27>` / probabil greu"
#: ../../../developer/feature-requests.md:27
msgid "Investigate audio quality (contact #Jami, medium difficulty)"
msgstr "Investigați calitatea audio (contact #Jami, dificultate medie)"
#: ../../../developer/feature-requests.md:28
msgid "Plugins ideas: (Contact #Jami - Aline)"
msgstr "Idei de plugin: (contact #Jami - Aline)"
#: ../../../developer/feature-requests.md:29
msgid "{plugins-issue}`Payment plug-in <27>`"
msgstr "Plug-in de plată"
#: ../../../developer/feature-requests.md:30
msgid "A chat-GPT plugin"
msgstr "Un plugin de chat-GPT"
#: ../../../developer/feature-requests.md:31
msgid "Add new transports (e.g. QUIC?)"
msgstr "Adăugarea de noi transporturi (de exemplu, QUIC?)"
#: ../../../developer/feature-requests.md:32
msgid "Add libtorrent support?"
msgstr "Să adaugăm un suport libtorant?"
#: ../../../developer/feature-requests.md:33
msgid ""
"Public page/personal blog available through Jami (Contact #Jami / medium "
"difficulty & long term project)"
msgstr ""
"Pagina publică/blog personal disponibil prin intermediul Jami (Contact #Jami"
" / dificultate medie & proiect pe termen lung)"
#: ../../../developer/feature-requests.md:35
msgid "Qt:"
msgstr "Ct:"
#: ../../../developer/feature-requests.md:36
msgid ""
"{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - "
"easy)"
msgstr ""
"{client-qt-issue}`Adăugați suport pentru descoperirea de colegi<868>` "
"(contact #Jami - ușor)"
#: ../../../developer/feature-requests.md:37
msgid ""
"Emoji as a native component to avoid depending on qt-webengine for this (not"
" available on macOS) (e.g. https://github.com/jnodev/QMLemoji)"
msgstr ""
"Emoji ca componentă nativă pentru a evita dependența de qt-webengine pentru "
"acest lucru (nu este disponibil pe macOS) (de exemplu "
"https://github.com/jnodev/QMLemoji)"
#: ../../../developer/feature-requests.md:39
msgid ""
"Categorized conversations (like favorites, groups, etc) (to discuss with "
"#Jami)"
msgstr ""
"Conversații categorizate (cum ar fi preferatele, grupurile, etc.) (pentru a "
"discuta cu #Jami)"
#: ../../../developer/feature-requests.md:40
msgid "jami-web:"
msgstr "jami-web:"
#: ../../../developer/feature-requests.md:41
msgid ""
"Design architecture to support calls between jami-web and desktop versions "
"-> Contact #Jami (Adrien, Sébastien) / hard"
msgstr ""
"Arhitectura de proiectare pentru a susține apelurile între versiunile jami-"
"web și desktop -> Contact #Jami (Adrien, Sébastien) / hard"
#: ../../../developer/feature-requests.md:44
msgid ""
"Help for the Roadmap 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
msgstr ""
"Ajutorul pentru Harta de drum 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
#: ../../../developer/feature-requests.md:46
msgid "Some other ideas from tickets:"
msgstr "Alte idei din bilete:"
#: ../../../developer/feature-requests.md:48
msgid "Planned/In progress"
msgstr "Planificate/în curs de desfășurare"
#: ../../../developer/feature-requests.md:50
msgid ""
"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact Rennes"
msgstr ""
"Îmbunătăţirea Jami pe Yocto (unora dintre problemele cu codecurile/în "
"întârziere pe i.MX 6) -> Contactați-vă cu Rennes"
#: ../../../developer/feature-requests.md:52
msgid ""
"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> Contact #Jami (Andreas)"
msgstr ""
"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> Contactați #Jami (Andreas)"
#: ../../../developer/feature-requests.md:54
msgid "Redo emoji-picker with native component"
msgstr "Redo emoji-picker cu componentă nativă"
#: ../../../developer/feature-requests.md:55
msgid "Implement designs from Charlotte"
msgstr "Desenele de implementare de la Charlotte"
#: ../../../developer/feature-requests.md:56
msgid "Help for swarms (Sébastien)"
msgstr "Ajutorul pentru ciorapii (Sébastien)"
#: ../../../developer/feature-requests.md:57
msgid ""
"{gerrit-project}`jami-web`; because installing an app can be boring. Joining"
" a conference via a link can be cool. For now, nobody is working on it."
msgstr "Pentru că instalarea unei aplicații poate fi plictisitoare."
#: ../../../developer/feature-requests.md:61
msgid "Wanted but not planned"
msgstr "Vândut, dar nu planificat"
#: ../../../developer/feature-requests.md:63
#: ../../../developer/feature-requests.md:93
msgid "?"
msgstr "- Nu ştiu."
#: ../../../developer/feature-requests.md:65
msgid ""
"Can be implemented, contributions welcome (or will take months/years to "
"come)"
msgstr ""
"Pot fi implementate, contribuțiile sunt binevenite (sau vor dura luni/ ani)"
#: ../../../developer/feature-requests.md:67
msgid ""
"{project-issue}`add possibility to show \"reachable at the following times\""
" (contact details) <1261>`"
msgstr ""
"{proiect-issue}`adă posibilitatea de a arăta \"accesibile în următoarele "
"ore\" (detalii de contact) <1261>`"
#: ../../../developer/feature-requests.md:69
msgid ""
"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
"ringtone) <1280>`"
msgstr ""
"{proiect-problema}`Preferințele pe contact (permite apeluri, transfer de "
"fișiere, sunet personalizat) <1280>`"
#: ../../../developer/feature-requests.md:71
msgid ""
"{project-issue}`Ability to create polls (ideally a plugin with swarm) "
"<1254>`"
msgstr ""
"{proiect-cutie}`Capacitatea de a crea sondaje (ideal un plugin cu zgar) "
"<1254>`"
#: ../../../developer/feature-requests.md:73
msgid "{project-issue}`Support for Panic buttons <623>`"
msgstr "{proiect-problema}`Suport pentru butoanele de panică <623>`"
#: ../../../developer/feature-requests.md:74
msgid "Matrix bridge"
msgstr "Podul Matrix"
#: ../../../developer/feature-requests.md:75
msgid ""
"Full TOR support or other alternatives such as lokinet ({project-"
"issue}`922`, {project-issue}`622`, {project-issue}`495`), {project-"
"issue}`i2p <630>`"
msgstr ""
"Suport complet TOR sau alte alternative cum ar fi lokinet ({proiect-"
"materie}`922`, {proiect-materie}`622`, {proiect-materie}`495`), {proiect-"
"materie}`i2p <630>`"
#: ../../../developer/feature-requests.md:78
msgid "{project-issue}`Bluetooth support <774>`"
msgstr "{proiect-problema}`Suport Bluetooth <774>`"
#: ../../../developer/feature-requests.md:79
msgid "{project-issue}`Secret-based turn server <886>`"
msgstr "{proiect-problema}`Secret-based turn server <886>`"
#: ../../../developer/feature-requests.md:80
msgid "{client-android-issue}`Ability to compress files before sending <720>`"
msgstr ""
"{client-android-issue}`Capacitatea de a comprima fișiere înainte de a "
"trimite <720>`"
#: ../../../developer/feature-requests.md:82
msgid "Ability to trim recorded clips before sending"
msgstr "Abilitatea de a trimite clipuri înregistrate înainte de a fi trimise"
#: ../../../developer/feature-requests.md:83
msgid "{client-gnome-issue}`Spell checking support <1169>`"
msgstr "{client-gnome-issue}`Spell verificare suport <1169>`"
#: ../../../developer/feature-requests.md:84
msgid "{project-issue}`Echo bot to test audio <392>`"
msgstr "Echo bot pentru a testa audio"
#: ../../../developer/feature-requests.md:85
msgid ""
"{project-issue}`Handle click on jami:uri system wide (missing "
"macOS/Android/iOS) <653>`"
msgstr ""
"{proiect-edit}`Clic manual pe jami:uri sistem în întregime (mancă "
"macOS/Android/iOS) <653>`"
#: ../../../developer/feature-requests.md:86
msgid ""
"{project-issue}`Initial audio mode <1288>` (need to wait for group chat)"
msgstr ""
"{proiect-problema}`Modus audio inițial <1288>` (trebuie să așteptăm chatul "
"de grup)"
#: ../../../developer/feature-requests.md:88
msgid "{project-issue}`Feature Request: Volume Slider <1524>`"
msgstr "{proiect-edit}`Cerință de caracteristică: Volumul de curent <1524>`"
#: ../../../developer/feature-requests.md:89
msgid "{client-qt-issue}`Portable version for Windows <170>`"
msgstr "{client-qt-issue}`Versiunea portabilă pentru Windows <170>`"
#: ../../../developer/feature-requests.md:91
msgid "Depends on mass changes"
msgstr "Depinde de modificările de masă"
#: ../../../developer/feature-requests.md:95
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:59
msgid "Packaging"
msgstr "ambalaje"
#: ../../../developer/feature-requests.md:97
msgid "{client-gnome-issue}`FreeBSD support <1272>`"
msgstr ""
"În plus, în cazul în care un client nu este în stare să își facă "
"cunoștințele, trebuie să fie prezentat un raport de referință."
#: ../../../developer/feature-requests.md:99
msgid "Others"
msgstr "Alții"
#: ../../../developer/feature-requests.md:101
msgid "{project-issue}`Collaborative editor <1010>`"
msgstr "{proiect-edit}`Editor colaborativ <1010>`"
#: ../../../developer/feature-requests.md:102
msgid "{project-issue}`A thunderbird plugin <516>`"
msgstr "Un plugin de \"Tondrebird\""
#: ../../../developer/feature-requests.md:103
msgid "{project-issue}`OpenAlias <928>`"
msgstr "{proiect-issue}`OpenAlias <928>`"
#: ../../../developer/feature-requests.md:104
msgid "{project-issue}`CMIS integration <455>`"
msgstr "{proiect-problema}`CMIS integrare <455>`"
#: ../../../developer/feature-requests.md:105
msgid "{project-issue}`Sound safety <441>`"
msgstr "{proiect-problema}`Safete de sunet <441>`"
#: ../../../developer/feature-requests.md:106
msgid ""
"{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
msgstr ""
"{client-gnome-issue}`Capacitatea de a vedea mai multe discuții în același "
"timp <909>`"
#: ../../../developer/feature-requests.md:107
msgid "{client-gnome-issue}`Vocoder option <957>`"
msgstr "{client-gnome-issue}`Vocoder opțiune <957>`"
#: ../../../developer/feature-requests.md:108
msgid "{project-issue}`SOCKS5 support <430>`"
msgstr "{proiect-issue}`SOCKS5 sprijin <430>`"
#: ../../../developer/feature-requests.md:109
msgid "{project-issue}`Cardbook integration <383>`"
msgstr "{proiect-issue}`Integrarea cărţilor de credit <383>`"
#: ../../../developer/feature-requests.md:110
msgid "{project-issue}`Multiple instances running <629>`"
msgstr "{proiect-issue}`Multiple instante care funcționează <629>`"
#: ../../../developer/feature-requests.md:111
msgid "{daemon-issue}`Whiteboard <181>`"
msgstr ""
#: ../../../developer/feature-requests.md:112
msgid "{client-android-issue}`Camera zoom <979#note_29386>`"
msgstr "{client-android-problem}`Camera zoom <979#note_29386>`"
#: ../../../developer/feature-requests.md:113
msgid "{client-qt-issue}`Emoji reaction in calls <497>`"
msgstr "Reacţia emoji în apeluri"
#: ../../../developer/feature-requests.md:114
msgid "{client-android-issue}`Conversation's background <710>`"
msgstr "{client-android-issue}`Conversatia <710>`"
#: ../../../developer/feature-requests.md:115
msgid "{project-issue}`[Desktop] Option to have a Window per Chat <633>`"
msgstr ""
"{proiect-problema}`[Desktop] Opțiunea de a avea o fereastră pe Chat <633>`"
#: ../../../developer/feature-requests.md:116
msgid "{project-issue}`Multiple text selection <1096>`"
msgstr "{proiect-edit}`Selecția de text multiple <1096>`"
#: ../../../developer/feature-requests.md:117
msgid "{project-issue}`In-app sticker pack creation <1317>`"
msgstr "{proiect-issue}`In-app crearea de pachete de stickers <1317>`"
#: ../../../developer/feature-requests.md:118
msgid "{project-issue}`Re-order messages <1357>`"
msgstr "{proiect-issue}`Reordonarea mesajelor <1357>`"
#: ../../../developer/feature-requests.md:119
msgid "{daemon-issue}`Remote control <349>`"
msgstr "{daemon-issue}`Controlul de la distanță <349>`"
#: ../../../developer/feature-requests.md:120
msgid ""
"{client-android-issue}`Locked messages (feature that can be enabled to hide "
"messages until they are clicked upon) <1146>`"
msgstr ""
"{client-android-issue}`Messages blocked (fecțiune care poate fi activată "
"pentru a ascunde mesajele până când sunt făcute clic pe ele) <1146>`"
#: ../../../developer/feature-requests.md:121
msgid ""
"{client-qt-issue}`selecting one or multiple messages and delete them just "
"for the user doing so <1188>`"
msgstr ""
#: ../../../developer/feature-requests.md:122
msgid ""
"{client-qt-issue}`Drag and drop files from chatview and send to other "
"contacts <485>`"
msgstr ""
#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:397
#: ../../../developer/swarm.md:667
msgid "File transfer"
msgstr "Transfer de fişiere"
#: ../../../developer/file-transfer.md:4
msgid "**THIS PAGE IS DEPRECATED: READ {ref}`developer/swarm:File transfer`**"
msgstr ""
"**ACESA PAJĂ SĂ DEPRECATĂ: CITEște {ref}` dezvoltator/grop:Transfer de "
"fișiere`**"
#: ../../../developer/file-transfer.md:7
#: ../../../developer/location-sharing.md:4
msgid "How to use it?"
msgstr "Cum să-l folosesc?"
#: ../../../developer/file-transfer.md:10
#: ../../../developer/release-process.md:111
msgid "Gnome"
msgstr "Gnome"
#: ../../../developer/file-transfer.md:12
msgid ""
"For sending a file on gnome, in a conversation you need to click to the send"
" file icon at the bottom right of the conversation:"
msgstr ""
"Pentru a trimite un fișier pe gnome, într-o conversație trebuie să faceți "
"clic pe icona trimite fișier în partea de jos dreaptă a conversației:"
#: ../../../developer/file-transfer.md:15
msgid ""
"![Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
msgstr ""
"! [Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
#: ../../../developer/file-transfer.md:15
msgid "Gnome_send_file"
msgstr "Gnome_send_file"
#: ../../../developer/file-transfer.md:17
msgid ""
"Then you will see your image as soon as the transfer is finished (and show "
"images is activated)"
msgstr ""
"Apoi veți vedea imaginea dvs. de îndată ce transferul este finalizat (și "
"afișarea imagini este activată)"
#: ../../../developer/file-transfer.md:20
msgid ""
"![Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
msgstr ""
"! [Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
#: ../../../developer/file-transfer.md:20
msgid "Gnome_image"
msgstr "Gnome_image"
#: ../../../developer/file-transfer.md:22
msgid ""
"On the contrary if you receive a file (and if it's not a picture &lt; 20 "
"Mb), you will have to accept the transfer:"
msgstr ""
"În schimb, dacă primești un fișier (și dacă nu este o imagine &lt; 20 Mb), "
"va trebui să accepți transferul:"
#: ../../../developer/file-transfer.md:25
msgid ""
"![Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)"
msgstr ""
"! [Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbb654e4e7e3f8e47/Gnome_accept.png)"
#: ../../../developer/file-transfer.md:25
msgid "Gnome_accept"
msgstr "Gnome_accept"
#: ../../../developer/file-transfer.md:27
msgid ""
"And then the file will be sent. You have the possibility to cancel in a "
"middle of a transfer."
msgstr ""
"Apoi fişierul va fi trimis, şi aveţi posibilitatea de a anula în mijlocul "
"transferului."
#: ../../../developer/file-transfer.md:30
msgid ""
"![Gnome_ongoing](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)"
msgstr ""
"! [Gnome_ongoing](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)"
#: ../../../developer/file-transfer.md:30
msgid "Gnome_ongoing"
msgstr "Gnome_continuing"
#: ../../../developer/file-transfer.md:32
msgid "Android"
msgstr "Android"
#: ../../../developer/file-transfer.md:34
msgid ""
"When you are talking to somebody on Android, you have the possibility to "
"send a picture on your device or take a photo with these buttons:"
msgstr ""
"Când vorbești cu cineva pe Android, ai posibilitatea de a trimite o imagine "
"pe dispozitivul tău sau de a face o fotografie cu aceste butoane:"
#: ../../../developer/file-transfer.md:37
msgid ""
"![Android_file_buttons](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/d68472b2c7bfcc616b0c674c9c7a8fed/Android_file_buttons.png)"
msgstr ""
"! [buttonuri de fișiere Android_c0674c9c7a8fed/Android_file_button.png)"
#: ../../../developer/file-transfer.md:37
msgid "Android_file_buttons"
msgstr "Butonuri Android_file_button"
#: ../../../developer/file-transfer.md:39
msgid ""
"Note: when you send a file, the other has to accept it. At this moment you "
"will see 'awaiting peer':"
msgstr "Notă: când trimiteți un fișier, celălalt trebuie să accepte."
#: ../../../developer/file-transfer.md:42
msgid ""
"![Android_awaiting_peer](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/56f0316c945ca243448668ae9091b1de/Android_awaiting_peer.png)"
msgstr ""
"! [Android_waiting_peer](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/56f0316c945ca243448668ae9091b1de/Android_waiting_peer.png)"
#: ../../../developer/file-transfer.md:42
msgid "Android_awaiting_peer"
msgstr "Android_waiting_peer"
#: ../../../developer/file-transfer.md:44
#: ../../../developer/location-sharing.md:39
msgid "How it works? (technical)"
msgstr "Cum funcţionează?"
#: ../../../developer/file-transfer.md:47
msgid "How it works"
msgstr "Cum funcţionează"
#: ../../../developer/file-transfer.md:51
msgid ""
"Jami is a distributed application and has to work without any internet "
"connectivity. So, file transfer too! Basically, we use the same method to "
"perform file transfer and calls, but in TCP. To summarize how it works, we "
"can imagine a situation where Alice (A) wants to transfer a file to Bob (B)."
msgstr ""
"Jami este o aplicație distribuită și trebuie să funcționeze fără nicio "
"conectivitate la internet. Deci, transferul de fișiere, de asemenea!"
#: ../../../developer/file-transfer.md:53
msgid ""
"First, Alice will request a connection to Bob. To do that, Jami is using ICE"
" (RFC 6544), a protocol used to negotiate links between peers. Alice will "
"send, into an encrypted packet via the DHT the ip of its device. So, when "
"Bob receives the ips of Alice, they will be able to negotiate a transport "
"where Bob will be able to send packets to Alice. The negotiation can be "
"successful, but if it fails, a TURN server will be used (the one configured "
"into the settings) to perform the transfer. If the negotiation succeeds, Bob"
" will send its ips to Alice to perform the negotiation in the other "
"direction. Note that the link is still not secure, so Bob will send the ips "
"through the DHT in an encrypted message. If the second negotiation fails, "
"the TURN will be used as a fallback."
msgstr ""
"Pentru a face acest lucru, Jami folosește ICE (RFC 6544), un protocol "
"folosit pentru a negocia legăturile între colegi. Alice va trimite, într-un "
"pachet criptat prin intermediul DHT, IP-ul dispozitivului său. Deci, când "
"Bob primește IP-urile lui Alice, ei vor putea negocia un transport în care "
"Bob va putea trimite pachete către Alice. Negocierea poate fi de succes, dar"
" dacă nu reușește, un server TURN va fi utilizat (cel configurat în setări) "
"pentru a efectua transferul. Dacă negocierea are succes, Bob își va trimite "
"IP-urile către Alice pentru a efectua negocierea în altă direcție. Notăți-vă"
" că linkul nu este încă trimis, astfel încât Bob va trimite IP-urile "
"securizate prin DHT într-un mesaj criptat. Dacă a doua negociere nu "
"reușește, TURN va fi folosită ca un backlink."
#: ../../../developer/file-transfer.md:55
msgid ""
"Now that the bidirectionnal TCP link is here, the next step will be to "
"negotiate a TLS 1.3 (generally a (TLS1.3)-(DHE-FFDHE8192)-(RSA-PSS-RSAE-"
"SHA384)-(AES-256-GCM) when I write these lines) between Alice an Bob, then "
"Alice will start to transfer the file."
msgstr ""
"Acum că linkul TCP bidirecțional este aici, următorul pas va fi să negociez "
"un TLS 1.3 (în general un (TLS1.3) - ((DHE-FFDHE8192) - ((RSA-PSS-RSAE-"
"SHA384) - ((AES-256-GCM) când scriu aceste linii) între Alice și Bob, apoi "
"Alice va începe să transfere fișierul."
#: ../../../developer/file-transfer.md:57
msgid ""
"The first part will be a small header to describe the content of the file. "
"Then, after Bob accepts the transfer, the full file will be transmitted."
msgstr ""
"Prima parte va fi o mică intitulare pentru a descrie conținutul fișierului."
#: ../../../developer/file-transfer.md:61
msgid "Sending a file"
msgstr "Trimite un fişier"
#: ../../../developer/file-transfer.md:63
msgid "The following method is used:"
msgstr "Se utilizează următoarea metodă:"
#: ../../../developer/file-transfer.md:65
msgid ""
"1\\. A client will call `DataTransferFacade::sendFile()`. "
"`DataTransferFacade` is the class corresponding to the API exposed for the "
"clients. It is used to manage a view of the file transfers (the "
"corresponding classes are `DataTransfer`, `IncomingFileTransfer`, "
"`OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will ask "
"the linked `JamiAccount` to request a connection."
msgstr ""
"1\\. Un client va suna `DataTransferFacade::sendFile() `. "
"`DataTransferFacade` este clasa corespunzătoare API-ului expus pentru "
"clienți. Este folosit pentru a gestiona o viziune a transferurilor de "
"fișiere (clasele corespunzătoare sunt `DataTransfer`, "
"`IncomingFileTransfer`, `OutgoingFileTransfer` și "
"`SubOutgoingFileTransfer`)."
#: ../../../developer/file-transfer.md:67
msgid ""
"![Diagram: DataTransfer class diagram]images/file-transfer-datatransfer-"
"class-diagram.png)"
msgstr ""
"![Diagram: Diagram de clasă de transfer de date]images/file-transfer-"
"dataatransfer-class-diagram.png)"
#: ../../../developer/file-transfer.md:69
msgid ""
"2\\. The method `DhtPeerConnector: requestConnection()` is triggered and "
"creates a connection between all connected devices of the peer (found on the"
" DHT). `DhtPeerConnector` is used to manage the main event loop which manage"
" connections. When a device is found, the *event loop* will create a "
"`ClientConnector` (which manage the connection for one device) and launch "
"the `process()` method."
msgstr ""
"2\\. Metodul `DhtPeerConnector: requestConnection() ` este activat și "
"creează o conexiune între toate dispozitivele conectate ale unui peer (găsit"
" pe DHT). `DhtPeerConnector ` este utilizat pentru a gestiona bucla "
"principală de evenimente care gestionează conexiunile."
#: ../../../developer/file-transfer.md:71
msgid ""
"3\\. This method is used to initialize the ICE transport and put a "
"*PeerConnectionMsg* (which contains the SDP message, see below) on the DHT "
"and waits for a response (`DhtPeerConnector::Impl::onResponseMsg`)."
msgstr ""
"3\\. Această metodă este utilizată pentru inițialarea transportului ICE și "
"pentru a pune un *PeerConnectionMsg* (care conține mesajul SDP, vezi mai "
"jos) pe DHT și așteaptă un răspuns "
"(`DhtPeerConnector::Impl::onResponseMsg`)."
#: ../../../developer/file-transfer.md:73
msgid ""
"4\\. Then a response is received from the DHT, which contains public "
"addresses of the peer device. We can now negotiate a TLS link (directly via "
"ICE, or via TURN as a fallback). This `TlsSocketEndpoint` is given to the "
"`PeerConnection` object as an output and the transfer can start."
msgstr ""
"4\\. Apoi, un răspuns este primit de la DHT, care conține adrese publice ale"
" dispozitivului peer. Acum putem negocia o legătură TLS (direct prin ICE sau"
" prin TURN ca un back-back). Acest `TlsSocketEndpoint` este dat obiectului "
"`PeerConnection ` ca o ieșire și transferul poate începe."
#: ../../../developer/file-transfer.md:75
msgid ""
"5.\\ When the TLS socket is ready, the callback "
"`DataTransferFacade::Impl::onConnectionRequestReply` is called, and a "
"`OutgoingFileTransfer` is linked to the `PeerConnection` as an input. This "
"`OutgoingFileTransfer` contains a list of `SubOutgoingFileTransfer` (one per"
" device) where each sub transfer is a transfer to one device. We do that to "
"be able to furnish the most optimistic view of the transfer (if a contact as"
" 3 devices, where the contact cancel the transfer on one device, but "
"accepted the transfer on the two others, the most advanced transfer will be "
"shown)."
msgstr ""
"5.\\ Când socketul TLS este gata, se numește callback "
"`DataTransferFacade::Impl::onConnectionRequestReply`, iar un "
"`OutgoingFileTransfer` este legat de `PeerConnection` ca intrare. Acest "
"`OutgoingFileTransfer` conține o listă de `SubOutgoingFileTransfer` (unul pe"
" dispozitiv), unde fiecare sub-transfer este un transfer către un "
"dispozitiv. Făcem acest lucru pentru a putea oferi o viziune optimistă a "
"transferului (dacă un contact este de 3 dispozitive, unde contactul anulează"
" transferul pe un dispozitiv, dar acceptă transferul pe celelalte două, va "
"fi afișat cel mai avansat transfer)."
#: ../../../developer/file-transfer.md:77
msgid ""
"6\\. The `SubOutgoingFileTransfer` will first transfer the header of the "
"file, wait the peer acceptance (A \"GO\\n\" message on the socket) and then "
"will send the file."
msgstr ""
"6\\. `SubOutgoingFileTransfer` va transfera mai întâi însușirea fișierului, "
"va aștepta acceptarea de către colegi (un mesaj \"GO\\n\" pe socket) și apoi"
" va trimite fișierul."
#: ../../../developer/file-transfer.md:79
msgid ""
"7\\. If a cancel is received from the peer or the client or if the file "
"transfer finish, the connection will be closed via a `CANCEL` message on the"
" `DhtPeerConnector::eventLoop()` and the resources will be released."
msgstr ""
"7\\. Dacă se primește o anulare de la peer sau client sau dacă transferul de"
" fișiere se termină, conexiunea se va închide printr-un mesaj `CANCEL` pe "
"`DhtPeerConnector::eventLoop() ` și resursele vor fi eliberate."
#: ../../../developer/file-transfer.md:81
msgid ""
"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
msgstr ""
"! [TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
#: ../../../developer/file-transfer.md:81
msgid "TLSsocketEndpoint"
msgstr "TLSsocketEndpoint"
#: ../../../developer/file-transfer.md:83
msgid "Receiving a file"
msgstr "Primirea unui dosar"
#: ../../../developer/file-transfer.md:86
msgid ""
"The same structure is used to receive files, but the method changes a bit:"
msgstr ""
"Aceeași structură este folosită pentru a primi fișiere, dar metoda se "
"schimbă puțin:"
#: ../../../developer/file-transfer.md:88
msgid ""
"The `JamiAccount` class is used to receives messages from the DHT, because "
"the first thing received will be the DHT request."
msgstr ""
"Clasa `JamiAccount` este utilizată pentru a primi mesaje de la DHT, deoarece"
" primul lucru primit va fi cererea DHT."
#: ../../../developer/file-transfer.md:89
msgid ""
"Then, this message is given to `DhtPeerConnector: onRequestMessage()` "
"through the eventLoop."
msgstr ""
"Apoi, acest mesaj este transmis `DhtPeerConnector: onRequestMessage() ` prin"
" eventLoop."
#: ../../../developer/file-transfer.md:90
msgid ""
"The `DhtPeerConnector::Impl::answerToRequest` will try to connect to the "
"TURN server (if not connected) and initialize the ICE transport. This method"
" open 2 control connections to a TURN server (one to authorize IPv4 peers, "
"another one for IPv6 peers, due to **RFC 6156**) if it's not already open "
"and permit Peer public addresses to connect. Then, if the SDP received "
"doesn't contains ICE candidates, will use the TURN and craft the SDP answer "
"to wait for the peer. If the SDP contains ICE candidates, the method will "
"try to negotiate the link (or fallback on the TURN) and then answer the SDP "
"(with ICE candidates or not)."
msgstr ""
"`DhtPeerConnector::Impl::answerToRequest` va încerca să se conecteze la "
"serverul TURN (dacă nu este conectat) și să inițieze transportul ICE. "
"Această metodă va deschide 2 conexiuni de control la un server TURN (unul "
"pentru a autoriza colegii IPv4, altul pentru colegii IPv6, datorită **RFC "
"6156**) dacă nu este deja deschis și va permite adreselor publice peer să se"
" conecteze. Apoi, dacă SDP primită nu conține candidați ICE, va folosi TURN "
"și va crea răspunsul SDP pentru a aștepta peerul. Dacă SDP conține candidați"
" ICE, metoda va încerca să negocieze legătura (sau să se retragă pe TURN) și"
" apoi să răspundă la SDP (cu candidați ICE sau nu)."
#: ../../../developer/file-transfer.md:91
msgid ""
"Once the links are ready, like the sender, a TLS link is negotiated and "
"given to the `PeerConnection` given to the `IncomingFileTransfer` as an "
"input. The headers of the file will come and the client is now able to "
"accept or cancel the transfer."
msgstr ""
"Odată ce link-urile sunt gata, ca și expeditorul, un link TLS este negociat "
"și dat `PeerConnection` dat `IncomingFileTransfer` ca intrare."
#: ../../../developer/file-transfer.md:93
msgid "Re-ask for a previous file transfer"
msgstr "Re- solicită un transfer de fișiere anterior"
#: ../../../developer/file-transfer.md:95
msgid ""
"As specified in {ref}`developer/swarm:Other mime types`, the data-transfer "
"interactions are now synced and stored into conversations. So, a device can "
"easily detects if a file was downloaded or not. If not, it can asks all "
"members in the conversation to transmits the file again."
msgstr ""
"După cum se specifică în {ref}`developer/swarm:Other mime types`, "
"interacțiunile de transfer de date sunt acum sincronizate și stocate în "
"conversații. Astfel, un dispozitiv poate detecta cu ușurință dacă un fișier "
"a fost descărcat sau nu. În caz contrar, poate cere tuturor membrilor "
"conversației să transfere din nou fișierul."
#: ../../../developer/file-transfer.md:97
msgid ""
"To do this, the device will send a json with the mime-type: "
"`application/data-transfer-request+json` containing `conversation` (the "
"conversation's id), `interaction` (related interaction), `deviceId` the "
"device receiving the file."
msgstr ""
"Pentru a face acest lucru, dispozitivul va trimite un json cu tipul de mime:"
" `application/data-transfer-request+json` care conține `conversation` (id "
"conversației), `interaction` (interacție legată), `deviceId` dispozitivul "
"care primește fișierul."
#: ../../../developer/file-transfer.md:99
msgid ""
"The sender now checks if the device is a device from the announced peer and "
"that the device is a member of the conversation, and can sends the file via "
"a classic file transfer."
msgstr ""
"Însă trimiteul verifică dacă dispozitivul este un dispozitiv de la "
"partenerul anunțat și dacă dispozitivul este membru al conversației și poate"
" trimite fișierul printr-un transfer de fișiere clasic."
#: ../../../developer/file-transfer.md:101
msgid ""
"The receiver can now accepts the first incoming transfer, download the file "
"and verify that the sha3sum is correct."
msgstr ""
"Receptorul poate accepta acum primul transfer de intrare, descărca fișierul "
"și verifica că sha3sum este corect."
#: ../../../developer/file-transfer.md:103
msgid "Schema"
msgstr "Schema"
#: ../../../developer/file-transfer.md:105
msgid ""
"![Diagram: main schema diagram](images/file-transfer-main-schema-"
"diagram.png)"
msgstr ""
"! [Diagram: principal diagramă de schemă](images/file-transfer-main-schema-"
"diagram.png)"
#: ../../../developer/file-transfer.md:105
msgid "Diagram: main schema diagram"
msgstr "Diagram: diagramă principală de schemă"
#: ../../../developer/file-transfer.md:107
msgid "SDP sent over the DHT"
msgstr "SDP trimis prin DHT"
#: ../../../developer/file-transfer.md:123
msgid ""
"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password of"
" the ICE session. `2130706431` and `1694498815` are the priority of the "
"candidates. `192.168.0.126 42751 typ host tcptype passive` is a passive host"
" candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype passive` a "
"passive host reflecting the public ip (mapped via UPnP for example)."
msgstr ""
"În cazul în care `0d04b932` este ufrag și `7c33834e7cf944bf0e367b47` parola "
"sesiunii ICE. `2130706431` și `1694498815` sunt prioritatea candidaților. "
"`192.168.0.126 42751 tip de gazda tcptype pasiv` este un gazda pasiv "
"candidat și `1694498815 X.X.X.X 42751 tip srflx tcptype pasiv` un gazda "
"pasiv care reflectă publicul ip (mapați prin UPnP de exemplu)."
#: ../../../developer/file-transfer.md:125
msgid "PJSIP related patches."
msgstr "Patch-uri legate de PJSIP."
#: ../../../developer/file-transfer.md:127
msgid "3 patches will be included into the PJSIP project:"
msgstr "În cadrul proiectului PJSIP vor fi incluse 3 patch-uri:"
#: ../../../developer/file-transfer.md:129
msgid ""
"RFC 6062, used to perform TURN over TCP (merged upstream: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
msgstr ""
"RFC 6062, utilizat pentru efectuarea TURN pe TCP (fuse în aval: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
#: ../../../developer/file-transfer.md:130
msgid "RFC 6544, used to perform ICE over TCP"
msgstr "RFC 6544, utilizat pentru efectuarea ICE pe TCP"
#: ../../../developer/file-transfer.md:131
msgid "A fix for pj_activesock"
msgstr "O fixare pentru pj_activesock"
#: ../../../developer/file-transfer.md:133
msgid "Note that the stack for the file transfer is:"
msgstr "Notă că stacul pentru transferul de fișiere este:"
#: ../../../developer/file-transfer.md:145
msgid "Multi devices"
msgstr "Dispozitive multiple"
#: ../../../developer/file-transfer.md:147
msgid ""
"A RING user can link its account to several devices. So, we need to "
"implement the transfer when a user send a file to a contact who have "
"multiple devices linked to this account."
msgstr ""
"Un utilizator RING poate lega contul său cu mai multe dispozitive. Deci, "
"trebuie să implementăm transferul atunci când un utilizator trimite un "
"fișier unui contact care are mai multe dispozitive legate de acest cont."
#: ../../../developer/file-transfer.md:151
msgid "First approach"
msgstr "Primul abordare"
#: ../../../developer/file-transfer.md:153
msgid ""
"The first approach was to send a request through the DHT to all devices and "
"the first devices which answers get the file to transfer. This is bad for "
"your contact because they will not know which device will receives will get "
"the transfer."
msgstr ""
"Prima abordare a fost să trimiteți o cerere prin DHT către toate "
"dispozitivele și primele dispozitive care răspund primesc fișierul de "
"transfer."
#: ../../../developer/file-transfer.md:158
msgid "Current approach"
msgstr "Abordarea actuală"
#: ../../../developer/file-transfer.md:160
msgid ""
"Now, we still send a request to all devices. The difference is that all "
"devices will have the notification for receiving a file and can "
"accept/refuse the transfer. The major part of the code for that is in "
"*data\\_transfer.cpp*."
msgstr ""
"Acum, încă trimitem o cerere la toate dispozitivele. Diferența este că toate"
" dispozitivele vor avea notificarea pentru primirea unui fișier și pot "
"accepta/refuza transferul."
#: ../../../developer/file-transfer.md:165
msgid ""
"Now (since <https://gerrit-ring.savoirfairelinux.com/#/c/9327/>), when a "
"user send a file, it will request a *PeerConnection* with all peer devices. "
"And for all connections, we attach a new input stream to have the ability to"
" accept/refuse/cancel each transfer separately."
msgstr ""
"Acum (din moment ce <https://gerrit-ring.savoirfairelinux.com/#/c/9327/>), "
"când un utilizator trimite un fișier, va solicita o *PeerConnection* cu "
"toate dispozitivele peer."
#: ../../../developer/file-transfer.md:170
msgid ""
"In *data\\_transfer.cpp* we define the *OptimisticMetaOutgoingInfo* class "
"which represent the optimistic view to show to the client. It's optimistic "
"because if a contact accept a transfer on one device and refuse on others, "
"this class will show the ongoing file transfer. And it will only show an "
"error if all devices refuse the transfer."
msgstr ""
"În *data\\_transfer.cpp* definim clasa *OptimisticMetaOutgoingInfo* care "
"reprezintă viziunea optimistă de arătat clientului. Este optimistă deoarece "
"dacă un contact acceptă un transfer pe un dispozitiv și refuză pe altele, "
"această clasă va arăta transferul de fișiere în curs. Și va arăta o eroare "
"doar dacă toate dispozitivele refuză transferul."
#: ../../../developer/file-transfer.md:176
msgid ""
"This class is linked to *SubOutgoingFileTransfer* which represent the state "
"of a transfer with one device. Clients will have the ability to show a sub "
"transfer instead the optimistic later (see TODO list)."
msgstr ""
"Această clasă este legată de *SubOutgoingFileTransfer* care reprezintă "
"starea unui transfer cu un singur dispozitiv. Clienții vor avea "
"posibilitatea de a arăta un sub-transfer în schimb optimistic mai târziu "
"(vezi lista TODO)."
#: ../../../developer/file-transfer.md:180
msgid "Using another TURN server"
msgstr "Utilizând un alt server TURN"
#: ../../../developer/file-transfer.md:182
msgid ""
"Actually the default TURN server is *turn.ring.cx*. But you can host your "
"own TURN server. For example by running a "
"[coturn](https://github.com/coturn/coturn) server."
msgstr ""
"De fapt, serverul de parfait TURN este *turn.ring.cx*. Dar puteți găzdui "
"propriul server TURN. De exemplu, prin rularea unui server [coturn] "
"((https://github.com/coturn/coturn)."
#: ../../../developer/file-transfer.md:186
msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
msgstr "`sudo turnserver -a -v -n -u utilizator: parola -r \"realm\""
#: ../../../developer/file-transfer.md:188
msgid ""
"Then, you can configure the TURN server in the advanced settings of RING."
msgstr "Apoi, puteți configura serverul TURN în setările avansate ale RING."
#: ../../../developer/file-transfer.md:191
msgid ""
"Note: this needs some technical knowledges. Moreover, the TURN server should"
" see the same ip address of your node as the destination node or the peer "
"connection will fail (because the authorization will be incorrect)"
msgstr ""
"Notă: acest lucru necesită anumite cunoștințe tehnice. În plus, serverul "
"TURN ar trebui să vadă aceeași adresă IP a nodului dvs. ca nodul de "
"destinație sau conexiunea peer va eşua (pentru că autorizația va fi "
"incorectă)"
#: ../../../developer/file-transfer.md:199
msgid ""
"For now, if a file transfer fails when ongoing, the sender can not resume "
"the transfer and must relaunch the whole transfer. In the future, there will"
" be a retry button for resuming the transfer."
msgstr ""
"În prezent, dacă un transfer de fișiere nu reușește în curs de desfășurare, "
"expeditorul nu poate reia transferul și trebuie să relueze întregul "
"transfer."
#: ../../../developer/file-transfer.md:203
msgid ""
"Finally, because Jami do not support text conferences (just video "
"conferences, where there is one master merging slaves SIP calls), there is "
"no real file transfer in conferences. For now, when you are in a conference "
"on the gnome client for example: A master, B and C slave. B will be able to "
"send a file to A the master (C same) A will be able to send a file to B or "
"to C (just have to select the correct conversation)."
msgstr ""
#: ../../../developer/file-transfer.md:210
msgid "TODO List"
msgstr "Lista TODO"
#: ../../../developer/file-transfer.md:212
msgid "Add unit-tests (https://gerrit-ring.savoirfairelinux.com/\\#/c/9365/)"
msgstr ""
"Adăugarea testelor unitare (https://gerrit-"
"ring.savoirfairelinux.com/\\#/c/9365/)"
#: ../../../developer/file-transfer.md:213
msgid "Show subtransfers status for outgoing files"
msgstr "Află starea subtransferurilor pentru fișierele ieșite"
#: ../../../developer/file-transfer.md:214
msgid "Offset resume (for failed transfer)"
msgstr "CV-ul compensat (pentru transferul eşuat)"
#: ../../../developer/important-rfcs.md:1
msgid "Important RFCs"
msgstr "RFC-uri importante"
#: ../../../developer/important-rfcs.md:4
msgid "SIP"
msgstr "SIP"
#: ../../../developer/important-rfcs.md:6
msgid "Reference: <http://tools.ietf.org/html/rfc3261>"
msgstr "Referință: <http://tools.ietf.org/html/rfc3261>"
#: ../../../developer/important-rfcs.md:8
#: ../../../developer/important-rfcs.md:35
#: ../../../developer/important-rfcs.md:44
msgid "Valuable updates and extensions:"
msgstr "Actualizări și extinderi valoroase:"
#: ../../../developer/important-rfcs.md:10
msgid "SIP Re-INVITE: <http://tools.ietf.org/html/rfc6141>"
msgstr "SIP RE-INVITE: <http://tools.ietf.org/html/rfc6141>"
#: ../../../developer/important-rfcs.md:12
msgid "ICE"
msgstr "ICE"
#: ../../../developer/important-rfcs.md:14
msgid "Reference: <http://tools.ietf.org/html/rfc5245>"
msgstr "Referință: <http://tools.ietf.org/html/rfc5245>"
#: ../../../developer/important-rfcs.md:16
msgid "ICE TCP"
msgstr "ICE TCP"
#: ../../../developer/important-rfcs.md:18
msgid "Reference: <http://tools.ietf.org/html/rfc6544>"
msgstr ""
#: ../../../developer/important-rfcs.md:20
msgid "SDP"
msgstr "SDP"
#: ../../../developer/important-rfcs.md:22
msgid "Reference: <http://tools.ietf.org/html/rfc4566>"
msgstr "Referință: <http://tools.ietf.org/html/rfc4566>"
#: ../../../developer/important-rfcs.md:24
msgid ""
"How to use SDP: <http://tools.ietf.org/html/rfc3264> Valuable updates and "
"extensions:"
msgstr ""
"Cum să folosești SDP: <http://tools.ietf.org/html/rfc3264> Actualizări și "
"extensii valoroase:"
#: ../../../developer/important-rfcs.md:27
msgid "SDP and IPv6: <http://tools.ietf.org/html/rfc6157>"
msgstr "SDP și IPv6: <http://tools.ietf.org/html/rfc6157>"
#: ../../../developer/important-rfcs.md:28
msgid "SDP for SRTP: <http://tools.ietf.org/html/rfc4568>"
msgstr "SDP pentru SRTP: <http://tools.ietf.org/html/rfc4568>"
#: ../../../developer/important-rfcs.md:31
msgid "RTP"
msgstr "RTP"
#: ../../../developer/important-rfcs.md:33
msgid "Reference: <http://tools.ietf.org/html/rfc3550>"
msgstr "Referință: <http://tools.ietf.org/html/rfc3550>"
#: ../../../developer/important-rfcs.md:37
msgid "RTP and RTCP on same port: <http://tools.ietf.org/html/rfc5761>"
msgstr "RTP și RTCP pe același port: <http://tools.ietf.org/html/rfc5761>"
#: ../../../developer/important-rfcs.md:40
msgid "SRTP"
msgstr "SRTP"
#: ../../../developer/important-rfcs.md:42
msgid "Reference: <http://tools.ietf.org/html/rfc3711>"
msgstr "Referință: <http://tools.ietf.org/html/rfc3711>"
#: ../../../developer/important-rfcs.md:46
msgid ""
"DTLS for SRTP: <https://tools.ietf.org/html/rfc5763> et "
"<http://tools.ietf.org/html/rfc5764>"
msgstr ""
"DTLS pentru SRTP: <https://tools.ietf.org/html/rfc5763> et "
"<http://tools.ietf.org/html/rfc5764>"
#: ../../../developer/important-rfcs.md:47
msgid "AES-192 and AES-256: <https://tools.ietf.org/html/rfc6188>"
msgstr "AES-192 și AES-256: <https://tools.ietf.org/html/rfc6188>"
#: ../../../developer/important-rfcs.md:48
msgid "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
msgstr "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
#: ../../../developer/improving-quality-of-jami.md:1
msgid "Improving the quality of Jami"
msgstr "Îmbunătăţirea calităţii Jami"
#: ../../../developer/improving-quality-of-jami.md:4
msgid "Unit-tests"
msgstr "Testele unități"
#: ../../../developer/improving-quality-of-jami.md:6
msgid ""
"It is harder to make unit-test on Jami project because of the race "
"conditions on multi-level dependance."
msgstr ""
"Este mai dificil să faci testare unitară pe proiectul Jami din cauza "
"condițiilor de cursă pe dependență la mai multe niveluri."
#: ../../../developer/improving-quality-of-jami.md:8
msgid ""
"There is about 30 unit-tests and 26% coverage. Due to Jami high demand to "
"give new functionalities to user quickly, they are not maintained by the "
"developers or by a QA dept."
msgstr ""
"În urma unei cereri mari de a oferi utilizatorilor rapid noi "
"funcționalități, acestea nu sunt întreținute de către dezvoltatori sau de un"
" departament de calificare."
#: ../../../developer/improving-quality-of-jami.md:10
msgid ""
"We use lcov for the coverage, you can find the lcov’s configuration in the "
"daemon’s Makefile.am. Also, the coverage can be found at "
"https://docs.jami.net/coverage/"
msgstr ""
"Utilizăm lcov pentru acoperire, puteți găsi configurația lcov s în daemon s "
"Makefile.am. De asemenea, acoperirea poate fi găsită la "
"https://docs.jami.net/coverage/"
#: ../../../developer/improving-quality-of-jami.md:12
msgid ""
"A system needs to be implemented to start convincing the team to make a "
"unit-test for new code before merging"
msgstr ""
"Trebuie implementat un sistem pentru a începe să convingă echipa să facă un "
"test unitare pentru un nou cod înainte de fuziune"
#: ../../../developer/improving-quality-of-jami.md:14
msgid ""
"You can launch them by doing ‘make check’ in the daemon folder or separately"
" in the unit-test folder with gdb: ‘gdb ut_media_encoder’"
msgstr ""
"Puteți să le lansați făcând make check în dosarul deemon sau separat în "
"dosarul de testare unitară cu gdb: gdb ut_media_encoder"
#: ../../../developer/improving-quality-of-jami.md:16
msgid ""
"The environment needs to be set with ‘--disable-shared’ during the "
"’./configure’ command"
msgstr ""
"Mediul trebuie setat cu --disable-shared în timpul comenzii./configure"
#: ../../../developer/improving-quality-of-jami.md:18
msgid "Framework Tests"
msgstr "Testuri-cadru"
#: ../../../developer/improving-quality-of-jami.md:20
msgid ""
"You can find framework tests in the daemon’s Makefile.am and lunch it with "
"‘make integration’. This calls jami_test.py script in the tools/dringctrl "
"folder. It uses dringctrl.py and controller.py which let you control Jami "
"through bash."
msgstr ""
"Puteți găsi testele de cadru în daemons Makefile.am și să-l luați cu make "
"integrare. Aceasta numeste jami_test.py script în dosarul de instrumente / "
"dringctrl. Acesta utilizează dringctrl.py și controller.py care vă permite "
"să controlați Jami prin bash."
#: ../../../developer/improving-quality-of-jami.md:22
msgid ""
"This makes a series of calls to assure jami’s opendht network is stable."
msgstr ""
"Acest lucru face o serie de apeluri pentru a asigura că rețeaua deschisă a "
"jami este stabilă."
#: ../../../developer/improving-quality-of-jami.md:24
msgid ""
"Other framework tests need to be implemented in the future to tests Jami’s "
"functionalities as a whole."
msgstr ""
"În viitor, trebuie să fie implementate alte teste de cadru pentru a testa "
"funcționalitățile Jami în ansamblu."
#: ../../../developer/improving-quality-of-jami.md:26
msgid "Integration tests"
msgstr "Teste de integrare"
#: ../../../developer/improving-quality-of-jami.md:28
msgid ""
"Each commit goes through integration tests in dockers on the build machines "
"you can find the details at: jenkins.jami.net"
msgstr ""
"Fiecare comit trece prin teste de integrare în docare pe mașinile de "
"construcție puteți găsi detaliile la: jenkins.jami.net"
#: ../../../developer/improving-quality-of-jami.md:30
msgid ""
"Code-review is made by a fellow developer, sometimes the code is reviewed by"
" the same developer, this should be avoided to emphasize Linus’ law. The "
"‘Jenkins verified’ label is sometimes discarded and replaced by +1 from a "
"developer, this should also be avoided."
msgstr ""
"Codul este revizuit de un dezvoltator, uneori codul este revizuit de același"
" dezvoltator, acest lucru ar trebui evitat pentru a sublinia legea Linus. "
"Eticheta Jenkins verificat este uneori aruncată și înlocuită cu +1 de la un "
"dezvoltator, acest lucru ar trebui, de asemenea, evitat."
#: ../../../developer/improving-quality-of-jami.md:32
msgid ""
"Sonarqube lets Jenkins build Jami and verify linting. You can find filters "
"and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a "
"preprocessor linting compilator, you can find clang’s filters in .clang-tidy"
" file in the daemon folder."
msgstr ""
"Sonarqube permite lui Jenkins să construiască Jami și să verifice lințarea. "
"Puteți găsi filtre și rezultate la: sonar- jami.savoirfairelinux.net Sonar "
"utilizează clang-tidy ca preprocesor lințarea compilator, puteți găsi filtre"
" clangs în fișierul.clang-tidy în dosarul daemon."
#: ../../../developer/improving-quality-of-jami.md:34
msgid ""
"On sflvault sonarqube can be found at service m#2637 and admin logins at "
"service s#7169"
msgstr ""
"Pe sflvault sonarqube se găsește la serviciul m#2637 și logini de "
"administrare la serviciul s#7169"
#: ../../../developer/improving-quality-of-jami.md:36
msgid "Doc and feedback:"
msgstr "Doc şi feedback:"
#: ../../../developer/improving-quality-of-jami.md:38
msgid "You can find all the documentation on docs.jami.net"
msgstr "Puteţi găsi toate documentele pe docs.jami.net"
#: ../../../developer/improving-quality-of-jami.md:40
msgid "Issues are made by developers or users on git.jami.net"
msgstr ""
"Problemele sunt formulate de dezvoltatori sau utilizatori pe git.jami.net"
#: ../../../developer/improving-quality-of-jami.md:42
msgid "Monitoring"
msgstr "Monitorizare"
#: ../../../developer/improving-quality-of-jami.md:44
msgid ""
"A script is called every 30 minutes on a virtual machine jami-"
"monitorpeervm-01. You can find it on sflvault service s#7209 and is calling "
"an other client viratual jami- monitorpeer-02 (service s#7224). A series of "
"calls is being made and it returns the failure rate. You can find all the "
"details at https://wiki.savoirfairelinux.com/wiki/Jami-"
"monitorpeervm-01.mtl.sfl."
msgstr ""
"Un script este sunat la fiecare 30 de minute pe o mașină virtuală jami-"
"monitorpeervm-01. Îl puteți găsi pe sflvault service s#7209 și cheamă un alt"
" client virtual jami-monitorpeer-02 (service s#7224). Se efectuează o serie "
"de apeluri și returnă rata de eșec. Puteți găsi toate detaliile la "
"https://wiki.savoirfairelinux.com/wiki/Jami-monitorpeervm-01.mt.sfl."
#: ../../../developer/improving-quality-of-jami.md:46
msgid ""
"If needed, the manual command is ./script.sh –peer "
"031acbb73f2a3385b2babc7161f13325be103431"
msgstr ""
"Dacă este necesar, comanda manuală este./script.sh peer "
"031acbb73f2a3385b2babc7161f13325be103431"
#: ../../../developer/improving-quality-of-jami.md:48
msgid ""
"It traces a real time point by point graph on "
"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-"
"monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1"
msgstr ""
"Acesta urmărește un grafic de punct cu punct în timp real pe "
"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-"
"monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1"
#: ../../../developer/improving-quality-of-jami.md:50
msgid "Smoke tests"
msgstr "Teste de fum"
#: ../../../developer/improving-quality-of-jami.md:52
msgid "Before each releases every clients MUST past a list of scenarios."
msgstr ""
"Înainte de fiecare eliberare fiecare client trebuie să treacă de o listă de "
"scenarii."
#: ../../../developer/improving-quality-of-jami.md:54
msgid "Scenarios are described here: [Jami smoke tests](jami-smoke-tests.ods)"
msgstr "Scenariile sunt descrise aici: [Teste de fum Jamie]"
#: ../../../developer/improving-quality-of-jami.md:57
msgid ""
"They are reviewed by QA dpt. before sending it to the developers if needed."
msgstr ""
"Acestea sunt revizuite de QA dpt. înainte de a le trimite dezvoltatorilor, "
"dacă este necesar."
#: ../../../developer/improving-quality-of-jami.md:59
msgid ""
"If a release contains a network commit that has been merged, the QA dept. "
"Should be able to automate the different connectivity tests (as descibed "
"below in Calls configurations)"
msgstr ""
"Dacă o versiune conține un compromis de rețea care a fost fuzionat, "
"departamentul de calificare ar trebui să poată automatiza diferitele teste "
"de conectivitate (cum este descris mai jos în configurările de apeluri)"
#: ../../../developer/improving-quality-of-jami.md:61
msgid "Calls configurations."
msgstr "Chema configuraţii."
#: ../../../developer/improving-quality-of-jami.md:63
msgid "This is the list of network configurations that need to be tested:"
msgstr "Aceasta este lista configurărilor de rețea care trebuie testate:"
#: ../../../developer/improving-quality-of-jami.md:65
msgid ""
"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both "
"sides."
msgstr ""
"(IPv4 IPv6) + (TURN !TURN) + (STUN !STUN) + (UPnP !UPnP) pentru ambele "
"părți."
#: ../../../developer/improving-quality-of-jami.md:67
msgid ""
"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only "
"local."
msgstr ""
"Dacă ambele părți sunt IPv4 numai fără TURN/STUN/UPnP, apelul trebuie să fie"
" doar local."
#: ../../../developer/improving-quality-of-jami.md:69
msgid "Special note: FDroid"
msgstr "Notă specială: FDroid"
#: ../../../developer/improving-quality-of-jami.md:71
msgid ""
"The script to generate MR is in the client-android repo "
"(fdroidMergeRequest.sh)"
msgstr ""
"Scriptul pentru a genera MR este în client-android repo "
"(fdroidMergeRequest.sh)"
#: ../../../developer/improving-quality-of-jami.md:73
msgid "What needs to be done"
msgstr "Ce trebuie făcut"
#: ../../../developer/improving-quality-of-jami.md:75
msgid "Push coverage closer to 60%"
msgstr "Îmbunătățirea acoperirii la 60%"
#: ../../../developer/improving-quality-of-jami.md:77
msgid ""
"Establish a system within the team to assure maintenance and creation of "
"unit-tests."
msgstr ""
"Înființarea unui sistem în cadrul echipei pentru a asigura întreținerea și "
"crearea de teste unitare."
#: ../../../developer/improving-quality-of-jami.md:79
msgid ""
"Each major functionality should be tested as whole by adding a framework "
"test (i.e. making sure a message was received, the call was ended well on "
"both side, etc...)"
msgstr ""
"Fiecare funcționalitate majoră trebuie testată ca un întreg prin adăugarea "
"unui test-cadru (adică asigurându-se că un mesaj a fost primit, că apelul a "
"fost terminat bine pe ambele părți etc.)"
#: ../../../developer/improving-quality-of-jami.md:81
msgid ""
"Each new functionality should be tested on each platform before merging it "
"to reduce regression"
msgstr ""
"Fiecare caracteristică nouă ar trebui testată pe fiecare platformă înainte "
"de a fi unită, pentru a reduce regresul"
#: ../../../developer/improving-quality-of-jami.md:83
msgid "Integrate sonarqube on each client"
msgstr "Integrarea sonarcube pe fiecare client"
#: ../../../developer/improving-quality-of-jami.md:85
msgid "Automate the testing of Jami’s behavior on network compatibility"
msgstr ""
"Automatizați testarea comportamentului Jami pe compatibilitatea rețelei"
#: ../../../developer/improving-quality-of-jami.md:87
msgid "Make a make_ring.py script adaptable to windows also"
msgstr "Faceți un script make_ring.py adaptabil pentru Windows de asemenea"
#: ../../../developer/index.rst:3
msgid "Developer manual"
msgstr "Manualul dezvoltatorului"
#: ../../../developer/index.rst:5
msgid ""
"The Jami developer manual is a reference for Jami developers and "
"contributors, documenting the various aspects of hacking on and developing "
"Jami, including in-depth explanations of how Jami is designed and how its "
"various parts work together."
msgstr ""
"Manualul de dezvoltatori Jami este o referință pentru dezvoltatorii și "
"contribuitorii Jami, documentând diferitele aspecte ale hack-ului și "
"dezvoltării Jami, inclusiv explicații aprofundate despre modul în care Jami "
"este proiectat și cum funcționează diferitele sale părți împreună."
#: ../../../developer/introduction.md:4
msgid ""
"Greetings! In the developer manual of Jami, you will learn about how Jami "
"works from the high level, to the low, with some examples."
msgstr ""
"În manualul de dezvoltare al Jami, veți învăța despre modul în care Jami "
"lucrează de la nivelul înalt, la nivelul scăzut, cu câteva exemple."
#: ../../../developer/introduction.md:7
msgid "Table of contents"
msgstr "Tabelul conținutului"
#: ../../../developer/introduction.md:9
msgid "{doc}`apis-of-jami`"
msgstr "{doc}`apis-of-jami`"
#: ../../../developer/introduction.md:10
msgid "Basic features"
msgstr "Caracteristici de bază"
#: ../../../developer/introduction.md:11
msgid "{doc}`account-management`"
msgstr "{doc}`-gestionare contabilă"
#: ../../../developer/introduction.md:12
msgid "{doc}`contact-management`"
msgstr "{doc}`contakt-gestionare `"
#: ../../../developer/introduction.md:13
msgid "{doc}`swarm`"
msgstr "{doc}`swarm`"
#: ../../../developer/introduction.md:14
msgid "{doc}`calls`"
msgstr "{doc}`calls`"
#: ../../../developer/introduction.md:15
msgid "{doc}`file-transfer` (deprecated; see {doc}`swarm`)"
msgstr "{doc}`file-transfer ` (depreciat; vezi {doc}`swarm`)"
#: ../../../developer/introduction.md:16
msgid "{doc}`message-displayed-status`"
msgstr "{doc}`message-displayed-status`"
#: ../../../developer/introduction.md:18
msgid "Advanced features"
msgstr "Caracteristici avansate"
#: ../../../developer/introduction.md:19
msgid "Manage audio/videos"
msgstr "Gestionarea audio/video"
#: ../../../developer/introduction.md:20
msgid "Call recording"
msgstr "Înregistrare apeluri"
#: ../../../developer/introduction.md:21
msgid ""
"[The push notifications "
"system](https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
"support)"
msgstr ""
"[Sistemul de notificări "
"push]https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
"support)"
#: ../../../developer/introduction.md:22
msgid "What is a DHTProxy"
msgstr "Ce este un DHTProxy"
#: ../../../developer/introduction.md:23
msgid "Supporting SIP"
msgstr "În sprijinul SIP"
#: ../../../developer/introduction.md:24
msgid "{doc}`setting-up-your-own-turn-server`"
msgstr "{doc}`set-up-your-own-turn-server`"
#: ../../../developer/introduction.md:25
msgid "{doc}`synchronizing-profiles`"
msgstr "{doc}`sincronizarea-profile `"
#: ../../../developer/introduction.md:27
msgid "{doc}`../contribute`"
msgstr "{doc}`../contribute`"
#: ../../../developer/introduction.md:28
msgid "{doc}`Build instructions <../build/building>`"
msgstr "{doc}`Instrucțiuni de construcție <../construcție/construcție>`"
#: ../../../developer/introduction.md:29
msgid "{doc}`submitting-your-first-patch`"
msgstr "{doc}`să-și trimită- primul-patch `"
#: ../../../developer/introduction.md:30
msgid "{doc}`feature-requests`"
msgstr "{doc}`recurse-recurse `"
#: ../../../developer/introduction.md:32
msgid "Group chats in details"
msgstr "Cate de grup în detaliu"
#: ../../../developer/introduction.md:33 ../../../developer/introduction.md:42
msgid "Description"
msgstr "Descriere"
#: ../../../developer/introduction.md:34
msgid "{doc}`connection-manager`"
msgstr "{doc}`-manager-connectare"
#: ../../../developer/introduction.md:35
msgid "DRT"
msgstr "Răspunde"
#: ../../../developer/introduction.md:36
msgid "{doc}`calls-in-swarm`"
msgstr "{doc}`call-in-swarmm`"
#: ../../../developer/introduction.md:38
msgid "Drafts"
msgstr "Proiecte"
#: ../../../developer/introduction.md:39
msgid "{doc}`conference-protocol`"
msgstr "{doc}`conferință-protocol"
#: ../../../developer/introduction.md:40
msgid "{doc}`synchronization-protocol`"
msgstr "{doc}`sincronizare-protocol"
#: ../../../developer/introduction.md:44
msgid ""
"If you are reading this, chances are you'd either like to contribute to one "
"of Jami's components/projects, or to implement your own client. There are "
"three main layers in this project:"
msgstr ""
"Dacă citiți acest articol, este posibil să doriți să contribuiți la unul "
"dintre componentele / proiectele Jami, sau să vă implementați propriul "
"client."
#: ../../../developer/introduction.md:48
msgid ""
"[OpenDHT](https://opendht.net), used for the p2p communication. You can "
"interact with this library like any C++ library, or using the Python "
"wrapper, or via its [REST "
"API](https://github.com/savoirfairelinux/opendht/wiki/REST-API)."
msgstr ""
"[OpenDHT] (https://opendht.net), folosit pentru comunicarea p2p. Puteți "
"interacționa cu această bibliotecă ca orice bibliotecă C ++, sau folosind "
"înfășurarea Python, sau prin intermediul său [REST API] "
"(https://github.com/savoirfairelinux/opendht/wiki/REST-API)."
#: ../../../developer/introduction.md:53
msgid ""
"The daemon, which is the main part. It's the part which does all the logic "
"for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other libraries,"
" and implements the whole protocol. If you'd like to do create a new Jami "
"client, we recommend implementing it on top of this daemon, using one of its"
" many APIs (REST, DBus, libwrap, or JNI)."
msgstr ""
"Daemonul, care este partea principală. Este partea care face toată logica "
"pentru Jami și interacționează cu OpenDHT, pjsip, FFmpeg și celelalte "
"biblioteci, și implementează întregul protocol. Dacă doriți să creați un nou"
" client Jami, vă recomandăm să îl implementați pe partea de sus a acestui "
"daemon, folosind una dintre numeroasele sale API (REST, DBus, libwrap sau "
"JNI)."
#: ../../../developer/introduction.md:60
msgid "The client part, which is basically the *frontend*."
msgstr "Partea clientului, care este în esență *frontend*."
#: ../../../developer/introduction.md:62
msgid ""
"The developer manual of Jami will explain the different features from all of"
" these layers."
msgstr ""
"Manualul de dezvoltare al Jami va explica diferitele caracteristici din "
"toate aceste straturi."
#: ../../../developer/jami-identifiers.md:1
msgid "Jami identifiers"
msgstr "Identificatorii Jami"
#: ../../../developer/jami-identifiers.md:4
msgid ""
"There are many identifiers in Jami. We need to unify the naming of these "
"identifiers between all implementations. This page reference various kind of"
" identifiers used in Jami with relevant examples."
msgstr ""
"Există multe identificatori în Jami. Trebuie să unificăm denumirea acestor "
"identificatori între toate implementările."
#: ../../../developer/jami-identifiers.md:8
msgid ""
"**Jami Infohash** or **Jami public key fingerprint** : a public key "
"fingerprint such as `3d1112ab2bb089370c0744a44bbbb0786418d40b`"
msgstr ""
"**Jami Infohash** sau **Jami public key fingerprint**: o amprentă de la "
"cheia publică, cum ar fi `3d1112ab2bb089370c0744a44bb0786418d40b`"
#: ../../../developer/jami-identifiers.md:10
msgid ""
"**Registered name** : a username associated to a Jami Infohash on the "
"blockchain such as `jeandupont`"
msgstr ""
"**Nume înregistrat**: un nume de utilizator asociat unui Jami Infohash pe "
"blockchain, cum ar fi `jeandupont`"
#: ../../../developer/jami-identifiers.md:12
msgid ""
"**URI** : a Jami or SIP URI such as "
"`jami:3d1112ab2bb089370c0744a44bbbb0786418d40b` or `jami:jeandupont` or "
"`<sip:nnnnn@host:5060>`. Must be compliant with "
"[rfc3986](https://tools.ietf.org/html/rfc3986). If it's a SIP URI, it must "
"be compliant with "
"[rfc3261#19.1](https://tools.ietf.org/html/rfc3261#section-19.1)."
msgstr ""
"**URI**: un Jami sau un SIP URI cum ar fi "
"`jami:3d1112ab2bb089370c0744a44bb0786418d40b` sau `jami:jeandupont` sau "
"`<sip:nnnnn@host:5060>`. Trebuie să fie conforme cu "
"[rfc3986]https://tools.ietf.org/html/rfc3986). Dacă este un SIP URI, trebuie"
" să fie conforme cu "
"[rfc3261#19.1](https://tools.ietf.org/html/rfc3261#section-19.1)."
#: ../../../developer/jami-identifiers.md:15
msgid ""
"**Canonical URI** : `jami:3d1112ab2bb089370c0744a44bbbb0786418d40b` or "
"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered name "
"must be resolved, doesn't include <> brackets or display name. Prefixed with"
" the scheme (`jami:` or `sip:` or `sips:`)."
msgstr ""
"** URI canonic**: `jami:3d1112ab2bb089370c0744a44bb0786418d40b` sau "
"`sip:nnnnn@host:5060`. Forma cea mai simplificată a URI. Numele înscris "
"trebuie rezolvat, nu include <> paranteze sau numele afișat. Prefixat cu "
"schema (`jami:` sau `sip:` sau `sips:`)."
#: ../../../developer/jami-identifiers.md:16
msgid ""
"**User ID**: registered name (preferred) or public key fingerprint. User-"
"facing identifier for an account public key."
msgstr ""
"**ID-ul utilizatorului**: nume înregistrat (preferit) sau amprentă digitale "
"cu cheia publică."
#: ../../../developer/jami-identifiers.md:17
msgid ""
"**Display name** or **Profile name** : an editable user-defined profile name"
" such as `Jean Dupont`."
msgstr ""
"**Nume afișat** sau **Nume de profil**: un nume de profil modificabil "
"stabilit de utilizator, cum ar fi „Jean Dupont”."
#: ../../../developer/jami-identifiers.md:20
msgid "When displaying a contact:"
msgstr "Atunci când afișează un contact:"
#: ../../../developer/jami-identifiers.md:28
msgid "If Display name is empty, User ID is shown instead"
msgstr ""
"Dacă „Numele afișat” lipsește, se afișează în loc ID-ul utilizatorului"
#: ../../../developer/jami-identifiers.md:29
msgid "If both lines have the same content, only the first line is displayed"
msgstr "Dacă ambele linii au același conținut, se afișează doar prima linie"
#: ../../../developer/jami-identifiers.md:31
msgid ""
"If no photo is available and a registered name (ring) or display name (sip) "
"is available, the first letter of this name can be used to generate a "
"placeholder. Otherwise a generic placeholder is used."
msgstr ""
"Dacă nu există nicio fotografie și dacă există un nume înscris (ring) sau un"
" nume afișat (sip), prima literă a acestui nume poate fi utilizată pentru a "
"genera un înlocuitor. În caz contrar, se folosește un înlocuitor generic."
#: ../../../developer/jami-identifiers.md:32
msgid ""
"If no photo is available, a placeholder with an Canonical URI-specific "
"background color can be used:"
msgstr ""
"Dacă nu există nicio fotografie, se poate utiliza un dispozitiv de plasare "
"cu o culoare de fundal specifică URI-ului Canonical:"
#: ../../../developer/jami-identifiers.md:57
msgid ""
"Color values are from the material palette: https://material.io/tools/color"
msgstr ""
"Valorile de culoare sunt din paleta de materiale: "
"https://material.io/tools/color"
#: ../../../developer/jami-identifiers.md:60
msgid "![références_couleurs_jami](images/jami-reference-colours.png)"
msgstr "! [références_couleurs_jami](images/jami-reference-colours.png)"
#: ../../../developer/jami-identifiers.md:60
msgid "références_couleurs_jami"
msgstr "references_couleurs_jami"
#: ../../../developer/location-sharing.md:1
msgid "Location Sharing on QT Client"
msgstr "Localizare împărțită pe clientul QT"
#: ../../../developer/location-sharing.md:7
msgid "Trivial use"
msgstr "Utilizare trivială"
#: ../../../developer/location-sharing.md:9
msgid ""
"In a conversation, the user can click on the location icon to display a map."
" If `Location Services` is enabled on the device, the user's position will "
"be shown on the map, along with the locations of all other members who are "
"sharing their location (from all conversations of the selected account). The"
" user can toggle location sharing on and off by clicking the location "
"sharing buttons. By default, the user's location is shared for 15 minutes, "
"but this setting can be modified in the app's settings."
msgstr ""
"În cadrul unei conversații, utilizatorul poate face clic pe icoana locației "
"pentru a afișa o hartă. Dacă `Location Services` este activat pe dispozitiv,"
" poziția utilizatorului va fi afișată pe hartă, împreună cu locațiile "
"tuturor celorlalți membri care își împărtășesc locația (din toate "
"conversațiile contului selectat). Utilizatorul poate activa și dezactiva "
"partajarea locației făcând clic pe butoanele de partajare a locației. De "
"parțial, locația utilizatorului este partajată timp de 15 minute, dar "
"această setare poate fi modificată în setările aplicației."
#: ../../../developer/location-sharing.md:11
msgid ""
"When a user is sharing their location in a conversation, a red location icon"
" will appear on the conversation icon. If the user receives a location from "
"another member, an orange location icon will be displayed on all "
"conversations in which the member is present."
msgstr ""
"Când un utilizator își împărtășește locația în o conversație, o pictură "
"roșie a locației va apărea pe icoana conversației. Dacă utilizatorul "
"primește o locație de la un alt membru, o pictură portocalie a locației va "
"fi afișată pe toate conversațiile în care este prezentul membru."
#: ../../../developer/location-sharing.md:13
msgid ""
"The user can interact with the map by recentering, zooming in and out, "
"moving it, and closing it. The map can also be pinned or unpinned. When the "
"map is unpinned, it can be repinned if the user is in the right account. "
"This feature allows the user to keep the map visible while continuing to use"
" Jami."
msgstr ""
"Utilizatorul poate interacționa cu harta prin recentare, zoomare, mutare și "
"închidere. Harta poate fi, de asemenea, fixată sau despinsată. Când harta "
"este despinsă, poate fi repinsată dacă utilizatorul este în contul potrivit."
" Această caracteristică permite utilizatorului să păstreze harta vizibilă în"
" timp ce continuă să folosească Jami."
#: ../../../developer/location-sharing.md:15
msgid "Advanced use"
msgstr "Utilizare avansată"
#: ../../../developer/location-sharing.md:17
msgid "Multi-sharing"
msgstr "Multipărire"
#: ../../../developer/location-sharing.md:19
msgid "scenario"
msgstr "scenariu"
#: ../../../developer/location-sharing.md:21
msgid ""
"The user is already sharing location with conversation A and conversation B."
msgstr ""
"Utilizatorul împărtășește deja locația cu conversația A și conversația B."
#: ../../../developer/location-sharing.md:23
msgid "Feature"
msgstr "Caracteristica"
#: ../../../developer/location-sharing.md:25
msgid ""
"If the user switches to conversation C, the map is still visible and the "
"user has two options"
msgstr ""
"Dacă utilizatorul trece la conversație C, harta este încă vizibilă și "
"utilizatorul are două opțiuni"
#: ../../../developer/location-sharing.md:27
msgid ""
"Click on the location sharing button to also share location with the members"
" of conversation C."
msgstr ""
"Faceți clic pe butonul de partajare a locatiei pentru a împărtăși, de "
"asemenea, locația cu membrii conversației C."
#: ../../../developer/location-sharing.md:28
msgid ""
"Click the location sharing end button. This will bring up a pop-up that "
"allows the user to either turn off location sharing entirely or only stop "
"sharing their location with the members of conversation C."
msgstr ""
"Faceți clic pe butonul de sfârșit al partajării locației. Acest lucru va "
"apărea într-un pop-up care permite utilizatorului să dezactiveze partajarea "
"locației în întregime sau să nu mai împărtășească locația cu membrii "
"conversației C."
#: ../../../developer/location-sharing.md:30
msgid "Pinned window"
msgstr "Ferestrele cu șapte"
#: ../../../developer/location-sharing.md:32
msgid ""
"If the window is unpinned, the user will not be able to click on the "
"location sharing button because the window is no longer connected to a "
"conversation. To start sharing location with new people, the user must re-"
"pin the window. Note that unpinning the window does not affect any ongoing "
"location sharing. Additionally, clicking on the location sharing end button "
"while the window is unpinned will stop all current location sharing and no "
"pop-up will appear to allow the user to select a specific conversation to "
"stop sharing with."
msgstr ""
"Dacă fereastra este desființată, utilizatorul nu va putea să facă clic pe "
"butonul de partajare a locatiei deoarece fereastra nu mai este conectată la "
"o conversație. Pentru a începe partajarea locatiei cu noi persoane, "
"utilizatorul trebuie să re-pin fereastra."
#: ../../../developer/location-sharing.md:34
msgid "Multi accounts"
msgstr "Conturi multiple"
#: ../../../developer/location-sharing.md:36
msgid ""
"Each account has its own unique map. If the user unpins the map while on "
"account A, then switches to account B and unpins the map, two maps will be "
"visible. The maps for accounts A and B display positions shared with those "
"accounts, respectively, and are completely separate from each other"
msgstr ""
"Fiecare cont are propria sa harta unica. Dacă utilizatorul desface harta în "
"timp ce se află pe contul A, apoi trece la contul B și desface harta, două "
"hărți vor fi vizibile. Hărțile pentru conturile A și B afișează pozițiile "
"împărțite cu aceste conturi, respectiv, și sunt complet separate una de alta"
#: ../../../developer/location-sharing.md:44
msgid "This feature is divided into three parts:"
msgstr "Această caracteristică este împărțită în trei părți:"
#: ../../../developer/location-sharing.md:46
msgid "Sending one's position"
msgstr "Trimite poziţia"
#: ../../../developer/location-sharing.md:47
#: ../../../developer/location-sharing.md:78
msgid "Receiving a position"
msgstr "Primirea unei poziții"
#: ../../../developer/location-sharing.md:48
#: ../../../developer/location-sharing.md:89
msgid "Displaying a position"
msgstr "Afișarea unei poziții"
#: ../../../developer/location-sharing.md:50
msgid ""
"To determine the location, [Qt "
"Positioning](https://doc.qt.io/qt-6/qtpositioning-index.html) API is used. "
"Once the position is determined, it is sent as a message on the DHT and is "
"transmitted to the client. The received position is then displayed using the"
" [OpenLayers](https://openlayers.org/) JavaScript library."
msgstr ""
"Pentru a determina locația, este utilizat [Qt "
"Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html) API. Odată ce "
"poziția este determinată, este trimisă ca un mesaj pe DHT și este transmisă "
"clientului. Poziția primită este apoi afișată folosind biblioteca JavaScript"
" [OpenLayers]https://openlayers.org/)."
#: ../../../developer/location-sharing.md:53
msgid "Sending a position"
msgstr "Trimiterea unei poziții"
#: ../../../developer/location-sharing.md:55
msgid ""
"As soon as a map is opened, the `Positioning` class takes care of retrieving"
" the current position using the `QGeoPositionInfoSource` class of the "
"`QtPositioning` module. The position is then converted to JSON format and is"
" transmitted to the `positionManager`. This class coordinates the entire "
"position sharing process. The position is then shared through the "
"`sendPosition()` function. It is shared:"
msgstr ""
"De îndată ce o hartă este deschisă, clasa `Positioning` se ocupă de "
"recuperarea poziției curente folosind clasa `QGeoPositionInfoSource` a "
"modulei `QtPositioning`. Poziția este apoi convertisă în format JSON și este"
" transmisă la `positionManager`. Această clasă coordonează întregul proces "
"de partajare a pozițiilor. Poziția este apoi împărtășită prin funcția "
"`sendPosition()`."
#: ../../../developer/location-sharing.md:61
msgid ""
"Locally through the `localPositionReceived` signal so that the user can see "
"their own position"
msgstr ""
"Localizat prin semnalul `localPositionReceived` astfel încât utilizatorul să"
" poată vedea propria sa poziție"
#: ../../../developer/location-sharing.md:63
msgid ""
"On the DHT to all conversations in the `positionShareConvIds_` list. This "
"list contains the keys of all conversations that the user wants to share "
"their position with. From this key, the URIs of all participants are "
"obtained and a position message is sent to each participant."
msgstr ""
"În DHT, toate conversațiile sunt incluse în lista `positionShareConvIds_`. "
"Această listă conține cheile tuturor conversațiilor cu care utilizatorul "
"dorește să își împărtășească poziția."
#: ../../../developer/location-sharing.md:65
msgid "The JSON format of a position is as follows:"
msgstr "Formatul JSON al unei poziții este următorul:"
#: ../../../developer/location-sharing.md:67
msgid "Type (position or stop message)"
msgstr "Tip (seriul de poziție sau de oprire)"
#: ../../../developer/location-sharing.md:68
msgid "Latitude"
msgstr "Latitudinea"
#: ../../../developer/location-sharing.md:69
msgid "Longitude"
msgstr "Lungiţitudinea"
#: ../../../developer/location-sharing.md:70
msgid "Time (unused by the QtClient)"
msgstr "Timp (neutilizat de QtClient)"
#: ../../../developer/location-sharing.md:72
msgid ""
"An example of data: "
"`{\\\"lat\\\":45.51616583988481,\\\"long\\\":-73.620693,\\\"time\\\":1671658862000,\\\"type\\\":\\\"Position\\\"}`"
msgstr ""
"Un exemplu de date: "
"`{\\\"lat\\\":45.51616583988481,\\\"long\\\":-73.620693,\\\"time\\\":1671658862000,\\\"type\\\":\\\"Posiție\\\"}`"
#: ../../../developer/location-sharing.md:74
msgid ""
"When sending the position to the daemon, the author's URI is also "
"transmitted."
msgstr ""
"Când trimite poziția la daemon, URI autorului este transmisă, de asemenea."
#: ../../../developer/location-sharing.md:76
msgid ""
"When the user stops sharing their position with a conversation, the "
"conversation's ID is simply removed from the `positionShareConvIds_` list. A"
" \"stop\" message is also sent to each participant."
msgstr ""
"Când utilizatorul încetează să își împărtășească poziția cu o conversație, "
"ID-ul conversației este pur și simplu eliminat din lista "
"`positionShareConvIds_`."
#: ../../../developer/location-sharing.md:80
msgid ""
"When a position is received, it triggers the 'onPositionReceived()' slot. "
"Whether it is a local position from the `QtPositioning` module or a position"
" from another contact. At the `positionManager` level, the "
"`objectListSharingUris_` list stores all of the client's positions. The "
"position is either:"
msgstr ""
"Când o poziție este primită, aceasta declanșează slotul "
"\"onPositionReceived() \". Indiferent dacă este vorba de o poziție locală "
"din modulul `QtPositioning` sau o poziție dintr-un alt contact. La nivelul "
"`positionManager`, lista `objectListSharingUris_` stochează toate pozițiile "
"clientului. Poziția este fie:"
#: ../../../developer/location-sharing.md:83
msgid "Added (the URI is not present in the list)"
msgstr "Adăugată (URI nu este prezentă în listă)"
#: ../../../developer/location-sharing.md:84
msgid "Updated (the URI is already present in the list)"
msgstr "Actualizate (URI-ul este deja prezent în listă)"
#: ../../../developer/location-sharing.md:85
msgid "Deleted (type = \"Stop\")"
msgstr ""
"În cazul în care se utilizează un sistem de control al sistemului de control"
" al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului de control al sistemului de control al sistemului de control "
"al sistemului (SCSD)"
#: ../../../developer/location-sharing.md:87
msgid ""
"The position is stored in the list in the form of an object of type "
"`positionObject`. This type allows for a watchdog for each position. If the "
"position is not updated within a certain time frame, it is removed from the "
"list."
msgstr ""
"Poziția este stocată în listă sub forma unui obiect de tip `positionObject`."
" Acest tip permite un câine de supraveghere pentru fiecare poziție."
#: ../../../developer/location-sharing.md:91
msgid ""
"When a position is received (slot `onPositionReceived()` triggered), the "
"position is transmitted to Qml which in turn sends the information to the "
"[OpenLayers](https://openlayers.org/) JavaScript library. The Qt `WebEngine`"
" module allows for the bridge between the library's web technology and Qml. "
"Each position is represented by a layer added to the map. The "
"`newPosition()` function adds a new layer, the `updatePosition()` function "
"updates the coordinates of the layer, and the `removePosition()` function "
"removes the layer."
msgstr ""
"Când o poziție este primită (slot `onPositionReceived() `), poziția este "
"transmisă la Qml, care la rândul său trimite informațiile la biblioteca "
"JavaScript [https://openlayers.org/). Modul Qt `WebEngine` permite să creeze"
" podul între tehnologia web a bibliotecii și Qml. Fiecare poziție este "
"reprezentată de un strat adăugat la hartă. Funcția `newPosition() ` adaugă "
"un strat nou, funcția `updatePosition() ` actualizează coordonatele "
"stratului, iar funcția `removePosition() ` elimina stratul."
#: ../../../developer/message-displayed-status.md:1
msgid "Message displayed status"
msgstr "Starea afișată a mesajelor"
#: ../../../developer/message-displayed-status.md:4
msgid ""
"Every client generally must be able to show what peer read what message and "
"get how many unread messages there is."
msgstr ""
"Fiecare client trebuie să fie capabil să arate ce coleg citeste ce mesaj și "
"să obțină câte mesaje necitite există."
#: ../../../developer/message-displayed-status.md:6
msgid "For this, the daemon provides some APIs:"
msgstr "Pentru asta, daemonul oferă câteva API:"
#: ../../../developer/message-displayed-status.md:8
msgid "Set a message displayed"
msgstr "Setarea unui mesaj afișat"
#: ../../../developer/message-displayed-status.md:10
msgid "The Configuration manager provides:"
msgstr "Configurarea de management oferă:"
#: ../../../developer/message-displayed-status.md:46
msgid ""
"to set a message as displayed. Should be done when the interaction is shown "
"and the conversation selected."
msgstr ""
"Trebuie făcut atunci când interacțiunea este afișată și conversația "
"selectată."
#: ../../../developer/message-displayed-status.md:48
msgid ""
"This sends a SIP messages to connected peers with the following format:"
msgstr ""
"Acest lucru trimite un mesaj SIP către colegii conectați cu următorul "
"format:"
#: ../../../developer/message-displayed-status.md:66
msgid ""
"Then the peer will know this via `onMessageDisplayed` and emit a signal to "
"the client (`libjami::ConfigurationSignal::AccountMessageStatusChanged` with"
" status 3 (`libjami::Account::MessageStates::DISPLAYED`))"
msgstr ""
"Apoi, peerul va afla acest lucru prin `onMessageDisplayed` și va emite un "
"semnal către client "
"(`libjami::ConfigurationSignal::AccountMessageStatusChanged` cu statutul 3 "
"(`libjami::Account::MessageStates::DISPLAYED`))"
#: ../../../developer/message-displayed-status.md:68
msgid "Get unread messages"
msgstr "Să primeşti mesaje necitite"
#: ../../../developer/message-displayed-status.md:70
msgid ""
"By knowing the lastDisplayedMessage for our account, we can use this "
"informations and `ConfigrationManager::countInteractionsSince` which count "
"interaction since last message to a given message (typically last displayed "
"interaction)"
msgstr ""
"Cunoscând ultimul Mesaj Displayed pentru contul nostru, putem folosi aceste "
"informații și `ConfigrationManager::countInteractionsSince` care numără "
"interacțiunea de la ultimul mesaj la un mesaj dat (de obicei ultima "
"interacțiune afișată)"
#: ../../../developer/message-displayed-status.md:72
msgid ""
"To get last displayed message for a member, in "
"`Configuration::getConversationMembers` each member will have the last "
"displayed interaction available via `memberInfo[\"lastDisplayed\"]`"
msgstr ""
"Pentru a obține ultimul mesaj afișat pentru un membru, în "
"`Configuration::getConversationMembers` fiecare membru va avea ultima "
"interacțiune afișată disponibilă prin `memberInfo[\"ultimDisplayed\"]`"
#: ../../../developer/message-displayed-status.md:74
msgid "How this information is stored"
msgstr "Cum sunt stocate aceste informații"
#: ../../../developer/message-displayed-status.md:76
msgid ""
"In `src/jamidht/conversation.cpp` each conversation store the last displayed"
" messages in a map<string, string> (uri, interactionId) and this structure "
"is serialized in "
"`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
msgstr ""
"În `src/jamidht/conversation.cpp` fiecare conversație stochează ultimele "
"mesaje afișate într-o hartă<string, string> (uri, interactionId) și această "
"structură este serializată în "
"`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
#: ../../../developer/name-server-protocol.md:1
msgid "Name Server protocol"
msgstr "Numele Protocolului serverului"
#: ../../../developer/name-server-protocol.md:4
msgid ""
"The protocol used by Jami to query and register a name is based on an HTTP "
"[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API "
"answering requests with JSON documents and regular HTTP status codes."
msgstr ""
"Protocolul folosit de Jami pentru a consulta și înregistra un nume se "
"bazează pe o API HTTP [REST] "
"(https://en.wikipedia.org/wiki/Representational_state_transfer) care "
"răspunde la cereri cu documente JSON și coduri de statut HTTP regulate."
#: ../../../developer/name-server-protocol.md:10
msgid ""
"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as "
"its backend. Another implementation could use any other database or "
"directory service making the nameserver protocol reusable."
msgstr ""
"Un alt implementare ar putea utiliza orice altă bază de date sau un alt "
"serviciu de directory care să facă protocolul de server de nume "
"reutilizabil."
#: ../../../developer/name-server-protocol.md:14
msgid ""
"If you run your own nameserver, looking up a username in the form of "
"`username@example.com` will look up the name `username` with the nameserver "
"at `example.com`. (There is no need to add `@ns.jami.net` to use the "
"default nameserver.)"
msgstr ""
"Dacă vă rulați propriul server de nume, căutarea unui nume de utilizator sub"
" forma `username@example.com` va căuta numele `username` cu serverul de nume"
" la `example.com`. (Nu este necesar să adaugați `@ns.jami.net` pentru a "
"utiliza serverul de nume de parvenire.)"
#: ../../../developer/name-server-protocol.md:19
msgid "Rules on name formatting"
msgstr "Normele privind formattarea denumirii"
#: ../../../developer/name-server-protocol.md:22
msgid ""
"Usernames are checked by a regex to ensure some rules about their format:"
msgstr ""
"Numele de utilizator sunt verificate de un regex pentru a asigura unele "
"reguli privind formatul lor:"
#: ../../../developer/name-server-protocol.md:25
msgid "Length must be between 3 and 32 characters"
msgstr "Lungimea trebuie să fie între 3 și 32 de caractere"
#: ../../../developer/name-server-protocol.md:26
msgid ""
"Those characters must be alphanumerical with dashes `-` being also accepted."
msgstr ""
#: ../../../developer/name-server-protocol.md:29
msgid "Querying a name"
msgstr "Cer un nume"
#: ../../../developer/name-server-protocol.md:32
msgid ""
"This is the main service provided by a name server. It enables getting the "
"Jami ID corresponding to a username."
msgstr "Acesta este principalul serviciu furnizat de un server de nume."
#: ../../../developer/name-server-protocol.md:35
#: ../../../developer/name-server-protocol.md:83
#: ../../../developer/name-server-protocol.md:131
msgid "Request"
msgstr "Cerere"
#: ../../../developer/name-server-protocol.md:37
msgid ""
"A request for the name `foobar` is a `GET` request with `/name/`*`foobar`* "
"as the URI."
msgstr ""
"O cerere pentru denumirea `foobar` este o cerere `GET` cu `/name/`*`foobar`*"
" ca URI."
#: ../../../developer/name-server-protocol.md:40
#: ../../../developer/name-server-protocol.md:89
#: ../../../developer/name-server-protocol.md:150
msgid "Response (Success)"
msgstr "Reacţie (succes)"
#: ../../../developer/name-server-protocol.md:42
msgid ""
"If the name is found, a response with status code `200` `OK` must be sent to"
" the client with a `Content-type` field set as `application/json`."
msgstr ""
"Dacă se găsește numele, un răspuns cu cod de statut `200` `OK` trebuie "
"trimis clientului cu un câmp `Content-type` setat ca `application/json`."
#: ../../../developer/name-server-protocol.md:46
msgid ""
"The body is a JSON documents with 2 string attributes : `name` and `addr`. "
"`name` is equal to the one requested and `addr` is an hexadecimal "
"representation of the Jami ID prefixed with `0x`."
msgstr ""
"Corpul este un document JSON cu 2 atribute de șir: `name` și `addr`. `name` "
"este egal cu cel solicitat și `addr` este o reprezentare hexadecimală a ID-"
"ului Jami prefixată cu `0x`."
#: ../../../developer/name-server-protocol.md:50
#: ../../../developer/name-server-protocol.md:98
msgid "In our example, the JSON answer would be:"
msgstr "În exemplul nostru, răspunsul JSON ar fi:"
#: ../../../developer/name-server-protocol.md:59
#: ../../../developer/name-server-protocol.md:106
msgid "Response (Not found)"
msgstr "Răspuns (nu găsit)"
#: ../../../developer/name-server-protocol.md:61
msgid ""
"If the name is not found, a response with status code `404` `Not` `Found` "
"must be sent to the client with a `Content-type` field set as "
"`application/json`."
msgstr ""
"Dacă numele nu este găsit, un răspuns cu codul de statut `404` `Not` `Found`"
" trebuie trimis clientului cu un câmp `Content-type` setat ca "
"`application/json`."
#: ../../../developer/name-server-protocol.md:65
#: ../../../developer/name-server-protocol.md:112
msgid ""
"The body is a JSON documents with 1 string attribute : `error`. This "
"attribute is filled with an error message that explains the error (and could"
" be displayed in the client in the future)."
msgstr ""
"Corpul este un document JSON cu un atribut de șiră: `error`. Acest atribut "
"este completat cu un mesaj de eroare care explică eroarea (și ar putea fi "
"afișat în client în viitor)."
#: ../../../developer/name-server-protocol.md:69
#: ../../../developer/name-server-protocol.md:116
msgid "On the reference implementation, the returned document is:"
msgstr ""
"În ceea ce privește punerea în aplicare a referinței, documentul returnat "
"este:"
#: ../../../developer/name-server-protocol.md:77
msgid "Querying an address"
msgstr "Cererea unei adrese"
#: ../../../developer/name-server-protocol.md:80
msgid ""
"This service is a reverse lookup. You query for an address and a username "
"is returned if one is registered on the name server."
msgstr ""
"Acest serviciu este o căutare inversă. Cereți o adresă și un nume de "
"utilizator este returnat dacă unul este înregistrat pe serverul de nume."
#: ../../../developer/name-server-protocol.md:85
msgid ""
"A request for the ID `jami:29347542eb07159f316577e1ae16243d152f6b7b` is a "
"`GET` request with `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* as "
"the URI."
msgstr ""
"O cerere de identificare `jami:29347542eb07159f316577e1ae16243d152f6b7b` "
"este o cerere `GET` cu `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* "
"ca URI."
#: ../../../developer/name-server-protocol.md:91
msgid ""
"If the address corresponds to a username, a response with status code `200` "
"`OK` must be sent to the client with a `Content-type` field set as "
"`application/json`."
msgstr ""
"Dacă adresa corespunde unui nume de utilizator, un răspuns cu cod de statut "
"`200` `OK` trebuie trimis clientului cu un câmp `Content-type` setat ca "
"`application/json`."
#: ../../../developer/name-server-protocol.md:95
msgid ""
"The body is a JSON documents with 1 string attribute : `name`. The value of"
" this field is the name registered to this address"
msgstr ""
"Corpul este un document JSON cu un atribut de știre: `name`. Valoarea "
"acestui câmp este numele înregistrat la această adresă"
#: ../../../developer/name-server-protocol.md:108
msgid ""
"If the address is not found, a response with status code `404` `Not` `Found`"
" must be sent to the client with a `Content-type` field set as "
"`application/json`."
msgstr ""
"Dacă adresa nu este găsită, un răspuns cu codul de statut `404` `Not` "
"`Found` trebuie trimis clientului cu un câmp `Content-type` setat ca "
"`application/json`."
#: ../../../developer/name-server-protocol.md:124
msgid "Registering a name"
msgstr "Înregistrarea unui nume"
#: ../../../developer/name-server-protocol.md:127
msgid ""
"This part of the protocol is used to register a new name/address pair. It is"
" used on the main public registry but may be optional in a custom "
"implementation."
msgstr ""
"Această parte a protocolului este utilizată pentru a înregistra o nouă "
"pereche de nume/adresse."
#: ../../../developer/name-server-protocol.md:133
msgid ""
"A request for registering the name `foobar` is a `POST` request with "
"`/name/`*`foobar`* as the URI. The header attribute `Content-type` must be "
"set to `application/json`."
msgstr ""
"O cerere de înregistrare a numelui `foobar` este o cerere `POST` cu "
"`/name/`*`foobar`* ca URI. Atributul de titlu `Content-type` trebuie setat "
"la `application/json`."
#: ../../../developer/name-server-protocol.md:137
msgid ""
"The body of the request is a JSON document with 2 string attributes: `addr` "
"and `owner`. `addr` contains the Jami ID prefixed with `0x` and `owner` is "
"the name to be registered."
msgstr ""
"Corpul cererii este un document JSON cu 2 atribute de șir: `addr` și "
"`owner`. `addr` conține identificatorul Jami prefixat cu `0x` și `owner` "
"este numele care trebuie înregistrat."
#: ../../../developer/name-server-protocol.md:141
msgid "An example for `foobar` could be:"
msgstr "Un exemplu pentru `foobar` ar putea fi:"
#: ../../../developer/name-server-protocol.md:152
msgid ""
"If the name/address pair is successfully registered, a response with status "
"code `200` `OK` must be sent to the client with a `Content-type` field set "
"as `application/json`."
msgstr ""
"Dacă perechea de nume/adresa este înregistrată cu succes, un răspuns cu "
"codul de statut `200` `OK` trebuie trimis clientului cu un câmp `content-"
"type` setat ca `application/json`."
#: ../../../developer/name-server-protocol.md:156
msgid ""
"The body contain a JSON document with 1 boolean attribute `success` set to "
"`true`."
msgstr ""
"Corpul conține un document JSON cu 1 atribut boolean `success` setat la "
"`true`."
#: ../../../developer/name-server-protocol.md:159
msgid "As an example:"
msgstr "Ca exemplu:"
#: ../../../developer/name-server-protocol.md:167
msgid ""
"Further attempts to query the name or the address should then be successful."
msgstr ""
"Încercările ulterioare de a consulta numele sau adresa ar trebui să aibă "
"succes."
#: ../../../developer/name-server-protocol.md:170
msgid "Response (Bad request)"
msgstr "Răspuns (încercare negativă)"
#: ../../../developer/name-server-protocol.md:172
msgid ""
"If the registration cannot be achieved because of an error in the request "
"(formatting, missing attribute, etc.), a response with status code `400` "
"`Bad` `Request` must be sent to the client with a `Content-type` field set "
"as `application/json`."
msgstr ""
"Dacă înregistrarea nu poate fi realizată din cauza unei erori în cerere "
"(formatizare, caracterul lipsit, etc.), un răspuns cu cod de statut `400` "
"`Bad` `Request` trebuie trimis clientului cu un câmp `content-type` setat ca"
" `application/json`."
#: ../../../developer/name-server-protocol.md:177
msgid ""
"The body is a JSON documents with 2 attributes: `success` which is a boolean"
" and `error` which is a string. `success` is set to `false` and `error` is "
"filled with an error message that explains the error (and could be displayed"
" in the client in the future)."
msgstr ""
"Corpul este un document JSON cu 2 atribute: `success` care este un boolean "
"și `error` care este un șir. `success` este setat la `false` și `error` este"
" umplut cu un mesaj de eroare care explică eroarea (și ar putea fi afișat în"
" client în viitor)."
#: ../../../developer/name-server-protocol.md:182
msgid "For an invalid formatting of the username, the body could be:"
msgstr ""
"Pentru o formatizare invalidă a numelui de utilizator, corpul ar putea fi:"
#: ../../../developer/name-server-protocol.md:191
msgid "Response (Forbidden)"
msgstr "Răspuns (interzis)"
#: ../../../developer/name-server-protocol.md:193
msgid ""
"If the registration cannot be achieved because the name is already taken, a "
"response with status code `403` `Forbidden` must be sent to the client with "
"a `Content-type` field set as `application/json`."
msgstr ""
"Dacă înregistrarea nu poate fi realizată deoarece numele este deja luat, un "
"răspuns cu cod de statut `403` `Ibidden` trebuie trimis clientului cu un "
"câmp `Content-type` setat ca `application/json`."
#: ../../../developer/name-server-protocol.md:197
msgid ""
"The body is a JSON documents with 3 attributes: `success` which is a boolean"
" set to `false`, `name` and `addr` which are both strings replicated from "
"the original request."
msgstr ""
"Corpul este un document JSON cu 3 atribute: `success` care este un set "
"boolean de `false`, `name` și `addr` care sunt ambele șiruri replicate din "
"cererea inițială."
#: ../../../developer/name-server-protocol.md:201
msgid ""
"Registering `foobar`, with it being already registered, would lead to the "
"following response:"
msgstr ""
"Înregistrarea `foobar`, având în vedere că a fost deja înregistrată, ar duce"
" la următorul răspuns:"
#: ../../../developer/name-server-protocol.md:212
msgid "Some links"
msgstr "Unele legături"
#: ../../../developer/name-server-protocol.md:215
msgid ""
"{gitlab-project}`jami-nameservice`: reference NodeJS implementation used by "
"`ns.jami.net` and querying an Ethereum node."
msgstr ""
"{gitlab-project}`jami-nameservice`: implementarea de referință NodeJS "
"utilizată de `ns.jami.net` și consultarea unui nod Ethereum."
#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:401
msgid "Protocol"
msgstr "Protocolul"
#: ../../../developer/protocol.md:4
msgid "Jami account creation"
msgstr ""
#: ../../../developer/protocol.md:7
msgid ""
"A **Jami account** is defined by an **RSA key pair** with a key length of at"
" least 4096 bits."
msgstr ""
#: ../../../developer/protocol.md:10
msgid ""
"The standard x509 160-bits fingerprint of the account public key is called "
"the **RingID**."
msgstr ""
"Amprenta standard de 160 de biți x509 a cheii publice a contului se numește "
"**RingID**."
#: ../../../developer/protocol.md:13
msgid ""
"The account public key is used as the subject of an x509 certificate that "
"must be valid, have the Certificate Authority flag set, and can be self-"
"signed. This certificate is called the **Jami account certificate**."
msgstr ""
#: ../../../developer/protocol.md:18
msgid ""
"The subject UID field of the account certificate must be the hexadecimal "
"form of the public key fingerprint. The issuer UID field must be the "
"hexadecimal form of the issuer public key fingerprint."
msgstr ""
"Câmpul UID subiect al certificatului de cont trebuie să fie forma "
"hexadecimală a amprentei digitale cu cheie publică."
#: ../../../developer/protocol.md:22
msgid "Persisting the account"
msgstr "Continuarea contului"
#: ../../../developer/protocol.md:24
msgid ""
"Persisting a Jami account private key and certificate is implementation "
"defined."
msgstr ""
#: ../../../developer/protocol.md:27
msgid ""
"Access to a saved Jami account private key must be authenticated and "
"authorized. Authentication and authorization method to access the account "
"private key is implementation defined."
msgstr ""
#: ../../../developer/protocol.md:31
msgid "Adding a device to a Jami account"
msgstr ""
#: ../../../developer/protocol.md:33
msgid "*See [RFC 5280](https://tools.ietf.org/html/rfc5280)*"
msgstr "*Vezi [RFC 5280]*https://tools.ietf.org/html/rfc5280)*"
#: ../../../developer/protocol.md:35
msgid ""
"A **device** is defined by an RSA key pair with a key length of at least "
"4096 bits."
msgstr ""
"Un dispozitiv** este definit de o pereche de chei RSA cu o lungime de chei "
"de cel puțin 4096 de bits."
#: ../../../developer/protocol.md:38
msgid ""
"A **device certificate** is defined as an x509 certificate whose subject is "
"a device public key, signed with an account private key. The certificate "
"MUST be valid. The issuer UID field MUST be the hexadecimal form of the "
"account public key fingerprint."
msgstr ""
"Un certificat de dispozitiv** este definit ca un certificat x509 al cărui "
"obiect este o cheie publică a dispozitivului, semnată cu o cheie privată a "
"contului. certificatul trebuie să fie valabil. câmpul UID al emitentului "
"trebuie să fie forma hexadecimală a amprentei digitale a cheiei publice a "
"contului."
#: ../../../developer/protocol.md:43
msgid ""
"Persisting a device private key and certificate is implementation defined. "
"Access to a saved device private key should be authenticated. Authentication"
" method to access the device private key is implementation defined."
msgstr ""
"Perseverează cheia privată a dispozitivului și certificatul este "
"implementarea definită. Accesul la o cheie privată a dispozitivului salvat "
"trebuie autentificat. Metodul de autentificare pentru a accesa cheia privată"
" a dispozitivului este implementarea definită."
#: ../../../developer/protocol.md:48
msgid "Removing a device from a Jami account"
msgstr ""
#: ../../../developer/protocol.md:50
msgid ""
"A device can be \"removed\" from a Jami account through revocation of the "
"device certificate. Revoked device certificates are added to one or more "
"standard x509 Certificate Revocation List (CRL). CRLs for revoked device "
"must be valid and signed with the corresponding CA key, which is the Jami "
"account private key."
msgstr ""
#: ../../../developer/protocol.md:56
msgid "Account transmission format"
msgstr "Formatul de transmitere a contului"
#: ../../../developer/protocol.md:58
msgid ""
"The **account archive format** defines how to serialize an account private "
"key for transmission, for instance to sign a new device certificate."
msgstr ""
"** Formatul de arhivă de cont** definește modul de a serializa o cheie "
"privată de cont pentru transmisie, de exemplu pentru a semna un certificat "
"de dispozitiv nou."
#: ../../../developer/protocol.md:62
msgid ""
"The account archive is an encrypted JSON object with the following "
"structure:"
msgstr "Arhiva contului este un obiect JSON criptat cu următoarea structură:"
#: ../../../developer/protocol.md:73
msgid ""
"The JSON object can contain additional implementation-defined key-value "
"pairs. Implementation-defined key names shouldn't start with \"ring\"."
msgstr ""
"Obiectul JSON poate conține perechi de valori de cheie definite de "
"implementare. Numele de cheie definite de implementare nu ar trebui să "
"înceapă cu \"ring\"."
#: ../../../developer/protocol.md:76
msgid "The string JSON object is encrypted using a key defined as :"
msgstr "Obiectul JSON de șir este criptat folosind o cheie definită ca:"
#: ../../../developer/protocol.md:83
msgid ""
"Where PIN is a random 32bits number in hexadecimal form, \"+\" is string "
"concatenation, timestamp is the current UNIX timestamp divided by 1200 (20 "
"minutes) and password is a user-chosen password."
msgstr ""
"În cazul în care PIN este un număr aleatoriu de 32 de biți în formă "
"hexadecimală, \"+\" este concatenare de știre, timestamp este timestampul "
"actual UNIX împărțit de 1200 (20 minute) și parola este o parola aleasă de "
"utilizator."
#: ../../../developer/protocol.md:87
msgid ""
"The PIN should be shown to the user to be copied manually on the new "
"physical device along with the password."
msgstr ""
"Numărul de identificare PIN trebuie arătat utilizatorului pentru a fi copiat"
" manual pe noul dispozitiv fizic împreună cu parola."
#: ../../../developer/protocol.md:90
msgid "Contacting another account"
msgstr "Contactați un alt cont"
#: ../../../developer/protocol.md:93
msgid "ICE descriptor exchange over OpenDHT"
msgstr "Schimbarea descriptorilor ICE cu OpenDHT"
#: ../../../developer/protocol.md:95
msgid "**Listening for incoming calls**"
msgstr "**Sucerţi apelurile primite**"
#: ../../../developer/protocol.md:97
msgid ""
"A device listens for incoming call by performing a listen OpenDHT operation "
"on"
msgstr ""
"Un dispozitiv ascultă apelul intrând prin efectuarea unei operații OpenDHT "
"ascultă pe"
#: ../../../developer/protocol.md:100
msgid "`h(\"callto\"+deviceID)`"
msgstr "`h(\"call\"+deviceID) `"
#: ../../../developer/protocol.md:102
msgid ""
"where h is SHA1, \"+\" is the string concatenation and deviceID is the "
"hexadecimal form of the deviceID."
msgstr ""
"unde h este SHA1, \"+\" este concatenarea de știre și deviceID este forma "
"hexadecimală a deviceID."
#: ../../../developer/protocol.md:105
msgid ""
"Received OpenDHT values that are not encrypted or not properly signed must "
"be dropped. The value must be encrypted with the called device public key "
"and signed with the calling device private key according to OpenDHT "
"specifications."
msgstr ""
"Valorile OpenDHT primite care nu sunt criptate sau semnate corect trebuie să"
" fie eliminate. Valorul trebuie criptat cu cheia publică a dispozitivului "
"numit și semnat cu cheia privată a dispozitivului numit în conformitate cu "
"specificațiile OpenDHT."
#: ../../../developer/protocol.md:110
msgid "**Sending the Initial Offer**"
msgstr "**Senderea ofertei inițiale**"
#: ../../../developer/protocol.md:112
msgid "*See [RFC 5245](https://tools.ietf.org/html/rfc5245)*"
msgstr "*Vezi [RFC 5245]*https://tools.ietf.org/html/rfc5245)*"
#: ../../../developer/protocol.md:114
msgid ""
"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
"for NAT traversal."
msgstr ""
"RFC 5245 definește ICE (Interactive Connectivity Establishment), un protocol"
" pentru traversarea NAT."
#: ../../../developer/protocol.md:117
#: ../../../developer/technical-overview.md:173
msgid ""
"ICE is used in Jami to establish a peer-to-peer communication between two "
"devices."
msgstr ""
"ICE este folosit în Jami pentru a stabili o comunicare peer-to-peer între "
"două dispozitive."
#: ../../../developer/protocol.md:120
msgid ""
"The calling device gathers candidates and build an Initial Offer according "
"to the ICE specifications and starts the ICE negotiation process."
msgstr ""
"Dispozitivul de apel colectează candidați și construiește o ofertă inițială "
"în conformitate cu specificațiile ICE și inițiază procesul de negociere ICE."
#: ../../../developer/protocol.md:124
msgid ""
"The calling device puts the encrypted ICE offer (the Initial Offer) on the "
"DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form of the "
"called deviceID."
msgstr ""
"Dispozitivul de apel pune oferta criptată a ICE (Oferta inițială) pe DHT la "
"h(\"callto\"+deviceID) unde deviceID este forma hexadecimală a numitului "
"deviceID."
#: ../../../developer/protocol.md:128
msgid "**ICE serialization format**"
msgstr "** Format de serializare ICE**"
#: ../../../developer/protocol.md:130
msgid ""
"ICE messages exchanged between peers during a call setup use following "
"format. An ICE message is a chunk of binary data, following "
"[msgpack](http://msgpack.org/) data format."
msgstr ""
"Mesajele ICE schimbate între colegi în timpul unei configurări de apeluri "
"folosesc formatul următor."
#: ../../../developer/protocol.md:134
msgid ""
"This protocol is a compound of msgpack values, successively packed in this "
"order:"
msgstr ""
"Acest protocol este un compus de valori msgpack, ambalate succesiv în "
"această ordine:"
#: ../../../developer/protocol.md:138
msgid ""
"an integer giving the version of ICE message format protocol used for the "
"rest of the data. Current defined protocol version is **1**."
msgstr ""
"un număr întreg care indică versiunea protocolului format de mesaje ICE "
"utilizată pentru restul datelor."
#: ../../../developer/protocol.md:139
msgid ""
"a 2-elements array of strings of the ICE local session ufrag and the ICE "
"local session password"
msgstr ""
"o serie de șiruri de două elemente a sesiunii locale ICE ufrag și a parolei "
"sesiunii locale ICE"
#: ../../../developer/protocol.md:140
msgid "an integer giving the number of components in the ICE session"
msgstr "un număr întreg care indică numărul de componente din sesiunea ICE"
#: ../../../developer/protocol.md:141
msgid ""
"an array of string, of the previous number entries, where each string "
"describe the ICE candidate, formated as an \"a=\" line (without the \"a=\" "
"header) described in [rfc5245, section "
"4.3](https://tools.ietf.org/html/rfc5245#page-26)"
msgstr ""
"o serie de șiruri, din entitățile numărate anterioare, în care fiecare șir "
"descrie candidatul ICE, format ca linie \"a=\" (fără titlul \"a=\") descrisă"
" în [rfc5245, secțiunea 4.3](https://tools.ietf.org/html/rfc5245#page-26)"
#: ../../../developer/protocol.md:143
msgid "**Sending the Answer**"
msgstr "**Suntem în stare să răspundem**"
#: ../../../developer/protocol.md:145
msgid ""
"Upon reception of the encrypted and signed Initial ICE Offer (through the "
"listen operation), a called device should perform authorization checks of "
"the calling device, identified as the Initial Offer signer. Authorization "
"rules are implementation defined, but a typical implementation would "
"authorize known or trusted contacts."
msgstr ""
"La primirea ofertei inițiale ICE criptate și semnate (prin operațiunea de "
"ascultare), un dispozitiv numit trebuie să efectueze verificări de "
"autorizare a dispozitivului de apel, identificat ca semnatarul ofertei "
"inițiale."
#: ../../../developer/protocol.md:151
#: ../../../developer/technical-overview.md:232
msgid ""
"If the calling device is not authorized or if for any implementation defined"
" reason the called device refuses the incoming connection request, the "
"called device must ignore the Initial Offer and may log the event."
msgstr ""
"Dacă dispozitivul de apel nu este autorizat sau dacă, din orice motiv "
"definit de implementare, dispozitivul de apel refuză cererea de conexiune "
"intrată, dispozitivul de apel trebuie să ignore oferta inițială și poate "
"înregistra evenimentul."
#: ../../../developer/protocol.md:156
#: ../../../developer/technical-overview.md:236
msgid ""
"If the called device authorizes the caller and wish to accept the connection"
" it must build an ICE answer, start the ICE negotiation process and send the"
" encrypted and signed ICE answer at the same DHT key."
msgstr ""
"Dacă dispozitivul chemat autorizează apelantul și dorește să accepte "
"conexiunea, acesta trebuie să construiască un răspuns ICE, să înceapă "
"procesul de negociere ICE și să trimită răspunsul ICE criptat și semnat la "
"aceeași cheie DHT."
#: ../../../developer/protocol.md:161
#: ../../../developer/technical-overview.md:241
msgid "DTLS negotiation"
msgstr "Negocierea DTLS"
#: ../../../developer/protocol.md:163
msgid ""
"Once a peer-to-peer communication channel has been established, the called "
"device listens on it for incoming DTLS connections (acting as a DTLS server)"
" while the caller initiates an outgoing DTLS connection (acting as a DTLS "
"client)."
msgstr ""
"Odată ce a fost stabilit un canal de comunicare peer-to-peer, dispozitivul "
"numit ascultă de el pentru conexiunile DTLS intrante (care acționează ca "
"server DTLS), în timp ce apelantul inițiază o conexiune DTLS ieșitoare (care"
" acționează ca client DTLS)."
#: ../../../developer/protocol.md:168
msgid ""
"The DTLS communication must be RFC6347 compliant "
"([1](https://tools.ietf.org/html/rfc6347))."
msgstr ""
"Comunicarea DTLS trebuie să fie conformă cu RFC6347 "
"([1](https://tools.ietf.org/html/rfc6347))."
#: ../../../developer/protocol.md:171
msgid ""
"Peers must only support PFS cypher suites. The set of supported cypher "
"suites is implementation defined but should include at least ECDHE-AES-GCM "
"(TODO: specify the exact suites recommended to support)."
msgstr ""
"Setul de cipere suportate este definit de implementare, dar trebuie să "
"includă cel puțin ECDHE-AES-GCM (TODO: specificați suitele exacte "
"recomandate pentru suport)."
#: ../../../developer/protocol.md:175
msgid ""
"During the DTLS handshake, both peers must provide their respective device "
"certificate chain and must authenticate the other peer, checking that its "
"public key is the same used during the DHT ICE exchange."
msgstr ""
"În timpul strângerii de mână a DTLS, ambii colegi trebuie să furnizeze "
"lanțul respectiv de certificări de dispozitiv și trebuie să autentifice "
"celălalt colegi, verificând dacă cheia sa publică este aceeași utilizată în "
"timpul schimbului DHT ICE."
#: ../../../developer/protocol.md:179
msgid "SIP call"
msgstr "Apel SIP"
#: ../../../developer/protocol.md:181
msgid "*See [Important\\_RFC](Important_RFC \"wikilink\")*"
msgstr "*Vezi [Important\\_RFC](Important_RFC \"wikilink\")*"
#: ../../../developer/protocol.md:183
msgid ""
"Once an encrypted and authenticated peer-to-peer communication channel is "
"available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) must be"
" used to place a call and send messages. The caller might send a SIP INVITE "
"as soon as the DTLS channel is established."
msgstr ""
"Odată ce este disponibil un canal de comunicare peer-to-peer criptat și "
"autentificat, protocolul SIP [2](https://tools.ietf.org/html/rfc3261) "
"trebuie utilizat pentru a plasa un apel și a trimite mesaje."
#: ../../../developer/protocol.md:188
#: ../../../developer/technical-overview.md:277
msgid "The SIP implementation must support ICE and SRTP."
msgstr "Implementarea PIP trebuie să sprijine ICE și SRTP."
#: ../../../developer/protocol.md:190
#: ../../../developer/technical-overview.md:278
msgid ""
"Supported codecs are implementation defined, but Jami clients should support"
" the Opus audio coded and the H264 video codec."
msgstr ""
"Codec-urile suportate sunt definite implementare, dar clienții Jami ar "
"trebui să sprijine codul audio Opus și codec-ul video H264."
#: ../../../developer/protocol.md:193
#: ../../../developer/technical-overview.md:280
msgid ""
"SRTP must be used when negotiating media with SIP, using a new random key "
"for each media and each negotiation. ICE should be used when negotiating "
"media with SIP."
msgstr ""
"SRTP trebuie utilizat în timpul negocierilor cu SIP, folosind o nouă cheie "
"aleatorie pentru fiecare mijloc de comunicare și pentru fiecare negociere."
#: ../../../developer/protocol.md:197
msgid "Cryptographic primitives"
msgstr "Primitive criptografice"
#: ../../../developer/protocol.md:200
msgid "Password stretching"
msgstr "Strângere de parole"
#: ../../../developer/protocol.md:202
msgid ""
"*See [Argon2 specifications](https://github.com/P-H-C/phc-winner-"
"argon2/blob/master/argon2-specs.pdf)*"
msgstr ""
"*Vezi [specificatii Argon2](https://github.com/P-H-C/phc-winner-"
"argon2/blob/master/argon2-specs.pdf) *"
#: ../../../developer/protocol.md:205
msgid ""
"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = 2\\^16"
" (64 MiB), mono-threaded, to generate a 512 bits hash."
msgstr ""
"Parolele sunt întinsă folosind argon2i folosind t\\_cost = 16, m\\_cost = "
"2\\^16 (64 MiB), mono-threaded, pentru a genera un hash de 512 de bits."
#: ../../../developer/protocol.md:208
msgid ""
"The result is then hashed again using SHA{1, 256, 512} depending on the "
"requested key size."
msgstr ""
"Rezultatul este apoi hashed din nou folosind SHA{1, 256, 512} în funcție de "
"dimensiunea cheiei solicitate."
#: ../../../developer/protocol.md:211
msgid "Encryption"
msgstr "Criptare"
#: ../../../developer/protocol.md:213
msgid "Using a provided key (128, 192 or 256 bits)"
msgstr "Utilizarea unei cheie furnizate (128, 192 sau 256 de bits)"
#: ../../../developer/protocol.md:215
msgid ""
"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
"for each encryption."
msgstr ""
"Criptarea utilizează AES-GCM standard, implementată de Nettle, folosind un "
"IV aleatoriu pentru fiecare criptare."
#: ../../../developer/protocol.md:218
msgid "Using a text password"
msgstr "Folosind o parolă text"
#: ../../../developer/protocol.md:220
msgid ""
"The password is stretched to generate a 256 bits key and a random salt of "
"128 bits."
msgstr ""
"Parola este întinsă pentru a genera o cheie de 256 de biți și o sare "
"aleatorie de 128 de biți."
#: ../../../developer/protocol.md:223
msgid ""
"The input data is encrypted using AES-GCM (see above) and the salt is "
"appended at the beginning of the resulting cypher-text."
msgstr ""
"Datele de intrare sunt criptate folosind AES-GCM (vezi mai sus) și sare este"
" adaugată la începutul textului cipher-resultant."
#: ../../../developer/protocol.md:226
msgid "During a call"
msgstr "În timpul unei apeluri"
#: ../../../developer/protocol.md:228
msgid ""
"Audio/video data are exchanged using encrypted RTP channels between peers."
msgstr ""
"Datele audio/video sunt schimbate prin canalele RTP criptate între colegi."
#: ../../../developer/protocol.md:231
msgid ""
"The protocol is a classic SRTP, with following supported crypto suites:"
msgstr ""
"Protocolul este un SRTP clasic, cu următoarele criptomonede suportate:"
#: ../../../developer/protocol.md:233
msgid "Jami account force AES\\_CM\\_128\\_HMAC\\_SHA1\\_80"
msgstr ""
#: ../../../developer/protocol.md:234
msgid "SIP can use AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 or AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
msgstr "SIP poate folosi AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 sau AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
#: ../../../developer/protocol.md:237
msgid ""
"The master key and salt is a random number, different for each call. On "
"call's master key is constant during the full live of a call."
msgstr ""
"Cheia principală și sare este un număr aleatoriu, diferit pentru fiecare "
"apel. Cheia principală a apelului este constantă pe parcursul întregii "
"perioade de activare a apelului."
#: ../../../developer/protocol.md:240
msgid ""
"The keys are exchanged using SDES method: keys are written into the SIP SDP "
"messages during the SIP INVITE negotiation. When SDES is used, Ring forces "
"the underlaying transport to be secure (encrypted) to not disclose these "
"keys. Jami supports DTLS natively for SIP and Ring accounts for such. The "
"call cannot be done if this condition is not fulfilled."
msgstr ""
#: ../../../developer/qt-qml-coding-style.md:1
msgid "Qt and QML coding style"
msgstr "Stilul de codare Qt și QML"
#: ../../../developer/qt-qml-coding-style.md:4
msgid "Qt/c++"
msgstr "Qt/c++"
#: ../../../developer/qt-qml-coding-style.md:5
msgid "Signal and slot naming"
msgstr "Numirea semnalului și a slotului"
#: ../../../developer/qt-qml-coding-style.md:6
msgid ""
"Both signals and slots should use camelCase. A signal should use the simple "
"past tense or past participle of some verb, likely prefixed by a short "
"subject. A corresponding slot should be the signal prefixed with the word "
"\"on\" and not the word \"slot\". Here are some examples:"
msgstr ""
"În cazul în care un semnal este folosit, trebuie să fie un semnal cu un "
"semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu "
"un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal "
"cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un "
"semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu "
"un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal "
"cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un "
"semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu "
"un semnal cu un semnal cu un semnal cu un semnal cu un semnal cu un semnal "
"cu un semnal cu un semnul cu un semnul cu un semnul cu un semnul cu un "
"semnul cu un semnul cu un semnul cu un semnul cu un semnul cu un semnul cu "
"un semnul cu un semnul cu un semnul cu un semnul cu un semnul cu un semnul "
"cu un semnul cu un semnul cu un semnul cu un semnul cu un semnul cu un "
"semnul cu un semnul cu un semnul."
#: ../../../developer/qt-qml-coding-style.md:29
#: ../../../developer/qt-qml-testing-tools.md:4
#: ../../../developer/qt-qml-testing-tools.md:105
msgid "QML"
msgstr "CML"
#: ../../../developer/qt-qml-coding-style.md:30
msgid "Code formatting"
msgstr "Formatarea codului"
#: ../../../developer/qt-qml-coding-style.md:31
msgid ""
"The Qt 5.15.0 version of qmlformat has some issues dealing with comment "
"sections and currently does not discriminate against max columns, so we will"
" continue to format using these guidelines for now. The following is a "
"comprehensive sample component, adapted from https://doc.qt.io/qt-5/qml-"
"codingconventions.html, that attempts to illustrate the ideally formatted "
"component."
msgstr ""
"Versiunea Qt 5.15.0 a formatului qml are unele probleme cu secțiunile de "
"comentarii și în prezent nu discriminează coloanele max, așa că vom continua"
" să formatăm folosind aceste ghiduri pentru moment. Următorul este o "
"componentă de exemplu cuprinzătoare, adaptată din "
"https://doc.qt.io/qt-5/qml-codingconventions.html, care încearcă să "
"ilustreze componenta formatată ideal."
#: ../../../developer/qt-qml-testing-tools.md:1
msgid "Qt and QML testing tools"
msgstr "Instrumente de testare Qt și QML"
#: ../../../developer/qt-qml-testing-tools.md:6
msgid ""
"qml_tests launch all the tests related to the interface. The daemon and "
"libclient SHOULD be trusted in this part, we do not want to test scenarios "
"related to connectivity. Ideally, we should work on fake data to avoid "
"depending on network events. This may be difficult sometimes and some tools "
"may be missed because tests in this part are a work in progress. Here are "
"some tools/principles to be able to quickly write tests."
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:8
msgid "Mocking Data"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:10
msgid ""
"Let's say I want to test the UI for an AccountComboBox depending on a list "
"of accounts. Instead of creating accounts, we should create a fake list. The"
" easy way to do this is to serialize/unserialize a real AccountComboBox "
"model. First, we need to get a serialized model:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:44
msgid ""
"`saveModel()` will print the serialized structure whenever the developer "
"will click on the combobox. Here's the result:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:50
msgid ""
"Now, the developper can easily use it in a test. The best way is to add this"
" data in a variable or a separated js file (cf https://doc.qt.io/qt-6/qtqml-"
"documents-networktransparency.html). And use it in a test e.g.:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:77
msgid "C++"
msgstr "C++"
#: ../../../developer/qt-qml-testing-tools.md:79
msgid "Google Test"
msgstr "Testul Google"
#: ../../../developer/qt-qml-testing-tools.md:80
msgid "Google's c++ test framework."
msgstr "Cadru de testare C++ al Google."
#: ../../../developer/qt-qml-testing-tools.md:82
#: ../../../developer/qt-qml-testing-tools.md:109
msgid "Installation"
msgstr "Instalarea"
#: ../../../developer/qt-qml-testing-tools.md:83
msgid "Ubuntu / Debian: `apt install googletest libgtest-dev`"
msgstr "Ubuntu / Debian: `apt instalare google test libgtest-dev`"
#: ../../../developer/qt-qml-testing-tools.md:86
#: ../../../developer/qt-qml-testing-tools.md:112
msgid "Example main.cpp"
msgstr "Exemplu main.cpp"
#: ../../../developer/qt-qml-testing-tools.md:107
msgid "QtQuickTest"
msgstr "QtQuickTest"
#: ../../../developer/qt-qml-testing-tools.md:110
msgid "Ubuntu / Debian: `apt install qml-module-qqtest libqt5quicktest5`"
msgstr "Ubuntu / Debian: `apt instala qml-module-qqtest libqt5quicktest5`"
#: ../../../developer/release-process.md:1
msgid "Release process"
msgstr "Procesul de eliberare"
#: ../../../developer/release-process.md:4
msgid ""
"Each Jami sub-project has its own repository, build process, integration "
"cycle and so on. More over the **Jami architecture is split into two "
"independent modules**: LibRing *(daemon)* and clients."
msgstr ""
#: ../../../developer/release-process.md:8
msgid ""
"Having a unique revision is not a solution in this situation. The retained "
"idea is having a global \"state\" and **various updates per module**."
msgstr ""
"În această situație, o revizuire unică nu este o soluție. Ideea păstrată "
"este să aibă un \"stat\" global și ** diferite actualizări pe modul**."
#: ../../../developer/release-process.md:12
msgid ""
"For consistency, **each Jami module has to follow the same process** as "
"described in following points. But not all modules have to be modified in "
"same time."
msgstr ""
#: ../../../developer/release-process.md:18
msgid "**PROCESS FLOW:**"
msgstr "**CURUREA de proces:**"
#: ../../../developer/release-process.md:0
msgid "1"
msgstr "1"
#: ../../../developer/release-process.md:0
msgid "2"
msgstr "2"
#: ../../../developer/release-process.md:0
msgid "3"
msgstr "3"
#: ../../../developer/release-process.md:0
msgid "4"
msgstr "4"
#: ../../../developer/release-process.md:0
msgid "5"
msgstr "5"
#: ../../../developer/release-process.md:0
msgid "6"
msgstr "6"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:26
msgid "Redmine Ticket"
msgstr "Biletul pentru Redmine"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:33
msgid "Repository Preparation"
msgstr "Pregătirea depozitului"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:38
msgid "Testing"
msgstr "Testare"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:54
msgid "Push tags"
msgstr "Etichete de împingere"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:178
msgid "Advertisement"
msgstr "Anunţuri"
#: ../../../developer/release-process.md:29
msgid ""
"Create a new Task on redmine attached to the release story, for the right "
"sub-module. Set the title to \"Release Major.Minor.Micro\", with the "
"appropriate version number."
msgstr ""
"Creează o nouă sarcină pe redmine atașată la povestea de lansare, pentru "
"sub-modulele potrivite. Setă titlul în \"Release Major.Minor.Micro\", cu "
"numărul de versiune corespunzător."
#: ../../../developer/release-process.md:36
msgid "**This section was outdated and removed**"
msgstr "**Această secţiune a fost depăşită şi eliminată**"
#: ../../../developer/release-process.md:41
msgid "Remove any existing Jami installations from your machine."
msgstr ""
#: ../../../developer/release-process.md:42
msgid ""
"Start with clean git tree by running `git clean -d -f -x` from the top level"
" directory of the project."
msgstr ""
"Începe cu arborele de git curat prin executarea `git curat -d -f -x` din "
"directoriul de nivel superior al proiectului."
#: ../../../developer/release-process.md:44
msgid "Build and install the daemon and client, see How\\\\\\_to\\\\\\_build"
msgstr "Construiți și instalați daemon și client, vezi Cum\\\\\\_to\\\\\\_build"
#: ../../../developer/release-process.md:45
msgid ""
"Run the test suite in daemon and client, on different distributions and "
"machines."
msgstr "Fă testarea în daemon şi client, pe diferite distribuţii şi maşini."
#: ../../../developer/release-process.md:47
msgid "Run manual tests"
msgstr "Expunerea testelor manuale"
#: ../../../developer/release-process.md:48
msgid "Try registering and using different accounts."
msgstr "Încearcă să te înregistrezi şi să foloseşti conturi diferite."
#: ../../../developer/release-process.md:49
msgid ""
"Try making calls between Jami and other free softphones (Ekiga, Linphone), "
"as well as hardware VoIP phones."
msgstr ""
#: ../../../developer/release-process.md:51
msgid ""
"To catch uninitialized values being used, memory leaks, invalid frees, etc. "
"run `valgrind --track-origins=yes --db-attach=yes ./bin/dring`"
msgstr ""
"Pentru a capta valorile neinițiate utilizate, scurgeri de memorie, scurgeri "
"invalide, etc. rulați `valgrind --track-origin=yes --db-"
"attach=yes./bin/dring`"
#: ../../../developer/release-process.md:57
msgid "`git push --tags`"
msgstr "`git împinge --tags`"
#: ../../../developer/release-process.md:68
#: ../../../developer/release-process.md:119
msgid "RPM"
msgstr "RPM"
#: ../../../developer/release-process.md:84
#: ../../../developer/release-process.md:137
msgid "DEB"
msgstr "DEB"
#: ../../../developer/release-process.md:98
#: ../../../developer/release-process.md:162
msgid "Release"
msgstr "Eliminarea"
#: ../../../developer/release-process.md:100
#: ../../../developer/release-process.md:165
msgid ""
"You just have to launch release script. This script launch build, download "
"and update files and repositories..."
msgstr "Trebuie doar să lansezi scriptul de lansare."
#: ../../../developer/release-process.md:121
msgid "vim ring-daemon.spec"
msgstr "Vim ring-daemon.spec"
#: ../../../developer/release-process.md:181
msgid ""
"When the packaging is finished, test that they are installable. Then "
"announce the release"
msgstr "După terminarea ambalajului, verificaţi dacă sunt instalabile."
#: ../../../developer/release-process.md:184
msgid "on the official website <https://ring.cx>"
msgstr "pe site-ul oficial <https://ring.cx>"
#: ../../../developer/release-process.md:185
msgid "on Twitter <https://twitter.com/JoinTheRing>"
msgstr "Pe Twitter <https://twitter.com/JoinTheRing>"
#: ../../../developer/release-process.md:186
msgid ""
"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring "
"Major.Minor.Patch released\""
msgstr ""
"prin e-mail la ring@lists.savoirfairelinux.net cu linia de subiect: \"Ring "
"Major.Minor.Patch Released\""
#: ../../../developer/setting-up-your-own-turn-server.md:1
msgid "Setting up your own TURN server"
msgstr "Configurarea propriului server TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:4
msgid ""
"Jami can be configured to use TURN or STUN servers ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) to establish a connection "
"between two peers."
msgstr ""
"Jami poate fi configurată pentru a utiliza serverele TURN sau STUN ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) pentru a stabili o conexiune "
"între doi colegi."
#: ../../../developer/setting-up-your-own-turn-server.md:8
msgid ""
"The default TURN server is \"turn.jami.net\", with username \"ring\", "
"password \"ring\", and realm \"ring\"."
msgstr ""
"Serverenul de tip TURN este \"turn.jami.net\", cu nume de utilizator "
"\"ring\", parola \"ring\" si domeniu \"ring\"."
#: ../../../developer/setting-up-your-own-turn-server.md:11
msgid ""
"In this guide, we will setup a [coturn](https://github.com/coturn/coturn) "
"server. There are other TURN/STUN server implementations available under a "
"free license, such as [TurnServer](http://turnserver.sourceforge.net/) and "
"[Restund](http://www.creytiv.com/restund.html)."
msgstr ""
"În acest ghid, vom instala un server "
"[coturn]https://github.com/coturn/coturn). Există alte implementări de "
"server TURN/STUN disponibile sub o licență gratuită, cum ar fi "
"[TurnServer](http://turnserver.sourceforge.net/) și "
"[Restund](http://www.creytiv.com/restund.html)."
#: ../../../developer/setting-up-your-own-turn-server.md:17
msgid "Installing"
msgstr "Instalare"
#: ../../../developer/setting-up-your-own-turn-server.md:19
msgid ""
"COTURN is available in most Linux distributions. On Debian, install it with "
"the following command:"
msgstr ""
"COTURN este disponibil în majoritatea distribuțiilor Linux. Pe Debian, "
"instalați-l cu următoarea comandă:"
#: ../../../developer/setting-up-your-own-turn-server.md:25
msgid "Configuring"
msgstr "Configurare"
#: ../../../developer/setting-up-your-own-turn-server.md:27
msgid "Here is a basic `turnserver.conf` file:"
msgstr "Iată un fișier de bază `turnserver.conf`:"
#: ../../../developer/setting-up-your-own-turn-server.md:38
msgid ""
"This also will function as a STUN server. The STUN server does not require a"
" username and password (STUN uses very little bandwidth)."
msgstr ""
"Acest lucru va funcționa și ca un server STUN. Serverenul STUN nu necesită "
"un nume de utilizator și parola (STUN folosește foarte puțină lățime de "
"bandă)."
#: ../../../developer/setting-up-your-own-turn-server.md:41
msgid "Creating users on your TURN server"
msgstr "Crearea utilizatorilor pe serverul TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:43
msgid ""
"To create users on your TURN server, use the `turnadmin` binary (this might "
"require superuser permissions)."
msgstr ""
"Pentru a crea utilizatori pe serverul TURN, folosiți binarul `turnadmin` "
"(aceasta poate necesita permisiuni superutilizatorului)."
#: ../../../developer/setting-up-your-own-turn-server.md:50
msgid "Launching the TURN server"
msgstr "Lansarea serverului TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:56
msgid "Configuring Jami to authenticate with the TURN server"
msgstr "Configurarea Jami pentru autentificare cu serverul TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:58
msgid ""
"You can configure Jami to use your TURN server from the advanced section of "
"your account settings:"
msgstr ""
"Puteți configura Jami pentru a utiliza serverul TURN din secțiunea avansată "
"a setărilor contului dvs.:"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Field"
msgstr "Câmpurile"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Value"
msgstr "Valor"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**server url**"
msgstr "** url server**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "host and port of your server"
msgstr "gazda și portul serverului dvs."
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "0.0.0.0:10000"
msgstr "0.0.0.0:10000"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**username**"
msgstr "**Nume de utilizator**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "username"
msgstr "Numele de utilizator"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "bob"
msgstr "Bob"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**password**"
msgstr "**Cază de pas**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "password"
msgstr "parola"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "secretpassword"
msgstr "parola secretă"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**realm**"
msgstr "Regatul"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "realm"
msgstr "regim"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "sfl"
msgstr "Sfl"
#: ../../../developer/submitting-your-first-patch.md:1
msgid "Submitting your first patch"
msgstr "Înscrii primul tău patch"
#: ../../../developer/submitting-your-first-patch.md:4
msgid "Setting up git and ssh"
msgstr "Configurarea git și ssh"
#: ../../../developer/submitting-your-first-patch.md:6
msgid "(**to work smoothly with Gerrit.**)"
msgstr "(** să lucreze fără probleme cu Gerrit.**)"
#: ../../../developer/submitting-your-first-patch.md:9
msgid "first see:"
msgstr "mai întâi vezi:"
#: ../../../developer/submitting-your-first-patch.md:11
msgid ""
"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the "
"Review>`"
msgstr ""
"{ref}`Crearea unei revizuiri gerrit <developer/working-with-gerrit:To Create"
" the Review>`"
#: ../../../developer/submitting-your-first-patch.md:13
msgid "SSH setup"
msgstr "Instalarea SSH"
#: ../../../developer/submitting-your-first-patch.md:15
msgid "https://review.jami.net/Documentation/user-upload.html#ssh"
msgstr "https://review.jami.net/Documentation/user-upload.html#ssh"
#: ../../../developer/submitting-your-first-patch.md:17
msgid "Generate a personal dedicated public / private key set."
msgstr "Generarea unui set de cheie private / publice dedicate personal."
#: ../../../developer/submitting-your-first-patch.md:22
msgid ""
"Your identification has been saved in `jami_gerrit_review_rsa`. Your public "
"key has been saved in `jami_gerrit_review_rsa.pub.`"
msgstr ""
"Identificarea dvs. a fost salvată în `jami_gerrit_review_rsa`. Cheia dvs. "
"publică a fost salvată în `jami_gerrit_review_rsa.pub.`"
#: ../../../developer/submitting-your-first-patch.md:25
msgid "Tell gerrit your public key"
msgstr "Spune-i lui Gerrit cheia ta publică."
#: ../../../developer/submitting-your-first-patch.md:26
msgid ""
"Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-"
"in=>OAuth Gitlab)"
msgstr ""
"Login la [gerrit](https://review.jami.net) prin contul Gitlab (Sign-"
"in=>OAuth Gitlab)"
#: ../../../developer/submitting-your-first-patch.md:27
msgid ""
"Follow the ssh key instructions found from (your) user options "
"[settings](https://review.jami.net/settings/)"
msgstr ""
"Urmați instrucțiunile cu cheia ssh găsite de la opțiunile de utilizator "
"[setings] (https://review.jami.net/settings/)"
#: ../../../developer/submitting-your-first-patch.md:29
msgid "Set up your local ssh (via `ssh-add` or in `~/.ssh/config`)"
msgstr "Configurați ssh-ul local (prin `ssh-add` sau în `~/.ssh/config`)"
#: ../../../developer/submitting-your-first-patch.md:30
msgid ""
"Test all of the above (ssh on the service or just try to clone a repo on "
"gerrit via ssh)"
msgstr ""
"Testarea tuturor celor de mai sus (ssh pe serviciul sau doar încercați să "
"cloneze un repo pe gerrit prin ssh)"
#: ../../../developer/submitting-your-first-patch.md:33
msgid "Your Repository"
msgstr "Repositoriul tău"
#: ../../../developer/submitting-your-first-patch.md:35
msgid ""
"This *assumes* you have moved any existing project clone out of the way."
msgstr ""
"Acest lucru *presupune* că ați mutat orice clon de proiect existent din "
"cale."
#: ../../../developer/submitting-your-first-patch.md:37
msgid ""
"Clone a (fresh) copy of the project. `git clone "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. `git "
"clone ssh://foo@review.jami.net:29420/jami-project.git`."
msgstr ""
"Clonați o copie (frescă) a proiectului. `git clonați "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; de exemplu"
" `git clonați ssh://foo@review.jami.net:29420/jami-project.git`."
#: ../../../developer/submitting-your-first-patch.md:38
msgid "Configure this clones local .git/config (optional)"
msgstr "Configurați acest clone local.git/config (opțional)"
#: ../../../developer/submitting-your-first-patch.md:39
msgid "Generate commit Change-Ids aka: commit-msg hook script"
msgstr "Generați commit-Ids de schimbare aka: commit-msg script de creștere"
#: ../../../developer/submitting-your-first-patch.md:42
msgid "A shell script, to be installed to .git/hooks/commit-msg."
msgstr "Un script de shell, care trebuie instalat pe.git/hooks/commit-msg."
#: ../../../developer/submitting-your-first-patch.md:45
msgid ""
"The script creates a unique Change_Id:hash for each commit made from your "
"repository."
msgstr ""
"Scriptul creează un hash unic pentru fiecare comit făcut din repository."
#: ../../../developer/submitting-your-first-patch.md:48
msgid ""
"The first time you attempt a _push_ to review `git push origin "
"HEAD:refs/for/master`, gerrit will notice a lack of Change-Id."
msgstr ""
"Prima dată când încercați un _push_ pentru a revizui `git push origin "
"HEAD:refs/for/master`, gerrit va observa o lipsă de Change-Id."
#: ../../../developer/submitting-your-first-patch.md:51
msgid ""
"Gerrit will also present a secure copy (scp) string. Use *that* to download "
"a copy of .git/hooks/commit-msg."
msgstr ""
"Gerrit va prezenta, de asemenea, un șir de copie securizată (scp). Folosiți "
"*that* pentru a descărca o copie a.git/hooks/commit-msg."
#: ../../../developer/submitting-your-first-patch.md:55
msgid "References"
msgstr "Referințe"
#: ../../../developer/submitting-your-first-patch.md:58
msgid ""
"[Some Gritty Details](https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
msgstr "[Cele mai multe detalii despre Gritty]"
#: ../../../developer/submitting-your-first-patch.md:62
msgid "Original author: *Peter Gossner*"
msgstr "Autor original: *Peter Gossner*"
#: ../../../developer/swarm.md:1
msgid "Swarm"
msgstr "Cârma"
#: ../../../developer/swarm.md:3
msgid "Synospis"
msgstr "Sineopsi"
#: ../../../developer/swarm.md:5
msgid ""
"The goal of this document is to describe how group chats (a.k.a. **swarm "
"chat**) will be implemented in Jami."
msgstr ""
"Scopul acestui document este de a descrie modul în care vor fi implementate "
"discuțiile de grup (a.n.a. **swarm chat**) în Jami."
#: ../../../developer/swarm.md:7
msgid ""
"A *swarm* is a group able to discuss without any central authority in a "
"resilient way. Indeed, if two person doesn't have any connectivity with the "
"rest of the group (ie Internet outage) but they can contact each other (in a"
" LAN for example or in a subnetwork), they will be able to send messages to "
"each other and then, will be able to sync with the rest of the group when "
"it's possible."
msgstr ""
"Un *swarm* este un grup capabil să discute fără nicio autoritate centrală "
"într-un mod rezistent. Într-adevăr, dacă două persoane nu au nicio "
"conectivitate cu restul grupului (adică întreruperea Internetului), dar pot "
"contacta reciproc (în un LAN de exemplu sau într-o subrețea), vor putea să "
"trimită mesaje unul altuia și apoi, vor putea să se sincronizeze cu restul "
"grupului atunci când este posibil."
#: ../../../developer/swarm.md:9
msgid "So, the *swarm* is defined by:"
msgstr "Deci, *swarm* este definit de:"
#: ../../../developer/swarm.md:10
msgid "Ability to split and merge following the connectivity."
msgstr "Capacitatea de a se diviza și de a se fuziona în urma conectivității."
#: ../../../developer/swarm.md:11
msgid ""
"Syncing of the history. Anyone must be able to send a message to the whole "
"group."
msgstr "Oricine trebuie să poată trimite un mesaj întregii grupuri."
#: ../../../developer/swarm.md:12
msgid "No central authority. Can not rely on any server."
msgstr "Nu pot avea încredere în niciun server."
#: ../../../developer/swarm.md:13
msgid ""
"Non-repudiation. Devices must be able to verify old messages' validity and "
"to replay the whole history."
msgstr ""
"Dispozitivele trebuie să poată verifica validitatea vechilor mesaje şi să "
"reproducă întreaga istorie."
#: ../../../developer/swarm.md:14
msgid "PFS on the transport. Storage is managed by the device."
msgstr "PFS pe transport."
#: ../../../developer/swarm.md:16
msgid ""
"The main idea is to get a synchronized Merkle tree with the participants."
msgstr ""
"Ideea principală este să obţinem un copac Merkle sincronizat cu "
"participanţii."
#: ../../../developer/swarm.md:18
msgid "We identified four modes for swarm chat that we want to implement:"
msgstr "Am identificat patru moduri de chat care vrem să le implementăm:"
#: ../../../developer/swarm.md:19
msgid ""
"**ONE_TO_ONE**, basically the case we have today when you discuss to a "
"friend"
msgstr ""
"**ONE_TO_ONE**, practic cazul pe care îl avem astăzi când discutați cu un "
"prieten"
#: ../../../developer/swarm.md:20
msgid ""
"**ADMIN_INVITES_ONLY** generally a class where the teacher can invite "
"people, but not students"
msgstr ""
"**ADMIN_INVITES_ONLY** în general o clasă în care profesorul poate invita "
"oameni, dar nu elevii"
#: ../../../developer/swarm.md:21
msgid "**INVITES_ONLY** a private group of friends"
msgstr "**INVITAT_UNIER** un grup privat de prieteni"
#: ../../../developer/swarm.md:22
msgid "**PUBLIC** basically an opened forum"
msgstr "**Public** este un forum deschis"
#: ../../../developer/swarm.md:24
msgid "Scenarios"
msgstr "Scenariile"
#: ../../../developer/swarm.md:26
msgid "Create a Swarm"
msgstr "Creează o mulţime"
#: ../../../developer/swarm.md:28
msgid "*Bob wants to create a new swarm*"
msgstr "Bob vrea să creeze un nou ciorp"
#: ../../../developer/swarm.md:30
msgid "Bob creates a local git repository."
msgstr "Bob creează un depozit local de date."
#: ../../../developer/swarm.md:31
msgid "Then, he creates an initial signed commit with the following:"
msgstr "Apoi, el creează un angajament inițial semnat cu următoarele:"
#: ../../../developer/swarm.md:32
msgid "His public key in `/admins`"
msgstr "Cheia sa publică în `/admins`"
#: ../../../developer/swarm.md:33
msgid "His device certificate in ̀ /devices`"
msgstr "Certificatul de dispozitiv în ̀ /devices `"
#: ../../../developer/swarm.md:34
msgid "His CRL in ̀ /crls`"
msgstr "CRL-ul lui în ̀ /crls`"
#: ../../../developer/swarm.md:35
msgid "The hash of the first commit becomes the **ID** of the conversation"
msgstr "Hash-ul primului comit devine ID-ul conversației."
#: ../../../developer/swarm.md:36
msgid ""
"Bob announces to his other devices that he creates a new conversation. This "
"is done via an invite to join the swarm sent through the DHT to other "
"devices linked to that account."
msgstr ""
"Bob anunță altor dispozitive că creează o nouă conversație, printr-o "
"invitație de a se alătura swarmului trimis prin DHT către alte dispozitive "
"legate de acel cont."
#: ../../../developer/swarm.md:38
msgid "Adding someone"
msgstr "Adăugarea cuiva"
#: ../../../developer/swarm.md:40
msgid "*Alice adds Bob*"
msgstr "* Alice adaugă Bob *"
#: ../../../developer/swarm.md:42
msgid "Alice adds Bob to the repo:"
msgstr "Alice adaugă Bob la repo:"
#: ../../../developer/swarm.md:43
msgid "Adds the invited URI in `/invited`"
msgstr "Adăugă URI-ul invitat în `/invited`"
#: ../../../developer/swarm.md:44
msgid "Adds the CRL into `/crls`"
msgstr "Adăugă RLC la `/crls`"
#: ../../../developer/swarm.md:45
msgid "Alice sends a request on the DHT"
msgstr "Alice trimite o cerere pe DHT"
#: ../../../developer/swarm.md:47
msgid "Receiving an invite"
msgstr "Primirea unei invitaţii"
#: ../../../developer/swarm.md:49
msgid "*Alice gets the invite to join the previously create swarm*"
msgstr "Alice primeşte invitaţia să se alăture ploii create anterior"
#: ../../../developer/swarm.md:51
msgid ""
"She accepts the invite (if decline, do nothing, it will just stay into "
"invited and Alice will never receive any message)"
msgstr ""
"Ea acceptă invitația (dacă refuză, nu face nimic, va rămâne doar invitată și"
" Alice nu va primi niciodată niciun mesaj)"
#: ../../../developer/swarm.md:52
msgid "A peer-to-peer connection between Alice and Bob is done."
msgstr "O conexiune de egal-la- egal între Alice şi Bob este făcut."
#: ../../../developer/swarm.md:53
msgid ""
"Alice pull the git repo of Bob. **WARNING this means that messages need a "
"connection, not from the DHT like today**"
msgstr ""
"Alice a tras din reţeaua lui Bob. ** ATENŢIE asta înseamnă că mesajele au "
"nevoie de o conexiune, nu de la DHT ca azi**"
#: ../../../developer/swarm.md:54
msgid "Alice validates commits from Bob"
msgstr "Alice validă angajamentele de la Bob"
#: ../../../developer/swarm.md:55
msgid ""
"To validate that Alice is a member, she removes the invite from `/invited` "
"directory, then adds her certificate into the `/members` directory"
msgstr ""
"Pentru a valida faptul că Alice este membru, ea elimină invitația din "
"directoryul `/invited`, apoi adaugă certificatul ei în directoryul "
"`/members`"
#: ../../../developer/swarm.md:56
msgid ""
"Once all commits validated and on her device, other members of the group are"
" discovered by Alice. with these peers, she will construct the **DRT** "
"(explained below) with Bob as a bootstrap."
msgstr ""
"Odată ce toate comiterile sunt validate și pe dispozitivul ei, alți membri "
"ai grupului sunt descoperiți de Alice. Cu acești colegi, ea va construi "
"**DRT** (explicat mai jos) cu Bob ca bootstrap."
#: ../../../developer/swarm.md:58
msgid "Sending a message"
msgstr "Trimite un mesaj"
#: ../../../developer/swarm.md:60
msgid "*Alice sends a message*"
msgstr "* Alice trimite un mesaj *"
#: ../../../developer/swarm.md:62
msgid ""
"Sending a message is pretty simple. Alice writes a commit-message in the "
"following format:"
msgstr "Alice scrie un mesaj de angajare în următorul format:"
#: ../../../developer/swarm.md:64
msgid "**TODO format unclear**"
msgstr "** Formatul TODO necunoscut**"
#: ../../../developer/swarm.md:66
msgid ""
"and adds her device and CRL to the repository if missing (others must be "
"able to verify the commit). Merge conflicts are avoided because we are "
"mostly based on commit messages, not files (unless CRLS + certificates but "
"they are located). then she announces the new commit via the **DRT** with a "
"service message (explained later) and pings the DHT for mobile devices (they"
" must receive a push notification)."
msgstr ""
"Conflictul de fuziune este evitat deoarece ne bazăm în mare parte pe mesaje "
"de commit, nu pe fișiere (cu excepția cazului în care certificatele CRLS + "
"sunt localizate). apoi ea anunță noul commit prin **DRT** cu un mesaj de "
"serviciu (explicat mai târziu) și pune DHT pentru dispozitive mobile ( "
"acestea trebuie să primească o notificare push)."
#: ../../../developer/swarm.md:68
msgid ""
"For pinging other devices, the sender sends to other members a SIP message "
"with mimetype = \"application/im-gitmessage-id\" containing a JSON with the "
"\"deviceId\" which sends the message, the \"id\" of the conversation "
"related, and the \"commit\""
msgstr ""
"Pentru pingarea altor dispozitive, expeditorul trimite altor membri un mesaj"
" SIP cu mimetype = \"application/im-gitmessage-id\" care conține un JSON cu "
"\"deviceId\" care trimite mesajul, \"id\" conversației legate și \"commit\""
#: ../../../developer/swarm.md:70
msgid "Receiving a message"
msgstr "Primirea unui mesaj"
#: ../../../developer/swarm.md:72
msgid "*Bob receives the message from Alice*"
msgstr "Bob primeşte mesajul de la Alice"
#: ../../../developer/swarm.md:74
msgid "*Bob* do a git pull on *Alice*"
msgstr "Bob face o tragere pe Alice"
#: ../../../developer/swarm.md:75
msgid "Commits MUST be verified via a hook"
msgstr "Commitmitmentele trebuie verificate printr-un cârlig"
#: ../../../developer/swarm.md:76
msgid ""
"If all commits are valid, commits are stored and displayed. Then *Bob* "
"announces the message via the DRT for other devices."
msgstr ""
"Dacă toate comite-urile sunt valabile, comite-urile sunt stocate și afișate."
" Apoi *Bob* anunță mesajul prin DRT pentru alte dispozitive."
#: ../../../developer/swarm.md:77
msgid ""
"If all commits are not valid, pull is canceled. *Alice* must reestablish her"
" state to a correct state. **TODO process*"
msgstr ""
"Dacă toate comiturile nu sunt valabile, pull este anulat. *Alice* trebuie "
"să-și restabilească starea la o stare corectă. *Procesul TODO*"
#: ../../../developer/swarm.md:79
msgid "Validating a commit"
msgstr "Validarea unui angajament"
#: ../../../developer/swarm.md:81
msgid ""
"To avoid users pushing some unwanted commits (with conflicts, false "
"messages, etc), this is how each commit (from the oldest to the newest one) "
"MUST be validated before merging a remote branch:"
msgstr ""
"Pentru a evita utilizatorii împingând unele comituri nedorite (cu conflicte,"
" mesaje false, etc.), acesta este modul în care fiecare comit (de la cel mai"
" vechi la cel mai recent) trebuie validat înainte de a fuziona o ramură de "
"la distanță:"
#: ../../../developer/swarm.md:83
msgid ""
"Note: if the validation fails, the fetch is ignored and we do not merge the "
"branch (and remove the data), and the user should be notified Note2: If a "
"fetch is too big, it's not done (**TODO**)"
msgstr ""
"Notă: dacă validarea nu reușește, recuperarea este ignorată și nu fuzionăm "
"ramura (și eliminăm datele), iar utilizatorul trebuie notificat Notă2: Dacă "
"recuperarea este prea mare, nu este făcută (** TODO**)"
#: ../../../developer/swarm.md:86
msgid ""
"For each commits, check that the device that tries to send the commit is "
"authorized at this moment and that the certificates are present (in /devices"
" for the device, and in /members or /admins for the issuer)."
msgstr ""
"Pentru fiecare angajament, verificați dacă dispozitivul care încearcă să "
"trimită angajamentul este autorizat în acest moment și dacă certificatele "
"sunt prezente (în /device pentru dispozitivul și în /membrii sau "
"/administratorii pentru emitent)."
#: ../../../developer/swarm.md:87
msgid ""
"3 cases. The commit has 2 parents, so it's a merge, nothing more to validate"
" here"
msgstr ""
"Comitul are doi părinţi, deci este o fuziune, nimic mai mult de validat aici"
#: ../../../developer/swarm.md:88
msgid "The commit has 0 parents, it's the initial commit:"
msgstr "Commitul are 0 părinţi, este Commitul iniţial:"
#: ../../../developer/swarm.md:89
msgid "Check that admin cert is added"
msgstr "Verificaţi dacă a fost adăugat certificatul de administrare"
#: ../../../developer/swarm.md:90
msgid "Check that device cert is added"
msgstr "Verificaţi dacă certificatul de dispozitiv este adăugat"
#: ../../../developer/swarm.md:91
msgid "Check CRLs added"
msgstr "Verificarea RLC adăugată"
#: ../../../developer/swarm.md:92
msgid "Check that no other file is added"
msgstr "Verificaţi dacă nu este adăugat alt fişier"
#: ../../../developer/swarm.md:93
msgid "The commit has 1 parent, commit message is a JSON with a type:"
msgstr "Commit are 1 părinte, mesajul de comit este un JSON cu un tip:"
#: ../../../developer/swarm.md:94
msgid "If text (or other mime-type that doesn't change files)"
msgstr "Dacă textul (sau alt tip de mime care nu schimbă fișiere)"
#: ../../../developer/swarm.md:95
msgid "Check signature from certificate in the repo"
msgstr "Semnătura de verificare din certificat în repo"
#: ../../../developer/swarm.md:96
msgid "Check that no weird file is added outside device cert nor removed"
msgstr ""
"Verifică dacă nu este adăugat nici un fişier ciudat în afara certificatului "
"de dispozitiv sau eliminat"
#: ../../../developer/swarm.md:97
msgid "If vote"
msgstr "Dacă votăm"
#: ../../../developer/swarm.md:98
msgid "Check that voteType is supported (ban, unban)"
msgstr "Verificați dacă voteType este suportat (interdicție, desinterdicție)"
#: ../../../developer/swarm.md:99
msgid "Check that vote is for the user that signs the commit"
msgstr ""
"Verifică dacă votul este pentru utilizatorul care semnează angajamentul"
#: ../../../developer/swarm.md:100
msgid "Check that vote is from an admin and device present & not banned"
msgstr ""
"Verificaţi dacă votul este de la un administrator şi dispozitiv prezent şi "
"nu interzis"
#: ../../../developer/swarm.md:101 ../../../developer/swarm.md:106
#: ../../../developer/swarm.md:113 ../../../developer/swarm.md:119
msgid "Check that no weird file is added nor removed"
msgstr "Verifică dacă nu se adaugă sau elimină fişiere ciudate"
#: ../../../developer/swarm.md:102
msgid "If member"
msgstr "Dacă membru"
#: ../../../developer/swarm.md:103
msgid "If adds"
msgstr "Dacă se adaugă"
#: ../../../developer/swarm.md:104 ../../../developer/swarm.md:110
msgid "Check that the commit is correctly signed"
msgstr "Verifică dacă commit-ul este semnat corect"
#: ../../../developer/swarm.md:105
msgid "Check that certificate is added in /invited"
msgstr "Verificați dacă certificatul este adăugat în / invitat"
#: ../../../developer/swarm.md:107
msgid "If ONE_TO_ONE, check that we only have one admin, one member"
msgstr "Dacă ONE_TO_ONE, verificați că avem doar un administrator, un membru"
#: ../../../developer/swarm.md:108
msgid "If ADMIN_INVITES_ONLY, check that invite is from an admin"
msgstr ""
"Dacă ADMIN_INVITES_ONLY, verificați că invitația este de la un administrator"
#: ../../../developer/swarm.md:109
msgid "If joins"
msgstr "Dacă se alătură"
#: ../../../developer/swarm.md:111
msgid "Check that device is added"
msgstr "Verificaţi dacă dispozitivul este adăugat"
#: ../../../developer/swarm.md:112
msgid "Check that invitation is moved to members"
msgstr "Verifică dacă invitaţia este transferată membrilor"
#: ../../../developer/swarm.md:114
msgid "If banned"
msgstr "Dacă este interzisă"
#: ../../../developer/swarm.md:115
msgid "Check that vote is valid"
msgstr "Verifică dacă votul este valabil"
#: ../../../developer/swarm.md:116
msgid "Check that the user is ban via an admin"
msgstr "Verificaţi dacă utilizatorul este interzis printr-un administrator"
#: ../../../developer/swarm.md:117
msgid "Check that member or device certificate is moved to banned/"
msgstr ""
"Verificaţi dacă certificatul de membru sau de dispozitiv este mutat la "
"interzis/"
#: ../../../developer/swarm.md:118
msgid "Check that only files related to the vote are removed"
msgstr "Verifică dacă sunt eliminate numai fișierele legate de vot"
#: ../../../developer/swarm.md:120
msgid ""
"else fail. Notify the user that they may be with an old version or that peer"
" tried to submit unwanted commits"
msgstr ""
"Nu se poate. Notificați utilizatorul că poate fi cu o versiune veche sau că "
"peer a încercat să trimită comitete nedorite"
#: ../../../developer/swarm.md:123
msgid "Ban a device"
msgstr "Interzice un dispozitiv"
#: ../../../developer/swarm.md:125
msgid "*Alice, Bob, Carla, Denys are in a swarm. Alice bans Denys*"
msgstr "Alice, Bob, Carla, Denys sunt într-un cior."
#: ../../../developer/swarm.md:127
msgid ""
"This is one of the most difficult scenarios in our context. Without central "
"authority we can not trust:"
msgstr ""
"Acesta este unul dintre cele mai dificile scenarii din contextul nostru."
#: ../../../developer/swarm.md:129
msgid "Timestamps of generated commits"
msgstr "Stampile de timp ale angajamentelor generate"
#: ../../../developer/swarm.md:130
msgid ""
"Conflicts with banned devices. If multiple admin devices are present and if "
"Alice can speak with Bob but not Denys and Carla; Carla can speak with "
"Denys; Denys bans Alice, Alice bans Denys, what will be the state when the 4"
" members will merge the conversations."
msgstr ""
"Dacă sunt mai multe dispozitive de administrare și dacă Alice poate vorbi cu"
" Bob, dar nu cu Denys și Carla; Carla poate vorbi cu Denys; Denys interzice "
"Alice, Alice interzice Denys, care va fi starea când cei 4 membri vor merge "
"conversațiile."
#: ../../../developer/swarm.md:131
msgid ""
"A device can be compromised, stolen or its certificate can expire. We should"
" be able to ban a device and avoid that it lies about its expiration or send"
" messages in the past (by changing its certificate or the timestamp of its "
"commit)."
msgstr ""
"Un dispozitiv poate fi compromis, furat sau certificatul său poate expira. "
"Ar trebui să putem interzice un dispozitiv și să evităm ca acesta să mintă "
"despre expirarea sa sau să trimită mesaje în trecut (în schimbarea "
"certificatului sau a timestampului angajamentului său)."
#: ../../../developer/swarm.md:133
msgid ""
"Similar systems (with distributed group systems) are not so much, but these "
"are some examples:"
msgstr ""
"Sistemele similare (cu sisteme de grup distribuite) nu sunt atât de multe, "
"dar acestea sunt câteva exemple:"
#: ../../../developer/swarm.md:135
msgid ""
"[mpOTR doesn't define how to ban "
"someone](https://www.cypherpunks.ca/~iang/pubs/mpotr.pdf)"
msgstr "[mpOTR nu definește cum să interzici pe cineva]"
#: ../../../developer/swarm.md:136
msgid ""
"Signal, without any central server for group chat (EDIT: they recently "
"change that point), doesn't give the ability to ban someone from a group."
msgstr ""
"Signal, fără niciun server central pentru chatul de grup (EDIT: recent au "
"schimbat punctul), nu oferă posibilitatea de a interzice pe cineva dintr-un "
"grup."
#: ../../../developer/swarm.md:138
msgid ""
"This voting system needs a human action to ban someone or must be based on "
"the CRLs info from the repository (because we can not trust external CRLs)"
msgstr ""
"Acest sistem de votare are nevoie de o acțiune umană pentru a interzice pe "
"cineva sau trebuie să se bazeze pe informațiile privind LCR din depozit "
"(pentru că nu putem avea încredere în LCR-urile externe)"
#: ../../../developer/swarm.md:140
msgid "Remove a device from a conversation"
msgstr "Scoate un dispozitiv din conversaţie"
#: ../../../developer/swarm.md:142
msgid ""
"This is the only part that MUST have a consensus to avoid conversation's "
"split, like if two members kick each other from the conversation, what will "
"see the third one?"
msgstr ""
"Aceasta este singura parte care trebuie să aibă un consens pentru a evita "
"spărgerea conversației, cum ar fi dacă doi membri se lovesc unul pe altul "
"din conversație, ce va vedea al treilea?"
#: ../../../developer/swarm.md:144
msgid ""
"This is needed to detect revoked devices, or simply avoid getting unwanted "
"people present in a public room. The process is pretty similar between a "
"member and a device:"
msgstr ""
"Acest lucru este necesar pentru a detecta dispozitivele revocate sau pur și "
"simplu pentru a evita prezența persoanelor nedorite într-o sală publică."
#: ../../../developer/swarm.md:146
msgid "*Alice removes Bob*"
msgstr "* Alice scoate Bob *"
#: ../../../developer/swarm.md:148
msgid "Note: Alice MUST be admins to vote"
msgstr "Notă: Alice trebuie să fie administratori pentru a vota"
#: ../../../developer/swarm.md:150
msgid ""
"First, she votes for banning Bob. To do that, she creates the file in "
"/votes/ban/members/uri_bob/uri_alice (members can be replaced by devices for"
" a device, or invited for invites or admins for admins) and commits"
msgstr ""
"Pentru a face acest lucru, ea creează fișierul în "
"/votes/ban/members/uri_bob/uri_alice (membrii pot fi înlocuiți cu "
"dispozitive pentru un dispozitiv, sau invitați pentru invitații sau admini "
"pentru admini) și se angajează"
#: ../../../developer/swarm.md:151 ../../../developer/swarm.md:157
msgid ""
"Then she checks if the vote is resolved. This means that >50% of the admins "
"agree to ban Bob (if she is alone, it's sure it's more than 50%)."
msgstr ""
"Apoi verifică dacă votul este rezolvat. Aceasta înseamnă că > 50% dintre "
"administratori sunt de acord să interzică Bob (dacă este singură, este sigur"
" că este mai mult de 50%)."
#: ../../../developer/swarm.md:152
msgid ""
"If the vote is resolved, files into /votes/ban can be removed, all files for"
" Bob in /members, /admins, /invited, /CRLs, /devices can be removed (or only"
" in /devices if it's a device that is banned) and Bob's certificate can be "
"placed into /banned/members/bob_uri.crt (or /banned/devices/uri.crt if a "
"device is banned) and committed to the repo"
msgstr ""
"Dacă votul este rezolvat, fișierele în /votes/ban pot fi eliminate, toate "
"fișierele pentru Bob în /membrii, /admins, /invited, /CRLs, /device pot fi "
"eliminate (sau numai în /device dacă este un dispozitiv care este interzis) "
"și certificatul Bob poate fi plasat în /banned/members/bob_uri.crt (sau "
"/banned/devices/uri.crt dacă un dispozitiv este interzis) și angajat la repo"
#: ../../../developer/swarm.md:153
msgid "Then, Alice informs other users (outside Bob)"
msgstr "Apoi, Alice informează alți utilizatori (în afară de Bob)"
#: ../../../developer/swarm.md:155
msgid "*Alice (admin) re-adds Bob (banned member)"
msgstr "*Alice (admin) re-adă Bob (membru interzis)"
#: ../../../developer/swarm.md:156
msgid ""
"Fir she votes for unbanning Bob. To do that, she creates the file in "
"/votes/unban/members/uri_bob/uri_alice (members can be replaced by devices "
"for a device, or invited for invites or admins for admins) and commits"
msgstr ""
"Pentru a face acest lucru, ea creează fișierul în "
"/votes/unban/members/uri_bob/uri_alice (membrii pot fi înlocuiți cu "
"dispozitive pentru un dispozitiv, sau invitați pentru invitații sau admini "
"pentru admini) și se angajează să"
#: ../../../developer/swarm.md:158
msgid ""
"If the vote is resolved, files into /votes/unban can be removed, all files "
"for Bob in /members, /admins, /invited, /CRLs, can be re-added (or only in "
"/devices if it's a device that is unbanned) and committed to the repo"
msgstr ""
"Dacă votul este rezolvat, fișierele în /votes/unban pot fi eliminate, toate "
"fișierele pentru Bob în /membrii, /admins, /invitate, /CRLs, pot fi adăugate"
" din nou (sau numai în /device dacă este un dispozitiv care este neinterzis)"
" și angajate la repo"
#: ../../../developer/swarm.md:160
msgid "Remove a conversation"
msgstr "Îndepărtează o conversaţie"
#: ../../../developer/swarm.md:162
msgid ""
"Save in convInfos removed=time::now() (like removeContact saves in contacts)"
" that the conversation is removed and sync with other user's devices"
msgstr ""
"Salvați în convInfos remove=time::now() (cum ar fi removeContact salvează în"
" contacte) că conversația este eliminată și sincronizată cu dispozitivele "
"altor utilizatori"
#: ../../../developer/swarm.md:163
msgid "Now, if a new commit is received for this conversation it's ignored"
msgstr ""
"Dacă primim un nou angajament pentru această conversaţie, este ignorat."
#: ../../../developer/swarm.md:164
msgid ""
"Now, if Jami startup and the repo is still present, the conversation is not "
"announced to clients"
msgstr ""
"Dacă Jami începe şi repo-ul este încă prezent, conversaţia nu este anunţată "
"clienţilor."
#: ../../../developer/swarm.md:165
msgid ""
"Two cases: a. If no other member in the conversation we can immediately "
"remove the repository b. If still other members, commit that we leave the "
"conversation, and now wait that at least another device sync this message. "
"This avoids the fact that other members will still detect the user as a "
"valid member and still sends new message notifications."
msgstr ""
"Dacă nu există un alt membru în conversație, putem elimina imediat depozitul"
" b. Dacă încă există alți membri, angajați-vă să părăsim conversația și acum"
" așteptați ca cel puțin un alt dispozitiv să sincronizeze acest mesaj. Acest"
" lucru evită faptul că alți membri vor detecta încă utilizatorul ca membru "
"valid și încă trimit noi notificări de mesaje."
#: ../../../developer/swarm.md:168
msgid ""
"When we are sure that someone is synched, remove erased=time::now() and sync"
" with other user's devices"
msgstr ""
"Când suntem siguri că cineva este sincronizat, eliminați șters=time::now() "
"și sincronizați cu dispozitivele altor utilizatori"
#: ../../../developer/swarm.md:169
msgid ""
"All devices owned by the user can now erase the repository and related files"
msgstr ""
"Toate dispozitivele deținute de utilizator pot șterge acum depozitul și "
"fișierele conexe"
#: ../../../developer/swarm.md:171
msgid "How to specify a mode"
msgstr "Cum să specifici o modalitate"
#: ../../../developer/swarm.md:173
msgid ""
"Modes can not be changed through time. Or it's another conversation. So, "
"this data is stored in the initial commit message. The commit message will "
"be the following:"
msgstr ""
"Modurile nu pot fi schimbate în timp. Sau este o altă conversație. Deci, "
"aceste date sunt stocate în mesajul inițial de comit. Mesajul de comit va fi"
" următorul:"
#: ../../../developer/swarm.md:184
msgid ""
"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
"(INVITES_ONLY), 3 (PUBLIC)"
msgstr ""
"Pentru moment, \"modul\" acceptă valori 0 (ONE_TO_ONE), 1 "
"(ADMIN_INVITES_ONLY), 2 (INVITES_ONLY), 3 (PUBLIC)"
#: ../../../developer/swarm.md:186
msgid "Processus for 1:1 swarms"
msgstr "Proces pentru ciorapii 1:1"
#: ../../../developer/swarm.md:188
msgid ""
"The goal here is to keep the old API (addContact/removeContact, "
"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate swarm "
"with a peer and its contact. This still implies some changes that we cannot "
"ignore:"
msgstr ""
"Scopul este de a păstra vechiul API (addContact/removeContact, "
"sendTrustRequest/acceptTrustRequest/discardTrustRequest) pentru a genera un "
"cior cu un coleg și contactul său."
#: ../../../developer/swarm.md:190
msgid ""
"The process is still the same, an account can add a contact via addContact, "
"then send a TrustRequest via the DHT. But two changes are necessary:"
msgstr ""
"Procesul este tot la fel, un cont poate adăuga un contact prin addContact, "
"apoi trimite o cerere de încredere prin DHT. Dar sunt necesare două "
"schimbări:"
#: ../../../developer/swarm.md:191
msgid ""
"The TrustRequest embeds a \"conversationId\" to inform the peer what "
"conversation to clone when accepting the request"
msgstr ""
"TrustRequest include un \"conversationId\" pentru a informa peer-ul ce "
"conversație să cloneze atunci când acceptă cererea"
#: ../../../developer/swarm.md:192
msgid ""
"TrustRequest are retried when contact come backs online. It's not the case "
"today (as we don't want to generate a new TrustRequest if the peer discard "
"the first). So, if an account receives a trust request, it will be "
"automatically ignored if the request with a related conversation is declined"
" (as convRequests are synched)"
msgstr ""
"TrustRequest sunt retestate atunci când contactul revine online. Nu este "
"cazul astăzi (pentru că nu vrem să generăm o nouă TrustRequest dacă colegul "
"respinge prima). Deci, dacă un cont primește o cerere de încredere, va fi "
"ignorat automat dacă cererea cu o conversație aferentă este respinsă (ca "
"convRequests sunt sincronizate)"
#: ../../../developer/swarm.md:194
msgid ""
"Then, when a contact accepts the request, a period of sync is necessary, "
"because the contact now needs to clone the conversation."
msgstr ""
"Apoi, când un contact acceptă cererea, este necesară o perioadă de "
"sincronizare, deoarece contactul trebuie să cloneze conversația."
#: ../../../developer/swarm.md:196
msgid ""
"removeContact() will remove the contact and related 1:1 conversations (with "
"the same process as \"Remove a conversation\"). The only note here is that "
"if we ban a contact, we don't wait for sync, we just remove all related "
"files."
msgstr ""
"removeContact() va elimina contactul și conversațiile 1:1 aferente (cu "
"același proces ca \"Remove a conversation\"). Singura notă aici este că dacă"
" interzicem un contact, nu așteptăm sincronizarea, pur și simplu eliminăm "
"toate fișierele aferente."
#: ../../../developer/swarm.md:198
msgid "Tricky scenarios"
msgstr "Scenarii complicate"
#: ../../../developer/swarm.md:200
msgid ""
"There are some cases where two conversations can be created. This is at "
"least two of those scenarios:"
msgstr "Există unele cazuri în care se pot crea două conversații."
#: ../../../developer/swarm.md:202 ../../../developer/swarm.md:205
msgid "Alice adds Bob"
msgstr "Alice adaugă Bob"
#: ../../../developer/swarm.md:203
msgid "Bob accepts"
msgstr "Bob acceptă."
#: ../../../developer/swarm.md:204
msgid "Alice removes Bob"
msgstr "Alice scoate Bob"
#: ../../../developer/swarm.md:207
msgid "or"
msgstr "sau"
#: ../../../developer/swarm.md:209
msgid ""
"1, Alice adds Bob & Bob adds Alice at the same time, but both are not "
"connected together"
msgstr ""
"1, Alice adaugă Bob & Bob adaugă Alice în același timp, dar ambele nu sunt "
"conectate împreună"
#: ../../../developer/swarm.md:211
msgid ""
"In this case, two conversations are generated. We don't want to remove "
"messages from users or choose one conversation here. So, sometimes two 1:1 "
"swarm between the same members will be shown. It will generate some bugs "
"during the transition time (as we don't want to break API, the inferred "
"conversation will be one of the two shown conversations, but for now it's "
"\"ok-ish\", will be fixed when clients will fully handle conversationId for "
"all APIs (calls, file transfer, etc))."
msgstr ""
"În acest caz, se generează două conversații. Nu vrem să eliminăm mesajele de"
" la utilizatori sau să alegem o conversație aici. Astfel, uneori se vor "
"arăta două ciume 1:1 între aceși membri. Va genera unele buguri în timpul "
"tranziției (atât timp cât nu vrem să rupem API-ul, conversația dedusă va fi "
"una dintre cele două conversații prezentate, dar pentru moment este \"ok-"
"ish\", va fi fixată atunci când clienții vor gestiona pe deplin conversația "
"ID pentru toate API-urile (chimbiri, transfer de fișiere, etc.)."
#: ../../../developer/swarm.md:213
msgid "Note while syncing"
msgstr "Notă în timp ce se sincronizează"
#: ../../../developer/swarm.md:215
msgid ""
"After accepting a conversation's request, there is a time the daemon needs "
"to retrieve the distant repository. During this time, clients MUST show a "
"syncing view to give informations to the user. Note, while syncing:"
msgstr ""
"După acceptarea cererii unei conversații, există un timp în care daemonul "
"trebuie să recupereze rețeaua de la distanță. În acest timp, clienții "
"trebuie să arate o viziune de sincronizare pentru a oferi informații "
"utilizatorului."
#: ../../../developer/swarm.md:218
msgid ""
"ConfigurationManager::getConversations() will return the conversation's id "
"even while syncing"
msgstr ""
"ConfigurationManager::getConversations() va returna ID-ul conversației chiar"
" și în timp ce se sincronizează"
#: ../../../developer/swarm.md:219
msgid ""
"ConfigurationManager::conversationInfos() will return {{\"syncing\": "
"\"true\"}} if syncing."
msgstr ""
"ConfigurationManager::conversationInfos() va întoarce {{\"sincronizarea\": "
"\"adevărat\"}} în cazul sincronizării."
#: ../../../developer/swarm.md:220
msgid ""
"ConfigurationManager::getConversationMembers() will return a map of two URIs"
" (the current account and the peer who sent the request)"
msgstr ""
"ConfigurationManager::getConversationMembers() va returna o hartă a două "
"URIs (conta curentă și peer-ul care a trimis cererea)"
#: ../../../developer/swarm.md:222
msgid "Conversations requests specification"
msgstr "Conversaţiile cer specificaţii"
#: ../../../developer/swarm.md:224
msgid ""
"Conversations requests are represented by a **Map<String, String>** with the"
" following keys:"
msgstr ""
"Cererile de conversații sunt reprezentate de o **Map<String, String>** cu "
"următoarele chei:"
#: ../../../developer/swarm.md:226
msgid "id: the conversation id"
msgstr "ID: ID-ul conversației"
#: ../../../developer/swarm.md:227
msgid "from: uri of the sender"
msgstr "de la: uri al expeditorului"
#: ../../../developer/swarm.md:228
msgid "received: timestamp"
msgstr "primită: timestamp"
#: ../../../developer/swarm.md:229
msgid "title: (optional) name for the conversation"
msgstr "titlu: (opțional) nume pentru conversație"
#: ../../../developer/swarm.md:230
msgid "description: (optional)"
msgstr "descriere: (opțional)"
#: ../../../developer/swarm.md:231
msgid "avatar: (optional)"
msgstr "avatar: (opțional)"
#: ../../../developer/swarm.md:233
msgid "Conversation's profile synchronization"
msgstr "Sincronizarea profilului conversației"
#: ../../../developer/swarm.md:235
msgid ""
"To be identifiable, a conversation generally needs some metadata, like a "
"title (eg: Jami), a description (eg: some links, what is the project, etc), "
"and an image (the logo of the project). Those metadata are optional but "
"shared across all members, so need to be synced and incorporated in the "
"requests."
msgstr ""
"Pentru a fi identificabile, o conversație are nevoie de unele metadate, cum "
"ar fi un titlu (de exemplu, Jami), o descriere (de exemplu, unele legături, "
"care este proiectul, etc.), și o imagine (simbolul proiectului). Aceste "
"metadate sînt opționale, dar sînt împărtășite între toți membrii, astfel "
"încît trebuie să fie sincronizate și incorporate în cereri."
#: ../../../developer/swarm.md:237
msgid "Storage in the repository"
msgstr "Stocare în depozit"
#: ../../../developer/swarm.md:239
msgid ""
"The profile of the conversation is stored in a classic vCard file at the "
"root (`/profile.vcf`) like:"
msgstr ""
"Profilul conversației este stocat într-un fișier vCard clasic la rădăcina "
"(`/profile.vcf`) cum ar fi:"
#: ../../../developer/swarm.md:249
msgid "Synchronization"
msgstr "Sincronizare"
#: ../../../developer/swarm.md:251
msgid ""
"To update the vCard, a user with enough permissions (by default: =ADMIN) "
"needs to edit `/profile.vcf`. and will commit the file with the mimetype "
"`application/update-profile`. The new message is sent via the same mechanism"
" and all peers will receive the **MessageReceived** signal from the daemon. "
"The branch is dropped if the commit contains other files or too big or if "
"done by a non-authorized member (by default: <ADMIN)."
msgstr ""
"Pentru a actualiza vCard, un utilizator cu permisiuni suficiente (default: "
"=ADMIN) trebuie să editeze `/profile.vcf`. și va comite fișierul cu mimetype"
" `application/update-profile`. Noul mesaj este trimis prin același mecanism "
"și toți colegii vor primi semnalul **MessageReceived** de la daemon. "
"Fișierul este abandonat dacă comitul conține alte fișiere sau este prea mare"
" sau dacă este făcut de un membru neautorizat (default: <ADMIN)."
#: ../../../developer/swarm.md:253
msgid "Last Displayed"
msgstr "Ultima afişare"
#: ../../../developer/swarm.md:255
msgid ""
"In the synchronized data, each devices sends to other devices the state of "
"the conversations. In this state, the last displayed is sent. However, "
"because each device can have its own state for each conversation, and "
"probably without the same last commit at some point, there is several "
"scenarios to take into account:"
msgstr ""
"În datele sincronizate, fiecare dispozitiv trimite altor dispozitive starea "
"conversațiilor. În această stare, ultima afișată este trimisă. Cu toate "
"acestea, deoarece fiecare dispozitiv poate avea propriul stat pentru fiecare"
" conversație, și probabil fără același ultim compromis la un moment dat, "
"există mai multe scenarii de luat în considerare:"
#: ../../../developer/swarm.md:257
msgid "5 scenarios are supported:"
msgstr "Se sprijină 5 scenarii:"
#: ../../../developer/swarm.md:258
msgid ""
"if the last displayed sent by other devices is the same as the current one, "
"there is nothing to do."
msgstr ""
"Dacă ultima afișare trimisă de alte dispozitive este aceeași cu cea actuală,"
" nu se poate face nimic."
#: ../../../developer/swarm.md:259
msgid ""
"if there is no last displayed for the current device, the remote displayed "
"message is used."
msgstr ""
"dacă nu există ultima afișare pentru dispozitivul actual, se utilizează "
"mesajul afișat la distanță."
#: ../../../developer/swarm.md:260
msgid ""
"if the remote last displayed is not present in the repo, it means that the "
"commit will be fetched later, so cache the result"
msgstr ""
"Dacă ultima telecomanda afișată nu este prezentă în repo, înseamnă că "
"commit-ul va fi recuperat mai târziu, astfel încât să cache rezultatul"
#: ../../../developer/swarm.md:261
msgid ""
"if the remote is already fetched, we check that the local last displayed is "
"before in the history to replace it"
msgstr ""
"Dacă telecomanda este deja recuperată, verificăm dacă ultima locală afișată "
"este anterior în istorie pentru a o înlocui"
#: ../../../developer/swarm.md:262
msgid ""
"Finally if a message is announced from the same author, it means that we "
"need to update the last displayed."
msgstr ""
"În cele din urmă, dacă un mesaj este anunțat de la același autor, înseamnă "
"că trebuie să actualizăm ultimul afișat."
#: ../../../developer/swarm.md:264
msgid "Preferences"
msgstr "Preferințe"
#: ../../../developer/swarm.md:266
msgid ""
"Every conversation has attached preferences set by the user. Those "
"preferences are synced across user's devices. This can be the color of the "
"conversation, if the user wants to ignore notifications, file transfer size "
"limit, etc. For now, the recognized keys are:"
msgstr ""
"Fiecare conversație are preferințe atașate stabilite de utilizator. Aceste "
"preferințe sunt sincronizate pe dispozitivele utilizatorului. Aceasta poate "
"fi culoarea conversației, dacă utilizatorul vrea să ignore notificările, "
"limita de dimensiune a transferului de fișiere, etc. Pentru moment, cheile "
"recunoscute sunt:"
#: ../../../developer/swarm.md:268
msgid "\"color\" - the color of the conversation (#RRGGBB format)"
msgstr ""
#: ../../../developer/swarm.md:269
msgid ""
"\"ignoreNotifications\" - to ignore notifications for new messages in this "
"conversation"
msgstr ""
"\"ignore notificări\" - să ignori notificările pentru mesaje noi în această "
"conversație"
#: ../../../developer/swarm.md:270
msgid "\"symbol\" - to define a default emoji."
msgstr "\"simbol\" - pentru a defini un emoji de parapoartă."
#: ../../../developer/swarm.md:272
msgid ""
"Those preferences are stored in a packet MapStringString, stored in "
"`accountDir/conversation_data/conversationId/preferences` and only sent "
"across devices of the same user via SyncMsg."
msgstr ""
"Aceste preferințe sunt stocate într-un pachet MapStringString, stocate în "
"`accountDir/conversation_data/conversationId/preferințe` și trimise numai "
"prin intermediul unui singur utilizator prin intermediul SyncMsg."
#: ../../../developer/swarm.md:274
msgid "The API to interact with the preferences are:"
msgstr "API-urile pentru a interacționa cu preferințele sunt:"
#: ../../../developer/swarm.md:294
msgid "Merge conflicts management"
msgstr "Gestionarea conflictelor de fuziune"
#: ../../../developer/swarm.md:296
msgid ""
"Because two admins can change the description at the same time, a merge "
"conflict can occur on `profile.vcf`. In this case, the commit with the "
"higher hash (eg ffffff > 000000) will be chosen."
msgstr ""
"Deoarece doi administratori pot modifica descrierea în același timp, un "
"conflict de fuziune poate apărea pe `profile.vcf`. În acest caz, va fi ales "
"commit cu hash-ul mai mare (de exemplu ffffff > 000000)."
#: ../../../developer/swarm.md:298
msgid "APIs"
msgstr "API-uri"
#: ../../../developer/swarm.md:300
msgid "The user got 2 methods to get and set conversation's metadatas:"
msgstr ""
"Utilizatorul a obținut 2 metode pentru a obține și setarea metadatele "
"conversației:"
#: ../../../developer/swarm.md:326
msgid "where `infos` is a `map<str, str>` with the following keys:"
msgstr "unde `infos` este o `map<str, str>` cu următoarele cheie:"
#: ../../../developer/swarm.md:328
msgid "mode: READ-ONLY"
msgstr "Modul: doar citit"
#: ../../../developer/swarm.md:329
msgid "title"
msgstr "titlu"
#: ../../../developer/swarm.md:330
msgid "description"
msgstr "descriere"
#: ../../../developer/swarm.md:331
msgid "avatar"
msgstr "avatar"
#: ../../../developer/swarm.md:333
msgid "Re-import an account (link/export)"
msgstr "Reimportarea contului (link/export)"
#: ../../../developer/swarm.md:335
msgid ""
"The archive MUST contain conversationId to be able to retrieve conversations"
" on new commits after a re-import (because there is no invite at this "
"point). If a commit comes for a conversation not present there are two "
"possibilities:"
msgstr ""
"Arhiva trebuie să conțină conversația ID pentru a putea recupera "
"conversațiile pe noile comite după un reimport (pentru că nu există "
"invitație la acest moment)."
#: ../../../developer/swarm.md:337
msgid ""
"The conversationId is there, in this case, the daemon is able to re-clone "
"this conversation"
msgstr ""
"Conversaţia e acolo, în acest caz, demonul este capabil să cloneze din nou "
"această conversaţie"
#: ../../../developer/swarm.md:338
msgid ""
"The conversationId is missing, so the daemon asks (via a message "
"`{{\"application/invite\", conversationId}}`) a new invite that the user "
"needs to (re)accepts"
msgstr ""
"Conversatia ID lipsește, deci daemonul cere (printr-un mesaj "
"`{{\"aplicație/invitare\", conversatieId}}`) o nouă invitare pe care "
"utilizatorul trebuie să o (re) accepte"
#: ../../../developer/swarm.md:340
msgid ""
"Note, a conversation can only be retrieved if a contact or another device is"
" there, else it will be lost. There is no magic."
msgstr ""
"Reţineţi că o conversaţie poate fi recuperată numai dacă există un contact "
"sau un alt dispozitiv, altfel va fi pierdută."
#: ../../../developer/swarm.md:342
msgid "Used protocols"
msgstr "Protocoluri utilizate"
#: ../../../developer/swarm.md:344
msgid "Git"
msgstr "Git"
#: ../../../developer/swarm.md:346
msgid "Why this choice"
msgstr "De ce această alegere"
#: ../../../developer/swarm.md:348
msgid ""
"Each conversation will be a git repository. This choice is motivated by:"
msgstr "Fiecare conversaţie va fi un reţinut de date."
#: ../../../developer/swarm.md:350
msgid ""
"We need to sync and order messages. The Merkle Tree is the perfect structure"
" to do that and can be linearized by merging branches. Moreover, because "
"it's massively used by Git, it's easy to sync between devices."
msgstr ""
"Merkel Tree este structura perfectă pentru a face acest lucru și poate fi "
"linearizată prin fuziunea ramurilor."
#: ../../../developer/swarm.md:351
msgid "Distributed by nature. Massively used. Lots of backends and pluggable."
msgstr ""
"Distribuit de natură, folosit în mod masiv, cu multe backend-uri şi plug-"
"abile."
#: ../../../developer/swarm.md:352
msgid "Can verify commits via hooks and massively used crypto"
msgstr ""
"Pot verifica angajamentele prin croșii și criptomonede utilizate masiv"
#: ../../../developer/swarm.md:353
msgid "Can be stored in a database if necessary"
msgstr "Poate fi stocat într-o bază de date dacă este necesar"
#: ../../../developer/swarm.md:354
msgid "Conflicts are avoided by using commit messages, not files."
msgstr "Conflictele sunt evitate folosind mesaje de angajare, nu fișiere."
#: ../../../developer/swarm.md:356
msgid "What we have to validate"
msgstr "Ce trebuie să validăm"
#: ../../../developer/swarm.md:358
msgid "Performance? `git.lock` can be low"
msgstr "Performanţa? `git.lock` poate fi scăzută"
#: ../../../developer/swarm.md:359
msgid "Hooks in libgit2"
msgstr "Cârliguri în libgit2"
#: ../../../developer/swarm.md:360
msgid "Multiple pulls at the same time?"
msgstr "Multiple tragere în același timp?"
#: ../../../developer/swarm.md:362
msgid "Limits"
msgstr "Limite"
#: ../../../developer/swarm.md:364
msgid ""
"History can not be deleted. To delete a conversation, the device has to "
"leave the conversation and create another one."
msgstr ""
"Pentru a șterge o conversație, dispozitivul trebuie să părăsească "
"conversația și să creeze alta."
#: ../../../developer/swarm.md:366
msgid ""
"However, non-permanent messages (like messages readable only for some "
"minutes) can be sent via a special message via the DRT (like Typing or Read"
" notifications)."
msgstr ""
"Cu toate acestea, mesajele non-permanente (cum ar fi mesajele care pot fi "
"citite doar pentru câteva minute) pot fi trimise printr-un mesaj special "
"prin intermediul DRT (cum ar fi notificările de tipare sau de citire)."
#: ../../../developer/swarm.md:368
msgid "Structure"
msgstr "Structura"
#: ../../../developer/swarm.md:399
msgid ""
"Swarm massively changes file transfer. Now, all the history is syncing, "
"allowing all devices in the conversation to easily retrieve old files. This "
"changes allow us to move from a logic where the sender pushed the file on "
"other devices, via trying to connect to their devices (This was bad because "
"not really resistant to connections changes/failures and needed a manual "
"retry) to a logic where the sender allow other devices to download. "
"Moreover, any device having the file can be the host for other devices, "
"allowing to retrieve files even if the sender is not there."
msgstr ""
"Swarm schimbă masiv transferul de fișiere. Acum, toată istoria este "
"sincronizată, permițând tuturor dispozitivelor din conversație să recupereze"
" cu ușurință fișiere vechi. Aceste modificări ne permit să trecem de la o "
"logică în care expeditorul a împins fișiera pe alte dispozitive, prin "
"încercarea de a se conecta la dispozitivele lor (Acesta a fost rea deoarece "
"nu era rezistentă cu adevărat la schimbările / eşecurile de conexiune și a "
"necesitat o încercare manuală) la o logică în care expeditorul permite altor"
" dispozitive să descarce. Mai mult, orice dispozitiv care are fișier poate "
"fi gazda pentru alte dispozitive, permițând recuperarea fișierelor chiar "
"dacă expeditorul nu este acolo."
#: ../../../developer/swarm.md:403
msgid ""
"The sender adds a new commit in the conversation with the following format:"
msgstr ""
"Însă, în conversatie, trimiteul adaugă un nou angajament în următorul "
"format:"
#: ../../../developer/swarm.md:413
msgid ""
"and creates a link in "
"`${data_path}/conversation_data/${conversation_id}/${file_id}` where "
"`file_id=${commitid}_${value[\"tid\"]}.${extension}`"
msgstr ""
"și creează un link în "
"`${data_path}/conversation_data/${conversation_id}/${file_id}` unde "
"`file_id=${commitid}_${value[\"tid\"]}.${extension}`"
#: ../../../developer/swarm.md:415
msgid ""
"Then, the receiver can now download the files by contacting the devices "
"hosting the file by opening a channel with `name=\"data-transfer://\" + "
"conversationId + \"/\" + currentDeviceId() + \"/\" + fileId` and store the "
"info that the file is waiting in "
"`${data_path}/conversation_data/${conversation_id}/waiting`"
msgstr ""
"Apoi, receptorul poate descărca acum fișierele contactând dispozitivele care"
" găzduiesc fișierul prin deschiderea unui canal cu `name=\"data-"
"transfer://\" + conversationId + \"/\" + currentDeviceId() + \"/\" + fileId`"
" și stochează informațiile despre care fișierul așteaptă în "
"`${data_path}/conversation_data/${conversation_id}/waiting`"
#: ../../../developer/swarm.md:417
msgid ""
"The device receiving the connection will accepts the channel by verifying if"
" the file can be sent (if sha3sum is correct and if file exists). The "
"receiver will keep the first opened channel, close the others and write into"
" a file (with the same path as the sender: "
"`${data_path}/conversation_data/${conversation_id}/${file_id}`) all incoming"
" data."
msgstr ""
"Dispozitivul care primește conexiunea va accepta canalul verificând dacă "
"fișierul poate fi trimis (dacă sha3sum este corect și dacă există fișier). "
"Receptorul va păstra primul canal deschis, va închide ceilalți și va scrie "
"într-un fișier (cu aceeași cale ca expeditorul: "
"`${data_path}/conversation_data/${conversation_id}/${file_id}`) toate datele"
" de intrare."
#: ../../../developer/swarm.md:419
msgid ""
"When the transfer is finished or the channel closed, the sha3sum is verified"
" to validate that the file is correct (else it's deleted). If valid, the "
"file will be removed from the waiting."
msgstr ""
"Când transferul este finalizat sau canalul este închis, sha3sum este "
"verificat pentru a valida că fișierul este corect (sau este șters)."
#: ../../../developer/swarm.md:421
msgid ""
"In case of failure, when a device of the conversation will be back online, "
"we will ask for all waiting files by the same way."
msgstr ""
"În cazul eşecului, când un dispozitiv al conversaţiei va fi redat, vom cere "
"toate fişierele de aşteptare în acelaşi mod."
#: ../../../developer/swarm.md:423
msgid "Call in swarm"
msgstr "Chemaţi-l pe swarm."
#: ../../../developer/swarm.md:425
msgid "TODO: nameserver part"
msgstr "TODO: partea serverului de nume"
#: ../../../developer/swarm.md:427
msgid "Idea"
msgstr "Ideea"
#: ../../../developer/swarm.md:429
msgid ""
"A swarm conversation can have multiple rendez-vous. A rendez-vous is defined"
" by the following uri:"
msgstr "O conversație în grup poate avea mai multe întâlniri."
#: ../../../developer/swarm.md:431
msgid ""
"\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId "
"describes the host."
msgstr ""
"\"accountUri/deviceId/conversationId/confId\" unde accountUri/deviceId "
"descrie gazda."
#: ../../../developer/swarm.md:433
msgid "The host can be determined via two ways:"
msgstr "Oaspetele poate fi determinat prin două metode:"
#: ../../../developer/swarm.md:435
msgid ""
"In the swarm metadatas. Where it's stored like the title/desc/avatar of the "
"room"
msgstr ""
"În grădina metadatele, unde sunt stocate ca titlul/desc/avatar al camerei."
#: ../../../developer/swarm.md:436
msgid "Or the initial caller."
msgstr "Sau apelantul iniţial."
#: ../../../developer/swarm.md:438
msgid ""
"When starting a call, the host will add a new commit to the swarm, with the "
"URI to join (accountUri/deviceId/conversationId/confId). This will be valid "
"till the end of the call (announced by a commit with the duration to show)"
msgstr ""
"La începerea unui apel, gazda va adăuga o nouă intrare în grup, cu URI-ul de"
" intrare (accountUri/deviceId/conversationId/confId). Acesta va fi valabil "
"pînă la sfîrșitul apelului (anunțat printr-un angajament cu durata de "
"afișare)."
#: ../../../developer/swarm.md:441
msgid ""
"So every part will receive the infos that a call has started and will be "
"able to join it by calling it."
msgstr ""
"Fiecare parte va primi informațiile că un apel a început și va putea să se "
"alăture apelului."
#: ../../../developer/swarm.md:443
msgid "Attacks?"
msgstr "Atacuri?"
#: ../../../developer/swarm.md:445
msgid "Avoid git bombs"
msgstr "Evitaţi bombe de la Git"
#: ../../../developer/swarm.md:447
msgid "Notes"
msgstr "Notă"
#: ../../../developer/swarm.md:449
msgid ""
"The timestamp of a commit can be trusted because it's editable. Only the "
"user's timestamp can be trusted."
msgstr "Timpul unui commit poate fi de încredere pentru că este editabil."
#: ../../../developer/swarm.md:451
msgid "TLS"
msgstr "TLS"
#: ../../../developer/swarm.md:453
msgid ""
"Git operations, control messages, files, and other things will use a p2p TLS"
" v1.3 link with only ciphers which guaranty PFS. So each key is renegotiated"
" for each new connexion."
msgstr ""
"Operațiunile Git, mesajele de control, fișierele și alte lucruri vor folosi "
"un link TLS v1.3 p2p cu numai cifre care garantează PFS."
#: ../../../developer/swarm.md:455
msgid "DHT (udp)"
msgstr "DHT (udp)"
#: ../../../developer/swarm.md:457
msgid ""
"Used to send messages for mobiles (to trigger push notifications) and to "
"initiate TCP connexions."
msgstr ""
"Utilizat pentru a trimite mesaje pentru telefoane mobile (push notificări) "
"și pentru a iniția conexiuni TCP."
#: ../../../developer/swarm.md:459
msgid "Network activity"
msgstr "Activitate de rețea"
#: ../../../developer/swarm.md:461
msgid "Process to invite someone"
msgstr "Procesul de a invita pe cineva"
#: ../../../developer/swarm.md:463
msgid "Alice wants to invite Bob:"
msgstr "Alice vrea să-l invite pe Bob:"
#: ../../../developer/swarm.md:465
msgid "Alice adds bob to a conversation"
msgstr "Alice adaugă Bob la o conversaţie"
#: ../../../developer/swarm.md:466
msgid ""
"Alice generates an invite: { \"application/invite+json\" : { "
"\"conversationId\": \"$id\", \"members\": [{...}] }}"
msgstr ""
#: ../../../developer/swarm.md:470
msgid ""
"Two possibilities for sending the message a. If not connected, via the DHT"
" b. Else, Alice sends on the SIP channel"
msgstr ""
"Două posibilități de a trimite mesajul a. Dacă nu este conectat, prin DHT b."
" Altfel, Alice trimite pe canalul SIP"
#: ../../../developer/swarm.md:473
msgid ""
"Two possibilities for Bob a. Receives the invite, a signal is emitted for "
"the client b. Not connected, so will never receive the request cause Alice "
"must not know if Bob just ignored or blocked Alice. The only way is to "
"regenerate a new invite via a new message (cf. next scenario)"
msgstr ""
"Bob a. Primeste invitația, un semnal este emis pentru clientul b. Nu este "
"conectat, deci nu va primi niciodată cererea deoarece Alice nu trebuie să "
"știe dacă Bob a ignorat sau a blocat Alice. Singura modalitate este de a "
"regenera o nouă invitație printr-un mesaj nou (cf. următorul scenariu)"
#: ../../../developer/swarm.md:477
msgid "Process to send a message to someone"
msgstr "Procesul de a trimite un mesaj cuiva"
#: ../../../developer/swarm.md:479
msgid "Alice wants to send a message to Bob:"
msgstr "Alice vrea să trimită un mesaj lui Bob:"
#: ../../../developer/swarm.md:481
msgid "Alice adds a message in the repo, giving an ID"
msgstr "Alice adaugă un mesaj în repo, oferind o identificare"
#: ../../../developer/swarm.md:482
msgid "Alice gets a message received (from herself) if successful"
msgstr "Alice primeşte un mesaj primit (de la ea) dacă reuşeşte"
#: ../../../developer/swarm.md:483
msgid ""
"Two possibilities, alice and bob are connected, or not. In both case a "
"message is crafted: { \"application/im-gitmessage-id\" : "
"\"{\"id\":\"$convId\", \"commit\":\"$commitId\", \"deviceId\": "
"\"$alice_device_hash\"}\"}. a. If not connected, via the DHT b. Else, "
"Alice sends on the SIP channel"
msgstr ""
"În ambele cazuri se creează un mesaj: { \"application/im-gitmessage-id\" : "
"\"{\"id\":\"$convId\", \"commit\":\"$commitId\", \"deviceId\": "
"\"$alice_device_hash\"}\"}. a. Dacă nu este conectat, prin DHT b. Altfel, "
"Alice trimite pe canalul SIP"
#: ../../../developer/swarm.md:486
msgid ""
"Four possibilities for Bob: a. Bob is not connected to Alice, so if he "
"trusts Alice, ask for a new connection and go to b. b. If connected, fetch "
"from Alice and announce new messages c. Bob doesn't know that conversation."
" Ask through the DHT to get an invite first to be able to accept that "
"conversation ({\"application/invite\", conversationId}) d. Bob is "
"disconnected (no network, or just closed). He will not receive the new "
"message but will try to sync when the next connection will occur"
msgstr ""
"Bob nu este conectat la Alice, deci dacă are încredere în Alice, cere o nouă"
" conexiune și merge la b. b. Dacă este conectat, ia-l de la Alice și anunță "
"noi mesaje c. Bob nu știe conversația."
#: ../../../developer/swarm.md:495
msgid "![Diagram: swarm chat classes](images/swarm-chat-classes-diagram.jpg)"
msgstr ""
"! [Diagram: cursuri de chat de grup](images/swarm-chat-classes-diagram.jpg)"
#: ../../../developer/swarm.md:495
msgid "Diagram: swarm chat classes"
msgstr "Diagram: cursuri de chat cu zval"
#: ../../../developer/swarm.md:497
msgid "Supported messages"
msgstr ""
#: ../../../developer/swarm.md:499
msgid "Initial message"
msgstr ""
#: ../../../developer/swarm.md:509
msgid "Represents the first commit of a repository and contains the mode:"
msgstr ""
#: ../../../developer/swarm.md:514
msgid "and `invited` if mode = 0."
msgstr ""
#: ../../../developer/swarm.md:516
msgid "Text message"
msgstr "Mesaj text"
#: ../../../developer/swarm.md:526
msgid "Or for an edition:"
msgstr ""
#: ../../../developer/swarm.md:538
msgid "Show the end of a call (duration in milliseconds):"
msgstr ""
#: ../../../developer/swarm.md:547
msgid "Or for hosting a call in a group (when it starts)"
msgstr ""
#: ../../../developer/swarm.md:558
msgid ""
"A second commit with the same JSON + `duration` is added at the end of the "
"call when hosted."
msgstr ""
#: ../../../developer/swarm.md:560
msgid "Add a file"
msgstr ""
#: ../../../developer/swarm.md:572
msgid "`totalSize` is in bits,"
msgstr ""
#: ../../../developer/swarm.md:574
msgid "Updating profile"
msgstr ""
#: ../../../developer/swarm.md:582
msgid "Member event"
msgstr ""
#: ../../../developer/swarm.md:592
msgid ""
"When a member is invited, join or leave or is kicked from a conversation"
msgstr ""
#: ../../../developer/swarm.md:594
msgid "Vote event"
msgstr ""
#: ../../../developer/swarm.md:596
msgid ""
"Generated by administrators to add a vote for kicking or un-kicking someone."
msgstr ""
#: ../../../developer/swarm.md:608
msgid "**!! OLD DRAFT !!**"
msgstr "**!! JOCĂTĂ BĂRĂ!!**"
#: ../../../developer/swarm.md:610
msgid ""
"Note: Following notes are not organized yet. Just some line of thoughts."
msgstr "Notă: Notele următoare nu sunt încă organizate."
#: ../../../developer/swarm.md:612
msgid "Crypto improvements."
msgstr "Îmbunătăţiri criptografice."
#: ../../../developer/swarm.md:614
msgid ""
"For a serious group chat feature, we also need serious crypto. With the "
"current design, if a certificate is stolen as the previous DHT values of a "
"conversation, the conversation can be decrypted. Maybe we need to go to "
"something like **Double ratchet**."
msgstr ""
"Pentru o funcție de chat de grup serios, avem nevoie de criptografie "
"serioasă. Cu designul actual, dacă un certificat este furat ca valorile DHT "
"anterioare ale unei conversații, conversația poate fi decriptată. Poate că "
"trebuie să mergem la ceva ca ** Double ratchet**."
#: ../../../developer/swarm.md:616
msgid ""
"Note: a lib might exist to implement group conversations. TODO, investigate."
msgstr ""
"Nota: ar putea exista o lib pentru a implementa conversaţiile de grup."
#: ../../../developer/swarm.md:618
msgid "Needs ECC support in OpenDHT"
msgstr "Are nevoie de sprijin ECC în OpenDHT"
#: ../../../developer/swarm.md:622
msgid "Add Roles?"
msgstr "Să adaugăm roluri?"
#: ../../../developer/swarm.md:624
msgid "There is two major use case for group chats:"
msgstr "Există două cazuri de utilizare majore pentru discuțiile de grup:"
#: ../../../developer/swarm.md:626
msgid ""
"Something like a Mattermost in a company, with private channels, and some "
"roles (admin/spectator/bot/etc) or for educations (where only a few are "
"active)."
msgstr ""
"Ceva de genul Mattermost într-o companie, cu canale private, și unele roluri"
" (admin/spectator/bot/etc) sau pentru educație (unde doar câțiva sunt "
"activi)."
#: ../../../developer/swarm.md:627
msgid "Horizontal conversations like a conversation between friends."
msgstr "Conversaţii orizontale, ca o conversaţie între prieteni."
#: ../../../developer/swarm.md:629
msgid "Jami will be for which one?"
msgstr ""
#: ../../../developer/swarm.md:631
msgid "Implementation idea"
msgstr "Ideea de implementare"
#: ../../../developer/swarm.md:633
msgid ""
"A certificate for a group that sign user with a flag for a role. Adding or "
"revoking can also be done."
msgstr ""
"Certificat pentru un grup care semnează utilizatorul cu un steag pentru un "
"rol."
#: ../../../developer/swarm.md:635
msgid "Join a conversation"
msgstr "Urmăreşte o conversaţie"
#: ../../../developer/swarm.md:637
msgid "Only via a direct invite"
msgstr "Doar prin invitaţie directă"
#: ../../../developer/swarm.md:638
msgid "Via a link/QR Code/whatever"
msgstr "Printr-un link/Codul QR/ceea ce"
#: ../../../developer/swarm.md:639
msgid "Via a room name? (a **hash** on the DHT)"
msgstr "- Pe nume de cameră?"
#: ../../../developer/swarm.md:641
msgid "What we need"
msgstr "Ceea ce avem nevoie"
#: ../../../developer/swarm.md:643
msgid ""
"Confidentiality: members outside of the group chat should not be able to "
"read messages in the group"
msgstr ""
"Confidențialitate: membrii din afara grupului de chat nu ar trebui să poată "
"citi mesajele din grup"
#: ../../../developer/swarm.md:644
msgid ""
"Forward secrecy: if any key from the group is compromised, previous messages"
" should remain confidential (as much as possible)"
msgstr ""
"Secretul de către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către către către către către către către către "
"către către către către către"
#: ../../../developer/swarm.md:646
msgid "Message ordering: There is a need to have messages in the right order"
msgstr "Ordonanţa mesajelor: Este necesar să fie mesajele în ordinea corectă"
#: ../../../developer/swarm.md:647
msgid ""
"Synchronization: There is also a need to be sure to have all messages at "
"soon as possible."
msgstr ""
"Sincronizare: Este necesar să se asigure că toate mesajele sunt disponibile "
"cât mai curând posibil."
#: ../../../developer/swarm.md:648
msgid ""
"Persistence: Actually, a message on the DHT lives only 10 minutes. Because "
"it's the best timing calculated for this kind of DHT. To persist data, the "
"node must re-put the value on the DHT every 10 minutes. Another way to do "
"when the node is offline is to let nodes re-put the data. But, if after 10 "
"minutes, 8 nodes are still here, they will do 64 requests (and it's "
"exponential). The current way to avoid spamming for that is queried. This "
"will still do 64 requests but limit the max redundancy to 8 nodes."
msgstr ""
"Persistența: De fapt, un mesaj pe DHT trăiește doar 10 minute. Pentru că "
"este cel mai bun timp calculat pentru acest tip de DHT. Pentru a persista "
"datele, nodul trebuie să reinsereze valoarea pe DHT la fiecare 10 minute. Un"
" alt mod de a face când nodul este offline este să lase nodurile să "
"reinsereze datele. Dar, dacă după 10 minute, 8 noduri sunt încă aici, vor "
"face 64 de cereri (și este exponențial). Modul actual de a evita spamming "
"pentru asta este consultat. Acest lucru va face încă 64 de cereri, dar va "
"limita redundanța maximă la 8 noduri."
#: ../../../developer/swarm.md:650
msgid "Other distributed ways"
msgstr "Alte modalități distribuite"
#: ../../../developer/swarm.md:652
msgid "IPFS: Need some investigation"
msgstr "IPFS: Trebuie să se facă nişte investigaţii"
#: ../../../developer/swarm.md:653
msgid "BitMessage: Need some investigation"
msgstr "Am nevoie de o investigaţie."
#: ../../../developer/swarm.md:654
msgid "Maidsafe: Need some investigation"
msgstr "Am nevoie de o investigaţie."
#: ../../../developer/swarm.md:656
msgid "Based on current work we have"
msgstr "Pe baza lucrărilor actuale pe care le avem"
#: ../../../developer/swarm.md:658
msgid ""
"Group chat can be based on the same work we already have for multi-devices "
"(but here, with a group certificate). Problems to solve:"
msgstr ""
"Chatul de grup poate fi bazat pe aceeași muncă pe care o avem deja pentru "
"mai multe dispozitive (dar aici, cu un certificat de grup)."
#: ../../../developer/swarm.md:660
msgid ""
"History sync. This needs to move the database from the client into the "
"daemon."
msgstr "Acest lucru trebuie să mute baza de date de la client în daemon."
#: ../../../developer/swarm.md:661
msgid ""
"If nobody is connected, the synchronization can not be done, and the person "
"will never see the conversation"
msgstr ""
"Dacă nimeni nu este conectat, sincronizarea nu poate fi făcută, iar persoana"
" nu va vedea conversația niciodată"
#: ../../../developer/swarm.md:663
msgid "Another dedicated DHT"
msgstr "Un alt DHT dedicat"
#: ../../../developer/swarm.md:665
msgid "Like a DHT with a superuser. (Not convinced)"
msgstr "Ca un DHT cu un super utilizator."
#: ../../../developer/swarm.md:669
msgid ""
"Currently, the file transfer algorithm is based on a TURN connection (See "
"{doc}`file-transfer`). In the case of a big group, this will be bad. We "
"first need a p2p implement for the file transfer. Implement the RFC for p2p "
"transfer."
msgstr ""
"În prezent, algoritmul de transfer de fișiere se bazează pe o conexiune TURN"
" (vezi {doc}`file-transfer`). În cazul unui grup mare, acest lucru va fi "
"rău. Mai întâi avem nevoie de un implement p2p pentru transferul de fișiere."
" Implementează RFC pentru transferul p2p."
#: ../../../developer/swarm.md:671
msgid ""
"Other problem: currently there is no implementation for TCP support for ICE "
"in PJSIP. This is mandatory for this point (in pjsip or homemade)"
msgstr ""
"Alte probleme: în prezent nu există implementare a suportului TCP pentru ICE"
" în PJSIP."
#: ../../../developer/swarm.md:673
msgid "Resources"
msgstr "Resurse"
#: ../../../developer/swarm.md:675
msgid "https://eprint.iacr.org/2017/666.pdf"
msgstr ""
"În cazul în care se aplică un sistem de control al datelor de utilizare, se "
"aplică:"
#: ../../../developer/swarm.md:676
msgid ""
"Robust distributed synchronization of networked linear systems with "
"intermittent information (Sean Phillips and Ricardo G.Sanfelice)"
msgstr ""
"Sincronizare robustă distribuită a sistemelor lineare rețetate cu informații"
" intermitente (Sean Phillips și Ricardo G.Sanfelice)"
#: ../../../developer/synchronization-protocol.md:1
msgid "Synchronization protocol"
msgstr "Protocolul de sincronizare"
#: ../../../developer/synchronization-protocol.md:4
msgid ""
"The swarm chat provides new possibilities for every device. Now, it's "
"possible to sync history between devices by sharing the related repository. "
"Devices sync needs to be redefined to follow those changes."
msgstr ""
"Chat-ul swarm oferă noi posibilități pentru fiecare dispozitiv. Acum, este "
"posibil să se sincronizeze istoricul între dispozitive prin împărțirea "
"repository-ului aferent."
#: ../../../developer/synchronization-protocol.md:6
msgid ""
"A lot of scenarios are defined in the {doc}`Swarm design document <swarm>`, "
"however, this doesn't imply for syncing conversations between devices for "
"the same user. Some new scenarios must be written."
msgstr ""
"Multe scenarii sunt definite în documentul de proiectare <swarm>`, cu toate "
"acestea, acest lucru nu implică sincronizarea conversațiilor între "
"dispozitive pentru același utilizator."
#: ../../../developer/synchronization-protocol.md:8
msgid "Old method"
msgstr "Vechiul mod"
#: ../../../developer/synchronization-protocol.md:10
msgid ""
"Device sync were done via the DHT. Because every value MUST NOT exceed 64k, "
"conversations were not sent in device sync, nor member profiles, because "
"it's too heavy. This is a problem and MUST be improved."
msgstr ""
"Din moment ce fiecare valoare nu trebuie să depășească 64k, conversațiile nu"
" au fost trimise în sincronizarea dispozitivului, nici în profilurile "
"membrilor, deoarece este prea grea."
#: ../../../developer/synchronization-protocol.md:12
msgid ""
"In the old method, the daemon is listening on \"inbox:DEVICE_ID\" for "
"DeviceSync values which contains the contact list to sync (cf. "
"`AccountManager::startSync()`);"
msgstr ""
"În vechea metodă, daemonul ascultă pe \"inbox:DEVICE_ID\" pentru valorile "
"DeviceSync care conțin lista de contacte pentru sincronizare (cf. "
"`AccountManager::startSync() `);"
#: ../../../developer/synchronization-protocol.md:14
msgid ""
"**NOTE:** The current **DeviceSync** value present on the **DHT** is "
"deprecated with this draft."
msgstr ""
"** NOTă:** Valorul actual **DeviceSync** prezent pe **DHT** este depășit cu "
"acest proiect."
#: ../../../developer/synchronization-protocol.md:16
msgid "New method"
msgstr "Noua metodă"
#: ../../../developer/synchronization-protocol.md:18
msgid ""
"Since Jami has the {doc}`ConnectionManager <connection-manager>`, using p2p "
"socket is possible to perform sync quickly with big values (cause the socket"
" is not limited in data)"
msgstr ""
"Deoarece Jami are {doc}`ConnectionManager <connection-manager>`, folosind "
"socket p2p este posibil să se realizeze sincronizare rapidă cu valori mari "
"(pentru că socketul nu este limitat în date)"
#: ../../../developer/synchronization-protocol.md:20
msgid "Now, this is the scenario used to sync:"
msgstr "Acum, acesta este scenariul folosit pentru a sincroniza:"
#: ../../../developer/synchronization-protocol.md:22
msgid ""
"When the device (*A*) goes online, it announces its presence via a "
"DeviceAnnouncement like the OldMethod"
msgstr ""
"Când dispozitivul (*A*) se conectează, el anunţă prezenţa sa printr-un anunţ"
" de dispozitiv, cum ar fi OldMethod."
#: ../../../developer/synchronization-protocol.md:23
msgid ""
"Other devices (*!A*) will detect that announce and will ask this device "
"through the **ConnectionManager** to open a new channel named "
"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other devices, "
"so it will asks for sync channels too)."
msgstr ""
"Alte dispozitive (*!A*) vor detecta anunțul și vor cere acestui dispozitiv "
"prin **ConnectionManager** să deschidă un nou canal numit "
"\"sync://DEVICE_ID_A\". (Nota: A va primi anunțuri de la alte dispozitive, "
"astfel încât va cere și canalele de sincronizare)."
#: ../../../developer/synchronization-protocol.md:24
msgid ""
"As soon as this channel is opened, the device which is asking this channel "
"will send a **DeviceSync** (cf. next part) value containing its known "
"conversations and contacts."
msgstr ""
"De îndată ce acest canal este deschis, dispozitivul care solicită acest "
"canal trimite o valoare **DeviceSync** (cf. următoarea parte) care conține "
"conversațiile și contactele sale cunoscute."
#: ../../../developer/synchronization-protocol.md:25
msgid "*A* will check the **DeviceSync** value and:"
msgstr "*A* va verifica valoarea **DeviceSync** și:"
#: ../../../developer/synchronization-protocol.md:26
msgid "Remove contacts if it detects removed contacts"
msgstr "Scoateţi contacte dacă detectează contacte scoase"
#: ../../../developer/synchronization-protocol.md:27
msgid "Add contacts if it detects added contacts"
msgstr "Adăugați contacte dacă detectează contacte adăugate"
#: ../../../developer/synchronization-protocol.md:28
msgid "Remove conversations if it detects removed conversations"
msgstr "Scoate conversaţiile dacă detectează conversaţiile eliminate"
#: ../../../developer/synchronization-protocol.md:29
msgid "Add conversations if it detects added conversations"
msgstr "Adăugați conversații dacă detectează conversații adăugate"
#: ../../../developer/synchronization-protocol.md:30
msgid ""
"Remove conversation's requests if request is accepted (now in "
"conversations)/declined"
msgstr ""
"Retrageți cererile conversației dacă cererea este acceptată (în prezent în "
"conversații) / refuzată"
#: ../../../developer/synchronization-protocol.md:31
msgid "Add conversation's requests if detected"
msgstr "Adăugați cererile conversației dacă sunt detectate"
#: ../../../developer/synchronization-protocol.md:33
msgid ""
"Note: If *A* detects new conversations, it will asks the device which "
"announced that conversation to clone the repository through a git channel "
"(so like described in {doc}`Swarm chat design <swarm>`)"
msgstr ""
"Notă: Dacă *A* detectează noi conversații, va cere dispozitivului care a "
"anunțat acea conversație să cloneze rețeaua printr-un canal git (cum este "
"descris în {doc}`Swarm chat design <swarm>`)"
#: ../../../developer/synchronization-protocol.md:35
msgid "Device Sync"
msgstr "Simcronizare de dispozitiv"
#: ../../../developer/synchronization-protocol.md:37
msgid "This value is a JSON containing:"
msgstr "Această valoare este o JSON care conține:"
#: ../../../developer/synchronization-protocol.md:54
msgid "User stories"
msgstr "Povestea utilizatorului"
#: ../../../developer/synchronization-protocol.md:56
msgid "Sync when adding device"
msgstr "Simcronizați în cazul adăugării dispozitivului"
#: ../../../developer/synchronization-protocol.md:58
#: ../../../developer/synchronization-protocol.md:65
#: ../../../developer/synchronization-protocol.md:73
msgid "Alice creates a conversation"
msgstr "Alice creează o conversaţie"
#: ../../../developer/synchronization-protocol.md:59
#: ../../../developer/synchronization-protocol.md:66
msgid "(Optional) Alice add some messages"
msgstr "(Optional) Alice adaugă câteva mesaje"
#: ../../../developer/synchronization-protocol.md:60
msgid "Alice adds another device"
msgstr "Alice adaugă un alt dispozitiv"
#: ../../../developer/synchronization-protocol.md:61
#: ../../../developer/synchronization-protocol.md:68
msgid ""
"The other device should receives and sync the conversation previously "
"created"
msgstr ""
"Celălalt dispozitiv trebuie să primească și să sincronizeze conversația "
"creată anterior"
#: ../../../developer/synchronization-protocol.md:63
msgid "Sync when connect a device"
msgstr "Simcronizați atunci când conectați un dispozitiv"
#: ../../../developer/synchronization-protocol.md:67
msgid "Alice connects another device"
msgstr "Alice conectează un alt dispozitiv"
#: ../../../developer/synchronization-protocol.md:70
msgid "Sync between multiple devices"
msgstr "Sincronizare între mai multe dispozitive"
#: ../../../developer/synchronization-protocol.md:72
msgid "Alice got 2 devices"
msgstr "Alice a avut 2 dispozitive."
#: ../../../developer/synchronization-protocol.md:74
msgid ""
"The other device should receives and sync the conversation created on one of"
" the devices"
msgstr ""
"Celălalt dispozitiv trebuie să primească și să sincronizeze conversația "
"creată pe unul dintre dispozitive"
#: ../../../developer/synchronization-protocol.md:76
msgid "Sync for detecting new requests"
msgstr "Sincronizare pentru detectarea de noi solicitări"
#: ../../../developer/synchronization-protocol.md:78
msgid "Alice receives a conversation's request"
msgstr "Alice primeşte cererea de conversaţie"
#: ../../../developer/synchronization-protocol.md:79
msgid "Alice add a new device"
msgstr "Alice adaugă un nou dispozitiv"
#: ../../../developer/synchronization-protocol.md:80
msgid "The other device should retrieve the requests from device A"
msgstr ""
"Celălalt dispozitiv trebuie să recupereze cererile de la dispozitivul A"
#: ../../../developer/synchronization-protocol.md:82
msgid "Sync for accepted requests"
msgstr "Sincronizare pentru cererile acceptate"
#: ../../../developer/synchronization-protocol.md:84
#: ../../../developer/synchronization-protocol.md:90
msgid "Alice has 2 devices"
msgstr "Alice are 2 dispozitive."
#: ../../../developer/synchronization-protocol.md:85
msgid "Alice accepts a conversation's request"
msgstr "Alice acceptă cererea unei conversaţii"
#: ../../../developer/synchronization-protocol.md:86
msgid "The other device should detect the accepted request"
msgstr "Celălalt dispozitiv trebuie să detecteze cererea acceptată"
#: ../../../developer/synchronization-protocol.md:88
msgid "Sync for decline requests"
msgstr "Sincronizare pentru cererile de declin"
#: ../../../developer/synchronization-protocol.md:91
msgid "Alice declines a conversation's request"
msgstr "Alice refuză cererea de conversaţie"
#: ../../../developer/synchronization-protocol.md:92
msgid "The other device should detect the declined request"
msgstr "Celălalt dispozitiv trebuie să detecteze cererea refuzată"
#: ../../../developer/synchronization-protocol.md:94
msgid "Current implementation"
msgstr "Implementarea actuală"
#: ../../../developer/synchronization-protocol.md:96
msgid "{gerrit}`15584` implements this page"
msgstr "{gerrit}`15584` implementează această pagină"
#: ../../../developer/synchronizing-profiles.md:1
msgid "Profile synchronization"
msgstr "Sincronizare de profil"
#: ../../../developer/synchronizing-profiles.md:3
msgid ""
"There is two types of profiles. The one for the current account, and the "
"ones from contacts. As this vcard contains infos, such as the avatar and the"
" display name, it should be synced as soon as possible. But, it must be sent"
" only when needed, to avoid un-necessary data transmissions. The format used"
" to store the profiles is a [vCard](https://en.wikipedia.org/wiki/VCard) "
"(https://datatracker.ietf.org/doc/html/rfc6350)"
msgstr ""
"Există două tipuri de profiluri. Cel pentru contul actual și cel din "
"contacte. Deoarece acest vcard conține informații, cum ar fi poza de profil "
"și numele afișat, ar trebui să fie sincronizat cît mai curînd posibil. Dar, "
"trebuie să fie trimis numai atunci cînd este necesar, pentru a evita "
"transmisiile inutile de date. Formatul folosit pentru a stoca profilurile "
"este un [vCard] (https://en.wikipedia.org/wiki/VCard) "
"(https://datatracker.ietf.org/doc/html/rfc6350)"
#: ../../../developer/synchronizing-profiles.md:5
msgid "Where are stored profiles?"
msgstr "Unde sunt stocate profilurile?"
#: ../../../developer/synchronizing-profiles.md:7
msgid "Self"
msgstr "Însuși"
#: ../../../developer/synchronizing-profiles.md:9
msgid ""
"It's in `${idPath_}/profile.vcf` e.g.: "
"`.local/share/jami/xxxxxx/profile.vcf` on GNU/Linux."
msgstr ""
"Este în `${idPath_}/profile.vcf` de exemplu: "
"`.local/share/jami/xxxxxx/profile.vcf` pe GNU/Linux."
#: ../../../developer/synchronizing-profiles.md:11
msgid "Contacts"
msgstr "Contacte"
#: ../../../developer/synchronizing-profiles.md:13
msgid ""
"Because this logic is still managed per client, it depends on the client. "
"However, on Desktop, this is unified and stored into: "
"`${idPath_}/profiles/${base64(uri)}.vcf`"
msgstr ""
"Deoarece această logică este încă gestionată pe client, depinde de client. "
"Cu toate acestea, pe Desktop, aceasta este unificată și stocată în: "
"`${idPath_}/profile/${base64(uri)}.vcf`"
#: ../../../developer/synchronizing-profiles.md:16
msgid "When a profile is sent"
msgstr "Când este trimis un profil"
#: ../../../developer/synchronizing-profiles.md:21
msgid ""
"At the beginning of a call, generally client sends the vCard. However, this "
"method should be removed in favor of the other located in the daemon."
msgstr ""
"La începutul unei apeluri, clientul trimite în general vCard. Cu toate "
"acestea, această metodă trebuie eliminată în favoarea celei de altă parte, "
"situată în daemon."
#: ../../../developer/synchronizing-profiles.md:23
msgid "Send to contact's devices"
msgstr "Trimite la dispozitivele contactului"
#: ../../../developer/synchronizing-profiles.md:25
msgid ""
"When connecting to a new devices, a SIP or a sync channel is done. When this"
" channel is ready, we check if we need to send the profile. To do this, the "
"hash of the profile is compared to the one in the cache "
"(`${cacheDir}/${accId}/vcard/sha3` like `~/.cache/jami/xxxxx/vcard/sha3`on "
"GNU/Linux), and the file `${cacheDir}/${accId}/vcard/deviceId` is checked). "
"cf. `JamiAccount::needToSendProfile()`. If not present, the profile of the "
"account is sent. Typically, the name of the channel will be \"vcard://xxx\" "
"where the issuer is the one sending the profile."
msgstr ""
"Când se conectează la un nou dispozitiv, se face un canal de sincronizare "
"sau un canal de sincronizare. Când acest canal este gata, verificăm dacă "
"trebuie să trimitem profilul. Pentru a face acest lucru, hash-ul profilului "
"este comparat cu cel din cache (`${cacheDir}/${accId}/vcard/sha3` ca "
"`~/.cache/jami/xxxxx/vcard/sha3`on GNU/Linux), iar fișierul "
"`${cacheDir}/${accId}/vcard/deviceId` este verificat."
#: ../../../developer/synchronizing-profiles.md:27
msgid "Multidevices"
msgstr "Multidivise"
#: ../../../developer/synchronizing-profiles.md:29
msgid ""
"If the profile is sent and the device is from the same account, "
"conversations are checked and we send profiles of all members. The channel "
"name will be \"${conversationId}/profile/${memberUri}.vcf\". Behavior tested"
" in `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
msgstr ""
"Dacă profilul este trimis și dispozitivul este de la același cont, "
"conversațiile sunt verificate și trimitem profile ale tuturor membrilor. "
"Numele canalului va fi \"${conversationId}/profil/${memberUri}.vcf\". "
"Comportamentul testat în `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
#: ../../../developer/technical-overview.md:1
msgid "Technical overview"
msgstr "O imagine tehnică generală"
#: ../../../developer/technical-overview.md:4
msgid "Concepts"
msgstr "Concepții"
#: ../../../developer/technical-overview.md:7
msgid "Jami Account"
msgstr "Contul Jami"
#: ../../../developer/technical-overview.md:9
msgid ""
"A **Jami account** is defined by a cryptographic Jami Identity based of "
"**RSA asymmetric key-pair** and managed with **x.509 certificates** as "
"defined by *[RFC 5280](https://tools.ietf.org/html/rfc5280)*."
msgstr ""
"Un cont **Jami** este definit de o identificare criptografică Jami bazată pe"
" **RSA asimetric-pair-key** și gestionat cu certificate **x.509** astfel cum"
" sunt definite de *[RFC 5280](https://tools.ietf.org/html/rfc5280) *."
#: ../../../developer/technical-overview.md:13
msgid ""
"Jami uses the **gnutls** library to generate and manage RSA keys and "
"certificates."
msgstr ""
"Jami folosește biblioteca de GNUTLS pentru a genera și gestiona cheile și "
"certificate RSA."
#: ../../../developer/technical-overview.md:16
msgid "Jami certificate"
msgstr "Certificat Jami"
#: ../../../developer/technical-overview.md:18
msgid "This represents the identify of a Jami user."
msgstr "Aceasta reprezintă identitatea unui utilizator Jami."
#: ../../../developer/technical-overview.md:19
msgid "Generated at account creation"
msgstr "Generate la crearea contului"
#: ../../../developer/technical-overview.md:20
msgid "Contains the Jami account public key."
msgstr "Conţine cheia publică a contului Jami."
#: ../../../developer/technical-overview.md:21
msgid ""
"The SHA-1 fingerprint (160-bits) of this public certificate is the "
"**JamiId**."
msgstr "Amprenta SHA-1 (160-bit) a acestui certificat public este **JamiId**."
#: ../../../developer/technical-overview.md:23
msgid "Signed by a CA (from an organization or self-signed)."
msgstr "Semnat de un CA (de la o organizație sau semnat de sine)."
#: ../../../developer/technical-overview.md:24
msgid "The subject UID field must be the hexadecimal form of the JamiId."
msgstr "Câmpul UID subiectului trebuie să fie forma hexadecimală a JamiId."
#: ../../../developer/technical-overview.md:25
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (CA)."
msgstr ""
"Câmpul UID al emitentului trebuie să fie forma hexadecimală a amprentei "
"digitale cu cheia publică a emitentului (CA)."
#: ../../../developer/technical-overview.md:27
msgid "Random RSA key-pair of at least 4096-bits long."
msgstr "Par de chei RSA aleatorii de cel puțin 4096 de bite lungime."
#: ../../../developer/technical-overview.md:29
msgid "Device certificate"
msgstr "Certificatul de dispozitiv"
#: ../../../developer/technical-overview.md:31
msgid "This is the identity of one specific device used to run Jami."
msgstr ""
"Aceasta este identitatea unui dispozitiv specific folosit pentru a rula "
"Jami."
#: ../../../developer/technical-overview.md:32
msgid "One per device."
msgstr "Un pentru fiecare dispozitiv."
#: ../../../developer/technical-overview.md:33
msgid "Random and 4096-bits long."
msgstr "Random şi lung de 4096 de bitoare."
#: ../../../developer/technical-overview.md:34
msgid "The SHA-1 fingerprint of the public key becomes the **DeviceId**."
msgstr "Amprenta SHA-1 a cheii publice devine **DeviceId**."
#: ../../../developer/technical-overview.md:35
msgid "Must be signed by the private key that created the Jami certificate."
msgstr ""
"Trebuie să fie semnată de cheia privată care a creat certificatul Jami."
#: ../../../developer/technical-overview.md:36
msgid "The subject UID field must be the hexadecimal form of the DeviceId."
msgstr "Câmpul UID subiectului trebuie să fie forma hexadecimală a DeviceId."
#: ../../../developer/technical-overview.md:37
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (JamiId)."
msgstr ""
"Câmpul UID al emitentului trebuie să fie forma hexadecimală a amprentei "
"digitale cu cheia publică a emitentului (JamiId)."
#: ../../../developer/technical-overview.md:40
msgid "Usages"
msgstr "Utilizări"
#: ../../../developer/technical-overview.md:42
msgid "The JamiId:"
msgstr "- Ce?"
#: ../../../developer/technical-overview.md:43
msgid ""
"It's the DHT key where the list of account devices are published and where "
"all devices listen to synchronize on account changes (i.e. adding or revoke "
"a device)."
msgstr ""
"Este cheia DHT unde se publică lista dispozitivelor de cont și în care toate"
" dispozitivele ascultă să se sincronizeze pe schimbările de cont (adică "
"adăugarea sau revocarea unui dispozitiv)."
#: ../../../developer/technical-overview.md:46
msgid ""
"The Jami certificate RSA keys are used as long-term keys to "
"sign/encrypt/decrypt messages sent over the DHT:"
msgstr ""
"Cheile RSA de certificat Jami sunt utilizate ca cheie pe termen lung pentru "
"semnarea/cifrarea/decriptarea mesajelor trimise prin DHT:"
#: ../../../developer/technical-overview.md:48
msgid ""
"private key to sign-off and decrypt incoming messages and device "
"certificates."
msgstr ""
"cheia privată pentru semnarea și decriptarea mesajelor primite și a "
"certificatelor de dispozitiv."
#: ../../../developer/technical-overview.md:50
msgid ""
"public key to encrypt messages (this is done by the message issuer using the"
" receiver public key)."
msgstr ""
"cheia publică pentru criptarea mesajelor (aceasta se face de către emitentul"
" mesajelor folosind cheia publică a receptorului)."
#: ../../../developer/technical-overview.md:52
msgid ""
"A device can be \"removed\" from a Jami account through revocation of the "
"device certificate:"
msgstr ""
"Un dispozitiv poate fi \"extractat\" dintr-un cont Jami prin revocarea "
"certificatului de dispozitiv:"
#: ../../../developer/technical-overview.md:54
msgid ""
"Revoked device certificates are added to one or more standard x509 "
"Certificate Revocation List (CRL)."
msgstr ""
"Certificatele de dispozitiv revocate sunt adăugate la una sau mai multe "
"liste standard x509 de revocare a certificatului (CRL)."
#: ../../../developer/technical-overview.md:56
msgid ""
"CRLs for revoked device must be valid and signed with the corresponding CA "
"key, which is the Jami account private key."
msgstr ""
"CRL-urile pentru dispozitivul revocat trebuie să fie valabile și semnate cu "
"cheia CA corespunzătoare, care este cheia privată a contului Jami."
#: ../../../developer/technical-overview.md:59
msgid "Long-term Storage"
msgstr "Stocare pe termen lung"
#: ../../../developer/technical-overview.md:61
msgid "Why storing data?"
msgstr "De ce stochezi date?"
#: ../../../developer/technical-overview.md:65
msgid ""
"Jami needs to load certificates and key-pairs each time the application is "
"started."
msgstr ""
"Jami trebuie să încărce certificate şi perechi de cheie de fiecare dată când"
" se începe cererea."
#: ../../../developer/technical-overview.md:67
msgid ""
"When Jami creates a new device, these information are also needed, shared "
"from another trusted device in a secure way."
msgstr ""
"Când Jami creează un nou dispozitiv, aceste informații sunt de asemenea "
"necesare, împărtășite de la un alt dispozitiv de încredere într-un mod "
"sigur."
#: ../../../developer/technical-overview.md:69
msgid ""
"All platforms doesn't provide secure way to store data, Jami supports this "
"fact by encrypting data stored outside the memory (i.e. on a file-system) "
"using a user defined password during the account creation."
msgstr ""
"Toate platformele nu oferă un mod sigur de a stoca date, Jami susține acest "
"fapt criptând datele stocate în afara memoriei (adică pe un sistem de "
"fișiere) folosind o parolă definită de utilizator în timpul creării "
"contului."
#: ../../../developer/technical-overview.md:76
msgid "These files are stored on user device (see below for details):"
msgstr ""
"Aceste fișiere sunt stocate pe dispozitivul utilizatorului (vezi mai jos "
"pentru detalii):"
#: ../../../developer/technical-overview.md:77
msgid "a compressed and encrypted archive with private account data."
msgstr "un arhiv comprimat și criptat cu date de cont privat."
#: ../../../developer/technical-overview.md:78
msgid "the public certificates chain as a CRT file"
msgstr "lanțul de certificate publice ca fișier CRT"
#: ../../../developer/technical-overview.md:79
msgid "the device private key."
msgstr "Cheia privată a dispozitivului."
#: ../../../developer/technical-overview.md:81
msgid "Jami archive (export.gz)"
msgstr "Arhiva Jami (export.gz)"
#: ../../../developer/technical-overview.md:83
msgid "Contains private account data."
msgstr "Conţine date cu conturi private."
#: ../../../developer/technical-overview.md:84
msgid ""
"Currently transmitted over the DHT network when device is created or "
"revoked."
msgstr ""
"Transmiterea în prezent prin rețeaua DHT atunci când dispozitivul este creat"
" sau revocat."
#: ../../../developer/technical-overview.md:86
msgid "It's a JSON compressed and encrypted file."
msgstr "Este un fişier JSON comprimat şi criptat."
#: ../../../developer/technical-overview.md:90
msgid "The current format is (could change at any time):"
msgstr "Formatul actual este (ar putea fi modificat în orice moment):"
#: ../../../developer/technical-overview.md:103
msgid "The JSON byte-stream is compressed using \\*gzip\\* algorithm."
msgstr "Fluierul de byte JSON este comprimat folosind algoritmul \\*gzip\\*"
#: ../../../developer/technical-overview.md:107
msgid ""
"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with a "
"256-bits key."
msgstr ""
"Apoi, fluxul gzip este criptat folosind cipra simetrică AES-GCM-256 cu o "
"cheie de 256 de biți."
#: ../../../developer/technical-overview.md:109
msgid ""
"This key is derived from the user provided password, a PIN and a timestamp, "
"using [Argon2](https://github.com/P-H-C/phc-winner-argon2) (a password "
"stretching and normalizer) as follow:"
msgstr ""
"Această cheie este derivată din parola furnizată de utilizator, un PIN și un"
" timestamp, folosind [Argon2](https://github.com/P-H-C/phc-winner-argon2) (o"
" prelungire și normalizator de parola) după cum urmează:"
#: ../../../developer/technical-overview.md:124
msgid ""
"The PIN should be shown to the user to be copied manually on the new "
"physical device along with the password to finish the device creation "
"process."
msgstr ""
"PIN-ul trebuie arătat utilizatorului pentru a fi copiat manual pe noul "
"dispozitiv fizic împreună cu parola pentru a finaliza procesul de creare a "
"dispozitivului."
#: ../../../developer/technical-overview.md:127
msgid ""
"NOTE: when exporting a file on the DHT or anywhere else, the daemon update "
"the archive first, to write latest contacts. This is the reason why the "
"password is needed when exporting (it's not just a copy of the archive "
"somewhere else)"
msgstr ""
"NOTă: atunci când exportați un fișier pe DHT sau oriunde altundeva, daemonul"
" actualizează arhiva mai întâi, pentru a scrie ultimele contacte. Acesta "
"este motivul pentru care parola este necesară atunci când exportați (nu este"
" doar o copie a arhivei în altă parte)"
#: ../../../developer/technical-overview.md:129
msgid "Jami device certificate chain (ring\\_device.crt)"
msgstr "Cea de certificate pentru dispozitivele Jami (ring\\_device.crt)"
#: ../../../developer/technical-overview.md:131
#: ../../../developer/technical-overview.md:137
msgid "PEM format"
msgstr "Formatul PEM"
#: ../../../developer/technical-overview.md:132
msgid ""
"Includes the Device certificate and parent certificates (Jami device "
"certificate and parents)"
msgstr ""
"Include certificatul de dispozitiv și certificatul de bază (certificat de "
"dispozitiv Jami și certificatul de bază)"
#: ../../../developer/technical-overview.md:135
msgid "Device private key (ring\\_device.key)"
msgstr "Cheia privată a dispozitivului (ring\\_device.key)"
#: ../../../developer/technical-overview.md:138
msgid "not encrypted, we let the device file-system protect this file"
msgstr ""
"Nu este criptată, lăsăm sistemul de fişiere de dispozitiv să protejeze acest"
" fişier"
#: ../../../developer/technical-overview.md:140
msgid "The DHT network"
msgstr "Rețeaua DHT"
#: ../../../developer/technical-overview.md:142
msgid ""
"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
" page."
msgstr ""
"Pagina dedicată [Jami distribuit rețeaua] ((Ring_distributed_network "
"\"wikilink\")"
#: ../../../developer/technical-overview.md:145
msgid "Contact Request"
msgstr "Cerere de contact"
#: ../../../developer/technical-overview.md:147
msgid "Deprecated in favor of \"Conversation requests\""
msgstr ""
#: ../../../developer/technical-overview.md:149
msgid "Conversation request"
msgstr ""
#: ../../../developer/technical-overview.md:151
msgid "Max 64k (a DHT value)"
msgstr ""
#: ../../../developer/technical-overview.md:152
msgid "Contains a conversation Id"
msgstr ""
#: ../../../developer/technical-overview.md:153
msgid "Contains the sender URI"
msgstr ""
#: ../../../developer/technical-overview.md:154
msgid "Can contains optional metadatas (avatar/profile)"
msgstr ""
#: ../../../developer/technical-overview.md:156
msgid "Instant Message"
msgstr "Mesaj instant"
#: ../../../developer/technical-overview.md:158
msgid "Mostly used to initiate connections with ICE candidates"
msgstr ""
#: ../../../developer/technical-overview.md:159
msgid "Can transmit some SIP messages, however SIP channel is preferred"
msgstr ""
#: ../../../developer/technical-overview.md:160
msgid ""
"SIP messages can be read status, location sharing, messages notifications."
msgstr ""
#: ../../../developer/technical-overview.md:162
msgid "Outgoing and Incoming calls"
msgstr "Inconvenții în circulație și în circulație"
#: ../../../developer/technical-overview.md:164
msgid ""
"Contactable addresses (i.e. IP addresses) of the user are given to peer "
"only:"
msgstr ""
"Adresele de contact (adresele IP) ale utilizatorului sunt date doar peer:"
#: ../../../developer/technical-overview.md:166
msgid "When we call a peer (outgoing call)."
msgstr "Când chemăm pe un coleg."
#: ../../../developer/technical-overview.md:167
msgid "When a **trusted** peer is calling (incoming call)."
msgstr "Când un coleg de încredere sună (număr de apel)."
#: ../../../developer/technical-overview.md:168
msgid ""
"All combination forms of how a specific device can be contacted is "
"summarized by a ICE message:"
msgstr ""
"Toate formele combinate ale modului în care un dispozitiv specific poate fi "
"contactat sunt rezumate printr-un mesaj ICE:"
#: ../../../developer/technical-overview.md:170
msgid ""
"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE (Interactive "
"Connectivity Establishment), a protocol for NAT traversal."
msgstr ""
"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* definește ICE (Interactive"
" Connectivity Establishment), un protocol pentru traversarea NAT."
#: ../../../developer/technical-overview.md:176
msgid "Making an outgoing call"
msgstr "Să fac un apel de ieşire"
#: ../../../developer/technical-overview.md:178
msgid ""
"The calling device gathers candidates and build an **Initial Offer** "
"according to the ICE specifications."
msgstr ""
"Dispozitivul de apel colectează candidați și construiește o **Oferta "
"inițială** în conformitate cu specificațiile ICE."
#: ../../../developer/technical-overview.md:180
msgid ""
"The calling device puts the encrypted ICE offer (the *Initial Offer*) on the"
" DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is "
"SHA1, *+* is the string concatenation, *DeviceID* is in hexadecimal form."
msgstr ""
"Dispozitivul de apel pune oferta criptată a ICE (Oferta inițială*) pe DHT "
"la: `h(\"`[callto:\"+DeviceID`](callto:%22+DeviceID)`)` unde *h* este SHA1, "
"*+* este concatenarea de fire, *DeviceID* este în formă hexadecimală."
#: ../../../developer/technical-overview.md:185
msgid ""
"The calling device waits on the peer answer, with its own ICE candidates "
"lists."
msgstr ""
"Dispozitivul de apel aşteaptă răspunsul de la colegi, cu propriile liste de "
"candidaţi ICE."
#: ../../../developer/technical-overview.md:187
msgid ""
"At peer answer reception, the calling device starts the ICE negotiation."
msgstr ""
"La recepţia de răspuns al colegilor, dispozitivul de apel începe negocierile"
" ICE."
#: ../../../developer/technical-overview.md:189
msgid ""
"If the negotiation succeed, the process continues on a client-side DTLS "
"session establishment over the created ICE socket (see below)."
msgstr ""
"În cazul în care negocierea este de succes, procesul continuă pe o bază de "
"sesiuni DTLS din partea clientului pe socketul ICE creat (vezi mai jos)."
#: ../../../developer/technical-overview.md:192
msgid "Listening for incoming calls"
msgstr "Ascultarea apelurilor primite"
#: ../../../developer/technical-overview.md:194
msgid ""
"A device listens for incoming calls by performing a listen OpenDHT operation"
" on `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is SHA1, "
"*+* is the string concatenation and *DeviceID* is in hexadecimal form."
msgstr ""
"Un dispozitiv ascultă apelurile primite efectuând o operațiune OpenDHT "
"ascultă pe `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` unde *h* "
"este SHA1, *+* este concatenarea de știre și *DeviceID* este în formă "
"hexadecimală."
#: ../../../developer/technical-overview.md:198
msgid ""
"At ICE *Initial Offer* reception, the called device **must** do a security "
"validation of the peer (see below)."
msgstr ""
"La recepția ICE *Oferta inițială*, dispozitivul numit **** trebuie să "
"efectueze o validare a securității peer-ului (vezi mai jos)."
#: ../../../developer/technical-overview.md:200
msgid ""
"If the security validation succeed, the called device starts the ICE "
"negotiation."
msgstr ""
"Dacă validarea securităţii este reuşită, dispozitivul numit începe "
"negocierile ICE."
#: ../../../developer/technical-overview.md:202
msgid ""
"If the negotiation succeed, the process continues on a server-side DTLS "
"session establishment over the created ICE socket (see below)."
msgstr ""
"În cazul în care negocierea este de succes, procesul continuă pe o "
"instalație de sesiune DTLS din partea serverului pe socketul ICE creat (vezi"
" mai jos)."
#: ../../../developer/technical-overview.md:205
msgid ""
"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
"specified by OpenDHT protocol.*"
msgstr ""
"*Nota: OpenDHT elimină valori care nu sunt criptate sau semnate în mod "
"corespunzător, așa cum este specificat de protocolul OpenDHT.*"
#: ../../../developer/technical-overview.md:208
msgid "ICE serialization format"
msgstr "Format de serializare ICE"
#: ../../../developer/technical-overview.md:210
msgid ""
"ICE messages exchanged between peers during a call set up use following "
"format."
msgstr ""
"Mesajele ICE schimbate între colegi în timpul unei apeluri sunt folosite în "
"formatul următor."
#: ../../../developer/technical-overview.md:212
msgid ""
"An ICE message is a chunk of binary data, following "
"[msgpack](http://msgpack.org/) data format."
msgstr ""
"Un mesaj ICE este o bucată de date binare, urmând formatul de date [msgpack]"
#: ../../../developer/technical-overview.md:222
msgid "**Current defined protocol is 1**:"
msgstr "**Protocolul definit în prezent este 1**:"
#: ../../../developer/technical-overview.md:224
msgid "Security Validation of the Peer"
msgstr "Asigurarea de către colegi"
#: ../../../developer/technical-overview.md:226
msgid ""
"Upon reception of the encrypted and signed Initial ICE Offer (through the "
"listen operation), a called device should perform authorization checks of "
"the calling device, identified as the Initial Offer signer."
msgstr ""
"La primirea Ofertei inițiale ICE criptate și semnate (prin operațiunea de "
"ascultare), un dispozitiv chemat trebuie să efectueze verificări de "
"autorizare a dispozitivului de apel, identificat ca semnatar al Ofertei "
"inițiale."
#: ../../../developer/technical-overview.md:230
msgid ""
"Authorization rules are implementation defined, but a typical implementation"
" would authorize known or trusted contacts."
msgstr ""
"Normele de autorizare sunt definite de implementare, dar o implementare "
"tipică ar autoriza contacte cunoscute sau de încredere."
#: ../../../developer/technical-overview.md:243
msgid ""
"Once a peer-to-peer communication channel has been established by ICE "
"protocol, the called device starts a server-side DTLS session on the ICE "
"socket, while the caller starts a client-side DTLS session on the other side"
" of the ICE socket."
msgstr ""
"Odată ce un canal de comunicare peer-to-peer a fost stabilit prin protocolul"
" ICE, dispozitivul numit inițiază o sesiune DTLS din partea serverului pe "
"socketul ICE, în timp ce apelantul inițiază o sesiune DTLS din partea "
"clientului de pe cealaltă parte a socketului ICE."
#: ../../../developer/technical-overview.md:247
msgid ""
"The DTLS communication is [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compliant using gnutls library."
msgstr ""
"Comunicarea DTLS este [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compatibilă folosind biblioteca gnutls."
#: ../../../developer/technical-overview.md:250
msgid ""
"To prevent peer certificates to be displayed in plain-text for the call "
"anonymity, the session handshake is done twice:"
msgstr ""
"Pentru a preveni afișarea certificatelor peer în text simplu pentru "
"anonimatul apelului, strângerea de mână se face de două ori:"
#: ../../../developer/technical-overview.md:253
msgid ""
"A first handshake in **anonymous mode** to create a secure but anonymous "
"transport."
msgstr ""
"O primă strângere de mână în modul anonim pentru a crea un transport sigur, "
"dar anonim."
#: ../../../developer/technical-overview.md:255
msgid ""
"A second handshake in **certificate mode**, over the first one, to prove the"
" identity of peers."
msgstr ""
"O a doua strângere de mână în modul certificat, în locul celei de-a doua, "
"pentru a dovedi identitatea colegilor."
#: ../../../developer/technical-overview.md:258
msgid "Only PFS cipher suites are supported:"
msgstr "Sunt suportate numai codurile de codare PFS:"
#: ../../../developer/technical-overview.md:259
msgid ""
"The set of supported cipher suites is implementation defined but should "
"include at least ECDHE-AES-GCM."
msgstr ""
"Setul de coduri de coduri suportate este definit de implementare, dar "
"trebuie să includă cel puțin ECDHE-AES-GCM."
#: ../../../developer/technical-overview.md:261
msgid "The actual cipher suites (in gnutls form) is:"
msgstr "Suitele de cifre reale (în formă de gnute) sunt:"
#: ../../../developer/technical-overview.md:262
msgid ""
"anonymous step: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-TLS-"
"ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
msgstr ""
"pas anonim: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-TLS-"
"ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
#: ../../../developer/technical-overview.md:264
msgid ""
"certificate step: `SECURE192:-VERS-TLS-ALL:+VERS-DTLS-"
"ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
msgstr ""
"Pasul de certificare: `SECURE192:-VERS-TLS-ALL: +VERS-DTLS-"
"ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION `"
#: ../../../developer/technical-overview.md:267
msgid "SIP signaling"
msgstr "Semnalizarea SIP"
#: ../../../developer/technical-overview.md:269
msgid ""
"Used over the DTLS session to signaling the call (vcard, media negotiation, "
"hangup, instant messaging, ...)"
msgstr ""
"Utilizat pe sesiunea DTLS pentru a semnaliza apelul (vcard, negociere media,"
" hangup, mesaje instantaneu,...)"
#: ../../../developer/technical-overview.md:271
msgid ""
"Once an encrypted and authenticated peer-to-peer communication channel is "
"available, the [SIP protocol](https://tools.ietf.org/html/rfc3261) must be "
"used to place a call and send messages."
msgstr ""
"Odată ce este disponibil un canal de comunicare peer-to-peer criptat și "
"autentificat, [protokolul SIP](https://tools.ietf.org/html/rfc3261) trebuie "
"utilizat pentru a efectua o apelare și a trimite mesaje."
#: ../../../developer/technical-overview.md:275
msgid ""
"The caller might send a SIP INVITE as soon as the DTLS channel is "
"established."
msgstr ""
"Numele de telefonie este de a fi utilizat pentru a fi utilizat de către "
"utilizator."
#: ../../../developer/technical-overview.md:284
msgid "Presence"
msgstr "Prezența"
#: ../../../developer/technical-overview.md:286
msgid "Sent on the DHT"
msgstr ""
#: ../../../developer/technical-overview.md:287
msgid "DeviceAnnouncement (contains device hash + public key)"
msgstr ""
#: ../../../developer/technical-overview.md:290
msgid "Security / Privacy"
msgstr "Securitate / Confidențialitate"
#: ../../../developer/technical-overview.md:292
msgid ""
"Jami provides perfect forward secrecy for calls and in call text messages "
"with different Eliptic Curve Diffie-Hellman key negociation at every call. "
"For out of call messaging single RSA-4096 is used. The cryptography library "
"used is GNUTLS"
msgstr ""
"Jami oferă secretul perfect pentru apeluri și în mesajele text de apel cu "
"diferite negocieri cu cheie Eliptic Curve Diffie-Hellman la fiecare apel."
#: ../../../developer/technical-overview.md:297
msgid "More informations:"
msgstr "Mai multe informaţii:"
#: ../../../developer/technical-overview.md:299
msgid ""
"[Technical overview](technical/Technical-overview) of concepts and protocols"
" inside Jami"
msgstr ""
"[Operativ tehnic](Operativ tehnic/tehnic) al conceptelor și protocolurilor "
"din cadrul Jami"
#: ../../../developer/working-with-gerrit.md:1
msgid "Working with Gerrit"
msgstr "Lucrând cu Gerrit"
#: ../../../developer/working-with-gerrit.md:4
msgid "Account Setup"
msgstr "Configurație de cont"
#: ../../../developer/working-with-gerrit.md:6
msgid "Gerrit server: <https://review.jami.net>"
msgstr "Servent Gerrit: <https://review.jami.net>"
#: ../../../developer/working-with-gerrit.md:7
msgid ""
"User documentation: <https://review.jami.net/Documentation/intro-user.html>"
msgstr ""
"Documentare pentru utilizatori: "
"<https://review.jami.net/Documentation/intro-user.html>"
#: ../../../developer/working-with-gerrit.md:8
msgid "Jami projects on Gerrit: <https://review.jami.net/admin/repos/>"
msgstr "Proiecte Jami pe Gerrit: <https://review.jami.net/admin/repos/>"
#: ../../../developer/working-with-gerrit.md:10
msgid "Sign-in with your google or github account or git.jami.net account"
msgstr "Se conectează cu contul Google sau Github sau cu contul git.jami.net"
#: ../../../developer/working-with-gerrit.md:11
msgid ""
"You'll also need to [upload an SSH "
"key](https://review.jami.net/settings/#SSHKeys) to be able to commit changes"
" for review."
msgstr ""
"De asemenea, va trebui să [cargați o cheie "
"SSH]https://review.jami.net/settings/#SSHKeys) pentru a putea comite "
"modificări pentru revizuire."
#: ../../../developer/working-with-gerrit.md:12
msgid "Don't forget to select a username."
msgstr "Nu uita să selectezi un nume de utilizator."
#: ../../../developer/working-with-gerrit.md:13
msgid ""
"Finally, the email address specified in your git config must match one the "
"email address registered with your Gerrit account."
msgstr ""
"În cele din urmă, adresa de e-mail specificată în configurația dvs. git "
"trebuie să corespundă cu adresa de e-mail înregistrată cu contul Gerrit."
#: ../../../developer/working-with-gerrit.md:15
msgid ""
"*Note for Savoir-faire Linux employees: please continue to use your "
"@savoirfairelinux.com email address.*"
msgstr ""
"*Notă pentru angajații Savoir-faire Linux: vă rugăm să continuați să "
"utilizați adresa dvs. de e-mail @savoirfairelinux.com.*"
#: ../../../developer/working-with-gerrit.md:17
msgid "To Know your Git Config"
msgstr "Pentru a cunoaşte configuraţia Git"
#: ../../../developer/working-with-gerrit.md:19
msgid "`git config --list`"
msgstr "`git config --list`"
#: ../../../developer/working-with-gerrit.md:21
msgid "To Test your SSH Access"
msgstr "Pentru a testa accesul SSH"
#: ../../../developer/working-with-gerrit.md:23
msgid ""
"To check that your SSH access is properly setup, run the following command:"
msgstr ""
"Pentru a verifica dacă accesul SSH este configurat în mod corespunzător, "
"rulați următoarea comandă:"
#: ../../../developer/working-with-gerrit.md:25
msgid "`ssh -p 29420 <username>@review.jami.net`"
msgstr "`ssh -p 29420 <username>@review.jami.net`"
#: ../../../developer/working-with-gerrit.md:27
msgid ""
"<username> is your Gerrit username, that you should have set during the "
"account creation. If not, you can do that here."
msgstr ""
"<username> este numele de utilizator Gerrit, pe care ar trebui să-l fi setat"
" în timpul creării contului."
#: ../../../developer/working-with-gerrit.md:44
msgid "Git Configuration"
msgstr "Configurația Git"
#: ../../../developer/working-with-gerrit.md:46
msgid "Gerrit is the official git repository."
msgstr "Gerrit este depozitul oficial de git."
#: ../../../developer/working-with-gerrit.md:48
msgid "To update the configuration"
msgstr "Pentru a actualiza configurația"
#: ../../../developer/working-with-gerrit.md:50
msgid ""
"You must update your remote information to use now the Gerrit repository. To"
" do that, update your origin url:"
msgstr ""
"Trebuie să actualizați informațiile de la distanță pentru a utiliza acum "
"rețeaua Gerrit."
#: ../../../developer/working-with-gerrit.md:52
msgid ""
"`git remote set-url origin "
"ssh://<username>@review.jami.net:29420/<project_name>`"
msgstr ""
"`git set-url de origine "
"ssh://<username>@review.jami.net:29420/<proiect_name>`"
#: ../../../developer/working-with-gerrit.md:54
msgid "Replace `<project_name>` by the correct project (example: jami-daemon)"
msgstr ""
"Înlocuiește `<proiect_name>` cu proiectul corect (exemplu: jami-daemon)"
#: ../../../developer/working-with-gerrit.md:56
msgid "Or clone the existing repository if you want to start fresh."
msgstr "Sau clona reţinutul existent dacă vrei să începi din nou."
#: ../../../developer/working-with-gerrit.md:58
msgid "To Push by Default in refs/for/master"
msgstr "Pentru a împinge prin default în refs/for/master"
#: ../../../developer/working-with-gerrit.md:60
msgid ""
"You can configure git to automatically create a review when a change is "
"pushed."
msgstr ""
"Puteți configura git pentru a crea automat o revizuire atunci când o "
"schimbare este împinsă."
#: ../../../developer/working-with-gerrit.md:62
msgid "`git config remote.origin.push HEAD:refs/for/master`"
msgstr "`git config remote.origin.push HEAD:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:64
msgid "To Create the Review"
msgstr "Pentru a crea o revizuire"
#: ../../../developer/working-with-gerrit.md:66
msgid ""
"When pushing to this magic branch, a review will automatically be created on"
" Gerrit."
msgstr ""
"Când împingi la această ramură magică, o revizuire va fi creată automat pe "
"Gerrit."
#: ../../../developer/working-with-gerrit.md:68
msgid "`git push origin HEAD:refs/for/master`"
msgstr "`git împinge originea TĂRĂR:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:70
msgid ""
"If you configured the default to refs/for/master as described above, simply"
msgstr ""
"Dacă ați configurat standardul pentru refs/for/master, așa cum este descris "
"mai sus, pur și simplu"
#: ../../../developer/working-with-gerrit.md:72
msgid "`git push`"
msgstr "`git împinge `"
#: ../../../developer/working-with-gerrit.md:74
msgid ""
"If HEAD currently points to the branch with the commits you'd like to push. "
"Ideally, you should work in a feature/bug branch for the issue at hand. Then"
" you can do:"
msgstr ""
"Dacă HEAD arată în prezent la ramura cu comiturile pe care doriți să le "
"împingeți. Ideal, ar trebui să lucrați într-o ramură de caracteristici/bug "
"pentru problema în cauză."
#: ../../../developer/working-with-gerrit.md:76
msgid "`git push origin <bugfix_branchname>:refs/for/master`"
msgstr "`git origine <bugfix_branchname>:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:78
msgid ""
"If this is the first time you've pushed, you will be prompted to install a "
"post-commit Hook to insert a Change-ID in your commit message. Gerrit needs "
"this to track patchsets and will reject pushes until you install it. Simply "
"copy paste the command to install the hook as instructed by Gerrit, and "
"amend your commits."
msgstr ""
"Dacă e prima dată când apăsați, veți fi rugat să instalați un Hook post-"
"commit pentru a introduce un Change-ID în mesajul de comit. Gerrit are "
"nevoie de acest lucru pentru a urmări seturile de patch și va respinge "
"împingerile până când îl instalați."
#: ../../../developer/working-with-gerrit.md:80
msgid "To Push a Private patch"
msgstr "Pentru a împinge un patch privat"
#: ../../../developer/working-with-gerrit.md:82
msgid ""
"You can push a work in progress (a.k.a draft) by pushing to "
"refs/for/master%private"
msgstr ""
"Puteți împinge o lucrare în curs de desfășurare (denumit proiect) prin "
"împingerea la refs/for/master%private"
#: ../../../developer/working-with-gerrit.md:84
msgid ""
"For instance, you may want a \"private\" remote to push to; open "
"<project_dir>/.git/config and add:"
msgstr ""
"De exemplu, puteți dori să apăsați pe un telecomandă \"privat\"; deschideți "
"<project_dir>/.git/config și adăugați:"
#: ../../../developer/working-with-gerrit.md:93
msgid "Then:"
msgstr "Apoi:"
#: ../../../developer/working-with-gerrit.md:95
msgid "`git push private`"
msgstr "`git împinge privat `"
#: ../../../developer/working-with-gerrit.md:97
msgid ""
"Private work the same way as patchsets, except they are not visible to "
"others by default and don't trigger any Jenkins builds. A draft can then be "
"shared or published."
msgstr ""
"Lucrarea privată este la fel ca și seturile de patch, cu excepția faptului "
"că acestea nu sunt vizibile altora prin default și nu declanșează nici un "
"construcții Jenkins."