blob: f9f8dc2b748da1e639476aa0146d75670b48e34e [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:
# Osoitz <oelkoro@gmail.com>, 2022
# savoirfairelinux <support@savoirfairelinux.com>, 2023
#
#, 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: savoirfairelinux <support@savoirfairelinux.com>, 2023\n"
"Language-Team: Basque (https://app.transifex.com/savoirfairelinux/teams/49466/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../../../developer/account-management.md:1
msgid "Account management"
msgstr "Kontuen kudeaketa"
#: ../../../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 "Kontu berria sortzea"
#: ../../../developer/account-management.md:8
#: ../../../developer/account-management.md:89 ../../../developer/calls.md:8
msgid "Daemon side"
msgstr "Daemonaren aldean"
#: ../../../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 "APIren"
#: ../../../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 "Xx.ring.Ring.Configuration Managerren barruan:"
#: ../../../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 ""
"Xehetasunak metodotik atera daitezke `getAccountTemplate(type) ` `type=RING`"
" edo `type=SIP`. Adibidez, hau da kode hau, LRCn erabiltzen dena."
#: ../../../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 ""
"Kontu berri bat gehitzen denean, `accountsChanged` seinalea igortzen da."
#: ../../../developer/account-management.md:64
#: ../../../developer/account-management.md:110
msgid "Core"
msgstr "Giltza"
#: ../../../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 ""
"Kontu berri bat sortzeko logika nagusia `src/ringdht/ringaccount.cpp`, "
"`RingAccount::createAccount`"
#: ../../../developer/account-management.md:68
msgid "How it works, from scratch"
msgstr "Nola funtzionatzen du, hutsetik"
#: ../../../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 ""
"Giltza pribatua `ringAccountKey` eta ziurtagiri katea `ringAccountCert` "
"(base64 kodea)"
#: ../../../developer/account-management.md:73
msgid "Generated CA key (for self-signed certificates) `ringCAKey`"
msgstr "CA giltza sortua (autosignaturiko ziurtagirietarako) `ringCAKey`"
#: ../../../developer/account-management.md:74
msgid "Revocated devices `ringAccountCRL`"
msgstr "Depresioak deuseztatu `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 "Kontaktuak"
#: ../../../developer/account-management.md:77
msgid "The account settings"
msgstr "Kontuaren ezarpenak"
#: ../../../developer/account-management.md:79
msgid "So let's generate it!"
msgstr "Beraz, sortu dezagun!"
#: ../../../developer/account-management.md:81
#: ../../../developer/contact-management.md:162
msgid "**TODO**"
msgstr "♪ Denak ♪"
#: ../../../developer/account-management.md:84
msgid "Delete the account"
msgstr "Ezabatu kontu hori."
#: ../../../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 "Kontua ezabatzen denean, `accountsChanged` seinalea igortzen da."
#: ../../../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 ""
"Kontu berri bat sortzeko logika nagusia `src/manager.cpp`, "
"`Manager::removeAccount`-en dago. Kontuak kendu eta konfigurazioa eguneratu "
"egiten da (`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 ""
#: ../../../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 "Atzera egiteko gailua"
#: ../../../developer/apis-of-jami.md:1
msgid "The APIs of Jami"
msgstr "Jami-ren APIak"
#: ../../../developer/apis-of-jami.md:4
msgid "OpenDHT"
msgstr "Ireki"
#: ../../../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 ""
"OpenDHTren API-rekin lotutako dokumentazioa "
"[hemen]https://github.com/savoirfairelinux/opendht/wiki/API-Bilketa) dago "
"eta ez da zehatz-mehatz aztertuko hurrengo atalean."
#: ../../../developer/apis-of-jami.md:8
msgid "Daemon"
msgstr "Daemon bat"
#: ../../../developer/apis-of-jami.md:10
msgid "The managers"
msgstr "Zuzendariak"
#: ../../../developer/apis-of-jami.md:12
msgid ""
"The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
msgstr "Daemon API 5 kudeatzaile artean desegiten da + 1 Instanzia fitxategi:"
#: ../../../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 ""
"Deialdi eta konferentziekin lotutako ekintzak kudeatzeko erabiltzen da "
"**CallManager** interfazea. Jami daemon-ak deialdi sarrerako eta irteteko "
"gehiegizkoak babesten dituenez, deialdi zehatz bat erakusten dituen edozein "
"ekintzek metodoa identifikatu behar dute callID bakar baten bidez. Jami "
"daemon-ak deialdi irteteko eta irtetekoak egiteko callID bakarra sortuko du."
#: ../../../developer/apis-of-jami.md:14
msgid ""
"The **ConfigurationManager** used to handle the configuration stuff: "
"accounts settings, user preferences, ..."
msgstr ""
"**ConfigurationManager** konfigurazio-lanak kudeatzeko erabiltzen da: "
"kontuen konfigurazioak, erabiltzaileen nahia,..."
#: ../../../developer/apis-of-jami.md:15
msgid "The **PresenceManager** is used to track the presence of contacts"
msgstr "** PresenceManager** kontaktuen presentzia jarraitzeko erabiltzen da"
#: ../../../developer/apis-of-jami.md:16
msgid "The **VideoManager** used to manage video devices and renderers"
msgstr ""
"**VideoManager** bideo gailuak eta errenderak kudeatzeko erabiltzen da"
#: ../../../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 ""
"**Instanzia** erabiltzen da funtsean erroldatutako bezero kopurua "
"kontatzeko."
#: ../../../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 ""
"Dbus API-rentzako dokumentazio eta kodea `jami-daemon/bin/dbus`-en dago."
#: ../../../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 ""
"Linux erabiltzen baduzu, `d-feet` erabili dezakezu daemon-a martxan "
"dagoenean API-a manipulatzeko (edo beste edozein tresna)."
#: ../../../developer/apis-of-jami.md:25
msgid "The LRC project uses this API (and use libwrap on windows and mac os)."
msgstr ""
"LRC proiektuak API hau erabiltzen du (eta libwrap erabiltzen du windows eta "
"mac osetan)."
#: ../../../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 ""
"JNI API-rentzako dokumentazio eta kodea `jami-daemon/bin/jni`-en dago."
#: ../../../developer/apis-of-jami.md:31
msgid "node js"
msgstr "js korapiloak"
#: ../../../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 ""
"Node JS API-rentzako dokumentazio eta kodea `jami-daemon/bin/nodejs`-en "
"dago. API hau ez da ezagutzen den proiektu batean erabiltzen eta agian ez da"
" eguneratuta dago."
#: ../../../developer/apis-of-jami.md:35
msgid "REST"
msgstr "Atseden hartzeko"
#: ../../../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 ""
"REST API-rentzako dokumentazio eta kodea guztia `jami-daemon/bin/restcpp`-en"
" dago. API hau ez da ezagutzen den proiektu batean erabiltzen eta agian ez "
"da eguneratuta dago."
#: ../../../developer/apis-of-jami.md:39
msgid "Python wrapper"
msgstr "Python-en biltzekoa"
#: ../../../developer/apis-of-jami.md:41
msgid ""
"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This wrapper "
"uses DBus."
msgstr "Python-eko biltzarra `jami-daemon/tools/jamictrl`-n dago."
#: ../../../developer/banned-contacts.md:1
msgid "Banned contacts"
msgstr "Kontaktuak debekatuta"
#: ../../../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 "Szenarioaren aurkezpena"
#: ../../../developer/banned-contacts.md:10
msgid "Let's explain banned contacts with a simple scenario:"
msgstr "Azaldu ditzagun kontaktu debekatuak eszenario sinple batekin:"
#: ../../../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 "Zer esan nahi du horrek?"
#: ../../../developer/banned-contacts.md:22
msgid "In the daemon"
msgstr "Deabruaren barruan."
#: ../../../developer/banned-contacts.md:25
msgid "Jessica *won't be notified that she was banned by Alice*."
msgstr "Jessica ez da ohartuko Alice-k debekatu zuela."
#: ../../../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 ""
"Alice-ren kontaktu debekatua izanda, Jessica-ri ez zaio berriz deituko, ez "
"mezuak, ez ahotsak, ez dei bideoak, ez da ezer jakingo."
#: ../../../developer/banned-contacts.md:32
msgid "Banned contacts are synched across linked devices like other contacts."
msgstr ""
"Debekatuta dauden kontaktuak sinkronizatzen dira beste kontaktu batzuen "
"antzera."
#: ../../../developer/banned-contacts.md:34
msgid "In Jami clients (recommended implementation)"
msgstr "Jami-ko bezeroetan (egiteko gomendatua)"
#: ../../../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 ""
"Jessica debekatuta dagoen kontaktu bat den bitartean, Jessica-rekin egindako"
" elkarrizketa ez da elkarrizketa zerrendan agertzen. Elkarrizketa historia, "
"hala ere, ez da ezabatu. Jessica Alice-ren kontuaren debekatuta dagoen "
"kontaktu zerrendan agertzen da. Alice-k ere elkarrizketa aurkituko / ireki "
"dezake Jessica-ren erabiltzaile izena bilatze zehatza eginez."
#: ../../../developer/banned-contacts.md:43
msgid ""
"Alice can un-ban Jessica from the conversation or the banned contact list."
msgstr "Alicek Jessica deuseztea nahi du."
#: ../../../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 "Bilaketa-emaitzak eta elkarrizketak dioenez, Jessica debekatuta dago."
#: ../../../developer/banned-contacts.md:50
msgid ""
"Alice can still delete the conversation history using a *Delete History* "
"button."
msgstr ""
"Alice-k oraindik elkarrizketa historia ezabatzen du *Historia ezabatzeko* "
"botoia erabiliz."
#: ../../../developer/calls.md:1 ../../../developer/swarm.md:536
#: ../../../developer/synchronizing-profiles.md:19
msgid "Calls"
msgstr "Deiak"
#: ../../../developer/calls.md:4
msgid ""
"**NOTE: this page detail the principle for Jami accounts. For SIP accounts, "
"the SIP protocol is used.**"
msgstr "** Oharra: orri honetan Jami kontuetarako printzipioak zehazten dira."
#: ../../../developer/calls.md:6
msgid "Let's do a call in Jami!"
msgstr "Dei bat egingo dugu Jami-n!"
#: ../../../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 ""
"Bi lagunen artean dei bat sortzean, Jamiek batez ere ezagutzen diren "
"protokoloak erabiltzen ditu, hala nola ICE, SIP edo TLS. Hala ere, banatu "
"ahal izateko, dei bat sortzeko prozesua apur bat desberdina da. Laburbilduz,"
" norbaitek bere kontaktu batekin harremanetan jarri nahi duenean, hau egingo"
" du:"
#: ../../../developer/calls.md:12
msgid ""
"Search the contact presence on the DHT (for more details, see {doc}`contact-"
"management`)"
msgstr ""
"Bilatu DHTko kontaktuen presentzia (detail gehiago, ikus {doc}`kontaketa-"
"kudeaketa`)"
#: ../../../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 ""
"Harremanetan jarri ondoren, dei-eskaera bidali, eta jakinarazi hautagaiak "
"(sare bakoitzaren IPa + erleihoko helbideak (TURN) + erreflexu- helbideak "
"(UPnP, publikoak)."
#: ../../../developer/calls.md:14
msgid ""
"Wait for the response of the contact (they will respond their known "
"addresses)."
msgstr ""
"Itxaron kontaktuaren erantzunaren zain (bere helbide ezagunei erantzungo "
"diete)."
#: ../../../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 ""
"ICEren bidez negoziatu socket. Izan ere, bi ICE saio negoziatzen dira. Bata "
"(nahiena) TCP-n, beste bat UDP-n (aldaketa gisa)."
#: ../../../developer/calls.md:16
msgid "Then, the socket is encrypted in TLS (if TCP) or DTLS (if UDP)."
msgstr "Ondoren, soketa TLS (TCP bada) edo DTLS (UDP bada) enkriptatzen da."
#: ../../../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 ""
"Kontaktua deialdia onartu edo ezeztatzeko gai da. Onartzen dutenean, ICE "
"garraio bat (UDP oraingoz bakarrik) negoziatzen da komunikabideetarako 4 "
"sokete berri sortzeko (2 audioarentzat, 2 bideoarentzat)."
#: ../../../developer/calls.md:18
msgid "The call is now alive!"
msgstr "Deiak bizirik daude!"
#: ../../../developer/calls.md:20
msgid "Exchange ICE candidates"
msgstr "ICEren hautagaiak trukatzeko"
#: ../../../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 ""
"Dena benetan `jamiaccount.cpp` (`JamiAccount::startOutgoingCall`) -n hasten "
"da. ICEren bi objektuak prest daudenean eta DHT bidez kontaktua aurkitzen "
"denean, kontaktua egiteko dei-eskaera egiten da."
#: ../../../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 ""
"non `callvid` deialdia identifikatzeko erabilitako aleatorizko zenbaki bat "
"den eta blobak bi ICE mezu konektatuak ditu (`IceTransport::packIceMsg` in "
"`ice_transport.cpp`) saioaren pasahitza, *ufrag* eta ICE hautagaiak "
"dituzten:"
#: ../../../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 ""
"eta DHT bidez bidaltzen da mezu enkriptatua gailuarentzat "
"`hash(callto:xxxxxx) ` non `xxxxxx` gailuaren id da. Peer-ak leku berean "
"erantzungo du (baina bidaltzailearen gailuarentzat enkriptatua) bere propioa"
" `dht::IceCandidates`."
#: ../../../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 ""
"ICEren saioa bi aldeetan sortzen da hautagai guztiak dituztenean (beraz, "
"bidaltzailearentzat, kontaktuaren erantzuna jasotzen denean)."
#: ../../../developer/calls.md:52
msgid "ICE negotiation"
msgstr "ICEren negoziazioa"
#: ../../../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 ""
"Dei itxaronak `JamiAccount::handlePendingCallList() ` kudeatzen dira, eta "
"TCP negoziazioa bukatu arte itxaron behar dute (eta huts egiten badu, UDPren"
" zain egon). ICE negoziazioaren kodea batez ere "
"[pjproject]https://github.com/pjsip/pjproject] kudeatzen du, baina Jami-"
"rentzat, interesgarria da `ice_transport.cpp`. Gainera, gaur egun ez diren "
"*pjproject*ren gainetik patch/ezaugarri garrantzitsu batzuk gehitzen ditugu "
"(adibidez, TCP gainetik ICE)."
#: ../../../developer/calls.md:56
msgid "Encrypt the control socket"
msgstr "Enkriptatu kontrol-aztarna."
#: ../../../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 ""
"Behin soketa sortu eta kudeatu ondoren **IceTransport** instante batek, "
"**SipTransport** batean biltzen da, *TlsIceTransport* bati dagokionez. Kode "
"nagusia `JamiAccount::handlePendingCall() `-an dago eta biltzea "
"`SipTransportBroker::getTlsIceTransport`-an egiten da. Azkenik, gure saioa "
"**TlsSession**-k kudeatzen du `daemon/src/security/tls_session.cpp`-en eta "
"GnuTLS liburutegia erabiltzen du."
#: ../../../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 ""
"Beraz, kontrol-socket bat izango da TLS (1.3 zure eta zure gurasoen gnutls "
"bertsioak babesten badu) TCP-socket bat negoziatzen bada."
#: ../../../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 ""
"Kontrol-socket-a SIP paketeak igortzeko erabiltzen da, gonbidapenak, "
"pertsonalizatutako mezuak (Jami-k zure profilaren VCard bidaltzen du socket "
"honetan deiaren hasieran, edo kamera biratzen denean), mezuak."
#: ../../../developer/calls.md:64
msgid "Related articles:"
msgstr "Honekin lotutako artikuluak:"
#: ../../../developer/calls.md:66
msgid "https://jami.net/improved-video-rotation-support/"
msgstr "\"Bideoa hobetu dut."
#: ../../../developer/calls.md:67
msgid "https://jami.net/peer-to-peer-file-sharing-support-in-jami/"
msgstr "\"Bestela, ez da beharrezkoa\"."
#: ../../../developer/calls.md:69
msgid "Media sockets"
msgstr "Komunikabide-socketak"
#: ../../../developer/calls.md:71
msgid ""
"Media sockets are SRTP sockets where the key is negotiated through the TLS "
"Session previously created. **TODO**"
msgstr ""
"Media socketak SRTP socketak dira non gakoa TLS Saioaren bidez negoziatzen "
"den aurrez sortutako."
#: ../../../developer/calls.md:74 ../../../developer/drt.rst:140
msgid "Architecture"
msgstr "Arkitektura"
#: ../../../developer/calls.md:76
msgid "**TOOD**"
msgstr "♪ Topa egin behar dugu ♪"
#: ../../../developer/calls.md:79
msgid "Multi-stream"
msgstr "Erreketa multistroom"
#: ../../../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 "Daemon-en 13.3.0 bertsiotik, multistroom-a guztiz babestuta dago."
#: ../../../developer/calls.md:86
msgid "pjsip"
msgstr "PJSIP"
#: ../../../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 ""
"Lehenengo zatia komunikabide-fluxuak negoziatzea da. Izan ere, komunikabide-"
"fluxu bakoitzak 2 UDP-ko sokete erabiltzen ditu. Hiru egoera aztertu ditugu:"
#: ../../../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 ""
"Konferentzia baten jabea bada komunikabideak gehitu nahi dituena, ez dago "
"negoziatzeko ezer gehiago, bideoak jadanik streamatu baititugu. Beraz, "
"komunikabide berriak zuzenean gehitzen ditugu bideo-nahasleari negoziatu "
"gabe."
#: ../../../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 ""
"1:1ean bagaude, ez dagoelako konferentziaren informaziorik, ez dago "
"multistream bat."
#: ../../../developer/calls.md:99
msgid "Else, 2 new sockets are negotiated for new media."
msgstr "Bestela, bi soketa berri negoziatuko dira komunikabide berrirako."
#: ../../../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 ""
"ICE saio bakoitzeko sokete gehiago sortzeko pjsip-ek, `PJ_ICE_COMP_BITS`-a "
"`5`-era aldatu zen (zeinak `2^5`-ari dagokion, beraz, 32 korronte)."
#: ../../../developer/calls.md:105
msgid "Deprecate switchInput, support requestMediaChange"
msgstr "Deprecat switchInput, laguntza eskaera"
#: ../../../developer/calls.md:107
msgid ""
"In the daemon, the old API `switchInput` is now **DEPRECATED**; same for "
"`switchSecondaryInput`:"
msgstr ""
"Daemon-ean, API zaharra `switchInput` da orain **DEPRECATED**; berdinak dira"
" `switchSecondaryInput`:"
#: ../../../developer/calls.md:133
msgid "`requestMediaChange` replaces this, for both calls and conferences:"
msgstr ""
"`requestMediaChange`-k hau ordezkatu du, bai deialdietarako, bai "
"hitzaldietarako:"
#: ../../../developer/calls.md:157
msgid "Compability"
msgstr "Konpatibilitatea"
#: ../../../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 ""
"Dei bat egiten bada peer batekin, eta daemonaren bertsioa < 13.3.0 bada, ez "
"da multistroom aktibatzen eta jokabide zaharra erabiltzen da (1 bideo "
"bakarrik)."
#: ../../../developer/calls.md:163
msgid "Identifications of streams"
msgstr "Erreken identifikazioa"
#: ../../../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 ""
"Orain hainbat stream izan daitezke, eta komunikabide-fluxu bakoitza bere "
"identifikadorearen bidez identifikatzen da, eta formatuak \"<type>_<idx>\" "
"du. Adibidez: \"audio_0\", \"video_2\", etab."
#: ../../../developer/calls.md:169
msgid "Rotation"
msgstr "Biraketa"
#: ../../../developer/calls.md:171 ../../../developer/calls.md:187
#: ../../../developer/calls.md:201
msgid "The XML was updated to add the wanted stream:"
msgstr "XML eguneratu egin da, bilatu den streamari gehitzeko:"
#: ../../../developer/calls.md:185
msgid "Key-frame"
msgstr "Giltza-markoak"
#: ../../../developer/calls.md:199
msgid "Voice activity"
msgstr "Ahots-jarduera"
#: ../../../developer/calls.md:215
msgid "Conference"
msgstr "Konferentzia"
#: ../../../developer/calls.md:217
msgid "Reflected changes are documented {doc}`here <conference-protocol>`."
msgstr "Eusko Jaurlaritzaren laguntzarekin egindako azpitituluak"
#: ../../../developer/calls.md:219
msgid "Client"
msgstr "Bezeroa"
#: ../../../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 ""
"Atzeko aldeak 32 euskarri arte babesten badu ere aldi berean, bezero "
"pertsonalizatuak izan ezik, gomendatzen dugu kamera eta bideo bat aldi "
"berean partekatzeko aukera ematea."
#: ../../../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 ""
"Client-qt-en, interesgarria da `AvAdapter` (metoideak, hala nola "
"`isCapturing`, `shareAllScreens`, `stopSharing`)."
#: ../../../developer/calls-in-swarm.md:1
msgid "Calls in Swarm"
msgstr "Deiak Swarm-en"
#: ../../../developer/calls-in-swarm.md:4
msgid "Goals"
msgstr "Helburuak"
#: ../../../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 ""
"Orrialde honek taldeekin deialdiak nola funtzionatuko duen azaltzea du "
"helburu. Metodo honek bezeroei testu historia partekatu batekin parte "
"hartzaile askorentzat deialdia eskaintzeko aukera emango die. Protokoloa "
"malgua izan behar du, SIP pilaarekin bateragarritasuna mantendu, adn "
"ingurune banatu batean lan egin behar du. Ingurune banatu honek erronka "
"batzuk ere ekarri ditu, hala nola lasterketa baldintzak (aldun askorek aldi "
"berean deialdi bat abiatu dezaketen). Azkenik, Swarm mugikorrak bakarrik "
"erabiltzen dituzten kideekin egon daitekeelako, edo bideoak nahasteko "
"zerbitzari dedikatuak dituzten enpresek, ingurune heterogenoan ahalik eta "
"esperientzia onenarekin lan egin ahal izango du."
#: ../../../developer/calls-in-swarm.md:8
#: ../../../developer/conference-protocol.md:5
#: ../../../developer/design-process.md:4 ../../../developer/drt.rst:23
msgid "Definitions"
msgstr "Definizioak"
#: ../../../developer/calls-in-swarm.md:10
msgid ""
"a **Rendezvous** will mix all authorized incoming calls in a conference."
msgstr "\"Bisitak\" batzar batean sartuko dituzue dei guztiak."
#: ../../../developer/calls-in-swarm.md:11
msgid "Two new URIs will be used for this feature:"
msgstr "Bi URI berri erabiliko dira ezaugarri honetarako:"
#: ../../../developer/calls-in-swarm.md:12
msgid "`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`"
msgstr ""
"♪ ♪ eta ez dut uste ♪ ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste "
"♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ "
"♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ez"
" dut uste ♪ ♪ ♪ ez dut uste ♪ ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪"
" ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ "
"ez ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ez"
" ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ez ♪ "
"♪ ez ♪ ♪ ez ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪"
" ez ♪ ♪ ♪ ♪ ez ♪ ♪ ♪ ez ♪ ♪ ♪ ♪ ♪ ♪ ez ♪ ♪ ♪ ♪ ♪ ♪ ez ♪ ♪ ♪ ♪ ez ♪ ♪ ♪ ♪ ♪ ♪"
" ♪ ♪ ♪ ez ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪"
#: ../../../developer/calls-in-swarm.md:13
msgid "`rdv:accountUri/deviceId/conversationId/confId`"
msgstr "`rdv:kontuaUri/tresnaId/konversazioaId/konfId]]"
#: ../../../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 ""
"**Swarm-en profila** vCard batean gordetako swarm-en profila da "
"(`profile.vcf`, ikus {ref}`developer/swarm:Conversation-en profila "
"sinkronizazioa` eta {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` da Swarm-en aurreikusitako URIa, Swarm-en profilean ezarria"
#: ../../../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 ""
"Oharra: bi URI horiek bezeroari aukera ematen diote dei bat egiteko "
"*Rendezvous* batera batzeko edo swarm bati dei bat egiteko, ondorioz "
"hurrengo atalean deskribatutako logika."
#: ../../../developer/calls-in-swarm.md:19
msgid "Place a call in a Swarm"
msgstr "Deitu Swarm-i"
#: ../../../developer/calls-in-swarm.md:21
msgid "Proposed flow:"
msgstr "Proposatutako fluxua:"
#: ../../../developer/calls-in-swarm.md:23
msgid "**a:** If `rdvUri` is set:"
msgstr "**a:** `rdvUri` ezartzen bada:"
#: ../../../developer/calls-in-swarm.md:24
#: ../../../developer/calls-in-swarm.md:27
msgid "Call it"
msgstr "Deitu ezazu."
#: ../../../developer/calls-in-swarm.md:25
msgid "If failed, go to **b:**"
msgstr "Ez bada, joan b:"
#: ../../../developer/calls-in-swarm.md:26
msgid "**b:** else if there is a current active call:"
msgstr "**b:** bestela, dei aktibo bat eginez gero:"
#: ../../../developer/calls-in-swarm.md:28
msgid "If failed, go to **c:**"
msgstr "Ez bada, joan \"C\"era."
#: ../../../developer/calls-in-swarm.md:29
msgid "**c:** else, host a new *Rendezvous* and join it."
msgstr "Bestela, bilera berri bat antolatu eta bat egin."
#: ../../../developer/calls-in-swarm.md:30
msgid "Also, ask users if they want to be the host for next calls."
msgstr ""
"Era berean, galdetu erabiltzaileei hurrengo deien ostalari izan nahi ote "
"duten."
#: ../../../developer/calls-in-swarm.md:32
msgid ""
"![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-"
"diagram.png)"
msgstr "♪ Swarm-en dei bat egitearen grafika ♪"
#: ../../../developer/calls-in-swarm.md:32
msgid "Diagram: Placing a call in a Swarm"
msgstr "Diagrama: Dei bat egiten Swarm batean"
#: ../../../developer/calls-in-swarm.md:34
msgid "**TODO, when to commit and who is commiting**"
msgstr "**Todo, noiz konpromisoa hartu eta nork konpromisoa hartzen duen**"
#: ../../../developer/calls-in-swarm.md:36
msgid "Incoming calls for swarm"
msgstr "Iritsi diren deiak."
#: ../../../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 ""
"Dei berri bat jasotzean, URIa aztertu behar da. Sarrera datorrena "
"*Rendezvous* baterako bada eta gailuak bertan gordeta badago eta dei "
"egiteari bat egiteko baimena ematen badio, deiari erantzun egin behar zaio "
"eta oraingo *Rendezvous*ari gehitu."
#: ../../../developer/calls-in-swarm.md:41
msgid "Defining a host for a Swarm"
msgstr "Sarreren ostalaria definitzen"
#: ../../../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 ""
"URI default bat definitzeko, ostalari izan nahi duen kideak elkarrizketaren "
"profila eguneratu beharko du, eta hau lankideek sinkronizatu eta egiaztatu "
"egingo dute. Hala ere, ostalariak onartu edo ez hartzea onartu behar du eta "
"behar adina baimena duen kide batek gailu bat eskatu beharko luke ostalari "
"izateko. Prozesu hau ez da erabaki orain arte."
#: ../../../developer/calls-in-swarm.md:45
msgid "**TODO? Permissions to update, negotiation of the host**"
msgstr "Bertan behera utz ditzaket."
#: ../../../developer/calls-in-swarm.md:47
#: ../../../developer/conference-protocol.md:181
#: ../../../developer/file-transfer.md:196
msgid "Future"
msgstr "Etorkizuna"
#: ../../../developer/calls-in-swarm.md:49
msgid "Join notifications?"
msgstr "-Onarpenetara joan?"
#: ../../../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 "Deietan ez dauden taldeak jakin beharko luke nor dagoen deietan."
#: ../../../developer/calls-in-swarm.md:53
msgid "SIP Bridge?"
msgstr "SIP zubia?"
#: ../../../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 ""
"Konferentziak SIP dei nahastuak direlako, SIP zubi bat posiblea da oraindik."
#: ../../../developer/choosing-crf-value-for-encoder.md:1
msgid "Choosing CRF value for encoder"
msgstr "Encoder-erako CRF balioa aukeratzea"
#: ../../../developer/choosing-crf-value-for-encoder.md:4
#: ../../../developer/design-process.md:13
msgid "Context"
msgstr "Kontestuak"
#: ../../../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 ""
"Jami aplikazioak banda zabalera erabiltzea ez da onena konexio mota "
"guztietarako."
#: ../../../developer/choosing-crf-value-for-encoder.md:7
msgid "Observation"
msgstr "Ikuskizuna"
#: ../../../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 ""
"Ez da beharrezkoa kalitate optimum bat (CRF < 20) bilatzea, gainera, "
"ikusmenaren pertzepzioa ia antzekoa da, eta behar den datu-fluxua (bitratea)"
" askoz handiagoa da."
#: ../../../developer/choosing-crf-value-for-encoder.md:10
msgid "Objective"
msgstr "Helburua"
#: ../../../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 ""
"Dokumentu honen helburua bideo-kalitatean aldaketa baten eragina egiaztatzea"
" da, kodetzailearen CRF parametroa erabiliz."
#: ../../../developer/choosing-crf-value-for-encoder.md:13
msgid "Test"
msgstr "Azterketa"
#: ../../../developer/choosing-crf-value-for-encoder.md:14
msgid "These tests were performed by comparing :"
msgstr "Azterketa hauek konparatuz egin ziren:"
#: ../../../developer/choosing-crf-value-for-encoder.md:15
msgid "The first one encoded with Jami's current parameters"
msgstr "Lehenengoa Jami-ren parametroak dira."
#: ../../../developer/choosing-crf-value-for-encoder.md:16
msgid "The second encoded with a lower quality"
msgstr "Bigarrena kalitate txikiagoarekin kodetuta dago."
#: ../../../developer/choosing-crf-value-for-encoder.md:18
msgid ""
"Each of these tests were performed for the following resolutions: 1080p, "
"720p and 436p."
msgstr "Probak honako hauek dira: 1080p, 720p eta 436p."
#: ../../../developer/choosing-crf-value-for-encoder.md:20
msgid "For each of these resolutions several bitrates have been used:"
msgstr "Ebazpen horietako bakoitzeko, bitrate batzuk erabili dira:"
#: ../../../developer/choosing-crf-value-for-encoder.md:21
msgid "300 Kbit/s (Jami low value)"
msgstr "300 Kbit/s (Jami balio txikia)"
#: ../../../developer/choosing-crf-value-for-encoder.md:22
msgid "1.5 Mbit/s (Intermediate value)"
msgstr "1,5 Mbit/s (arteko balioa)"
#: ../../../developer/choosing-crf-value-for-encoder.md:23
msgid "6 Mbit/s (High value)"
msgstr "6 Mbit/s (balio handia)"
#: ../../../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 ""
"Grafikoek bitratearen bilakaera erakusten dute fitxategiaren probak egiten "
"ari diren bitartean (resoluzio eta bitrate zehaztasun zehaztatua)."
#: ../../../developer/choosing-crf-value-for-encoder.md:27
msgid "A visual comparison (side by side) was made for each test."
msgstr "Azterketa bakoitzeko, ikusizko alderaketa egin zen (barruti-barruti)."
#: ../../../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 ""
"Probari esker, Jami-n emitituko den bit-tasa asmatuko dugu aukeratu diren "
"parametroen arabera."
#: ../../../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! [irudia](irudiak/hautatzea-crf-1080p-300kbps-"
"crf28.png) 1080p / 300 kbit/s / CRF38! [irudia](irudiak/hautatzea-"
"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 "irudia"
#: ../../../developer/choosing-crf-value-for-encoder.md:38
msgid "Visual comparison (CRF28 a gauche / CRF38 a droite)"
msgstr "Konparazio bisuala (CRF28 ezkerrean / CRF38 eskuinean)"
#: ../../../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! [irudia](irudiak/hautatzea-crf-1080p-1.5mbps-"
"crf22.png) 1080p / 1.5 Mbit/s / CRF30! [irudia](irudiak/hautatzea-"
"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 "Konparazio bisuala (CRF22 ezkerretik / CRF30 eskuinera)"
#: ../../../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! [irudia](irudiak/hautatzen-crf-1080p-6mbps-"
"crf17.png) 1080p / 6 Mbit/s / CRF23! [irudia](irudiak/hautatzen-"
"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 "Konparazio bisuala (CRF17 ezkerrean / CRF23 eskuinean)"
#: ../../../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! [irudia](irudiak/hautatzea-crf-720p-300kbps-"
"crf28.png) 720p / 300 kbit/s / CRF38! [irudia](irudiak/hautatzea-"
"crf-720p-300kbps-crf38.png) Konparazio bisuala (CRF28 ezkerretik / CRF38 "
"eskuinetik)"
#: ../../../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! [irudia](irudiak/hautatzea-crf-720p-1.5mbps-"
"crf22.png) 720p / 1.5 Mbit/s / CRF30 (CRF murriztuarekin probatzea)! "
"[irudia](irudiak/hautatzea-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! [irudia](irudiak/hautatzen-crf-720p-6mbps-crf17.png) "
"720p / 6 Mbit/s / CRF23! [irudia](irudiak/hautatzen-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 "Konparazio bisuala (CRF17 ezkerretik / CRF23 eskuinera)"
#: ../../../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! [irudia](irudiak/hautatzea-crf-436p-300kbps-"
"crf28.png) 436p / 300 kbit/s / CRF38! [irudia](irudiak/hautatzea-"
"crf-436p-300kbps-crf38.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:83
msgid "Visual comparison (CRF28 left / CRF38 right)"
msgstr "Konparazio bisuala (CRF28 ezkerretik / CRF38 eskuinera)"
#: ../../../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! [irudia](irudiak/hautatzea-crf-436p-1.5mbps-"
"crf22.png) 436p / 1.5 Mbit/s / CRF30! [irudia](irudiak/hautatzea-"
"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! [irudia](irudiak/hautatzea-crf-436p-6mbps-crf17.png) "
"436p / 6 Mbit/s / CRF23! [irudia](irudiak/hautatzea-crf-436p-6mbps-"
"crf23.png)"
#: ../../../developer/coding-style.md:1
msgid "Coding style"
msgstr "Kodetze-estiloa"
#: ../../../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 ""
"C++ formatuko arauak Clang formatuko fitxategi honek definitzen ditu: "
"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 "Konferentziako protokoloa"
#: ../../../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 ""
"Dokumentu honek konferentzien kudeaketarako egingo ditugun eboluzioak "
"deskribatzea helburua du."
#: ../../../developer/conference-protocol.md:7
msgid "Host: Is the user who mix the audio/video streams for the others"
msgstr ""
"Ekarle: Audio eta bideoak besteentzat nahasten dituen erabiltzailea da"
#: ../../../developer/conference-protocol.md:8
msgid "Participant: Every user in the conference, even the host"
msgstr ""
"Parte hartzaile: Konferentziako erabiltzaile bakoitza, baita ostalaria ere"
#: ../../../developer/conference-protocol.md:10
msgid "Disclaimer"
msgstr "Erantzukizun-bazterketa"
#: ../../../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 "Dokumentu honek lehen urratsak bakarrik deskribatzen ditu oraingoz."
#: ../../../developer/conference-protocol.md:14
msgid "Possible layouts"
msgstr "Egokitzen diren marrazkiak"
#: ../../../developer/conference-protocol.md:16
msgid "GRID: Every member is shown with the same height/width"
msgstr "GRID: kide bakoitza altuera/zabalera berdinarekin agertzen da"
#: ../../../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: kide bat zoomatuta dago eta beste aurreikuspena "
"erakusten da"
#: ../../../developer/conference-protocol.md:18
msgid "ONE_BIG: One member take the full screen rendered"
msgstr "ONE_BIG: kide batek pantaila osoa erakusten du"
#: ../../../developer/conference-protocol.md:20
msgid ""
"Two new methods are available to manage the conference Layout in "
"CallManager:"
msgstr ""
"Bi metodo berri daude eskuragarri konferentzia Layout kudeatzeko "
"CallManager-en:"
#: ../../../developer/conference-protocol.md:38
#: ../../../developer/conference-protocol.md:95 ../../../developer/drt.rst:120
#: ../../../developer/swarm.md:493
msgid "Implementation"
msgstr "Erabateko eragiketa"
#: ../../../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 ""
"Guztia kudeatzen da `conference.cpp` (partehartzailea iturriekin lotzeko) "
"eta `video_mixer.cpp` (nahi den diseinua emateko)."
#: ../../../developer/conference-protocol.md:43
msgid "Syncing Conferences Informations"
msgstr "Konferentzien sinkronizazioa Informazioa"
#: ../../../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 ""
"Kontuan hartu: Izan ere, parte-hartzaile hitza erabiltzen da bilera batetan "
"nahastu den deialdietarako."
#: ../../../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 "Helburua da parte hartzaile guztiei bideoaren metadata jakinaraztea."
#: ../../../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 ""
"Parte hartzaile bat bera konferentzia bada, bere sarrerako diseinuaren "
"informazioa bateratu beharko da beste parte hartzaileei bidaltzen zaienean."
#: ../../../developer/conference-protocol.md:51
msgid "Layout Info"
msgstr "Lerroaren informazioa"
#: ../../../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-a VectorMapStringString bezala gordetzen da bezeroentzat eta "
"barnean<ParticipantInfo> bektore batekin, hurrengo formatuan:"
#: ../../../developer/conference-protocol.md:67
msgid "Possible keys are:"
msgstr "Giltza posibleak:"
#: ../../../developer/conference-protocol.md:69
msgid "uri = account's uri"
msgstr "Uri = kontuaren Uri"
#: ../../../developer/conference-protocol.md:70
msgid "device = device's id"
msgstr "gailuaren identifikazioa = gailuaren identifikazioa"
#: ../../../developer/conference-protocol.md:71
msgid "media = media's id"
msgstr "Mediak = Mediaren nortasuna"
#: ../../../developer/conference-protocol.md:72
msgid "active = if the participant is active"
msgstr "aktiboa = parte-hartzailea aktiboa bada"
#: ../../../developer/conference-protocol.md:73
msgid "x = position (x) in the video"
msgstr "x = bideoan x posizioa"
#: ../../../developer/conference-protocol.md:74
msgid "y = position (y) in the video"
msgstr ""
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) "
"b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b)"
#: ../../../developer/conference-protocol.md:75
msgid "w = size (width) in the video"
msgstr "w = bideoaren tamaina (zabalera)"
#: ../../../developer/conference-protocol.md:76
msgid "h = size (height) in the video"
msgstr "h = bideoaren tamaina ( altuera)"
#: ../../../developer/conference-protocol.md:77
msgid "videoMuted = if the video is muted"
msgstr "Video mutated = bideoak mutated badago"
#: ../../../developer/conference-protocol.md:78
msgid "audioLocalMuted = if the audio is locally muted"
msgstr "audioLocalMuted = audioak tokiko mutua baldin badago"
#: ../../../developer/conference-protocol.md:79
msgid "audioModeratorMuted = if the audio is muted by moderators"
msgstr "audioModerator Muted = audioak moderatzaileek mutatzen badute"
#: ../../../developer/conference-protocol.md:80
msgid "isModerator = if it's a moderator"
msgstr "Moderatzailea = Moderatzailea bada"
#: ../../../developer/conference-protocol.md:81
msgid "handRaised = if the hand is raised"
msgstr "Eskua altxatuta = eskua altxatuta badago"
#: ../../../developer/conference-protocol.md:82
msgid "voiceActivity = if the stream has voice activity"
msgstr "ahots-jarduera = korronteak ahots-jarduera baldin badu"
#: ../../../developer/conference-protocol.md:83
msgid "recording = if the peer is recording the conference"
msgstr "grabatzea = elkarrizketa grabatzen ari bada"
#: ../../../developer/conference-protocol.md:85
msgid "New API"
msgstr "API berria"
#: ../../../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 ""
"Metodo berri bat (CallManager-en) eta seinale berri bat daude eskuragarri, "
"hurrenez hurren, konferentzia-informazioa eta eguneratzeak lortzeko:"
#: ../../../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 ""
"`Conference` Object-ek (deiak nahasten baditugu soilik existitzen da, hau "
"da, gu gara nagusiak) jardunaldia osatzeko informazioa kudeatzen du, `Call` "
"objektu bakoitzaren LayoutInfos-en arabera."
#: ../../../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 ""
"Beraz, `Call` objektu bakoitzak LayoutInfo bat du eta eguneratzen bada, "
"eskatu `Conference` objektuari bere informazioa eguneratzeko."
#: ../../../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 ""
"Konferentziako nagusiak bere informazioa bidaltzen du SIP kanalaren bidez, "
"mezu gisa, MIME motako mezu hauekin: `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 ""
"Dei batek informazio konfidentziala jasotzen badu, badakigu dei hau "
"konferentzia bateko kidea dela."
#: ../../../developer/conference-protocol.md:106
msgid ""
"To summarize, `Call` manages received layouts, `Conference`-managed sent "
"layouts."
msgstr ""
"Laburbilduz, `Call` jasotako kokapenak kudeatzen ditu, `Conference`-managed "
"sented layouts."
#: ../../../developer/conference-protocol.md:108
msgid "Changing the state of the conference"
msgstr "Konferentziaren egoera aldatzea"
#: ../../../developer/conference-protocol.md:110
msgid ""
"To change the state of the conference, participants needs to send orders "
"that the host will handle."
msgstr ""
"Konferentziaren egoera aldatzeko, parte-hartzaileek aginduak bidali behar "
"dituzte, anfitrioiak kudeatuko dituenak."
#: ../../../developer/conference-protocol.md:112
msgid "The protocol have the following needs:"
msgstr "Protokoloak beharrak ditu:"
#: ../../../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 "Konferentziaren hiru mailak parte-hartzaile bat definitzen dute:"
#: ../../../developer/conference-protocol.md:115
msgid "The account which is the identity of the participant"
msgstr "Parte hartzailearen nortasuna duen kontua"
#: ../../../developer/conference-protocol.md:116
msgid "Devices, because each account can join via multiple devices"
msgstr "Gailuak, kontu bakoitzak gailu anitzetan sar daitekeelako"
#: ../../../developer/conference-protocol.md:117
msgid ""
"Medias, because there can be multiple videos by devices (eg 1 camera and 1 "
"screen sharing)"
msgstr ""
"Mediak, bideoklip ugari egon daitezkeelako gailu bakoitzeko (adibidez, "
"kamera bat eta pantaila bat partekatzea)"
#: ../../../developer/conference-protocol.md:119
msgid ""
"To save bandwidth, clients should be able to send multiple orders at once."
msgstr ""
"Banderadura aurrezteko, bezeroek hainbat eskaera aldi berean bidali beharko "
"lituzkete."
#: ../../../developer/conference-protocol.md:121
msgid "General actions"
msgstr "Ekintza orokorrak"
#: ../../../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 ""
"Moderatzaileak \"application/confOrder+json\" bidaltzen du, eta hau da: non "
"**0** sarraila den, **1** erabiltzaile bat da handietan, beste batzuk "
"txikietan, **2** bat da handietan."
#: ../../../developer/conference-protocol.md:126
msgid "Account's actions"
msgstr "Kontuaren ekintzak"
#: ../../../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 ""
"Une honetan, ez dago ekintzarik babestuta, baina etorkizunean `moderator: "
"true/false ` kudeatu behar da moderatzaile bat aldatzeko."
#: ../../../developer/conference-protocol.md:130
msgid "Device's actions"
msgstr "Gailuaren ekintzak"
#: ../../../developer/conference-protocol.md:132
msgid ""
"`hangup: true` to hangup a device from the conference (only moderators)"
msgstr ""
"`hangup: true` konferentziako gailu bat eskegi (moderatzaileak bakarrik)"
#: ../../../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: egia/false ` altxatzeko eskuaren egoera aldatzeko."
#: ../../../developer/conference-protocol.md:135
msgid "Media's actions"
msgstr "Hedabideen ekintzak"
#: ../../../developer/conference-protocol.md:137
msgid ""
"`muteAudio` only doable by moderators to mute the audio of a participant"
msgstr ""
"`muteAudio` moderatzaileek bakarrik egin dezakete parte hartzaile baten "
"audioa isilaraztea"
#: ../../../developer/conference-protocol.md:138
msgid "`muteVideo` not supported yet."
msgstr "`muteVideo ` ez da oraindik babestu."
#: ../../../developer/conference-protocol.md:139
msgid "`active` to mark the media as active."
msgstr "`active ` komunikabideak aktibo gisa markatzeko."
#: ../../../developer/conference-protocol.md:140
msgid ""
"`voiceActivity` to indiciate a media stream's voice activity status (only "
"relevant for audio)"
msgstr ""
"`voiceActivity ` komunikabide-fluxu baten ahots-jarduera-egoera adierazteko "
"(audiorako bakarrik garrantzitsua)"
#: ../../../developer/conference-protocol.md:142
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Example"
msgstr "Adibide bat"
#: ../../../developer/conference-protocol.md:144
msgid "So, the `application/confOrder+json` will contains:"
msgstr "Beraz, `eskabidea/konformitatea+json`-k honako hauek izango ditu:"
#: ../../../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 ""
"Oharra: komunikabidearen motak bilkuren informazioan sartu behar dira eta "
"bezeroak ikuspegia hobetzeko erabil dezake (adibidez, ez moztu pantaila "
"partekatzea)"
#: ../../../developer/conference-protocol.md:172
msgid "Controlling moderators"
msgstr "Moderatzaileak kontrolatzen"
#: ../../../developer/conference-protocol.md:174
msgid "There is actually 3 possibilities:"
msgstr "Hiru aukera daude:"
#: ../../../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 ""
"Kontu aldatzeko konfigurazioa moderatzaileen zerrenda gehitzeko (config.yml-"
"an (`defaultModerators` default moderatzaileen zerrenda izan daiteke)"
#: ../../../developer/conference-protocol.md:177
msgid ""
"If `localModeratorsEnabled` is true, all accounts of the device will be "
"moderators"
msgstr ""
"`localModeratorsEnabled` egia bada, gailuaren kontu guztiak moderatzaileak "
"izango dira"
#: ../../../developer/conference-protocol.md:178
msgid ""
"If `allModeratorsEnabled` is true, anybody in the conference will be a "
"moderator"
msgstr ""
"`allModeratorsEnabled` egia bada, konferentziako edonor izango da "
"moderatzailea"
#: ../../../developer/conference-protocol.md:183
msgid "Separate streams to allow more controls?"
msgstr "Errekak banatu, kontrola handiagoa izateko?"
#: ../../../developer/conference-protocol.md:185
msgid "Notes/Comments"
msgstr "Oharrak/Amirak"
#: ../../../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 ""
"Protokoloa etorkizuneko beharretarako garatuko da. \"Versioa\" eremua "
"edukitzea onena da."
#: ../../../developer/connection-manager.md:1
msgid "The connection manager"
msgstr "Lotura-zuzendaria."
#: ../../../developer/connection-manager.md:4
#: ../../../developer/file-transfer.md:49 ../../../developer/introduction.md:1
#: ../../../developer/location-sharing.md:42
msgid "Introduction"
msgstr "Aurkezpena"
#: ../../../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 ""
"Lotura kudeatzailea talde-txat-funtzioen lehenengo pieza da. Klase honek "
"lagunekin loturak kudeatzen ditu eta erabiltzaileari konektatu nahi dituzten"
" gailuetara sokete multiplexatuak eskaintzen dizkio. Adibidez, Alice-k Bob-"
"en gailu batekin konektatu nahi badu 2 fitxategi transferitzeko, "
"ConnectionManager-ari Bob-i 2 kanala irekitzeko eskatuko dio. Honek emango "
"dio:"
#: ../../../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 ""
"Horren atzean, ConnectionManager-ek Bob-en gailuarekin konektatuko du DHT "
"bidez (ICE bidez) eta TLS Socket bat ezarriko du. Ondoren, kanala eskatuko "
"du, eta kanala prest dagoenean, Alice-ri abisatu deitzeko dei baten bidez. "
"Bigarren fitxategiarentzat, lehen socket-a erabiliko du eta kanala berria "
"zabalduko du (TLS pakete 2 bakarrik behar dira, beraz azkarra da)"
#: ../../../developer/connection-manager.md:26
msgid "DHT side"
msgstr "DHT aldean"
#: ../../../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 ""
"{doc}`call`, ikus **Exchange ICE hautagaiak**, **ICE negoziazioa**, "
"**Encrypt control soketa** baina TCP bakarrik."
#: ../../../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 ""
"Alde batek ICEren eskaera berria jasotzen duenean, ordea, ` null "
"onICERequest(onICERequestCallback&&& cb);`-k ezarritako atzera-deialdia "
"aktibatzen da."
#: ../../../developer/connection-manager.md:32
msgid "Negotiating a new channel"
msgstr "Kanal berri bat negoziatzen"
#: ../../../developer/connection-manager.md:34
msgid ""
"A channel is defined by an id (unique) and a uri (not unique). For example "
"(1, 'git://*')"
msgstr ""
"Kanala id (unique) eta uri (ez-unique) bidez definitzen da. Adibidez (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 ""
"Prest dagoenean, ConnectionManagerrek 0 kanala existitzen dela uste du."
#: ../../../developer/connection-manager.md:38
msgid "The protocol used is pretty simple and looks like the RTP protocol:"
msgstr "Erabilitako protokoloa nahiko sinplea da eta RTP protokoloa dirudi:"
#: ../../../developer/connection-manager.md:40
msgid "16 bits are used to store the length of the body."
msgstr "Gorputzaren luzera gordetzeko 16 bit erabiltzen dira."
#: ../../../developer/connection-manager.md:41
msgid "16 bits for the channel id (destination)"
msgstr "16 bits kanal id (destinazioa)"
#: ../../../developer/connection-manager.md:42
msgid "body"
msgstr "gorputza"
#: ../../../developer/connection-manager.md:44
msgid "So all packets have a 32 bits len header."
msgstr "Pakete guztiek 32 biteko len-header bat dute."
#: ../../../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 ""
"Kanale berri bat eskatzeko, ConnectionManagerrek `ChannelRequest` objektu "
"bat bidaliko du 0 kanalean (msgpack egitura sekuentziatzeko erabiltzen da) "
"kanal berriaren id eta izena bidaltzeko ( `isAnswer = false`)."
#: ../../../developer/connection-manager.md:48
msgid "Closing a channel"
msgstr "Kanal bat itxi"
#: ../../../developer/connection-manager.md:50
msgid ""
"A *EOF* is transmitted for a channel if the length of the content is 0."
msgstr "*EOF* bat igortzen da kanala baten barruan, edukia 0 bada."
#: ../../../developer/connection-manager.md:52
msgid "Structure of the connectionManager"
msgstr "Lotura egitura"
#: ../../../developer/connection-manager.md:54
msgid "Ownership"
msgstr "Jabetza"
#: ../../../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 ""
"JamiAccount batek ConnectionManagerra du eta ChannelSocket objektuetara "
"sarbidea du (shared_ptr MultiplexedSocket-ekin partekatzen da."
#: ../../../developer/connection-manager.md:57
msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
msgstr "ConnectionManagerrek MultiplexedSockets eta ICE objektuak ditu"
#: ../../../developer/connection-manager.md:58
msgid ""
"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
msgstr ""
"MultiplexedSocketsek TLS garraioaren eta ChannelSocket objektuen jabea da"
#: ../../../developer/connection-manager.md:59
msgid "ChannelSocket owns the data buffers"
msgstr "ChannelSocket-ek du datu-bufferra."
#: ../../../developer/connection-manager.md:61
msgid "Roles"
msgstr "Rolrak"
#: ../../../developer/connection-manager.md:63
msgid "ConnectionManager is used to manage connections to peers."
msgstr "ConnectionManager erabiltzen da lagunekin loturak kudeatzeko."
#: ../../../developer/connection-manager.md:64
msgid ""
"MultiplexedSockets are used to send data over the TLSSocket, read the "
"incoming packets and manage channels."
msgstr ""
"MultiplexedSockets erabiltzen dira datuak bidaltzeko TLSSocket bidez, "
"datozen paketeak irakurtzeko eta kanalak kudeatzeko."
#: ../../../developer/connection-manager.md:65
msgid "ChannelSockets are used by the client to interact with the other peer."
msgstr ""
"ChannelSockets bezeroak erabiltzen ditu beste lagun batekin interakzioan "
"jartzeko."
#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:620
msgid "Usage"
msgstr "Erabilera"
#: ../../../developer/connection-manager.md:69
msgid ""
"Scenarios are described in the corresponding unit tests "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
msgstr ""
"Eszenarioak deskribatu dira unitate-proba dagokienetan "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
#: ../../../developer/contact-management.md:1
msgid "Contact management"
msgstr "Kontaktuen kudeaketa"
#: ../../../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 ""
"Atal honetan DHT-tik bezeroari kontaktu bat aurkitzeko eta gehitzeko modua "
"azalduko da. Izen zerbitzari baten erabilera ez da hemen azalduko. Horri "
"buruz xehetasun gehiago nahi izanez gero, irakurri {doc}`name-server-"
"protocol`."
#: ../../../developer/contact-management.md:6
msgid "Presence on the network"
msgstr "Sarean presentzia"
#: ../../../developer/contact-management.md:8
msgid "Announce the presence on the DHT"
msgstr "DHTn presentzia iragartzeko."
#: ../../../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 ""
"DHT-n adieraztea nahiko sinplea da. Izan ere, gailuaren hash-a (ikus aurreko"
" atalean, {doc}`account-management`) duen balioa da giltzaren hatz-marka "
"egokitzen den hash-ean. Beraz, `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` "
"gailuarekin `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, honako balio "
"definitua bidaliko da DHT-n:"
#: ../../../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 ""
"(Hau da, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, adibidez, "
"adibidez, adibidez, adibidez, adibidez: adibidez, adi"
#: ../../../developer/contact-management.md:31
msgid "Get if a contact is present"
msgstr "Deitu kontaktu bat badago."
#: ../../../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 ""
"Orain gure presentzia sarean, denbora da norbait DHT-n presentzia lortzeko. "
"Aurreko atalean, erraza da alderantziz prozesua egitea. DHT-n norbait "
"presentzia duen jakiteko (adibidez: "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9`), balioa lortu behar dugu "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` eta berreskuratu `DeviceHash "
"honetan `Behartzearen jakinarazpena."
#: ../../../developer/contact-management.md:66
msgid "And that's all."
msgstr "Eta hori da guztia."
#: ../../../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 "Eskari itxaronaldia"
#: ../../../developer/contact-management.md:149
msgid "Send a request"
msgstr "Bidali eskaera bat."
#: ../../../developer/contact-management.md:151
msgid "**TODO craft request**"
msgstr "**Todo-ren ontzi-eskaera**"
#: ../../../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 ""
"Azkenik, konfiantza eskaera eginda dagoenean, eskaera hurrengo hashera "
"bultzatu dezakegu: `InfoHash(\"inbox:\" + deviceId) `"
#: ../../../developer/contact-management.md:155
msgid "The following code is used in the daemon:"
msgstr "Daemon-ean kode hau erabiltzen da:"
#: ../../../developer/contact-management.md:160
msgid "Receiving a request"
msgstr "Eskari bat jasotzea"
#: ../../../developer/contact-management.md:164
msgid "(Accept/Block/Discard)"
msgstr "(Onartzen dut/Blokatzen dut/Auzitzen dut)"
#: ../../../developer/contact-management.md:166
msgid "Daemon API"
msgstr "Daemon API bat"
#: ../../../developer/contact-management.md:168
msgid ""
"All methods to follow the presence of a buddy is located in the "
"`PresenceManager` such as:"
msgstr ""
"Lagun baten presentzia jarraitzeko metodo guztiak daude "
"`PresenceManager`-an, hala nola:"
#: ../../../developer/contact-management.md:199
msgid ""
"All methods and signals used to manage trust requests and contacts are in "
"the `ConfigurationManager` such as:"
msgstr ""
"Konfiantza-eskaerak eta kontaktuak kudeatzeko erabiltzen diren metodo eta "
"seinale guztiak `ConfigurationManager]]en daude, hala nola:"
#: ../../../developer/contact-management.md:291
msgid ""
"If you want some examples, these methods are used into `contactmodel.cpp` in"
" LRC."
msgstr ""
"Adibide batzuk nahi badituzu, metodo hauek LRC-n `contactmodel.cpp`-en "
"erabiltzen dira."
#: ../../../developer/debugging-tools.rst:2
msgid "Debugging Tools"
msgstr "Arazoak ebazteko tresnak"
#: ../../../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 ""
"Badaude Jami desegiteko hainbat modu garatzailearen ikuspegitik, desegiteko "
"nahi duzunaren arabera."
#: ../../../developer/debugging-tools.rst:7
msgid "Loggers"
msgstr "Egurrezko armak"
#: ../../../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 ""
"Lehenengo moduak runtime loggerrak erabiltzea da. `jami` `-d`rekin hasita, "
"deamon-en (edo Arazoak ebazteko atalean) logatzea ahalbidetuko da. Jami-k "
"hainbat liburutegi erabiltzen dituenez, ez ditugu eguneroko guztiak "
"balioztatzen."
#: ../../../developer/debugging-tools.rst:13
msgid "`SIPLOGLEVEL=5` for enabling logs from PJSIP."
msgstr "PJSIP-eko egunerokoak ahalbidetzeko."
#: ../../../developer/debugging-tools.rst:14
msgid "`DHTLOGLEVEL=5` for enabling logs from OpenDHT."
msgstr "`DHTLOGLEVEL=5` OpenDHT-tik egunkariak ahalbidetzeko."
#: ../../../developer/debugging-tools.rst:15
msgid "`AVLOGLEVEL=50` for enabling logs from ffmpeg."
msgstr "`AVLOGLEVEL=50` ffmpeg-eko egunerokoak ahalbidetzeko."
#: ../../../developer/debugging-tools.rst:18
msgid "Debuggers"
msgstr "Arazoak ebazten"
#: ../../../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 ""
"Normalean, zure IDE-k debug-eko sistema bat du. Bestela, `gdb` erabil "
"dezakezu, adibidez, haustura-puntuak gehitzeko, istripuen atzera atzera "
"ateratzeko, barne egitura inprimatu, etab. Proiektua *DEBUG* moduan "
"konpilatu behar da debug-eko sinboloak lortzeko."
#: ../../../developer/debugging-tools.rst:24
msgid "Some useful commands:"
msgstr "Zenbait agindu erabilgarriak:"
#: ../../../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` - Haustura puntu bat gehitu (*file.cpp:line* sinbolo "
"batekin ordezkatu daiteke)"
#: ../../../developer/debugging-tools.rst:27
msgid "`t a a bt` - (thread apply all backtrace) to get all backtraces"
msgstr ""
"`t a a bt` - (soka guztiak atzera atzera aplikatzen) atzera atzera guztiak "
"lortzeko"
#: ../../../developer/debugging-tools.rst:28
msgid "`Ctrl + X / A` - pass in graphical view"
msgstr "`Ctrl + X / A` - pasatzeko ikuspegi grafikoan"
#: ../../../developer/debugging-tools.rst:29
msgid "`p` - print an internal value."
msgstr "`p` - barne balio bat inprimatu."
#: ../../../developer/debugging-tools.rst:32
msgid "Profilers"
msgstr "Profilak"
#: ../../../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 ""
"Debug-ak erabilgarriak dira, baina ez dute denbora errealean memoria "
"kontsumoa/sare-jarduera/CPU erabilera erakusten."
#: ../../../developer/debugging-tools.rst:39
msgid "Address Sanitizer"
msgstr "Helbidearen desinfektatzailea"
#: ../../../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 ""
"Hau erabilgarria izan daiteke irteerak, istripuak, irteera-garaietan "
"itxialdiak detektatzeko."
#: ../../../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 tresna bat da, alokazioak, CPUren erabilera eta gehiago behatzeko "
"eta `valgrind --tool=callgrind./jami -d` bidez erabil daiteke. Honek "
"aplikazioa oso mantso jarriko du, baina memoria alokazioari/zerbitzuaren "
"erabilerari buruzko txosten erabilgarriak eman ditzake (**KCacheGrind** "
"txostenak irakurtzeko erabil daiteke)."
#: ../../../developer/debugging-tools.rst:52
msgid "Tests"
msgstr "Probak"
#: ../../../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-ek probak eta estaldura asko ditu ahalbideturik. Daemon-a statikoan "
"eraikitzen bada (beste sinbolo pribatuak ez dira eskuragarri izango), probak"
" gehituz, akatsak erreproduzitzen, akatsak konpontzen eta edozein atzera "
"egitea saihesten lagunduko du."
#: ../../../developer/debugging-tools.rst:59
msgid "Agent"
msgstr "Agentea."
#: ../../../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 ""
"Probak daemon bat bakarrik erabiltzen dira bi lagunak simulatzeko. Beraz, "
"zaila izan daiteke hainbat inguruneetan probatzea. Beste aukera bat da "
"eszenario bat idaztea eta agente bat exekutatzea (dokumentazioa daemonaren "
"biltegian eskuragarri)."
#: ../../../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 ""
"Azkenik, arrasto-puntuak sortu eta aztertu daitezke. `daemon/tools/trace` "
"dokumentazioa eta adibide batzuk ematen dituzte. LTTng-en abantaila log "
"baino azkarragoa da, sistema-ehizpenek piztu ahal dute eta jadanik kernelen "
"dauden arrasto-puntuekin erabil daitezke (hau da, sare interfazetako "
"arrasto-puntuekin erabil daiteke)."
#: ../../../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 "Prozesuak"
#: ../../../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 ""
#: ../../../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 "Kartazioen eskaerak"
#: ../../../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 ""
"Orrialde hau erabiltzaileen iritzi bakoitzeko ezaugarri eskaerak sailkatzeko"
" dago, sarrerak urteetan zabalik uztea saihesteko."
#: ../../../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-edition}`Inplement pipewire <13> support pantaila partekatzea "
"Wayland` -> Kontaktua #Jami (Adrien, Sébastien, eta abar) / hard / En "
"prozesu"
#: ../../../developer/feature-requests.md:12
msgid "Connectivity -> Contact #Jami (Sébastien) / medium:"
msgstr "Lotura -> Kontaktu #Jami (Sébastien) / euskarria:"
#: ../../../developer/feature-requests.md:13
msgid "TURN ipv6 support"
msgstr "TURN ipv6a babesten"
#: ../../../developer/feature-requests.md:14
msgid "connection ipv6 only<->ipv4 only"
msgstr "konektatuta ipv6 bakarrik<->ipv4 bakarrik"
#: ../../../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 ""
"IP-a IP-tik konpondu -> Jarri harremanetan #Jami (Adrien, Sébastien) / "
"erraza"
#: ../../../developer/feature-requests.md:17
msgid "Add unit-tests / probably easy"
msgstr "Unitate-testeak gehitu / ziurrenik erraza"
#: ../../../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 ""
"Sistemako kontaktuen bila ({client-gnome-issu}`1191`, {client-gnome-"
"issu}`829`, etc.) -> Kontaktu #Jami (Adrien, Sébastien, Andreas, etc.) / "
"erraza baina luzea"
#: ../../../developer/feature-requests.md:21
msgid "Crypto: (Contact #Jami - Adrien)"
msgstr "Crypto: (Jami-Adrienekin harremanetan)"
#: ../../../developer/feature-requests.md:22
msgid "Update media RTP ciphers for ffmpeg / probably easy"
msgstr "Mediaren RTP zifrak eguneratu ffmpeg / ziurrenik erraza"
#: ../../../developer/feature-requests.md:23
msgid "Support ECC (instead RSA) for Jami accounts / hard but short"
msgstr "Laguntza ECC (RSAren ordez) Jami kontuetarako / gogor baina motza"
#: ../../../developer/feature-requests.md:24
msgid "Remove usages of SHA1 (ids + git) / hard"
msgstr "SHA1 (ids + git) / gogorrak erabiltzea kentzea"
#: ../../../developer/feature-requests.md:25
msgid "Media -> Contact #Jami (Adrien, Andreas, etc.)"
msgstr "Hedabideak -> Harremanetan jarri #Jami (Adrien, Andreas, etab.)"
#: ../../../developer/feature-requests.md:26
msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard"
msgstr "AV1ko laguntza <27>"
#: ../../../developer/feature-requests.md:27
msgid "Investigate audio quality (contact #Jami, medium difficulty)"
msgstr "Audioa ikertu (Jami kontaktuak, zailtasun ertainekoa)"
#: ../../../developer/feature-requests.md:28
msgid "Plugins ideas: (Contact #Jami - Aline)"
msgstr "Plug-in ideiak: (Jami- Aline-rekin harremanetan)"
#: ../../../developer/feature-requests.md:29
msgid "{plugins-issue}`Payment plug-in <27>`"
msgstr "Ordainketa-plug-in bat"
#: ../../../developer/feature-requests.md:30
msgid "A chat-GPT plugin"
msgstr "GPT txatearen plugin bat"
#: ../../../developer/feature-requests.md:31
msgid "Add new transports (e.g. QUIC?)"
msgstr "Transporte berriak gehitu (adibidez, QUIC?)"
#: ../../../developer/feature-requests.md:32
msgid "Add libtorrent support?"
msgstr "Laguntza libtorantea gehitu?"
#: ../../../developer/feature-requests.md:33
msgid ""
"Public page/personal blog available through Jami (Contact #Jami / medium "
"difficulty & long term project)"
msgstr ""
"Jarri webgune publikoa/blog pertsonala Jami bidez (Jami #Jami kontaktuak / "
"ertaineko zailtasunak eta epe luzeko proiektua)"
#: ../../../developer/feature-requests.md:35
msgid "Qt:"
msgstr "Qt:"
#: ../../../developer/feature-requests.md:36
msgid ""
"{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - "
"easy)"
msgstr ""
"{client-qt-issu}`Txostenak gehitu peer-descovery-rako<868>` (Jami-rekin "
"harremanetan jarri - erraza)"
#: ../../../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 natibo osagai gisa, qt-webengine-ren menpe egoteko (macOS-en ez dago "
"eskuragarri) (adibidez https://github.com/jnodev/QMLemoji)"
#: ../../../developer/feature-requests.md:39
msgid ""
"Categorized conversations (like favorites, groups, etc) (to discuss with "
"#Jami)"
msgstr ""
"Elkarrizketa kategorizatuak (haurren gustukoenak, taldeak, etab.) (Jami-"
"rekin eztabaidatzeko)"
#: ../../../developer/feature-requests.md:40
msgid "jami-web:"
msgstr "-Bai. -Bai."
#: ../../../developer/feature-requests.md:41
msgid ""
"Design architecture to support calls between jami-web and desktop versions "
"-> Contact #Jami (Adrien, Sébastien) / hard"
msgstr ""
"Designarako arkitektura jami-web eta mahaigaineko bertsioen arteko deiak "
"jasotzeko -> Kontaktu #Jami (Adrien, Sébastien) / gogor"
#: ../../../developer/feature-requests.md:44
msgid ""
"Help for the Roadmap 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
msgstr ""
"Bide-mapa 2023rako laguntza: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
#: ../../../developer/feature-requests.md:46
msgid "Some other ideas from tickets:"
msgstr "Beste ideia batzuk txarteletatik:"
#: ../../../developer/feature-requests.md:48
msgid "Planned/In progress"
msgstr "Planak/Iragan"
#: ../../../developer/feature-requests.md:50
msgid ""
"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact Rennes"
msgstr ""
"Jami hobetu Yocto-n (kodeketako arazo batzuk/mx-en atzerapena 6) -> Kontaktu"
" 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 Hobetu bezeroa]https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> Harremanetan jarri #Jami (Andreas)"
#: ../../../developer/feature-requests.md:54
msgid "Redo emoji-picker with native component"
msgstr "Emoji-auker bat berritzeko, osagai natiboarekin"
#: ../../../developer/feature-requests.md:55
msgid "Implement designs from Charlotte"
msgstr "Charlotte-ko diseinuak martxan jartzea"
#: ../../../developer/feature-requests.md:56
msgid "Help for swarms (Sébastien)"
msgstr "Laguntza swarms (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 "Aplikazio bat instalatzea aspergarria izan daiteke."
#: ../../../developer/feature-requests.md:61
msgid "Wanted but not planned"
msgstr "Nahi izan dut, baina ez dut planeatu."
#: ../../../developer/feature-requests.md:63
#: ../../../developer/feature-requests.md:93
msgid "?"
msgstr "- Zer?"
#: ../../../developer/feature-requests.md:65
msgid ""
"Can be implemented, contributions welcome (or will take months/years to "
"come)"
msgstr ""
"Baliabideak bete daitezke, ekarpenak onartzen dira (edo hilabeteak edo "
"urteak beharko dituzte)"
#: ../../../developer/feature-requests.md:67
msgid ""
"{project-issue}`add possibility to show \"reachable at the following times\""
" (contact details) <1261>`"
msgstr ""
"{proiektu-emaitza}` gehitu aukera \"orduartean eskuragarri\" erakusteko "
"(kontaktu-datuak) <1261>`"
#: ../../../developer/feature-requests.md:69
msgid ""
"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
"ringtone) <1280>`"
msgstr ""
"{proiektu-emaitza}`Kontaktu bakoitzeko nahiagoak (deiak, artxibo "
"transferentzia, soinua) <1280>`"
#: ../../../developer/feature-requests.md:71
msgid ""
"{project-issue}`Ability to create polls (ideally a plugin with swarm) "
"<1254>`"
msgstr "Inkesta egiteko gaitasuna (idealerako, multzo bateko plugin bat)"
#: ../../../developer/feature-requests.md:73
msgid "{project-issue}`Support for Panic buttons <623>`"
msgstr "Panic Buttonen laguntza"
#: ../../../developer/feature-requests.md:74
msgid "Matrix bridge"
msgstr "Matrix zubia"
#: ../../../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 ""
"TORren laguntza osoa edo beste alternatiba batzuk, hala nola lokinet "
"({proiektua-emaitza}`922`, {proiektua-emaitza}`622`, {proiektua-"
"emaitza}`495`), {proiektua-emaitza}`i2p <630>`"
#: ../../../developer/feature-requests.md:78
msgid "{project-issue}`Bluetooth support <774>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:79
msgid "{project-issue}`Secret-based turn server <886>`"
msgstr "Sekretuan oinarritutako zerbitzari-turna"
#: ../../../developer/feature-requests.md:80
msgid "{client-android-issue}`Ability to compress files before sending <720>`"
msgstr ""
"{client-android-issu}`Askorabilitateak artxiboak konprimitu aurretik <720>"
#: ../../../developer/feature-requests.md:82
msgid "Ability to trim recorded clips before sending"
msgstr "Grabatutako bideoklipak moztu ahal izateko bidalketaren aurretik"
#: ../../../developer/feature-requests.md:83
msgid "{client-gnome-issue}`Spell checking support <1169>`"
msgstr "♪ Zer esan nahi du horrek? ♪"
#: ../../../developer/feature-requests.md:84
msgid "{project-issue}`Echo bot to test audio <392>`"
msgstr "Exo-botak audio-probak egiten ditu."
#: ../../../developer/feature-requests.md:85
msgid ""
"{project-issue}`Handle click on jami:uri system wide (missing "
"macOS/Android/iOS) <653>`"
msgstr ""
"{proiektu-emaitza}`Eskuz sakatu jami:uri sistema zabalera (macOS/Android/iOS"
" falta) <653>`"
#: ../../../developer/feature-requests.md:86
msgid ""
"{project-issue}`Initial audio mode <1288>` (need to wait for group chat)"
msgstr ""
"{proiektu-emaitza}` Hasierako audio modua <1288>` (talde-txata itxaron behar"
" da)"
#: ../../../developer/feature-requests.md:88
msgid "{project-issue}`Feature Request: Volume Slider <1524>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:89
msgid "{client-qt-issue}`Portable version for Windows <170>`"
msgstr "{client-qt-issu}` Windows-erako bertsio eramangarria <170>`"
#: ../../../developer/feature-requests.md:91
msgid "Depends on mass changes"
msgstr "Masa aldaketaren arabera"
#: ../../../developer/feature-requests.md:95
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:59
msgid "Packaging"
msgstr "Enpaketatzea"
#: ../../../developer/feature-requests.md:97
msgid "{client-gnome-issue}`FreeBSD support <1272>`"
msgstr "\"Bideoa\" eta \"Bideoa\""
#: ../../../developer/feature-requests.md:99
msgid "Others"
msgstr "Beste batzuk"
#: ../../../developer/feature-requests.md:101
msgid "{project-issue}`Collaborative editor <1010>`"
msgstr "Eusko Jaurlaritzaren laguntzarekin egindako azpitituluak"
#: ../../../developer/feature-requests.md:102
msgid "{project-issue}`A thunderbird plugin <516>`"
msgstr "♪Troneko txori bat ♪"
#: ../../../developer/feature-requests.md:103
msgid "{project-issue}`OpenAlias <928>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:104
msgid "{project-issue}`CMIS integration <455>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:105
msgid "{project-issue}`Sound safety <441>`"
msgstr "♪ Proiektuaren segurtasuna ♪"
#: ../../../developer/feature-requests.md:106
msgid ""
"{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
msgstr "Elkarrizketa anitzeko aukera aldi berean"
#: ../../../developer/feature-requests.md:107
msgid "{client-gnome-issue}`Vocoder option <957>`"
msgstr "{client-gnome-issue}`Vocoder aukera <957>`"
#: ../../../developer/feature-requests.md:108
msgid "{project-issue}`SOCKS5 support <430>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:109
msgid "{project-issue}`Cardbook integration <383>`"
msgstr "Txartela-liburuaren integrazioa"
#: ../../../developer/feature-requests.md:110
msgid "{project-issue}`Multiple instances running <629>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:111
msgid "{daemon-issue}`Whiteboard <181>`"
msgstr "Txartel zuria"
#: ../../../developer/feature-requests.md:112
msgid "{client-android-issue}`Camera zoom <979#note_29386>`"
msgstr "Kamera-zooma."
#: ../../../developer/feature-requests.md:113
msgid "{client-qt-issue}`Emoji reaction in calls <497>`"
msgstr "Emoji erreakzioa deietan"
#: ../../../developer/feature-requests.md:114
msgid "{client-android-issue}`Conversation's background <710>`"
msgstr "Elkarrizketaren atzeko planoak"
#: ../../../developer/feature-requests.md:115
msgid "{project-issue}`[Desktop] Option to have a Window per Chat <633>`"
msgstr ""
"{proiektu-eragitea}`[Desktop] Aukera Chat bakoitzeko Leiho bat izateko "
"<633>`"
#: ../../../developer/feature-requests.md:116
msgid "{project-issue}`Multiple text selection <1096>`"
msgstr "{proiektu-emaitza}`Teksto-hautapen ugari <1096>`"
#: ../../../developer/feature-requests.md:117
msgid "{project-issue}`In-app sticker pack creation <1317>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:118
msgid "{project-issue}`Re-order messages <1357>`"
msgstr "Proiektu-emaitza:"
#: ../../../developer/feature-requests.md:119
msgid "{daemon-issue}`Remote control <349>`"
msgstr "Urrutiko kontrola"
#: ../../../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-issu}`Locked mezuak (merkatuak ezkutatzeko aukera ematen "
"zaion ezaugarria klikatu arte) <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 "Fitxategiak transferitzeko"
#: ../../../developer/file-transfer.md:4
msgid "**THIS PAGE IS DEPRECATED: READ {ref}`developer/swarm:File transfer`**"
msgstr "**PAGE HORREN: irakurri {ref}`developer/swarm:file transferentzia`**"
#: ../../../developer/file-transfer.md:7
#: ../../../developer/location-sharing.md:4
msgid "How to use it?"
msgstr "Nola erabili?"
#: ../../../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 ""
"Gnome-n fitxategi bat bidaltzeko, elkarrizketa batean, sakatu behar duzu "
"elkarrizketaren beheko eskuineko aldean dagoen fitxategi bat bidaltzeko "
"ikonoan:"
#: ../../../developer/file-transfer.md:15
msgid ""
"![Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
msgstr ""
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪"
#: ../../../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 ""
"Gero, zure irudia ikusiko duzu transferentzia amaitutakoan (eta irudiak "
"erakutsi aktibatzen dira)"
#: ../../../developer/file-transfer.md:20
msgid ""
"![Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
msgstr ""
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪"
#: ../../../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 ""
"Alderantziz, fitxategi bat jasotzen baduzu (eta ez bada irudia &lt; 20 Mb), "
"transferentzia onartu beharko duzu:"
#: ../../../developer/file-transfer.md:25
msgid ""
"![Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)"
msgstr ""
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪"
#: ../../../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 "Eta gero artxiboa bidaliko da."
#: ../../../developer/file-transfer.md:30
msgid ""
"![Gnome_ongoing](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)"
msgstr ""
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪"
#: ../../../developer/file-transfer.md:30
msgid "Gnome_ongoing"
msgstr "Gorroto dut."
#: ../../../developer/file-transfer.md:32
msgid "Android"
msgstr "Android-a"
#: ../../../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 ""
"Android-en norbaitekin hitz egiten duzunean, aukera duzu argazki bat "
"bidaltzeko edo argazki bat egiteko botoi hauekin:"
#: ../../../developer/file-transfer.md:37
msgid ""
"![Android_file_buttons](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/d68472b2c7bfcc616b0c674c9c7a8fed/Android_file_buttons.png)"
msgstr "♪ Android_file_buttonak ♪"
#: ../../../developer/file-transfer.md:37
msgid "Android_file_buttons"
msgstr "Android_fitxategi_buttonak"
#: ../../../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 ""
"Oharra: fitxategi bat bidaltzen duzunean, besteak onartu egin behar du."
#: ../../../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] ♪ ♪ http://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 "Nola funtzionatzen du?"
#: ../../../developer/file-transfer.md:47
msgid "How it works"
msgstr "Nola funtzionatzen du?"
#: ../../../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 aplikazio banatu bat da eta interneteko konexiorik gabe funtzionatu "
"behar du. Beraz, fitxategi transferentzia ere! Oinarrian, metodo bera "
"erabiltzen dugu fitxategi transferentzia eta deiak egiteko, baina TCP-n. "
"Nola funtzionatzen duen laburbiltzeko, irudikatu dezakegu Alice (A) "
"fitxategi bat Bob (B) transferitu nahi duen egoera."
#: ../../../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 ""
"Lehenengo, Alice-k Bob-ekin lotura eskatuko du. Horretarako, Jami-k ICE (RFC"
" 6544) erabiltzen du, kideen arteko loturak negoziatzeko erabiltzen den "
"protokoloa. Alice-k bere gailuaren ip enkriptatua bidaliko du DHT bidez. "
"Beraz, Bob-ek Alice-ren ipak jasotzen dituenean, garraio bat negoziatu ahal "
"izango dute, non Bob-ek paketeak bidaliko dizkiote Alice-ri. Negoziazioa "
"arrakastatsua izan daiteke, baina porrot egiten badu, TURN zerbitzari bat "
"erabiliko da transferentzia egiteko. Negoziazioak arrakasta izanez gero, "
"Bob-ek bere ipak bidaliko dizkio Alice-ri beste norabidean negoziatzea "
"egiteko. Kontuan izan lotura oraindik ez dagoela, beraz, Bob-ek DHT bidez "
"bidaliko ditu ipak mezu enkriptatua. Bigarren negoziazioak porrot egiten "
"badu, TURN-a atzera-erreko gisa erabiliko da."
#: ../../../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 ""
"Orain, bidirezionalki lotutako TCP-a hemen dagoenez, hurrengo pausoa TLS 1.3"
" bat negoziatzea izango da (normalean (TLS1.3) -DHE-FFDHE8192) -RSA-PSS-"
"RSAE-SHA384) -AES-256-GCM-a) lerro hauek idazten ditudanean Alice eta Boben "
"artean, orduan Alice-k fitxategia transferitzen hasiko da."
#: ../../../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 ""
"Lehenengo zatia fitxategiaren edukia deskribatzeko buru txiki bat izango da."
#: ../../../developer/file-transfer.md:61
msgid "Sending a file"
msgstr "Artxiboa bidaltzen"
#: ../../../developer/file-transfer.md:63
msgid "The following method is used:"
msgstr "Honako metodoa erabiltzen da:"
#: ../../../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\\. Bezero batek `DataTransferFacade::sendFile() `. `DataTransferFacade` da"
" bezeroentzat agerian dagoen API-ri dagokion klasea. Fitxategi "
"transferentzien ikuspegia kudeatzeko erabiltzen da (adierazpen klasek "
"`DataTransfer`, `IncomingFileTransfer`, `OutgoingFileTransfer` eta "
"`SubOutgoingFileTransfer` dira). Metodo honek lotutako `JamiAccount` "
"konektatzeko eskatuko du."
#: ../../../developer/file-transfer.md:67
msgid ""
"![Diagram: DataTransfer class diagram]images/file-transfer-datatransfer-"
"class-diagram.png)"
msgstr ""
"![Diagrama: DataTransfer klasearen diagrama]images/file-transfer-"
"datatransfer-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\\. Metodoa `DhtPeerConnector: requestConnection() ` aktibatzen da eta "
"peer-aren (DHT-n aurkitutako) gailu konektatu guztien artean konexio bat "
"sortzen da. `DhtPeerConnector` gailu nagusia kudeatzeko erabiltzen da "
"konexioak kudeatzeko. Gailu bat aurkitzean, *event loop* gailuak "
"`ClientConnector ` (gailu baterako konexioa kudeatzen duen) sortuko du eta "
"`prozesua abiaraziko du."
#: ../../../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\\. Metodo hau erabiltzen da ICE garraioaren abian jartzeko eta DHT-n "
"*PeerConnectionMsg* (SDP mezua jasotzen duena, ikus azkena) jartzeko eta "
"erantzun baten zain egoteko (`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\\. Ondoren, DHT-tik erantzun bat jasotzen da, zeinak gailu-laguntzailearen"
" helbide publikoak dituen. Orain TLS-ko lotura bat negoziatu dezakegu (ICE "
"bidez zuzenean, edo TURN bidez atzera egiteko moduan). `TlsSocketEndpoint` "
"hau `PeerConnection ` objektuari ematen zaio irteera gisa eta transferentzia"
" abiatu daiteke."
#: ../../../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.\\ TLS-a prest dagoenean, dei-aldaketa "
"`DataTransferFacade::Impl::onConnectionRequestReply` deitzen da, eta "
"`OutgoingFileTransfer` sarrera gisa `PeerConnection`-rekin lotzen da. "
"`OutgoingFileTransfer`-k `SubOutgoingFileTransfer`-en zerrenda bat du "
"(tresna bakoitzeko bat), non azpi-transfer bakoitza gailu baterako "
"transferentzia den."
#: ../../../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` lehenengo fitxategiaren izenburua "
"transferituko du, eta ondoren fitxategia bidaliko du."
#: ../../../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\\. Peer edo bezeroaren deusezpena jasotzen bada edo fitxategi "
"transferentzia amaitzen bada, konexioa itxiko da "
"`DhtPeerConnector::eventLoop() `-ko `CANCEL` mezu baten bidez eta "
"baliabideak askatuko dira."
#: ../../../developer/file-transfer.md:81
msgid ""
"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
msgstr "-Txostenak transferitzeko."
#: ../../../developer/file-transfer.md:81
msgid "TLSsocketEndpoint"
msgstr "TLSsocket Endpoint-en izena"
#: ../../../developer/file-transfer.md:83
msgid "Receiving a file"
msgstr "Artxiboa jasotzen"
#: ../../../developer/file-transfer.md:86
msgid ""
"The same structure is used to receive files, but the method changes a bit:"
msgstr ""
"Estruktura bera erabiltzen da fitxategiak jasotzeko, baina metodoa pixka bat"
" aldatzen da:"
#: ../../../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 ""
"`JamiAccount` klasea erabiltzen da DHTren mezuak jasotzeko, DHTren eskaera "
"izango baita lehen gauza jasotakoa."
#: ../../../developer/file-transfer.md:89
msgid ""
"Then, this message is given to `DhtPeerConnector: onRequestMessage()` "
"through the eventLoop."
msgstr ""
"Ondoren, mezu hau `DhtPeerConnector: onRequestMessage() `-ri ematen zaio "
"eventLoop bidez."
#: ../../../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` TURN zerbitzariarekin konektatzen "
"saiatuko da (konektatuta ez badago) eta ICE garraioa abian jartzen du. "
"Metodo honek 2 kontrol konexio irekiko ditu TURN zerbitzari batekin (bat "
"IPv4 gurasoak baimendzeko, bestea IPv6 gurasoentzat, **RFC 6156**-ren "
"ondorioz) ez bada dagoeneko irekita eta gurasoen helbide publikoak "
"konektatzeko aukera ematen badu. Ondoren, jasotako SDP-k ICE hautagaiak ez "
"baditu, TURN erabiliko du eta SDP-ren erantzuna egingo du gurasoaren zain "
"egoteko."
#: ../../../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 ""
"Loturak prest daudenean, bidaltzailea bezala, TLS lotura bat negoziatzen da "
"eta `PeerConnection`-i ematen zaio `IncomingFileTransfer`-ri sarrera gisa."
#: ../../../developer/file-transfer.md:93
msgid "Re-ask for a previous file transfer"
msgstr "Berriz eskatu aurreko fitxategi transferentzia"
#: ../../../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 ""
"{ref}`developer/swarm:Other mime types`-an zehaztutako moduan, datuen "
"transferentzia-interakzioak sinkronizatzen dira eta elkarrizketetan "
"gordetzen dira. Beraz, gailu batek erraz detektatu dezake fitxategi bat "
"deskargatu den ala ez."
#: ../../../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 ""
"Horretarako, gailuak json bat bidaliko du mime-motako: `application/data "
"transfer-request+json`, eta json` (konbersazioaren id), `interaction` "
"(erlazioa), `deviceId` (artxiboa jasotzen duen gailuaren) idatzita."
#: ../../../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 ""
"Bidaliak orain egiaztatzen du gailua iragarritako adiskidearen gailua den "
"eta gailua elkarrizketaren kidea den, eta fitxategia artxibo transferentzia "
"klasiko baten bidez bidali ahal izango du."
#: ../../../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 ""
"Hartzaileak lehen transferentzia onartu dezake, fitxategia deskargatu eta "
"sha3sum zuzena dela egiaztatu."
#: ../../../developer/file-transfer.md:103
msgid "Schema"
msgstr "Eskemak"
#: ../../../developer/file-transfer.md:105
msgid ""
"![Diagram: main schema diagram](images/file-transfer-main-schema-"
"diagram.png)"
msgstr "[Diagrama: schema nagusia]"
#: ../../../developer/file-transfer.md:105
msgid "Diagram: main schema diagram"
msgstr "Diagrama: eskemaren grafikoa"
#: ../../../developer/file-transfer.md:107
msgid "SDP sent over the DHT"
msgstr "SDP DHT bidez bidali"
#: ../../../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 ""
"Non `0d04b932` da ufrag eta `7c33834e7cf944bf0e367b47` ICE saioaren "
"pasahitza. `2130706431` eta `1694498815` hautagaien lehentasuna dira. "
"`192.168.0.126 42751 tcptype pasiboa ostalari mota tcptype pasiboa` pasiboa "
"ostalari mota hautagai eta `1694498815 X.X.X.X 42751 srflx tcptype pasiboa "
"tcptype pasiboa` ostalari pasiboa ip publikoa islatu (UPnP bidez mapped "
"adibidez)."
#: ../../../developer/file-transfer.md:125
msgid "PJSIP related patches."
msgstr "PJSIP-rekin lotutako paretak."
#: ../../../developer/file-transfer.md:127
msgid "3 patches will be included into the PJSIP project:"
msgstr "3 patch sartuko dira PJSIP proiektuan:"
#: ../../../developer/file-transfer.md:129
msgid ""
"RFC 6062, used to perform TURN over TCP (merged upstream: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
msgstr ""
"RFC 6062, TCP-n TURN egiteko erabiltzen da (aurrera erregistratua: pjproject"
" - fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
#: ../../../developer/file-transfer.md:130
msgid "RFC 6544, used to perform ICE over TCP"
msgstr "RFC 6544, TCP gaineko ICE egiteko erabiltzen da"
#: ../../../developer/file-transfer.md:131
msgid "A fix for pj_activesock"
msgstr "pj_activesock konpontzeko"
#: ../../../developer/file-transfer.md:133
msgid "Note that the stack for the file transfer is:"
msgstr "Kontuan izan fitxategi transferentziaren pila hau dela:"
#: ../../../developer/file-transfer.md:145
msgid "Multi devices"
msgstr "Gailu multzoak"
#: ../../../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 ""
"Erabiltzaile batek bere kontua hainbat gailuekin lotuko du. beraz, "
"transferentzia gauzatu behar da erabiltzaile batek fitxategi bat bidaltzen "
"duenean kontu horrekin lotutako hainbat gailu dituen kontaktu bati."
#: ../../../developer/file-transfer.md:151
msgid "First approach"
msgstr "Lehen hurbilketa"
#: ../../../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 ""
"Lehenengo moduak eskatu bat bidaltzea izan zen DHT bidez gailu guztiei eta "
"erantzunen lehen gailuek fitxategia transferitzeko lortzen dute."
#: ../../../developer/file-transfer.md:158
msgid "Current approach"
msgstr "Egungo ikuspegia"
#: ../../../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 ""
"Orain, oraindik ere, gailu guztietara eskaera bat bidaltzen dugu. Aldea da "
"gailu guztiek izango dutela oharra fitxategi bat jasotzeko eta onartu / "
"ukatu ahal izango dute transferentzia."
#: ../../../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 ""
"Orain (https://gerrit-ring.savoirfairelinux.com/#/c/9327/>) erabiltzaile "
"batek fitxategi bat bidaltzen duenean, *PeerConnection* eskatuko du "
"gailuekin. Eta konexio guztiekin, sarrera-fluxu berria erantsiko dugu "
"transferentzia bakoitza bereizita onartzeko/baztertu/aurreikus dezaten."
#: ../../../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 ""
"*data\\_transfer.cpp*-n, *OptimisticMetaOutgoingInfo* klasea definitzen "
"dugu, eta horiek bezeroari erakusteko ikuspegi optimista irudikatzen dute."
#: ../../../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 ""
"Klase hau *SubOutgoingFileTransfer*-rekin lotuta dago, gailu batekin "
"transferentzia baten egoera adierazten dutenak."
#: ../../../developer/file-transfer.md:180
msgid "Using another TURN server"
msgstr "Beste zerbitzari bat erabiliz"
#: ../../../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 ""
"Egia esan, TURN zerbitzariaren aurreikuspena *turn.ring.cx da. Baina zure "
"TURN zerbitzari propioa gorde dezakezu. Adibidez, [coturn] "
"(https://github.com/coturn/coturn) zerbitzari bat martxan jarriz."
#: ../../../developer/file-transfer.md:186
msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
msgstr "`sudo turnserver -a -v -n -u erabiltzailea: pasahitza -r \"erresuma\""
#: ../../../developer/file-transfer.md:188
msgid ""
"Then, you can configure the TURN server in the advanced settings of RING."
msgstr ""
"Gero, TURN zerbitzaria konfiguratuko duzu RING-en konfigurazio "
"aurreratuetan."
#: ../../../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 ""
"Oharra: honek ezagutza tekniko batzuk behar ditu. Gainera, TURN zerbitzariak"
" zure korapiloaren IP helbide bera ikusi beharko du helmuga korapiloak edo "
"adiskideen konexioa porrot egingo du (autorizazioa okerra izango delako)"
#: ../../../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 ""
"Oraingoz, fitxategi transferentzia bat porrot egiten badu, bidaltzaileak "
"ezin du transferentzia berreskuratu eta transferentzia osoa birrabiarazi "
"behar du."
#: ../../../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 "Zerrenda osoa"
#: ../../../developer/file-transfer.md:212
msgid "Add unit-tests (https://gerrit-ring.savoirfairelinux.com/\\#/c/9365/)"
msgstr ""
"Unitate-proba gehitu (https://gerrit-ring.savoirfairelinux.com/\\#/c/9365/)"
#: ../../../developer/file-transfer.md:213
msgid "Show subtransfers status for outgoing files"
msgstr "Erakutsi irteten diren fitxategien azpi-transferen egoera"
#: ../../../developer/file-transfer.md:214
msgid "Offset resume (for failed transfer)"
msgstr "Erresumako kopurua (transferentzia hutsagatik)"
#: ../../../developer/important-rfcs.md:1
msgid "Important RFCs"
msgstr "RFC garrantzitsuak"
#: ../../../developer/important-rfcs.md:4
msgid "SIP"
msgstr "SIP"
#: ../../../developer/important-rfcs.md:6
msgid "Reference: <http://tools.ietf.org/html/rfc3261>"
msgstr "Erreferentzia: <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 "Eguneratze eta luzapenak:"
#: ../../../developer/important-rfcs.md:10
msgid "SIP Re-INVITE: <http://tools.ietf.org/html/rfc6141>"
msgstr "SIP-ren bidez berriz gonbidatu: <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 "Erreferentzia: <http://tools.ietf.org/html/rfc5245>"
#: ../../../developer/important-rfcs.md:16
msgid "ICE TCP"
msgstr ""
#: ../../../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 "Erreferentzia: <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 ""
"Nola erabili SDP: <http://tools.ietf.org/html/rfc3264> Balio handiko "
"eguneratzeak eta luzapenak:"
#: ../../../developer/important-rfcs.md:27
msgid "SDP and IPv6: <http://tools.ietf.org/html/rfc6157>"
msgstr "SDP eta IPv6: <http://tools.ietf.org/html/rfc6157>"
#: ../../../developer/important-rfcs.md:28
msgid "SDP for SRTP: <http://tools.ietf.org/html/rfc4568>"
msgstr "SDP SRTPrentzat: <http://tools.ietf.org/html/rfc4568>"
#: ../../../developer/important-rfcs.md:31
msgid "RTP"
msgstr "RTPren arteko"
#: ../../../developer/important-rfcs.md:33
msgid "Reference: <http://tools.ietf.org/html/rfc3550>"
msgstr "Erreferentzia: <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 eta RTCP portu berean: <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 "Erreferentzia: <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 SRTPrentzat: <https://tools.ietf.org/html/rfc5763> eta "
"<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 eta 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 "Jami-ren kalitatea hobetzea"
#: ../../../developer/improving-quality-of-jami.md:4
msgid "Unit-tests"
msgstr "Unitate-proba"
#: ../../../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 ""
"Zailagoa da Jami proiektuaren unitate-proiektua egitea maila anitzeko "
"mendekotasunari buruzko lasterketa baldintzak direla eta."
#: ../../../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 ""
"30 unitate-testa eta 26% estaldura daude. Jami-k funtzionalitate berriak "
"erabiltzaileari azkar emateko eskaera handia duelako, ez dituzte "
"garatzaileek edo QA sailak mantentzen."
#: ../../../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 "Icov erabiltzen dugu estaldurako, daemon Makefile.am da."
#: ../../../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 ""
"Sistema bat behar da martxan jarri taldeari konbentzitzeko kode berria "
"unitate-proba egiteko fusioa hasi aurretik."
#: ../../../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 ""
"Jarraitu ahal izango duzu, daemon karpetan edo unitate-test karpetan "
"bereizita jartzean."
#: ../../../developer/improving-quality-of-jami.md:16
msgid ""
"The environment needs to be set with ‘--disable-shared’ during the "
"’./configure’ command"
msgstr ""
"Ingurunea -deactivate-shared-rekin ezarri behar da /configure aginduaren "
"zehar"
#: ../../../developer/improving-quality-of-jami.md:18
msgid "Framework Tests"
msgstr "Azterketa-markoak"
#: ../../../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 ""
"Daemon Makefile.am-en aztertu ahal izango dituzu azterketa-markoak eta make "
"integrazioarekin bazkaltzeko."
#: ../../../developer/improving-quality-of-jami.md:22
msgid ""
"This makes a series of calls to assure jami’s opendht network is stable."
msgstr ""
"Honek dei batzuk egiten ditu, jami's-en sare irekia egonkorra dela "
"ziurtatzeko."
#: ../../../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 ""
"Beste azterketa-marko batzuk ere behar dira etorkizunean jamisonen "
"funtzionaltasunak osotasunez probatzeko."
#: ../../../developer/improving-quality-of-jami.md:26
msgid "Integration tests"
msgstr "Integrazio-proba"
#: ../../../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 ""
"Konpromiso bakoitzak integratze-proba egiten du eraikitzeko makinetan."
#: ../../../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 ""
"Kode-berrikuspena garatzaile kide batek egiten du, batzuetan kodea "
"garatzaile berak berrikusten du, Linus legea azpimarratuz saihestu behar da."
#: ../../../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-k Jenkins-i Jami eraikitzen eta linting egiaztatzen uzten dio. "
"Filtroak eta emaitzak aurki ditzakezu: sonar- jami.savoirfairelinux.net "
"Sonar-ek clang-tidy erabiltzen du aurreprozesatzailearen linting "
"konpilatzaile gisa, clangs filtroak.clang-tidy fitxategian aurki ditzakezu "
"daemon karpetan."
#: ../../../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 ""
"Sflvault sonarqube zerbitzuan aurkituko duzu m#2637 eta admin sarrerak "
"zerbitzuan s#7169"
#: ../../../developer/improving-quality-of-jami.md:36
msgid "Doc and feedback:"
msgstr "Doktorea eta iritzia:"
#: ../../../developer/improving-quality-of-jami.md:38
msgid "You can find all the documentation on docs.jami.net"
msgstr "Dokumentazio guztia docs.jami.net-en dago."
#: ../../../developer/improving-quality-of-jami.md:40
msgid "Issues are made by developers or users on git.jami.net"
msgstr ""
"Gertatzen diren arazoak garatzaileek edo erabiltzaileek sortzen dituzte "
"git.jami.net-en"
#: ../../../developer/improving-quality-of-jami.md:42
msgid "Monitoring"
msgstr "Zaintza"
#: ../../../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 ""
"Eskriba bat deitzen da 30 minutuan behin makina birtualean jami-"
"monitorpeervm-01. sflvault zerbitzuan aurkituko duzu s#7209 eta beste bezero"
" bati deitzen ari da virtual jami-monitorpeer-02 (zerbitzua s#7224). Dei "
"sorta bat egiten ari da eta porrot tasa itzultzen du."
#: ../../../developer/improving-quality-of-jami.md:46
msgid ""
"If needed, the manual command is ./script.sh –peer "
"031acbb73f2a3385b2babc7161f13325be103431"
msgstr ""
"Beharrezkoa bada, agindu manuala da./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 ""
"Puntu bat grafika berezi batetik "
"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 "Kearen probak"
#: ../../../developer/improving-quality-of-jami.md:52
msgid "Before each releases every clients MUST past a list of scenarios."
msgstr ""
"Errekurtso bakoitza egin aurretik, bezero bakoitzak egoera batzuk aztertu "
"behar ditu."
#: ../../../developer/improving-quality-of-jami.md:54
msgid "Scenarios are described here: [Jami smoke tests](jami-smoke-tests.ods)"
msgstr "Hemen deskribatzen dira egoera hauek: [Jami-smoke tests]"
#: ../../../developer/improving-quality-of-jami.md:57
msgid ""
"They are reviewed by QA dpt. before sending it to the developers if needed."
msgstr ""
"QA-k berrikusi egiten ditu, behar izanez gero, garatzaileei bidali aurretik."
#: ../../../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 ""
"Irteera bat badago sare konpromiso bat, konbinatu da, QA departamentuak "
"konektate probak automatikatzeko gai izan behar du (behean dei "
"konfigurazioetan deskribatu bezala)"
#: ../../../developer/improving-quality-of-jami.md:61
msgid "Calls configurations."
msgstr "Konfigurazioak deitzen ditu."
#: ../../../developer/improving-quality-of-jami.md:63
msgid "This is the list of network configurations that need to be tested:"
msgstr "Hau da aztertu beharreko sare konfigurazioen zerrenda:"
#: ../../../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) bi aldeentzat."
#: ../../../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 ""
"Bi aldeak IPv4 bakarrik badaude TURN/STUN/UPnP gabe, deialdia tokikoak izan "
"behar du."
#: ../../../developer/improving-quality-of-jami.md:69
msgid "Special note: FDroid"
msgstr "Ohar berezia: FDroid"
#: ../../../developer/improving-quality-of-jami.md:71
msgid ""
"The script to generate MR is in the client-android repo "
"(fdroidMergeRequest.sh)"
msgstr ""
"MR sortzeko gidoia androideko bezeroaren erreposan dago "
"(fdroidMergeRequest.sh)"
#: ../../../developer/improving-quality-of-jami.md:73
msgid "What needs to be done"
msgstr "Zer egin behar da?"
#: ../../../developer/improving-quality-of-jami.md:75
msgid "Push coverage closer to 60%"
msgstr "Estaldura % 60ra hurbildu"
#: ../../../developer/improving-quality-of-jami.md:77
msgid ""
"Establish a system within the team to assure maintenance and creation of "
"unit-tests."
msgstr ""
"Taldearen barruan sistema bat ezarri unitate-proba mantentzeko eta sortzeko."
#: ../../../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 ""
"Funtzio nagusi bakoitza osorik probatu behar da testu-marko bat gehituz (hau"
" da, mezua jaso, deiak bi aldeetan ondo amaitu, etab.)"
#: ../../../developer/improving-quality-of-jami.md:81
msgid ""
"Each new functionality should be tested on each platform before merging it "
"to reduce regression"
msgstr ""
"Funtzio berri bakoitza plataforma bakoitzean probatu behar da, regresioa "
"murrizteko, bat egin aurretik."
#: ../../../developer/improving-quality-of-jami.md:83
msgid "Integrate sonarqube on each client"
msgstr "Sona-arkuboa bezero bakoitzean integratzea"
#: ../../../developer/improving-quality-of-jami.md:85
msgid "Automate the testing of Jami’s behavior on network compatibility"
msgstr ""
"Jarduera bateragarritasunaren inguruan Jamiren portaera probatzea "
"automatizatzea"
#: ../../../developer/improving-quality-of-jami.md:87
msgid "Make a make_ring.py script adaptable to windows also"
msgstr "Make_ring.py idazlana egin Windows-en egokitzeko ere"
#: ../../../developer/index.rst:3
msgid "Developer manual"
msgstr "Garatzaileen eskuliburua"
#: ../../../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 ""
"Jami garatzaileen eskuliburua Jami garatzaile eta laguntzaileentzako "
"erreferentzia da, Jami-ren hacking eta garapenerako hainbat alderdi "
"dokumentatzen dituena, besteak beste, Jami nola diseinatu den eta bere "
"hainbat atal nola batera lan egiten duten azalduko dituena."
#: ../../../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 ""
"Jami-ren garatzaileen eskuliburuan, Jami-k nola lan egiten duen ikasiko duzu"
" maila goretik beheraino, adibide batzuekin."
#: ../../../developer/introduction.md:7
msgid "Table of contents"
msgstr "Edukien zerrenda"
#: ../../../developer/introduction.md:9
msgid "{doc}`apis-of-jami`"
msgstr "♪ Ez dut uste ♪"
#: ../../../developer/introduction.md:10
msgid "Basic features"
msgstr "Oinarrizko ezaugarriak"
#: ../../../developer/introduction.md:11
msgid "{doc}`account-management`"
msgstr "Kontuak kudeatzea"
#: ../../../developer/introduction.md:12
msgid "{doc}`contact-management`"
msgstr "Kontaktu-kudeaketa"
#: ../../../developer/introduction.md:13
msgid "{doc}`swarm`"
msgstr "♪ Ez dut uste ♪"
#: ../../../developer/introduction.md:14
msgid "{doc}`calls`"
msgstr "♪ Deitzen zaituztet ♪"
#: ../../../developer/introduction.md:15
msgid "{doc}`file-transfer` (deprecated; see {doc}`swarm`)"
msgstr "{doc}`file-transfer ` (depreciatuta; ikus {doc}`swarm`)"
#: ../../../developer/introduction.md:16
msgid "{doc}`message-displayed-status`"
msgstr "{doc}`mezu-estatu-irudi-"
#: ../../../developer/introduction.md:18
msgid "Advanced features"
msgstr "Funtzio aurreratuak"
#: ../../../developer/introduction.md:19
msgid "Manage audio/videos"
msgstr "Audio edo bideoak kudeatu"
#: ../../../developer/introduction.md:20
msgid "Call recording"
msgstr "Deien grabaketa"
#: ../../../developer/introduction.md:21
msgid ""
"[The push notifications "
"system](https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
"support)"
msgstr ""
"[Push-notifikazio "
"sistema]https://github.com/savoirfairelinux/opendht/wiki/Push-notifikazioak-"
"laguntza)"
#: ../../../developer/introduction.md:22
msgid "What is a DHTProxy"
msgstr "Zer da DHTProxy bat?"
#: ../../../developer/introduction.md:23
msgid "Supporting SIP"
msgstr "SIPren laguntza"
#: ../../../developer/introduction.md:24
msgid "{doc}`setting-up-your-own-turn-server`"
msgstr "Zure zerbitzari propioa."
#: ../../../developer/introduction.md:25
msgid "{doc}`synchronizing-profiles`"
msgstr "{doc}` sinkronizazio-profilak"
#: ../../../developer/introduction.md:27
msgid "{doc}`../contribute`"
msgstr "♪ Ekarri ♪"
#: ../../../developer/introduction.md:28
msgid "{doc}`Build instructions <../build/building>`"
msgstr "{doc}`Irakunde-instrumentuak <../eraikitzeko/eraikitzeko>`"
#: ../../../developer/introduction.md:29
msgid "{doc}`submitting-your-first-patch`"
msgstr "Zure lehen patxa aurkezten"
#: ../../../developer/introduction.md:30
msgid "{doc}`feature-requests`"
msgstr "{doc}` ezaugarri-eskakizunak"
#: ../../../developer/introduction.md:32
msgid "Group chats in details"
msgstr "Talde-txata xehetasunez"
#: ../../../developer/introduction.md:33 ../../../developer/introduction.md:42
msgid "Description"
msgstr "Deskripzioa"
#: ../../../developer/introduction.md:34
msgid "{doc}`connection-manager`"
msgstr "-Eta zer?"
#: ../../../developer/introduction.md:35
msgid "DRT"
msgstr "DNRren"
#: ../../../developer/introduction.md:36
msgid "{doc}`calls-in-swarm`"
msgstr "- Ez, ez."
#: ../../../developer/introduction.md:38
msgid "Drafts"
msgstr "Proiektuak"
#: ../../../developer/introduction.md:39
msgid "{doc}`conference-protocol`"
msgstr "Hitzaldi-protokoloa"
#: ../../../developer/introduction.md:40
msgid "{doc}`synchronization-protocol`"
msgstr "Sinkronizazio-protokoloa"
#: ../../../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 ""
"Hau irakurtzen ari bazara, ziurrenik Jami-ren osagai/proiektu batean parte "
"hartu nahi duzu, edo zure bezeroa gauzatu."
#: ../../../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), p2p komunikazioetarako erabiltzen da. C++ "
"liburutegi edozein bezala interakzioan jardun dezakezu liburutegi honekin, "
"edo Python-en euskarriaren bidez, edo bere [REST API] "
"(https://github.com/savoirfairelinux/opendht/wiki/REST-API) bidez."
#: ../../../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 ""
"Daemon, hau da zatia. Jami-ren logika guztia egiten du eta OpenDHT, pjsip, "
"FFmpeg eta beste liburutegiekin elkarreragiten da, eta protokolo osoa "
"gauzatzen du."
#: ../../../developer/introduction.md:60
msgid "The client part, which is basically the *frontend*."
msgstr "Bezeroaren zatia, funtsean \"frontend\" da."
#: ../../../developer/introduction.md:62
msgid ""
"The developer manual of Jami will explain the different features from all of"
" these layers."
msgstr ""
"Jami-ren garatzaile-gidaritzak azaldu egingo ditu geruza guztietako "
"ezaugarri desberdinak."
#: ../../../developer/jami-identifiers.md:1
msgid "Jami identifiers"
msgstr "Jami identifikatzaileak"
#: ../../../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 ""
"Jami-n identifikatzaile asko daude. Identifikatzaile horien izenak "
"inplementazio guztien artean bateratu behar ditugu. Orrialde honetan Jami-n "
"erabiltzen diren hainbat identifikatzaile mota erreferentzia dira adibide "
"egokiekin."
#: ../../../developer/jami-identifiers.md:8
msgid ""
"**Jami Infohash** or **Jami public key fingerprint** : a public key "
"fingerprint such as `3d1112ab2bb089370c0744a44bbbb0786418d40b`"
msgstr ""
"**Jami Infohash** edo **Jami giltza publikoaren hatz-markak**: hatz-markak, "
"adibidez: `3d1112ab2bb089370c0744a44bb0786418d40b`"
#: ../../../developer/jami-identifiers.md:10
msgid ""
"**Registered name** : a username associated to a Jami Infohash on the "
"blockchain such as `jeandupont`"
msgstr ""
"** Izen erregistratua**: blokean dagoen Jami Infohash bati lotutako "
"erabiltzaile izena, hala nola `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**: Jami edo SIP URI bat, hala nola "
"`jami:3d1112ab2bb089370c0744a44bb0786418d40b` edo `jami:jeandupont` edo "
"`<sip:nnnnn@host:5060>`. [rfc3986]rekin bat egin behar da. "
"[https://tools.ietf.org/html/rfc3986] SIP URI bat bada, [rfc3261#19.1]rekin "
"bat egin behar da. [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 kanonikoa**: `jami:3d1112ab2bb089370c0744a44bb0786418d40b` edo "
"`sip:nnnnn@host:5060`. URIren forma sinplifikatuena. Izen erregistratua "
"ebatzi behar da, ez du <> euskarri edo ikusgai izena barne hartzen."
#: ../../../developer/jami-identifiers.md:16
msgid ""
"**User ID**: registered name (preferred) or public key fingerprint. User-"
"facing identifier for an account public key."
msgstr "**Nire izena edo giltza publikoaren hatz-markak."
#: ../../../developer/jami-identifiers.md:17
msgid ""
"**Display name** or **Profile name** : an editable user-defined profile name"
" such as `Jean Dupont`."
msgstr ""
"**Display izena** edo **Profile izena**: erabiltzailearen arabera definitzen"
" den eta editatu daitekeen profila izena, esaterako `Jean Dupont`."
#: ../../../developer/jami-identifiers.md:20
msgid "When displaying a contact:"
msgstr "Kontaktu bat erakutsiz gero:"
#: ../../../developer/jami-identifiers.md:28
msgid "If Display name is empty, User ID is shown instead"
msgstr "Display izena hutsik badago, erabiltzaile-zenbakia agertzen da."
#: ../../../developer/jami-identifiers.md:29
msgid "If both lines have the same content, only the first line is displayed"
msgstr "Bi lerroek edukia berdina badute, lehen lerroa bakarrik agertzen da"
#: ../../../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 ""
"Argazkirik ez badago eta izen erregistratua (eraztuna) edo displayerako "
"izena (sip) badago, izen horren lehen letrarekin leku-ordena sortzeko erabil"
" daiteke."
#: ../../../developer/jami-identifiers.md:32
msgid ""
"If no photo is available, a placeholder with an Canonical URI-specific "
"background color can be used:"
msgstr ""
"Argazkirik ez badago, Canonical URIren espezifikoak diren atzeko "
"kolorearekin leku-zaintzailea erabil daiteke:"
#: ../../../developer/jami-identifiers.md:57
msgid ""
"Color values are from the material palette: https://material.io/tools/color"
msgstr ""
"Kolore-baloreak material-paletatik datoz: https://material.io/tools/color"
#: ../../../developer/jami-identifiers.md:60
msgid "![références_couleurs_jami](images/jami-reference-colours.png)"
msgstr ""
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ ♪ "
"♪ ♪ ♪ ♪"
#: ../../../developer/jami-identifiers.md:60
msgid "références_couleurs_jami"
msgstr "erreferentziak_couleurs_jami"
#: ../../../developer/location-sharing.md:1
msgid "Location Sharing on QT Client"
msgstr "QT bezeroan kokapena partekatzea"
#: ../../../developer/location-sharing.md:7
msgid "Trivial use"
msgstr "Erabilera txikia"
#: ../../../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 ""
"Elkarrizketa batean, erabiltzaileak kokapen ikonoan klik egin dezake mapa "
"bat erakusteko. `Location Services` gailuan aktibatzen bada, "
"erabiltzailearen kokapena erakutsiko da mapan, bere kokapena partekatzen ari"
" diren beste kide guztien kokapenak ere bai (aukeratutako kontuaren "
"elkarrizketa guztietatik)."
#: ../../../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 ""
"Erabiltzaile batek elkarrizketan bere kokapena partekatzen duenean, kokapen "
"ikono gorria agertuko da elkarrizketa ikonan. Erabiltzaileak beste kide "
"batengandik kokapena jasotzen badu, kokapen ikono laranja bat agertuko da "
"kideak duen elkarrizketa guztietan."
#: ../../../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 ""
"Erabiltzaileak mapa berriztatze, zoomatu, mugitu eta itxiz interakzio egin "
"dezake."
#: ../../../developer/location-sharing.md:15
msgid "Advanced use"
msgstr "Erabilera aurreratua"
#: ../../../developer/location-sharing.md:17
msgid "Multi-sharing"
msgstr "Banaketa anitza"
#: ../../../developer/location-sharing.md:19
msgid "scenario"
msgstr "Eszenarioak"
#: ../../../developer/location-sharing.md:21
msgid ""
"The user is already sharing location with conversation A and conversation B."
msgstr ""
"Erabiltzaileak dagoeneko A eta B elkarrizketekin leku partekatzen ari da."
#: ../../../developer/location-sharing.md:23
msgid "Feature"
msgstr "Funtzioa"
#: ../../../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 ""
"Erabiltzaileak C elkarrizketara pasatzen bada, mapa oraindik ikusgai dago "
"eta erabiltzaileak bi aukera ditu"
#: ../../../developer/location-sharing.md:27
msgid ""
"Click on the location sharing button to also share location with the members"
" of conversation C."
msgstr ""
"Sakatu kokapen partekatzeko botoia C elkarrizketako kideekin ere "
"partekatzeko."
#: ../../../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 ""
"Sakatu kokapen partekatzearen bukaerako botoia. Honek agertuko da agerraldi "
"bat, erabiltzaileari ahalbidetzen diona kokapen partekatzea erabat itzaltzea"
" edo C elkarrizketako kideekin kokapena partekatzeari uztea soilik."
#: ../../../developer/location-sharing.md:30
msgid "Pinned window"
msgstr "Leiho zapiak"
#: ../../../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 ""
"Leihoa desblokeatuta badago, erabiltzaileak ezin izango du kokapen "
"partekatzeko botoia sakatu, leihoa ez delako jada konektatuta "
"elkarrizketarekin. Jende berriarekin kokapena partekatzeko, erabiltzaileak "
"leihoa berriro sakatu behar du. Kontuan izan leihoa desblokeatzeak ez duela "
"kokapen partekatze jarraian eragiten. Gainera, leihoa desblokeatuta dagoen "
"bitartean kokapen partekatzeko bukaerako botoia sakatzeak kokapen partekatze"
" guztiak geldituko ditu eta ez da agertuko agerraldi bat erabiltzaileari "
"elkarrizketa jakin bat aukeratzeko aukera emango diona."
#: ../../../developer/location-sharing.md:34
msgid "Multi accounts"
msgstr "Kontu asko"
#: ../../../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 ""
"Kontu bakoitzak bere mapa berezia du. Erabiltzaileak mapa A kontuan zegoela "
"deskargatzen badu, eta gero B kontuan pasatzen bada eta mapa deskargatzen "
"badu, bi mapa agertuko dira. A eta B kontuan dauden mapak elkarren artean "
"partekatzen diren posizioak erakusten dituzte, hurrenez hurren, eta guztiz "
"bereizita daude."
#: ../../../developer/location-sharing.md:44
msgid "This feature is divided into three parts:"
msgstr "Funtzio hau hiru zatitan banatuta dago:"
#: ../../../developer/location-sharing.md:46
msgid "Sending one's position"
msgstr "Norberaren posizioa bidaltzen."
#: ../../../developer/location-sharing.md:47
#: ../../../developer/location-sharing.md:78
msgid "Receiving a position"
msgstr "Postua jasotzen"
#: ../../../developer/location-sharing.md:48
#: ../../../developer/location-sharing.md:89
msgid "Displaying a position"
msgstr "Postu bat erakutsi"
#: ../../../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 ""
"Kokapena zehazteko, [Qt posizionamendua] "
"(https://doc.qt.io/qt-6/qtpositioning-index.html) API erabiltzen da. "
"Kokapena zehaztutakoan, DHTn mezu gisa bidaltzen da eta bezeroari igortzen "
"zaio. Hartuen kokapena gero [OpenLayers] (https://openlayers.org/) "
"JavaScript liburutegia erabiliz agertzen da."
#: ../../../developer/location-sharing.md:53
msgid "Sending a position"
msgstr "Postua bidaltzen"
#: ../../../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 ""
"Mapa irekitzean, `Positioning` klaseak egungo posizioa berreskuratzen du "
"`QGeoPositionInfoSource` modulearen `QtPositioning` klasea erabiliz."
#: ../../../developer/location-sharing.md:61
msgid ""
"Locally through the `localPositionReceived` signal so that the user can see "
"their own position"
msgstr ""
"Tokikoz, `localPositionReceived` seinalearen bidez, erabiltzaileak bere "
"posizioa ikus dezan"
#: ../../../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 ""
"DHT-n elkarrizketa guztiei `positionShareConvIds_` zerrendan. Zerrenda honek"
" erabiltzaileak bere posizioa partekatu nahi dituen elkarrizketa guztien "
"gakoak ditu. Gako honetatik, parte hartzaile guztien URIak lortzen dira eta "
"posizio mezu bat bidaltzen da parte hartzaile bakoitzari."
#: ../../../developer/location-sharing.md:65
msgid "The JSON format of a position is as follows:"
msgstr "JSON formatua da posizio bat:"
#: ../../../developer/location-sharing.md:67
msgid "Type (position or stop message)"
msgstr "Tipoa (posiziazio edo geldialdi mezuak)"
#: ../../../developer/location-sharing.md:68
msgid "Latitude"
msgstr "Latitudua"
#: ../../../developer/location-sharing.md:69
msgid "Longitude"
msgstr "Luzera"
#: ../../../developer/location-sharing.md:70
msgid "Time (unused by the QtClient)"
msgstr "Denbora (QtClientek erabili ez duena)"
#: ../../../developer/location-sharing.md:72
msgid ""
"An example of data: "
"`{\\\"lat\\\":45.51616583988481,\\\"long\\\":-73.620693,\\\"time\\\":1671658862000,\\\"type\\\":\\\"Position\\\"}`"
msgstr ""
"Datuen adibide bat: "
"`{\\\"lat\\\":45.51616583988481,\\\"luzea\\\":-73.620693,\\\"denbora\\\":1671658862000,\\\"motakoa\\\":\\\""
" posizioa\\\"}`"
#: ../../../developer/location-sharing.md:74
msgid ""
"When sending the position to the daemon, the author's URI is also "
"transmitted."
msgstr "Postua deabruari bidaltzen diogunean, egilearen URI ere igortzen da."
#: ../../../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 ""
"Erabiltzaileak bere posizioa elkarrizketarekin partekatzeari uzten dionean, "
"elkarrizketaren IDa `positionShareConvIds_` zerrendatik kentzen da."
#: ../../../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 ""
"Postu bat jasotzen denean, 'onPositionReceived()'slot-a pizten da. "
"`QtPositioning` moduluko tokiko posizioa edo beste kontaktu bateko posizioa "
"izan ala ez. `positionManager` mailan, `objectListSharingUris_` zerrendak "
"bezeroaren posizio guztiak gordetzen ditu."
#: ../../../developer/location-sharing.md:83
msgid "Added (the URI is not present in the list)"
msgstr "gehitu (URI ez dago zerrendan)"
#: ../../../developer/location-sharing.md:84
msgid "Updated (the URI is already present in the list)"
msgstr "Eguneratu (URI dagoeneko zerrendan dago)"
#: ../../../developer/location-sharing.md:85
msgid "Deleted (type = \"Stop\")"
msgstr "Ezabatu (motakoa = \"Gelditu\")"
#: ../../../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 ""
"Postua zerrendan gordetzen da `positionObject` motako objektu baten moduan."
#: ../../../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 ""
"Postu bat jasotzen denean (slot `onPositionReceived() ` aktibatzen denean, "
"posizioa Qml-era igortzen da eta horrek informazioa "
"[OpenLayers]https://openlayers.org/) JavaScript liburutegira bidaltzen du. "
"Qt `WebEngine` modulua liburutegiko web teknologia eta Qml-en arteko zubi "
"bat egiteko aukera ematen du. Postu bakoitza mapa gehitutako geruza batekin "
"irudikatzen da. `newPosition() ` funtzioak geruza berri bat gehitzen du, "
"`updatePosition() ` funtzioak geruza koordinatuak eguneratzen ditu, eta "
"`removePosition() funtzioak geruza kentzen du."
#: ../../../developer/message-displayed-status.md:1
msgid "Message displayed status"
msgstr "Mezuaren egoera"
#: ../../../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 ""
"Bezero bakoitzak, oro har, zein mezu irakurri duen erakutsi behar du eta "
"zenbat mezu irakurri ez diren jakin."
#: ../../../developer/message-displayed-status.md:6
msgid "For this, the daemon provides some APIs:"
msgstr "Horretarako, daemonak API batzuk ematen ditu:"
#: ../../../developer/message-displayed-status.md:8
msgid "Set a message displayed"
msgstr "Jarriko da mezu bat"
#: ../../../developer/message-displayed-status.md:10
msgid "The Configuration manager provides:"
msgstr "Konfigurazio kudeatzaileak honako hauek ematen ditu:"
#: ../../../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 ""
"Mezu bat erakutsi behar da. Elkarrekintza erakutsi eta elkarrizketa hautatu "
"denean egin behar da."
#: ../../../developer/message-displayed-status.md:48
msgid ""
"This sends a SIP messages to connected peers with the following format:"
msgstr ""
"Honek SIP mezuak bidaltzen dizkie konektatuta dauden lagunei, honako "
"formatuan:"
#: ../../../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 ""
"Orduan, bere lagunak jakin egingo du hau `onMessageDisplayed` bidez eta "
"bezeroari seinalea bidaliko dio "
"(`libjami::ConfigurationSignal::AccountMessageStatusChanged` 3 estatusarekin"
" (`libjami::Account::MessageStates::DISPLAYED`))"
#: ../../../developer/message-displayed-status.md:68
msgid "Get unread messages"
msgstr "Irakurri gabeko mezuak jasotzen."
#: ../../../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 ""
"Gure kontuan azken DisplayedMessage ezagutzean, informazio hau eta "
"`ConfigrationManager::countInteractionsSince` erabili ahal izango ditugu, "
"azken mezutik azken mezu bati arte (normalki azkeneko elkarreragilea) "
"elkarrekintza kontatzen dutenak."
#: ../../../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 ""
"Azkeneko mezu bat erakusteko, kide batentzat, "
"`Konfiguration::getConversationMembers` kide bakoitzak azkeneko "
"elkarreragilea izango du `memberInfo[\"azkeneko erakutsi\"]"
#: ../../../developer/message-displayed-status.md:74
msgid "How this information is stored"
msgstr "Informazio hau nola gordetzen den"
#: ../../../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 ""
"`src/jamidht/conversation.cpp` elkarrizketa bakoitzean mapetan gordetzen "
"dira azken mezuak<string, string> (uri, interactionId) eta egitura hau "
"sekuentziatzen da "
"`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
#: ../../../developer/name-server-protocol.md:1
msgid "Name Server protocol"
msgstr "Izenaren zerbitzari protokoloa"
#: ../../../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 ""
"Jami-k izen bat kontsultatzeko eta erregistratzeko erabiltzen duen "
"protokoloa HTTP [REST] "
"(https://en.wikipedia.org/wiki/Representational_state_transfer) API batean "
"oinarritzen da, JSON dokumentuekin eta HTTP egoera-kodekin egiten diren "
"eskaerei erantzuten diona."
#: ../../../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 ""
"Izen zerbitzari publikoa `ns.jami.net`-en dago gordeta eta bloke bat "
"erabiltzen du bere atzeko mutur gisa. Beste inprogramazio batek edozein datu"
" base edo kaxa zerbitzu erabili ahal izango luke, izen zerbitzariaren "
"protokoloa erabilgarria bihurtzen baitu."
#: ../../../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 ""
"Zure izena zerbitzari propioa bada, `username@example.com`-en erabilera-"
"izenaren bila, `username`-a bilatuko duzu `username.com`-en izen "
"zerbitzariarekin."
#: ../../../developer/name-server-protocol.md:19
msgid "Rules on name formatting"
msgstr "Izen formateatzeari buruzko arauak"
#: ../../../developer/name-server-protocol.md:22
msgid ""
"Usernames are checked by a regex to ensure some rules about their format:"
msgstr ""
"Erabiltzaileen izenak regex batek egiaztatzen ditu, formatuaz hitz egiteko "
"arau batzuk ziurtatzeko:"
#: ../../../developer/name-server-protocol.md:25
msgid "Length must be between 3 and 32 characters"
msgstr "Luzera 3 eta 32 karaktere artean egon behar du."
#: ../../../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 "Izen bat eskatzen."
#: ../../../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 "Izen zerbitzari batek ematen duen zerbitzu nagusia da."
#: ../../../developer/name-server-protocol.md:35
#: ../../../developer/name-server-protocol.md:83
#: ../../../developer/name-server-protocol.md:131
msgid "Request"
msgstr "Eskari bat"
#: ../../../developer/name-server-protocol.md:37
msgid ""
"A request for the name `foobar` is a `GET` request with `/name/`*`foobar`* "
"as the URI."
msgstr ""
"Izenaren eskaria `foobar` da `GET` eskaria `/name/`*`foobar`* URI gisa."
#: ../../../developer/name-server-protocol.md:40
#: ../../../developer/name-server-protocol.md:89
#: ../../../developer/name-server-protocol.md:150
msgid "Response (Success)"
msgstr "Erantzuna (Erakutsi)"
#: ../../../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 ""
"Izen hori aurkitzen bada, erantzun bat bidali behar zaio bezeroari, non "
"``content-type` eremu bat dago, `application/json` bezala ezarria."
#: ../../../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 ""
"Gorputza JSON dokumentu bat da, bi string atributu dituena: `name` eta "
"`addr`. `name` eskatutakoarekin bat dator eta `addr` Jami IDren sei hamarren"
" mailako errepresentazioa da, `0x` izenarekin aurreztua."
#: ../../../developer/name-server-protocol.md:50
#: ../../../developer/name-server-protocol.md:98
msgid "In our example, the JSON answer would be:"
msgstr "Gure adibidean, JSONren erantzuna izango litzateke:"
#: ../../../developer/name-server-protocol.md:59
#: ../../../developer/name-server-protocol.md:106
msgid "Response (Not found)"
msgstr "Erantzuna (ez dago aurkitu)"
#: ../../../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 ""
"Izenak ez badu aurkitzen, egoera kodearekin erantzun bat bidali behar zaio "
"bezeroari `404` `Not` `Found`, eta `Content-type` eremu bat jarri zaio "
"`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 ""
"JSON dokumentu bat da eta hari lotutako atributu bat du: `error`. Atributu "
"hau akats mezu batekin betetzen da, akatsaren azalpena azaltzen duena (eta "
"etorkizunean bezeroan ikus daiteke)."
#: ../../../developer/name-server-protocol.md:69
#: ../../../developer/name-server-protocol.md:116
msgid "On the reference implementation, the returned document is:"
msgstr "Erreferentziazko gauzatzeari buruz, itzultzen den dokumentuak:"
#: ../../../developer/name-server-protocol.md:77
msgid "Querying an address"
msgstr "Helbide bat bilatzen"
#: ../../../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 ""
"Zerbitzu hau atzera begiratzen da. Helbide bat eskatzen duzu eta "
"erabiltzaile izena itzultzen da izen zerbitzarian erregistratzen bada."
#: ../../../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 ""
"ID `jami:29347542eb07159f316577e1ae16243d152f6b7b` ` `GET` eskaera da "
"`/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* URI gisa."
#: ../../../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 ""
"Helbideak erabiltzaile izen bat du, eta helbideak erabiltzaile izena du, "
"erantzun bat bidali behar zaio bezeroari, eta bertan ` `content-type` eremua"
" jarri behar da `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 "JSON dokumentu bat da eta jatorri bateko atributu bat du: `name`."
#: ../../../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 ""
"Helbidea ez bada aurkitzen, egoera kodearekin erantzun bat bidali behar zaio"
" bezeroari `404` `Not` `Found`, eta `Content-type` eremu bat jarri behar "
"zaio `application/json`."
#: ../../../developer/name-server-protocol.md:124
msgid "Registering a name"
msgstr "Izen bat erregistratzea"
#: ../../../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 ""
"Protokoloaren zati hau izen/heli bikote berri bat erregistratzeko erabiltzen"
" da. Erregistro publiko nagusian erabiltzen da, baina opzionala izan daiteke"
" pertsonalizatutako martxan jartzean."
#: ../../../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 ""
"Izenaren erregistroa egiteko eskaera `foobar` da `POST` eskaera "
"`/name/`*`foobar`* URI gisa."
#: ../../../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 ""
"Eskariaren gorputza JSON dokumentu bat da, bi string atributuekin: `addr` "
"eta `owner`. `addr` Jami ID du izena izenaz betea."
#: ../../../developer/name-server-protocol.md:141
msgid "An example for `foobar` could be:"
msgstr "`foobar` adibide bat izan daiteke:"
#: ../../../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 ""
"Izen-abizen bikotea arrakastatsua izan bada, egoera-kodea duen erantzuna "
"`200` `OK` bidali beharko zaio bezeroari `Content-type` eremu batekin "
"`application/json` bezala ezarria."
#: ../../../developer/name-server-protocol.md:156
msgid ""
"The body contain a JSON document with 1 boolean attribute `success` set to "
"`true`."
msgstr ""
"Gorputzak JSON dokumentu bat du 1 boolean atributu `success` ` egia `."
#: ../../../developer/name-server-protocol.md:159
msgid "As an example:"
msgstr "Adibidez:"
#: ../../../developer/name-server-protocol.md:167
msgid ""
"Further attempts to query the name or the address should then be successful."
msgstr ""
"Izen edo helbidea galdetzeko beste saiakera arrakastatsua izan beharko "
"litzateke."
#: ../../../developer/name-server-protocol.md:170
msgid "Response (Bad request)"
msgstr "Erantzun txarra (eskabide txarra)"
#: ../../../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 ""
"Erregistroa ezin bada lortu eskaeran akats bat (formatze, falta den "
"atributu, eta abar) dela eta, erantzun bat bidali behar zaio bezeroari, non "
"eskabide-motzeko `` erantzuna `application/json` bezala ezarria den."
#: ../../../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 ""
"JSON dokumentu bat da, bi ezaugarri dituena: `success`, bolea eta `error`, "
"hari bat dena. `success`, `false` eta `error` izendatuta dago, eta akatsaren"
" azalpena azaltzen duen akats mezu batekin betea dago (eta etorkizunean "
"bezeroan erakutsi daiteke)."
#: ../../../developer/name-server-protocol.md:182
msgid "For an invalid formatting of the username, the body could be:"
msgstr "Erabiltzaile-izenaren formatua ez badabil, gorputza izan daiteke:"
#: ../../../developer/name-server-protocol.md:191
msgid "Response (Forbidden)"
msgstr "Erantzun (debekatuta)"
#: ../../../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 ""
"Erregistroa ezin bada lortu izena hartu delako, erantzun bat bidali behar "
"zaio bezeroari, estatu kodearekin `403` `Forbidden`, `Content-type` eremu "
"batekin, `application/json` bezala ezarria."
#: ../../../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 ""
"JSON dokumentu bat da, 3 ezaugarri dituena: `success`, zeinak boolean multzo"
" bat diren `false`, `name` eta `addr`, biak jatorrizko eskaeratik errepikatu"
" diren hariak direnak."
#: ../../../developer/name-server-protocol.md:201
msgid ""
"Registering `foobar`, with it being already registered, would lead to the "
"following response:"
msgstr ""
"Erregistratzeak, dagoeneko erregistratua dagoenez, ondorengo erantzun hau "
"ekarriko luke:"
#: ../../../developer/name-server-protocol.md:212
msgid "Some links"
msgstr "Lotura batzuk."
#: ../../../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`: `ns.jami.net. ` erabiliko den NodeJS "
"inplementazioa erreferentzia da eta Ethereum korapilo bat galdetzen du."
#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:401
msgid "Protocol"
msgstr "Protokoloa"
#: ../../../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 ""
"Kontuaren giltza publikoaren x509 160 biteko hatz-aztarna ohikoari "
"**RingID** deitzen zaio."
#: ../../../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 ""
"Kontuaren ziurtagiriaren subjektuaren UID eremua giltza publikoaren hatz-"
"marken sei hamarren formulara izan behar du."
#: ../../../developer/protocol.md:22
msgid "Persisting the account"
msgstr "Kontua mantentzen"
#: ../../../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 "*Begira [RFC 5280]"
#: ../../../developer/protocol.md:35
msgid ""
"A **device** is defined by an RSA key pair with a key length of at least "
"4096 bits."
msgstr ""
"** gailu bat** gutxienez 4096 biteko giltza luzera duen RSA giltza bikoitza "
"definitzen da."
#: ../../../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 ""
"** gailuaren ziurtagiria** x509 ziurtagiri gisa definitzen da, gaia "
"gailuaren giltza publikoa da, kontu gako pribatu batekin sinatua."
#: ../../../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 ""
"Gailuaren giltza pribatua eta ziurtagiria mantentzea inplementatzea da "
"definitua. Gorde den gailuaren giltza pribatuaren sarbidea autentifikatu "
"behar da. Gailuaren giltza pribatua eskuratzeko autentifikazio metodoa "
"inplementatzea da definitua."
#: ../../../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 "Kontuaren igorpen formatua"
#: ../../../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 ""
"Kontuaren artxibo formatuan kontuko gako pribatua nola sekuentziatu "
"transmisioetarako definitzen da, adibidez gailu berri baten ziurtagiri bat "
"sinatzeko."
#: ../../../developer/protocol.md:62
msgid ""
"The account archive is an encrypted JSON object with the following "
"structure:"
msgstr "Kontuaren artxiboa JSON objektu enkriptatua da, egitura honekin:"
#: ../../../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 ""
"JSON objektuak inplementakzio-definituak diren giltza-balio bikote "
"gehiagorekin izan ditzake."
#: ../../../developer/protocol.md:76
msgid "The string JSON object is encrypted using a key defined as :"
msgstr "JSON objektuak enkriptatuta daude:"
#: ../../../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 ""
"PIN zenbaki aleatorioa da, 32 bitekoa, sei hamarren formakoak, \"+\" string "
"concatenation da, denbora-marka egungo UNIX denbora-marka da, 1200 (20 "
"minutu) bidez banatuta eta pasahitza erabiltzaileak aukeratutako pasahitza "
"da."
#: ../../../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 ""
"PINa erabiltzaileari erakutsi beharko zaio eta gailu fisikoan eskuz kopiatu "
"beharko da pasahitzarekin batera."
#: ../../../developer/protocol.md:90
msgid "Contacting another account"
msgstr "Beste kontu batekin harremanetan jartzea"
#: ../../../developer/protocol.md:93
msgid "ICE descriptor exchange over OpenDHT"
msgstr "ICE deskriptoren trukea OpenDHTren truke"
#: ../../../developer/protocol.md:95
msgid "**Listening for incoming calls**"
msgstr "Entzuten ari naiz."
#: ../../../developer/protocol.md:97
msgid ""
"A device listens for incoming call by performing a listen OpenDHT operation "
"on"
msgstr ""
"Dispositibo batek entzuten du dei iristen ari denari, OpenDHT operazioa "
"egiten du entzuten"
#: ../../../developer/protocol.md:100
msgid "`h(\"callto\"+deviceID)`"
msgstr "\"Deitu\" + \"DeviceID\""
#: ../../../developer/protocol.md:102
msgid ""
"where h is SHA1, \"+\" is the string concatenation and deviceID is the "
"hexadecimal form of the deviceID."
msgstr ""
"non h da SHA1, \"+\" string concatenation eta deviceID da deviceID-aren "
"forma hexadezimala."
#: ../../../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 ""
"Ez diren edo behar bezala sinatu gabeko OpenDHT balioak jasoak utzi behar "
"dira."
#: ../../../developer/protocol.md:110
msgid "**Sending the Initial Offer**"
msgstr "**Hasierako eskaintza bidaltzea**"
#: ../../../developer/protocol.md:112
msgid "*See [RFC 5245](https://tools.ietf.org/html/rfc5245)*"
msgstr "*Begira [RFC 5245]"
#: ../../../developer/protocol.md:114
msgid ""
"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
"for NAT traversal."
msgstr ""
"RFC 5245ek ICE (Interaktiboa Konektatzeko Eraikitzea) definitzen du, NATen "
"zeharkatzeko protokoloa."
#: ../../../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 Jami-n erabiltzen da bi gailuen arteko komunikazio-lerroa ezartzeko."
#: ../../../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 ""
"Dei-tresnak hautagaiak biltzen ditu eta ICEren espezifikazioen arabera "
"eskaintza hasiera bat egiten du eta ICEren negoziazio prozesua abiatzen du."
#: ../../../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 ""
"Dei-tresnak ICEren eskaintza enkriptatua (Hasierako Eskaintza) jartzen du "
"DHT-n h(\"deialdia\"+tresna-ID) non deviceID deitzen den deviceID-aren forma"
" heksadezimala den."
#: ../../../developer/protocol.md:128
msgid "**ICE serialization format**"
msgstr "**ICEren serielizazio formatuan**"
#: ../../../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 ""
"ICE mezuak, dei-desarroketan lankideen artean trukatzen diren mezuak, "
"hurrengo formatuan erabiltzen dira."
#: ../../../developer/protocol.md:134
msgid ""
"This protocol is a compound of msgpack values, successively packed in this "
"order:"
msgstr "Protokolo hau msgpack-eko balioen konbinazioa da, ordenan paketatua:"
#: ../../../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 "ICE mezu formatuaren protokoloaren bertsioa ematen duen zenbaki osoa."
#: ../../../developer/protocol.md:139
msgid ""
"a 2-elements array of strings of the ICE local session ufrag and the ICE "
"local session password"
msgstr "ICEko sesio tokikoak eta ICEko sesio tokiko pasahitza"
#: ../../../developer/protocol.md:140
msgid "an integer giving the number of components in the ICE session"
msgstr "ICEko saioan osagaien kopurua adierazten duen zenbaki osoa"
#: ../../../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 ""
"Soka-marrazki bat, aurreko zenbakien sarreretatik, non senar bakoitzak ICE "
"hautagaiari deskribatzen dion, \"a=\" lerro gisa formatuz (a=\" izenbururik "
"gabe) [rfc5245, 4.3. atalean deskribatuz]"
#: ../../../developer/protocol.md:143
msgid "**Sending the Answer**"
msgstr "Erantzun bat bidaltzen."
#: ../../../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 ""
"ICEren hasierako eskaintza enkriptatua eta sinatua jasota (Entzun "
"operazioaren bidez), dei egindako gailuak dei egindako gailuaren baimena "
"egiaztatu beharko du, hasierako eskaintza sinatzaile gisa identifikatua."
#: ../../../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 ""
"Deia egiten duen gailuak ez badu baimena edo, edozein arrazoi bidez, dei "
"egindako gailuak ez badu sartzen den konexioa eskatzen, dei egindako gailuak"
" ez du jaramonik egin behar hasierako eskaintzari eta ekitaldiari "
"erregistroa egin ahal izango dio."
#: ../../../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 ""
"Deitu duen gailuak dei egiten duenari baimena ematen badio eta konexioa "
"onartu nahi badu, ICE erantzun bat eraiki behar du, ICE negoziazio prozesua "
"hasi eta ICE erantzun enkriptatua eta sinatua DHT gako berean bidali."
#: ../../../developer/protocol.md:161
#: ../../../developer/technical-overview.md:241
msgid "DTLS negotiation"
msgstr "DTLSren negoziazioa"
#: ../../../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 ""
"Behin peer-to-peer komunikazio-kanala ezarri ondoren, deituzko gailuak "
"entzuten du DTLS konexioak sartzen (DTLS zerbitzari gisa jarduten) bitartean"
" deitzailea DTLS konexio irteten (DTLS bezero gisa jarduten) abiatzen da."
#: ../../../developer/protocol.md:168
msgid ""
"The DTLS communication must be RFC6347 compliant "
"([1](https://tools.ietf.org/html/rfc6347))."
msgstr ""
"DTLS komunikazioak RFC6347ren arabera izan behar du "
"([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 ""
"PFS-ko zifrak soilik behar dira babestu. Babestutako zifrak ezarri behar "
"dira, baina gutxienez ECDHE-AES-GCM barne hartu behar dute (TODO: zehaztu "
"babeserako gomendatutako suite zehatzak)."
#: ../../../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 ""
"DTLS esku-harremanetan, bi adiskideek beren gailuaren ziurtagiri kateak eman"
" behar dituzte eta beste adiskideak egiaztatu behar dituzte, bere giltza "
"publikoa DHT ICE trukean erabili denaren egiaztapena egiaztatuz."
#: ../../../developer/protocol.md:179
msgid "SIP call"
msgstr "SIP deialdia"
#: ../../../developer/protocol.md:181
msgid "*See [Important\\_RFC](Important_RFC \"wikilink\")*"
msgstr "*Begira [Gogorrak\\_RFC]"
#: ../../../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 ""
"Behin komunikazio-kanala enkriptatua eta egiaztatua dagoenean, SIP "
"protokoloa [2](https://tools.ietf.org/html/rfc3261) erabili behar da "
"deialdia egiteko eta mezuak bidaltzeko. Deitzaileak SIP INVITATU bat bidali "
"ahal izango du DTLS kanala ezarritakoan."
#: ../../../developer/protocol.md:188
#: ../../../developer/technical-overview.md:277
msgid "The SIP implementation must support ICE and SRTP."
msgstr "SIPren gauzatzeak ICE eta SRTP babestu behar ditu."
#: ../../../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 ""
"Laguntzen diren codec-ak inplementatzeko definituak dira, baina Jami-ko "
"bezeroek Opus audio kodetua eta H264 bideoko codec-a lagundu beharko lukete."
#: ../../../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 erabili behar da SIP-rekin komunikabideak negoziatzen dituenean, "
"komunikabide bakoitzeko eta negoziazio bakoitzeko aukerazko gako berria "
"erabiliz."
#: ../../../developer/protocol.md:197
msgid "Cryptographic primitives"
msgstr "Kriptografiako primitiboak"
#: ../../../developer/protocol.md:200
msgid "Password stretching"
msgstr "Pasahitza luzatzea"
#: ../../../developer/protocol.md:202
msgid ""
"*See [Argon2 specifications](https://github.com/P-H-C/phc-winner-"
"argon2/blob/master/argon2-specs.pdf)*"
msgstr ""
"*Begira [Argon2 espezifikazioak]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 ""
"T\\_cost = 16, m\\_cost = 2\\^16 (64 MiB) erabiliz argon2i erabiliz "
"pasaporteak luzatu egiten dira, mono-ilarra, 512 biteko hash bat sortzeko."
#: ../../../developer/protocol.md:208
msgid ""
"The result is then hashed again using SHA{1, 256, 512} depending on the "
"requested key size."
msgstr ""
"Emaitza berriro hashatzen da SHA{1, 256, 512} erabiliz, eskatutako giltza "
"tamainaren arabera."
#: ../../../developer/protocol.md:211
msgid "Encryption"
msgstr "Enkriptazioa"
#: ../../../developer/protocol.md:213
msgid "Using a provided key (128, 192 or 256 bits)"
msgstr "Eman den giltza bat erabiliz (128, 192 edo 256 bit)"
#: ../../../developer/protocol.md:215
msgid ""
"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
"for each encryption."
msgstr ""
"Enkriptazioa AES-GCM estandar bat erabiltzen da, Nettle-k enkriptazio "
"bakoitzeko IV ausazko bat erabiliz gauzatzen duena."
#: ../../../developer/protocol.md:218
msgid "Using a text password"
msgstr "Gakoa pasahitza erabiltzea da."
#: ../../../developer/protocol.md:220
msgid ""
"The password is stretched to generate a 256 bits key and a random salt of "
"128 bits."
msgstr ""
"Pasahitza luzatu egiten da, 256 biteko gakoa eta 128 biteko gatza sortzeko."
#: ../../../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 ""
"Sarrera-datuak AES-GCM erabiliz enkriptatzen dira (goian ikusi) eta gatza "
"gehitzen da emaitzean dagoen enkriptatutako testuaren hasieran."
#: ../../../developer/protocol.md:226
msgid "During a call"
msgstr "Dei batean"
#: ../../../developer/protocol.md:228
msgid ""
"Audio/video data are exchanged using encrypted RTP channels between peers."
msgstr ""
"Audio/bideo datuak elkarbanatzen dira RTP kanalak enkriptatuta erabiliz."
#: ../../../developer/protocol.md:231
msgid ""
"The protocol is a classic SRTP, with following supported crypto suites:"
msgstr ""
"Protokoloa SRTP klasikoa da, eta honako cripto suite hauek babesten dira:"
#: ../../../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-k AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 edo "
"AES\\_CM\\_128\\_HMAC\\_SHA1\\_32 erabil dezake"
#: ../../../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 ""
"Giltza nagusia eta gatza zenbaki ausazkoak dira, dei bakoitzeko desberdinak."
#: ../../../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 "Qt eta QML kodetzeko estiloa"
#: ../../../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 "Seinalea eta zuloaren izendapena"
#: ../../../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 ""
"Seinaleek eta zuloek camelCase erabili beharko lukete. Seinale batek aditz "
"baten iraganeko denbora edo iraganeko partezakoa erabili beharko luke, "
"ziurrenik subjektu labur batek aurreratua."
#: ../../../developer/qt-qml-coding-style.md:29
#: ../../../developer/qt-qml-testing-tools.md:4
#: ../../../developer/qt-qml-testing-tools.md:105
msgid "QML"
msgstr "QML"
#: ../../../developer/qt-qml-coding-style.md:30
msgid "Code formatting"
msgstr "Kode formateatzea"
#: ../../../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 ""
"Qt 5.15.0 qmlformatuaren bertsioak komentario atalekin zerikusia duen arazo "
"batzuk ditu eta gaur egun ez ditu gehien dituen zutabeak bereizten, beraz, "
"jarraituko dugu jarraibide hauek erabiliz formateatzen oraingoz."
#: ../../../developer/qt-qml-testing-tools.md:1
msgid "Qt and QML testing tools"
msgstr "Qt eta QML probatzeko tresnak"
#: ../../../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 "Google-ren azterketa"
#: ../../../developer/qt-qml-testing-tools.md:80
msgid "Google's c++ test framework."
msgstr "Google-ren C++ test-markoak."
#: ../../../developer/qt-qml-testing-tools.md:82
#: ../../../developer/qt-qml-testing-tools.md:109
msgid "Installation"
msgstr "Instalazioa"
#: ../../../developer/qt-qml-testing-tools.md:83
msgid "Ubuntu / Debian: `apt install googletest libgtest-dev`"
msgstr "Ubuntu / Debian: `apt instalatzeko google test libgtest-dev`"
#: ../../../developer/qt-qml-testing-tools.md:86
#: ../../../developer/qt-qml-testing-tools.md:112
msgid "Example main.cpp"
msgstr "Adibide bat 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 instalatu qml-module-qqtest libqt5quicktest5`"
#: ../../../developer/release-process.md:1
msgid "Release process"
msgstr "Askatu prozesua"
#: ../../../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 "Berrikuspen bakarra ez da konponbidea egoera honetan."
#: ../../../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 "** Prozesuaren fluxua:**"
#: ../../../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 "Redmine txartel bat"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:33
msgid "Repository Preparation"
msgstr "Erregistroak prestatzen"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:38
msgid "Testing"
msgstr "Probak"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:54
msgid "Push tags"
msgstr "Push-eko etiketak"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:178
msgid "Advertisement"
msgstr "Iragarkia"
#: ../../../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 ""
"Ireki Redmine-n lan berria, argitaratze-historiarekin lotuta, eskuineko "
"azpi-modularako."
#: ../../../developer/release-process.md:36
msgid "**This section was outdated and removed**"
msgstr "**Atala zaharkituta dago eta kendu egin dute**"
#: ../../../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 ""
"Hasi git arbola garbiarekin, proiektuaren goi mailako galderatik `git garbi "
"-d -f -x` martxan jarriz."
#: ../../../developer/release-process.md:44
msgid "Build and install the daemon and client, see How\\\\\\_to\\\\\\_build"
msgstr "Eraiki eta instalatzeko daemon eta bezeroa, ikus nola\\\\\\_to\\\\\\_build"
#: ../../../developer/release-process.md:45
msgid ""
"Run the test suite in daemon and client, on different distributions and "
"machines."
msgstr "Probak daemon eta bezeroan egin, banaketa eta makina desberdinetan."
#: ../../../developer/release-process.md:47
msgid "Run manual tests"
msgstr "Eskuzko probak egin"
#: ../../../developer/release-process.md:48
msgid "Try registering and using different accounts."
msgstr "Saiatu kontu desberdinak erregistratzen eta erabiltzen."
#: ../../../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 ""
"Erabiltzen diren balioak, memoria-ihurketak, askatasun ezberdinak, etab. "
"harrapatzeko, egin `valgrind --track-origin=yes --db-attach=yes./bin/dring`"
#: ../../../developer/release-process.md:57
msgid "`git push --tags`"
msgstr "`git bultzatu --tags`"
#: ../../../developer/release-process.md:68
#: ../../../developer/release-process.md:119
msgid "RPM"
msgstr "RPM bat"
#: ../../../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 "Askatu"
#: ../../../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 ""
"Gidoia abian jarri behar da, fitxategiak eta biltegiak sortu, deskargatu eta"
" eguneratu."
#: ../../../developer/release-process.md:121
msgid "vim ring-daemon.spec"
msgstr "Vim ring-daemon. espezifikazioa"
#: ../../../developer/release-process.md:181
msgid ""
"When the packaging is finished, test that they are installable. Then "
"announce the release"
msgstr "Paketea prest dagoenean, probatu instalatu daitezkeenak."
#: ../../../developer/release-process.md:184
msgid "on the official website <https://ring.cx>"
msgstr "Web orri ofizialean <https://ring.cx>"
#: ../../../developer/release-process.md:185
msgid "on Twitter <https://twitter.com/JoinTheRing>"
msgstr "Twitterren <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 ""
"e-mail bidez ring@lists.savoirfairelinux.net helbidera, gaiaren atzean: "
"\"Eraztuna nagusia. Txikia."
#: ../../../developer/setting-up-your-own-turn-server.md:1
msgid "Setting up your own TURN server"
msgstr "Zure TURN zerbitzaria konfiguratzen"
#: ../../../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 konfiguratu daiteke TURN edo STUN zerbitzariak erabiltzeko ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) bi lagunen arteko konexioa "
"ezartzeko."
#: ../../../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 ""
"TURN zerbitzariaren aurreikuspena \"turn.jami.net\" da, erabiltzaile izena "
"\"ring\", pasahitza \"ring\" eta erreinua \"ring\" dituena."
#: ../../../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 ""
"Gidoi honetan, [coturn] zerbitzari bat ezarriko dugu. [TurnServer] eta "
"[Restund] bezalako beste TURN/STUN zerbitzari batzuk ere libre daude."
#: ../../../developer/setting-up-your-own-turn-server.md:17
msgid "Installing"
msgstr "Instalazioa"
#: ../../../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 Linux banaketa gehienetan dago eskuragarri. Debian-en, instalatu hau "
"agindu honekin:"
#: ../../../developer/setting-up-your-own-turn-server.md:25
msgid "Configuring"
msgstr "Konfiguratzea"
#: ../../../developer/setting-up-your-own-turn-server.md:27
msgid "Here is a basic `turnserver.conf` file:"
msgstr "Hemen dago oinarrizko `turnserver.conf` fitxategia:"
#: ../../../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 ""
"STUN zerbitzariak ez du erabiltzaile izena eta pasahitza behar (STUNek banda"
" zabalera oso txikia erabiltzen du)."
#: ../../../developer/setting-up-your-own-turn-server.md:41
msgid "Creating users on your TURN server"
msgstr "Erabiltzaileak sortzen TURN zerbitzarian"
#: ../../../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 ""
"Zure TURN zerbitzarian erabiltzaileak sortzeko, erabili `turnadmin` binaria "
"(horretarako behar da erabiltzaile nagusiaren baimena)."
#: ../../../developer/setting-up-your-own-turn-server.md:50
msgid "Launching the TURN server"
msgstr "TURN zerbitzaria martxan jartzea"
#: ../../../developer/setting-up-your-own-turn-server.md:56
msgid "Configuring Jami to authenticate with the TURN server"
msgstr "Jami-ren egiaztapena egiteko konfiguratzea TURN zerbitzariarekin"
#: ../../../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 ""
"Jarri zure kontuaren konfigurazioaren aurreratu atalean zure TURN "
"zerbitzariaren erabilera egiteko:"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Field"
msgstr "Eremuak"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Value"
msgstr "Balioa"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**server url**"
msgstr "** zerbitzariaren URL**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "host and port of your server"
msgstr "Zure zerbitzariaren ostalaria eta portua"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "0.0.0.0:10000"
msgstr "- Ez, ez."
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**username**"
msgstr "** erabiltzaile izena**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "username"
msgstr "erabiltzaile izena"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "bob"
msgstr "Bob, ez da egia."
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**password**"
msgstr "** Pasahitza**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "password"
msgstr "Pasahitza"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "secretpassword"
msgstr "Pasahitz sekretua"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**realm**"
msgstr "♪ Erreinuak ♪"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "realm"
msgstr "erreinua"
#: ../../../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 "Lehenengo patxa aurkezten"
#: ../../../developer/submitting-your-first-patch.md:4
msgid "Setting up git and ssh"
msgstr "Git eta ssh konfiguratzea"
#: ../../../developer/submitting-your-first-patch.md:6
msgid "(**to work smoothly with Gerrit.**)"
msgstr "Gerritekin ondo lan egiteko."
#: ../../../developer/submitting-your-first-patch.md:9
msgid "first see:"
msgstr "Begiratu lehenik:"
#: ../../../developer/submitting-your-first-patch.md:11
msgid ""
"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the "
"Review>`"
msgstr ""
"<developer/working-with-gerrit:To Create the Review> <developer/working-"
"with-gerrit:Review sortzea>"
#: ../../../developer/submitting-your-first-patch.md:13
msgid "SSH setup"
msgstr "SSHren konfigurazioa"
#: ../../../developer/submitting-your-first-patch.md:15
msgid "https://review.jami.net/Documentation/user-upload.html#ssh"
msgstr "HTTPS: http://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 "Giltza publiko eta pribatu pertsonalak sortzen dira."
#: ../../../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 ""
"Zure identifikazioa `jami_gerrit_review_rsa`. Zure giltza publikoa "
"`jami_gerrit_review_rsa.pub.`."
#: ../../../developer/submitting-your-first-patch.md:25
msgid "Tell gerrit your public key"
msgstr "Esan Gerrit-i giltza publikoa."
#: ../../../developer/submitting-your-first-patch.md:26
msgid ""
"Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-"
"in=>OAuth Gitlab)"
msgstr ""
"Sartu [gerrit]https://review.jami.net) zure Gitlab kontua bidez (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 ""
"Ssh gako-irainpenak jarraitu (zure) erabiltzaile aukerak "
"[errendagarriak]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 "Jarri zure bertako ssh (bidez `ssh-add` edo `~/.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 ""
"Probatu goiko guztiak (ssh zerbitzuan edo saiatu gerrit-en repo bat "
"klonatzen ssh bidez)"
#: ../../../developer/submitting-your-first-patch.md:33
msgid "Your Repository"
msgstr "Zure biltegia"
#: ../../../developer/submitting-your-first-patch.md:35
msgid ""
"This *assumes* you have moved any existing project clone out of the way."
msgstr "Hau da, \"Aurkitzen da\" egungo proiektuen klon guztiak mugitu dituzula."
#: ../../../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 ""
"Klonatu proiektuaren kopia (berria). `git clone "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; adibidez "
"`git clone 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 "Klon hau konfiguratzea tokiko.git/config (hautazkoa)"
#: ../../../developer/submitting-your-first-patch.md:39
msgid "Generate commit Change-Ids aka: commit-msg hook script"
msgstr ""
"Ordezkatu egin behar dira Change-Ids aka: commit-msg kako-eskriptua sortzen"
#: ../../../developer/submitting-your-first-patch.md:42
msgid "A shell script, to be installed to .git/hooks/commit-msg."
msgstr "Shell-eko gidoia,.git/hooks/commit-msg-n instalatzeko."
#: ../../../developer/submitting-your-first-patch.md:45
msgid ""
"The script creates a unique Change_Id:hash for each commit made from your "
"repository."
msgstr ""
"Gidoia Change_Id:hash bat sortzen du zure biltegiaren bidez egindako commit "
"bakoitzeko."
#: ../../../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 ""
"Lehen aldia da bultzada bat egiten saiatzen zarenean `git bultzada jatorria "
"berrikusteko HEAD:refs/for/master`, gerritek Change-Id falta sumatuko du."
#: ../../../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 "Gerritek kopiak egiteko sarea ere aurkeztuko du."
#: ../../../developer/submitting-your-first-patch.md:55
msgid "References"
msgstr "Erreferentziak"
#: ../../../developer/submitting-your-first-patch.md:58
msgid ""
"[Some Gritty Details](https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
msgstr ""
"[Gritty Details batzuk]https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
#: ../../../developer/submitting-your-first-patch.md:62
msgid "Original author: *Peter Gossner*"
msgstr "Jatorrizko egileak:"
#: ../../../developer/swarm.md:1
msgid "Swarm"
msgstr "Ipurdi-zuloa"
#: ../../../developer/swarm.md:3
msgid "Synospis"
msgstr "Sinospis"
#: ../../../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 ""
"Dokumentu honen helburua da taldekideen elkarrizketak (**swarm chat**) nola "
"gauzatuko diren azaltzea Jami-n."
#: ../../../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 ""
"Talde bat da, autoritate zentralik gabe modu jasangarri batean "
"eztabaidatzeko gai dena. Izan ere, bi pertsonak ez badute loturarik beste "
"taldearekin (Internet itzalita) baina elkarri harremanetan jarri ahal izango"
" dira (LAN batean adibidez edo azpi-sare batean), mezuak bidaltzeko gai "
"izango dira eta, ondoren, posible denean, taldearen gainerakoekin "
"sinkronizatu ahal izango dira."
#: ../../../developer/swarm.md:9
msgid "So, the *swarm* is defined by:"
msgstr "Beraz, *swarm* hau da:"
#: ../../../developer/swarm.md:10
msgid "Ability to split and merge following the connectivity."
msgstr "Konektatuta dagoenean banatzeko eta batzeko gaitasuna."
#: ../../../developer/swarm.md:11
msgid ""
"Syncing of the history. Anyone must be able to send a message to the whole "
"group."
msgstr "Denek jakin behar dute talde osoari mezu bat bidaltzeko."
#: ../../../developer/swarm.md:12
msgid "No central authority. Can not rely on any server."
msgstr ""
"Ez dago autoritate zentralik, ez dago zerbitzari batengan konfiantzarik."
#: ../../../developer/swarm.md:13
msgid ""
"Non-repudiation. Devices must be able to verify old messages' validity and "
"to replay the whole history."
msgstr ""
"Tresnak mezu zaharren balioa egiaztatzeko gai izan behar dute eta historia "
"osoa errepikatu."
#: ../../../developer/swarm.md:14
msgid "PFS on the transport. Storage is managed by the device."
msgstr "Gailuak kudeatzen du biltegiratzea."
#: ../../../developer/swarm.md:16
msgid ""
"The main idea is to get a synchronized Merkle tree with the participants."
msgstr "Ideia nagusia Merkle zuhaitz bat lortzea da."
#: ../../../developer/swarm.md:18
msgid "We identified four modes for swarm chat that we want to implement:"
msgstr "Lau modu identifikatu ditugu, txateatzeko:"
#: ../../../developer/swarm.md:19
msgid ""
"**ONE_TO_ONE**, basically the case we have today when you discuss to a "
"friend"
msgstr "Gaurko kasuaren arabera, lagun batekin hitz egiten duzu."
#: ../../../developer/swarm.md:20
msgid ""
"**ADMIN_INVITES_ONLY** generally a class where the teacher can invite "
"people, but not students"
msgstr ""
"**Admin_INVITES_ONLY** irakasleak jendea gonbidatu dezakeen klasea da, baina"
" ez ikasleak"
#: ../../../developer/swarm.md:21
msgid "**INVITES_ONLY** a private group of friends"
msgstr "Lagun talde pribatu bat gonbidatzen du."
#: ../../../developer/swarm.md:22
msgid "**PUBLIC** basically an opened forum"
msgstr "Foro irekia da."
#: ../../../developer/swarm.md:24
msgid "Scenarios"
msgstr "Eszenarioak"
#: ../../../developer/swarm.md:26
msgid "Create a Swarm"
msgstr "Sorgindu talde bat"
#: ../../../developer/swarm.md:28
msgid "*Bob wants to create a new swarm*"
msgstr "Bobek talde berri bat sortu nahi du."
#: ../../../developer/swarm.md:30
msgid "Bob creates a local git repository."
msgstr "Bobek tokiko datu-basea sortzen du."
#: ../../../developer/swarm.md:31
msgid "Then, he creates an initial signed commit with the following:"
msgstr "Ondoren, hasierako konpromisoa sinatzen du honekin:"
#: ../../../developer/swarm.md:32
msgid "His public key in `/admins`"
msgstr "Giltza publikoa `/admins `"
#: ../../../developer/swarm.md:33
msgid "His device certificate in ̀ /devices`"
msgstr "Bere gailuaren ziurtagiria ̀ /gailuetan"
#: ../../../developer/swarm.md:34
msgid "His CRL in ̀ /crls`"
msgstr "Bere CRL-a ̀ /crls`"
#: ../../../developer/swarm.md:35
msgid "The hash of the first commit becomes the **ID** of the conversation"
msgstr "Lehen konpromisoaren hash-a elkarrizketaren ID-a bihurtzen da."
#: ../../../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 ""
"Bobek bere gailuetan iragartzen du elkarrizketa berri bat sortzen duela."
#: ../../../developer/swarm.md:38
msgid "Adding someone"
msgstr "Norbait gehitzen."
#: ../../../developer/swarm.md:40
msgid "*Alice adds Bob*"
msgstr "Alice Bobekin dago."
#: ../../../developer/swarm.md:42
msgid "Alice adds Bob to the repo:"
msgstr "Alice-k Bob gehitzen du erreposatuari:"
#: ../../../developer/swarm.md:43
msgid "Adds the invited URI in `/invited`"
msgstr "Gonbidatuen URI gehitzen da `/invited`"
#: ../../../developer/swarm.md:44
msgid "Adds the CRL into `/crls`"
msgstr "CRL gehitzen da `/crls`"
#: ../../../developer/swarm.md:45
msgid "Alice sends a request on the DHT"
msgstr "Alice-k DHTren eskaera bat bidaltzen du."
#: ../../../developer/swarm.md:47
msgid "Receiving an invite"
msgstr "Gonbidapena jasotzea"
#: ../../../developer/swarm.md:49
msgid "*Alice gets the invite to join the previously create swarm*"
msgstr ""
"Alice-k gonbidapena jasotzen du lehen sortu zuen sorburuarekin bat egiteko."
#: ../../../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 ""
"Gonbidapena onartzen du (baztertuz gero, ez egin ezer, gonbidatua izango da "
"eta Alice-k ez du inoiz mezuik jasoko)"
#: ../../../developer/swarm.md:52
msgid "A peer-to-peer connection between Alice and Bob is done."
msgstr "Alice eta Boben arteko lotura bat dago."
#: ../../../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-k Bob-en erreponbidea atera du."
#: ../../../developer/swarm.md:54
msgid "Alice validates commits from Bob"
msgstr "Alice-k Bob-en konpromisoak onartzen ditu."
#: ../../../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 ""
"Alice kide dela baieztatzeko, gonbidapena `/invited` galderatik kentzen du, "
"eta ondoren bere ziurtagiria `/members` galderara gehitzen du."
#: ../../../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 ""
"Behin konpromiso guztiak egiaztatu eta bere gailuan, taldeko beste kideak "
"Alice-k aurkitu ditu."
#: ../../../developer/swarm.md:58
msgid "Sending a message"
msgstr "Mezu bat bidaltzen"
#: ../../../developer/swarm.md:60
msgid "*Alice sends a message*"
msgstr "Alice-k mezu bat bidaltzen du."
#: ../../../developer/swarm.md:62
msgid ""
"Sending a message is pretty simple. Alice writes a commit-message in the "
"following format:"
msgstr "Mezu bat bidaltzea nahiko sinplea da."
#: ../../../developer/swarm.md:64
msgid "**TODO format unclear**"
msgstr "**TDO formatuan ez dago argi**"
#: ../../../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 ""
"eta bere gailua eta CRL erregistroan gehitzen ditu faltan bazaude (besteek "
"konpromisoa egiaztatu behar dute). Fusio gatazkak saihesten dira, gehienbat "
"konpromiso mezuetan oinarritzen garelako, ez fitxategietan (CRLS + "
"ziurtagiriak ez badira aurkitzen). ondoren, konpromiso berria iragartzen du "
"**DRT** bidez zerbitzu mezu batekin (aurrerago azaldu behar da) eta DHT "
"mugikorretarako pings (push jakinarazpena jaso behar dute)."
#: ../../../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 ""
"Beste gailu batzuen ping-ak egiteko, bidaltzaileak beste kideei bidaltzen "
"die SIP mezu bat mimetype = \"application/im-gitmessage-id\" batekin, "
"mezuaren bidaltzailea den \"deviceId\" duen JSON bat duena, elkarrizketa "
"loturiko \"id\" eta \"commit\""
#: ../../../developer/swarm.md:70
msgid "Receiving a message"
msgstr "Mezu bat jasotzen"
#: ../../../developer/swarm.md:72
msgid "*Bob receives the message from Alice*"
msgstr "Bobek Alice-ren mezua jasotzen du."
#: ../../../developer/swarm.md:74
msgid "*Bob* do a git pull on *Alice*"
msgstr "Bobek Alice-ri tiro egin dio."
#: ../../../developer/swarm.md:75
msgid "Commits MUST be verified via a hook"
msgstr "Konpromisoak egiaztatu behar dira kako baten bidez."
#: ../../../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 "Komitxu guztiak baliozkoak badira, komitxuak gorde eta agertzen dira."
#: ../../../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 ""
"Kompromiso guztiak baliogabeak badira, tirazioa bertan behera geratzen da."
#: ../../../developer/swarm.md:79
msgid "Validating a commit"
msgstr "Konpromiso bat egiaztatzea"
#: ../../../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 ""
"Erabiltzaileek nahi ez diren konpromiso batzuk bultzatzea saihesteko "
"(gatazkak, mezu faltsuak, etab.), horrela egin behar da konpromiso bakoitza "
"( Zaharrena berria) urruneko adar bat bildu aurretik:"
#: ../../../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 ""
"Oharra: baieztapenak huts egiten badu, eramaten ez da egiten eta ez dugu "
"adarra batzen (eta datuak kentzen), eta erabiltzaileari jakinarazi behar "
"zaio Oharra2: Eramaten handia bada, ez da egiten (** 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 ""
"Kompromiso bakoitzeko, egiaztatu konpromisoa bidaltzen saiatzen den gailua "
"momentuan baimenduta dagoela eta ziurtagiriak presentzia dutela "
"(gailuarentzako gailuetan eta emiten duenaren kide edo "
"administratzaileetan)."
#: ../../../developer/swarm.md:87
msgid ""
"3 cases. The commit has 2 parents, so it's a merge, nothing more to validate"
" here"
msgstr "Hiru kasu, eta bi guraso ditu."
#: ../../../developer/swarm.md:88
msgid "The commit has 0 parents, it's the initial commit:"
msgstr "Kompromisoak 0 guraso ditu, hasierako konpromisoa da:"
#: ../../../developer/swarm.md:89
msgid "Check that admin cert is added"
msgstr "Administrazio- ziurtagiria gehitu den egiaztatu"
#: ../../../developer/swarm.md:90
msgid "Check that device cert is added"
msgstr "Begiratu gailuaren ziurtagiria gehitu den."
#: ../../../developer/swarm.md:91
msgid "Check CRLs added"
msgstr "Txeke-LHK gehituak"
#: ../../../developer/swarm.md:92
msgid "Check that no other file is added"
msgstr "Begiratu beste fitxategi bat gehitu ez den."
#: ../../../developer/swarm.md:93
msgid "The commit has 1 parent, commit message is a JSON with a type:"
msgstr "commit-ak 1 guraso du, commit-en mezua JSON bat da, tipo batekin:"
#: ../../../developer/swarm.md:94
msgid "If text (or other mime-type that doesn't change files)"
msgstr "Tekstoa (edo beste mime-mota bat, fitxategiak aldatzen ez dituena)"
#: ../../../developer/swarm.md:95
msgid "Check signature from certificate in the repo"
msgstr "Txeke bat sinadura bat ziurtagiri bateko repoan"
#: ../../../developer/swarm.md:96
msgid "Check that no weird file is added outside device cert nor removed"
msgstr ""
"Begiratu ez dagoela fitxategi bitxia gehitu edo kendu gailuaren kanpoan"
#: ../../../developer/swarm.md:97
msgid "If vote"
msgstr "Bozkatuz gero"
#: ../../../developer/swarm.md:98
msgid "Check that voteType is supported (ban, unban)"
msgstr "Begiratu voteType-a babesten den (debekatu, desegin)"
#: ../../../developer/swarm.md:99
msgid "Check that vote is for the user that signs the commit"
msgstr "Begiratu botoa sinatzen duen erabiltzailearentzat."
#: ../../../developer/swarm.md:100
msgid "Check that vote is from an admin and device present & not banned"
msgstr ""
"Begiratu botoa administratzaile batetik eta gailu batetik datorren eta ez "
"debekatuta dagoen."
#: ../../../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 "Begiratu ea fitxategi bitxi bat gehitu edo kendu den."
#: ../../../developer/swarm.md:102
msgid "If member"
msgstr "Batzarkideak"
#: ../../../developer/swarm.md:103
msgid "If adds"
msgstr "gehitzen bada"
#: ../../../developer/swarm.md:104 ../../../developer/swarm.md:110
msgid "Check that the commit is correctly signed"
msgstr "Ziurtatu konpromisoa ondo sinatua dagoela."
#: ../../../developer/swarm.md:105
msgid "Check that certificate is added in /invited"
msgstr "Ziurtatu ziurtagiria / gonbidatua gehitu dela"
#: ../../../developer/swarm.md:107
msgid "If ONE_TO_ONE, check that we only have one admin, one member"
msgstr ""
"One_TO_ONE bada, egiaztatu administratzaile bakarra dugula, kide bakarra"
#: ../../../developer/swarm.md:108
msgid "If ADMIN_INVITES_ONLY, check that invite is from an admin"
msgstr ""
"Admin_INVITES_ONLY bada, egiaztatu gonbidapena administratzaile batena dela"
#: ../../../developer/swarm.md:109
msgid "If joins"
msgstr "Bat egiten badu"
#: ../../../developer/swarm.md:111
msgid "Check that device is added"
msgstr "Begiratu gailua gehitu den."
#: ../../../developer/swarm.md:112
msgid "Check that invitation is moved to members"
msgstr "Ziurtatu gonbidapena kideei pasatzen zaiela."
#: ../../../developer/swarm.md:114
msgid "If banned"
msgstr "Debekatuta badago"
#: ../../../developer/swarm.md:115
msgid "Check that vote is valid"
msgstr "Begiratu botoa balio duen."
#: ../../../developer/swarm.md:116
msgid "Check that the user is ban via an admin"
msgstr "Begiratu erabiltzaileak debekatua dagoela admin baten bidez."
#: ../../../developer/swarm.md:117
msgid "Check that member or device certificate is moved to banned/"
msgstr ""
"Ziurtatu gailuaren edo kidearen ziurtagiria debekatuera pasatzen dela."
#: ../../../developer/swarm.md:118
msgid "Check that only files related to the vote are removed"
msgstr "Begiratu botoarekin lotutako artxiboak bakarrik kentzen diren."
#: ../../../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 ""
"Bestela huts egiten du. erabiltzaileari jakinarazi behar zaio bertsio "
"zaharra izan daitekeela edo bere kideak nahi ez dituen konpromisoak aurkeztu"
" nahi dituela"
#: ../../../developer/swarm.md:123
msgid "Ban a device"
msgstr "Debekatu gailu bat."
#: ../../../developer/swarm.md:125
msgid "*Alice, Bob, Carla, Denys are in a swarm. Alice bans Denys*"
msgstr "Alice, Bob, Carla, Denys talde batean daude."
#: ../../../developer/swarm.md:127
msgid ""
"This is one of the most difficult scenarios in our context. Without central "
"authority we can not trust:"
msgstr "Hau da gure testuinguruaren egoera zailenetakoa."
#: ../../../developer/swarm.md:129
msgid "Timestamps of generated commits"
msgstr "Ordainduak sortutako konpromisoen denbora-markak"
#: ../../../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 ""
"Debekatuta dauden gailuekin gatazkak. Administrazio gailu ugari badaude eta "
"Alice Bobekin hitz egin ahal badu, baina Denys eta Carla ez; Carla Denysekin"
" hitz egin ahal badu; Denysek Alice debekatzen du, Alice Denys debekatzen "
"du, zer egoera izango da 4 kideek elkarrizketak batzen dituztenean."
#: ../../../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 ""
"Gailu bat arriskuan jar daiteke, lapurtu edo bere ziurtagiria iraungi "
"daiteke. Gailu bat debekatu eta gainditu behar dugu bere iraupenaz "
"gezurretan aritzea edo iraganeko mezuak bidaltzea (zerbitzua edo "
"konpromisoaren denbora-markoa aldatzen)."
#: ../../../developer/swarm.md:133
msgid ""
"Similar systems (with distributed group systems) are not so much, but these "
"are some examples:"
msgstr ""
"Antzeko sistemak (talde banatuekin) ez dira asko, baina hauek adibide batzuk"
" dira:"
#: ../../../developer/swarm.md:135
msgid ""
"[mpOTR doesn't define how to ban "
"someone](https://www.cypherpunks.ca/~iang/pubs/mpotr.pdf)"
msgstr "[mpOTRk ez du definitzen nola debekatu norbait]"
#: ../../../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 ""
"Seinaleak, talde-txata egiteko zerbitzari zentralik gabe (EDIT: puntu hori "
"aldatu dute duela gutxi), ez du ematen norbaitek taldetik kanporatzeko "
"gaitasuna."
#: ../../../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 ""
"Bozketa sistema honek gizakien ekintza behar du norbait debekatzeko edo "
"errepositoriotik CRLren informazioan oinarrituko da (ez baitugu kanpoko "
"CRLren konfiantza izan)"
#: ../../../developer/swarm.md:140
msgid "Remove a device from a conversation"
msgstr "Kendu gailua elkarrizketatik"
#: ../../../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 ""
"Hau da elkarrizketa zatitzea saihesteko adostasun bat behar duen zatirik "
"bakarra. Bi kide elkarri ostikoka hasten badira, zer gertatuko da "
"hirugarrenarekin?"
#: ../../../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 ""
"Hau beharrezkoa da desjabetutako gailuak detektatzeko, edo nahi ez diren "
"pertsonak gela publiko batean presentzia saihesteko."
#: ../../../developer/swarm.md:146
msgid "*Alice removes Bob*"
msgstr "Alice Bob kentzen ari da."
#: ../../../developer/swarm.md:148
msgid "Note: Alice MUST be admins to vote"
msgstr "Oharra: Alice zuzendariak izan behar du bozkatzeko."
#: ../../../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 ""
"Lehenengo, Bob-en debekatzearen alde bozkatzen du. Horretarako, fitxategia "
"/votes/ban/members/uri_bob/uri_alice (memberrak gailu bateko gailuek "
"ordezkatu ahalko dituzte, edo gonbidapenerako gonbidatu edo "
"administratzaileentzat) sortzen du eta konpromisoa hartzen du"
#: ../../../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 ""
"Orduan, bozkatzea ebatzi den egiaztatzen du. Horrek esan nahi du "
"administratzaileen %50ek Bob debekatzea onartzen duela (Bob bakarrik badago,"
" %50 baino gehiago da ziur)."
#: ../../../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 ""
"Bozketa ebatzi bada, /votes/ban artxibatuak kendu daitezke, Bob-entzako "
"artxibo guztiak /members, /admins, /invited, /CRLs, /devices-en kendu "
"daitezke (edo soilik /devices-etan galarazi den gailu bat bada) eta Bob-en "
"ziurtagiria /banned/members/bob_uri.crt-en sartu daitezke (edo "
"/banned/devices/uri.crt gailu bat debekatuta badago) eta repo-ra eman."
#: ../../../developer/swarm.md:153
msgid "Then, Alice informs other users (outside Bob)"
msgstr "Orduan, Alice-k beste erabiltzaileei (Bob-etik kanpo)"
#: ../../../developer/swarm.md:155
msgid "*Alice (admin) re-adds Bob (banned member)"
msgstr "Alice (adminak) Bob gehitzen du (kide debekatua)"
#: ../../../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 ""
"Bob debekatzeko bozkatzen duenean, fitxategia "
"/votes/unban/members/uri_bob/uri_alice (memberrak gailu baterako gailuek "
"ordezkatu ahal izango dituzte, edo gonbidapenerako gonbidatu edo "
"administratzaileentzat administratzaile) sortzen du eta konpromisoa hartzen "
"du"
#: ../../../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 ""
"Bozketa ebatzi bada, /bozketa/desbango artxiboak kendu daitezke, Bob-entzako"
" artxibo guztiak /kideetan, /adminsetan, /invitatuetan, /CRLetan, gehitu "
"daitezke (edo bakarrik /aparatuetan debekatu gabeko gailua bada) eta repoari"
" konprometitu."
#: ../../../developer/swarm.md:160
msgid "Remove a conversation"
msgstr "Kendu elkarrizketa bat."
#: ../../../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 ""
"Konpon ezazu konbinatuetan konbinatuak kendu = denbora:: orain() (kontaketan"
" gorde dituen kontaktua kentzea bezala) elkarrizketa kendu eta beste "
"erabiltzaileen gailuekin sinkronizatzea"
#: ../../../developer/swarm.md:163
msgid "Now, if a new commit is received for this conversation it's ignored"
msgstr ""
"Elkarrizketa honetarako konpromiso berri bat jasotzen bada, ez da onartzen."
#: ../../../developer/swarm.md:164
msgid ""
"Now, if Jami startup and the repo is still present, the conversation is not "
"announced to clients"
msgstr ""
"Jami-ren martxan jarriz gero eta erreposak oraindik badaude, ez da "
"elkarrizketa bezeroei iragartzen."
#: ../../../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 ""
"Bi kasu: a. Elkarrizketan beste kide bat ez badago berehala kendu dezakegu "
"biltegia b. Beste kideak badira, konpromisoa hartu elkarrizketa uztea, eta "
"orain itxaron gutxienez beste gailu batek mezu hau sinkronizatzea. Honek "
"saihesten du beste kideek erabiltzailea oraindik kide baliozkoa dela "
"detektatzea eta mezu berriak bidaltzea."
#: ../../../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 ""
"Norbait sinkronizatzen ari dela ziur zaudenean, ezabatu erratua=time::now() "
"eta sinkronizatu beste erabiltzaile baten gailuekin"
#: ../../../developer/swarm.md:169
msgid ""
"All devices owned by the user can now erase the repository and related files"
msgstr ""
"Erabiltzailearen jabetzako gailu guztiek ezabatu ahal izango dituzte "
"artxiboak eta artxiboak."
#: ../../../developer/swarm.md:171
msgid "How to specify a mode"
msgstr "Modua nola zehaztu"
#: ../../../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 ""
"Moduak ezin dira aldatu denboran zehar. Edo beste elkarrizketa bat da. "
"Beraz, datu hauek lehen konpromiso mezuan gordetzen dira. konpromiso mezuak "
"honako hau izango da:"
#: ../../../developer/swarm.md:184
msgid ""
"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
"(INVITES_ONLY), 3 (PUBLIC)"
msgstr ""
"Oraingoz, \"moduak\" balioak onartzen ditu 0 (ONE_TO_ONE), 1 "
"(ADMIN_INVITES_ONLY), 2 (INVITES_ONLY), 3 (PUBLIC)"
#: ../../../developer/swarm.md:186
msgid "Processus for 1:1 swarms"
msgstr "Prozesu bat 1:1 sorta"
#: ../../../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 ""
"Helburua API zaharra (AddContact/removeContact, "
"sendTrustRequest/acceptTrustRequest/discardTrustRequest) mantentzea da, "
"taldekide batekin eta bere kontaktuarekin sorta sortzeko."
#: ../../../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 ""
"Prozesua oraindik berdina da, kontu batek kontaktua gehitu dezake addContact"
" bidez, eta gero TrustRequest bat bidali DHT bidez."
#: ../../../developer/swarm.md:191
msgid ""
"The TrustRequest embeds a \"conversationId\" to inform the peer what "
"conversation to clone when accepting the request"
msgstr ""
"TrustRequest-ek \"konbersazio-Id\" bat txertatzen du lankideari eskaria "
"onartzen duenean zein elkarrizketa klonatzeko."
#: ../../../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 berriro saiatzen dira kontaktua berriro online da. Gaur egun ez"
" da horrela (ez dugu nahi TrustRequest berria sortzeko, orok baztertzen "
"lehen). beraz, kontua konfiantza eskaera jaso bada, automatikoki baztertu "
"egingo da, erlazionatutako elkarrizketa eskaera baztertu bada (convRequests "
"sinkronizatu dira)"
#: ../../../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 ""
"Gero, kontaktu batek eskaera onartzen duenean, sinkronizazio-denbora "
"beharrezkoa da, kontaktuak orain elkarrizketa klonatzeko beharra baitu."
#: ../../../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 ""
"\"Contact\" (deleteContact) kontaktuak eta 1:1 elkarrizketak kenduko ditu "
"(konbertsitate bat kentzeko prozesu berarekin)."
#: ../../../developer/swarm.md:198
msgid "Tricky scenarios"
msgstr "Egoera zail bat"
#: ../../../developer/swarm.md:200
msgid ""
"There are some cases where two conversations can be created. This is at "
"least two of those scenarios:"
msgstr "Badira kasu batzuk non bi elkarrizketa sortu daitezke."
#: ../../../developer/swarm.md:202 ../../../developer/swarm.md:205
msgid "Alice adds Bob"
msgstr "Alice Bob gehitzen ari da."
#: ../../../developer/swarm.md:203
msgid "Bob accepts"
msgstr "Bobek onartzen du."
#: ../../../developer/swarm.md:204
msgid "Alice removes Bob"
msgstr "Alice Bob kentzen ari da."
#: ../../../developer/swarm.md:207
msgid "or"
msgstr "edo"
#: ../../../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 Bob eta Bob gehitzen Alice aldi berean, baina biak ez dira "
"elkarrekin konektatuta"
#: ../../../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 ""
"Kasu honetan, bi elkarrizketa sortzen dira. Ez dugu erabiltzaileen mezuak "
"kentzeko edo elkarrizketa bat aukeratzeko hemen. Beraz, batzuetan, bi 1:1 "
"swarm erakutsiko dira, kide berdinen artean. trantsizio-denboran zehar akats"
" batzuk sortuko ditu (APIa apurtu nahi ez dugunez, ondorioztutako "
"elkarrizketa erakutsitako bi elkarrizketetako bat izango da, baina oraingoz "
"\"ok-ish\", konponduko da bezeroek elkarrizketa ID guztientzat kudeatzen "
"dutenean API (deiak, fitxategi transferentzia, etab.)."
#: ../../../developer/swarm.md:213
msgid "Note while syncing"
msgstr "Oharra sinkronizatzen ari zarenean"
#: ../../../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 ""
"Kontaeraren eskaera onartu ondoren, denbora bat dago daemon-ak urruneko "
"biltegia berreskuratu behar duena."
#: ../../../developer/swarm.md:218
msgid ""
"ConfigurationManager::getConversations() will return the conversation's id "
"even while syncing"
msgstr ""
"ConfigurationManager::getConversations() elkarrizketaren id-a itzuliko du "
"sinkronizatzen ari den bitartean ere"
#: ../../../developer/swarm.md:219
msgid ""
"ConfigurationManager::conversationInfos() will return {{\"syncing\": "
"\"true\"}} if syncing."
msgstr ""
"ConfigurationManager::conversationInfos() sinkronizatzen bada, "
"{{\"sinkronizazioa\": \"egia\"}} itzuliko da."
#: ../../../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() bi URIren mapa itzuliko du "
"(konturen bat eta eskaera bidali duen peer)"
#: ../../../developer/swarm.md:222
msgid "Conversations requests specification"
msgstr "Elkarrizketak zehaztasunaren eskaera"
#: ../../../developer/swarm.md:224
msgid ""
"Conversations requests are represented by a **Map<String, String>** with the"
" following keys:"
msgstr ""
"Elkarrizketa-eskaerak ** Map<String, String>** batekin adierazten dira, eta "
"hauek dira:"
#: ../../../developer/swarm.md:226
msgid "id: the conversation id"
msgstr "ID: elkarrizketa-ID"
#: ../../../developer/swarm.md:227
msgid "from: uri of the sender"
msgstr "Bidaliaren uritik"
#: ../../../developer/swarm.md:228
msgid "received: timestamp"
msgstr "jasota: denbora-markak"
#: ../../../developer/swarm.md:229
msgid "title: (optional) name for the conversation"
msgstr "Izenburua: Elkarrizketaren izena (hautazkoa)"
#: ../../../developer/swarm.md:230
msgid "description: (optional)"
msgstr "deskribapena: (hautazkoa)"
#: ../../../developer/swarm.md:231
msgid "avatar: (optional)"
msgstr "Avatar: (hautazkoa)"
#: ../../../developer/swarm.md:233
msgid "Conversation's profile synchronization"
msgstr "Elkarrizketaren profila sinkronizatzea"
#: ../../../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 ""
"Elkarrizketa bat identifikatu ahal izateko, meta-datuak behar dira, "
"adibidez, izenburua (adibidez: Jami), deskribapena (adibidez: estekak, zein "
"da proiektua, etab.) eta irudia (proiektuaren logoa)."
#: ../../../developer/swarm.md:237
msgid "Storage in the repository"
msgstr "Biltegian gordetzea"
#: ../../../developer/swarm.md:239
msgid ""
"The profile of the conversation is stored in a classic vCard file at the "
"root (`/profile.vcf`) like:"
msgstr ""
"Elkarrizketaren profila vCard fitxategi klasiko batean gordetzen da erro "
"(`/profile.vcf`) honelako:"
#: ../../../developer/swarm.md:249
msgid "Synchronization"
msgstr "Sinkronizazioa"
#: ../../../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 ""
"VCard eguneratzeko, erabiltzaile batek behar dituen beharrezkoak dira "
"(default: =ADMIN) `/profile.vcf`. eta fitxategia mimetype "
"`application/update-profile`. Mezekanismo beraren bidez bidaltzen da mezua "
"eta lagun guztiek jasoko dute **MessageReceived** seinalea daemonetik."
#: ../../../developer/swarm.md:253
msgid "Last Displayed"
msgstr "Azkenekoz agertu"
#: ../../../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 ""
"Datu sinkronizatuak, gailu bakoitzak beste gailu batzuetara bidaltzen ditu "
"elkarrizketen egoera. egoera honetan, azkeneko agertzen dena bidaltzen da."
#: ../../../developer/swarm.md:257
msgid "5 scenarios are supported:"
msgstr "5 eszenario babesten dira:"
#: ../../../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 ""
"Beste gailu batzuek bidalitako azken irudia egungoarekin bat bazaio, ez dago"
" ezer egiteko."
#: ../../../developer/swarm.md:259
msgid ""
"if there is no last displayed for the current device, the remote displayed "
"message is used."
msgstr ""
"gailu egungo azkeneko agerraldia ez bada, urrutiko mezu agerraldia "
"erabiltzen da."
#: ../../../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 ""
"azken urrutiko agerian utzi ez bada erreposan, esan nahi du commit geroago "
"jasoko dela, beraz, cache emaitza"
#: ../../../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 ""
"Urrutiko agintea dagoeneko hartuta badago, egiaztatu behar dugu azkeneko "
"agertu den tokiko agintea aurretik dagoen historia batean ordezkatu ahal "
"izateko."
#: ../../../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 ""
"Azkenik, egile beraren mezu bat iragarri badugu, azkeneko mezuaren "
"egunerapena behar dugu."
#: ../../../developer/swarm.md:264
msgid "Preferences"
msgstr "Atseginak"
#: ../../../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 ""
"Elkarrizketa bakoitzean erabiltzaileak ezarritako nahia gehitu da. "
"Nahiagoenak erabiltzailearen gailuetan sinkronizatzen dira. Hau izan daiteke"
" elkarrizketaren kolorea, erabiltzaileak jakinarazpenak baztertu nahi "
"baditu, fitxategi transferentziaren tamainako muga, etab. Oraingoz, "
"ezagututako gakoak dira:"
#: ../../../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 "\"ez ikusi iragarkiak\" - elkarrizketa honetan mezu berriak ez aipatzeko"
#: ../../../developer/swarm.md:270
msgid "\"symbol\" - to define a default emoji."
msgstr "\"simbulu\" - emoji bat definitzeko."
#: ../../../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 ""
"Maila horretako hautaketak MapStringString pakete batean gordetzen dira, "
"`accountDir/conversation_data/conversationId/preferences`-n gordetzen dira "
"eta erabiltzaile beraren gailuen artean soilik bidaliko dira SyncMsg bidez."
#: ../../../developer/swarm.md:274
msgid "The API to interact with the preferences are:"
msgstr "APIak lehentasunen artean interakzioan jar ditzake:"
#: ../../../developer/swarm.md:294
msgid "Merge conflicts management"
msgstr "Fusioen gatazken kudeaketa"
#: ../../../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 ""
"Bi administratzaileek deskribapena aldi berean alda dezakete, eta horrek "
"bultzada bat eragiten du `profile.vcf`. Kasu honetan, hash handiagoa duen "
"commit (adibidez ffffff > 000000) aukeratuko da."
#: ../../../developer/swarm.md:298
msgid "APIs"
msgstr "APIak"
#: ../../../developer/swarm.md:300
msgid "The user got 2 methods to get and set conversation's metadatas:"
msgstr ""
"Erabiltzaileak bi metodo ditu elkarrizketaren metadata lortzeko eta "
"ezartzeko:"
#: ../../../developer/swarm.md:326
msgid "where `infos` is a `map<str, str>` with the following keys:"
msgstr ""
"non `infos` t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t "
"t t t t"
#: ../../../developer/swarm.md:328
msgid "mode: READ-ONLY"
msgstr "Modua: Irakurketa bakarrik"
#: ../../../developer/swarm.md:329
msgid "title"
msgstr "izenburua"
#: ../../../developer/swarm.md:330
msgid "description"
msgstr "deskribapena"
#: ../../../developer/swarm.md:331
msgid "avatar"
msgstr "Avatar bat"
#: ../../../developer/swarm.md:333
msgid "Re-import an account (link/export)"
msgstr "Kontu bat berriro inportatu (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 ""
"Artxiboak elkarrizketa id eduki behar du, berriro inportatu ondoren "
"elkarrizketa berriak berreskuratzeko (orain ez dago gonbidapenik)."
#: ../../../developer/swarm.md:337
msgid ""
"The conversationId is there, in this case, the daemon is able to re-clone "
"this conversation"
msgstr ""
"Elkarrizketa hor dago, kasu honetan, deabrua gai da elkarrizketa hau berriro"
" klonatzeko."
#: ../../../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 ""
"Elkarrizketa id falta da, beraz, daemonak (mezu baten bidez `{{\"aplikazioa/"
" gonbidapena\", elkarrizketaId}}`) gonbidapen berria eskatzen du "
"erabiltzaileak (berriro) onartu behar duena"
#: ../../../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 ""
"Kontuan izan, elkarrizketa bat bakarrik berreskuratu daiteke kontaktu bat "
"edo beste gailu bat badago, bestela galduko da."
#: ../../../developer/swarm.md:342
msgid "Used protocols"
msgstr "Erabilitako protokoloak"
#: ../../../developer/swarm.md:344
msgid "Git"
msgstr "-Ez."
#: ../../../developer/swarm.md:346
msgid "Why this choice"
msgstr "Zergatik aukeratu duzu?"
#: ../../../developer/swarm.md:348
msgid ""
"Each conversation will be a git repository. This choice is motivated by:"
msgstr "Elkarrizketa bakoitza datu-basea izango da."
#: ../../../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 ""
"Mezuak sinkronizatu eta ordenatu behar ditugu. Merkle Zuhaitza egitura "
"perfektua da horretarako eta adarrak batzean linealizatu daiteke. Gainera, "
"Git-ek erabilera masiboa duelako, erraza da gailuen arteko sinkronizazioa."
#: ../../../developer/swarm.md:351
msgid "Distributed by nature. Massively used. Lots of backends and pluggable."
msgstr ""
"Naturak banatzen du, erabilgarria da, atzekoz aurrera eta konektatu daiteke."
#: ../../../developer/swarm.md:352
msgid "Can verify commits via hooks and massively used crypto"
msgstr ""
"Konpromisoak egiaztatu ditzakezue kakoen bidez eta masiboki erabiltzen den "
"kriptografia"
#: ../../../developer/swarm.md:353
msgid "Can be stored in a database if necessary"
msgstr "Beharrezkoa bada, datu basean gorde daiteke."
#: ../../../developer/swarm.md:354
msgid "Conflicts are avoided by using commit messages, not files."
msgstr "Gatazka saihesten da mezuak erabiltzean, ez fitxategiak."
#: ../../../developer/swarm.md:356
msgid "What we have to validate"
msgstr "Zer baieztatu behar dugu?"
#: ../../../developer/swarm.md:358
msgid "Performance? `git.lock` can be low"
msgstr "Performance? `git.lock ` baxu izan daiteke"
#: ../../../developer/swarm.md:359
msgid "Hooks in libgit2"
msgstr "Libgit2ko kakoak"
#: ../../../developer/swarm.md:360
msgid "Multiple pulls at the same time?"
msgstr "Aldi berean hainbat tiraldi?"
#: ../../../developer/swarm.md:362
msgid "Limits"
msgstr "Mugak"
#: ../../../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 ""
"Elkarrizketa bat ezabatzeko, gailuak elkarrizketa utzi behar du eta beste "
"bat sortu."
#: ../../../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 ""
"Hala ere, mezu iraunkorrak (adibidez mezuak minutu batzuetan irakur "
"daitezkeenak) mezu berezi baten bidez bidal daitezke DRT bidez (adibidez, "
"idazte edo irakurketa jakinarazpenak)."
#: ../../../developer/swarm.md:368
msgid "Structure"
msgstr "Egitura"
#: ../../../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-ek fitxategien transferentzia masiboki aldatzen du. Orain, historia "
"guztia sinkronizatzen ari da, elkarrizketako gailu guztiek fitxategi "
"zaharrak erraz berreskuratzeko aukera ematen baitu. Aldaketek gailuen "
"konektatzeko saiakera bidez, bidaliak beste gailuetan fitxategia bultzatu "
"duen logika batetik (hau txarra izan zen konexioak aldatzen / porrot egiten "
"ez dituelako eta eskuzko berriro saiakera bat behar zuelako) bidaliak beste "
"gailuak deskargatzeko baimena ematen duen logika batera mugitzeko aukera "
"ematen digute. Gainera, fitxategia duen gailuak gailu batzuen ostalaria izan"
" daiteke, bidaliak bertan ez badago ere, fitxategiak berreskuratzeko aukera "
"ematen baitu."
#: ../../../developer/swarm.md:403
msgid ""
"The sender adds a new commit in the conversation with the following format:"
msgstr ""
"Bidaliak elkarrizketan konpromiso berria gehitzen du hurrengo formatuan:"
#: ../../../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 ""
"eta lotura bat sortzen du "
"`${data_path}/conversation_data/${conversation_id}/${file_id}` non "
"`file_id=${commitid}_${value[\"tide\"]}.${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 ""
"Ondoren, hartzaileak fitxategiak deskargatu ditzake fitxategia jasotzen "
"duten gailuekin harremanetan jarriz, kanala irekiz `name=\"data-"
"transfer://\" + conversationId + \"/\" + currentDeviceId() + \"/\" + fileId`"
" eta fitxategiak zain dituen informazioa gordez "
"`${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 ""
"Sarrera jasotzen duen gailuak kanala onartuko du fitxategia bidal daitekeen "
"egiaztatuz (sha3sum zuzena bada eta fitxategia existitzen bada)."
#: ../../../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 ""
"Transferentzia amaitzen denean edo kanala itxi denean, sha3sum egiaztatzen "
"da fitxategia zuzena den egiaztatzeko (edo ezabatzen da)."
#: ../../../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 ""
"Porrot egitean, elkarrizketaren gailu bat berriro martxan jartzen denean, "
"itxaron ditugun fitxategi guztiak modu berean eskatuko ditugu."
#: ../../../developer/swarm.md:423
msgid "Call in swarm"
msgstr "Deitu arrain-sorginari."
#: ../../../developer/swarm.md:425
msgid "TODO: nameserver part"
msgstr "TON: izen zerbitzariaren zatia"
#: ../../../developer/swarm.md:427
msgid "Idea"
msgstr "Ideia bat"
#: ../../../developer/swarm.md:429
msgid ""
"A swarm conversation can have multiple rendez-vous. A rendez-vous is defined"
" by the following uri:"
msgstr "Elkarrizketa multzo batek rendez-vous anitzak izan ditzake."
#: ../../../developer/swarm.md:431
msgid ""
"\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId "
"describes the host."
msgstr ""
"\"accountUri/deviceId/conversationId/confId\" non accountUri/deviceId-ak "
"hartzen duen izena."
#: ../../../developer/swarm.md:433
msgid "The host can be determined via two ways:"
msgstr "Etxebizitza bi moduz zehazten da:"
#: ../../../developer/swarm.md:435
msgid ""
"In the swarm metadatas. Where it's stored like the title/desc/avatar of the "
"room"
msgstr ""
"Metadatak gordeak daude gelako izenburua, mahai-azalaren eta avatarraren "
"antzera."
#: ../../../developer/swarm.md:436
msgid "Or the initial caller."
msgstr "Edo lehen deilaria."
#: ../../../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 ""
"Dei bat hastean, ostalariak konpromiso berria gehituko dio swarmi, URIarekin"
" bat egin behar baitu (accountUri/deviceId/conversationId/confId)."
#: ../../../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 ""
"Parte bakoitzak dei bat hasi dela jakingo du eta dei eginez bat egin dezake."
#: ../../../developer/swarm.md:443
msgid "Attacks?"
msgstr "Erasoak?"
#: ../../../developer/swarm.md:445
msgid "Avoid git bombs"
msgstr "Ez egin bonbak."
#: ../../../developer/swarm.md:447
msgid "Notes"
msgstr "Oharrak"
#: ../../../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 ""
"Konpromiso baten denbora-marka fidagarria da editatzekoa delako. "
"Erabiltzailearen denbora-marka soilik fidagarria da."
#: ../../../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 ""
"Git operazioak, kontrol mezuak, fitxategiak eta beste gauza batzuk P2P TLS "
"v1.3 lotura bat erabiliko dute, PFS bermatzen duten zifrekin."
#: ../../../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 ""
"Mugikorretarako mezuak bidaltzeko (push-oharrazioak pizteko) eta TCP "
"konexioak abiatzeko erabiltzen da."
#: ../../../developer/swarm.md:459
msgid "Network activity"
msgstr "Sarearen jarduera"
#: ../../../developer/swarm.md:461
msgid "Process to invite someone"
msgstr "Norbait gonbidatzeko prozesua"
#: ../../../developer/swarm.md:463
msgid "Alice wants to invite Bob:"
msgstr "Alice-k Bob gonbidatu nahi du:"
#: ../../../developer/swarm.md:465
msgid "Alice adds bob to a conversation"
msgstr "Alice-k Bob gehitzen du elkarrizketara"
#: ../../../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 ""
"Bi aukera bidaltzeko mezua a. Ez bada konektatuta, DHT b. Bestela, Alice "
"bidaltzen SIP kanalean"
#: ../../../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. Gonbidapena jasotzen du, seinalea emititzen da bezeroarentzat b. Ez "
"dago konektatuta, beraz, ez du inoiz eskaria jasoko Alice-k jakin behar "
"duelako Bob-ek Alice-ri kasurik egin ote zion edo blokeatu ote zion."
#: ../../../developer/swarm.md:477
msgid "Process to send a message to someone"
msgstr "Mezu bat bidaltzeko prozesua"
#: ../../../developer/swarm.md:479
msgid "Alice wants to send a message to Bob:"
msgstr "Alice-k mezu bat bidali nahi dio Bob-i:"
#: ../../../developer/swarm.md:481
msgid "Alice adds a message in the repo, giving an ID"
msgstr "Alice-k mezu bat gehitzen du erreposan, nortasun agiria emanez."
#: ../../../developer/swarm.md:482
msgid "Alice gets a message received (from herself) if successful"
msgstr ""
"Alice-k mezu bat jasotzen du (bere buruarengandik) arrakasta izanez gero"
#: ../../../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 ""
"Bi aukera, alice eta bob konektatuta daude edo ez. Bi kasuetan mezu bat "
"sortzen da: { \"aplikazioa/im-git-message-id\" : \"{\"id\":\"$convId\", \" "
"konpromisoa\":\"$commitId\", \"deviceId\": \"$alice_device_hash\"}\"}."
#: ../../../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 ""
"Bobek lau aukera ditu: a. Bob ez dago Alice-rekin konektatuta, beraz, Alice-"
"rekin konfiantza badu, konektatu berri bat eskatu eta b. b. konektatuta "
"badago, Alice-ren bila joan eta mezu berriak jakinarazi c. Bobek ez daki "
"elkarrizketa hori. DHT-tik eskatu gonbidapen bat lortzeko lehenik "
"elkarrizketa hori onartzeko ({\"eskaera/ Gonbidapena\", elkarrizketaId}) d. "
"Bob deskonektatuta dago (ez dago sareik, edo itxi besterik ez da)."
#: ../../../developer/swarm.md:495
msgid "![Diagram: swarm chat classes](images/swarm-chat-classes-diagram.jpg)"
msgstr "[Diagrama: elkarrizketa klaseak]"
#: ../../../developer/swarm.md:495
msgid "Diagram: swarm chat classes"
msgstr "Diagrama: Talde-txate klaseak"
#: ../../../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 ""
#: ../../../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 "**!! Garai Zaharreko Proiektua!!**"
#: ../../../developer/swarm.md:610
msgid ""
"Note: Following notes are not organized yet. Just some line of thoughts."
msgstr "Oharra: Oraindik ez ditugu oharrak antolatu."
#: ../../../developer/swarm.md:612
msgid "Crypto improvements."
msgstr "Krpto-garapenak."
#: ../../../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 ""
"Talde-txata serio baterako, kripto serio bat ere behar dugu. Gaur egungo "
"diseinuarekin, ziurtagiri bat lapurtu bada elkarrizketaren aurreko DHT "
"balioak bezala, elkarrizketa deszifratzeko aukera izango da. Beharbada ** "
"Double ratchet** bezalako zerbaitera joan behar dugu."
#: ../../../developer/swarm.md:616
msgid ""
"Note: a lib might exist to implement group conversations. TODO, investigate."
msgstr "Oharra: lib lib existituko da taldekideen elkarrizketak gauzatzeko."
#: ../../../developer/swarm.md:618
msgid "Needs ECC support in OpenDHT"
msgstr "ECCren laguntza behar du OpenDHT-n"
#: ../../../developer/swarm.md:622
msgid "Add Roles?"
msgstr "Rol gehiago?"
#: ../../../developer/swarm.md:624
msgid "There is two major use case for group chats:"
msgstr "Talde-txateak bi erabilera nagusi dituzte:"
#: ../../../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 ""
"Enpresa batean, kate pribatuekin, eta rol batzuk (admin/espectador/bot/etc) "
"edo hezkuntzarako (hainbat soilik dauden lekuetan)."
#: ../../../developer/swarm.md:627
msgid "Horizontal conversations like a conversation between friends."
msgstr "Elkarrizketa horizontalak lagunen arteko elkarrizketa bezala."
#: ../../../developer/swarm.md:629
msgid "Jami will be for which one?"
msgstr ""
#: ../../../developer/swarm.md:631
msgid "Implementation idea"
msgstr "Erabateko ideia"
#: ../../../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 ""
"Zeregin baterako bandera batekin erabiltzaileak sinatzen dituen talde "
"batentzako ziurtagiria."
#: ../../../developer/swarm.md:635
msgid "Join a conversation"
msgstr "Elkarrizketa baterako."
#: ../../../developer/swarm.md:637
msgid "Only via a direct invite"
msgstr "Gonbidapen zuzen baten bidez bakarrik."
#: ../../../developer/swarm.md:638
msgid "Via a link/QR Code/whatever"
msgstr "Lotura bat edo QR kodea edo dena delakoa."
#: ../../../developer/swarm.md:639
msgid "Via a room name? (a **hash** on the DHT)"
msgstr "Gela baten izenean?"
#: ../../../developer/swarm.md:641
msgid "What we need"
msgstr "Behar duguna"
#: ../../../developer/swarm.md:643
msgid ""
"Confidentiality: members outside of the group chat should not be able to "
"read messages in the group"
msgstr ""
"Konfidentzialtasuna: Talde-txatetik kanpoko kideek ez lukete mezuak "
"irakurriko taldean."
#: ../../../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 ""
"Sekretu aurreratua: taldearen giltza edozein arriskuan jartzen bada, aurreko"
" mezuak konfidentzialak izan behar dute (ahal den neurrian)"
#: ../../../developer/swarm.md:646
msgid "Message ordering: There is a need to have messages in the right order"
msgstr "Mezuen ordenaketa: beharrezkoa da mezuak ordena egokian edukitzea"
#: ../../../developer/swarm.md:647
msgid ""
"Synchronization: There is also a need to be sure to have all messages at "
"soon as possible."
msgstr ""
"Sinkronizazioa: Mezu guztiak ahalik eta lasterren jasotzea ere beharrezkoa "
"da."
#: ../../../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 ""
"Persistentzia: DHTko mezu batek 10 minutu baino ez ditu irauten. DHT mota "
"horretarako kalkulatutako denbora onena delako. Datuak irauteko, nodoak "
"DHTko balioa 10 minutuan behin jarri behar du."
#: ../../../developer/swarm.md:650
msgid "Other distributed ways"
msgstr "Beste banatutako bideak"
#: ../../../developer/swarm.md:652
msgid "IPFS: Need some investigation"
msgstr "Ikerketa batzuk behar ditut."
#: ../../../developer/swarm.md:653
msgid "BitMessage: Need some investigation"
msgstr "Ikerketa batzuk behar ditut."
#: ../../../developer/swarm.md:654
msgid "Maidsafe: Need some investigation"
msgstr "Ikerketa batzuk behar ditut."
#: ../../../developer/swarm.md:656
msgid "Based on current work we have"
msgstr "Gaur egungo lanari jarraituz,"
#: ../../../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 ""
"Talde-txata gailu anitzeko dagoeneko dugun lan beraren arabera izan daiteke "
"(baina hemen, talde-ziurtagiri batekin)."
#: ../../../developer/swarm.md:660
msgid ""
"History sync. This needs to move the database from the client into the "
"daemon."
msgstr "Honekin datu basea bezerotik daimonera mugitu behar da."
#: ../../../developer/swarm.md:661
msgid ""
"If nobody is connected, the synchronization can not be done, and the person "
"will never see the conversation"
msgstr ""
"Inor ez bada konektatuta, sinkronizazioa ezin da egin, eta pertsona ez da "
"inoiz ikusiko elkarrizketa"
#: ../../../developer/swarm.md:663
msgid "Another dedicated DHT"
msgstr "Beste DHT bat."
#: ../../../developer/swarm.md:665
msgid "Like a DHT with a superuser. (Not convinced)"
msgstr "DHT bat bezala super erabiltzaile batekin."
#: ../../../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 ""
"Gaur egun, fitxategi transferentzia algoritmoa TURN konexioan oinarritzen da"
" (ikus {doc}`file-transfer`). Talde handi baten kasuan, hau txarra izango "
"da. Lehenengo eta behin, fitxategi transferentziarako p2p inplement bat "
"behar dugu."
#: ../../../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 ""
"Beste arazo bat: gaur egun ez dago TCP-ren laguntza inplementatzeko PJSIP-en"
" ICE-ren."
#: ../../../developer/swarm.md:673
msgid "Resources"
msgstr "Baliabideak"
#: ../../../developer/swarm.md:675
msgid "https://eprint.iacr.org/2017/666.pdf"
msgstr "\"Eprimatzeko modu bakarra da\"."
#: ../../../developer/swarm.md:676
msgid ""
"Robust distributed synchronization of networked linear systems with "
"intermittent information (Sean Phillips and Ricardo G.Sanfelice)"
msgstr ""
"Sarean dauden sistema linearioen sinkronizazio banatua, informazio tarteekin"
" (Sean Phillips eta Ricardo G. Sanfelice)"
#: ../../../developer/synchronization-protocol.md:1
msgid "Synchronization protocol"
msgstr "Sinkronizazio protokoloa"
#: ../../../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 ""
"Gailu guztiek aukera berriak dituzte, eta gailuen arteko historia "
"sinkronizatu ahal izango da."
#: ../../../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 ""
"Eszenario asko definitu dira {doc}`Swarm diseinu dokumentuan <swarm>`, baina"
" horrek ez du esan nahi erabiltzaile beraren artean elkarrizketak "
"sinkronizatzeko."
#: ../../../developer/synchronization-protocol.md:8
msgid "Old method"
msgstr "Metodo zaharra"
#: ../../../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 ""
"Gailuen sinkronizazioa DHT bidez egin zen. balio bakoitzak 64k gainditu "
"behar ez duelako, ez dira elkarrizketak bidali gailuen sinkronizaziorako, "
"ezta kideen profiletan ere, oso astuna delako."
#: ../../../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 ""
"Metodo zaharrean, daemonak entzuten du \"inbox:DEVICE_ID\" DeviceSync "
"balioak, sinkronizatzeko kontaktuen zerrenda duena (ie. "
"`AccountManager::startSync() `);"
#: ../../../developer/synchronization-protocol.md:14
msgid ""
"**NOTE:** The current **DeviceSync** value present on the **DHT** is "
"deprecated with this draft."
msgstr ""
"** Oharra: ** ** ** ** DHT**-n dagoen egungo ** DeviceSync** balioa "
"zaharkitua dago."
#: ../../../developer/synchronization-protocol.md:16
msgid "New method"
msgstr "Metodo berria"
#: ../../../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 ""
"Jami-k {doc}`ConnectionManager <connection-manager>` duenetik, p2p soketa "
"erabiliz, balio handiekin sinkronizazioa azkar egiteko aukera dago (soketa "
"ez delako datuetan mugatuta dagoelako)"
#: ../../../developer/synchronization-protocol.md:20
msgid "Now, this is the scenario used to sync:"
msgstr "Hau da sinkronizatzeko erabiltzen den eszenatokia:"
#: ../../../developer/synchronization-protocol.md:22
msgid ""
"When the device (*A*) goes online, it announces its presence via a "
"DeviceAnnouncement like the OldMethod"
msgstr ""
"Gailuak (*A*) martxan jartzen denean, bere presentzia iragartzen du "
"OldMethod moduko gailu iragarki baten bidez."
#: ../../../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 ""
"Beste gailu batzuek (*!A*) iragarkia detektatuko dute eta gailu honi "
"eskatuko dio **ConnectionManager** bidez \"sync://DEVICE_ID_A\" izeneko "
"kanala irekitzeko."
#: ../../../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 ""
"Kanala irekitzen denean, kanal hau eskatzen ari den gailuak bere "
"elkarrizketak eta kontaktuak dituen **DeviceSync** balioa bidaliko du (ikus "
"hurrengo zatia)."
#: ../../../developer/synchronization-protocol.md:25
msgid "*A* will check the **DeviceSync** value and:"
msgstr "*A*ek **DeviceSync** balioa egiaztatuko du eta:"
#: ../../../developer/synchronization-protocol.md:26
msgid "Remove contacts if it detects removed contacts"
msgstr "Kendu kontaktuak, kentutako kontaktuak aurkitzen baditu."
#: ../../../developer/synchronization-protocol.md:27
msgid "Add contacts if it detects added contacts"
msgstr "Kontaktua gehitu, kontaktu gehituak aurkitzen baditu"
#: ../../../developer/synchronization-protocol.md:28
msgid "Remove conversations if it detects removed conversations"
msgstr "Kendu elkarrizketak, deskubritzen baditu"
#: ../../../developer/synchronization-protocol.md:29
msgid "Add conversations if it detects added conversations"
msgstr "Gehitu elkarrizketak, elkarrizketa gehituak aurkitzen baditu"
#: ../../../developer/synchronization-protocol.md:30
msgid ""
"Remove conversation's requests if request is accepted (now in "
"conversations)/declined"
msgstr ""
"Kendu elkarrizketaren eskaerak, eskaera onartuta bada (orain "
"elkarrizketetan) / ezeztatuta"
#: ../../../developer/synchronization-protocol.md:31
msgid "Add conversation's requests if detected"
msgstr "Kontaeraren eskaerak gehitu, aurkitzen badituzte"
#: ../../../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 ""
"Oharra: *A*k elkarrizketa berriak detektatzen baditu, elkarrizketa hori "
"iragarri zuen gailuari eskatzen dio errepositorioaren klonazioa egitura-"
"kanala baten bidez egiteko ({doc}`Swarm chat diseinuan deskribatzen den "
"bezala <swarm>`)"
#: ../../../developer/synchronization-protocol.md:35
msgid "Device Sync"
msgstr "Gailuaren sinkronizazioa"
#: ../../../developer/synchronization-protocol.md:37
msgid "This value is a JSON containing:"
msgstr "Balio hau JSON bat da, hau duena:"
#: ../../../developer/synchronization-protocol.md:54
msgid "User stories"
msgstr "Erabiltzaileen istorioak"
#: ../../../developer/synchronization-protocol.md:56
msgid "Sync when adding device"
msgstr "Dispositiboa gehitzerakoan sinkronizatu"
#: ../../../developer/synchronization-protocol.md:58
#: ../../../developer/synchronization-protocol.md:65
#: ../../../developer/synchronization-protocol.md:73
msgid "Alice creates a conversation"
msgstr "Alice elkarrizketa bat sortzen ari da."
#: ../../../developer/synchronization-protocol.md:59
#: ../../../developer/synchronization-protocol.md:66
msgid "(Optional) Alice add some messages"
msgstr "Alice-k mezu batzuk gehitu ditu."
#: ../../../developer/synchronization-protocol.md:60
msgid "Alice adds another device"
msgstr "Alice beste gailu bat gehitzen ari da."
#: ../../../developer/synchronization-protocol.md:61
#: ../../../developer/synchronization-protocol.md:68
msgid ""
"The other device should receives and sync the conversation previously "
"created"
msgstr ""
"Beste gailuak jaso eta sinkronizatu beharko du aurrekoan sortutako "
"elkarrizketa."
#: ../../../developer/synchronization-protocol.md:63
msgid "Sync when connect a device"
msgstr "Diskoa konektatzen denean sinkronizatu"
#: ../../../developer/synchronization-protocol.md:67
msgid "Alice connects another device"
msgstr "Alice beste gailu bat konektatzen ari da."
#: ../../../developer/synchronization-protocol.md:70
msgid "Sync between multiple devices"
msgstr "Gailu askoren arteko sinkronizazioa"
#: ../../../developer/synchronization-protocol.md:72
msgid "Alice got 2 devices"
msgstr "Alice-k bi gailu ditu."
#: ../../../developer/synchronization-protocol.md:74
msgid ""
"The other device should receives and sync the conversation created on one of"
" the devices"
msgstr ""
"Beste gailuak hartu eta sinkronizatu behar du gailuetako batean sortutako "
"elkarrizketa"
#: ../../../developer/synchronization-protocol.md:76
msgid "Sync for detecting new requests"
msgstr "Eskari berriak detektatzeko sinkronizazioa"
#: ../../../developer/synchronization-protocol.md:78
msgid "Alice receives a conversation's request"
msgstr "Alice-k elkarrizketa eskaera jasotzen du."
#: ../../../developer/synchronization-protocol.md:79
msgid "Alice add a new device"
msgstr "Alice-k gailu berri bat gehitu du."
#: ../../../developer/synchronization-protocol.md:80
msgid "The other device should retrieve the requests from device A"
msgstr "Beste gailuak A gailutik jaso behar ditu eskaerak."
#: ../../../developer/synchronization-protocol.md:82
msgid "Sync for accepted requests"
msgstr "Onartu diren eskaeren sinkronizazioa"
#: ../../../developer/synchronization-protocol.md:84
#: ../../../developer/synchronization-protocol.md:90
msgid "Alice has 2 devices"
msgstr "Alice-k bi gailu ditu."
#: ../../../developer/synchronization-protocol.md:85
msgid "Alice accepts a conversation's request"
msgstr "Alice elkarrizketa eskaera onartzen du"
#: ../../../developer/synchronization-protocol.md:86
msgid "The other device should detect the accepted request"
msgstr "Beste gailuak onartutako eskaera antzeman beharko luke."
#: ../../../developer/synchronization-protocol.md:88
msgid "Sync for decline requests"
msgstr "Ezetz eskatzeko eskaeren sinkronizazioa"
#: ../../../developer/synchronization-protocol.md:91
msgid "Alice declines a conversation's request"
msgstr "Alice-k ez du onartzen elkarrizketa eskaera."
#: ../../../developer/synchronization-protocol.md:92
msgid "The other device should detect the declined request"
msgstr "Beste gailuak ezeztatu egin den eskaera detektatu beharko du."
#: ../../../developer/synchronization-protocol.md:94
msgid "Current implementation"
msgstr "Egiteko egungo egintza"
#: ../../../developer/synchronization-protocol.md:96
msgid "{gerrit}`15584` implements this page"
msgstr "{gerrit}`15584` orri hau gauzatzen da"
#: ../../../developer/synchronizing-profiles.md:1
msgid "Profile synchronization"
msgstr "Profilen sinkronizazioa"
#: ../../../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 ""
"Profilak bi motatakoak dira: kontu korrontearentzat egina dagoena eta "
"kontaktuen datuak. VCard honek informazioa dakarenez, hala nola avatarra eta"
" pantaila izena, ahalik eta azkarren sinkronizatu behar da. Baina, "
"beharrezkoa denean bidali behar da, beharrik gabeko datuen igorpenak "
"saihesteko. Profilak gordetzeko erabiltzen den formatua [vCard] da."
#: ../../../developer/synchronizing-profiles.md:5
msgid "Where are stored profiles?"
msgstr "Non gordetzen dira profilak?"
#: ../../../developer/synchronizing-profiles.md:7
msgid "Self"
msgstr "Nire burua"
#: ../../../developer/synchronizing-profiles.md:9
msgid ""
"It's in `${idPath_}/profile.vcf` e.g.: "
"`.local/share/jami/xxxxxx/profile.vcf` on GNU/Linux."
msgstr ""
"`${idPath_}/profile.vcf` adibidez: `.local/share/jami/xxxxxx/profile.vcf` "
"GNU/Linux-en."
#: ../../../developer/synchronizing-profiles.md:11
msgid "Contacts"
msgstr "Kontaktua"
#: ../../../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 ""
"Logika hau oraindik bezero bakoitzeko kudeatzen delako, bezeroaren arabera "
"da."
#: ../../../developer/synchronizing-profiles.md:16
msgid "When a profile is sent"
msgstr "Profil bat bidaltzen denean"
#: ../../../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 "Dei baten hasieran, bezeroak bidezkoa da vCard bidaltzea."
#: ../../../developer/synchronizing-profiles.md:23
msgid "Send to contact's devices"
msgstr "Bidali kontaktuaren gailuetara."
#: ../../../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 ""
"Gailu berri batekin konektatzen denean, SIP edo sinkronizazio kanala egiten "
"da. Kanala prest dagoenean, profila bidali behar den egiaztatzen dugu. "
"Horretarako, profilaren hash-a gailuan dagoenarekin alderatzen da "
"(`${cacheDir}/${accId}/vcard/sha3`, hala nola "
"`~/.cache/jami/xxxxx/vcard/sha3` GNU/Linux-en), eta fitxategia "
"`${cacheDir}/${accId}/vcard/deviceId`."
#: ../../../developer/synchronizing-profiles.md:27
msgid "Multidevices"
msgstr "Gailu multzoak"
#: ../../../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 ""
"Profila bidaltzen bada eta gailua kontu beretik badago, elkarrizketak "
"egiaztatzen dira eta kide guztien profilak bidaltzen ditugu."
#: ../../../developer/technical-overview.md:1
msgid "Technical overview"
msgstr "Azterketa teknikoa"
#: ../../../developer/technical-overview.md:4
msgid "Concepts"
msgstr "Kontzeptuak"
#: ../../../developer/technical-overview.md:7
msgid "Jami Account"
msgstr "Jami Kontua"
#: ../../../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 ""
"**Jami kontua**, **RSAren giltza-par asimetrikoan oinarritutako Jami "
"Identity kriptografiak definitzen du** eta **x.509 ziurtagiriekin kudeatzen "
"da**, *[RFC 5280]"
#: ../../../developer/technical-overview.md:13
msgid ""
"Jami uses the **gnutls** library to generate and manage RSA keys and "
"certificates."
msgstr ""
"Jami-k GnuTLS liburutegia erabiltzen du RSA giltzak eta ziurtagiriak "
"sortzeko eta kudeatzeko."
#: ../../../developer/technical-overview.md:16
msgid "Jami certificate"
msgstr "Jami ziurtagiria"
#: ../../../developer/technical-overview.md:18
msgid "This represents the identify of a Jami user."
msgstr "Hau Jami erabiltzaile baten nortasuna da."
#: ../../../developer/technical-overview.md:19
msgid "Generated at account creation"
msgstr "Kontuak sortzean sortutakoak"
#: ../../../developer/technical-overview.md:20
msgid "Contains the Jami account public key."
msgstr "Jami-ren kontuaren giltza publikoa du."
#: ../../../developer/technical-overview.md:21
msgid ""
"The SHA-1 fingerprint (160-bits) of this public certificate is the "
"**JamiId**."
msgstr "SHA-1 hatz-marka (160 bit) ziurtagiri publiko honen **JamiId** da."
#: ../../../developer/technical-overview.md:23
msgid "Signed by a CA (from an organization or self-signed)."
msgstr "CA batek sinatua (erakunde batetik edo autografoa)."
#: ../../../developer/technical-overview.md:24
msgid "The subject UID field must be the hexadecimal form of the JamiId."
msgstr "Gaiaren UID eremua JamiId-en forma hemezortzigarrena izan behar du."
#: ../../../developer/technical-overview.md:25
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (CA)."
msgstr ""
"Emitentearen identifikazio-eragilearen eremua emitentearen giltza "
"publikoaren hatz-markak (CA) sei hamarren formakoak izan behar du."
#: ../../../developer/technical-overview.md:27
msgid "Random RSA key-pair of at least 4096-bits long."
msgstr "RSAren giltza bikotea, gutxienez 4096 bit luzea."
#: ../../../developer/technical-overview.md:29
msgid "Device certificate"
msgstr "Gailuaren ziurtagiria"
#: ../../../developer/technical-overview.md:31
msgid "This is the identity of one specific device used to run Jami."
msgstr "Hau da Jami exekutatzeko erabili den gailu zehatz baten identitatea."
#: ../../../developer/technical-overview.md:32
msgid "One per device."
msgstr "Bat gailu bakoitzeko."
#: ../../../developer/technical-overview.md:33
msgid "Random and 4096-bits long."
msgstr "Ausazkoak eta 4096 bit luzeak."
#: ../../../developer/technical-overview.md:34
msgid "The SHA-1 fingerprint of the public key becomes the **DeviceId**."
msgstr "Giltza publikoaren hatz-markak, SHA-1, \"DeviceId\" bihurtzen dira."
#: ../../../developer/technical-overview.md:35
msgid "Must be signed by the private key that created the Jami certificate."
msgstr "Jami-ren ziurtagiria sortu zuen giltza pribatuaren sinadura behar du."
#: ../../../developer/technical-overview.md:36
msgid "The subject UID field must be the hexadecimal form of the DeviceId."
msgstr ""
"Gaia UID-aren eremua DeviceId-aren forma hemezortzigarrena izan behar du."
#: ../../../developer/technical-overview.md:37
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (JamiId)."
msgstr ""
"Emitentearen UID-aren eremua emitentearen giltza publikoaren hatz-markak "
"(JamiId) sei hamarren formakoa izan behar du."
#: ../../../developer/technical-overview.md:40
msgid "Usages"
msgstr "Erabilera"
#: ../../../developer/technical-overview.md:42
msgid "The JamiId:"
msgstr "-Jamildek:"
#: ../../../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 ""
"DHT gakoa da, non kontua-tresna-zerrenda argitaratzen den eta non gailu "
"guztiak entzuten diren kontua aldatzen den bitartean sinkronizatzen diren "
"(hau da, gailu bat gehitzea edo bertan behera uztea)."
#: ../../../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 ""
"Jami ziurtagiriaren RSA giltzak erabiltzen dira DHT bidez bidalitako mezuak "
"sinatzeko/zifratzeko/zifratzeko epe luzeko giltza gisa:"
#: ../../../developer/technical-overview.md:48
msgid ""
"private key to sign-off and decrypt incoming messages and device "
"certificates."
msgstr ""
"Giltza pribatua, mezuak eta gailuen ziurtagiriak sinatzeko eta "
"deszifratzeko."
#: ../../../developer/technical-overview.md:50
msgid ""
"public key to encrypt messages (this is done by the message issuer using the"
" receiver public key)."
msgstr ""
"mezuak enkriptatzeko gakoa publikoa (hau mezuaren ematzaileak egiten du "
"hartzailearen gakoa publikoa erabiliz)."
#: ../../../developer/technical-overview.md:52
msgid ""
"A device can be \"removed\" from a Jami account through revocation of the "
"device certificate:"
msgstr ""
"Gailu bat \"baztertu\" daiteke Jami kontuan, gailuaren ziurtagiria bertan "
"behera utzita:"
#: ../../../developer/technical-overview.md:54
msgid ""
"Revoked device certificates are added to one or more standard x509 "
"Certificate Revocation List (CRL)."
msgstr ""
"Deuseztatu diren gailuen ziurtagiriak x509 ziurtagirietako ezeztatze "
"zerrendan (CRL) gehitzen dira."
#: ../../../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 ""
"Deuseztatutako gailuaren CRLak baliozkoak izan behar dute eta CA gakoarekin "
"sinatu behar dira, hau da, Jami kontuan dagoen gako pribatua."
#: ../../../developer/technical-overview.md:59
msgid "Long-term Storage"
msgstr "Epe luzeko biltegiratzea"
#: ../../../developer/technical-overview.md:61
msgid "Why storing data?"
msgstr "Zergatik gordetzen dituzu datuak?"
#: ../../../developer/technical-overview.md:65
msgid ""
"Jami needs to load certificates and key-pairs each time the application is "
"started."
msgstr ""
"Jami-k txostenak eta giltza-parak kargatu behar ditu, eskaera hasten den "
"bakoitzean."
#: ../../../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 ""
"Jami-k gailu berri bat sortzean, informazio hori ere behar da, beste gailu "
"fidagarri batetik modu seguruan partekatzeko."
#: ../../../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 ""
"Plataforma guztiek ez dute datuak gordetzeko modu seguru bat eskaintzen, "
"Jami-k faktura hau babesten du memoriaz kanpo gordetako datuak enkriptatuz "
"(hau da, fitxategi-sistema batean) erabiltzaileak definitutako pasahitza "
"erabiliz kontuak sortzean."
#: ../../../developer/technical-overview.md:76
msgid "These files are stored on user device (see below for details):"
msgstr ""
"Fitxategi hauek erabiltzailearen gailuan gordetzen dira (adierazpen gehiago "
"jasotzeko, ikus hemen behean):"
#: ../../../developer/technical-overview.md:77
msgid "a compressed and encrypted archive with private account data."
msgstr "Kontu pribatuaren datuak dituen artxibo konprimitu eta enkriptatua."
#: ../../../developer/technical-overview.md:78
msgid "the public certificates chain as a CRT file"
msgstr "Txosten publikoen kateak CRT artxibo gisa"
#: ../../../developer/technical-overview.md:79
msgid "the device private key."
msgstr "Giltza pribatua."
#: ../../../developer/technical-overview.md:81
msgid "Jami archive (export.gz)"
msgstr "Jami artxiboa (export.gz)"
#: ../../../developer/technical-overview.md:83
msgid "Contains private account data."
msgstr "Kontu pribatuen datuak ditu."
#: ../../../developer/technical-overview.md:84
msgid ""
"Currently transmitted over the DHT network when device is created or "
"revoked."
msgstr ""
"DHT sarean igortzen da gailua sortzen den edo bertan behera uzten denean."
#: ../../../developer/technical-overview.md:86
msgid "It's a JSON compressed and encrypted file."
msgstr "JSON fitxategi konprimitu eta enkriptatua da."
#: ../../../developer/technical-overview.md:90
msgid "The current format is (could change at any time):"
msgstr "Gaurko formatua (nahi duzunean alda daiteke):"
#: ../../../developer/technical-overview.md:103
msgid "The JSON byte-stream is compressed using \\*gzip\\* algorithm."
msgstr "JSON byte-fluxua konprimitu egiten da \\ * gzip\\ * algoritmoaren bidez."
#: ../../../developer/technical-overview.md:107
msgid ""
"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with a "
"256-bits key."
msgstr ""
"Gero, gzip-fluxua enkriptatzen da AES-GCM-256 zifraren bidez, 256 biteko "
"gako batekin."
#: ../../../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 ""
"Giltza hau erabiltzaileak emandako pasahitza, PIN bat eta ordua markatzen "
"duen zigilua da, [Argon2](https://github.com/P-H-C/phc-winner-argon2) "
"(pasarte luzatzailea eta normalizatzailea) erabiliz, honako hau:"
#: ../../../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 ""
"Erabiltzaileari PINa erakutsi beharko zaio, eta gailuaren sorrera prozesua "
"amaitzeko pasahitza erabiliko da."
#: ../../../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 ""
"Oharra: DHT edo beste edozein lekutan fitxategi bat esportatzen denean, "
"lehenik, daemonak artxiboa eguneratzen du, azken kontaktuak idazteko."
#: ../../../developer/technical-overview.md:129
msgid "Jami device certificate chain (ring\\_device.crt)"
msgstr "Jami gailuaren ziurtagiri katea (ring\\_device.crt)"
#: ../../../developer/technical-overview.md:131
#: ../../../developer/technical-overview.md:137
msgid "PEM format"
msgstr "PEM formatuan"
#: ../../../developer/technical-overview.md:132
msgid ""
"Includes the Device certificate and parent certificates (Jami device "
"certificate and parents)"
msgstr ""
"Gailuaren ziurtagiria eta gurasoen ziurtagiriak barne hartzen ditu (Jami "
"gailuaren ziurtagiria eta gurasoak)"
#: ../../../developer/technical-overview.md:135
msgid "Device private key (ring\\_device.key)"
msgstr "Gailuaren giltza pribatua (ring\\_device.key)"
#: ../../../developer/technical-overview.md:138
msgid "not encrypted, we let the device file-system protect this file"
msgstr "Ez dago enkriptatuta, eta gailuaren artxibo-sistema babesten dugu."
#: ../../../developer/technical-overview.md:140
msgid "The DHT network"
msgstr "DHT sareak"
#: ../../../developer/technical-overview.md:142
msgid ""
"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
" page."
msgstr ""
"Dedicated [ Jami banatutako sare]Ring_distributed_network \"wikilink\") "
"orrialde."
#: ../../../developer/technical-overview.md:145
msgid "Contact Request"
msgstr "Harremanetan jartzeko eskaera"
#: ../../../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 "Berehalako mezua"
#: ../../../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 "Dei irteerak eta irteerak"
#: ../../../developer/technical-overview.md:164
msgid ""
"Contactable addresses (i.e. IP addresses) of the user are given to peer "
"only:"
msgstr ""
"Erabiltzailearen helbide kontaktuak (hau da, IP helbideak) bakarrik ematen "
"dira:"
#: ../../../developer/technical-overview.md:166
msgid "When we call a peer (outgoing call)."
msgstr "Lagun bati dei egiten diogunean."
#: ../../../developer/technical-overview.md:167
msgid "When a **trusted** peer is calling (incoming call)."
msgstr "Lagun fidagarri batek deitzen duenean."
#: ../../../developer/technical-overview.md:168
msgid ""
"All combination forms of how a specific device can be contacted is "
"summarized by a ICE message:"
msgstr ""
"Gailu jakin batekin harremanetan jarri ahal izateko moduen forma konbinatu "
"guztiak ICE mezu batekin laburbiltzen dira:"
#: ../../../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) * ICE (Interaktiboa "
"Konexioa Establishment) definitzen du, NAT bidaiatzeko protokoloa."
#: ../../../developer/technical-overview.md:176
msgid "Making an outgoing call"
msgstr "Dei bat egiten."
#: ../../../developer/technical-overview.md:178
msgid ""
"The calling device gathers candidates and build an **Initial Offer** "
"according to the ICE specifications."
msgstr ""
"Dei-tresnak hautagaiak biltzen ditu eta ICEren espezifikazioen arabera "
"**Hasierako Eskaintza** sortzen du."
#: ../../../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 ""
"Dei-tresnak ICEren eskaintza enkriptatua ( *Original Offer*) jartzen du "
"DHTren: `h(\"`[callto:\"+DeviceID`](callto:%22+DeviceID) `)` non *h* SHA1 "
"da, *+* string concatenation da, *DeviceID* sei hamarren formakoa da."
#: ../../../developer/technical-overview.md:185
msgid ""
"The calling device waits on the peer answer, with its own ICE candidates "
"lists."
msgstr "Dei-tresnak erantzuna zain du, bere ICEko hautagaien zerrendekin."
#: ../../../developer/technical-overview.md:187
msgid ""
"At peer answer reception, the calling device starts the ICE negotiation."
msgstr ""
"Lagun-erantzunen harreran, dei-tresnak ICEren negoziazioa abiatzen du."
#: ../../../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 ""
"Negoziazioak arrakasta izanez gero, prozesua jarraitzen da bezeroaren "
"aldetik DTLS saio-establezimenduan sortu den ICE-ren sarkinaren gainean "
"(horra behean)."
#: ../../../developer/technical-overview.md:192
msgid "Listening for incoming calls"
msgstr "Deiak entzuten."
#: ../../../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 ""
"Gailu batek entzuten ditu datozen deiak, entzun OpenDHT operazioa eginez "
"`h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` non *h* SHA1 da, *+* "
"string concatenation da eta *DeviceID* sei hamarren formakoa da."
#: ../../../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 ""
"ICEren *Hasierako Eskaintza* harreran, deituta dagoen gailuak **** egin "
"behar du bere adiskidearen segurtasun-baldintza-aukera (hortik beherago "
"ikusi)."
#: ../../../developer/technical-overview.md:200
msgid ""
"If the security validation succeed, the called device starts the ICE "
"negotiation."
msgstr ""
"Segurtasun-balizkazioak arrakasta badu, dei egindako gailuak ICEren "
"negoziazioa abiatzen du."
#: ../../../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 ""
"Negoziazioak arrakasta izanez gero, prozesua zerbitzariaren aldean DTLS "
"saioetan abiatzen da sortu den ICE socketaren gainean (horra beherago "
"ikusi)."
#: ../../../developer/technical-overview.md:205
msgid ""
"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
"specified by OpenDHT protocol.*"
msgstr ""
"*Oharra: OpenDHT-k ez diren balioak deskargatzen ditu, ondo enkriptatuak edo"
" sinatuak ez direnak, OpenDHT protokoloak zehaztutako moduan."
#: ../../../developer/technical-overview.md:208
msgid "ICE serialization format"
msgstr "ICEren serielizazio formatuan"
#: ../../../developer/technical-overview.md:210
msgid ""
"ICE messages exchanged between peers during a call set up use following "
"format."
msgstr ""
"ICEren mezuak, lankideen artean elkarbanatzen direnak dei baten bidez, "
"formatua erabiltzen dute."
#: ../../../developer/technical-overview.md:212
msgid ""
"An ICE message is a chunk of binary data, following "
"[msgpack](http://msgpack.org/) data format."
msgstr ""
"ICE mezu bat datu binarioen zatia da, [msgpack] (http://msgpack.org/) datu "
"formatuan."
#: ../../../developer/technical-overview.md:222
msgid "**Current defined protocol is 1**:"
msgstr "**Oraingo protokoloa definituta: 1**:"
#: ../../../developer/technical-overview.md:224
msgid "Security Validation of the Peer"
msgstr "Adiskideen segurtasunaren baieztapenak"
#: ../../../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 ""
"ICEren lehen eskaintza enkriptatua eta sinatua jaso ondoren (Entzun "
"operazioaren bidez), dei egindako gailuak dei egindako gailuaren baimena "
"egiaztatu beharko du, lehen eskaintza sinatzaile gisa identifikatua."
#: ../../../developer/technical-overview.md:230
msgid ""
"Authorization rules are implementation defined, but a typical implementation"
" would authorize known or trusted contacts."
msgstr ""
"Baimena emateko arauak gauzatzeko definituak dira, baina betetze tipiko "
"batek kontaktu ezagunak edo fidagarriak baimenduko lituzke."
#: ../../../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 ""
"ICE protokoloak peer-to-peer komunikazio kanala ezartzen duenean, deituzko "
"gailuak zerbitzari-alde DTLS saioa abiatzen du ICE-ren soketan, eta "
"deitzaileak bezero-alde DTLS saioa abiatzen du ICE-ren soken beste aldean."
#: ../../../developer/technical-overview.md:247
msgid ""
"The DTLS communication is [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compliant using gnutls library."
msgstr ""
"DTLS komunikazioa [RFC6347](https://tools.ietf.org/html/rfc6347) "
"konformatzen da gnutls liburutegia erabiliz."
#: ../../../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 ""
"Deiaren anonimotasunerako testu argian agertzen diren lagunen ziurtagiriak "
"saihesteko, saioaren esku-ahurra bi aldiz egiten da:"
#: ../../../developer/technical-overview.md:253
msgid ""
"A first handshake in **anonymous mode** to create a secure but anonymous "
"transport."
msgstr ""
"Lehen esku-harremana modu anonimoan garraio seguru baina anonimo bat "
"sortzeko."
#: ../../../developer/technical-overview.md:255
msgid ""
"A second handshake in **certificate mode**, over the first one, to prove the"
" identity of peers."
msgstr ""
"Bigarren bostekoa, lehenengoa baino lehen, ** ziurtagiri moduko** esku-"
"hartzea, lagunen nortasuna frogatzeko."
#: ../../../developer/technical-overview.md:258
msgid "Only PFS cipher suites are supported:"
msgstr "PFS enkriptatzeko suiteak bakarrik daude babestuta:"
#: ../../../developer/technical-overview.md:259
msgid ""
"The set of supported cipher suites is implementation defined but should "
"include at least ECDHE-AES-GCM."
msgstr ""
"Laguntzen diren zifratze-sekuen multzoa inplementazio-definitua da, baina "
"gutxienez ECDHE-AES-GCM barne hartu beharko luke."
#: ../../../developer/technical-overview.md:261
msgid "The actual cipher suites (in gnutls form) is:"
msgstr "Giltza-sukiak (gnute formatan) dira:"
#: ../../../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 ""
"Urrats anonimo: `SECURE192:-KX-ALL: +ANON-ECDH: +ANON-DH: +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 ""
"ziurtagiri urratsa: `SECURE192:-VERS-TLS-ALL: +VERS-DTLS-ALL:-RSA: "
"%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION `"
#: ../../../developer/technical-overview.md:267
msgid "SIP signaling"
msgstr "SIP seinalea"
#: ../../../developer/technical-overview.md:269
msgid ""
"Used over the DTLS session to signaling the call (vcard, media negotiation, "
"hangup, instant messaging, ...)"
msgstr ""
"DTLS saioan erabiltzen da deiak seinalatu ahal izateko (vcard, "
"komunikabideen negoziazioa, hangup, mezularitza,...)"
#: ../../../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 ""
"Behin enkriptatuta eta egiaztatuta dagoen peer-to-peer komunikazio-kanal bat"
" eskura dagoenean, [SIP protokoloa]https://tools.ietf.org/html/rfc3261) "
"erabili behar da dei bat egiteko eta mezuak bidaltzeko."
#: ../../../developer/technical-overview.md:275
msgid ""
"The caller might send a SIP INVITE as soon as the DTLS channel is "
"established."
msgstr ""
"Deitzaileak SIP INVITE bat bidal dezake DTLS kanala sortu bezain laster."
#: ../../../developer/technical-overview.md:284
msgid "Presence"
msgstr "Presentzia"
#: ../../../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 "Segurtasuna / Pribatutasuna"
#: ../../../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-k deietarako eta dei mezuetan sekretu perfektua ematen du, dei "
"bakoitzean Eliptic Curve Diffie-Hellman gakoen negoziazioarekin."
#: ../../../developer/technical-overview.md:297
msgid "More informations:"
msgstr "Informazio gehiago:"
#: ../../../developer/technical-overview.md:299
msgid ""
"[Technical overview](technical/Technical-overview) of concepts and protocols"
" inside Jami"
msgstr "[Bisitua teknikoa]Jami-ko kontzeptu eta protokoloen ikuspegi teknikoa"
#: ../../../developer/working-with-gerrit.md:1
msgid "Working with Gerrit"
msgstr "Gerritekin lan egiten"
#: ../../../developer/working-with-gerrit.md:4
msgid "Account Setup"
msgstr "Kontuaren konfigurazioa"
#: ../../../developer/working-with-gerrit.md:6
msgid "Gerrit server: <https://review.jami.net>"
msgstr "Gerrit zerbitzaria: <https://review.jami.net>"
#: ../../../developer/working-with-gerrit.md:7
msgid ""
"User documentation: <https://review.jami.net/Documentation/intro-user.html>"
msgstr ""
"Erabiltzailearen dokumentazioa: "
"<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 "Jami-ren Gerriteko proiektuak: <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 "Sarrera google edo github kontuan edo git.jami.net kontuan"
#: ../../../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 ""
"Halaber, [SSH gako bat igo beharko "
"duzu]https://review.jami.net/settings/#SSHKeys) berrikuspenetarako aldaketak"
" egiteko."
#: ../../../developer/working-with-gerrit.md:12
msgid "Don't forget to select a username."
msgstr "Ez ahaztu erabiltzaile izena hautatzea."
#: ../../../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 ""
"Azkenik, zure git konfigurazioan zehaztutako helbide elektronikoa zure "
"Gerrit kontuan erregistratutako helbide elektronikoarekin bat dator."
#: ../../../developer/working-with-gerrit.md:15
msgid ""
"*Note for Savoir-faire Linux employees: please continue to use your "
"@savoirfairelinux.com email address.*"
msgstr ""
"*Oharra Savoir-faire Linuxeko langileentzat: mesedez, jarraitu zure "
"@savoirfairelinux.com helbide elektronikoa erabiltzen.*"
#: ../../../developer/working-with-gerrit.md:17
msgid "To Know your Git Config"
msgstr "Zure Git konfigurazioa ezagutzeko"
#: ../../../developer/working-with-gerrit.md:19
msgid "`git config --list`"
msgstr "`git konfigurazioa --list"
#: ../../../developer/working-with-gerrit.md:21
msgid "To Test your SSH Access"
msgstr "SSH-rako sarbidea probatzeko"
#: ../../../developer/working-with-gerrit.md:23
msgid ""
"To check that your SSH access is properly setup, run the following command:"
msgstr "SSH sarbidea ondo konfiguratua dagoen egiaztatzeko, egin agindu hau:"
#: ../../../developer/working-with-gerrit.md:25
msgid "`ssh -p 29420 <username>@review.jami.net`"
msgstr "`ssh -p 29420 < erabiltzaile izena>@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> da zure Gerrit erabiltzaile izena, kontuaren sorrerako ezarria "
"izan behar zenuen."
#: ../../../developer/working-with-gerrit.md:44
msgid "Git Configuration"
msgstr "Git konfigurazioa"
#: ../../../developer/working-with-gerrit.md:46
msgid "Gerrit is the official git repository."
msgstr "Gerrit da datu-base ofiziala."
#: ../../../developer/working-with-gerrit.md:48
msgid "To update the configuration"
msgstr "Konfigurazioa eguneratu"
#: ../../../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 ""
"Gerrit-en biltegia erabiltzeko, datu urrunekoak eguneratu behar dituzu."
#: ../../../developer/working-with-gerrit.md:52
msgid ""
"`git remote set-url origin "
"ssh://<username>@review.jami.net:29420/<project_name>`"
msgstr ""
"`git urrutiko jatorria "
"ssh://<username>@review.jami.net:29420/<proiektu_izen>"
#: ../../../developer/working-with-gerrit.md:54
msgid "Replace `<project_name>` by the correct project (example: jami-daemon)"
msgstr ""
"Ordezkatu `<proiektuaren izena>` proiektu zuzenean (adibidea: jami-daemon)"
#: ../../../developer/working-with-gerrit.md:56
msgid "Or clone the existing repository if you want to start fresh."
msgstr "Edo egungo biltegia klonatzea, berriro hasi nahi baduzu."
#: ../../../developer/working-with-gerrit.md:58
msgid "To Push by Default in refs/for/master"
msgstr "Aurreikuspenaren bidez bultzatzea erreferenteak/entzako/buruak"
#: ../../../developer/working-with-gerrit.md:60
msgid ""
"You can configure git to automatically create a review when a change is "
"pushed."
msgstr ""
"Gita konfiguratzen da berrikuspen bat sortzeko aldaketa bat bultzatzen "
"denean."
#: ../../../developer/working-with-gerrit.md:62
msgid "`git config remote.origin.push HEAD:refs/for/master`"
msgstr "`git konfiguratzea remote.origin.push HEAD:refs/for/master `"
#: ../../../developer/working-with-gerrit.md:64
msgid "To Create the Review"
msgstr "Berrikuspena egiteko"
#: ../../../developer/working-with-gerrit.md:66
msgid ""
"When pushing to this magic branch, a review will automatically be created on"
" Gerrit."
msgstr ""
"Adar magiko horretara bultzatzen duzunean, berrikuspen bat sortuko da "
"automatikoki Gerrit-en gainean."
#: ../../../developer/working-with-gerrit.md:68
msgid "`git push origin HEAD:refs/for/master`"
msgstr "`git bultza jatorria HEAD:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:70
msgid ""
"If you configured the default to refs/for/master as described above, simply"
msgstr ""
"Default erreferentzia erreferentzia-aurreikusitako moduan konfiguratzen "
"baduzu,"
#: ../../../developer/working-with-gerrit.md:72
msgid "`git push`"
msgstr "♪ Bultza ♪"
#: ../../../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 ""
"HeAD-ek orain adar bat bideratu nahi badu, eta konpromisoak egin nahi "
"badituzu, hobe duzu funtzioen adar batean lan egitea."
#: ../../../developer/working-with-gerrit.md:76
msgid "`git push origin <bugfix_branchname>:refs/for/master`"
msgstr "`git bultza jatorria <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 ""
"Hau lehen aldia bada bultzatzen ari zarela, konpromisoaren ondoren kakoa "
"instalatzeko eskatuko dizute zure konpromiso mezuan Aldatu-ID bat sartzeko. "
"Gerritek hau behar du patchsetak jarraitzeko eta bultzakak baztertuko ditu "
"instalatu arte."
#: ../../../developer/working-with-gerrit.md:80
msgid "To Push a Private patch"
msgstr "-Beste bat behar dut."
#: ../../../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 ""
"Lan aurreratua bultzatu dezakezu (alegia, zirriborroa) "
"erreferenteak/orentzat/maisu%private bultzatuz"
#: ../../../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 ""
"Adibidez, urrutiko aginte pribatu bat behar duzu bultzatzeko; ireki "
"<project_dir>/.git/config eta gehitu:"
#: ../../../developer/working-with-gerrit.md:93
msgid "Then:"
msgstr "Eta gero:"
#: ../../../developer/working-with-gerrit.md:95
msgid "`git push private`"
msgstr "- Ez, ez."
#: ../../../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 ""
"Kontu pribatuak patchsetek bezalaxe egiten dira, baina ez dira besteentzat "
"ikusgarriak eta ez dute Jenkins-en eraikuntza aktibatzen."