blob: b3f6cedc7bf16363e24f5f39d4551a1cb9582ac4 [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:
# Michalis Mich, 2022
# Kostas Livanos <kostas.livs@gmail.com>, 2022
# Vasileios Bakas, 2022
# n^cha, 2023
# savoirfairelinux <support@savoirfairelinux.com>, 2023
# Oxoumas Taxeispriksei <focijin239@zefara.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: Oxoumas Taxeispriksei <focijin239@zefara.com>, 2023\n"
"Language-Team: Greek (https://app.transifex.com/savoirfairelinux/teams/49466/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../../../developer/account-management.md:1
msgid "Account management"
msgstr "Διαχείριση λογαριασμού "
#: ../../../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 "Δημιουργία νέου λογαριασμού "
#: ../../../developer/account-management.md:8
#: ../../../developer/account-management.md:89 ../../../developer/calls.md:8
msgid "Daemon side"
msgstr "Η πλευρά του Ντέιμον"
#: ../../../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 "ΕΠΙ"
#: ../../../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 "Στο cx.ring.Ring.ConfigurationManager:"
#: ../../../developer/account-management.md:35
msgid ""
"The details can be retrieven from the method `getAccountTemplate(type)` with"
" `type=RING` or `type=SIP`. For example, this is the following code used in "
"LRC."
msgstr ""
"Οι λεπτομέρειες μπορούν να ληφθούν από τη μέθοδο `getAccountTemplate(type)` "
"με `type=RING` ή `type=SIP`. Για παράδειγμα, αυτός είναι ο ακόλουθος κωδικός"
" που χρησιμοποιείται στο LRC."
#: ../../../developer/account-management.md:62
msgid ""
"When a new account is added, the signal `accountsChanged` will be emitted. "
"The client should update its internal structure after this signal with other"
" methods in ConfigurationManager."
msgstr ""
"Όταν προστίθεται ένα νέο λογαριασμό, θα εκδοθεί το σήμα `accountsChanged`. Ο"
" πελάτης θα πρέπει να ενημερώνει την εσωτερική του δομή μετά από αυτό το "
"σήμα με άλλες μεθόδους στο ConfigurationManager."
#: ../../../developer/account-management.md:64
#: ../../../developer/account-management.md:110
msgid "Core"
msgstr "Κύρια"
#: ../../../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 ""
"Η κύρια λογική για τη δημιουργία ενός νέου λογαριασμού βρίσκεται στο "
"`src/ringdht/ringaccount.cpp`, στο `RingAccount::createAccount`"
#: ../../../developer/account-management.md:68
msgid "How it works, from scratch"
msgstr "Πώς λειτουργεί, από το μηδέν"
#: ../../../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 ""
"Το ιδιωτικό κλειδί `ringAccountKey` και η αλυσίδα πιστοποιητικών "
"`ringAccountCert` (κωδικοποιημένη βάση 64)"
#: ../../../developer/account-management.md:73
msgid "Generated CA key (for self-signed certificates) `ringCAKey`"
msgstr ""
"Γενερωμένο κλειδί CA (για αυτουπογραφούμενα πιστοποιητικά) `ringCAKey`"
#: ../../../developer/account-management.md:74
msgid "Revocated devices `ringAccountCRL`"
msgstr "Ακύρωση των διατάξεων `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 "Οι επαφές"
#: ../../../developer/account-management.md:77
msgid "The account settings"
msgstr "Οι ρυθμίσεις λογαριασμού"
#: ../../../developer/account-management.md:79
msgid "So let's generate it!"
msgstr "Ας το δημιουργήσουμε!"
#: ../../../developer/account-management.md:81
#: ../../../developer/contact-management.md:162
msgid "**TODO**"
msgstr "Ο ΟΤΟΝΟ"
#: ../../../developer/account-management.md:84
msgid "Delete the account"
msgstr "Διαγραφή λογαριασμού "
#: ../../../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 "Όταν διαγράφεται ο λογαριασμός, θα εκδοθεί το σήμα `accountsChanged`."
#: ../../../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 ""
"Η βασική λογική για τη δημιουργία ενός νέου λογαριασμού βρίσκεται στο "
"`src/manager.cpp`, στο `Manager::removeAccount`."
#: ../../../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 "Αφαίρεση συσκευής"
#: ../../../developer/apis-of-jami.md:1
msgid "The APIs of Jami"
msgstr "Οι API του Jami"
#: ../../../developer/apis-of-jami.md:4
msgid "OpenDHT"
msgstr "Επικοινωνία"
#: ../../../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 ""
"Η τεκμηρίωση που σχετίζεται με το API του OpenDHT βρίσκεται "
"[εδώ]https://github.com/savoirfairelinux/opendht/wiki/API-Overview) και δεν "
"θα περιληφθεί λεπτομερώς στο παρακάτω μέρος."
#: ../../../developer/apis-of-jami.md:8
msgid "Daemon"
msgstr "Δαϊμόν"
#: ../../../developer/apis-of-jami.md:10
msgid "The managers"
msgstr "Οι διευθυντές"
#: ../../../developer/apis-of-jami.md:12
msgid ""
"The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
msgstr ""
"Η API του daemon διασπασμένη μεταξύ 5 Διαχειριστές + 1 αρχείο παραδείγματος:"
#: ../../../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 ""
"Η διεπαφή **CallManager** χρησιμοποιείται για τη διαχείριση των συναφών "
"κλήσεων και των συναθροιστικών ενεργειών. Δεδομένου ότι το daemon Jami "
"υποστηρίζει πολλές εισερχόμενες / αναχωρητικές κλήσεις, κάθε ενέργεια που "
"περιλαμβάνει μια συγκεκριμένη κλήση πρέπει να αντιμετωπίζει τη μέθοδο με τη "
"βοήθεια ενός μοναδικού callID."
#: ../../../developer/apis-of-jami.md:14
msgid ""
"The **ConfigurationManager** used to handle the configuration stuff: "
"accounts settings, user preferences, ..."
msgstr ""
"Ο **ConfigurationManager** χρησιμοποιείται για να χειριστεί τα πράγματα της "
"διαμόρφωσης: ρυθμίσεις λογαριασμών, προτιμήσεις χρήστη,..."
#: ../../../developer/apis-of-jami.md:15
msgid "The **PresenceManager** is used to track the presence of contacts"
msgstr ""
"Ο **PresenceManager** χρησιμοποιείται για την παρακολούθηση της παρουσίας "
"επαφών"
#: ../../../developer/apis-of-jami.md:16
msgid "The **VideoManager** used to manage video devices and renderers"
msgstr ""
"Ο **VideoManager** χρησιμοποιείται για τη διαχείριση συσκευών και ραντεβού "
"βίντεο"
#: ../../../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 ""
"Η **Instance** χρησιμοποιείται για να μετρήσει τον αριθμό των πελατών που "
"έχουν εγγραφεί στην πυρήνα."
#: ../../../developer/apis-of-jami.md:19
msgid "DBUS"
msgstr "ΔΕΠΕ"
#: ../../../developer/apis-of-jami.md:21
msgid ""
"All the documentation and code for the dbus API is located in `jami-"
"daemon/bin/dbus`."
msgstr ""
"Όλη η τεκμηρίωση και ο κωδικός για την API dbus βρίσκονται στο `jami-"
"daemon/bin/dbus`."
#: ../../../developer/apis-of-jami.md:23
msgid ""
"If you use linux, you can use `d-feet` when the daemon is running to "
"manipulate the API (or with any another tool)."
msgstr ""
"Εάν χρησιμοποιείτε Linux, μπορείτε να χρησιμοποιήσετε `d-feet` όταν το "
"δαίμονο τρέχει για να χειριστεί το API (ή με οποιοδήποτε άλλο εργαλείο)."
#: ../../../developer/apis-of-jami.md:25
msgid "The LRC project uses this API (and use libwrap on windows and mac os)."
msgstr ""
"Το έργο LRC χρησιμοποιεί αυτή την API (και χρησιμοποιεί libwrap σε Windows "
"και macOS)."
#: ../../../developer/apis-of-jami.md:27
msgid "JNI"
msgstr "ΙΝΙ"
#: ../../../developer/apis-of-jami.md:29
msgid ""
"All the documentation and code for the JNI API is located in `jami-"
"daemon/bin/jni`."
msgstr ""
"Όλη η τεκμηρίωση και ο κωδικός για την API JNI βρίσκεται στο `jami-"
"daemon/bin/jni`."
#: ../../../developer/apis-of-jami.md:31
msgid "node js"
msgstr "Δένδρο js"
#: ../../../developer/apis-of-jami.md:33
msgid ""
"All the documentation and code for the Node JS API is located in `jami-"
"daemon/bin/nodejs`. This API is not used in any known project and maybe is "
"not up-to-date."
msgstr ""
"Όλη η τεκμηρίωση και ο κωδικός για το Node JS API βρίσκεται στο `jami-"
"daemon/bin/nodejs`."
#: ../../../developer/apis-of-jami.md:35
msgid "REST"
msgstr "ΕΝΑΣΚΑΝΤΑ"
#: ../../../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 βρίσκεται στο `jami-"
"daemon/bin/restcpp`."
#: ../../../developer/apis-of-jami.md:39
msgid "Python wrapper"
msgstr "Πυθόνη"
#: ../../../developer/apis-of-jami.md:41
msgid ""
"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This wrapper "
"uses DBus."
msgstr ""
"Ένα περιτύλιγμα Python είναι διαθέσιμο σε `jami-daemon/tools/jamictrl`."
#: ../../../developer/banned-contacts.md:1
msgid "Banned contacts"
msgstr "Απαγορευμένοι επαφές"
#: ../../../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 "Σύνταξη σενάριο"
#: ../../../developer/banned-contacts.md:10
msgid "Let's explain banned contacts with a simple scenario:"
msgstr "Ας εξηγήσουμε τις απαγορευμένες επαφές με ένα απλό σενάριο:"
#: ../../../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 "Τι σημαίνει αυτό;"
#: ../../../developer/banned-contacts.md:22
msgid "In the daemon"
msgstr "Στο δαίμονα"
#: ../../../developer/banned-contacts.md:25
msgid "Jessica *won't be notified that she was banned by Alice*."
msgstr "Η Τζέσικα δεν θα ενημερωθεί ότι απαγορεύτηκε από την Άλις."
#: ../../../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 ""
"Ως μια *απαγορευμένη επαφή* με την Άλις, η Τζέσικα *δεν θα έχει πλέον την "
"άδεια να επικοινωνήσει μαζί της, με κανένα τρόπο. Τα μηνύματα κειμένου, φωνή"
" ή βίντεο κλήσεις δεν θα αναγνωρίζονται ή δεν θα απαντούν με κανένα τρόπο."
#: ../../../developer/banned-contacts.md:32
msgid "Banned contacts are synched across linked devices like other contacts."
msgstr ""
"Οι απαγορευμένοι επαφές συγχρονίζονται σε συνδεδεμένες συσκευές όπως και οι "
"άλλοι επαφές."
#: ../../../developer/banned-contacts.md:34
msgid "In Jami clients (recommended implementation)"
msgstr "Σε πελάτες Jami (υπολογημένη εφαρμογή)"
#: ../../../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 ""
"Όσο η Τζέσικα είναι απαγορευμένη επαφή, η συνομιλία με την Τζέσικα δεν "
"εμφανίζεται στη λίστα συνομιλιών. Το ιστορικό συνομιλιών, ωστόσο, δεν "
"διαγράφεται. Η Τζέσικα εμφανίζεται στη λίστα απαγορευμένων επαφών του "
"λογαριασμού της Αλίκης. Η Αλίκη μπορεί επίσης να βρει/ανοίξει τη συνομιλία "
"εκτελώντας ακριβή αναζήτηση για το όνομα χρήστη της Τζέσικα."
#: ../../../developer/banned-contacts.md:43
msgid ""
"Alice can un-ban Jessica from the conversation or the banned contact list."
msgstr ""
"Η Άλις μπορεί να απαγορεύσει την Τζέσικα από τη συζήτηση ή την απαγορευμένη "
"λίστα επαφών."
#: ../../../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 ""
"Η Αλίκη πρέπει να απαγορεύσει την Τζέσικα να της στέλνει μήνυμα, να την "
"καλεί ή να επικοινωνεί με αυτήν."
#: ../../../developer/banned-contacts.md:50
msgid ""
"Alice can still delete the conversation history using a *Delete History* "
"button."
msgstr ""
"Η Alice μπορεί ακόμα να διαγράψει το ιστορικό συνομιλιών χρησιμοποιώντας το "
"κουμπί * Διαγράψτε το ιστορικό *."
#: ../../../developer/calls.md:1 ../../../developer/swarm.md:536
#: ../../../developer/synchronizing-profiles.md:19
msgid "Calls"
msgstr "Κλήσεις"
#: ../../../developer/calls.md:4
msgid ""
"**NOTE: this page detail the principle for Jami accounts. For SIP accounts, "
"the SIP protocol is used.**"
msgstr "**ΑΝΤΑΣΗ: η σελίδα αυτή περιγράφει την αρχή για λογαριασμούς Jami."
#: ../../../developer/calls.md:6
msgid "Let's do a call in Jami!"
msgstr "Ας κάνουμε ένα τηλεφώνημα στο Τζάμι!"
#: ../../../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 ""
"Όταν δημιουργεί μια κλήση μεταξύ δύο ομοτίμων, η Jami χρησιμοποιεί κυρίως "
"γνωστά πρωτόκολλα όπως ICE, SIP ή TLS. Ωστόσο, για να γίνει διανεμημένη, η "
"διαδικασία δημιουργίας κλήσης είναι λίγο διαφορετική."
#: ../../../developer/calls.md:12
msgid ""
"Search the contact presence on the DHT (for more details, see {doc}`contact-"
"management`)"
msgstr ""
"Αναζητήστε την παρουσία επαφών στο DHT (για περισσότερες λεπτομέρειες, βλέπε"
" {doc}`-contact-management`)"
#: ../../../developer/calls.md:13
msgid ""
"Once the contact is found, send a call request, announcing the known "
"candidates (the ip of each network interfaces + relay addresses (TURN) + "
"reflexives addresses (UPnP, public ones)."
msgstr ""
"Μόλις βρεθεί η επαφή, στείλτε αίτηση κλήσης, ανακοινώνοντας τους γνωστούς "
"υποψηφίους (η διεύθυνση IP κάθε διεπαφής δικτύου + διευθύνσεις μεταφοράς "
"(TURN) + διευθύνσεις αντανακλαστικών (UPnP, δημόσιες)."
#: ../../../developer/calls.md:14
msgid ""
"Wait for the response of the contact (they will respond their known "
"addresses)."
msgstr ""
"Περιμένετε την απάντηση του επικοινωνούμενου (θα απαντήσουν στις γνωστές "
"διευθύνσεις τους)."
#: ../../../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 ""
"Διαπραγματεύονται δύο συνεδρίες ICE. Μια (προτιμότερη) στο TCP, μια στο UDP "
"(ως αποτυχία)."
#: ../../../developer/calls.md:16
msgid "Then, the socket is encrypted in TLS (if TCP) or DTLS (if UDP)."
msgstr "Στη συνέχεια, η πρίζα κρυπτογραφηθεί σε TLS (αν TCP) ή DTLS (αν UDP)."
#: ../../../developer/calls.md:17
msgid ""
"The contact is now able to accept or decline the call. When they accept, a "
"ICE transport (UDP only for now) is negotiated to create 4 new sockets for "
"the medias (2 for audio, 2 for video)."
msgstr ""
"Όταν αποδέχονται, διαπραγματεύεται μια μεταφορά ICE (UDP μόνο για το παρόν) "
"για τη δημιουργία 4 νέων πηγών για τα μέσα ενημέρωσης (2 για το ήχο, 2 για "
"το βίντεο)."
#: ../../../developer/calls.md:18
msgid "The call is now alive!"
msgstr "Η κλήση είναι ζωντανή τώρα!"
#: ../../../developer/calls.md:20
msgid "Exchange ICE candidates"
msgstr "Ανταλλαγή υποψηφίων ICE"
#: ../../../developer/calls.md:22
msgid ""
"Everything really starts in `jamiaccount.cpp` "
"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and when"
" the contact is found via the DHT, the call request for the contact is "
"crafted. This request contains all the informations necessary for the remote"
" ICE session defined by:"
msgstr ""
"Όλα αρχίζουν πραγματικά στο `jamiaccount.cpp` "
"(`JamiAccount::startOutgoingCall`). Μόλις τα δύο αντικείμενα ICE είναι "
"έτοιμα και όταν η επαφή βρεθεί μέσω του DHT, το αίτημα κλήσης για την επαφή "
"δημιουργείται."
#: ../../../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 ""
"όπου `callvid` είναι τυχαίο αριθμός που χρησιμοποιείται για την αναγνώριση "
"της κλήσης και η πλειοψηφία περιέχει δύο συνδεδεμένα μηνύματα ICE "
"(`IceTransport::packIceMsg` in `ice_transport.cpp`) που περιέχουν το κωδικό "
"πρόσβασης της συνεδρίας, τους *ufrag* και τους υποψηφίους ICE.) όπως:"
#: ../../../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 ""
"και αποστέλλεται μέσω του DHT σε κρυπτογραφημένο μήνυμα για τη συσκευή σε "
"`hash(call:xxxxxx)` όπου `xxxxxx` είναι το id της συσκευής. Ο συνάδελφος θα "
"απαντήσει ακριβώς στο ίδιο μέρος (αλλά κρυπτογραφημένο για τη συσκευή "
"αποστολής) του δικού του `dht::IceCandidates`. Βλ. "
"`JamiAccount::replyToIncomingIceMsg` για περισσότερες λεπτομέρειες."
#: ../../../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 ""
"Η συνεδρίαση ICE δημιουργείται και από τις δύο πλευρές όταν έχουν όλους τους"
" υποψηφισμένους (όπως για τον αποστολέα, όταν λαμβάνεται η απάντηση από τον "
"επαφή)."
#: ../../../developer/calls.md:52
msgid "ICE negotiation"
msgstr "Διαπραγματεύσεις ICE"
#: ../../../developer/calls.md:54
msgid ""
"Pending calls are managed by `JamiAccount::handlePendingCallList()`, which "
"first wait that the TCP negotiation finish (and if it fails, wait for the "
"UDP one). The code for the ICE negotiation is mainly managed by "
"[pjproject](https://github.com/pjsip/pjproject) but for Jami, the "
"interesting part is located in `ice_transport.cpp`. Moreover, we add some "
"important patches/features on top of *pjproject* not merged upstream for now"
" (for example, ICE over TCP). These patches are present in "
"`contrib/src/pjproject`."
msgstr ""
"Οι αναμενόμενες κλήσεις διαχειρίζονται το "
"`JamiAccount::handlePendingCallList()`, οι οποίες πρώτα περιμένουν το τέλος "
"της διαπραγμάτευσης TCP (και αν αποτύχει, περιμένετε το UDP). Ο κωδικός για "
"τη διαπραγμάτευση ICE διαχειρίζεται κυρίως το "
"[pjproject]https://github.com/pjsip/pjproject) αλλά για το Jami, το "
"ενδιαφέρον μέρος βρίσκεται στο `ice_transport.cpp`. Επιπλέον, προσθέτουμε "
"ορισμένες σημαντικές πατς/λειτουργίες πάνω από το *pjproject* που δεν "
"συγχωνεύτηκαν προς τα εμπρός προς το παρόν (για παράδειγμα, το ICE πάνω από "
"το TCP)."
#: ../../../developer/calls.md:56
msgid "Encrypt the control socket"
msgstr "Κρυπτογράφηση της πρίζας ελέγχου"
#: ../../../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 ""
"Μόλις δημιουργηθεί και διαχειριστείται η πρίζα από μια περίπτωση "
"**IceTransport**, στη συνέχεια τυλιγείται σε μια **SipTransport** που "
"αντιστοιχεί σε μια *TlsIceTransport*. Ο κύριος κωδικός βρίσκεται στο "
"`JamiAccount::handlePendingCall()` και η τυλιγμένη γίνεται σε "
"`SipTransportBroker::getTlsIceTransport`. Τέλος, η συνεδρία μας "
"διαχειρίζεται από **TlsSession** σε `daemon/src/security/tls_session.cpp` "
"και χρησιμοποιεί τη βιβλιοθήκη GnuTLS."
#: ../../../developer/calls.md:60
msgid ""
"So, the control socket will be a TLS (1.3 if your and your peer gnutls "
"version support it) if a TCP socket is negotiated. If a UDP socket is "
"negotiated instead (due to firewall restrictions/problem in the "
"negotiation/etc), the socket will use DTLS (still managed by the same "
"parts)."
msgstr ""
"Έτσι, η πρίζα ελέγχου θα είναι TLS (1.3 αν η έκδοση σας και των γνητούχων "
"σας τη υποστηρίζουν) αν μια πρίζα TCP διαπραγματεύεται. Αν μια πρίζα UDP "
"διαπραγματεύεται αντί αυτού (λόγω περιορισμών του firewall / προβλήματος στη"
" διαπραγμάτευση / κλπ), η πρίζα θα χρησιμοποιεί DTLS (ακόμα διαχειρίζεται "
"από τα ίδια μέρη)."
#: ../../../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 ""
"Η πρίζα ελέγχου χρησιμοποιείται για τη μετάδοση πακέτων SIP, όπως "
"προσκλήσεις, προσαρμοσμένα μηνύματα (ο Jami στέλνει την VCard του προφίλ σας"
" σε αυτή τη πρίζα στην αρχή της κλήσης, ή την περιστροφή της κάμερας), "
"μηνύματα κειμένου."
#: ../../../developer/calls.md:64
msgid "Related articles:"
msgstr "Άρθρα που σχετίζονται με:"
#: ../../../developer/calls.md:66
msgid "https://jami.net/improved-video-rotation-support/"
msgstr "https://jami.net/improved-video-rotation-support/"
#: ../../../developer/calls.md:67
msgid "https://jami.net/peer-to-peer-file-sharing-support-in-jami/"
msgstr "https://jami.net/peer-to-peer-file-sharing-support-in-jami/"
#: ../../../developer/calls.md:69
msgid "Media sockets"
msgstr "Κύκλες μέσων ενημέρωσης"
#: ../../../developer/calls.md:71
msgid ""
"Media sockets are SRTP sockets where the key is negotiated through the TLS "
"Session previously created. **TODO**"
msgstr ""
"Τα media sockets είναι SRTP sockets όπου το κλειδί διαπραγματεύεται μέσω της"
" TLS Session που έχει δημιουργηθεί προηγουμένως. ** TODO**"
#: ../../../developer/calls.md:74 ../../../developer/drt.rst:140
msgid "Architecture"
msgstr "Αρχιτεκτονική"
#: ../../../developer/calls.md:76
msgid "**TOOD**"
msgstr "ΠΟΛΟΣ"
#: ../../../developer/calls.md:79
msgid "Multi-stream"
msgstr "Πολλαπλής ροής"
#: ../../../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 ""
"Από την έκδοση 13.3.0 του Daemon, το multi-stream υποστηρίζεται πλήρως."
#: ../../../developer/calls.md:86
msgid "pjsip"
msgstr "Πιτζίπ"
#: ../../../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 ""
"Το πρώτο μέρος είναι να διαπραγματευτούμε αρκετές ροές μέσων ενημέρωσης. "
"Στην πραγματικότητα, κάθε ροή μέσων ενημέρωσης χρησιμοποιεί 2 UDP sockets."
#: ../../../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 ""
"Αν είναι ο οικοδεσπότης μιας διάσκεψης που θέλει να προσθέσει μέσα "
"ενημέρωσης, δεν υπάρχει τίποτα άλλο να διαπραγματευτεί, επειδή ήδη "
"αναμιγνύουμε τα βίντεο σε ένα ρεύμα. Έτσι, προσθέτουμε τα νέα μέσα "
"ενημέρωσης απευθείας στο βίντεο-μιξέρ χωρίς διαπραγματεύσεις."
#: ../../../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:1, για την ώρα, καθώς δεν υπάρχει καμία πληροφορία για τη "
"διάσκεψη, δεν υποστηρίζεται το multi-stream."
#: ../../../developer/calls.md:99
msgid "Else, 2 new sockets are negotiated for new media."
msgstr "Διαπραγματεύονται δύο νέες πηγές για νέα μέσα."
#: ../../../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, η "
"`PJ_ICE_COMP_BITS` τροποποιήθηκε σε `5` (που αντιστοιχεί σε `2^5`, οπότε 32 "
"ρεύματα)."
#: ../../../developer/calls.md:105
msgid "Deprecate switchInput, support requestMediaChange"
msgstr "Επαλλαγή υποβολής, αίτηση υποστήριξηςΜεταξύ"
#: ../../../developer/calls.md:107
msgid ""
"In the daemon, the old API `switchInput` is now **DEPRECATED**; same for "
"`switchSecondaryInput`:"
msgstr ""
"Στο δαίμονα, η παλιά API `switchInput` είναι τώρα **DEPRECATED**; το ίδιο "
"για `switchSecondaryInput`:"
#: ../../../developer/calls.md:133
msgid "`requestMediaChange` replaces this, for both calls and conferences:"
msgstr ""
"`requestMediaChange` αντικαθιστά αυτό, τόσο για τις κλήσεις όσο και για τις "
"συνεδριάσεις:"
#: ../../../developer/calls.md:157
msgid "Compability"
msgstr "Συγκρίσιμη"
#: ../../../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 ""
"Εάν μια κλήση γίνεται με ένα peer όπου η έκδοση του δήμου είναι < 13.3.0, "
"δεν ενεργοποιείται το multi-stream και χρησιμοποιείται η παλιά συμπεριφορά "
"(1 μόνο βίντεο)."
#: ../../../developer/calls.md:163
msgid "Identifications of streams"
msgstr "Ταυτοποίηση των ροών"
#: ../../../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 ""
"Επειδή μπορεί να υπάρχουν πολλαπλές ροές τώρα, κάθε ροή μέσων ενημέρωσης "
"αναγνωρίζεται από τον αναγνωριστικό του, και η μορφή είναι \"<type>_<idx>\";"
" για παράδειγμα: \"audio_0\", \"video_2\", κλπ."
#: ../../../developer/calls.md:169
msgid "Rotation"
msgstr "Γύρισμα"
#: ../../../developer/calls.md:171 ../../../developer/calls.md:187
#: ../../../developer/calls.md:201
msgid "The XML was updated to add the wanted stream:"
msgstr "Το XML ενημερώθηκε για να προσθέσει το αναζητούμενο ρεύμα:"
#: ../../../developer/calls.md:185
msgid "Key-frame"
msgstr "Κλειδιά"
#: ../../../developer/calls.md:199
msgid "Voice activity"
msgstr "Ακτιβισμός φωνής"
#: ../../../developer/calls.md:215
msgid "Conference"
msgstr "Συνδιάσκεψη"
#: ../../../developer/calls.md:217
msgid "Reflected changes are documented {doc}`here <conference-protocol>`."
msgstr ""
"Οι αναφλεγμένες αλλαγές καταγράφονται εδώ <doc}` <conference-protocol>`."
#: ../../../developer/calls.md:219
msgid "Client"
msgstr "Πελάτης"
#: ../../../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 ""
"Ακόμα και αν το back-end υποστηρίζει έως και 32 μέσα ενημέρωσης ταυτόχρονα, "
"εκτός από προσαρμοσμένους πελάτες, συνιστούμε σήμερα να δίνεται μόνο η "
"δυνατότητα να μοιραστεί κανείς μία κάμερα και ένα βίντεο ταυτόχρονα."
#: ../../../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, το ενδιαφέρον μέρος είναι στο `AvAdapter` (μέθοδοι όπως "
"`isCapturing`, `shareAllScreens`, `stopSharing`)."
#: ../../../developer/calls-in-swarm.md:1
msgid "Calls in Swarm"
msgstr "Επισκέψεις"
#: ../../../developer/calls-in-swarm.md:4
msgid "Goals"
msgstr "Στόχοι"
#: ../../../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 ""
"Η παρούσα σελίδα έχει ως στόχο να περιγράψει πώς θα λειτουργήσει η κλήση με "
"ομάδες. Αυτή η μέθοδος θα επιτρέψει στους πελάτες να παρέχουν κλήση για "
"πολλούς συμμετέχοντες με κοινό ιστορικό κειμένου. Το πρωτόκολλο πρέπει να "
"είναι ευέλικτο, να διατηρεί συμβατότητα με το SIP stack, το adn πρέπει να "
"λειτουργεί σε διανεμημένο περιβάλλον. Αυτό το διανεμημένο περιβάλλον φέρνει "
"επίσης ορισμένες προκλήσεις, όπως πιθανές συνθήκες φυλής (όπου πολλοί φορείς"
" μπορούν να ξεκινήσουν μια κλήση ταυτόχρονα)."
#: ../../../developer/calls-in-swarm.md:8
#: ../../../developer/conference-protocol.md:5
#: ../../../developer/design-process.md:4 ../../../developer/drt.rst:23
msgid "Definitions"
msgstr "Ορισμοί"
#: ../../../developer/calls-in-swarm.md:10
msgid ""
"a **Rendezvous** will mix all authorized incoming calls in a conference."
msgstr ""
"Ένα **Rendezvous** θα αναμείξει όλες τις εγκεκριμένες εισερχόμενες κλήσεις "
"σε μια διάσκεψη."
#: ../../../developer/calls-in-swarm.md:11
msgid "Two new URIs will be used for this feature:"
msgstr "Για το σκοπό αυτό θα χρησιμοποιηθούν δύο νέοι URI:"
#: ../../../developer/calls-in-swarm.md:12
msgid "`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`"
msgstr ""
"`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#: ../../../developer/calls-in-swarm.md:13
msgid "`rdv:accountUri/deviceId/conversationId/confId`"
msgstr "`rdv:ο λογαριασμόςUri/deviceId/conversationId/confId`"
#: ../../../developer/calls-in-swarm.md:14
msgid ""
"**Swarm's profile** is the profile of the swarm stored in a vCard "
"(`profile.vcf`, see {ref}`developer/swarm:Conversation's profile "
"synchronization` and {doc}`synchronizing-profiles`)"
msgstr ""
"**Πρόfil του σμήνου** είναι το προφίλ του σμήνου που αποθηκεύεται σε vCard "
"(`profile.vcf`, βλ. {ref}`developer/swarm:Conversation's profile "
"synchronization` και {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` είναι το προεπιλεγμένο URI για ένα σάρμ, τοποθετημένο στο προφίλ "
"του σάρμ*"
#: ../../../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 ""
"Σημείωση: τα δύο αυτά URIs επιτρέπουν στον πελάτη να πραγματοποιήσει μια "
"κλήση προκειμένου να συμμετάσχει σε *Rendezvous* ή να αρχίσει μια κλήση σε "
"σμήνος, με αποτέλεσμα τη λογική που περιγράφεται στο επόμενο τμήμα."
#: ../../../developer/calls-in-swarm.md:19
msgid "Place a call in a Swarm"
msgstr "Κάντε μια κλήση σε ένα σάρμ"
#: ../../../developer/calls-in-swarm.md:21
msgid "Proposed flow:"
msgstr "Προτεινόμενη ροή:"
#: ../../../developer/calls-in-swarm.md:23
msgid "**a:** If `rdvUri` is set:"
msgstr "**α:** Εάν ορίζεται `rdvUri`:"
#: ../../../developer/calls-in-swarm.md:24
#: ../../../developer/calls-in-swarm.md:27
msgid "Call it"
msgstr "Πες το."
#: ../../../developer/calls-in-swarm.md:25
msgid "If failed, go to **b:**"
msgstr "Αν δεν πετύχει, πήγαινε στο **b:**"
#: ../../../developer/calls-in-swarm.md:26
msgid "**b:** else if there is a current active call:"
msgstr "**b:** διαφορετικά, εάν υπάρχει ενεργή κλήση:"
#: ../../../developer/calls-in-swarm.md:28
msgid "If failed, go to **c:**"
msgstr "Αν δεν πετύχει, πήγαινε στο **c:**"
#: ../../../developer/calls-in-swarm.md:29
msgid "**c:** else, host a new *Rendezvous* and join it."
msgstr "Αλλιώς, φιλοξενήστε ένα νέο \"Γενναγιό\" και συμμετέχετε σε αυτό."
#: ../../../developer/calls-in-swarm.md:30
msgid "Also, ask users if they want to be the host for next calls."
msgstr ""
"Επίσης, ρωτήστε τους χρήστες αν θέλουν να είναι ο οικοδεσπότης για τις "
"επόμενες κλήσεις."
#: ../../../developer/calls-in-swarm.md:32
msgid ""
"![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-"
"diagram.png)"
msgstr ""
"! [Σχέδιο: Τοποθέτηση κλήσης σε ένα σάρμ](ειδές/τοποθέτηση κλήσης-σε-σάρμ-"
"σχέδιο.png)"
#: ../../../developer/calls-in-swarm.md:32
msgid "Diagram: Placing a call in a Swarm"
msgstr "Σχέδιο: Τοποθέτηση κλήσης σε ένα σάρμ"
#: ../../../developer/calls-in-swarm.md:34
msgid "**TODO, when to commit and who is commiting**"
msgstr ""
"**ΤΟΝΤΟ, πότε να αναλάβει και ποιος αναλαμβάνει την ανάληψη της ευθύνης**"
#: ../../../developer/calls-in-swarm.md:36
msgid "Incoming calls for swarm"
msgstr "Ερχόμενες κλήσεις για σμήνος"
#: ../../../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 ""
"Όταν λαμβάνεται μια νέα εισερχόμενη κλήση, το URI πρέπει να αναλύεται. Εάν η"
" εισερχόμενη κλήση είναι για ένα *Rendezvous* που φιλοξενείται επί του "
"παρόντος από τη συσκευή και ο καλούντας έχει εξουσιοδοτηθεί να συμμετάσχει, "
"η κλήση πρέπει να απαντηθεί και να προστεθεί στο τρέχον *Rendezvous*"
#: ../../../developer/calls-in-swarm.md:41
msgid "Defining a host for a Swarm"
msgstr "Ορισμός του οικοδεσπότη για ένα σάρμ"
#: ../../../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, το μέλος που θέλει να είναι ο "
"οικοδεσπότης πρέπει να ενημερώνει το προφίλ της συζήτησης, και αυτό θα "
"συγχρονιστεί και θα επικυρωθεί από τους ομοτίμους του. Ωστόσο, ο "
"οικοδεσπότης πρέπει να είναι σε θέση να αποδεχθεί ή να μην είναι ο "
"οικοδεσπότης και ένα μέλος με επαρκή δικαιώματα θα πρέπει να είναι σε θέση "
"να ζητήσει από μια συσκευή να είναι ο οικοδεσπότης. Αυτή η διαδικασία δεν "
"έχει αποφασιστεί για το παρόν."
#: ../../../developer/calls-in-swarm.md:45
msgid "**TODO? Permissions to update, negotiation of the host**"
msgstr "Άδειες ενημέρωσης, διαπραγμάτευση του οικοδεσπότη"
#: ../../../developer/calls-in-swarm.md:47
#: ../../../developer/conference-protocol.md:181
#: ../../../developer/file-transfer.md:196
msgid "Future"
msgstr "Το μέλλον"
#: ../../../developer/calls-in-swarm.md:49
msgid "Join notifications?"
msgstr "Να συμμετάσχεις στις ειδοποιήσεις;"
#: ../../../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 ""
"Τα μέλη του σμήνου που δεν είναι σε μια κλήση θα πρέπει να μπορούν να "
"γνωρίζουν ποιος είναι σε ενεργό κλήση."
#: ../../../developer/calls-in-swarm.md:53
msgid "SIP Bridge?"
msgstr "Σπυράκι SIP;"
#: ../../../developer/calls-in-swarm.md:55
msgid ""
"Because conferences are still mixed SIP calls, a SIP bridge is still "
"possible. In the *Swarm's profile* it should be possible to add a SIP entry,"
" like some popular VoIP systems)"
msgstr ""
"Επειδή τα συνέδρια είναι ακόμα μικτές SIP κλήσεις, μια γέφυρα SIP είναι "
"ακόμα δυνατή."
#: ../../../developer/choosing-crf-value-for-encoder.md:1
msgid "Choosing CRF value for encoder"
msgstr "Επιλέγοντας τιμή CRF για κωδικοποιητή"
#: ../../../developer/choosing-crf-value-for-encoder.md:4
#: ../../../developer/design-process.md:13
msgid "Context"
msgstr "Συγκ context"
#: ../../../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 δεν είναι βέλτιστη για όλους τους τύπους"
" συνδέσεων."
#: ../../../developer/choosing-crf-value-for-encoder.md:7
msgid "Observation"
msgstr "Παρατηρητική"
#: ../../../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 ""
"Δεν είναι απαραίτητο να επιδιώκεται η βέλτιστη ποιότητα (CRF < 20) διότι "
"πέρα από αυτό, η οπτική αντίληψη είναι σχεδόν παρόμοια ενώ η απαιτούμενη ροή"
" δεδομένων (bitrate) είναι πολύ υψηλότερη."
#: ../../../developer/choosing-crf-value-for-encoder.md:10
msgid "Objective"
msgstr "Στόχος"
#: ../../../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 ""
"Σκοπός του παρόντος εγγράφου είναι η επαλήθευση της επίδρασης μιας αλλαγής "
"της ποιότητας του βίντεο με τη διάσταση CRF του κωδικοποιητή."
#: ../../../developer/choosing-crf-value-for-encoder.md:13
msgid "Test"
msgstr "Δοκιμασία"
#: ../../../developer/choosing-crf-value-for-encoder.md:14
msgid "These tests were performed by comparing :"
msgstr "Οι δοκιμές αυτές πραγματοποιήθηκαν με τη σύγκριση:"
#: ../../../developer/choosing-crf-value-for-encoder.md:15
msgid "The first one encoded with Jami's current parameters"
msgstr "Το πρώτο κωδικοποιημένο με τις τρέχουσες παραμέτρους του Τζάμι."
#: ../../../developer/choosing-crf-value-for-encoder.md:16
msgid "The second encoded with a lower quality"
msgstr "Το δεύτερο κωδικοποιημένο με χαμηλότερη ποιότητα"
#: ../../../developer/choosing-crf-value-for-encoder.md:18
msgid ""
"Each of these tests were performed for the following resolutions: 1080p, "
"720p and 436p."
msgstr ""
"Κάθε μία από αυτές τις δοκιμές πραγματοποιήθηκε για τις ακόλουθες ανάλυσεις:"
" 1080p, 720p και 436p."
#: ../../../developer/choosing-crf-value-for-encoder.md:20
msgid "For each of these resolutions several bitrates have been used:"
msgstr "Για κάθε από αυτές τις ανάλυσεις χρησιμοποιήθηκαν διάφορα bitrates:"
#: ../../../developer/choosing-crf-value-for-encoder.md:21
msgid "300 Kbit/s (Jami low value)"
msgstr "300 Kbit/s (απλούσια τιμή)"
#: ../../../developer/choosing-crf-value-for-encoder.md:22
msgid "1.5 Mbit/s (Intermediate value)"
msgstr "1,5 Mbit/s (μεσομετρική αξία)"
#: ../../../developer/choosing-crf-value-for-encoder.md:23
msgid "6 Mbit/s (High value)"
msgstr "6 Mbit/s (υψηλή αξία)"
#: ../../../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 ""
"Τα γραφικά δείχνουν την εξέλιξη του bitrate με το αρχείο που δοκιμάζεται "
"(απολύσεις και συγκεκριμένα ρυθμίσεις bitrate)."
#: ../../../developer/choosing-crf-value-for-encoder.md:27
msgid "A visual comparison (side by side) was made for each test."
msgstr "Για κάθε εξέταση έγινε οπτική σύγκριση (πίσω-πίσω)."
#: ../../../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 ""
"Χάρη σε αυτή την δοκιμή μπορούμε να εκτιμήσουμε το bitrate που θα εκπέμπει "
"στο Jami σύμφωνα με τις επιλεγμένες παραμέτρους."
#: ../../../developer/choosing-crf-value-for-encoder.md:33
msgid ""
"1080p / 300 kbit/s / CRF28 ![image](images/choosing-crf-1080p-300kbps-"
"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-"
"crf-1080p-300kbps-crf38.png)"
msgstr ""
"1080p / 300 kbit/s / CRF28! [image](images/choosing-crf-1080p-300kbps-"
"crf28.png) 1080p / 300 kbit/s / CRF38! [image](images/choosing-"
"crf-1080p-300kbps-crf38.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:33
#: ../../../developer/choosing-crf-value-for-encoder.md:40
#: ../../../developer/choosing-crf-value-for-encoder.md:47
#: ../../../developer/choosing-crf-value-for-encoder.md:56
#: ../../../developer/choosing-crf-value-for-encoder.md:62
#: ../../../developer/choosing-crf-value-for-encoder.md:69
#: ../../../developer/choosing-crf-value-for-encoder.md:78
#: ../../../developer/choosing-crf-value-for-encoder.md:85
#: ../../../developer/choosing-crf-value-for-encoder.md:92
msgid "image"
msgstr "εικόνα"
#: ../../../developer/choosing-crf-value-for-encoder.md:38
msgid "Visual comparison (CRF28 a gauche / CRF38 a droite)"
msgstr "Οπτική σύγκριση (CRF28 αριστερά / CRF38 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:40
msgid ""
"1080p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-1080p-1.5mbps-"
"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-"
"crf-1080p-1.5mbps-crf30.png)"
msgstr ""
"1080p / 1.5 Mbps / CRF22! [image](images/choosing-crf-1080p-1.5mbps-"
"crf22.png) 1080p / 1.5 Mbit/s / CRF30! [image](images/choosing-"
"crf-1080p-1.5mbps-crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:45
#: ../../../developer/choosing-crf-value-for-encoder.md:67
#: ../../../developer/choosing-crf-value-for-encoder.md:90
msgid "Visual comparison (CRF22 left / CRF30 right)"
msgstr "Οπτική σύγκριση (CRF22 αριστερά / CRF30 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:47
msgid ""
"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-crf17.png) "
"1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-6mbps-crf23.png)"
msgstr ""
"1080p / 6 Mbps / CRF17! [image](images/choosing-crf-1080p-6mbps-crf17.png) "
"1080p / 6 Mbit/s / CRF23! [image](images/choosing-crf-1080p-6mbps-crf23.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:52
msgid "Visual comparison (CRF17 on the left / CRF23 on the right)"
msgstr "Επικαιωτική σύγκριση (CRF17 αριστερά / CRF23 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:56
msgid ""
"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-crf28.png)"
" 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-300kbps-"
"crf38.png) Visual comparison (CRF28 left / CRF38 right)"
msgstr ""
"720p / 300 kbps / CRF28![image](ειδές/εκλογές-crf-720p-300kbps-crf28.png) "
"720p / 300 kbit/s / CRF38![image](ειδές/εκλογές-crf-720p-300kbps-crf38.png) "
"Επικοινωνία (CRF28 αριστερά / CRF38 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:62
msgid ""
"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-crf22.png)"
" 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) ![image](images/choosing-"
"crf-720p-1.5mbps-crf30.png)"
msgstr ""
"720p / 1.5 Mbps / CRF22![image](images/choosing-crf-720p-1.5mbps-crf22.png) "
"720p / 1.5 Mbit/s / CRF30 (Τέστ με μειωμένη CRF)![image](images/choosing-"
"crf-720p-1.5mbps-crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:69
msgid ""
"720p / 6 Mbps / CRF17 ![image](images/choosing-crf-720p-6mbps-crf17.png) "
"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-crf23.png)"
msgstr ""
"720p / 6 Mbps / CRF17! [image](images/choosing-crf-720p-6mbps-crf17.png) "
"720p / 6 Mbit/s / CRF23! [image](images/choosing-crf-720p-6mbps-crf23.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:74
#: ../../../developer/choosing-crf-value-for-encoder.md:97
msgid "Visual comparison (CRF17 left / CRF23 right)"
msgstr "Επικαιωτική σύγκριση (CRF17 αριστερά / CRF23 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:78
msgid ""
"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-crf28.png)"
" 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-300kbps-"
"crf38.png)"
msgstr ""
"436p / 300 kbps / CRF28! [image](images/choosing-crf-436p-300kbps-crf28.png)"
" 436p / 300 kbit/s / CRF38! [image](images/choosing-crf-436p-300kbps-"
"crf38.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:83
msgid "Visual comparison (CRF28 left / CRF38 right)"
msgstr "Επικαιωτική σύγκριση (CRF28 αριστερά / CRF38 δεξιά)"
#: ../../../developer/choosing-crf-value-for-encoder.md:85
msgid ""
"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-crf22.png)"
" 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1.5mbps-"
"crf30.png)"
msgstr ""
"436p / 1.5 Mbps / CRF22! [image](images/choosing-crf-436p-1.5mbps-crf22.png)"
" 436p / 1.5 Mbit/s / CRF30! [image](images/choosing-crf-436p-1.5mbps-"
"crf30.png)"
#: ../../../developer/choosing-crf-value-for-encoder.md:92
msgid ""
"436p / 6 Mbps / CRF17 ![image](images/choosing-crf-436p-6mbps-crf17.png) "
"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-crf23.png)"
msgstr ""
"436p / 6 Mbps / CRF17! [image](images/choosing-crf-436p-6mbps-crf17.png) "
"436p / 6 Mbit/s / CRF23! [image](images/choosing-crf-436p-6mbps-crf23.png)"
#: ../../../developer/coding-style.md:1
msgid "Coding style"
msgstr "Στυλ κωδικοποίησης"
#: ../../../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++ ορίζονται από αυτό το αρχείο μορφοποίησης "
"κλανγκ: 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 "Πρωτόκολλο της διάσκεψης"
#: ../../../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 ""
"Στόχος του παρόντος εγγράφου είναι να περιγράψει τις εξελίξεις που θα "
"κάνουμε για τη διαχείριση των συνεδριάσεων (αυτο/βίντεο)."
#: ../../../developer/conference-protocol.md:7
msgid "Host: Is the user who mix the audio/video streams for the others"
msgstr ""
"Διοικητής: Είναι ο χρήστης που αναμιγνύει τις ροές ήχου/βίντεο για τους "
"άλλους"
#: ../../../developer/conference-protocol.md:8
msgid "Participant: Every user in the conference, even the host"
msgstr "Συμμετέχων: Κάθε χρήστης της διάσκεψης, ακόμη και ο οικοδεσπότης"
#: ../../../developer/conference-protocol.md:10
msgid "Disclaimer"
msgstr "Απαλλαγή από ευθύνη"
#: ../../../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 "Το παρόν έγγραφο περιγράφει μόνο τα πρώτα βήματα προς το παρόν."
#: ../../../developer/conference-protocol.md:14
msgid "Possible layouts"
msgstr "Πιθανές διαρθρώσεις"
#: ../../../developer/conference-protocol.md:16
msgid "GRID: Every member is shown with the same height/width"
msgstr "ΔΙΑΜΑΣ: Κάθε μέλος εμφανίζεται με το ίδιο ύψος/εύρος"
#: ../../../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: Ένα μέλος είναι μεγέθυνση και η άλλη προεπισκόπηση "
"εμφανίζεται"
#: ../../../developer/conference-protocol.md:18
msgid "ONE_BIG: One member take the full screen rendered"
msgstr "ONE_BIG: Ένα μέλος παίρνει την πλήρη οθόνη παραγωγή"
#: ../../../developer/conference-protocol.md:20
msgid ""
"Two new methods are available to manage the conference Layout in "
"CallManager:"
msgstr ""
"Δύο νέες μεθόδους διαχειρίζονται τη διάταξη της διάσκεψης στο CallManager:"
#: ../../../developer/conference-protocol.md:38
#: ../../../developer/conference-protocol.md:95 ../../../developer/drt.rst:120
#: ../../../developer/swarm.md:493
msgid "Implementation"
msgstr "Εφαρμογή"
#: ../../../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 ""
"Η εφαρμογή είναι αρκετά απλή. Όλα διαχειρίζονται από `conference.cpp` (για "
"να συνδέσετε τον συμμετέχοντα με τις πηγές) και `video_mixer.cpp` (για να "
"αναδεικνύετε την επιθυμητή διάταξη)."
#: ../../../developer/conference-protocol.md:43
msgid "Syncing Conferences Informations"
msgstr "Συγχρονισμός των διασκέψεων Πληροφορίες"
#: ../../../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 ""
"Σημείωση: Στην πραγματικότητα, η λέξη συμμετέχων χρησιμοποιείται για callId "
"που αναμειγνύεται σε μια διάσκεψη."
#: ../../../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 ""
"Ο στόχος είναι να ενημερωθούν όλοι οι συμμετέχοντες για τα μεταδεδομένα του "
"παραδομένου βίντεο."
#: ../../../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 ""
"Εάν ένας συμμετέχων είναι ο ίδιος συνέδριο, οι πληροφορίες του εισερχόμενου "
"σχεδιασμού πρέπει να συγχωνεύονται όταν αποστέλλονται σε άλλους "
"συμμετέχοντες."
#: ../../../developer/conference-protocol.md:51
msgid "Layout Info"
msgstr "Πληροφορίες σχεδιασμού"
#: ../../../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 ""
"Η διάταξη αποθηκεύεται ως VectorMapStringString για πελάτες και εσωτερικά με"
" έναν vektor<ParticipantInfo> με την ακόλουθη μορφή:"
#: ../../../developer/conference-protocol.md:67
msgid "Possible keys are:"
msgstr "Πιθανό κλειδί είναι:"
#: ../../../developer/conference-protocol.md:69
msgid "uri = account's uri"
msgstr "uri = uri του λογαριασμού"
#: ../../../developer/conference-protocol.md:70
msgid "device = device's id"
msgstr "συσκευή = ταυτότητα της συσκευής"
#: ../../../developer/conference-protocol.md:71
msgid "media = media's id"
msgstr "media = ταυτότητα του μέσου"
#: ../../../developer/conference-protocol.md:72
msgid "active = if the participant is active"
msgstr "ενεργός = αν ο συμμετέχων είναι ενεργός"
#: ../../../developer/conference-protocol.md:73
msgid "x = position (x) in the video"
msgstr "x = θέση (x) στο βίντεο"
#: ../../../developer/conference-protocol.md:74
msgid "y = position (y) in the video"
msgstr "y = θέση (y) στο βίντεο"
#: ../../../developer/conference-protocol.md:75
msgid "w = size (width) in the video"
msgstr "w = μέγεθος (εύθοδος) στο βίντεο"
#: ../../../developer/conference-protocol.md:76
msgid "h = size (height) in the video"
msgstr "h = μέγεθος (πάνω) στο βίντεο"
#: ../../../developer/conference-protocol.md:77
msgid "videoMuted = if the video is muted"
msgstr "βίντεο Ακωδικοποιημένο = αν το βίντεο είναι ακωδικοποιημένο"
#: ../../../developer/conference-protocol.md:78
msgid "audioLocalMuted = if the audio is locally muted"
msgstr "audioLocalMuted = αν το ήχο είναι τοπικά αθόρυβο"
#: ../../../developer/conference-protocol.md:79
msgid "audioModeratorMuted = if the audio is muted by moderators"
msgstr "audioModeratorMuted = αν το ήχο είναι αθόρυβο από τους διαχειριστές"
#: ../../../developer/conference-protocol.md:80
msgid "isModerator = if it's a moderator"
msgstr "isModerator = αν είναι ένας διαχειριστής"
#: ../../../developer/conference-protocol.md:81
msgid "handRaised = if the hand is raised"
msgstr "αν το χέρι είναι ανυψωμένο"
#: ../../../developer/conference-protocol.md:82
msgid "voiceActivity = if the stream has voice activity"
msgstr "voiceActivity = αν η ροή έχει φωνητική δραστηριότητα"
#: ../../../developer/conference-protocol.md:83
msgid "recording = if the peer is recording the conference"
msgstr "ηχογράφηση = αν ο συνάδελφος ηχογραφεί τη διάσκεψη"
#: ../../../developer/conference-protocol.md:85
msgid "New API"
msgstr "Νέα API"
#: ../../../developer/conference-protocol.md:87
msgid ""
"A new method (in CallManager) and a new signal to respectively get current "
"conference infos and updates are available:"
msgstr ""
"Μια νέα μέθοδος (σε CallManager) και ένα νέο σήμα για να λαμβάνονται "
"αντίστοιχα τρέχουσες πληροφορίες και ενημερώσεις για τη διάσκεψη είναι "
"διαθέσιμες:"
#: ../../../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 ""
"Το `Συνέδριο`Object (το οποίο υπάρχει μόνο αν αναμιγνύουμε κλήσεις, αυτό "
"σημαίνει ότι είμαστε ο κύριος) διαχειρίζεται τις πληροφορίες για ολόκληρη τη"
" διάσκεψη, με βάση τις LayoutInfos κάθε `Call`object."
#: ../../../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 ""
"Έτσι, κάθε `Καλή ` αντικείμενο έχει τώρα μια LayoutInfo και αν ενημερωθεί, "
"ζητήστε από το `Συνδιάσκεψη ` αντικείμενο να ενημερώνει τις πληροφορίες του."
#: ../../../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 ""
"Ο διευθυντής μιας διάσκεψης στέλνει τις πληροφορίες του μέσω του κανάλι SIP "
"ως μήνυμα με τον ακόλουθο τύπο MIME: `application/confInfo+json`"
#: ../../../developer/conference-protocol.md:104
msgid ""
"So, if a call receives some confInfo, we know that this call is a member of "
"a conference."
msgstr ""
"Έτσι, αν μια κλήση λαμβάνει κάποια πληροφορία, ξέρουμε ότι αυτή η κλήση "
"είναι μέλος μιας διάσκεψης."
#: ../../../developer/conference-protocol.md:106
msgid ""
"To summarize, `Call` manages received layouts, `Conference`-managed sent "
"layouts."
msgstr ""
"Για να συνοψίσουμε, η `Call` διαχειρίζεται τις παραλαβές διαρθρώσεων, η "
"`Conference`-managed έστειλε διαρθρώσεις."
#: ../../../developer/conference-protocol.md:108
msgid "Changing the state of the conference"
msgstr "Αλλαγή της κατάστασης της διάσκεψης"
#: ../../../developer/conference-protocol.md:110
msgid ""
"To change the state of the conference, participants needs to send orders "
"that the host will handle."
msgstr ""
"Για να αλλάξει η κατάσταση του συνέδρου, οι συμμετέχοντες πρέπει να στείλουν"
" εντολές που θα χειριστεί ο οικοδεσπότης."
#: ../../../developer/conference-protocol.md:112
msgid "The protocol have the following needs:"
msgstr "Το πρωτόκολλο έχει τις ακόλουθες ανάγκες:"
#: ../../../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 "Για μια διάσκεψη, είναι 3 επίπεδα για να ορίσετε έναν συμμετέχοντα:"
#: ../../../developer/conference-protocol.md:115
msgid "The account which is the identity of the participant"
msgstr "Το λογαριασμό που αποτελεί την ταυτότητα του συμμετέχοντος"
#: ../../../developer/conference-protocol.md:116
msgid "Devices, because each account can join via multiple devices"
msgstr ""
"Συσκευές, επειδή κάθε λογαριασμός μπορεί να ενωθεί μέσω πολλαπλών συσκευών"
#: ../../../developer/conference-protocol.md:117
msgid ""
"Medias, because there can be multiple videos by devices (eg 1 camera and 1 "
"screen sharing)"
msgstr ""
"Μέσα, επειδή μπορεί να υπάρχουν πολλαπλά βίντεο από συσκευές (π.χ. 1 κάμερα "
"και 1 κοινή χρήση οθόνης)"
#: ../../../developer/conference-protocol.md:119
msgid ""
"To save bandwidth, clients should be able to send multiple orders at once."
msgstr ""
"Για να εξοικονομήσει το εύρος ζώνης, οι πελάτες θα πρέπει να μπορούν να "
"στέλνουν πολλές παραγγελίες ταυτόχρονα."
#: ../../../developer/conference-protocol.md:121
msgid "General actions"
msgstr "Γενικές ενέργειες"
#: ../../../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 ""
"Για να αλλάξει μια διάταξη, ο διαχειριστής μπορεί να στείλει ένα ωφέλιμο "
"φορτίο με \"application/confOrder+json\" ως τύπο: όπου **0** είναι μια "
"πλέγμα, **1** είναι ένας χρήστης σε μεγάλο, άλλοι σε μικρό, **2** είναι ένας"
" σε μεγάλο"
#: ../../../developer/conference-protocol.md:126
msgid "Account's actions"
msgstr "Δράσεις του λογαριασμού"
#: ../../../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 ""
"Προς το παρόν, δεν υποστηρίζεται καμία ενέργεια, ωστόσο, στο μέλλον `ο "
"διαχειριστής: πρέπει να χειριστείται true/false` για να αλλάξει ένας "
"διαχειριστής."
#: ../../../developer/conference-protocol.md:130
msgid "Device's actions"
msgstr "Δράσεις της συσκευής"
#: ../../../developer/conference-protocol.md:132
msgid ""
"`hangup: true` to hangup a device from the conference (only moderators)"
msgstr ""
"`hangup: true` για να κρεμάσετε μια συσκευή από τη διάσκεψη (μόνο οι "
"διαχειριστές)"
#: ../../../developer/conference-protocol.md:133
msgid ""
"`raisehand: true/false` to change the raise hand's status. Only doable by "
"the device itself, else dropped."
msgstr ""
"`raisehand: true/false ` για να αλλάξει το καθεστώς του χειριού ανύψωσης."
#: ../../../developer/conference-protocol.md:135
msgid "Media's actions"
msgstr "Οι ενέργειες των μέσων ενημέρωσης"
#: ../../../developer/conference-protocol.md:137
msgid ""
"`muteAudio` only doable by moderators to mute the audio of a participant"
msgstr ""
"`muteAudio` μόνον από τους διαχειριστές μπορεί να σιωπηλάσει το ήχο ενός "
"συμμετέχοντος"
#: ../../../developer/conference-protocol.md:138
msgid "`muteVideo` not supported yet."
msgstr "`muteVideo` δεν υποστηρίζεται ακόμα."
#: ../../../developer/conference-protocol.md:139
msgid "`active` to mark the media as active."
msgstr "`active` για να σημειωθεί ότι τα μέσα ενημέρωσης είναι ενεργά."
#: ../../../developer/conference-protocol.md:140
msgid ""
"`voiceActivity` to indiciate a media stream's voice activity status (only "
"relevant for audio)"
msgstr ""
"`ακουστική δραστηριότητα` για να αναδειχθεί η κατάσταση της φωνητικής "
"δραστηριότητας ενός ρεύματος μέσων ενημέρωσης (μόνο σχετική με το ήχο)"
#: ../../../developer/conference-protocol.md:142
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Example"
msgstr "Παραδείγματος"
#: ../../../developer/conference-protocol.md:144
msgid "So, the `application/confOrder+json` will contains:"
msgstr "Έτσι, η `application/confOrder+json` θα περιέχει:"
#: ../../../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 ""
"Σημείωση: ο τύπος του μέσου πρέπει να περιλαμβάνεται στις πληροφορίες των "
"συνεδριάσεων και μπορεί να χρησιμοποιηθεί για τον πελάτη για τη βελτίωση της"
" προβολής (π.χ. μην διαχωρίζετε το διαμοιρασμό οθόνης)"
#: ../../../developer/conference-protocol.md:172
msgid "Controlling moderators"
msgstr "Ελέγχος των διαχειριστών"
#: ../../../developer/conference-protocol.md:174
msgid "There is actually 3 possibilities:"
msgstr "Υπάρχουν στην πραγματικότητα 3 πιθανότητες:"
#: ../../../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 ""
"Συγκρότηση του λογαριασμού αλλαγής για να προστεθεί λίστα διαχειριστών (Στη "
"config.yml (`defaultModerators` μπορεί να περιέχει λίστα διαχειριστών "
"προεπιλεγμένων)"
#: ../../../developer/conference-protocol.md:177
msgid ""
"If `localModeratorsEnabled` is true, all accounts of the device will be "
"moderators"
msgstr ""
"Εάν `localModeratorsEnabled` είναι αλήθεια, όλες οι λογαριασμοί της συσκευής"
" θα είναι διαχειριστές"
#: ../../../developer/conference-protocol.md:178
msgid ""
"If `allModeratorsEnabled` is true, anybody in the conference will be a "
"moderator"
msgstr ""
"Αν είναι αλήθεια ότι όλοι οι διαχειριστές έχουν ενεργοποιηθεί, οποιοσδήποτε "
"στο συνέδριο θα είναι διαχειριστής"
#: ../../../developer/conference-protocol.md:183
msgid "Separate streams to allow more controls?"
msgstr "Ειδικές ροές για να επιτρέψουμε περισσότερους ελέγχους;"
#: ../../../developer/conference-protocol.md:185
msgid "Notes/Comments"
msgstr "Σημειώσεις/Επισημειώσεις"
#: ../../../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 ""
"Είναι πιθανό το πρωτόκολλο να εξελιχθεί για μελλοντικές ανάγκες. Πιστεύω ότι"
" είναι καλύτερο αν έχουμε ένα πεδίο \"επιστολή\"."
#: ../../../developer/connection-manager.md:1
msgid "The connection manager"
msgstr "Ο διαχειριστής σύνδεσης"
#: ../../../developer/connection-manager.md:4
#: ../../../developer/file-transfer.md:49 ../../../developer/introduction.md:1
#: ../../../developer/location-sharing.md:42
msgid "Introduction"
msgstr "Εισαγωγή"
#: ../../../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 ""
"Ο διαχειριστής σύνδεσης είναι το πρώτο κομμάτι των χαρακτηριστικών ομάδας "
"συνομιλίας. Αυτή η τάξη διαχειρίζεται τις συνδέσεις με τους ομοτίμους και "
"προσφέρει στον χρήστη πολλαπλασιασμένες πρίζες σε συσκευές που θέλουν να "
"συνδεθούν. Για παράδειγμα, αν η Alice θέλει να συνδεθεί με μια συσκευή του "
"Bob για τη μεταφορά 2 αρχείων, θα ζητήσει από τον Διαχειριστή σύνδεσης να "
"ανοίξει 2 κανάλια (ένα ανά αρχείο) στον Bob. Αυτό θα δώσει:"
#: ../../../developer/connection-manager.md:24
msgid ""
"Behind that, the ConnectionManager will first connect to Bob's device via "
"the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a channel, "
"and when the channel is ready, inform Alice via a callback. For the second "
"file, it will use the first socket and will just open a new channel (only "
"needs 2 TLS packet, so it's fast)"
msgstr ""
"Πίσω από αυτό, ο ConnectionManager θα συνδεθεί πρώτα με τη συσκευή του Bob "
"μέσω του DHT (μέσω του ICE) και θα ρυθμίσει ένα TLS Socket. Στη συνέχεια, θα"
" ζητήσει ένα κανάλι, και όταν το κανάλι είναι έτοιμο, ενημερώστε την Alice "
"μέσω ενός callback. Για το δεύτερο αρχείο, θα χρησιμοποιήσει το πρώτο socket"
" και θα ανοίξει απλά ένα νέο κανάλι (απλά χρειάζεται 2 TLS πακέτα, οπότε "
"είναι γρήγορο)"
#: ../../../developer/connection-manager.md:26
msgid "DHT side"
msgstr "Δεξοδική πλευρά DHT"
#: ../../../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`, βλέπε **Exchange ICE υποψήφιοι**, **ICE "
"διαπραγμάτευση**, **Encrypt το control socket** αλλά μόνο στο TCP."
#: ../../../developer/connection-manager.md:30
msgid ""
"However, when a side receives a new ICE request, the callback set by ` void "
"onICERequest(onICERequestCallback&& cb);` is triggered."
msgstr ""
"Ωστόσο, όταν μια πλευρά λαμβάνει νέα αίτηση ICE, ενεργοποιείται η ανάκληση "
"που καθορίζεται από ` άκυρη onICERequest(onICERequestCallback&&& cb);`."
#: ../../../developer/connection-manager.md:32
msgid "Negotiating a new channel"
msgstr "Διαπραγματεύονται για ένα νέο κανάλι"
#: ../../../developer/connection-manager.md:34
msgid ""
"A channel is defined by an id (unique) and a uri (not unique). For example "
"(1, 'git://*')"
msgstr "Ένα κανάλι ορίζεται από ένα id (μονώδες) και ένα uri (μη μοναδικό)."
#: ../../../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 ""
"Όταν είναι έτοιμο, ο Διαχειριστής Συνδέσεων θεωρεί ότι υπάρχει το κανάλι 0."
#: ../../../developer/connection-manager.md:38
msgid "The protocol used is pretty simple and looks like the RTP protocol:"
msgstr ""
"Το πρωτόκολλο που χρησιμοποιείται είναι αρκετά απλό και μοιάζει με το "
"πρωτόκολλο RTP:"
#: ../../../developer/connection-manager.md:40
msgid "16 bits are used to store the length of the body."
msgstr "16 bits χρησιμοποιούνται για να αποθηκεύσει το μήκος του σώματος."
#: ../../../developer/connection-manager.md:41
msgid "16 bits for the channel id (destination)"
msgstr "16 bits για το id καναλιού (διαδρομή)"
#: ../../../developer/connection-manager.md:42
msgid "body"
msgstr "σώμα"
#: ../../../developer/connection-manager.md:44
msgid "So all packets have a 32 bits len header."
msgstr "Έτσι όλα τα πακέτα έχουν ένα 32 bits len header."
#: ../../../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 ""
"Για να ζητήσει ένα νέο κανάλι, ο Διαχειριστής Σύνδεσης θα στείλει ένα "
"`ChannelRequest` αντικείμενο (msgpack χρησιμοποιείται για να σειριαστεί το "
"δομή) στο κανάλι 0 για να στείλει το id και το όνομα του νέου κανάλι στον "
"ομολόγο (με `isAnswer = false`)."
#: ../../../developer/connection-manager.md:48
msgid "Closing a channel"
msgstr "Κλείσιμο κανάλου"
#: ../../../developer/connection-manager.md:50
msgid ""
"A *EOF* is transmitted for a channel if the length of the content is 0."
msgstr ""
"Ένα *EOF* μεταδίδεται για ένα κανάλι εάν το μήκος του περιεχομένου είναι 0."
#: ../../../developer/connection-manager.md:52
msgid "Structure of the connectionManager"
msgstr "Διαρθρωση της σύνδεσηςΔιοικητής"
#: ../../../developer/connection-manager.md:54
msgid "Ownership"
msgstr "Ιδιοκτησία"
#: ../../../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 κατέχει το ConnectionManager και έχει πρόσβαση στα "
"αντικείμενα ChannelSocket (shared_ptr που ανήκει στο MultiplexedSocket."
#: ../../../developer/connection-manager.md:57
msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
msgstr "Ο ConnectionManager κατέχει MultiplexedSockets και αντικείμενα ICE"
#: ../../../developer/connection-manager.md:58
msgid ""
"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
msgstr ""
"Το MultiplexedSockets κατέχει την μεταφορά TLS και τα αντικείμενα "
"ChannelSocket"
#: ../../../developer/connection-manager.md:59
msgid "ChannelSocket owns the data buffers"
msgstr "Η ChannelSocket κατέχει τα μπουφέρ δεδομένων"
#: ../../../developer/connection-manager.md:61
msgid "Roles"
msgstr "Χρήστες"
#: ../../../developer/connection-manager.md:63
msgid "ConnectionManager is used to manage connections to peers."
msgstr ""
"Ο ConnectionManager χρησιμοποιείται για τη διαχείριση συνδέσεων με "
"ομοτίμους."
#: ../../../developer/connection-manager.md:64
msgid ""
"MultiplexedSockets are used to send data over the TLSSocket, read the "
"incoming packets and manage channels."
msgstr ""
"Τα MultiplexedSockets χρησιμοποιούνται για την αποστολή δεδομένων μέσω του "
"TLSSocket, τη διάγνωση των εισερχόμενων πακέτων και τη διαχείριση των "
"καναλιών."
#: ../../../developer/connection-manager.md:65
msgid "ChannelSockets are used by the client to interact with the other peer."
msgstr ""
"Τα ChannelSockets χρησιμοποιούνται από τον πελάτη για να αλληλεπιδράσει με "
"τον άλλο ομοτίμο."
#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:620
msgid "Usage"
msgstr "Χρήση"
#: ../../../developer/connection-manager.md:69
msgid ""
"Scenarios are described in the corresponding unit tests "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
msgstr ""
"Τα σενάρια περιγράφονται στις αντίστοιχες δοκιμές μονάδας "
"(`test/unitTest/connectionManager/connectionManager.cpp`)"
#: ../../../developer/contact-management.md:1
msgid "Contact management"
msgstr "Διαχείριση επαφών"
#: ../../../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 ""
"Σε αυτό το τμήμα θα περιγραφεί πώς να βρείτε και να προσθέσετε έναν επαφή "
"από το DHT στον πελάτη."
#: ../../../developer/contact-management.md:6
msgid "Presence on the network"
msgstr "Παρουσία στο δίκτυο"
#: ../../../developer/contact-management.md:8
msgid "Announce the presence on the DHT"
msgstr "Ανακοίνωσε την παρουσία του DHT"
#: ../../../developer/contact-management.md:10
msgid ""
"The presence is pretty simple to announce on the DHT. In fact, it's just a "
"value containing the device hash (see the previous section, {doc}`account-"
"management`) on the hash corresponding to the fingerprint of the key. So, if"
" we have the account `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the "
"device `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined "
"value will be sent over the DHT:"
msgstr ""
"Η παρουσία είναι αρκετά απλή για να ανακοινωθεί στο DHT. Στην "
"πραγματικότητα, είναι απλά μια τιμή που περιέχει το hash της συσκευής (βλ. "
"την προηγούμενη ενότητα, {doc}`-account-management`) στο hash που "
"αντιστοιχεί στο αποτύπωμα δακτυλικών αποτυπωμάτων του κλειδιού. Έτσι, αν "
"έχουμε το λογαριασμό `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` με τη "
"συσκευή `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, η ακόλουθη καθορισμένη "
"τιμή θα αποσταθεί μέσω της DHT:"
#: ../../../developer/contact-management.md:29
msgid ""
"(This value can be put with `dht_.put(h, VALUE, dht::DoneCallback{}, {}, "
"true);`, as a permanent put). If the device is announced, the device is "
"present. For now, there is no way to delete or edit a value on the DHT (this"
" will come when OpenDHT will supports ECC). So, the presence always have a "
"delay for now (mean delay: expire-time/2, so 2min30 for now)."
msgstr ""
"(Αυτή η τιμή μπορεί να τοποθετηθεί με `dht_.put(h, VALUE, "
"dht::DoneCallback{}, {}, true);`, ως μόνιμη θέση). Εάν ανακοινωθεί η "
"συσκευή, η συσκευή είναι παρούσα."
#: ../../../developer/contact-management.md:31
msgid "Get if a contact is present"
msgstr "Φέρτε αν υπάρχει επαφή."
#: ../../../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 ""
"Τώρα η παρουσία μας στο δίκτυο, είναι ώρα να βρούμε αν κάποιος είναι παρόν "
"στο DHT. Με το προηγούμενο τμήμα, είναι εύκολο να κάνουμε την αντίστροφη "
"διαδικασία. Για να ξέρουμε αν κάποιος είναι παρόν στο DHT (π.χ.: "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9`), πρέπει να βρούμε την τιμή στο "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` και να ανακτήσουμε την "
"`DeviceAnnouncement` σε αυτό το hash. Ο σχετικός κωδικός στο δακτυλικό "
"δαίμον είναι στο `ccount.cpp`:"
#: ../../../developer/contact-management.md:66
msgid "And that's all."
msgstr "Και αυτό είναι όλο."
#: ../../../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 "Εξακολουθεί να ισχύει η αίτηση"
#: ../../../developer/contact-management.md:149
msgid "Send a request"
msgstr "Στείλε αίτηση"
#: ../../../developer/contact-management.md:151
msgid "**TODO craft request**"
msgstr "**Είναι αίτηση πλοίων TODO**"
#: ../../../developer/contact-management.md:153
msgid ""
"Finally, once the trust request is crafted, we can push the request to the "
"following hash: `InfoHash(\"inbox:\" + deviceId)`"
msgstr ""
"Τέλος, μόλις δημιουργηθεί το αίτημα εμπιστοσύνης, μπορούμε να ωθήσουμε το "
"αίτημα στο ακόλουθο χασά: `InfoHash(\"inbox:\" + deviceId) `"
#: ../../../developer/contact-management.md:155
msgid "The following code is used in the daemon:"
msgstr "Ο ακόλουθος κωδικός χρησιμοποιείται στο daemon:"
#: ../../../developer/contact-management.md:160
msgid "Receiving a request"
msgstr "Αποκλήρωση αιτήματος"
#: ../../../developer/contact-management.md:164
msgid "(Accept/Block/Discard)"
msgstr "(Αποδοχή/Μέκλεισμός/Απορρίψιμο)"
#: ../../../developer/contact-management.md:166
msgid "Daemon API"
msgstr "API Daemon"
#: ../../../developer/contact-management.md:168
msgid ""
"All methods to follow the presence of a buddy is located in the "
"`PresenceManager` such as:"
msgstr ""
"Όλες οι μεθόδους παρακολούθησης της παρουσίας ενός φίλου βρίσκονται στο "
"`PresenceManager`, όπως:"
#: ../../../developer/contact-management.md:199
msgid ""
"All methods and signals used to manage trust requests and contacts are in "
"the `ConfigurationManager` such as:"
msgstr ""
"Όλες οι μέθοδοι και τα σήματα που χρησιμοποιούνται για τη διαχείριση "
"αιτήσεων εμπιστοσύνης και επαφών βρίσκονται στο `ConfigurationManager`, "
"όπως:"
#: ../../../developer/contact-management.md:291
msgid ""
"If you want some examples, these methods are used into `contactmodel.cpp` in"
" LRC."
msgstr ""
"Εάν θέλετε μερικά παραδείγματα, οι μέθοδοι αυτές χρησιμοποιούνται στο "
"`contactmodel.cpp` στο LRC."
#: ../../../developer/debugging-tools.rst:2
msgid "Debugging Tools"
msgstr "Εργαλεία Αποσυνθέτησης"
#: ../../../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 ""
"Υπάρχουν διάφοροι τρόποι για να απορρίψεις το Jami από την άποψη του "
"προγραμματιστή, ανάλογα με το τι θέλεις να απορρίψεις."
#: ../../../developer/debugging-tools.rst:7
msgid "Loggers"
msgstr "Δασκοπηγείς"
#: ../../../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 ""
"Ο πρώτος τρόπος είναι να χρησιμοποιήσετε καταγραφείς runtime. Ξεκινώντας με "
"`jami` με `-d` θα επιτρέψει τη καταγραφή από το deamon (ή το τμήμα επίλυσης "
"προβλημάτων στις Γενικές ρυθμίσεις). Επειδή η Jami χρησιμοποιεί πολλές "
"βιβλιοθήκες, δεν ενεργοποιούμε όλες τις καταγραφές κατά προεπιλογή."
#: ../../../developer/debugging-tools.rst:13
msgid "`SIPLOGLEVEL=5` for enabling logs from PJSIP."
msgstr "`SIPLOGLEVEL=5` για την ενεργοποίηση των καταγραφών από το PJSIP."
#: ../../../developer/debugging-tools.rst:14
msgid "`DHTLOGLEVEL=5` for enabling logs from OpenDHT."
msgstr "`DHTLOGLEVEL=5` για την ενεργοποίηση των καταγραφών από το OpenDHT."
#: ../../../developer/debugging-tools.rst:15
msgid "`AVLOGLEVEL=50` for enabling logs from ffmpeg."
msgstr "`AVLOGLEVEL=50` για την ενεργοποίηση των καταγραφών από ffmpeg."
#: ../../../developer/debugging-tools.rst:18
msgid "Debuggers"
msgstr "Επισκευές"
#: ../../../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 ""
"Γενικά το IDE σας έχει ενσωματωμένο debuggger. Διαφορετικά, μπορείτε να "
"χρησιμοποιήσετε `gdb` για παράδειγμα για να μπορείτε να προσθέσετε σημεία "
"διακοπής, αναδρομές από συντριβές, εκτύπωση εσωτερικών δομών, κλπ. Πρέπει να"
" συντάξετε το έργο στη λειτουργία *DEBUG* για να πάρετε σύμβολα αποσφάλειας."
#: ../../../developer/debugging-tools.rst:24
msgid "Some useful commands:"
msgstr "Μερικές χρήσιμες εντολές:"
#: ../../../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` - Προσθέστε ένα σημείο διακοπής (*file.cpp:line* μπορεί να"
" αντικατασταθεί από σύμβολο)"
#: ../../../developer/debugging-tools.rst:27
msgid "`t a a bt` - (thread apply all backtrace) to get all backtraces"
msgstr ""
"`t a a bt` - (πράγματος: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: "
"πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: "
"πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: "
"πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: πιο: "
"πιο: πιο: πιο: π: πιο: πιο: π: π: πιο: π: π: π: π: π: π: π: π: π: π: π: π: "
#: ../../../developer/debugging-tools.rst:28
msgid "`Ctrl + X / A` - pass in graphical view"
msgstr "`Ctrl + X / A` - περάστε σε γραφική προβολή"
#: ../../../developer/debugging-tools.rst:29
msgid "`p` - print an internal value."
msgstr "`p` - εκτυπώστε μια εσωτερική τιμή."
#: ../../../developer/debugging-tools.rst:32
msgid "Profilers"
msgstr "Προφίλ"
#: ../../../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 ""
"Τα debuggers είναι χρήσιμα, αλλά δεν δείχνουν κατανάλωση "
"μνήμης/δραστηριότητα δικτύου/χρησιμοποίηση CPU σε πραγματικό χρόνο."
#: ../../../developer/debugging-tools.rst:39
msgid "Address Sanitizer"
msgstr "Καθαρίσματος διευθύνσεων"
#: ../../../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 ""
"Αυτό μπορεί να είναι χρήσιμο για την ανίχνευση διαρροών, συντριβών, πιθανών "
"αδιέξοδος κατά τη διάρκεια της λειτουργίας."
#: ../../../developer/debugging-tools.rst:45
msgid "Valgrind/Callgrind"
msgstr "Βάλγκριντ/Καλγκριντ"
#: ../../../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 είναι ένα εργαλείο για την παρακολούθηση των κατανομών, της "
"χρήσης CPU και άλλων και μπορεί να χρησιμοποιηθεί μέσω: `valgrind "
"--tool=callgrind./jami -d`. Αυτό θα κάνει την εφαρμογή πολύ αργή αλλά μπορεί"
" να παράσχει χρήσιμες εκθέσεις σχετικά με τη χρήση μνήμης / απόδοσης "
"(**KCacheGrind** μπορεί να χρησιμοποιηθεί για την ανάγνωση εκθέσεων)."
#: ../../../developer/debugging-tools.rst:52
msgid "Tests"
msgstr "Εξετάσεις"
#: ../../../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 έχει πολλές δοκιμές και έχει ενεργοποιηθεί την κάλυψη. Εάν το "
"Daemon είναι κατασκευασμένο στατικά (άλλοι ιδιωτικοί σύμβολοι δεν θα είναι "
"διαθέσιμοι), η προσθήκη νέων δοκιμών μπορεί να βοηθήσει στην αναπαραγωγή "
"σφάλσεων, την επίλυση σφάλσεων και την αποφυγή οποιασδήποτε υποτροπής."
#: ../../../developer/debugging-tools.rst:59
msgid "Agent"
msgstr "Πράκτορα."
#: ../../../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 ""
"Οι δοκιμές χρησιμοποιούν μόνο ένα δαίμον για να προσομοιώσουν και τους δύο "
"ομοτίμους. Έτσι μπορεί να είναι δύσκολο να δοκιμαστεί σε διάφορα "
"περιβάλλοντα."
#: ../../../developer/debugging-tools.rst:66
msgid "LTTng"
msgstr "Επικοινωνία"
#: ../../../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 ""
"Τέλος, μπορούν να δημιουργηθούν και να αναλύονται τα tracepoints. "
"`daemon/tools/trace` παρέχουν την τεκμηρίωση και μερικά παραδείγματα. Το "
"πλεονέκτημα του LTTng είναι ότι είναι ταχύτερο από τα ημερολόγια, μπορεί να "
"ενεργοποιηθεί από συστημικά γεγονότα και μπορεί να χρησιμοποιηθεί με τα "
"tracepoints που υπάρχουν ήδη στον πυρήνα (για να μπορεί να χρησιμοποιηθεί με"
" τα tracepoints από τις διεπαφές δικτύου)."
#: ../../../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 "Πραγματική διαδικασία"
#: ../../../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 "Επαίτηση χαρακτηριστικών"
#: ../../../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 ""
"Αυτή η σελίδα υπάρχει για να ταξινομήσει τα αιτήματα χαρακτηριστικών ανά "
"σχόλιο των χρηστών, για να αποφευχθεί η αφήση εισιτηρίων ανοιχτών για "
"χρόνια."
#: ../../../developer/feature-requests.md:8
msgid "SFL"
msgstr "ΣΦΛ"
#: ../../../developer/feature-requests.md:10
msgid ""
"{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`"
" -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress"
msgstr ""
"{daemon-issue}` Εφαρμόστε καλώδιο διασύνδεσης <13> για να υποστηρίξετε τη "
"διαμοιραστική χρήση οθόνης στο Wayland` -> Επικοινωνία #Jami (Adrien, "
"Sébastien, κλπ.) / hard / Σε εξέλιξη"
#: ../../../developer/feature-requests.md:12
msgid "Connectivity -> Contact #Jami (Sébastien) / medium:"
msgstr "Συνδεσιμότητα -> Επικοινωνία #Jami (Sébastien) / μέσο:"
#: ../../../developer/feature-requests.md:13
msgid "TURN ipv6 support"
msgstr "Υποστήριξη TURN ipv6"
#: ../../../developer/feature-requests.md:14
msgid "connection ipv6 only<->ipv4 only"
msgstr "Σύνδεση ipv6 μόνο<->ipv4 μόνο"
#: ../../../developer/feature-requests.md:15
msgid "SIP:"
msgstr "ΣΥΡ:"
#: ../../../developer/feature-requests.md:16
msgid "Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy"
msgstr ""
"Διορθώστε το IP σε IP -> Επικοινωνήστε με #Jami (Adrien, Sébastien) / εύκολο"
#: ../../../developer/feature-requests.md:17
msgid "Add unit-tests / probably easy"
msgstr "Προσθέστε δοκιμές μονάδας / πιθανότατα εύκολο"
#: ../../../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 ""
"Αναζήτηση σε επαφές του συστήματος ({client-gnome-issue}`1191`, {client-"
"gnome-issue}`829`, κλπ.) -> Επικοινωνία #Jami (Adrien, Sébastien, Andreas, "
"κλπ.) / εύκολο αλλά μακρύ"
#: ../../../developer/feature-requests.md:21
msgid "Crypto: (Contact #Jami - Adrien)"
msgstr "Κρυπτογράφημα: (Συναντήσεις #Jami - Adrien)"
#: ../../../developer/feature-requests.md:22
msgid "Update media RTP ciphers for ffmpeg / probably easy"
msgstr "Ανακαινίστε τους κωδικούς RTP για ffmpeg / πιθανότατα εύκολο"
#: ../../../developer/feature-requests.md:23
msgid "Support ECC (instead RSA) for Jami accounts / hard but short"
msgstr "Υποστήριξη ECC (αντί RSA) για λογαριασμούς Jami / σκληρή αλλά σύντομη"
#: ../../../developer/feature-requests.md:24
msgid "Remove usages of SHA1 (ids + git) / hard"
msgstr "Απομακρύνετε τις χρήσεις του SHA1 (ids + git) / σκληρό"
#: ../../../developer/feature-requests.md:25
msgid "Media -> Contact #Jami (Adrien, Andreas, etc.)"
msgstr "Μέσα ενημέρωσης -> Επικοινωνία #Jami (Αντρίεν, Ανδρέας κλπ.)"
#: ../../../developer/feature-requests.md:26
msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard"
msgstr "Πιθανότατα σκληρή"
#: ../../../developer/feature-requests.md:27
msgid "Investigate audio quality (contact #Jami, medium difficulty)"
msgstr "Ερευνήσετε την ποιότητα του ήχου (επικοινωνία #Jami, μέση δυσκολία)"
#: ../../../developer/feature-requests.md:28
msgid "Plugins ideas: (Contact #Jami - Aline)"
msgstr "Ιδήσεις προσθήκη: (Συναντήσεις #Jami - Aline)"
#: ../../../developer/feature-requests.md:29
msgid "{plugins-issue}`Payment plug-in <27>`"
msgstr "Πληροφορίες για την πληρωμή"
#: ../../../developer/feature-requests.md:30
msgid "A chat-GPT plugin"
msgstr "Ένα προγραμματισμό για την επικοινωνία"
#: ../../../developer/feature-requests.md:31
msgid "Add new transports (e.g. QUIC?)"
msgstr "Προσθήκη νέων μεταφορών (π.χ. QUIC)"
#: ../../../developer/feature-requests.md:32
msgid "Add libtorrent support?"
msgstr "Να προσθέσουμε την υποστήριξη;"
#: ../../../developer/feature-requests.md:33
msgid ""
"Public page/personal blog available through Jami (Contact #Jami / medium "
"difficulty & long term project)"
msgstr ""
"Δημόσια σελίδα/προσωπικό blog διαθέσιμη μέσω του Jami (Επικοινωνία #Jami / "
"μεσαία δυσκολία & μακροπρόθεσμο έργο)"
#: ../../../developer/feature-requests.md:35
msgid "Qt:"
msgstr "ΚΤ:"
#: ../../../developer/feature-requests.md:36
msgid ""
"{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - "
"easy)"
msgstr ""
"{client-qt-issue}`Αναθέστε υποστήριξη για την ανακάλυψη από ομοτίμους<868>` "
"(επικοινωνία #Jami - εύκολο)"
#: ../../../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 ως εγγενής συστατικό για να αποφευχθεί η εξάρτηση από την qt-"
"webengine για αυτό (δεν είναι διαθέσιμο στο macOS) (π.χ. "
"https://github.com/jnodev/QMLemoji)"
#: ../../../developer/feature-requests.md:39
msgid ""
"Categorized conversations (like favorites, groups, etc) (to discuss with "
"#Jami)"
msgstr ""
"Κατηγοριοποιημένες συζητήσεις (όπως αγαπημένες, ομάδες, κλπ.) (για να "
"συζητηθούν με #Jami)"
#: ../../../developer/feature-requests.md:40
msgid "jami-web:"
msgstr "Τζάμι-έμπ:"
#: ../../../developer/feature-requests.md:41
msgid ""
"Design architecture to support calls between jami-web and desktop versions "
"-> Contact #Jami (Adrien, Sébastien) / hard"
msgstr ""
"Σχεδιασμός αρχιτεκτονικής για την υποστήριξη κλήσεων μεταξύ των εκδόσεων "
"jami-web και desktop -> Επικοινωνία #Jami (Adrien, Sébastien) / σκληρή"
#: ../../../developer/feature-requests.md:44
msgid ""
"Help for the Roadmap 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
msgstr ""
"Βοήθεια για το Δρόμο 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
#: ../../../developer/feature-requests.md:46
msgid "Some other ideas from tickets:"
msgstr "Μερικές άλλες ιδέες από τα εισιτήρια:"
#: ../../../developer/feature-requests.md:48
msgid "Planned/In progress"
msgstr "Προγραμματισμένο/Ετοιμαζόμενο"
#: ../../../developer/feature-requests.md:50
msgid ""
"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact Rennes"
msgstr ""
"Βελτιώστε το Jami στο Yocto (μερικά προβλήματα κωδικού/ καθυστέρηση στο i.MX"
" 6) -> Επικοινωνήστε με Rennes"
#: ../../../developer/feature-requests.md:52
msgid ""
"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> Contact #Jami (Andreas)"
msgstr ""
"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> Επικοινωνία #Jami (Andreas)"
#: ../../../developer/feature-requests.md:54
msgid "Redo emoji-picker with native component"
msgstr "Ετοιμάστε emoji-picker με εγγενή συστατικό"
#: ../../../developer/feature-requests.md:55
msgid "Implement designs from Charlotte"
msgstr "Σχεδιασμοί εφαρμογής από την Charlotte"
#: ../../../developer/feature-requests.md:56
msgid "Help for swarms (Sébastien)"
msgstr "Βοήθεια για τα σμήνη (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 "Η εγκατάσταση μιας εφαρμογής μπορεί να είναι βαρετή."
#: ../../../developer/feature-requests.md:61
msgid "Wanted but not planned"
msgstr "Αναζητούμενη αλλά όχι προγραμματισμένη"
#: ../../../developer/feature-requests.md:63
#: ../../../developer/feature-requests.md:93
msgid "?"
msgstr "- Τι;"
#: ../../../developer/feature-requests.md:65
msgid ""
"Can be implemented, contributions welcome (or will take months/years to "
"come)"
msgstr ""
"Μπορεί να εφαρμοστεί, οι συνεισφορές είναι ευπρόσδεκτες (ή θα διαρκέσουν "
"μήνες/ετηρία)"
#: ../../../developer/feature-requests.md:67
msgid ""
"{project-issue}`add possibility to show \"reachable at the following times\""
" (contact details) <1261>`"
msgstr ""
"{project-issue}` πρόσθετη δυνατότητα να δείξει \"απικοινωνία στις ακόλουθες "
"ώρες\" (δεκτικές πληροφορίες) <1261>`"
#: ../../../developer/feature-requests.md:69
msgid ""
"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
"ringtone) <1280>`"
msgstr ""
"{project-issue}`Προτιμήσεις ανά επαφή (αποδέσμευση κλήσεων, μεταφορά "
"αρχείων, προσαρμοσμένο χτυπήμα) <1280>`"
#: ../../../developer/feature-requests.md:71
msgid ""
"{project-issue}`Ability to create polls (ideally a plugin with swarm) "
"<1254>`"
msgstr ""
"{project-issue}`Επινόηση δημιουργίας δημοσκοπικών εκλογών (ιδανικά ένα "
"plugin με σμήνος) <1254>`"
#: ../../../developer/feature-requests.md:73
msgid "{project-issue}`Support for Panic buttons <623>`"
msgstr "Υποστήριξη για τα κουμπιά πανικού <623>"
#: ../../../developer/feature-requests.md:74
msgid "Matrix bridge"
msgstr "Γέφυρα Ματρίκης"
#: ../../../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 ""
"Πλήρης στήριξη TOR ή άλλες εναλλακτικές λύσεις όπως lokinet ({project-"
"issue}`922`, {project-issue}`622`, {project-issue}`495`), {project-"
"issue}`i2p <630>`"
#: ../../../developer/feature-requests.md:78
msgid "{project-issue}`Bluetooth support <774>`"
msgstr "Υποστήριξη Bluetooth"
#: ../../../developer/feature-requests.md:79
msgid "{project-issue}`Secret-based turn server <886>`"
msgstr "{project-issue}`Secret-based turn server <886>`"
#: ../../../developer/feature-requests.md:80
msgid "{client-android-issue}`Ability to compress files before sending <720>`"
msgstr ""
"{client-android-issue}`Επιαισία συμπίεσης αρχείων πριν από την αποστολή "
"<720>`"
#: ../../../developer/feature-requests.md:82
msgid "Ability to trim recorded clips before sending"
msgstr "Δυνατότητα κοπής καταγεγραμμένων κλιπ πριν από την αποστολή"
#: ../../../developer/feature-requests.md:83
msgid "{client-gnome-issue}`Spell checking support <1169>`"
msgstr "Πρωτοβουλία για την επιτήρηση της ερμηνείας <1169>"
#: ../../../developer/feature-requests.md:84
msgid "{project-issue}`Echo bot to test audio <392>`"
msgstr "Ο Echo bot για δοκιμή ήχου"
#: ../../../developer/feature-requests.md:85
msgid ""
"{project-issue}`Handle click on jami:uri system wide (missing "
"macOS/Android/iOS) <653>`"
msgstr ""
"Κάντε χειροκίνητο κλικ στο jami:uri system wide (που λείπει "
"macOS/Android/iOS) <653>"
#: ../../../developer/feature-requests.md:86
msgid ""
"{project-issue}`Initial audio mode <1288>` (need to wait for group chat)"
msgstr ""
"{project-issue}` Αρχική λειτουργία ήχου <1288>` (πρέπει να περιμένουμε για "
"ομαδική συνομιλία)"
#: ../../../developer/feature-requests.md:88
msgid "{project-issue}`Feature Request: Volume Slider <1524>`"
msgstr "Επισκόπηση: Επισκόπηση του όγκου <1524>"
#: ../../../developer/feature-requests.md:89
msgid "{client-qt-issue}`Portable version for Windows <170>`"
msgstr "{client-qt-issue}`Μεγαλύτερη έκδοση για Windows <170>`"
#: ../../../developer/feature-requests.md:91
msgid "Depends on mass changes"
msgstr "Εξαρτάται από τις αλλαγές μάζας"
#: ../../../developer/feature-requests.md:95
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:59
msgid "Packaging"
msgstr "Συσκευή"
#: ../../../developer/feature-requests.md:97
msgid "{client-gnome-issue}`FreeBSD support <1272>`"
msgstr "Επικοινωνία με την ΕΤΠ"
#: ../../../developer/feature-requests.md:99
msgid "Others"
msgstr "Άλλοι"
#: ../../../developer/feature-requests.md:101
msgid "{project-issue}`Collaborative editor <1010>`"
msgstr "Εργατικό συντάκτης"
#: ../../../developer/feature-requests.md:102
msgid "{project-issue}`A thunderbird plugin <516>`"
msgstr "Πραγματική έκδοση:"
#: ../../../developer/feature-requests.md:103
msgid "{project-issue}`OpenAlias <928>`"
msgstr "Πρωτοβουλία:"
#: ../../../developer/feature-requests.md:104
msgid "{project-issue}`CMIS integration <455>`"
msgstr "Πρωτοβουλία:"
#: ../../../developer/feature-requests.md:105
msgid "{project-issue}`Sound safety <441>`"
msgstr "Η ασφάλεια του ήχου"
#: ../../../developer/feature-requests.md:106
msgid ""
"{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
msgstr ""
"{client-gnome-issue}`Επινόηση να βλέπετε πολλές συνομιλίες ταυτόχρονα <909>`"
#: ../../../developer/feature-requests.md:107
msgid "{client-gnome-issue}`Vocoder option <957>`"
msgstr "{client-gnome-issue}`Εκλογή φωνητικού <957>`"
#: ../../../developer/feature-requests.md:108
msgid "{project-issue}`SOCKS5 support <430>`"
msgstr "Πρωτοβουλία:"
#: ../../../developer/feature-requests.md:109
msgid "{project-issue}`Cardbook integration <383>`"
msgstr "Τελική ενσωμάτωση"
#: ../../../developer/feature-requests.md:110
msgid "{project-issue}`Multiple instances running <629>`"
msgstr "{project-issue}`Πολλές περιπτώσεις που τρέχουν <629>`"
#: ../../../developer/feature-requests.md:111
msgid "{daemon-issue}`Whiteboard <181>`"
msgstr "Τελευταία έκθεση:"
#: ../../../developer/feature-requests.md:112
msgid "{client-android-issue}`Camera zoom <979#note_29386>`"
msgstr "Η κάμερα μετρώνεται"
#: ../../../developer/feature-requests.md:113
msgid "{client-qt-issue}`Emoji reaction in calls <497>`"
msgstr "{client-qt-issue}`Emoji αντίδραση σε κλήσεις <497>`"
#: ../../../developer/feature-requests.md:114
msgid "{client-android-issue}`Conversation's background <710>`"
msgstr "Πίσω από τη συζήτηση"
#: ../../../developer/feature-requests.md:115
msgid "{project-issue}`[Desktop] Option to have a Window per Chat <633>`"
msgstr ""
"{project-issue}`[Desktop] Επιλογή να έχετε ένα παράθυρο ανά Chat <633>`"
#: ../../../developer/feature-requests.md:116
msgid "{project-issue}`Multiple text selection <1096>`"
msgstr "{project-issue}`Πολλές επιλογές κειμένου <1096>`"
#: ../../../developer/feature-requests.md:117
msgid "{project-issue}`In-app sticker pack creation <1317>`"
msgstr "Πραγματική εκτέλεση:"
#: ../../../developer/feature-requests.md:118
msgid "{project-issue}`Re-order messages <1357>`"
msgstr "Πληροφορίες αναδιατύπωσης"
#: ../../../developer/feature-requests.md:119
msgid "{daemon-issue}`Remote control <349>`"
msgstr "Πιο απόσταση"
#: ../../../developer/feature-requests.md:120
msgid ""
"{client-android-issue}`Locked messages (feature that can be enabled to hide "
"messages until they are clicked upon) <1146>`"
msgstr ""
"{client-android-issue}` Κλειδωμένα μηνύματα (λειτουργικότητα που μπορεί να "
"ενεργοποιηθεί για να κρύψει μηνύματα μέχρι να κάνετε κλικ σε αυτά) <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 "Μεταφορά αρχείων"
#: ../../../developer/file-transfer.md:4
msgid "**THIS PAGE IS DEPRECATED: READ {ref}`developer/swarm:File transfer`**"
msgstr ""
"**Αυτή η ΣΗΜΕΡΑ ΑΠΟΥΛΑΙΣΕΙ: ΔΙΑΜΑΣΗ {ref}`developer/swarm:file transfer`**"
#: ../../../developer/file-transfer.md:7
#: ../../../developer/location-sharing.md:4
msgid "How to use it?"
msgstr "Πώς να το χρησιμοποιήσω;"
#: ../../../developer/file-transfer.md:10
#: ../../../developer/release-process.md:111
msgid "Gnome"
msgstr "Γνωμότητα"
#: ../../../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, σε μια συζήτηση πρέπει να κάνετε κλικ "
"στο εικονίδιο αποστολής αρχείων στο κάτω δεξιά μέρος της συζήτησης:"
#: ../../../developer/file-transfer.md:15
msgid ""
"![Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
msgstr ""
"! [Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
#: ../../../developer/file-transfer.md:15
msgid "Gnome_send_file"
msgstr "Gnome_send_file"
#: ../../../developer/file-transfer.md:17
msgid ""
"Then you will see your image as soon as the transfer is finished (and show "
"images is activated)"
msgstr ""
"Στη συνέχεια θα δείτε την εικόνα σας μόλις ολοκληρωθεί η μεταφορά (και η "
"επίδειξη εικόνων ενεργοποιείται)"
#: ../../../developer/file-transfer.md:20
msgid ""
"![Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
msgstr ""
"! [Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
#: ../../../developer/file-transfer.md:20
msgid "Gnome_image"
msgstr "Gnome_image"
#: ../../../developer/file-transfer.md:22
msgid ""
"On the contrary if you receive a file (and if it's not a picture &lt; 20 "
"Mb), you will have to accept the transfer:"
msgstr ""
"Αντίθετα, αν λάβετε ένα αρχείο (και αν δεν είναι μια εικόνα &lt; 20 Mb), θα "
"πρέπει να αποδεχτείτε τη μεταφορά:"
#: ../../../developer/file-transfer.md:25
msgid ""
"![Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)"
msgstr ""
"! [Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbb654e4e7e3f8e47/Gnome_accept.png)"
#: ../../../developer/file-transfer.md:25
msgid "Gnome_accept"
msgstr "Gnome_accept"
#: ../../../developer/file-transfer.md:27
msgid ""
"And then the file will be sent. You have the possibility to cancel in a "
"middle of a transfer."
msgstr "Και μετά το αρχείο θα αποσταλεί."
#: ../../../developer/file-transfer.md:30
msgid ""
"![Gnome_ongoing](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)"
msgstr "! [Gnome_ongoing]"
#: ../../../developer/file-transfer.md:30
msgid "Gnome_ongoing"
msgstr "Γνωμοσύνη"
#: ../../../developer/file-transfer.md:32
msgid "Android"
msgstr "Android"
#: ../../../developer/file-transfer.md:34
msgid ""
"When you are talking to somebody on Android, you have the possibility to "
"send a picture on your device or take a photo with these buttons:"
msgstr ""
"Όταν μιλάτε με κάποιον στο Android, έχετε τη δυνατότητα να στείλετε μια "
"φωτογραφία στην συσκευή σας ή να τραβήξετε μια φωτογραφία με αυτά τα "
"κουμπιά:"
#: ../../../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_button](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/d68472b2c2c7bfcc616b0c674c9c7a8fed/Android_file_buttons.png)"
#: ../../../developer/file-transfer.md:37
msgid "Android_file_buttons"
msgstr "Android_file_button"
#: ../../../developer/file-transfer.md:39
msgid ""
"Note: when you send a file, the other has to accept it. At this moment you "
"will see 'awaiting peer':"
msgstr "Σημείωση: όταν στέλνετε ένα αρχείο, ο άλλος πρέπει να το αποδεχθεί."
#: ../../../developer/file-transfer.md:42
msgid ""
"![Android_awaiting_peer](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/56f0316c945ca243448668ae9091b1de/Android_awaiting_peer.png)"
msgstr ""
"! [Android_waiting_peer](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/56f0316c945ca243448668ae9091b1de/Android_waiting_peer.png)"
#: ../../../developer/file-transfer.md:42
msgid "Android_awaiting_peer"
msgstr "Android_waiting_peer"
#: ../../../developer/file-transfer.md:44
#: ../../../developer/location-sharing.md:39
msgid "How it works? (technical)"
msgstr "Πώς λειτουργεί;"
#: ../../../developer/file-transfer.md:47
msgid "How it works"
msgstr "Πώς λειτουργεί"
#: ../../../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 είναι μια διανεμημένη εφαρμογή και πρέπει να λειτουργεί χωρίς καμία "
"σύνδεση στο διαδίκτυο. Έτσι, η μεταφορά αρχείων επίσης! Βασικά, "
"χρησιμοποιούμε την ίδια μέθοδο για τη μεταφορά αρχείων και τις κλήσεις, αλλά"
" στο TCP. Για να συνοψίσουμε πώς λειτουργεί, μπορούμε να φανταστούμε μια "
"κατάσταση όπου η Alice (A) θέλει να μεταφέρει ένα αρχείο στον Bob (B)."
#: ../../../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 ""
"Η Alice θα στείλει το IP της συσκευής της σε ένα κρυπτογραφημένο πακέτο μέσω"
" της DHT. Σημείωσε ότι το σύνδεσμο δεν στέλνει ακόμα τα IP μέσω της DHT σε "
"ένα κρυπτογραφημένο μήνυμα. Αν η δεύτερη διαπραγμάτευση αποτύχει, το TURN θα"
" χρησιμοποιηθεί ως αποτυχημένη υποδομή."
#: ../../../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 ""
"Τώρα που είναι εδώ το διημερολόγιο TCP σύνδεσμο, το επόμενο βήμα θα είναι να"
" διαπραγματευτεί ένα TLS 1.3 (γενικά ένα (TLS1.3)-(DHE-FFDHE8192)-(RSA-PSS-"
"RSAE-SHA384)-(AES-256-GCM) όταν γράφω αυτές τις γραμμές) μεταξύ Alice και "
"Bob, τότε Alice θα αρχίσει να μεταφέρει το αρχείο."
#: ../../../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 ""
"Το πρώτο μέρος θα είναι ένα μικρό αρχείο για να περιγράψει το περιεχόμενο "
"του αρχείου."
#: ../../../developer/file-transfer.md:61
msgid "Sending a file"
msgstr "Στέλνοντας αρχείο"
#: ../../../developer/file-transfer.md:63
msgid "The following method is used:"
msgstr "Χρησιμοποιείται η ακόλουθη μέθοδος:"
#: ../../../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\\. Ένας πελάτης θα καλέσει `DataTransferFacade::sendFile() `. "
"`DataTransferFacade` είναι η κατηγορία που αντιστοιχεί στην API που "
"εκτίθεται για τους πελάτες. Χρησιμοποιείται για τη διαχείριση μιας προβολής "
"των μεταβιβάσεων αρχείων (οι αντίστοιχες κατηγορίες είναι `DataTransfer`, "
"`IncomingFileTransfer`, `OutgoingFileTransfer` και "
"`SubOutgoingFileTransfer`)."
#: ../../../developer/file-transfer.md:67
msgid ""
"![Diagram: DataTransfer class diagram]images/file-transfer-datatransfer-"
"class-diagram.png)"
msgstr ""
"![Διαγράμματα: Διαγράμματα κατηγορίας DataTransfer]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\\. Η μέθοδος `DhtPeerConnector: requestConnection()` ενεργοποιείται και "
"δημιουργεί σύνδεση μεταξύ όλων των συνδεδεμένων συσκευών του peer (που "
"βρίσκονται στο DHT)."
#: ../../../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\\. Η μέθοδος αυτή χρησιμοποιείται για την εκκίνηση της μεταφοράς ICE και "
"τοποθετεί ένα *PeerConnectionMsg* (που περιέχει το μήνυμα SDP, βλ. παρακάτω)"
" στο DHT και περιμένει μια απάντηση "
"(`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\\. Στη συνέχεια λαμβάνεται μια απάντηση από το DHT, το οποίο περιέχει "
"δημόσιες διευθύνσεις της συσκευής συνδεδεμένου. Μπορούμε τώρα να "
"διαπραγματευτούμε μια σύνδεση TLS (μέσω της ICE, ή μέσω του TURN ως "
"αποσύνδεση)."
#: ../../../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 είναι έτοιμη, η επιστροφή "
"`DataTransferFacade::Impl::onConnectionRequestReply` καλείται και μια "
"`OutgoingFileTransfer` συνδέεται με την `PeerConnection` ως εισροή. Αυτή η "
"`OutgoingFileTransfer` περιέχει έναν κατάλογο `SubOutgoingFileTransfer` (ένα"
" ανά συσκευή) όπου κάθε υπομεταφορά είναι μεταφορά σε μια συσκευή. Το "
"κάνουμε αυτό για να μπορέσουμε να παρέχουμε την πιο αισιόδοξη άποψη της "
"μεταφοράς (αν ένας άμεσος ως 3 συσκευές, όπου ο άμεσος ακυρώνει τη μεταφορά "
"σε μια συσκευή, αλλά αποδέχεται τη μεταφορά στις δύο άλλες, θα εμφανιστεί η "
"πιο προηγμένη μεταφορά)."
#: ../../../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` θα μεταφέρει πρώτα την επικεφαλίδα του "
"αρχείου, θα περιμένει την αποδοχή από τους ομοτίμους (Μεσαφία \"GO\\n\" στην"
" υποδομή) και στη συνέχεια θα στείλει το αρχείο."
#: ../../../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\\. Εάν λάβει ακύρωση από τον συνάδελφο ή τον πελάτη ή αν ολοκληρωθεί η "
"μεταφορά αρχείων, η σύνδεση θα κλείσει μέσω ενός μηνύματος `CANCEL` στο "
"`DhtPeerConnector::eventLoop() ` και οι πόροι θα απελευθερωθούν."
#: ../../../developer/file-transfer.md:81
msgid ""
"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
msgstr ""
"! [TLSsocketEndpoint](εικόνες/μεταφορά αρχείων-tlssocketendpoint-"
"diagram.png)"
#: ../../../developer/file-transfer.md:81
msgid "TLSsocketEndpoint"
msgstr "TLSsocketΤο Endpoint"
#: ../../../developer/file-transfer.md:83
msgid "Receiving a file"
msgstr "Αποκάλυψη αρχείου"
#: ../../../developer/file-transfer.md:86
msgid ""
"The same structure is used to receive files, but the method changes a bit:"
msgstr ""
"Η ίδια δομή χρησιμοποιείται για να λαμβάνονται αρχεία, αλλά η μέθοδος "
"αλλάζει λίγο:"
#: ../../../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` χρησιμοποιείται για να λαμβάνει μηνύματα από το DHT, "
"επειδή το πρώτο πράγμα που θα λάβει θα είναι το αίτημα DHT."
#: ../../../developer/file-transfer.md:89
msgid ""
"Then, this message is given to `DhtPeerConnector: onRequestMessage()` "
"through the eventLoop."
msgstr ""
"Στη συνέχεια, αυτό το μήνυμα δίνεται στον `DhtPeerConnector: "
"onRequestMessage() ` μέσω του eventLoop."
#: ../../../developer/file-transfer.md:90
msgid ""
"The `DhtPeerConnector::Impl::answerToRequest` will try to connect to the "
"TURN server (if not connected) and initialize the ICE transport. This method"
" open 2 control connections to a TURN server (one to authorize IPv4 peers, "
"another one for IPv6 peers, due to **RFC 6156**) if it's not already open "
"and permit Peer public addresses to connect. Then, if the SDP received "
"doesn't contains ICE candidates, will use the TURN and craft the SDP answer "
"to wait for the peer. If the SDP contains ICE candidates, the method will "
"try to negotiate the link (or fallback on the TURN) and then answer the SDP "
"(with ICE candidates or not)."
msgstr ""
"Ο `DhtPeerConnector::Impl::answerToRequest` θα προσπαθήσει να συνδεθεί με "
"τον διακομιστή TURN (αν δεν είναι συνδεδεμένος) και να αρχίσει την μεταφορά "
"ICE. Αυτή η μέθοδος θα ανοίξει 2 συνδέσεις ελέγχου σε έναν διακομιστή TURN "
"(ένα για να εξουσιοδοτήσει τους IPv4 peers, ένα άλλο για τους IPv6 peers, "
"λόγω **RFC 6156**) αν δεν είναι ήδη ανοιχτό και θα επιτρέψει στους Peer "
"δημόσιους διευθύνσεις να συνδεθούν. Στη συνέχεια, αν το SDP δεν περιέχει "
"υποψηφίους ICE, θα χρησιμοποιήσει το TURN και θα δημιουργήσει την απάντηση "
"SDP για να περιμένει τον peer."
#: ../../../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 ""
"Μόλις οι συνδέσεις είναι έτοιμες, όπως ο αποστολέας, μια σύνδεση TLS "
"διαπραγματεύεται και δίνεται στην `PeerConnection` δίνεται στην "
"`IncomingFileTransfer` ως εισροή."
#: ../../../developer/file-transfer.md:93
msgid "Re-ask for a previous file transfer"
msgstr "Επανακαλέστε την προηγούμενη μεταφορά αρχείων"
#: ../../../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`, οι "
"αλληλεπιδράσεις μεταφοράς δεδομένων συγχρονίζονται και αποθηκεύονται τώρα σε"
" συνομιλίες. Έτσι, μια συσκευή μπορεί εύκολα να εντοπίσει αν ένα αρχείο έχει"
" κατεβαστεί ή όχι."
#: ../../../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 ""
"Για να γίνει αυτό, η συσκευή θα στείλει ένα json με το είδος μμ: "
"`application/data-transfer-request+json` που περιέχει `conversation` (id της"
" συζήτησης), `interaction` (σχετική αλληλεπίδραση), `deviceId` τη συσκευή "
"που λαμβάνει το αρχείο."
#: ../../../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 ""
"Ο αποστολέας ελέγχει τώρα αν η συσκευή είναι συσκευή από τον ανακοίνωτο "
"ομολόγο και ότι η συσκευή είναι μέλος της συζήτησης, και μπορεί να στείλει "
"το αρχείο μέσω κλασικής μεταφοράς αρχείων."
#: ../../../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 ""
"Ο δέκτης μπορεί τώρα να αποδεχθεί την πρώτη εισερχόμενη μεταφορά, να "
"κατεβάσει το αρχείο και να επαληθεύσει ότι το sha3sum είναι σωστό."
#: ../../../developer/file-transfer.md:103
msgid "Schema"
msgstr "Σχέδιο"
#: ../../../developer/file-transfer.md:105
msgid ""
"![Diagram: main schema diagram](images/file-transfer-main-schema-"
"diagram.png)"
msgstr "[Σχέδιο: κύριο διάγραμμα σχεδίου]"
#: ../../../developer/file-transfer.md:105
msgid "Diagram: main schema diagram"
msgstr "Διάγραμμα: βασικό διάγραμμα σχεδίου"
#: ../../../developer/file-transfer.md:107
msgid "SDP sent over the DHT"
msgstr "ΣΔΠ που αποστέλλεται μέσω του DHT"
#: ../../../developer/file-transfer.md:123
msgid ""
"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password of"
" the ICE session. `2130706431` and `1694498815` are the priority of the "
"candidates. `192.168.0.126 42751 typ host tcptype passive` is a passive host"
" candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype passive` a "
"passive host reflecting the public ip (mapped via UPnP for example)."
msgstr ""
"Όπου `0d04b932` είναι το ufrag και `7c33834e7cf944bf0e367b47` το κωδικό "
"πρόσβασης της συνεδρίασης ICE. `2130706431` και `1694498815` είναι η "
"προτεραιότητα των υποψηφίων. `192.168.0.126 42751 υποδοχέας τύπου tcptype "
"παθητικό` είναι ένας παθητικός υποδοχέας τύπου και `1694498815 X.X.X.X 42751"
" type srflx tcptype παθητικό` είναι ένας παθητικός υποδοχέας που "
"αντικατοπτρίζει το δημόσιο ip (καταγράφεται μέσω UPnP για παράδειγμα)."
#: ../../../developer/file-transfer.md:125
msgid "PJSIP related patches."
msgstr "Πακέτα που σχετίζονται με το PJSIP."
#: ../../../developer/file-transfer.md:127
msgid "3 patches will be included into the PJSIP project:"
msgstr "3 πακέτα θα συμπεριληφθούν στο έργο PJSIP:"
#: ../../../developer/file-transfer.md:129
msgid ""
"RFC 6062, used to perform TURN over TCP (merged upstream: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
msgstr ""
"RFC 6062, χρησιμοποιείται για την εκτέλεση TURN πάνω από TCP (συνδυασμένο "
"προς τα εμπρός: pjproject - fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
#: ../../../developer/file-transfer.md:130
msgid "RFC 6544, used to perform ICE over TCP"
msgstr "RFC 6544, χρησιμοποιείται για την εκτέλεση ICE πάνω από TCP"
#: ../../../developer/file-transfer.md:131
msgid "A fix for pj_activesock"
msgstr "Μια διορθώση για pj_activesock"
#: ../../../developer/file-transfer.md:133
msgid "Note that the stack for the file transfer is:"
msgstr "Σημειώνεται ότι η συστατική για τη μεταφορά αρχείων είναι:"
#: ../../../developer/file-transfer.md:145
msgid "Multi devices"
msgstr "Πολλαπλές συσκευές"
#: ../../../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 ""
"Ένας χρήστης RING μπορεί να συνδέσει το λογαριασμό του με διάφορες συσκευές."
" Έτσι, πρέπει να εφαρμόσουμε τη μεταφορά όταν ένας χρήστης στέλνει ένα "
"αρχείο σε έναν επαφή που έχει πολλές συσκευές συνδεδεμένες με αυτό το "
"λογαριασμό."
#: ../../../developer/file-transfer.md:151
msgid "First approach"
msgstr "Πρώτη προσέγγιση"
#: ../../../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 ""
"Η πρώτη προσέγγιση ήταν να στείλετε ένα αίτημα μέσω του DHT σε όλες τις "
"συσκευές και οι πρώτες συσκευές που απαντούν να μεταφέρουν το αρχείο."
#: ../../../developer/file-transfer.md:158
msgid "Current approach"
msgstr "Συγχρονή προσέγγιση"
#: ../../../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 ""
"Τώρα, εξακολουθούμε να στέλνουμε αίτηση σε όλες τις συσκευές. Η διαφορά "
"είναι ότι όλες οι συσκευές θα έχουν την ειδοποίηση για την παραλαβή ενός "
"αρχείου και μπορούν να αποδεχτούν/αρνούν τη μεταφορά."
#: ../../../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 ""
"Τώρα (από τότε που <https://gerrit-ring.savoirfairelinux.com/#/c/9327/>), "
"όταν ένας χρήστης στέλνει ένα αρχείο, θα ζητήσει *PeerConnection* με όλες "
"τις συσκευές ομολόγων."
#: ../../../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* ορίζουμε την κατηγορία "
"*OptimisticMetaOutgoingInfo* που αντιπροσωπεύει την αισιόδοξη άποψη που "
"πρέπει να εμφανιστεί στον πελάτη. Είναι αισιόδοξη επειδή αν ένας επαφές "
"αποδέχεται μια μεταφορά σε μια συσκευή και αρνείται σε άλλες, αυτή η "
"κατηγορία θα εμφανίσει τη συνεχιζόμενη μεταφορά αρχείων. Και θα εμφανίσει "
"μόνο ένα λάθος αν όλες οι συσκευές αρνούνται τη μεταφορά."
#: ../../../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 ""
"Αυτή η κατηγορία συνδέεται με *SubOutgoingFileTransfer* που αντιπροσωπεύουν "
"την κατάσταση μιας μεταφοράς με μια συσκευή."
#: ../../../developer/file-transfer.md:180
msgid "Using another TURN server"
msgstr "Χρησιμοποιώντας άλλο διακομιστή TURN"
#: ../../../developer/file-transfer.md:182
msgid ""
"Actually the default TURN server is *turn.ring.cx*. But you can host your "
"own TURN server. For example by running a "
"[coturn](https://github.com/coturn/coturn) server."
msgstr ""
"Στην πραγματικότητα ο προεπιλεγμένος διακομιστής του TURN είναι "
"*turn.ring.cx*. Αλλά μπορείτε να φιλοξενήσετε τον δικό σας διακομιστή του "
"TURN. Για παράδειγμα, τρέχοντας έναν διακομιστή [coturn] "
"((https://github.com/coturn/coturn)."
#: ../../../developer/file-transfer.md:186
msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
msgstr "`sudo turnserver -a -v -n -u χρήστης: κωδικό πρόσβασης -r \"κυράτος\""
#: ../../../developer/file-transfer.md:188
msgid ""
"Then, you can configure the TURN server in the advanced settings of RING."
msgstr ""
"Μετά, μπορείτε να ρυθμίσετε τον διακομιστή του TURN στις προηγμένες "
"ρυθμίσεις του RING."
#: ../../../developer/file-transfer.md:191
msgid ""
"Note: this needs some technical knowledges. Moreover, the TURN server should"
" see the same ip address of your node as the destination node or the peer "
"connection will fail (because the authorization will be incorrect)"
msgstr ""
"Σημείωση: αυτό απαιτεί κάποιες τεχνικές γνώσεις. Επιπλέον, ο διακομιστής "
"TURN θα πρέπει να δει την ίδια διεύθυνση IP του κόμβου σας όπως ο κόμβος "
"προορισμού ή η σύνδεση ομολόγων θα αποτύχει (γιατί η έγκριση θα είναι "
"εσφαλμένη)"
#: ../../../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 ""
"Για την ώρα, αν η μεταφορά αρχείων αποτύχει κατά τη διάρκεια της "
"διαδικασίας, ο αποστολέας δεν μπορεί να συνεχίσει τη μεταφορά και πρέπει να "
"επαναστροφήσει ολόκληρη τη μεταφορά."
#: ../../../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 "Πληθινόμηση"
#: ../../../developer/file-transfer.md:212
msgid "Add unit-tests (https://gerrit-ring.savoirfairelinux.com/\\#/c/9365/)"
msgstr ""
"Προσθήκη δοκιμών μονάδας (https://gerrit-"
"ring.savoirfairelinux.com/\\#/c/9365/)"
#: ../../../developer/file-transfer.md:213
msgid "Show subtransfers status for outgoing files"
msgstr "Δείξτε την κατάσταση των υπομεταφορών για τα αρχεία που βγαίνουν"
#: ../../../developer/file-transfer.md:214
msgid "Offset resume (for failed transfer)"
msgstr "Συγγραφές αποπληρωμής (για αποτυχημένη μεταφορά)"
#: ../../../developer/important-rfcs.md:1
msgid "Important RFCs"
msgstr "Σημαντικές RFC"
#: ../../../developer/important-rfcs.md:4
msgid "SIP"
msgstr "ΣΕΠ"
#: ../../../developer/important-rfcs.md:6
msgid "Reference: <http://tools.ietf.org/html/rfc3261>"
msgstr "Αναφορά: <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 "Αξιοτιμημένες ενημερώσεις και επέκτασεις:"
#: ../../../developer/important-rfcs.md:10
msgid "SIP Re-INVITE: <http://tools.ietf.org/html/rfc6141>"
msgstr "Επανακαλούν: <http://tools.ietf.org/html/rfc6141>"
#: ../../../developer/important-rfcs.md:12
msgid "ICE"
msgstr "Η ΕΣΣ"
#: ../../../developer/important-rfcs.md:14
msgid "Reference: <http://tools.ietf.org/html/rfc5245>"
msgstr "Αναφορά: <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 "ΣΔΠ"
#: ../../../developer/important-rfcs.md:22
msgid "Reference: <http://tools.ietf.org/html/rfc4566>"
msgstr "Αναφορά: <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 ""
"Πώς να χρησιμοποιήσετε το SDP: <http://tools.ietf.org/html/rfc3264> "
"Αξιολογικές ενημερώσεις και επέκτασεις:"
#: ../../../developer/important-rfcs.md:27
msgid "SDP and IPv6: <http://tools.ietf.org/html/rfc6157>"
msgstr "SDP και IPv6: <http://tools.ietf.org/html/rfc6157>"
#: ../../../developer/important-rfcs.md:28
msgid "SDP for SRTP: <http://tools.ietf.org/html/rfc4568>"
msgstr "ΣΔΠ για SRTP: <http://tools.ietf.org/html/rfc4568>"
#: ../../../developer/important-rfcs.md:31
msgid "RTP"
msgstr "Επικοινωνία"
#: ../../../developer/important-rfcs.md:33
msgid "Reference: <http://tools.ietf.org/html/rfc3550>"
msgstr "Αναφορά: <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 και RTCP στην ίδια πύλη: <http://tools.ietf.org/html/rfc5761>"
#: ../../../developer/important-rfcs.md:40
msgid "SRTP"
msgstr "ΣΔΠ"
#: ../../../developer/important-rfcs.md:42
msgid "Reference: <http://tools.ietf.org/html/rfc3711>"
msgstr "Αναφορά: <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 για SRTP: <https://tools.ietf.org/html/rfc5763> και "
"<http://tools.ietf.org/html/rfc5764>"
#: ../../../developer/important-rfcs.md:47
msgid "AES-192 and AES-256: <https://tools.ietf.org/html/rfc6188>"
msgstr "ΑΕΣ-192 και ΑΕΣ-256: <https://tools.ietf.org/html/rfc6188>"
#: ../../../developer/important-rfcs.md:48
msgid "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
msgstr "Επικοινωνία με το ΕΤΠ:"
#: ../../../developer/improving-quality-of-jami.md:1
msgid "Improving the quality of Jami"
msgstr "Βελτίωση της ποιότητας του Τζάμι"
#: ../../../developer/improving-quality-of-jami.md:4
msgid "Unit-tests"
msgstr "Δοκιμές μονάδας"
#: ../../../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 ""
"Είναι πιο δύσκολο να γίνει δοκιμή μονάδας στο έργο Jami λόγω των συνθηκών "
"φυλής σε πολλαπλά επίπεδα εξάρτησης."
#: ../../../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 ""
"Λόγω της υψηλής ζήτησης της Jami για να δώσει νέες λειτουργίες στον χρήστη "
"γρήγορα, δεν διατηρούνται από τους προγραμματιστές ή από τμήμα QA."
#: ../../../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 ""
"Χρησιμοποιούμε lcov για την κάλυψη, μπορείτε να βρείτε τη διαμόρφωση lcovs "
"στο daemons Makefile.am. Επίσης, η κάλυψη μπορεί να βρεθεί στο "
"https://docs.jami.net/coverage/"
#: ../../../developer/improving-quality-of-jami.md:12
msgid ""
"A system needs to be implemented to start convincing the team to make a "
"unit-test for new code before merging"
msgstr ""
"Πρέπει να εφαρμοστεί ένα σύστημα για να αρχίσει να πείσει την ομάδα να κάνει"
" μια μονάδα-δοκιμασία για νέο κώδικα πριν συγχωνεύσει"
#: ../../../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 ""
"Μπορείτε να τα ξεκινήσετε κάνοντας make check στο φακέλιο daemon ή ξεχωριστά"
" στο φακέλιο unit-test με gdb: gdb ut_media_encoder"
#: ../../../developer/improving-quality-of-jami.md:16
msgid ""
"The environment needs to be set with ‘--disable-shared’ during the "
"’./configure’ command"
msgstr ""
"Το περιβάλλον πρέπει να ρυθμιστεί με --αποσυνδεθεί-οινομερισμένη κατά τη "
"διάρκεια της εντολής./configure"
#: ../../../developer/improving-quality-of-jami.md:18
msgid "Framework Tests"
msgstr "Δοκιμές πλαισίου"
#: ../../../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 ""
"Μπορείτε να βρείτε δοκιμές πλαίσιο στο daemons Makefile.am και να το "
"αναπαρασκευάσετε με make ενσωμάτωση. Αυτό ονομάζει το σκρίπτο jami_test.py "
"στο φακέλιο εργαλείων / dringctrl. Χρησιμοποιεί dringctrl.py και "
"controller.py που σας επιτρέπουν να ελέγχετε Jami μέσω bash."
#: ../../../developer/improving-quality-of-jami.md:22
msgid ""
"This makes a series of calls to assure jami’s opendht network is stable."
msgstr ""
"Αυτό κάνει μια σειρά κλήσεων για να βεβαιωθούν ότι το ανοιχτό δίκτυο είναι "
"σταθερό."
#: ../../../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 ""
"Σε μέλλον, θα πρέπει να εφαρμοστούν άλλες δοκιμές πλαίσιο για να δοκιμάσουν "
"τις λειτουργίες του Jami στο σύνολό του."
#: ../../../developer/improving-quality-of-jami.md:26
msgid "Integration tests"
msgstr "Δοκιμές ενσωμάτωσης"
#: ../../../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 ""
"Κάθε commit περνά από δοκιμές ενσωμάτωσης σε dockers στις μηχανές κατασκευής"
" μπορείτε να βρείτε τις λεπτομέρειες στο: jenkins.jami.net"
#: ../../../developer/improving-quality-of-jami.md:30
msgid ""
"Code-review is made by a fellow developer, sometimes the code is reviewed by"
" the same developer, this should be avoided to emphasize Linus’ law. The "
"‘Jenkins verified’ label is sometimes discarded and replaced by +1 from a "
"developer, this should also be avoided."
msgstr ""
"Η αναθεώρηση κώδικα γίνεται από έναν συνάδελφο, μερικές φορές ο κώδικας "
"αναθεωρείται από τον ίδιο προγραμματιστή, αυτό πρέπει να αποφεύγεται για να "
"τονιστεί ο νόμος Linus."
#: ../../../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 επιτρέπει στον Jenkins να κατασκευάζει Jami και να επαληθεύει "
"την περιγραφή. Μπορείτε να βρείτε φίλτρα και αποτελέσματα στο: sonar- "
"jami.savoirfairelinux.net Η Sonar χρησιμοποιεί clang-tidy ως προεπεξεργαστής"
" περιγραφής συλλογικού, μπορείτε να βρείτε φίλτρα clangs στο αρχείο.clang-"
"tidy στο φάκελο daemon."
#: ../../../developer/improving-quality-of-jami.md:34
msgid ""
"On sflvault sonarqube can be found at service m#2637 and admin logins at "
"service s#7169"
msgstr ""
"Στο sflvault sonarqube μπορείτε να βρείτε στο υπηρεσία m#2637 και "
"συνδεδεμένες σε admin στο υπηρεσία s#7169"
#: ../../../developer/improving-quality-of-jami.md:36
msgid "Doc and feedback:"
msgstr "Δόκ και σχόλια:"
#: ../../../developer/improving-quality-of-jami.md:38
msgid "You can find all the documentation on docs.jami.net"
msgstr "Μπορείτε να βρείτε όλη την τεκμηρίωση στο docs.jami.net"
#: ../../../developer/improving-quality-of-jami.md:40
msgid "Issues are made by developers or users on git.jami.net"
msgstr ""
"Τα ζητήματα γίνονται από τους προγραμματιστές ή τους χρήστες στο "
"git.jami.net"
#: ../../../developer/improving-quality-of-jami.md:42
msgid "Monitoring"
msgstr "Παρακολούθηση"
#: ../../../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 ""
"Ένα σκρίπτο καλείται κάθε 30 λεπτά σε μια εικονική μηχανή jami-"
"monitorpeervm-01. Μπορείτε να το βρείτε στην υπηρεσία s#7209 και καλεί έναν "
"άλλο πελάτη virtual jami-monitorpeer-02 (εξυπηρέτηση s#7224). Μια σειρά "
"κλήσεων γίνεται και επιστρέφει το ποσοστό αποτυχίας."
#: ../../../developer/improving-quality-of-jami.md:46
msgid ""
"If needed, the manual command is ./script.sh –peer "
"031acbb73f2a3385b2babc7161f13325be103431"
msgstr ""
"Αν χρειαστεί, η χειροκίνητη εντολή είναι./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 ""
"Παρακολουθεί ένα πραγματικό χρόνο σημείο-με-το σημείο γραφή στο "
"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 "Δοκιμασίες καπνού"
#: ../../../developer/improving-quality-of-jami.md:52
msgid "Before each releases every clients MUST past a list of scenarios."
msgstr ""
"Πριν αποχωρήσουν, όλοι οι πελάτες πρέπει να περάσουν από μια λίστα σενάρων."
#: ../../../developer/improving-quality-of-jami.md:54
msgid "Scenarios are described here: [Jami smoke tests](jami-smoke-tests.ods)"
msgstr "Σεναρίου περιγράφονται εδώ: [έλεγχοι καπνού Jamie]"
#: ../../../developer/improving-quality-of-jami.md:57
msgid ""
"They are reviewed by QA dpt. before sending it to the developers if needed."
msgstr ""
"Εξετάζονται από την QA dpt. πριν τα στείλουν στους προγραμματιστές αν "
"χρειαστεί."
#: ../../../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 ""
"Εάν μια έκδοση περιέχει ένα δεσμευμένο δίκτυο που έχει συγχωνευθεί, το τμήμα"
" QA θα πρέπει να είναι σε θέση να αυτοματοποιήσει τις διαφορετικές δοκιμές "
"συνδεσιμότητας (όπως περιγράφεται παρακάτω στις ρυθμίσεις Calls)"
#: ../../../developer/improving-quality-of-jami.md:61
msgid "Calls configurations."
msgstr "Καλεί τις ρυθμίσεις."
#: ../../../developer/improving-quality-of-jami.md:63
msgid "This is the list of network configurations that need to be tested:"
msgstr "Ορίστε η λίστα των διαμορφώσεων δικτύου που πρέπει να δοκιμαστούν:"
#: ../../../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) για τις δύο "
"πλευρές."
#: ../../../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 ""
"Εάν και οι δύο πλευρές είναι μόνο IPv4 χωρίς TURN/STUN/UPnP, η κλήση θα "
"πρέπει να είναι μόνο τοπική."
#: ../../../developer/improving-quality-of-jami.md:69
msgid "Special note: FDroid"
msgstr "Ειδική σημείωση: FDroid"
#: ../../../developer/improving-quality-of-jami.md:71
msgid ""
"The script to generate MR is in the client-android repo "
"(fdroidMergeRequest.sh)"
msgstr ""
"Το σενάριο για την παραγωγή MR είναι στο client-android repo "
"(fdroidMergeRequest.sh)"
#: ../../../developer/improving-quality-of-jami.md:73
msgid "What needs to be done"
msgstr "Τι πρέπει να γίνει"
#: ../../../developer/improving-quality-of-jami.md:75
msgid "Push coverage closer to 60%"
msgstr "Προς την κατεύθυνση της κάλυψης"
#: ../../../developer/improving-quality-of-jami.md:77
msgid ""
"Establish a system within the team to assure maintenance and creation of "
"unit-tests."
msgstr ""
"Να δημιουργηθεί σύστημα εντός της ομάδας για να εξασφαλίζεται η συντήρηση "
"και η δημιουργία δοκιμών μονάδας."
#: ../../../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 ""
"Κάθε σημαντική λειτουργία πρέπει να δοκιμάζεται ως σύνολο με την προσθήκη "
"ενός τεστ πλαίσιο (δηλαδή, να εξασφαλίζεται η λήψη ενός μηνύματος, η λήξη "
"της κλήσης και στις δύο πλευρές, κλπ.)"
#: ../../../developer/improving-quality-of-jami.md:81
msgid ""
"Each new functionality should be tested on each platform before merging it "
"to reduce regression"
msgstr ""
"Κάθε νέα λειτουργία θα πρέπει να δοκιμάζεται σε κάθε πλατφόρμα πριν από τη "
"συγχώνευση της για τη μείωση της υποτροπής"
#: ../../../developer/improving-quality-of-jami.md:83
msgid "Integrate sonarqube on each client"
msgstr "Ενσωματώστε σόναρκουμπ σε κάθε πελάτη"
#: ../../../developer/improving-quality-of-jami.md:85
msgid "Automate the testing of Jami’s behavior on network compatibility"
msgstr ""
"Αυτοματοποίηση των δοκιμών της συμπεριφοράς των Jami για τη συμβατότητα "
"δικτύου"
#: ../../../developer/improving-quality-of-jami.md:87
msgid "Make a make_ring.py script adaptable to windows also"
msgstr "Κάντε ένα script make_ring.py προσαρμόσιμο στα Windows επίσης"
#: ../../../developer/index.rst:3
msgid "Developer manual"
msgstr "Εγχειρίδιο προγραμματιστών"
#: ../../../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 είναι μια αναφορά για τους ανεπτυξιακούς"
" Jami και τους συνεισφέροντες, που τεκμηριώνει τις διάφορες πτυχές της χάκερ"
" και της ανάπτυξης της Jami, συμπεριλαμβανομένων των λεπτομερών εξηγήσεις "
"για το πώς σχεδιάζεται η Jami και πώς τα διάφορα μέρη της λειτουργούν μαζί."
#: ../../../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, θα μάθετε για το πώς λειτουργεί ο"
" Jami από το υψηλό επίπεδο, μέχρι το χαμηλό, με μερικά παραδείγματα."
#: ../../../developer/introduction.md:7
msgid "Table of contents"
msgstr "Πίνακας περιεχομένου"
#: ../../../developer/introduction.md:9
msgid "{doc}`apis-of-jami`"
msgstr "Τελευταία φορά"
#: ../../../developer/introduction.md:10
msgid "Basic features"
msgstr "Βασικά χαρακτηριστικά"
#: ../../../developer/introduction.md:11
msgid "{doc}`account-management`"
msgstr "Οικονομική και κοινωνική ανάπτυξη"
#: ../../../developer/introduction.md:12
msgid "{doc}`contact-management`"
msgstr "Επικοινωνιακή διαχείριση"
#: ../../../developer/introduction.md:13
msgid "{doc}`swarm`"
msgstr "Τελευταία φορά"
#: ../../../developer/introduction.md:14
msgid "{doc}`calls`"
msgstr ""
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα "
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα "
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα "
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα "
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα "
"Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα Τόλμα"
#: ../../../developer/introduction.md:15
msgid "{doc}`file-transfer` (deprecated; see {doc}`swarm`)"
msgstr "{doc}`file-transfer` (αποκατασταθεί· βλ. {doc}`swarm`)"
#: ../../../developer/introduction.md:16
msgid "{doc}`message-displayed-status`"
msgstr "{doc}`επιστολή-εμφανίζεται-κατάσταση`"
#: ../../../developer/introduction.md:18
msgid "Advanced features"
msgstr "Προχωρημένες δυνατότητες"
#: ../../../developer/introduction.md:19
msgid "Manage audio/videos"
msgstr "Διαχειρίστε ήχο/βίντεο"
#: ../../../developer/introduction.md:20
msgid "Call recording"
msgstr "Καταγραφή κλήσης"
#: ../../../developer/introduction.md:21
msgid ""
"[The push notifications "
"system](https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
"support)"
msgstr ""
"[Σύστημα "
"προσανατολισμού]https://github.com/savoirfairelinux/opendht/wiki/Push-"
"notifications-support)"
#: ../../../developer/introduction.md:22
msgid "What is a DHTProxy"
msgstr "Τι είναι ένα DHTProxy"
#: ../../../developer/introduction.md:23
msgid "Supporting SIP"
msgstr "Υποστήριξη της SIP"
#: ../../../developer/introduction.md:24
msgid "{doc}`setting-up-your-own-turn-server`"
msgstr "{doc}`set-up-your-own-turn-server`"
#: ../../../developer/introduction.md:25
msgid "{doc}`synchronizing-profiles`"
msgstr "{doc}`συγχρονιστικά προφίλ`"
#: ../../../developer/introduction.md:27
msgid "{doc}`../contribute`"
msgstr "{doc}`../contribution`"
#: ../../../developer/introduction.md:28
msgid "{doc}`Build instructions <../build/building>`"
msgstr "Οδηγίες κατασκευής"
#: ../../../developer/introduction.md:29
msgid "{doc}`submitting-your-first-patch`"
msgstr "{doc}` υποβολή-το-πρώτη-πατς σας`"
#: ../../../developer/introduction.md:30
msgid "{doc}`feature-requests`"
msgstr "{doc}`απαιτήσεις χαρακτηριστικών"
#: ../../../developer/introduction.md:32
msgid "Group chats in details"
msgstr "Ομαδικές συνομιλίες λεπτομερώς"
#: ../../../developer/introduction.md:33 ../../../developer/introduction.md:42
msgid "Description"
msgstr "Περιγραφή"
#: ../../../developer/introduction.md:34
msgid "{doc}`connection-manager`"
msgstr "Διοικητής σύνδεσης"
#: ../../../developer/introduction.md:35
msgid "DRT"
msgstr "ΔΕΤ"
#: ../../../developer/introduction.md:36
msgid "{doc}`calls-in-swarm`"
msgstr "Τόσοι καλούν στο γκρουπ"
#: ../../../developer/introduction.md:38
msgid "Drafts"
msgstr "Σχέδια"
#: ../../../developer/introduction.md:39
msgid "{doc}`conference-protocol`"
msgstr "Πρωτοκόλλου σύσκεψης"
#: ../../../developer/introduction.md:40
msgid "{doc}`synchronization-protocol`"
msgstr "Συγχρονιστικό πρωτόκολλο"
#: ../../../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 ""
"Αν διαβάζετε αυτό, είναι πιθανό να θέλετε είτε να συνεισφέρετε σε ένα από τα"
" στοιχεία/προγράμματα του Jami, είτε να εφαρμόσετε τον δικό σας πελάτη."
#: ../../../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 επικοινωνία."
" Μπορείτε να αλληλεπιδράσετε με αυτή τη βιβλιοθήκη όπως κάθε βιβλιοθήκη C "
"++, ή χρησιμοποιώντας το Python wrapper, ή μέσω της [REST API] "
"((https://github.com/savoirfairelinux/opendht/wiki/REST-API)."
#: ../../../developer/introduction.md:53
msgid ""
"The daemon, which is the main part. It's the part which does all the logic "
"for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other libraries,"
" and implements the whole protocol. If you'd like to do create a new Jami "
"client, we recommend implementing it on top of this daemon, using one of its"
" many APIs (REST, DBus, libwrap, or JNI)."
msgstr ""
"Το δαίμον, το οποίο είναι το κύριο μέρος. Είναι το μέρος που κάνει όλη τη "
"λογική για το Jami και αλληλεπιδρά με το OpenDHT, pjsip, FFmpeg και τις "
"άλλες βιβλιοθήκες, και εφαρμόζει όλο το πρωτόκολλο."
#: ../../../developer/introduction.md:60
msgid "The client part, which is basically the *frontend*."
msgstr "Το μέρος του πελάτη, που είναι βασικά το \"frontend\"."
#: ../../../developer/introduction.md:62
msgid ""
"The developer manual of Jami will explain the different features from all of"
" these layers."
msgstr ""
"Το εγχειρίδιο ανάπτυξης του Jami θα εξηγήσει τα διαφορετικά χαρακτηριστικά "
"όλων αυτών των στρωμάτων."
#: ../../../developer/jami-identifiers.md:1
msgid "Jami identifiers"
msgstr "Ταυτοποιητές Jami"
#: ../../../developer/jami-identifiers.md:4
msgid ""
"There are many identifiers in Jami. We need to unify the naming of these "
"identifiers between all implementations. This page reference various kind of"
" identifiers used in Jami with relevant examples."
msgstr ""
"Υπάρχουν πολλοί αναγνωριστικοί στα Jami. Πρέπει να ενοποιήσουμε τη ονομασία "
"αυτών των αναγνωριστικών μεταξύ όλων των εφαρμογών."
#: ../../../developer/jami-identifiers.md:8
msgid ""
"**Jami Infohash** or **Jami public key fingerprint** : a public key "
"fingerprint such as `3d1112ab2bb089370c0744a44bbbb0786418d40b`"
msgstr ""
"**Jami Infohash** ή **Jami Public Key Fingerprint**: ένα αποτύπωμα από "
"δημόσιο κλειδί όπως `3d1112ab2bb089370c0744a44bb0786418d40b`"
#: ../../../developer/jami-identifiers.md:10
msgid ""
"**Registered name** : a username associated to a Jami Infohash on the "
"blockchain such as `jeandupont`"
msgstr ""
"**Καταχωρισμένο όνομα**: όνομα χρήστη που συνδέεται με μια Jami Infohash στο"
" blockchain όπως `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 ή SIP URI όπως "
"`jami:3d1112ab2bb089370c0744a44bb0786418d40b` ή `jami:jeandupont` ή "
"`<sip:nnnnn@host:5060>`. Πρέπει να συμμορφώνεται με "
"[rfc3986]https://tools.ietf.org/html/rfc3986)."
#: ../../../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**: `jami:3d1112ab2bb089370c0744a44bb0786418d40b` ή "
"`sip:nnnnn@host:5060`. Η πιο απλουστευμένη μορφή του URI. Το εγγεγραμμένο "
"όνομα πρέπει να διαλυθεί, δεν περιλαμβάνει <> δέσμους ή όνομα εμφάνισης. "
"Προπαραρτημένο με το σχήμα (`jami:` ή `sip:` ή `sips:`)."
#: ../../../developer/jami-identifiers.md:16
msgid ""
"**User ID**: registered name (preferred) or public key fingerprint. User-"
"facing identifier for an account public key."
msgstr ""
"**Παραγνωριστικό χρήστη**: εγγεγραμμένο όνομα (προτιθέμενο) ή αποτύπωμα του "
"δημόσιου κλειδιού."
#: ../../../developer/jami-identifiers.md:17
msgid ""
"**Display name** or **Profile name** : an editable user-defined profile name"
" such as `Jean Dupont`."
msgstr ""
"**Νόμος οθόνης** ή **Νόμος προφίλ**: ένα επεξεργαζόμενο όνομα προφίλ που "
"καθορίζεται από τον χρήστη, όπως `Jean Dupont`."
#: ../../../developer/jami-identifiers.md:20
msgid "When displaying a contact:"
msgstr "Κατά την εμφάνιση επαφής:"
#: ../../../developer/jami-identifiers.md:28
msgid "If Display name is empty, User ID is shown instead"
msgstr ""
"Εάν το όνομα της οθόνης είναι κενό, εμφανίζεται το αναγνωριστικό χρήστη αντί"
" αυτού"
#: ../../../developer/jami-identifiers.md:29
msgid "If both lines have the same content, only the first line is displayed"
msgstr ""
"Εάν και οι δύο γραμμές έχουν το ίδιο περιεχόμενο, εμφανίζεται μόνο η πρώτη "
"γραμμή"
#: ../../../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 ""
"Εάν δεν υπάρχει φωτογραφία και υπάρχει εγγεγραμμένο όνομα (περίχιο) ή όνομα "
"οθόνης (sip), το πρώτο γράμμα αυτού του ονόματος μπορεί να χρησιμοποιηθεί "
"για τη δημιουργία ενός διαχωριστικού σημείου."
#: ../../../developer/jami-identifiers.md:32
msgid ""
"If no photo is available, a placeholder with an Canonical URI-specific "
"background color can be used:"
msgstr ""
"Εάν δεν υπάρχει φωτογραφία, μπορεί να χρησιμοποιηθεί ένας διαστημικός "
"διακομιστής με χρώμα φόντου που είναι ειδικό για το Canonical URI:"
#: ../../../developer/jami-identifiers.md:57
msgid ""
"Color values are from the material palette: https://material.io/tools/color"
msgstr ""
"Οι τιμές χρωμάτων είναι από την παλέτα υλικών: "
"https://material.io/tools/color"
#: ../../../developer/jami-identifiers.md:60
msgid "![références_couleurs_jami](images/jami-reference-colours.png)"
msgstr "! [références_couleurs_jami]"
#: ../../../developer/jami-identifiers.md:60
msgid "références_couleurs_jami"
msgstr "références_couleurs_jami"
#: ../../../developer/location-sharing.md:1
msgid "Location Sharing on QT Client"
msgstr "Τοποθεσία Συμμετοχή στον πελάτη QT"
#: ../../../developer/location-sharing.md:7
msgid "Trivial use"
msgstr "Τριβαλή χρήση"
#: ../../../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 ""
"Σε μια συζήτηση, ο χρήστης μπορεί να κάνει κλικ στο εικονίδιο τοποθεσίας για"
" να εμφανίσει έναν χάρτη. Εάν είναι ενεργοποιημένες οι υπηρεσίες τοποθεσίας "
"`` στην συσκευή, η θέση του χρήστη θα εμφανίζεται στον χάρτη, μαζί με τις "
"τοποθεσίες όλων των άλλων μελών που μοιράζονται τη θέση τους (από όλες τις "
"συνομιλίες του επιλεγμένου λογαριασμού). Ο χρήστης μπορεί να ενεργοποιήσει "
"και να απενεργοποιήσει τη μοιράωση τοποθεσίας πατώντας τα κουμπιά μοιράσεως "
"τοποθεσίας. Κατά προεπιλογή, η θέση του χρήστη μοιράζεται για 15 λεπτά, αλλά"
" αυτή η ρύθμιση μπορεί να τροποποιηθεί στις ρυθμίσεις της εφαρμογής."
#: ../../../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 ""
"Όταν ένας χρήστης μοιράζεται τη θέση του σε μια συζήτηση, ένα κόκκινο "
"εικονίδιο τοποθεσίας εμφανίζεται στο εικονίδιο συζήτησης. Εάν ο χρήστης "
"λαμβάνει μια θέση από άλλο μέλος, ένα πορτοκαλί εικονίδιο τοποθεσίας "
"εμφανίζεται σε όλες τις συνομιλίες στις οποίες είναι παρόν το μέλος."
#: ../../../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 ""
"Ο χρήστης μπορεί να αλληλεπιδράσει με τον χάρτη με πρόσφατη αναπροσαρμογή, "
"μεγέθυνση, μετακίνηση και κλείσιμο."
#: ../../../developer/location-sharing.md:15
msgid "Advanced use"
msgstr "Προχωρημένη χρήση"
#: ../../../developer/location-sharing.md:17
msgid "Multi-sharing"
msgstr "Πολλαπλές συμμετοχές"
#: ../../../developer/location-sharing.md:19
msgid "scenario"
msgstr "σενάριο"
#: ../../../developer/location-sharing.md:21
msgid ""
"The user is already sharing location with conversation A and conversation B."
msgstr ""
"Ο χρήστης μοιράζεται ήδη τοποθεσία με τη συζήτηση Α και τη συζήτηση Β."
#: ../../../developer/location-sharing.md:23
msgid "Feature"
msgstr "Ειδικότητα"
#: ../../../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 ""
"Αν ο χρήστης αλλάξει σε συζήτηση C, ο χάρτης είναι ακόμα ορατός και ο "
"χρήστης έχει δύο επιλογές"
#: ../../../developer/location-sharing.md:27
msgid ""
"Click on the location sharing button to also share location with the members"
" of conversation C."
msgstr ""
"Κάντε κλικ στο κουμπί μοιράζοντας τοποθεσίες για να μοιραστείτε τοποθεσίες "
"και με τα μέλη της συζήτησης C."
#: ../../../developer/location-sharing.md:28
msgid ""
"Click the location sharing end button. This will bring up a pop-up that "
"allows the user to either turn off location sharing entirely or only stop "
"sharing their location with the members of conversation C."
msgstr ""
"Κάντε κλικ στο κουμπί λήξης μοιράζοντας τοποθεσίες. Αυτό θα εμφανίσει ένα "
"pop-up που επιτρέπει στον χρήστη είτε να απενεργοποιήσει εντελώς τη "
"μοιράζωση τοποθεσιών ή να σταματήσει μόνο να μοιράζεται τη θέση του με τα "
"μέλη της συζήτησης C."
#: ../../../developer/location-sharing.md:30
msgid "Pinned window"
msgstr "Πινέζικο παράθυρο"
#: ../../../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 ""
"Εάν το παράθυρο αφαιρεθεί, ο χρήστης δεν θα μπορεί να κάνει κλικ στο κουμπί "
"μοιράσεως τοποθεσίας επειδή το παράθυρο δεν συνδέεται πλέον με μια συζήτηση."
" Για να αρχίσει να μοιράζεται τοποθεσία με νέους ανθρώπους, ο χρήστης πρέπει"
" να επαναπαίξει το παράθυρο. Σημείωσε ότι το αφαιρέσιμο του παράθυρου δεν "
"επηρεάζει καμία συνεχή μοιράωση τοποθεσίας. Επιπλέον, το να κάνετε κλικ στο "
"κουμπί λήξης μοιράσεως τοποθεσίας ενώ το παράθυρο είναι αφαιρεμένο θα "
"σταματήσει όλη τη τρέχουσα μοιράωση τοποθεσίας και δεν θα εμφανιστεί κανένα "
"pop-up που να επιτρέπει στον χρήστη να επιλέξει μια συγκεκριμένη συζήτηση "
"για να σταματήσει να μοιράζεται με."
#: ../../../developer/location-sharing.md:34
msgid "Multi accounts"
msgstr "Πολλαπλά λογαριασμοί"
#: ../../../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 ""
"Κάθε λογαριασμός έχει το δικό του μοναδικό χάρτη. Αν ο χρήστης αφαιρεί το "
"χάρτη ενώ είναι στο λογαριασμό A, μετά αλλάζει στο λογαριασμό B και αφαιρεί "
"το χάρτη, θα είναι ορατά δύο χάρτες. Οι χάρτες για λογαριασμούς A και B "
"εμφανίζουν τις θέσεις που μοιράζονται με αυτά τα λογαριασμούς, αντίστοιχα, "
"και είναι εντελώς ξεχωριστά ο ένας από τον άλλο"
#: ../../../developer/location-sharing.md:44
msgid "This feature is divided into three parts:"
msgstr "Το χαρακτηριστικό αυτό χωρίζεται σε τρία μέρη:"
#: ../../../developer/location-sharing.md:46
msgid "Sending one's position"
msgstr "Στέλνοντας τη θέση του"
#: ../../../developer/location-sharing.md:47
#: ../../../developer/location-sharing.md:78
msgid "Receiving a position"
msgstr "Αποκτά θέση"
#: ../../../developer/location-sharing.md:48
#: ../../../developer/location-sharing.md:89
msgid "Displaying a position"
msgstr "Εμφάνιση θέσης"
#: ../../../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 ""
"Για να προσδιοριστεί η τοποθεσία, χρησιμοποιείται η API [Qt "
"Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html). Μόλις "
"καθοριστεί η θέση, αποστέλλεται ως μήνυμα στο DHT και μεταδίδεται στον "
"πελάτη."
#: ../../../developer/location-sharing.md:53
msgid "Sending a position"
msgstr "Αποστέλλει θέση"
#: ../../../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 ""
"Μόλις ανοίξει ένα χάρτη, η τάξη `Positioning` φροντίζει να ανακτήσει τη "
"τρέχουσα θέση χρησιμοποιώντας την τάξη `QGeoPositionInfoSource` της "
"`QtPositioning` module. Η θέση μετατρέπεται στη συνέχεια σε μορφή JSON και "
"μεταδίδεται στο `positionManager`. Αυτή η τάξη συντονίζει ολόκληρη τη "
"διαδικασία κοινοποίησης θέσεων. Η θέση στη συνέχεια μοιράζεται μέσω της "
"λειτουργίας `sendPosition()`."
#: ../../../developer/location-sharing.md:61
msgid ""
"Locally through the `localPositionReceived` signal so that the user can see "
"their own position"
msgstr ""
"Τοπικά μέσω του σήματος `localPositionReceived` ώστε ο χρήστης να μπορεί να "
"δει τη θέση του"
#: ../../../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, όλες οι συνομιλίες στο `positionShareConvIds_` κατάλογο."
#: ../../../developer/location-sharing.md:65
msgid "The JSON format of a position is as follows:"
msgstr "Η μορφή JSON μιας θέσης είναι η εξής:"
#: ../../../developer/location-sharing.md:67
msgid "Type (position or stop message)"
msgstr "Τύπος (ημερομηνία θέσης ή στάσης)"
#: ../../../developer/location-sharing.md:68
msgid "Latitude"
msgstr "Ακτινοδρόμιο"
#: ../../../developer/location-sharing.md:69
msgid "Longitude"
msgstr "Διάσημη"
#: ../../../developer/location-sharing.md:70
msgid "Time (unused by the QtClient)"
msgstr "Χρόνος (μη χρησιμοποιούμενος από τον QtClient)"
#: ../../../developer/location-sharing.md:72
msgid ""
"An example of data: "
"`{\\\"lat\\\":45.51616583988481,\\\"long\\\":-73.620693,\\\"time\\\":1671658862000,\\\"type\\\":\\\"Position\\\"}`"
msgstr ""
"Ένα παράδειγμα δεδομένων: "
"`{\\\"lat\\\":45.51616583988481,\\\"long\\\":-73.620693,\\\"time\\\":1671658862000,\\\"type\\\":\\\"Position\\\"}`"
#: ../../../developer/location-sharing.md:74
msgid ""
"When sending the position to the daemon, the author's URI is also "
"transmitted."
msgstr ""
"Όταν στέλνετε τη θέση στο δαίμονα, μεταδίδεται και το URI του συγγραφέα."
#: ../../../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 ""
"Όταν ο χρήστης σταματά να μοιράζεται τη θέση του με μια συζήτηση, το ID της "
"συζήτησης απλά αφαιρείται από τη λίστα `positionShareConvIds_`."
#: ../../../developer/location-sharing.md:80
msgid ""
"When a position is received, it triggers the 'onPositionReceived()' slot. "
"Whether it is a local position from the `QtPositioning` module or a position"
" from another contact. At the `positionManager` level, the "
"`objectListSharingUris_` list stores all of the client's positions. The "
"position is either:"
msgstr ""
"Όταν λαμβάνεται μια θέση, ενεργοποιείται η θέση \"onPositionReceived() \". "
"Είτε πρόκειται για μια τοπική θέση από το `QtPositioning` module είτε για "
"μια θέση από άλλο άμεσο. Στο επίπεδο `positionManager`, η λίστα "
"`objectListSharingUris_` αποθηκεύει όλες τις θέσεις του πελάτη."
#: ../../../developer/location-sharing.md:83
msgid "Added (the URI is not present in the list)"
msgstr "Προσθήκη (το URI δεν περιλαμβάνεται στον κατάλογο)"
#: ../../../developer/location-sharing.md:84
msgid "Updated (the URI is already present in the list)"
msgstr "Ενημερωμένο (το URI είναι ήδη διαθέσιμο στον κατάλογο)"
#: ../../../developer/location-sharing.md:85
msgid "Deleted (type = \"Stop\")"
msgstr "Διαγραφή (τύπος = \"Σταμάτιση\")"
#: ../../../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 ""
"Η θέση αποθηκεύεται στον κατάλογο με τη μορφή αντικειμένου τύπου "
"`positionObject`."
#: ../../../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 ""
"Όταν λαμβάνεται μια θέση (slot `onPositionReceived() ` ενεργοποιείται), η "
"θέση μεταδίδεται στο Qml η οποία με τη σειρά της στέλνει τις πληροφορίες "
"στην βιβλιοθήκη JavaScript."
#: ../../../developer/message-displayed-status.md:1
msgid "Message displayed status"
msgstr "Κατάσταση που εμφανίζεται το μήνυμα"
#: ../../../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 ""
"Κάθε πελάτης πρέπει γενικά να είναι σε θέση να δείξει ποιοι συνάδελφοί "
"διαβάζουν ποιο μήνυμα και να πάρει πόσα αδιαβασμένα μηνύματα υπάρχουν."
#: ../../../developer/message-displayed-status.md:6
msgid "For this, the daemon provides some APIs:"
msgstr "Για αυτό, ο δαίμονας παρέχει μερικές API:"
#: ../../../developer/message-displayed-status.md:8
msgid "Set a message displayed"
msgstr "Εποστήστε ένα μήνυμα που εμφανίζεται"
#: ../../../developer/message-displayed-status.md:10
msgid "The Configuration manager provides:"
msgstr "Ο διαχειριστής διαμόρφωσης παρέχει:"
#: ../../../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 ""
"Πρέπει να γίνει όταν εμφανίζεται η αλληλεπίδραση και επιλέγεται η συζήτηση."
#: ../../../developer/message-displayed-status.md:48
msgid ""
"This sends a SIP messages to connected peers with the following format:"
msgstr ""
"Αυτό στέλνει μηνύματα SIP σε συνδεδεμένους ομοτίμους με την ακόλουθη μορφή:"
#: ../../../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 ""
"Στη συνέχεια, ο συνάδελφος θα το γνωρίζει μέσω του `onMessageDisplayed` και "
"θα εκπέμπει ένα σήμα στον πελάτη "
"(`libjami::ConfigurationSignal::AccountMessageStatusChanged` με κατάσταση 3 "
"(`libjami::Account::MessageStates::DISPLAYED`))"
#: ../../../developer/message-displayed-status.md:68
msgid "Get unread messages"
msgstr "Να λαμβάνεις μη διαβάζοντα μηνύματα"
#: ../../../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 ""
"Γνωρίζοντας το τελευταίοDisplayedMessage για το λογαριασμό μας, μπορούμε να "
"χρησιμοποιήσουμε αυτές τις πληροφορίες και "
"`ConfigrationManager::countInteractionsSince` που μετράνε την αλληλεπίδραση "
"από το τελευταίο μήνυμα σε ένα δεδομένο μήνυμα (συνήθως η τελευταία "
"αλληλεπίδραση που εμφανίζεται)"
#: ../../../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 ""
"Για να εμφανιστεί τελευταία αγγελία για ένα μέλος, στο "
"`Συσταθμό::getConversationMembers` κάθε μέλος θα έχει την τελευταία "
"εμφανισμένη αλληλεπίδραση διαθέσιμη μέσω `memberInfo[\"lastDisplayed\"]`"
#: ../../../developer/message-displayed-status.md:74
msgid "How this information is stored"
msgstr "Πώς αποθηκεύονται οι πληροφορίες αυτές"
#: ../../../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` κάθε συζήτηση αποθηκεύει τα τελευταία "
"εμφανισμένα μηνύματα σε έναν χάρτη<string, string> (uri, interactionId) και "
"αυτή η δομή είναι σερριεσμένη σε "
"`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
#: ../../../developer/name-server-protocol.md:1
msgid "Name Server protocol"
msgstr "Όνομα Προγραμματισμός του Server"
#: ../../../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 για να αναζητήσει και να "
"καταχωρήσει ένα όνομα βασίζεται σε HTTP [REST] "
"(https://en.wikipedia.org/wiki/Representational_state_transfer) API που "
"απαντά σε αιτήματα με έγγραφα JSON και κανονικούς κώδικες HTTP."
#: ../../../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 ""
"Ο δημόσιος διακομιστής ονομάτων φιλοξενείται στο `ns.jami.net` και "
"χρησιμοποιεί ένα blockchain ως backend."
#: ../../../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 ""
"Εάν εκτελείτε τον δικό σας Nameserver, αναζητώντας ένα όνομα χρήστη με τη "
"μορφή `username@example.com` θα αναζητήσει το όνομα `username` με το όνομα "
"του server στο `example.com`. (Δεν χρειάζεται να προσθέσετε `@ns.jami.net` "
"για να χρησιμοποιήσετε τον προεπιλεγμένο Nameserver)."
#: ../../../developer/name-server-protocol.md:19
msgid "Rules on name formatting"
msgstr "Κανόνες για τη διαμόρφωση ονομάτων"
#: ../../../developer/name-server-protocol.md:22
msgid ""
"Usernames are checked by a regex to ensure some rules about their format:"
msgstr ""
"Τα ονόματα χρήστη ελέγχονται από έναν regex για να εξασφαλίσουν ορισμένους "
"κανόνες σχετικά με τη μορφή τους:"
#: ../../../developer/name-server-protocol.md:25
msgid "Length must be between 3 and 32 characters"
msgstr "Το μήκος πρέπει να είναι μεταξύ 3 και 32 χαρακτήρων"
#: ../../../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 "Αναζητώντας ένα όνομα"
#: ../../../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 ""
"Αυτή είναι η κύρια υπηρεσία που παρέχεται από έναν διακομιστή ονομάτων."
#: ../../../developer/name-server-protocol.md:35
#: ../../../developer/name-server-protocol.md:83
#: ../../../developer/name-server-protocol.md:131
msgid "Request"
msgstr "Επαίτηση"
#: ../../../developer/name-server-protocol.md:37
msgid ""
"A request for the name `foobar` is a `GET` request with `/name/`*`foobar`* "
"as the URI."
msgstr ""
"Ένα αίτημα για το όνομα `foobar` είναι ένα `GET` αίτημα με "
"`/name/`*`foobar`* ως URI."
#: ../../../developer/name-server-protocol.md:40
#: ../../../developer/name-server-protocol.md:89
#: ../../../developer/name-server-protocol.md:150
msgid "Response (Success)"
msgstr "Απάντηση (Εκτυχία)"
#: ../../../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 ""
"Εάν βρεθεί το όνομα, μια απάντηση με κωδικό κατάστασης `200` `OK` πρέπει να "
"αποσταλεί στον πελάτη με ένα πεδίο τύπου περιεχομένου `` ορίζεται ως "
"`application/json`."
#: ../../../developer/name-server-protocol.md:46
msgid ""
"The body is a JSON documents with 2 string attributes : `name` and `addr`. "
"`name` is equal to the one requested and `addr` is an hexadecimal "
"representation of the Jami ID prefixed with `0x`."
msgstr ""
"Το σώμα είναι ένα έγγραφο JSON με 2 συρματολογικά χαρακτηριστικά: `name` και"
" `addr`. `name` ισούται με το ζητούμενο και `addr` είναι μια έξιδεκασιακή "
"αναπαράσταση του ID Jami προεπισημμένο με `0x`."
#: ../../../developer/name-server-protocol.md:50
#: ../../../developer/name-server-protocol.md:98
msgid "In our example, the JSON answer would be:"
msgstr "Στο παράδειγμα μας, η απάντηση JSON θα ήταν:"
#: ../../../developer/name-server-protocol.md:59
#: ../../../developer/name-server-protocol.md:106
msgid "Response (Not found)"
msgstr "Απάντηση (Δεν βρέθηκε)"
#: ../../../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 ""
"Εάν δεν βρεθεί το όνομα, μια απάντηση με κωδικό κατάστασης `404` `Not` "
"`Found` πρέπει να αποσταλεί στον πελάτη με ένα πεδίο τύπου περιεχομένου `` "
"ορίζεται ως `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 με 1 συρματολογικό χαρακτηριστικό: `error`. "
"Αυτό το χαρακτηριστικό γεμίζεται με ένα μήνυμα σφάλματος που εξηγεί το "
"σφάλμα (και θα μπορούσε να εμφανιστεί στο πελάτη στο μέλλον)."
#: ../../../developer/name-server-protocol.md:69
#: ../../../developer/name-server-protocol.md:116
msgid "On the reference implementation, the returned document is:"
msgstr "Για την εφαρμογή αναφοράς, το επιστροφικό έγγραφο είναι:"
#: ../../../developer/name-server-protocol.md:77
msgid "Querying an address"
msgstr "Αναζήτηση διεύθυνσης"
#: ../../../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 ""
"Αυτή η υπηρεσία είναι μια αναδρομική αναζήτηση. Αναζητάς μια διεύθυνση και "
"ένα όνομα χρήστη επιστρέφεται αν ένα είναι εγγεγραμμένο στον διακομιστή "
"ονομάτων."
#: ../../../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` με `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* ως "
"URI."
#: ../../../developer/name-server-protocol.md:91
msgid ""
"If the address corresponds to a username, a response with status code `200` "
"`OK` must be sent to the client with a `Content-type` field set as "
"`application/json`."
msgstr ""
"Εάν η διεύθυνση αντιστοιχεί σε όνομα χρήστη, μια απάντηση με κωδικό "
"κατάστασης `200` `OK` πρέπει να αποσταλεί στον πελάτη με ένα πεδίο τύπου "
"περιεχομένου ` ` ο οποίος ορίζεται ως `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 με 1 συρματολογικό χαρακτηριστικό: `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 ""
"Εάν η διεύθυνση δεν βρεθεί, μια απάντηση με κωδικό κατάστασης `404` `Not` "
"`Found` πρέπει να αποσταλεί στον πελάτη με ένα πεδίο τύπου περιεχομένου `` ο"
" οποίος ορίζεται ως `application/json`."
#: ../../../developer/name-server-protocol.md:124
msgid "Registering a name"
msgstr "Καταχώριση ονόματος"
#: ../../../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 ""
"Αυτό το μέρος του πρωτοκόλλου χρησιμοποιείται για την καταχώριση ενός νέου "
"ζεύγους ονόματος/εύθυνσης."
#: ../../../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 ""
"Η αίτηση καταχώρισης του ονόματος `foobar` είναι μια αίτηση `POST` με "
"`/name/`*`foobar`* ως URI."
#: ../../../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 ""
"Το σώμα του αιτήματος είναι ένα έγγραφο JSON με 2 συρματολογικά "
"χαρακτηριστικά: `addr` και `owner`. `addr` περιέχει το ID Jami προθεσμία με "
"`0x` και `owner` είναι το όνομα που πρέπει να καταχωρηθεί."
#: ../../../developer/name-server-protocol.md:141
msgid "An example for `foobar` could be:"
msgstr "Ένα παράδειγμα για `foobar` θα μπορούσε να είναι:"
#: ../../../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 ""
"Εάν το ζεύγος ονομασίας/εύθυνσης καταχωρηθεί με επιτυχία, η απάντηση με "
"κωδικό κατάστασης `200` `OK` πρέπει να αποσταλεί στον πελάτη με ένα πεδίο "
"τύπου περιεχομένου ` ` ο οποίος ορίζεται ως `application/json`."
#: ../../../developer/name-server-protocol.md:156
msgid ""
"The body contain a JSON document with 1 boolean attribute `success` set to "
"`true`."
msgstr ""
"Το σώμα περιέχει ένα έγγραφο JSON με 1 χαρακτηριστικό boolean `success` που "
"ορίζεται σε `true`."
#: ../../../developer/name-server-protocol.md:159
msgid "As an example:"
msgstr "Για παράδειγμα:"
#: ../../../developer/name-server-protocol.md:167
msgid ""
"Further attempts to query the name or the address should then be successful."
msgstr ""
"Οι περαιτέρω προσπάθειες να αναζητηθεί το όνομα ή η διεύθυνση θα πρέπει να "
"είναι επιτυχείς."
#: ../../../developer/name-server-protocol.md:170
msgid "Response (Bad request)"
msgstr "Απάντηση (κακό αίτημα)"
#: ../../../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 ""
"Εάν η εγγραφή δεν μπορεί να επιτευχθεί λόγω σφάλματος στο αίτημα "
"(διαμόρφωση, απουσία χαρακτηριστικού κλπ.), η απάντηση με κωδικό κατάστασης "
"`400` `Bad` `Request` πρέπει να αποσταλεί στον πελάτη με ένα πεδίο τύπου "
"περιεχομένου` ορίζεται ως `application/json`."
#: ../../../developer/name-server-protocol.md:177
msgid ""
"The body is a JSON documents with 2 attributes: `success` which is a boolean"
" and `error` which is a string. `success` is set to `false` and `error` is "
"filled with an error message that explains the error (and could be displayed"
" in the client in the future)."
msgstr ""
"Το σώμα είναι ένα έγγραφο JSON με 2 χαρακτηριστικά: `success` που είναι μια "
"μπολ και `error` που είναι μια σειρά. `success` είναι ρυθμισμένο σε `false` "
"και `error` είναι γεμάτο με ένα μήνυμα σφάλματος που εξηγεί το σφάλμα (και "
"θα μπορούσε να εμφανιστεί στον πελάτη στο μέλλον)."
#: ../../../developer/name-server-protocol.md:182
msgid "For an invalid formatting of the username, the body could be:"
msgstr "Για άκυρη μορφοποίηση του ονόματος χρήστη, το σώμα μπορεί να είναι:"
#: ../../../developer/name-server-protocol.md:191
msgid "Response (Forbidden)"
msgstr "Απάντηση (απαγορεύεται)"
#: ../../../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 ""
"Εάν η εγγραφή δεν μπορεί να επιτευχθεί επειδή το όνομα έχει ήδη ληφθεί, "
"πρέπει να αποσταλεί στην πελάτη μια απάντηση με κωδικό κατάστασης `403` "
"`Forbidden` με ένα πεδίο τύπου περιεχομένου ` οριζόμενο ως "
"`application/json`."
#: ../../../developer/name-server-protocol.md:197
msgid ""
"The body is a JSON documents with 3 attributes: `success` which is a boolean"
" set to `false`, `name` and `addr` which are both strings replicated from "
"the original request."
msgstr ""
"Το σώμα είναι ένα έγγραφο JSON με 3 χαρακτηριστικά: `success`, το οποίο "
"είναι ένα σύνολο boolean σε `false`, `name` και `addr`, τα οποία είναι και "
"τα δύο συρματολόγια που αναπαράγονται από το αρχικό αίτημα."
#: ../../../developer/name-server-protocol.md:201
msgid ""
"Registering `foobar`, with it being already registered, would lead to the "
"following response:"
msgstr ""
"Η καταχώριση `foobar`, εφόσον έχει ήδη καταχωρηθεί, θα οδηγούσε στην "
"ακόλουθη απάντηση:"
#: ../../../developer/name-server-protocol.md:212
msgid "Some links"
msgstr "Μερικά συνδέσμους"
#: ../../../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`: αναφορά NodeJS εφαρμογή που "
"χρησιμοποιείται από `ns.jami.net` και αναζήτηση ενός κόμβου Ethereum."
#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:401
msgid "Protocol"
msgstr "Πρωτοκόλλιο"
#: ../../../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 ""
"Το τυποποιημένο x509 160-bit δακτυλικό αποτύπωμα του δημόσιου κλειδιού του "
"λογαριασμού ονομάζεται RINGID."
#: ../../../developer/protocol.md:13
msgid ""
"The account public key is used as the subject of an x509 certificate that "
"must be valid, have the Certificate Authority flag set, and can be self-"
"signed. This certificate is called the **Jami account certificate**."
msgstr ""
#: ../../../developer/protocol.md:18
msgid ""
"The subject UID field of the account certificate must be the hexadecimal "
"form of the public key fingerprint. The issuer UID field must be the "
"hexadecimal form of the issuer public key fingerprint."
msgstr ""
"Το πεδίο UID του αντικειμένου του πιστοποιητικού λογαριασμού πρέπει να είναι"
" η εξιδεκασιακή μορφή του δακτυλικού αποτυπώματος του δημόσιου κλειδιού."
#: ../../../developer/protocol.md:22
msgid "Persisting the account"
msgstr "Συνεχίζοντας το λογαριασμό"
#: ../../../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 "*Βλέπε [RFC 5280]*https://tools.ietf.org/html/rfc5280)*"
#: ../../../developer/protocol.md:35
msgid ""
"A **device** is defined by an RSA key pair with a key length of at least "
"4096 bits."
msgstr ""
"Μια ** συσκευή** ορίζεται από ζεύγος κλειδιών RSA με μήκος κλειδιών "
"τουλάχιστον 4096 bits."
#: ../../../developer/protocol.md:38
msgid ""
"A **device certificate** is defined as an x509 certificate whose subject is "
"a device public key, signed with an account private key. The certificate "
"MUST be valid. The issuer UID field MUST be the hexadecimal form of the "
"account public key fingerprint."
msgstr ""
"Ένα πιστοποιητικό συσκευής ορίζεται ως πιστοποιητικό x509 το οποίο αποτελεί "
"αντικείμενο δημόσιου κλειδιού συσκευής, υπογεγραμμένο με ιδιωτικό κλειδί "
"λογαριασμού. Το πιστοποιητικό ΑΠΕΙΝΑ να είναι έγκυρο. Το πεδίο UID του "
"εκδότη ΑΠΕΙΝΑ να είναι η εξιδεκασιακή μορφή του δακτυλικού αποτυπώματος του "
"δημόσιου κλειδιού λογαριασμού."
#: ../../../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 ""
"Η παραμονή ενός ιδιωτικού κλειδιού και πιστοποιητικού συσκευής είναι η "
"εφαρμογή ορίζεται. Η πρόσβαση σε ένα αποθηκευμένο κλειδί ιδιωτικής κλειδιού "
"συσκευής πρέπει να είναι επαληθευμένη."
#: ../../../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 "Τμήμα μεταφοράς λογαριασμού"
#: ../../../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 ""
"Η μορφή αρχείου λογαριασμού** καθορίζει τον τρόπο κατά τον οποίο μπορεί να "
"παραδοθεί ένα ιδιωτικό κλειδί λογαριασμού για μετάδοση, για παράδειγμα για "
"την υπογραφή ενός πιστοποιητικού νέας συσκευής."
#: ../../../developer/protocol.md:62
msgid ""
"The account archive is an encrypted JSON object with the following "
"structure:"
msgstr ""
"Το αρχείο λογαριασμού είναι ένα κρυπτογραφημένο αντικείμενο JSON με την "
"ακόλουθη δομή:"
#: ../../../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 μπορεί να περιέχει επιπλέον ζεύγη τιμών κλειδιών που "
"καθορίζονται από την εφαρμογή."
#: ../../../developer/protocol.md:76
msgid "The string JSON object is encrypted using a key defined as :"
msgstr ""
"Το αντικείμενο JSON συρράκτη κρυπτογραφηθεί χρησιμοποιώντας ένα κλειδί που "
"ορίζεται ως:"
#: ../../../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 είναι τυχαίο αριθμός 32bit σε εξιδεκασιακή μορφή, \"+\" είναι "
"συνδεδεμένη σειρά, το timestamp είναι το τρέχον timestamp UNIX διαιρεμένο με"
" 1200 (20 λεπτά) και το κωδικό πρόσβασης είναι ένα κωδικό πρόσβασης που "
"επιλέγει ο χρήστης."
#: ../../../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 ""
"Το PIN πρέπει να εμφανίζεται στον χρήστη για να αντιγραφεί με το χέρι στην "
"νέα φυσική συσκευή μαζί με το κωδικό πρόσβασης."
#: ../../../developer/protocol.md:90
msgid "Contacting another account"
msgstr "Επικοινωνία με άλλο λογαριασμό"
#: ../../../developer/protocol.md:93
msgid "ICE descriptor exchange over OpenDHT"
msgstr "Ανταλλαγή περιγραφών ICE σε OpenDHT"
#: ../../../developer/protocol.md:95
msgid "**Listening for incoming calls**"
msgstr "**Ακούστε τις εισερχόμενες κλήσεις**"
#: ../../../developer/protocol.md:97
msgid ""
"A device listens for incoming call by performing a listen OpenDHT operation "
"on"
msgstr ""
"Μια συσκευή ακούει για εισερχόμενη κλήση εκτελώντας μια λειτουργία OpenDHT "
"ακουστικής σε"
#: ../../../developer/protocol.md:100
msgid "`h(\"callto\"+deviceID)`"
msgstr "`h(\"κλήση\"+έγκριση ID) `"
#: ../../../developer/protocol.md:102
msgid ""
"where h is SHA1, \"+\" is the string concatenation and deviceID is the "
"hexadecimal form of the deviceID."
msgstr ""
"όπου h είναι SHA1, \"+\" είναι η συνδεδεμένη σειρά και το deviceID είναι η "
"εξιδεκατη μορφή του deviceID."
#: ../../../developer/protocol.md:105
msgid ""
"Received OpenDHT values that are not encrypted or not properly signed must "
"be dropped. The value must be encrypted with the called device public key "
"and signed with the calling device private key according to OpenDHT "
"specifications."
msgstr ""
"Οι παραλαβμένες τιμές OpenDHT που δεν είναι κρυπτογραφημένες ή δεν "
"υπογράφονται σωστά πρέπει να αφαιρούνται."
#: ../../../developer/protocol.md:110
msgid "**Sending the Initial Offer**"
msgstr "**Επισάγει την αρχική προσφορά**"
#: ../../../developer/protocol.md:112
msgid "*See [RFC 5245](https://tools.ietf.org/html/rfc5245)*"
msgstr "*Βλέπε [RFC 5245]*https://tools.ietf.org/html/rfc5245)*"
#: ../../../developer/protocol.md:114
msgid ""
"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
"for NAT traversal."
msgstr ""
"Η RFC 5245 ορίζει το ICE (Interactive Connectivity Establishment), ένα "
"πρωτόκολλο για την διέλευση NAT."
#: ../../../developer/protocol.md:117
#: ../../../developer/technical-overview.md:173
msgid ""
"ICE is used in Jami to establish a peer-to-peer communication between two "
"devices."
msgstr ""
"Το ICE χρησιμοποιείται στο Τζάμι για να δημιουργήσει μια επικοινωνία μεταξύ "
"δύο συσκευών."
#: ../../../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 ""
"Η συσκευή κλήσης συγκεντρώνει υποψηφίους και δημιουργεί αρχική προσφορά "
"σύμφωνα με τις προδιαγραφές της ICE και ξεκινά τη διαδικασία διαπραγμάτευσης"
" της ICE."
#: ../../../developer/protocol.md:124
msgid ""
"The calling device puts the encrypted ICE offer (the Initial Offer) on the "
"DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form of the "
"called deviceID."
msgstr ""
"Η συσκευή κλήσης αναθέτει την κρυπτογραφημένη προσφορά ICE (η αρχική "
"προσφορά) στο DHT στο h(\"callto\"+deviceID) όπου το deviceID είναι η "
"εξιδεκασιακή μορφή του καλούμενου deviceID."
#: ../../../developer/protocol.md:128
msgid "**ICE serialization format**"
msgstr "**Σύμφωνα με την ISO/IEC"
#: ../../../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 που ανταλλάσσονται μεταξύ ομοτίμων κατά τη διάρκεια μιας "
"κλήσης χρησιμοποιούν τη μορφή που ακολουθεί."
#: ../../../developer/protocol.md:134
msgid ""
"This protocol is a compound of msgpack values, successively packed in this "
"order:"
msgstr ""
"Αυτό το πρωτόκολλο είναι μια σύνθεση των τιμών msgpack, που συσκευάζονται "
"διαδοχικά με αυτή την σειρά:"
#: ../../../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 που "
"χρησιμοποιείται για τα υπόλοιπα δεδομένα."
#: ../../../developer/protocol.md:139
msgid ""
"a 2-elements array of strings of the ICE local session ufrag and the ICE "
"local session password"
msgstr ""
"μια σειρά από 2 στοιχεία συρμάτων της τοπικής συνεδρίασης ICE ufrag και του "
"κωδικού πρόσβασης της τοπικής συνεδρίασης ICE"
#: ../../../developer/protocol.md:140
msgid "an integer giving the number of components in the ICE session"
msgstr "Ο αριθμός των στοιχείων που περιλαμβάνονται στην συνεδρίαση ICE"
#: ../../../developer/protocol.md:141
msgid ""
"an array of string, of the previous number entries, where each string "
"describe the ICE candidate, formated as an \"a=\" line (without the \"a=\" "
"header) described in [rfc5245, section "
"4.3](https://tools.ietf.org/html/rfc5245#page-26)"
msgstr ""
"μια σειρά από συρράκια, των προηγούμενων αριθμητικών εγγραφών, όπου κάθε "
"συρράκια περιγράφει τον υποψήφιο ICE, μορφοποιημένη ως γραμμή \"a=\" (χωρίς "
"την επικεφαλίδα \"a=\") που περιγράφεται στο [rfc5245, τμήμα "
"4.3](https://tools.ietf.org/html/rfc5245#page-26)"
#: ../../../developer/protocol.md:143
msgid "**Sending the Answer**"
msgstr "**Επισάνοντας την απάντηση**"
#: ../../../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 ""
"Μετά την παραλαβή της κρυπτογραφημένης και υπογεγραμμένης αρχικής προσφοράς "
"ICE (μέσω της λειτουργίας ακουστικής), μια καλούμενη συσκευή πρέπει να "
"εκτελεί ελέγχους εξουσιοδότησης της συσκευής κλήσης, που προσδιορίζεται ως "
"υπογράφων της αρχικής προσφοράς."
#: ../../../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 ""
"Εάν η συσκευή κλήσης δεν είναι εξουσιοδοτημένη ή εάν για ορισμένους λόγους "
"εφαρμογής η καλούμενη συσκευή αρνηθεί το αίτημα εισόδου σύνδεσης, η "
"καλούμενη συσκευή πρέπει να αγνοεί την αρχική προσφορά και μπορεί να "
"καταχωρήσει το γεγονός."
#: ../../../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 ""
"Εάν η καλούμενη συσκευή εξουσιοδοτεί τον καλούμενο και επιθυμεί να δεχθεί τη"
" σύνδεση, πρέπει να δημιουργήσει μια απάντηση ICE, να ξεκινήσει τη "
"διαδικασία διαπραγμάτευσης ICE και να στείλει την κρυπτογραφημένη και "
"υπογεγραμμένη απάντηση ICE στο ίδιο κλειδί DHT."
#: ../../../developer/protocol.md:161
#: ../../../developer/technical-overview.md:241
msgid "DTLS negotiation"
msgstr "Διαπραγματεύσεις DTLS"
#: ../../../developer/protocol.md:163
msgid ""
"Once a peer-to-peer communication channel has been established, the called "
"device listens on it for incoming DTLS connections (acting as a DTLS server)"
" while the caller initiates an outgoing DTLS connection (acting as a DTLS "
"client)."
msgstr ""
"Μόλις δημιουργηθεί ένα κανάλι επικοινωνίας μεταξύ ατόμων, η καλούμενη "
"συσκευή ακούει για εισερχόμενες συνδέσεις DTLS (που λειτουργεί ως "
"διακομιστής DTLS), ενώ ο καλούμενος ξεκινά μια έξοδος σύνδεση DTLS (που "
"λειτουργεί ως πελάτης DTLS)."
#: ../../../developer/protocol.md:168
msgid ""
"The DTLS communication must be RFC6347 compliant "
"([1](https://tools.ietf.org/html/rfc6347))."
msgstr ""
"Η επικοινωνία DTLS πρέπει να είναι σύμφωνη με την RFC6347 "
"([1](https://tools.ietf.org/html/rfc6347))."
#: ../../../developer/protocol.md:171
msgid ""
"Peers must only support PFS cypher suites. The set of supported cypher "
"suites is implementation defined but should include at least ECDHE-AES-GCM "
"(TODO: specify the exact suites recommended to support)."
msgstr ""
"Οι συνάδελφοί πρέπει να υποστηρίζουν μόνο τις συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές συνδυαστικές "
"συνδυαστικές συνδυαστικές συνδυαστικές συν."
#: ../../../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, και οι δύο ομολόγοι πρέπει να παρέχουν "
"την αντίστοιχη αλυσίδα πιστοποιητικών συσκευής τους και πρέπει να "
"πιστοποιούν τον άλλο ομολόγο, ελέγχοντας ότι το δημόσιο κλειδί του είναι το "
"ίδιο που χρησιμοποιείται κατά τη διάρκεια της ανταλλαγής DHT ICE."
#: ../../../developer/protocol.md:179
msgid "SIP call"
msgstr "Επικοινωνία SIP"
#: ../../../developer/protocol.md:181
msgid "*See [Important\\_RFC](Important_RFC \"wikilink\")*"
msgstr "*Βλέπε [Important\\_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 ""
"Μόλις είναι διαθέσιμος ένας κρυπτογραφημένος και αυθεντικός κανάλι "
"επικοινωνίας μεταξύ ατόμων, πρέπει να χρησιμοποιηθεί το πρωτόκολλο SIP "
"[2](https://tools.ietf.org/html/rfc3261) για τη θέση μιας κλήσης και την "
"αποστολή μηνυμάτων."
#: ../../../developer/protocol.md:188
#: ../../../developer/technical-overview.md:277
msgid "The SIP implementation must support ICE and SRTP."
msgstr "Η εφαρμογή του SIP πρέπει να υποστηρίζει το ICE και το SRTP."
#: ../../../developer/protocol.md:190
#: ../../../developer/technical-overview.md:278
msgid ""
"Supported codecs are implementation defined, but Jami clients should support"
" the Opus audio coded and the H264 video codec."
msgstr ""
"Υποστηριζόμενοι κοντέκοι είναι ορισμένοι στην εφαρμογή, αλλά οι πελάτες Jami"
" θα πρέπει να υποστηρίζουν τον κοντέκ ήχου Opus και τον κοντέκ βίντεο H264."
#: ../../../developer/protocol.md:193
#: ../../../developer/technical-overview.md:280
msgid ""
"SRTP must be used when negotiating media with SIP, using a new random key "
"for each media and each negotiation. ICE should be used when negotiating "
"media with SIP."
msgstr ""
"Η SRTP πρέπει να χρησιμοποιείται κατά τη διαπραγμάτευση μέσων ενημέρωσης με "
"το SIP, χρησιμοποιώντας ένα νέο τυχαίο κλειδί για κάθε μέσο ενημέρωσης και "
"κάθε διαπραγμάτευση."
#: ../../../developer/protocol.md:197
msgid "Cryptographic primitives"
msgstr "Κρυπτογραφικές πρωτόγονες"
#: ../../../developer/protocol.md:200
msgid "Password stretching"
msgstr "Επεκταση κωδικού πρόσβασης"
#: ../../../developer/protocol.md:202
msgid ""
"*See [Argon2 specifications](https://github.com/P-H-C/phc-winner-"
"argon2/blob/master/argon2-specs.pdf)*"
msgstr ""
"*Βλέπε [ειδικασίες Argon2](https://github.com/P-H-C/phc-winner-"
"argon2/blob/master/argon2-specs.pdf) *"
#: ../../../developer/protocol.md:205
msgid ""
"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = 2\\^16"
" (64 MiB), mono-threaded, to generate a 512 bits hash."
msgstr ""
"Τα κωδικά πρόσβασης εκτείνονται χρησιμοποιώντας argon2i χρησιμοποιώντας "
"t\\_cost = 16, m\\_cost = 2\\^16 (64 MiB), μονό-νήματα, για να παράγουν ένα "
"hash 512 bits."
#: ../../../developer/protocol.md:208
msgid ""
"The result is then hashed again using SHA{1, 256, 512} depending on the "
"requested key size."
msgstr ""
"Το αποτέλεσμα στη συνέχεια χασάζεται ξανά χρησιμοποιώντας SHA{1, 256, 512} "
"ανάλογα με το απαιτούμενο μέγεθος κλειδιού."
#: ../../../developer/protocol.md:211
msgid "Encryption"
msgstr "Κρυπτογράφηση"
#: ../../../developer/protocol.md:213
msgid "Using a provided key (128, 192 or 256 bits)"
msgstr "Χρησιμοποιώντας ένα προετοιμαζόμενο κλειδί (128, 192 ή 256 bits)"
#: ../../../developer/protocol.md:215
msgid ""
"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
"for each encryption."
msgstr ""
"Η κρυπτογράφηση χρησιμοποιεί το τυποποιημένο AES-GCM όπως εφαρμόζεται από "
"την Nettle χρησιμοποιώντας τυχαία IV για κάθε κρυπτογράφηση."
#: ../../../developer/protocol.md:218
msgid "Using a text password"
msgstr "Χρησιμοποιώντας κωδικό πρόσβασης"
#: ../../../developer/protocol.md:220
msgid ""
"The password is stretched to generate a 256 bits key and a random salt of "
"128 bits."
msgstr ""
"Το κωδικό πρόσβασης είναι εκτεινόμενο για να παράγει ένα κλειδί 256 bits και"
" ένα τυχαίο αλάτι 128 bits."
#: ../../../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 ""
"Τα δεδομένα εισόδου κρυπτογραφούνται με τη χρήση AES-GCM (βλ. παραπάνω) και "
"το αλάτι προστίθεται στην αρχή του εγγεγραμμένου κειμένου."
#: ../../../developer/protocol.md:226
msgid "During a call"
msgstr "Κατά τη διάρκεια μιας κλήσης"
#: ../../../developer/protocol.md:228
msgid ""
"Audio/video data are exchanged using encrypted RTP channels between peers."
msgstr ""
"Τα αρχικά ή βίντεο δεδομένα ανταλλάσσονται με κρυπτογραφημένα κανάλια RTP "
"μεταξύ ομοτίμων."
#: ../../../developer/protocol.md:231
msgid ""
"The protocol is a classic SRTP, with following supported crypto suites:"
msgstr ""
"Το πρωτόκολλο είναι ένα κλασικό SRTP, με τις ακόλουθες υποστηριζόμενες "
"κρυπτονομιστικές σουίτες:"
#: ../../../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 μπορεί να χρησιμοποιήσει AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 ή "
"AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
#: ../../../developer/protocol.md:237
msgid ""
"The master key and salt is a random number, different for each call. On "
"call's master key is constant during the full live of a call."
msgstr ""
"Το κύριο κλειδί και το αλάτι είναι ένα τυχαίο αριθμό, διαφορετικό για κάθε "
"κλήση."
#: ../../../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 και QML"
#: ../../../developer/qt-qml-coding-style.md:4
msgid "Qt/c++"
msgstr "Qt/c++"
#: ../../../developer/qt-qml-coding-style.md:5
msgid "Signal and slot naming"
msgstr "Ονομασία σήματος και χώρου"
#: ../../../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 ""
"Τα σήματα και οι σλότ πρέπει να χρησιμοποιούν camelCase. Ένα σήμα πρέπει να "
"χρησιμοποιεί το απλό παρελθόν ή το παρελθόν συμμετοχή κάποιου ρήματος, "
"πιθανότατα προεπισημαίνεται από ένα σύντομο θέμα."
#: ../../../developer/qt-qml-coding-style.md:29
#: ../../../developer/qt-qml-testing-tools.md:4
#: ../../../developer/qt-qml-testing-tools.md:105
msgid "QML"
msgstr "ΚΑΜ"
#: ../../../developer/qt-qml-coding-style.md:30
msgid "Code formatting"
msgstr "Τροποποίηση κωδικού"
#: ../../../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 του qmlformat έχει κάποια προβλήματα που αφορούν τις "
"ενότητες σχολίων και δεν διακρίνει προς το παρόν τις κολόνες max, οπότε θα "
"συνεχίσουμε να μορφοποιούμε χρησιμοποιώντας αυτές τις κατευθυντήριες γραμμές"
" για το παρόν. Το παρακάτω είναι ένα ολοκληρωμένο δείγμα συνιστώμενο, "
"προσαρμοσμένο από https://doc.qt.io/qt-5/qml-codingconventions.html, που "
"προσπαθεί να απεικονίσει το ιδανικά μορφοποιημένο συνιστώμενο."
#: ../../../developer/qt-qml-testing-tools.md:1
msgid "Qt and QML testing tools"
msgstr "Εργαλεία δοκιμών Qt και QML"
#: ../../../developer/qt-qml-testing-tools.md:6
msgid ""
"qml_tests launch all the tests related to the interface. The daemon and "
"libclient SHOULD be trusted in this part, we do not want to test scenarios "
"related to connectivity. Ideally, we should work on fake data to avoid "
"depending on network events. This may be difficult sometimes and some tools "
"may be missed because tests in this part are a work in progress. Here are "
"some tools/principles to be able to quickly write tests."
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:8
msgid "Mocking Data"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:10
msgid ""
"Let's say I want to test the UI for an AccountComboBox depending on a list "
"of accounts. Instead of creating accounts, we should create a fake list. The"
" easy way to do this is to serialize/unserialize a real AccountComboBox "
"model. First, we need to get a serialized model:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:44
msgid ""
"`saveModel()` will print the serialized structure whenever the developer "
"will click on the combobox. Here's the result:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:50
msgid ""
"Now, the developper can easily use it in a test. The best way is to add this"
" data in a variable or a separated js file (cf https://doc.qt.io/qt-6/qtqml-"
"documents-networktransparency.html). And use it in a test e.g.:"
msgstr ""
#: ../../../developer/qt-qml-testing-tools.md:77
msgid "C++"
msgstr "Κ++"
#: ../../../developer/qt-qml-testing-tools.md:79
msgid "Google Test"
msgstr "Δοκιμασία Google"
#: ../../../developer/qt-qml-testing-tools.md:80
msgid "Google's c++ test framework."
msgstr "Το πλαίσιο δοκιμών C++ της Google."
#: ../../../developer/qt-qml-testing-tools.md:82
#: ../../../developer/qt-qml-testing-tools.md:109
msgid "Installation"
msgstr "Εγκατάσταση"
#: ../../../developer/qt-qml-testing-tools.md:83
msgid "Ubuntu / Debian: `apt install googletest libgtest-dev`"
msgstr "Ubuntu / Debian: `apt να εγκαταστήσετε το libgtest-dev`"
#: ../../../developer/qt-qml-testing-tools.md:86
#: ../../../developer/qt-qml-testing-tools.md:112
msgid "Example main.cpp"
msgstr "Παραδείγματος χάρη 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 να εγκαταστήσετε qml-module-qqtest libqt5quicktest5`"
#: ../../../developer/release-process.md:1
msgid "Release process"
msgstr "Διαδικασία απελευθέρωσης"
#: ../../../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 ""
"Η διατήρηση της ιδέας είναι να έχει μια παγκόσμια \"κράση\" και ** διάφορες "
"ενημερώσεις ανά μονάδα**."
#: ../../../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 ""
"**ΠΡΟΣΕΣ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ"
" ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ"
" ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ ΤΟΥ"
" ΤΟΥ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ"
" ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ "
"ΤΟ ΤΟ ΤΟ ΤΟ ΤΟ Τ ΤΟ ΤΟ Τ Τ Τ ΤΟ ΤΟ Τ Τ ΤΟ ΤΟ Τ Τ Τ Τ ΤΟ Τ Τ Τ Τ ΤΟ Τ Τ ΤΟ ΤΟ"
" Τ Τ Τ ΤΟ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ "
"Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ "
"Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ "
"Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ "
"Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ Τ"
#: ../../../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"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:33
msgid "Repository Preparation"
msgstr "Προετοιμασία αποθεματικών"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:38
msgid "Testing"
msgstr "Εξετάσεις"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:54
msgid "Push tags"
msgstr "Σημίδες ώθησης"
#: ../../../developer/release-process.md:0
#: ../../../developer/release-process.md:178
msgid "Advertisement"
msgstr "Διαφήμιση"
#: ../../../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 ""
"Δημιουργήστε μια νέα Δράση στο redmine που επισυνάπτεται στην ιστορία "
"κυκλοφορίας, για τη σωστή υπομονή."
#: ../../../developer/release-process.md:36
msgid "**This section was outdated and removed**"
msgstr "**Αυτή η ενότητα ήταν παρωχημένη και αφαιρέθηκε**"
#: ../../../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 ""
"Ξεκινήστε με καθαρό δέντρο git εκτελώντας `git καθαρό -d -f -x` από τον "
"κατάλογο ανώτερου επιπέδου του έργου."
#: ../../../developer/release-process.md:44
msgid "Build and install the daemon and client, see How\\\\\\_to\\\\\\_build"
msgstr "Χτίστε και εγκαταστήστε το δήμονο και τον πελάτη, δείτε Πώς\\\\\\_to\\\\\\_build"
#: ../../../developer/release-process.md:45
msgid ""
"Run the test suite in daemon and client, on different distributions and "
"machines."
msgstr ""
"Εκτελέστε το δοκιμαστικό σύνολο σε δήμονες και πελάτες, σε διαφορετικές "
"διανομές και μηχανές."
#: ../../../developer/release-process.md:47
msgid "Run manual tests"
msgstr "Δοκιμάστε εγχειρησιακές δοκιμές"
#: ../../../developer/release-process.md:48
msgid "Try registering and using different accounts."
msgstr ""
"Δοκιμάστε να εγγραφείτε και να χρησιμοποιείτε διαφορετικά λογαριασμούς."
#: ../../../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 ""
"Για να εντοπίσει τις χρησιμοποιούμενες μη αρχιερωμένες τιμές, διαρροές "
"μνήμης, άκυρες ελευθερίες κλπ. τρέξτε `valgrind --track-origin=yes --db-"
"attach=yes./bin/dring`"
#: ../../../developer/release-process.md:57
msgid "`git push --tags`"
msgstr "`git πιέστε --tags`"
#: ../../../developer/release-process.md:68
#: ../../../developer/release-process.md:119
msgid "RPM"
msgstr "ΡΡΜ"
#: ../../../developer/release-process.md:84
#: ../../../developer/release-process.md:137
msgid "DEB"
msgstr "ΔΕΒ"
#: ../../../developer/release-process.md:98
#: ../../../developer/release-process.md:162
msgid "Release"
msgstr "Ελευθερία"
#: ../../../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 ""
"Αυτό το σενάριο δημιουργεί, κατεβάζει και ενημερώνει αρχεία και αποθήκες..."
#: ../../../developer/release-process.md:121
msgid "vim ring-daemon.spec"
msgstr "Βιμ δαχτυλίδι-daemon.spec"
#: ../../../developer/release-process.md:181
msgid ""
"When the packaging is finished, test that they are installable. Then "
"announce the release"
msgstr "Όταν ολοκληρωθεί η συσκευασία, δοκιμάστε αν είναι εγκατάστατη."
#: ../../../developer/release-process.md:184
msgid "on the official website <https://ring.cx>"
msgstr "στην επίσημη ιστοσελίδα <https://ring.cx>"
#: ../../../developer/release-process.md:185
msgid "on Twitter <https://twitter.com/JoinTheRing>"
msgstr "Στο Twitter <https://twitter.com/JoinTheRing>"
#: ../../../developer/release-process.md:186
msgid ""
"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring "
"Major.Minor.Patch released\""
msgstr ""
"μέσω ηλεκτρονικού ταχυδρομείου στο ring@lists.savoirfairelinux.net με θέμα: "
"\"Ring Major.Minor.Patch released\""
#: ../../../developer/setting-up-your-own-turn-server.md:1
msgid "Setting up your own TURN server"
msgstr "Εγκατάσταση του δικού σας διακομιστή TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:4
msgid ""
"Jami can be configured to use TURN or STUN servers ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) to establish a connection "
"between two peers."
msgstr ""
"Το Jami μπορεί να ρυθμιστεί με τη χρήση διακομιστών TURN ή STUN ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) για τη δημιουργία σύνδεσης "
"μεταξύ δύο ομοτίμων."
#: ../../../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 είναι \"turn.jami.net\", με όνομα "
"χρήστη \"ring\", κωδικό πρόσβασης \"ring\" και χώρο \"ring\"."
#: ../../../developer/setting-up-your-own-turn-server.md:11
msgid ""
"In this guide, we will setup a [coturn](https://github.com/coturn/coturn) "
"server. There are other TURN/STUN server implementations available under a "
"free license, such as [TurnServer](http://turnserver.sourceforge.net/) and "
"[Restund](http://www.creytiv.com/restund.html)."
msgstr ""
"Σε αυτό το οδηγό, θα ρυθμίσουμε έναν διακομιστή "
"[coturn]https://github.com/coturn/coturn). Υπάρχουν άλλες εφαρμογές "
"διακομιστή TURN/STUN που είναι διαθέσιμες υπό δωρεάν άδεια, όπως "
"[TurnServer](http://turnserver.sourceforge.net/) και "
"[Restund](http://www.creytiv.com/restund.html)."
#: ../../../developer/setting-up-your-own-turn-server.md:17
msgid "Installing"
msgstr "Εγκατάσταση"
#: ../../../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."
#: ../../../developer/setting-up-your-own-turn-server.md:25
msgid "Configuring"
msgstr "Προγραμματισμός"
#: ../../../developer/setting-up-your-own-turn-server.md:27
msgid "Here is a basic `turnserver.conf` file:"
msgstr "Εδώ είναι ένα βασικό αρχείο `turnserver.conf`:"
#: ../../../developer/setting-up-your-own-turn-server.md:38
msgid ""
"This also will function as a STUN server. The STUN server does not require a"
" username and password (STUN uses very little bandwidth)."
msgstr ""
"Ο διακομιστής STUN δεν απαιτεί όνομα χρήστη και κωδικό πρόσβασης (η STUN "
"χρησιμοποιεί πολύ μικρό εύρος ζώνης)."
#: ../../../developer/setting-up-your-own-turn-server.md:41
msgid "Creating users on your TURN server"
msgstr "Δημιουργία χρηστών στον διακομιστή TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:43
msgid ""
"To create users on your TURN server, use the `turnadmin` binary (this might "
"require superuser permissions)."
msgstr ""
"Για να δημιουργήσετε χρήστες στον διακομιστή TURN σας, χρησιμοποιήστε το "
"δυαδικό `turnadmin` (αυτό μπορεί να απαιτήσει δικαιώματα υπερυπαχών)."
#: ../../../developer/setting-up-your-own-turn-server.md:50
msgid "Launching the TURN server"
msgstr "Ξεκινάμε τον διακομιστή TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:56
msgid "Configuring Jami to authenticate with the TURN server"
msgstr "Προγραμματίζοντας Jami για να επαληθεύσει με τον διακομιστή TURN"
#: ../../../developer/setting-up-your-own-turn-server.md:58
msgid ""
"You can configure Jami to use your TURN server from the advanced section of "
"your account settings:"
msgstr ""
"Μπορείτε να ρυθμίσετε το Jami να χρησιμοποιεί τον διακομιστή TURN σας από "
"την προηγμένη ενότητα των ρυθμίσεων του λογαριασμού σας:"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Field"
msgstr "Επαγγελματικό τομέα"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "Value"
msgstr "Αξία"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**server url**"
msgstr "**server url**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "host and port of your server"
msgstr "Διοίκηση και θύρα του διακομιστή σας"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "0.0.0.0:10000"
msgstr "0,0.0.0:10000"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**username**"
msgstr "**χρήστη**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "username"
msgstr "όνομα χρήστη"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "bob"
msgstr "Μπομπ"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**password**"
msgstr "** κωδικό πρόσβασης**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "password"
msgstr "κωδικό πρόσβασης"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "secretpassword"
msgstr "μυστικό κωδικό πρόσβασης"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "**realm**"
msgstr "**από το βασίλειο**"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "realm"
msgstr "Το βασίλειο"
#: ../../../developer/setting-up-your-own-turn-server.md:0
msgid "sfl"
msgstr "Σφλ"
#: ../../../developer/submitting-your-first-patch.md:1
msgid "Submitting your first patch"
msgstr "Υποβάλλω την πρώτη πακέτα"
#: ../../../developer/submitting-your-first-patch.md:4
msgid "Setting up git and ssh"
msgstr "Ετοιμάζοντας git και ssh"
#: ../../../developer/submitting-your-first-patch.md:6
msgid "(**to work smoothly with Gerrit.**)"
msgstr "(**να δουλέψουμε ομαλά με τον Gerrit.**)"
#: ../../../developer/submitting-your-first-patch.md:9
msgid "first see:"
msgstr "Πρώτα, βλέπε:"
#: ../../../developer/submitting-your-first-patch.md:11
msgid ""
"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the "
"Review>`"
msgstr ""
"{ref}`Δημιουργία αναθεώρησης gerrit <developer/working-with-gerrit:To Create"
" the Review>`"
#: ../../../developer/submitting-your-first-patch.md:13
msgid "SSH setup"
msgstr "Εγκατάσταση SSH"
#: ../../../developer/submitting-your-first-patch.md:15
msgid "https://review.jami.net/Documentation/user-upload.html#ssh"
msgstr "https://review.jami.net/Documentation/user-upload.html#ssh"
#: ../../../developer/submitting-your-first-patch.md:17
msgid "Generate a personal dedicated public / private key set."
msgstr "Γενεύετε ένα προσωπικό ειδικό σύνολο δημόσιων / ιδιωτικών κλειδιών."
#: ../../../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 ""
"Η ταυτότητά σας έχει αποθηκευτεί στο `jami_gerrit_review_rsa`. Το δημόσιο "
"κλειδί σας έχει αποθηκευτεί στο `jami_gerrit_review_rsa.pub.`"
#: ../../../developer/submitting-your-first-patch.md:25
msgid "Tell gerrit your public key"
msgstr "Πες στον Τζέριτ το δημόσιο κλειδί σου."
#: ../../../developer/submitting-your-first-patch.md:26
msgid ""
"Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-"
"in=>OAuth Gitlab)"
msgstr ""
"Εισαγωγή στο [gerrit](https://review.jami.net) μέσω του λογαριασμού Gitlab "
"σας (Sign-in=>OAuth Gitlab)"
#: ../../../developer/submitting-your-first-patch.md:27
msgid ""
"Follow the ssh key instructions found from (your) user options "
"[settings](https://review.jami.net/settings/)"
msgstr ""
"Ακολουθήστε τις οδηγίες κλειδιού ssh που βρίσκονται από τις επιλογές χρήστη "
"[settings] (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 "Εγκαταστήστε το τοπικό ssh σας (μέσω `ssh-add` ή σε `~/.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 ""
"Δοκιμάστε όλα τα παραπάνω (ssh στην υπηρεσία ή απλά προσπαθήστε να "
"κλωνοποιήσετε μια repo σε gerrit μέσω ssh)"
#: ../../../developer/submitting-your-first-patch.md:33
msgid "Your Repository"
msgstr "Το Αποθετήριο Σας"
#: ../../../developer/submitting-your-first-patch.md:35
msgid ""
"This *assumes* you have moved any existing project clone out of the way."
msgstr ""
"Αυτό *ανέχει* ότι έχετε μεταφέρει από το δρόμο οποιοδήποτε υπάρχον κλώνο του"
" έργου."
#: ../../../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 ""
"Κλωνόρισμα (φρέσκης) αντίγραφα του έργου. `git clone "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; π.χ. `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 "Προγραμματήστε αυτό το κλώνο τοπική.git/config (προαιρετική)"
#: ../../../developer/submitting-your-first-patch.md:39
msgid "Generate commit Change-Ids aka: commit-msg hook script"
msgstr "Γενεύει commit- Change-Ids aka: commit-msg script"
#: ../../../developer/submitting-your-first-patch.md:42
msgid "A shell script, to be installed to .git/hooks/commit-msg."
msgstr ""
"Ένα σενάριο shell, που πρέπει να εγκατασταθεί σε.git/hooks/commit-msg."
#: ../../../developer/submitting-your-first-patch.md:45
msgid ""
"The script creates a unique Change_Id:hash for each commit made from your "
"repository."
msgstr ""
"Το σενάριο δημιουργεί μια μοναδική Change_Id:hash για κάθε commit που "
"γίνεται από το αποθετήριο σας."
#: ../../../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 ""
"Την πρώτη φορά που προσπαθείτε να κάνετε ένα _push_ για να αναθεωρήσετε την "
"`git push origin HEAD:refs/for/master`, ο gerrit θα παρατηρήσει έλλειψη "
"Change-Id."
#: ../../../developer/submitting-your-first-patch.md:51
msgid ""
"Gerrit will also present a secure copy (scp) string. Use *that* to download "
"a copy of .git/hooks/commit-msg."
msgstr ""
"Ο Gerrit θα παρουσιάσει επίσης μια ασφαλή κειμένου (scp) string. "
"Χρησιμοποιήστε *that* για να κατεβάσετε ένα αντίγραφο του.git/hooks/commit-"
"msg."
#: ../../../developer/submitting-your-first-patch.md:55
msgid "References"
msgstr "Αναφορές"
#: ../../../developer/submitting-your-first-patch.md:58
msgid ""
"[Some Gritty Details](https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
msgstr ""
"[Κάποια Γκριτι Ντεταλ](https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
#: ../../../developer/submitting-your-first-patch.md:62
msgid "Original author: *Peter Gossner*"
msgstr "Πρωτογραφιστής: *Πίτερ Γκόσνερ*"
#: ../../../developer/swarm.md:1
msgid "Swarm"
msgstr "Σκάζες"
#: ../../../developer/swarm.md:3
msgid "Synospis"
msgstr "Συναπίσματα"
#: ../../../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 ""
"Στόχος του παρόντος εγγράφου είναι να περιγράψει πώς θα εφαρμοστούν οι "
"ομαδικές συνομιλίες (α.χ. **swarm chat**) στο Jami."
#: ../../../developer/swarm.md:7
msgid ""
"A *swarm* is a group able to discuss without any central authority in a "
"resilient way. Indeed, if two person doesn't have any connectivity with the "
"rest of the group (ie Internet outage) but they can contact each other (in a"
" LAN for example or in a subnetwork), they will be able to send messages to "
"each other and then, will be able to sync with the rest of the group when "
"it's possible."
msgstr ""
"Ένα *swarm* είναι μια ομάδα που μπορεί να συζητήσει χωρίς καμία κεντρική "
"αρχή με ανθεκτικό τρόπο. Πράγματι, αν δύο άτομα δεν έχουν καμία σύνδεση με "
"την υπόλοιπη ομάδα (δηλαδή διακοπή του Διαδικτύου), αλλά μπορούν να "
"επικοινωνήσουν μεταξύ τους (σε ένα LAN για παράδειγμα ή σε ένα υποσύστημα), "
"θα μπορούν να στείλουν μηνύματα ο ένας στον άλλο και στη συνέχεια, θα "
"μπορούν να συγχρονιστούν με την υπόλοιπη ομάδα όταν είναι δυνατόν."
#: ../../../developer/swarm.md:9
msgid "So, the *swarm* is defined by:"
msgstr "Έτσι, το σάρο ορίζεται από:"
#: ../../../developer/swarm.md:10
msgid "Ability to split and merge following the connectivity."
msgstr "Δυνατότητα διαίρεσης και συγχώνευσης μετά την σύνδεση."
#: ../../../developer/swarm.md:11
msgid ""
"Syncing of the history. Anyone must be able to send a message to the whole "
"group."
msgstr "Ο καθένας πρέπει να μπορεί να στείλει ένα μήνυμα σε όλη την ομάδα."
#: ../../../developer/swarm.md:12
msgid "No central authority. Can not rely on any server."
msgstr ""
"Δεν υπάρχει κεντρική αρχή, δεν μπορεί να βασιστεί σε κανένα διακομιστή."
#: ../../../developer/swarm.md:13
msgid ""
"Non-repudiation. Devices must be able to verify old messages' validity and "
"to replay the whole history."
msgstr ""
"Οι συσκευές πρέπει να είναι σε θέση να επαληθεύσουν την εγκυρότητα των "
"παλιών μηνυμάτων και να αναπαράγουν ολόκληρο το ιστορικό."
#: ../../../developer/swarm.md:14
msgid "PFS on the transport. Storage is managed by the device."
msgstr "Η αποθήκευση διαχειρίζεται η συσκευή."
#: ../../../developer/swarm.md:16
msgid ""
"The main idea is to get a synchronized Merkle tree with the participants."
msgstr ""
"Η βασική ιδέα είναι να έχουμε ένα συγχρονισμένο δέντρο Merkle με τους "
"συμμετέχοντες."
#: ../../../developer/swarm.md:18
msgid "We identified four modes for swarm chat that we want to implement:"
msgstr ""
"Αναγνώρισαν τέσσερις τρόπους για συνομιλία σμήνος που θέλουμε να "
"εφαρμόσουμε:"
#: ../../../developer/swarm.md:19
msgid ""
"**ONE_TO_ONE**, basically the case we have today when you discuss to a "
"friend"
msgstr ""
"Ο ΜΟΝΟΣ ΠΟΥ ΜΟΝΟΣ, βασικά η υπόθεση που έχουμε σήμερα όταν συζητάμε με έναν "
"φίλο"
#: ../../../developer/swarm.md:20
msgid ""
"**ADMIN_INVITES_ONLY** generally a class where the teacher can invite "
"people, but not students"
msgstr ""
"**ΑΔΜΙΝΟΣ_ΣΥΜΜΜΙΝΟΣ** γενικά μια τάξη όπου ο δάσκαλος μπορεί να προσκαλέσει "
"ανθρώπους, αλλά όχι μαθητές"
#: ../../../developer/swarm.md:21
msgid "**INVITES_ONLY** a private group of friends"
msgstr "**Καλούμε μόνο** μια ιδιωτική ομάδα φίλων"
#: ../../../developer/swarm.md:22
msgid "**PUBLIC** basically an opened forum"
msgstr "**ΠΟΛΙΚΟ** βασικά ένα ανοιχτό φόρουμ"
#: ../../../developer/swarm.md:24
msgid "Scenarios"
msgstr "Σενάρια"
#: ../../../developer/swarm.md:26
msgid "Create a Swarm"
msgstr "Δημιουργήστε ένα Σπάρμ"
#: ../../../developer/swarm.md:28
msgid "*Bob wants to create a new swarm*"
msgstr "*Ο Μπομπ θέλει να δημιουργήσει ένα νέο σμήνος*"
#: ../../../developer/swarm.md:30
msgid "Bob creates a local git repository."
msgstr "Ο Μπομπ δημιουργεί ένα τοπικό αποθετήριο git."
#: ../../../developer/swarm.md:31
msgid "Then, he creates an initial signed commit with the following:"
msgstr ""
"Στη συνέχεια, δημιουργεί μια αρχική υπογεγραμμένη δέσμευση με τα ακόλουθα:"
#: ../../../developer/swarm.md:32
msgid "His public key in `/admins`"
msgstr "Το δημόσιο κλειδί του σε `/admins`"
#: ../../../developer/swarm.md:33
msgid "His device certificate in ̀ /devices`"
msgstr "Το πιστοποιητικό του συσκευής του σε ̀ / συσκευές"
#: ../../../developer/swarm.md:34
msgid "His CRL in ̀ /crls`"
msgstr "Η ΚΡΑ του είναι στο ̀ /crls`"
#: ../../../developer/swarm.md:35
msgid "The hash of the first commit becomes the **ID** of the conversation"
msgstr "Το χασάι του πρώτου commit γίνεται το **ID** της συζήτησης"
#: ../../../developer/swarm.md:36
msgid ""
"Bob announces to his other devices that he creates a new conversation. This "
"is done via an invite to join the swarm sent through the DHT to other "
"devices linked to that account."
msgstr ""
"Ο Bob ανακοινώνει στις άλλες συσκευές του ότι δημιουργεί μια νέα συζήτηση."
#: ../../../developer/swarm.md:38
msgid "Adding someone"
msgstr "Προσθήκη κάποιου"
#: ../../../developer/swarm.md:40
msgid "*Alice adds Bob*"
msgstr "*Η Άλις προσθέτει τον Μπομπ*"
#: ../../../developer/swarm.md:42
msgid "Alice adds Bob to the repo:"
msgstr "Η Άλις προσθέτει τον Μπομπ στο ρεπό:"
#: ../../../developer/swarm.md:43
msgid "Adds the invited URI in `/invited`"
msgstr "Προσθέτει το καλεσμένο URI σε `/invited`"
#: ../../../developer/swarm.md:44
msgid "Adds the CRL into `/crls`"
msgstr "Προσθέτει την ΚΑΣ σε `/crls`"
#: ../../../developer/swarm.md:45
msgid "Alice sends a request on the DHT"
msgstr "Η Άλις στέλνει αίτηση για το DHT"
#: ../../../developer/swarm.md:47
msgid "Receiving an invite"
msgstr "Αποκλήση πρόσκλησης"
#: ../../../developer/swarm.md:49
msgid "*Alice gets the invite to join the previously create swarm*"
msgstr "*Η Άλις καλείται να συμμετάσχει στο πλήθος που είχε δημιουργήσει*"
#: ../../../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 ""
"Αποδέχεται την πρόσκληση (αν αρνηθεί, δεν κάνει τίποτα, θα μείνει μόνο στην "
"προσκλημένη και η Άλις δεν θα λάβει ποτέ κανένα μήνυμα)"
#: ../../../developer/swarm.md:52
msgid "A peer-to-peer connection between Alice and Bob is done."
msgstr "Μια σύνδεση μεταξύ ατόμων μεταξύ Αλίκης και Μπομπ έχει γίνει."
#: ../../../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 ""
"Η Άλις τραβάει το git repo του Μπομπ. Αυτό σημαίνει ότι τα μηνύματα "
"χρειάζονται σύνδεση, όχι από το DHT όπως σήμερα."
#: ../../../developer/swarm.md:54
msgid "Alice validates commits from Bob"
msgstr "Η Άλις επικυρώνει τις δεσμεύσεις του Μπομπ."
#: ../../../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 ""
"Για να επικυρώσει ότι η Άλις είναι μέλος, αφαιρεί την πρόσκληση από τον "
"κατάλογο `/invited`, στη συνέχεια προσθέτει το πιστοποιητικό της στον "
"κατάλογο `/members`"
#: ../../../developer/swarm.md:56
msgid ""
"Once all commits validated and on her device, other members of the group are"
" discovered by Alice. with these peers, she will construct the **DRT** "
"(explained below) with Bob as a bootstrap."
msgstr ""
"Μόλις όλα τα δεσμεύματα επικυρωθούν και στη συσκευή της, τα άλλα μέλη της "
"ομάδας ανακαλύπτονται από την Άλις. Με αυτούς τους ομοτίμους, θα "
"κατασκευάσει το **DRT** (που εξηγείται παρακάτω) με τον Μπομπ ως bootstrap."
#: ../../../developer/swarm.md:58
msgid "Sending a message"
msgstr "Στείλουμε μήνυμα"
#: ../../../developer/swarm.md:60
msgid "*Alice sends a message*"
msgstr "*Η Άλις στέλνει μήνυμα*"
#: ../../../developer/swarm.md:62
msgid ""
"Sending a message is pretty simple. Alice writes a commit-message in the "
"following format:"
msgstr "Η Αλίκη γράφει ένα μήνυμα διαβεβαίωσης με την ακόλουθη μορφή:"
#: ../../../developer/swarm.md:64
msgid "**TODO format unclear**"
msgstr "**Το σχήμα TODO ασαφές**"
#: ../../../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 ""
"Η εταιρεία προσθέτει τη συσκευή και το CRL της στο αποθετήριο εάν λείπει (οι"
" άλλοι πρέπει να είναι σε θέση να επαληθεύσουν το commit). Οι συγκρούσεις "
"συγχώνευσης αποφεύγονται επειδή βασίζονται κυρίως σε μηνύματα commit, όχι σε"
" αρχεία (εκτός αν υπάρχουν πιστοποιητικά CRLS + αλλά βρίσκονται)."
#: ../../../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 ""
"Για την πιγκ άλλων συσκευών, ο αποστολέας στέλνει σε άλλα μέλη ένα μήνυμα "
"SIP με mimetype = \"application/im-gitmessage-id\" που περιέχει ένα JSON με "
"το \"deviceId\" που στέλνει το μήνυμα, το \"id\" της συνομιλίας που "
"σχετίζεται, και το \"commit\""
#: ../../../developer/swarm.md:70
msgid "Receiving a message"
msgstr "Αποκάλυψη μηνύματος"
#: ../../../developer/swarm.md:72
msgid "*Bob receives the message from Alice*"
msgstr "*Ο Μπομπ λαμβάνει το μήνυμα από την Άλις*"
#: ../../../developer/swarm.md:74
msgid "*Bob* do a git pull on *Alice*"
msgstr "Ο Μπομπ κάνει μια στροφή στην Άλις."
#: ../../../developer/swarm.md:75
msgid "Commits MUST be verified via a hook"
msgstr "Οι δεσμεύσεις πρέπει να επαληθεύονται μέσω ενός χανκού"
#: ../../../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 ""
"Εάν όλα τα commit είναι έγκυρα, τα commit αποθηκεύονται και εμφανίζονται."
#: ../../../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 ""
"Αν όλα τα δεσμεύματα δεν είναι έγκυρα, το pull ακυρώνεται. *Αλίς* πρέπει να "
"αποκαταστήσει την κατάσταση της σε μια σωστή κατάσταση. *Πρόγραμμα TODO*"
#: ../../../developer/swarm.md:79
msgid "Validating a commit"
msgstr "Επαλήθευση της δέσμευσης"
#: ../../../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 ""
"Για να αποφευχθεί η επιβολή κάποιων ανεπιθύμητων δεσμεύσεων από τους χρήστες"
" (με συγκρούσεις, ψευδείς μηνύματα κλπ.), έτσι κάθε δεσμεύση (από την "
"παλαιότερη έως την νεότερη) ΑΠΟΥΡΕΙ να επικυρωθεί πριν συγχωνευτεί ένα "
"απομακρυσμένο κλάδο:"
#: ../../../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 ""
"Σημείωση: αν η επικύρωση αποτύχει, η λήψη αγνοείται και δεν συγχωνεύουμε το "
"κλάδο (και αφαιρούμε τα δεδομένα), και ο χρήστης πρέπει να ειδοποιείται "
"Σημείωση2: Αν η λήψη είναι πολύ μεγάλη, δεν γίνεται (** 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 ""
"Για κάθε δέσμευση, ελέγξτε ότι η συσκευή που προσπαθεί να στείλει την "
"δέσμευση είναι εγκεκριμένη αυτή τη στιγμή και ότι τα πιστοποιητικά είναι "
"παρόντα (σε /τις συσκευές για τη συσκευή και σε /τους μέλη ή /τους "
"διαχειριστές για τον εκδότη)."
#: ../../../developer/swarm.md:87
msgid ""
"3 cases. The commit has 2 parents, so it's a merge, nothing more to validate"
" here"
msgstr ""
"Η αναφορά έχει δύο γονείς, οπότε είναι συγχώνευση, δεν υπάρχει τίποτα άλλο "
"να επικυρώσουμε εδώ."
#: ../../../developer/swarm.md:88
msgid "The commit has 0 parents, it's the initial commit:"
msgstr "Το δέσμευση έχει 0 γονείς, είναι η αρχική δέσμευση:"
#: ../../../developer/swarm.md:89
msgid "Check that admin cert is added"
msgstr "Ελέγξτε ότι το πιστοποιητικό διαχειριστή έχει προστεθεί"
#: ../../../developer/swarm.md:90
msgid "Check that device cert is added"
msgstr "Ελέγξτε ότι το πιστοποιητικό συσκευής έχει προστεθεί"
#: ../../../developer/swarm.md:91
msgid "Check CRLs added"
msgstr "Προσθήκη CRL ελέγχου"
#: ../../../developer/swarm.md:92
msgid "Check that no other file is added"
msgstr "Ελέγξτε ότι δεν προστέθηκε άλλο αρχείο"
#: ../../../developer/swarm.md:93
msgid "The commit has 1 parent, commit message is a JSON with a type:"
msgstr "Το commit έχει 1 γονέα, το μήνυμα commit είναι ένα JSON με τύπο:"
#: ../../../developer/swarm.md:94
msgid "If text (or other mime-type that doesn't change files)"
msgstr "Αν το κείμενο (ή άλλο είδος μειμ που δεν αλλάζει αρχεία)"
#: ../../../developer/swarm.md:95
msgid "Check signature from certificate in the repo"
msgstr "Ελέγχουσα υπογραφή από πιστοποιητικό στο repo"
#: ../../../developer/swarm.md:96
msgid "Check that no weird file is added outside device cert nor removed"
msgstr ""
"Ελέγξτε ότι δεν έχει προστεθεί παράξενο αρχείο εκτός πιστοποιητικού συσκευής"
" ούτε έχει αφαιρεθεί"
#: ../../../developer/swarm.md:97
msgid "If vote"
msgstr "Αν ψηφίσει"
#: ../../../developer/swarm.md:98
msgid "Check that voteType is supported (ban, unban)"
msgstr "Ελέγξτε ότι υποστηρίζεται το voteType (απαγόρευση, άπακτηση)"
#: ../../../developer/swarm.md:99
msgid "Check that vote is for the user that signs the commit"
msgstr "Ελέγξτε ότι η ψήφος είναι για τον χρήστη που υπογράφει την δέσμευση"
#: ../../../developer/swarm.md:100
msgid "Check that vote is from an admin and device present & not banned"
msgstr ""
"Ελέγξτε ότι η ψήφος είναι από έναν διαχειριστή και συσκευή που είναι παρόντα"
" & δεν απαγορεύεται"
#: ../../../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 "Ελέγξτε ότι δεν προστέθηκε ή αφαιρέθηκε κανένα παράξενο αρχείο"
#: ../../../developer/swarm.md:102
msgid "If member"
msgstr "Αν μέλος"
#: ../../../developer/swarm.md:103
msgid "If adds"
msgstr "Αν προσθέτει"
#: ../../../developer/swarm.md:104 ../../../developer/swarm.md:110
msgid "Check that the commit is correctly signed"
msgstr "Ελέγξτε ότι η ανακοίνωση υπογράφεται σωστά"
#: ../../../developer/swarm.md:105
msgid "Check that certificate is added in /invited"
msgstr "Ελέγξτε ότι το πιστοποιητικό έχει προστεθεί στο / προσκαλείται"
#: ../../../developer/swarm.md:107
msgid "If ONE_TO_ONE, check that we only have one admin, one member"
msgstr "Αν ONE_TO_ONE, ελέγξτε ότι έχουμε μόνο έναν διαχειριστή, ένα μέλος"
#: ../../../developer/swarm.md:108
msgid "If ADMIN_INVITES_ONLY, check that invite is from an admin"
msgstr ""
"Αν ADMIN_INVITES_ONLY, ελέγξτε ότι η πρόσκληση είναι από έναν διαχειριστή"
#: ../../../developer/swarm.md:109
msgid "If joins"
msgstr "Αν ενταχθεί"
#: ../../../developer/swarm.md:111
msgid "Check that device is added"
msgstr "Ελέγξτε ότι η συσκευή έχει προστεθεί"
#: ../../../developer/swarm.md:112
msgid "Check that invitation is moved to members"
msgstr "Ελέγξτε αν η πρόσκληση μεταφέρεται στα μέλη"
#: ../../../developer/swarm.md:114
msgid "If banned"
msgstr "Αν απαγορευθεί"
#: ../../../developer/swarm.md:115
msgid "Check that vote is valid"
msgstr "Ελέγξτε αν η ψήφος είναι έγκυρη."
#: ../../../developer/swarm.md:116
msgid "Check that the user is ban via an admin"
msgstr "Ελέγξτε ότι ο χρήστης απαγορεύεται μέσω διαχειριστής"
#: ../../../developer/swarm.md:117
msgid "Check that member or device certificate is moved to banned/"
msgstr ""
"Ελέγξτε αν το πιστοποιητικό μέλους ή συσκευής μεταφέρεται σε απαγορευμένο."
#: ../../../developer/swarm.md:118
msgid "Check that only files related to the vote are removed"
msgstr "Ελέγξτε ότι μόνο αρχεία που σχετίζονται με την ψηφοφορία αφαιρούνται"
#: ../../../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 ""
"Ενημερώστε τον χρήστη ότι μπορεί να είναι με μια παλιά έκδοση ή ότι ο "
"συνάδελφος προσπάθησε να υποβάλει ανεπιθύμητες υποχρεώσεις"
#: ../../../developer/swarm.md:123
msgid "Ban a device"
msgstr "Απαγορεύστε μια συσκευή"
#: ../../../developer/swarm.md:125
msgid "*Alice, Bob, Carla, Denys are in a swarm. Alice bans Denys*"
msgstr "Η Άλις, ο Μπομπ, η Κάρλα, ο Ντένις είναι σε σμήνος."
#: ../../../developer/swarm.md:127
msgid ""
"This is one of the most difficult scenarios in our context. Without central "
"authority we can not trust:"
msgstr "Η Επιτροπή θα πρέπει να λάβει υπόψη την έκθεση αυτή."
#: ../../../developer/swarm.md:129
msgid "Timestamps of generated commits"
msgstr "Χρονοσημεία των υποχρεώσεων που δημιουργούνται"
#: ../../../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 ""
"Αν υπάρχουν πολλές συσκευές διοίκησης και αν η Άλις μπορεί να μιλήσει με τον"
" Μπομπ αλλά όχι με τον Ντένις και την Κάρλα, η Κάρλα μπορεί να μιλήσει με "
"τον Ντένις, ο Ντένις απαγορεύει την Άλις, η Άλις απαγορεύει τον Ντένις, ποια"
" θα είναι η κατάσταση όταν τα 4 μέλη θα συγχωνεύσουν τις συνομιλίες."
#: ../../../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 ""
"Η Επιτροπή θα πρέπει να είναι σε θέση να απαγορεύσει μια συσκευή και να "
"αποφύγει το γεγονός ότι λέει ψέματα για την λήξη της ισχύος της ή να στέλνει"
" μηνύματα στο παρελθόν (με την αλλαγή του πιστοποιητικού της ή την "
"χρονοσημίδα της δέσμευσής της)."
#: ../../../developer/swarm.md:133
msgid ""
"Similar systems (with distributed group systems) are not so much, but these "
"are some examples:"
msgstr ""
"Τα παρόμοια συστήματα (με διανεμημένα συστήματα ομάδων) δεν είναι τόσο "
"πολλά, αλλά αυτά είναι μερικά παραδείγματα:"
#: ../../../developer/swarm.md:135
msgid ""
"[mpOTR doesn't define how to ban "
"someone](https://www.cypherpunks.ca/~iang/pubs/mpotr.pdf)"
msgstr "[Η MPOTR δεν ορίζει πώς να απαγορεύσεις κάποιον]"
#: ../../../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 ""
"Το σήμα, χωρίς κεντρικό διακομιστή για ομαδική συνομιλία (EDIT: πρόσφατα "
"άλλαξαν αυτό το σημείο), δεν δίνει τη δυνατότητα να απαγορεύσει κάποιος από "
"μια ομάδα."
#: ../../../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 ""
"Αυτό το σύστημα ψήφου χρειάζεται ανθρώπινη δράση για να απαγορεύσει κάποιον "
"ή πρέπει να βασίζεται στις πληροφορίες των ΚΑΣ από το αποθετήριο (γιατί δεν "
"μπορούμε να εμπιστευτούμε εξωτερικούς ΚΑΣ)"
#: ../../../developer/swarm.md:140
msgid "Remove a device from a conversation"
msgstr "Αφαιρέστε μια συσκευή από μια συζήτηση"
#: ../../../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 ""
"Αυτό είναι το μόνο μέρος που πρέπει να υπάρχει συναίνεση για να αποφευχθεί η"
" διαίρεση της συζήτησης, όπως αν δύο μέλη κλωτσήσουν ο ένας τον άλλο από τη "
"συζήτηση, τι θα δει το τρίτο;"
#: ../../../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 ""
"Αυτό είναι απαραίτητο για να εντοπίσουμε ακυρωμένες συσκευές ή απλά να "
"αποφύγουμε την παρουσία ανεπιθύμητων ανθρώπων σε δημόσιο χώρο."
#: ../../../developer/swarm.md:146
msgid "*Alice removes Bob*"
msgstr "*Η 'λις βγάζει τον Μπομπ*"
#: ../../../developer/swarm.md:148
msgid "Note: Alice MUST be admins to vote"
msgstr "Σημείωση: Η Αλίκη πρέπει να είναι διοικητής για να ψηφίσει"
#: ../../../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 ""
"Πρώτα, ψηφίζει για την απαγόρευση του Bob. Για να το κάνει αυτό, δημιουργεί "
"το αρχείο σε /votes/ban/members/uri_bob/uri_alice (τα μέλη μπορούν να "
"αντικατασταθούν από συσκευές για μια συσκευή, ή να καλούνται για προσκλήσεις"
" ή διαχειριστές για διαχειριστές) και δεσμεύεται"
#: ../../../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 ""
"Αυτό σημαίνει ότι >50% των διαχειριστών συμφωνούν να απαγορεύσουν τον Bob "
"(αν είναι μόνη, είναι σίγουρο ότι είναι πάνω από 50%)."
#: ../../../developer/swarm.md:152
msgid ""
"If the vote is resolved, files into /votes/ban can be removed, all files for"
" Bob in /members, /admins, /invited, /CRLs, /devices can be removed (or only"
" in /devices if it's a device that is banned) and Bob's certificate can be "
"placed into /banned/members/bob_uri.crt (or /banned/devices/uri.crt if a "
"device is banned) and committed to the repo"
msgstr ""
"Εάν η ψηφοφορία επιλυθεί, τα αρχεία που είναι /votes/ban μπορούν να "
"αφαιρεθούν, όλα τα αρχεία για τον Bob στα /members, /admins, /invited, "
"/CRLs, /devices μπορούν να αφαιρεθούν (ή μόνο στα /devices αν είναι συσκευή "
"που απαγορεύεται) και το πιστοποιητικό του Bob μπορεί να τοποθετηθεί στο "
"/banned/members/bob_uri.crt (ή /banned/devices/uri.crt αν μια συσκευή "
"απαγορεύεται) και να ανατεθεί στο repo"
#: ../../../developer/swarm.md:153
msgid "Then, Alice informs other users (outside Bob)"
msgstr ""
"Στη συνέχεια, η Alice ενημερώνει τους άλλους χρήστες (εκτός από τον Bob)"
#: ../../../developer/swarm.md:155
msgid "*Alice (admin) re-adds Bob (banned member)"
msgstr "*Η Άλις (διαχειριστής) προσθέτει ξανά τον Μπομπ (απαγορευμένο μέλος)"
#: ../../../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 ""
"Για να το κάνει αυτό, δημιουργεί το αρχείο σε "
"/votes/unban/members/uri_bob/uri_alice (τα μέλη μπορούν να αντικατασταθούν "
"από συσκευές για μια συσκευή, ή να καλούνται για προσκλήσεις ή διαχειριστές "
"για διαχειριστές) και δεσμεύεται να"
#: ../../../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 ""
"Εάν η ψηφοφορία επιλυθεί, τα αρχεία σε /votes/unban μπορούν να αφαιρεθούν, "
"όλα τα αρχεία για τον Bob σε /members, /admins, /invited, /CRLs, μπορούν να "
"προστεθούν ξανά (ή μόνο σε /devices αν είναι μια συσκευή που δεν "
"απαγορεύεται) και να δεσμευτούν στην repo"
#: ../../../developer/swarm.md:160
msgid "Remove a conversation"
msgstr "Αποσύρουμε μια συζήτηση"
#: ../../../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 ""
"Αποθηκεύστε στο convInfos removed=time::now() (όπως αποθηκεύστεContact σε "
"επαφές) ότι η συζήτηση αφαιρείται και συγχρονίζεται με τις συσκευές άλλων "
"χρηστών"
#: ../../../developer/swarm.md:163
msgid "Now, if a new commit is received for this conversation it's ignored"
msgstr "Αν λάβει κανείς νέα ανακοίνωση για αυτή τη συζήτηση, αγνοείται."
#: ../../../developer/swarm.md:164
msgid ""
"Now, if Jami startup and the repo is still present, the conversation is not "
"announced to clients"
msgstr ""
"Αν η Τζάμι ξεκινά και η αναθεώρηση είναι ακόμα παρούσα, η συζήτηση δεν "
"ανακοινώνεται στους πελάτες."
#: ../../../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 ""
"Δύο περιπτώσεις: α. Αν δεν υπάρχει άλλος μέλος στη συζήτηση μπορούμε να "
"αφαιρέσουμε αμέσως το αποθετήριο β. Αν υπάρχουν ακόμα άλλοι μέλη, δεσμεύστε "
"να αφήσουμε τη συζήτηση και τώρα περιμένετε τουλάχιστον μια άλλη συσκευή να "
"συγχρονίσει αυτό το μήνυμα. Αυτό αποφεύγει το γεγονός ότι άλλοι μέλη θα "
"εντοπίσουν τον χρήστη ως έγκυρο μέλος και εξακολουθεί να στέλνει νέες "
"ειδοποιήσεις μηνυμάτων."
#: ../../../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 ""
"Όταν είμαστε σίγουροι ότι κάποιος συγχρονίζεται, αφαιρέστε "
"διαγράφηκε=time::now() και συγχρονίστε με τις συσκευές άλλων χρηστών"
#: ../../../developer/swarm.md:169
msgid ""
"All devices owned by the user can now erase the repository and related files"
msgstr ""
"Όλες οι συσκευές που ανήκουν στον χρήστη μπορούν τώρα να διαγράψουν το "
"αποθετήριο και τα σχετικά αρχεία"
#: ../../../developer/swarm.md:171
msgid "How to specify a mode"
msgstr "Πώς να καθορίσετε τη λειτουργία"
#: ../../../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 ""
"Οι λειτουργίες δεν μπορούν να αλλάξουν με την πάροδο του χρόνου. Ή είναι μια"
" άλλη συζήτηση. Έτσι, αυτά τα δεδομένα αποθηκεύονται στο αρχικό μήνυμα "
"δέσμευσης."
#: ../../../developer/swarm.md:184
msgid ""
"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
"(INVITES_ONLY), 3 (PUBLIC)"
msgstr ""
"Για την ώρα, η \"modality\" δέχεται τιμές 0 (ONE_TO_ONE), 1 "
"(ADMIN_INVITES_ONLY), 2 (INVITES_ONLY), 3 (PUBLIC)"
#: ../../../developer/swarm.md:186
msgid "Processus for 1:1 swarms"
msgstr "Διαδικασία για σμήνους 1:1"
#: ../../../developer/swarm.md:188
msgid ""
"The goal here is to keep the old API (addContact/removeContact, "
"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate swarm "
"with a peer and its contact. This still implies some changes that we cannot "
"ignore:"
msgstr ""
"Ο στόχος εδώ είναι να διατηρηθεί η παλιά API (addContact/removeContact, "
"sendTrustRequest/acceptTrustRequest/discardTrustRequest) για να δημιουργηθεί"
" σμήνος με έναν ομοτίμο και τον επαφή του."
#: ../../../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 ""
"Η διαδικασία είναι ακόμα η ίδια, ένας λογαριασμός μπορεί να προσθέσει μια "
"επαφή μέσω addContact, στη συνέχεια να στείλει μια αίτηση εμπιστοσύνης μέσω "
"του DHT."
#: ../../../developer/swarm.md:191
msgid ""
"The TrustRequest embeds a \"conversationId\" to inform the peer what "
"conversation to clone when accepting the request"
msgstr ""
"Το TrustRequest ενσωματώνει ένα \"conversationId\" για να ενημερώσει τον "
"συνάδελφο για ποια συζήτηση να κλωνοποιήσει όταν αποδεχτεί το αίτημα"
#: ../../../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 δοκιμάζεται ξανά όταν η επαφή επιστρέφει στο διαδίκτυο. Δεν "
"είναι η περίπτωση σήμερα (όπως δεν θέλουμε να δημιουργήσουμε ένα νέο "
"TrustRequest αν ο συνάδελφος απορρίψει το πρώτο)."
#: ../../../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 ""
"Μετά, όταν ένας επαφές δέχεται το αίτημα, είναι απαραίτητη μια περίοδος "
"συγχρονισμού, επειδή ο επαφές τώρα χρειάζεται να κλωνοποιήσει τη συζήτηση."
#: ../../../developer/swarm.md:196
msgid ""
"removeContact() will remove the contact and related 1:1 conversations (with "
"the same process as \"Remove a conversation\"). The only note here is that "
"if we ban a contact, we don't wait for sync, we just remove all related "
"files."
msgstr ""
"removeContact() θα αφαιρέσει την επαφή και τις σχετικές συζητήσεις 1:1 (με "
"την ίδια διαδικασία με την \"Αφαίρεση μιας συζήτησης\"). Το μόνο σημείωμα "
"εδώ είναι ότι αν απαγορεύσουμε μια επαφή, δεν περιμένουμε την συγχρονισμό, "
"απλά αφαιρούμε όλα τα σχετικά αρχεία."
#: ../../../developer/swarm.md:198
msgid "Tricky scenarios"
msgstr "Δυσκολότερα σενάρια"
#: ../../../developer/swarm.md:200
msgid ""
"There are some cases where two conversations can be created. This is at "
"least two of those scenarios:"
msgstr ""
"Υπάρχουν ορισμένες περιπτώσεις όπου μπορεί να δημιουργηθούν δύο συζητήσεις."
#: ../../../developer/swarm.md:202 ../../../developer/swarm.md:205
msgid "Alice adds Bob"
msgstr "Η Άλις προσθέτει τον Μπομπ."
#: ../../../developer/swarm.md:203
msgid "Bob accepts"
msgstr "Ο Μπομπ δέχεται."
#: ../../../developer/swarm.md:204
msgid "Alice removes Bob"
msgstr "Η Άλις αφαιρεί τον Μπομπ."
#: ../../../developer/swarm.md:207
msgid "or"
msgstr "ή"
#: ../../../developer/swarm.md:209
msgid ""
"1, Alice adds Bob & Bob adds Alice at the same time, but both are not "
"connected together"
msgstr ""
"1, η Αλίκη προσθέτει τον Μπομπ και ο Μπομπ προσθέτει την Αλίκη ταυτόχρονα, "
"αλλά και οι δύο δεν συνδέονται μεταξύ τους"
#: ../../../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 ""
"Σε αυτή την περίπτωση, δημιουργούνται δύο συνομιλίες. Δεν θέλουμε να "
"αφαιρέσουμε μηνύματα από τους χρήστες ή να επιλέξουμε μια συνομιλία εδώ. "
"Έτσι, μερικές φορές θα εμφανίζονται δύο σμήνος 1: 1 μεταξύ των ίδιων μελών. "
"Θα δημιουργήσει κάποια σφάλματα κατά τη διάρκεια του χρόνου μετάβασης (καθώς"
" δεν θέλουμε να σπάσουμε την API, η υποτεθείσα συνομιλία θα είναι μία από "
"τις δύο συνομιλίες που εμφανίζονται, αλλά για τώρα είναι \"ok-ish\", θα "
"διορθωθεί όταν οι πελάτες θα χειρίζονται πλήρως τη συνομιλία ID για όλες τις"
" API (καλέσεις, μεταφορά αρχείων, κλπ))."
#: ../../../developer/swarm.md:213
msgid "Note while syncing"
msgstr "Σημείωση κατά την συγχρονισμό"
#: ../../../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 ""
"Μετά την αποδοχή του αιτήματος μιας συζήτησης, υπάρχει μια περίοδος κατά την"
" οποία ο δήμος χρειάζεται να ανακτήσει το απομακρυσμένο αποθετήριο. Κατά τη "
"διάρκεια αυτής της περιόδου, οι πελάτες ΑΠΟΥΠΕΙ να δείξουν μια προβολή "
"συγχρονισμού για να δώσουν πληροφορίες στον χρήστη."
#: ../../../developer/swarm.md:218
msgid ""
"ConfigurationManager::getConversations() will return the conversation's id "
"even while syncing"
msgstr ""
"ConfigurationManager::getConversations() θα επιστρέψει το id της συζήτησης "
"ακόμη και κατά τη συγχρονισμό"
#: ../../../developer/swarm.md:219
msgid ""
"ConfigurationManager::conversationInfos() will return {{\"syncing\": "
"\"true\"}} if syncing."
msgstr ""
"ConfigurationManager::conversationInfos() θα επιστρέψει {{\"σύγχρονση\": "
"\"σωστό\"}} εάν συγχρονιστεί."
#: ../../../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() θα επιστρέψει έναν χάρτη δύο "
"URI (το τρέχον λογαριασμό και τον συνάδελφο που έστειλε το αίτημα)"
#: ../../../developer/swarm.md:222
msgid "Conversations requests specification"
msgstr "Συζητήσεις ζητούν προδιαγραφή"
#: ../../../developer/swarm.md:224
msgid ""
"Conversations requests are represented by a **Map<String, String>** with the"
" following keys:"
msgstr ""
"Οι αιτήσεις συνομιλιών εκπροσωπούνται από ένα **Map<String, String>** με τα "
"ακόλουθα κλειδιά:"
#: ../../../developer/swarm.md:226
msgid "id: the conversation id"
msgstr "id: το id συζήτησης"
#: ../../../developer/swarm.md:227
msgid "from: uri of the sender"
msgstr "από: uri του αποστολέα"
#: ../../../developer/swarm.md:228
msgid "received: timestamp"
msgstr "Έκδοση: χρονοσημείο"
#: ../../../developer/swarm.md:229
msgid "title: (optional) name for the conversation"
msgstr "τίτλος: (προαιρετικό) όνομα για τη συζήτηση"
#: ../../../developer/swarm.md:230
msgid "description: (optional)"
msgstr "περιγραφή: (προαιρετική)"
#: ../../../developer/swarm.md:231
msgid "avatar: (optional)"
msgstr "avatar: (προαιρετική)"
#: ../../../developer/swarm.md:233
msgid "Conversation's profile synchronization"
msgstr "Συγχρονισμός προφίλ συνομιλίας"
#: ../../../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 ""
"Για να είναι αναγνωρίσιμη, μια συζήτηση γενικά χρειάζεται κάποια "
"μεταδεδομένα, όπως ένα τίτλο (π.χ. Jami), μια περιγραφή (π.χ. κάποια "
"συνδέσμους, τι είναι το έργο, κλπ.), και μια εικόνα (το λογότυπο του έργου)."
#: ../../../developer/swarm.md:237
msgid "Storage in the repository"
msgstr "Αποθήκευση στο αποθετήριο"
#: ../../../developer/swarm.md:239
msgid ""
"The profile of the conversation is stored in a classic vCard file at the "
"root (`/profile.vcf`) like:"
msgstr ""
"Το προφίλ της συζήτησης αποθηκεύεται σε κλασικό αρχείο vCard στη ρίζα "
"(`/profile.vcf`) όπως:"
#: ../../../developer/swarm.md:249
msgid "Synchronization"
msgstr "Συγχρονισμός"
#: ../../../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, ένας χρήστης με αρκετές άδειες (συνειδητά: "
"=ADMIN) πρέπει να επεξεργαστεί `/profile.vcf`. και θα δεσμεύσει το αρχείο με"
" το mimetype `application/update-profile`. Το νέο μήνυμα αποστέλλεται μέσω "
"του ίδιου μηχανισμού και όλοι οι συνάδελφοί θα λάβουν το σήμα "
"**MessageReceived** από το δαίμονα. Το κλάδο αποσύρεται εάν το commit "
"περιέχει άλλα αρχεία ή είναι πολύ μεγάλο ή εάν το κάνει ένα μη "
"εξουσιοδοτημένο μέλος (συνειδητά: <ADMIN)."
#: ../../../developer/swarm.md:253
msgid "Last Displayed"
msgstr "Τελευταία Εμφάνιση"
#: ../../../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 ""
"Σε κάθε συσκευή, η ανακοίνωση αυτή είναι η τελευταία που εμφανίζεται. "
"Ωστόσο, επειδή κάθε συσκευή μπορεί να έχει τη δική της κατάσταση για κάθε "
"συζήτηση και πιθανότατα χωρίς την ίδια τελευταία δέσμευση σε κάποιο σημείο, "
"υπάρχουν διάφορα σενάρια που πρέπει να ληφθούν υπόψη:"
#: ../../../developer/swarm.md:257
msgid "5 scenarios are supported:"
msgstr "Υποστηρίζονται πέντε σενάρια:"
#: ../../../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 ""
"Αν η τελευταία εμφάνιση που αποστέλλεται από άλλες συσκευές είναι η ίδια με "
"την τρέχουσα, δεν υπάρχει τίποτα να γίνει."
#: ../../../developer/swarm.md:259
msgid ""
"if there is no last displayed for the current device, the remote displayed "
"message is used."
msgstr ""
"αν δεν υπάρχει τελευταία προβολή για την τρέχουσα συσκευή, χρησιμοποιείται "
"το τηλεπροβληθέν μήνυμα."
#: ../../../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 ""
"Αν η τηλεχειρίνη που εμφανίστηκε τελευταία δεν είναι παρούσα στην αναφορά, "
"σημαίνει ότι το commit θα ληφθεί αργότερα, οπότε cache το αποτέλεσμα"
#: ../../../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 ""
"Αν το τηλεχειριστήριο έχει ήδη φέρει, ελέγξουμε ότι το τοπικό τελευταίο "
"εμφανίζεται είναι πριν από την ιστορία για να το αντικαταστήσει"
#: ../../../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 ""
"Τέλος, αν ανακοινωθεί ένα μήνυμα από τον ίδιο συγγραφέα, σημαίνει ότι πρέπει"
" να ενημερώσουμε το τελευταίο που εμφανίστηκε."
#: ../../../developer/swarm.md:264
msgid "Preferences"
msgstr "Προτιμήσεις"
#: ../../../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 ""
"Κάθε συζήτηση έχει προσαρτηθεί προτιμήσεις που ορίζονται από τον χρήστη. "
"Αυτές οι προτιμήσεις συγχρονίζονται σε όλες τις συσκευές του χρήστη. Αυτό "
"μπορεί να είναι το χρώμα της συζήτησης, εάν ο χρήστης θέλει να αγνοήσει "
"ειδοποιήσεις, όριο μεγέθους μεταφοράς αρχείων, κλπ. Για το παρόν, τα "
"αναγνωρισμένα κλειδιά είναι:"
#: ../../../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 ""
"\"αποκλείστε τις ειδοποιήσεις\" - να αγνοήσετε τις ειδοποιήσεις για νέα "
"μηνύματα σε αυτή τη συζήτηση"
#: ../../../developer/swarm.md:270
msgid "\"symbol\" - to define a default emoji."
msgstr "\"σύμβολο\" - για να καθορίσετε ένα προεπιλεγμένο emoji."
#: ../../../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 ""
"Οι προτιμήσεις αυτές αποθηκεύονται σε ένα πακέτο MapStringString, "
"αποθηκεύονται στο `accountDir/conversation_data/conversationId/preferences` "
"και διαβιβάζονται μόνο μεταξύ συσκευών του ίδιου χρήστη μέσω SyncMsg."
#: ../../../developer/swarm.md:274
msgid "The API to interact with the preferences are:"
msgstr "Η API για να αλληλεπιδρά με τις προτιμήσεις είναι:"
#: ../../../developer/swarm.md:294
msgid "Merge conflicts management"
msgstr "Διαχείριση συγκρούσεων συγχώνευσης"
#: ../../../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 ""
"Επειδή δύο διαχειριστές μπορούν να αλλάξουν την περιγραφή ταυτόχρονα, μπορεί"
" να συμβεί σύγκρουση συγχώνευσης στο `profile.vcf`. Σε αυτή την περίπτωση, "
"θα επιλεγεί το commit με το υψηλότερο hash (π.χ. ffffff > 000000)."
#: ../../../developer/swarm.md:298
msgid "APIs"
msgstr "Επικοινωνιακές μονάδες"
#: ../../../developer/swarm.md:300
msgid "The user got 2 methods to get and set conversation's metadatas:"
msgstr ""
"Ο χρήστης έχει 2 μεθόδους για να πάρει και να ρυθμίσει τα μεταδεδομένα της "
"συζήτησης:"
#: ../../../developer/swarm.md:326
msgid "where `infos` is a `map<str, str>` with the following keys:"
msgstr "όπου `info` είναι `map<str, str>` με τα ακόλουθα κλειδιά:"
#: ../../../developer/swarm.md:328
msgid "mode: READ-ONLY"
msgstr "Τρόπος: Μόνο ανάγνωση"
#: ../../../developer/swarm.md:329
msgid "title"
msgstr "τίτλος"
#: ../../../developer/swarm.md:330
msgid "description"
msgstr "περιγραφή"
#: ../../../developer/swarm.md:331
msgid "avatar"
msgstr "Αβάταρ"
#: ../../../developer/swarm.md:333
msgid "Re-import an account (link/export)"
msgstr "Επαναεξαγωγή λογαριασμού (σύνδεση/εξαγωγή)"
#: ../../../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 ""
"Το αρχείο πρέπει να περιέχει conversationId για να είναι σε θέση να "
"ανακτήσει συνομιλίες σε νέες commits μετά από επανεξαγωγή (γιατί δεν υπάρχει"
" πρόσκληση σε αυτό το σημείο)."
#: ../../../developer/swarm.md:337
msgid ""
"The conversationId is there, in this case, the daemon is able to re-clone "
"this conversation"
msgstr ""
"Η συζήτηση είναι εκεί, σε αυτή την περίπτωση, ο δαίμονας είναι σε θέση να "
"κλωνοποιήσει ξανά αυτή τη συζήτηση"
#: ../../../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 ""
"Η συζήτησηId λείπει, οπότε το δαίμονο ζητά (μέσω ενός μηνύματος "
"`{{\"ειστολή/καλίδα\", conversationId}}`) μια νέα πρόσκληση που ο χρήστης "
"πρέπει να (επαν) αποδεχθεί"
#: ../../../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 ""
"Σημείωση, μια συζήτηση μπορεί να ανακτηθεί μόνο αν υπάρχει μια επαφή ή άλλη "
"συσκευή, αλλιώς θα χαθεί."
#: ../../../developer/swarm.md:342
msgid "Used protocols"
msgstr "Χρησιμοποιημένα πρωτόκολλα"
#: ../../../developer/swarm.md:344
msgid "Git"
msgstr "- Αρκετά."
#: ../../../developer/swarm.md:346
msgid "Why this choice"
msgstr "Γιατί αυτή η επιλογή"
#: ../../../developer/swarm.md:348
msgid ""
"Each conversation will be a git repository. This choice is motivated by:"
msgstr "Κάθε συζήτηση θα είναι ένα αποθετήριο git."
#: ../../../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 ""
"Πρέπει να συγχρονίσουμε και να παραγγείλουμε μηνύματα. Το Merkle Tree είναι "
"η τέλεια δομή για να το κάνουμε αυτό και μπορεί να γίνει γραμμισμένη με τη "
"συγχώνευση των κλάδων. Επιπλέον, επειδή χρησιμοποιείται σε μαζική βάση από "
"το Git, είναι εύκολο να συγχρονιστεί μεταξύ των συσκευών."
#: ../../../developer/swarm.md:351
msgid "Distributed by nature. Massively used. Lots of backends and pluggable."
msgstr ""
"Διανέμεται από τη φύση, χρησιμοποιείται σε μεγάλο βαθμό, έχει πολλά backend "
"και είναι συνδεδετέα."
#: ../../../developer/swarm.md:352
msgid "Can verify commits via hooks and massively used crypto"
msgstr ""
"Μπορεί να επαληθεύσει τις δεσμεύσεις μέσω χανκς και ευρέως χρησιμοποιούμενων"
" κρυπτονομισμάτων"
#: ../../../developer/swarm.md:353
msgid "Can be stored in a database if necessary"
msgstr "Μπορεί να αποθηκευτεί σε βάση δεδομένων, εάν είναι απαραίτητο"
#: ../../../developer/swarm.md:354
msgid "Conflicts are avoided by using commit messages, not files."
msgstr ""
"Οι συγκρούσεις αποφεύγονται χρησιμοποιώντας μηνύματα commit, όχι αρχεία."
#: ../../../developer/swarm.md:356
msgid "What we have to validate"
msgstr "Τι πρέπει να επιβεβαιώσουμε"
#: ../../../developer/swarm.md:358
msgid "Performance? `git.lock` can be low"
msgstr "Δοκιμασία: `git.lock` μπορεί να είναι χαμηλή"
#: ../../../developer/swarm.md:359
msgid "Hooks in libgit2"
msgstr "Κάντρα σε libgit2"
#: ../../../developer/swarm.md:360
msgid "Multiple pulls at the same time?"
msgstr "Πολλαπλές τραβήξεις ταυτόχρονα;"
#: ../../../developer/swarm.md:362
msgid "Limits"
msgstr "Περιορισμοί"
#: ../../../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 ""
"Για να διαγράψει μια συζήτηση, η συσκευή πρέπει να φύγει από τη συζήτηση και"
" να δημιουργήσει μια άλλη."
#: ../../../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 ""
"Ωστόσο, μη μόνιμα μηνύματα (όπως μηνύματα που μπορούν να διαβάζονται μόνο "
"για μερικά λεπτά) μπορούν να αποσταλούν μέσω ειδικού μηνύματος μέσω του DRT "
"(όπως ειδοποιήσεις Τάπωσης ή Διαβάσεως)."
#: ../../../developer/swarm.md:368
msgid "Structure"
msgstr "Διαρθρωση"
#: ../../../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 αλλάζει μαζικά τη μεταφορά αρχείων. Τώρα, όλη η ιστορία "
"συγχρονίζεται, επιτρέποντας σε όλες τις συσκευές στη συζήτηση να ανακτούν "
"εύκολα παλιά αρχεία. Αυτές οι αλλαγές μας επιτρέπουν να μετακινηθούμε από "
"μια λογική όπου ο αποστολέας έσπρωξε το αρχείο σε άλλες συσκευές, μέσω της "
"προσπάθειας να συνδεθούμε με τις συσκευές τους (αυτό ήταν κακό επειδή δεν "
"ήταν πραγματικά ανθεκτικό στις αλλαγές / αποτυχίες συνδέσεων και χρειαζόταν "
"μια χειροκίνητη επανεξέταση) σε μια λογική όπου ο αποστολέας επιτρέπει σε "
"άλλες συσκευές να κατεβάσουν. Επιπλέον, οποιαδήποτε συσκευή που έχει το "
"αρχείο μπορεί να είναι ο ξενιστής για άλλες συσκευές, επιτρέποντας να "
"ανακτήσει αρχεία ακόμη και αν ο αποστολέας δεν είναι εκεί."
#: ../../../developer/swarm.md:403
msgid ""
"The sender adds a new commit in the conversation with the following format:"
msgstr ""
"Ο αποστολέας προσθέτει μια νέα δέσμευση στη συζήτηση με την ακόλουθη μορφή:"
#: ../../../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 ""
"και δημιουργεί μια σύνδεση στο "
"`${data_path}/conversation_data/${conversation_id}/${file_id}` όπου "
"`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 ""
"Στη συνέχεια, ο δέκτης μπορεί τώρα να κατεβάσει τα αρχεία επικοινωνώντας με "
"τις συσκευές που φιλοξενούν το αρχείο ανοίγοντας ένα κανάλι με `name=\"data-"
"transfer://\" + conversationId + \"/\" + currentDeviceId() + \"/\" + fileId`"
" και αποθηκεύοντας τις πληροφορίες που περιμένει το αρχείο σε "
"`${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 ""
"Η συσκευή που λαμβάνει την σύνδεση θα αποδεχθεί το κανάλι επιβεβαιώνοντας "
"εάν το αρχείο μπορεί να αποσταλεί (αν sha3sum είναι σωστό και αν υπάρχει "
"αρχείο). Ο δέκτης θα κρατήσει το πρώτο ανοιχτό κανάλι, θα κλείσει τα "
"υπόλοιπα και θα γράψει σε ένα αρχείο (με την ίδια διαδρομή με τον αποστολέα:"
" `${data_path}/conversation_data/${conversation_id}/${file_id}`) όλα τα "
"εισερχόμενα δεδομένα."
#: ../../../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 ""
"Όταν η μεταφορά ολοκληρωθεί ή το κανάλι κλείσει, το sha3sum επαληθεύεται για"
" να επικυρώσει ότι το αρχείο είναι σωστό (εάν δεν διαγραφεί)."
#: ../../../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 ""
"Σε περίπτωση αποτυχίας, όταν μια συσκευή της συζήτησης θα είναι ξανά online,"
" θα ζητήσουμε όλα τα αρχεία αναμονής με τον ίδιο τρόπο."
#: ../../../developer/swarm.md:423
msgid "Call in swarm"
msgstr "Καλέστε το σμήνος"
#: ../../../developer/swarm.md:425
msgid "TODO: nameserver part"
msgstr "ΠΟΛΟ: μέρος του Nameserver"
#: ../../../developer/swarm.md:427
msgid "Idea"
msgstr "Ιδέα"
#: ../../../developer/swarm.md:429
msgid ""
"A swarm conversation can have multiple rendez-vous. A rendez-vous is defined"
" by the following uri:"
msgstr "Μια συνομιλία σμήνος μπορεί να έχει πολλαπλά rendez-vous."
#: ../../../developer/swarm.md:431
msgid ""
"\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId "
"describes the host."
msgstr ""
"\"accountUri/deviceId/conversationId/confId\" όπου ο λογαριασμόςUri/deviceId"
" περιγράφει τον οικοδεσπότη."
#: ../../../developer/swarm.md:433
msgid "The host can be determined via two ways:"
msgstr "Ο οικοδεσπότης μπορεί να προσδιοριστεί με δύο τρόπους:"
#: ../../../developer/swarm.md:435
msgid ""
"In the swarm metadatas. Where it's stored like the title/desc/avatar of the "
"room"
msgstr ""
"Στο σμήνος μεταδιδάτες, όπου είναι αποθηκευμένα όπως το τίτλο/γραφία/αβάταρ "
"του δωματίου."
#: ../../../developer/swarm.md:436
msgid "Or the initial caller."
msgstr "Ή ο αρχικός καλεσμένος."
#: ../../../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 ""
"Όταν αρχίζει μια κλήση, ο οικοδεσπότης θα προσθέσει μια νέα δέσμευση στο "
"σμήνος, με το URI να συμμετάσχει "
"(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 ""
"Έτσι κάθε μέρος θα λάβει τις πληροφορίες ότι μια κλήση έχει ξεκινήσει και θα"
" είναι σε θέση να συμμετάσχει σε αυτήν καλώντας την."
#: ../../../developer/swarm.md:443
msgid "Attacks?"
msgstr "Επιθέσεις;"
#: ../../../developer/swarm.md:445
msgid "Avoid git bombs"
msgstr "Αποφύγετε τις βόμβες git"
#: ../../../developer/swarm.md:447
msgid "Notes"
msgstr "Σημειώσεις"
#: ../../../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 ""
"Η χρονοσημίδα ενός commit μπορεί να εμπιστευτείται επειδή είναι "
"επεξεργασόμενη. Μόνο η χρονοσημίδα του χρήστη μπορεί να εμπιστευτείται."
#: ../../../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, τα μηνύματα ελέγχου, τα αρχεία και άλλα πράγματα θα "
"χρησιμοποιούν μια p2p TLS v1.3 σύνδεση με μόνο κρυπτογραφίες που εγγυώνται "
"PFS. Έτσι κάθε κλειδί αναδιαπραγματεύεται για κάθε νέα σύνδεση."
#: ../../../developer/swarm.md:455
msgid "DHT (udp)"
msgstr "DHT (udp)"
#: ../../../developer/swarm.md:457
msgid ""
"Used to send messages for mobiles (to trigger push notifications) and to "
"initiate TCP connexions."
msgstr ""
"Χρησιμοποιείται για την αποστολή μηνυμάτων για κινητά (για την ενεργοποίηση "
"ειδοποιήσεων push) και για την έναρξη συνδέσεων TCP."
#: ../../../developer/swarm.md:459
msgid "Network activity"
msgstr "Δικτυακή δραστηριότητα"
#: ../../../developer/swarm.md:461
msgid "Process to invite someone"
msgstr "Η διαδικασία για να καλέσετε κάποιον"
#: ../../../developer/swarm.md:463
msgid "Alice wants to invite Bob:"
msgstr "Η Άλις θέλει να καλέσει τον Μπομπ:"
#: ../../../developer/swarm.md:465
msgid "Alice adds bob to a conversation"
msgstr "Η Άλις προσθέτει τον Μπομπ σε μια συζήτηση"
#: ../../../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 ""
"Δύο δυνατότητες για την αποστολή του μηνύματος α. Αν δεν είναι συνδεδεμένο, "
"μέσω του DHT b. Διαφορετικά, η Alice στέλνει στο κανάλι SIP"
#: ../../../developer/swarm.md:473
msgid ""
"Two possibilities for Bob a. Receives the invite, a signal is emitted for "
"the client b. Not connected, so will never receive the request cause Alice "
"must not know if Bob just ignored or blocked Alice. The only way is to "
"regenerate a new invite via a new message (cf. next scenario)"
msgstr ""
"Δύο πιθανότητες για τον Bob a. Λαμβάνει την πρόσκληση, ένα σήμα εκπέμπεται "
"για τον πελάτη b. Δεν συνδέεται, έτσι δεν θα λάβει ποτέ την αίτηση, επειδή η"
" Alice δεν πρέπει να ξέρει αν ο Bob απλά αγνοεί ή μπλοκάρει την Alice."
#: ../../../developer/swarm.md:477
msgid "Process to send a message to someone"
msgstr "Η διαδικασία για να στείλετε μήνυμα σε κάποιον"
#: ../../../developer/swarm.md:479
msgid "Alice wants to send a message to Bob:"
msgstr "Η Άλις θέλει να στείλει ένα μήνυμα στον Μπομπ:"
#: ../../../developer/swarm.md:481
msgid "Alice adds a message in the repo, giving an ID"
msgstr "Η Άλις προσθέτει ένα μήνυμα στο repo, δίνοντας ταυτότητα"
#: ../../../developer/swarm.md:482
msgid "Alice gets a message received (from herself) if successful"
msgstr "Η Άλις λαμβάνει ένα μήνυμα (από την ίδια) αν επιτύχει"
#: ../../../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 ""
"Δύο πιθανότητες, η Alice και ο Bob είναι συνδεδεμένοι ή όχι. Σε και τις δύο "
"περιπτώσεις δημιουργείται ένα μήνυμα: { \"application/im-gitmessage-id\" : "
"\"{\"id\":\"$convId\", \"commit\":\"$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 ""
"Τέσσερις πιθανότητες για τον Bob: a. Ο Bob δεν συνδέεται με την Alice, οπότε"
" αν εμπιστεύεται την Alice, ζητήστε μια νέα σύνδεση και πηγαίνετε στο b. b. "
"Αν συνδέεται, πάρτε από την Alice και ανακοινώστε νέα μηνύματα c. Ο Bob δεν "
"γνωρίζει αυτή τη συζήτηση. Ζητήστε μέσω του DHT να πάρετε μια πρόσκληση "
"πρώτα για να μπορέσετε να δεχτείτε αυτή τη συζήτηση ({\"εικείμενη "
"αίτηση/προσκληση\", συζήτησηId}) d. Ο Bob είναι αποσυνδεδεμένος (δεν υπάρχει"
" δίκτυο, ή απλά κλειστό). Δεν θα λάβει το νέο μήνυμα αλλά θα προσπαθήσει να "
"συγχρονιστεί όταν θα συμβεί η επόμενη σύνδεση"
#: ../../../developer/swarm.md:495
msgid "![Diagram: swarm chat classes](images/swarm-chat-classes-diagram.jpg)"
msgstr "! [Σχέδιο: μαθήματα συνομιλίας σμήνος]"
#: ../../../developer/swarm.md:495
msgid "Diagram: swarm chat classes"
msgstr "Σχέδιο: μαθήματα συνομιλίας σμήνος"
#: ../../../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 "**!! Παλιά Σχέδιο!!**"
#: ../../../developer/swarm.md:610
msgid ""
"Note: Following notes are not organized yet. Just some line of thoughts."
msgstr "Σημείωση: Οι παρακάτω σημειώσεις δεν είναι ακόμα οργανωμένες."
#: ../../../developer/swarm.md:612
msgid "Crypto improvements."
msgstr "Βελτιώσεις στα κρυπτογράφημα."
#: ../../../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 ""
"Για μια σοβαρή ομάδα κουτ λειτουργία, χρειαζόμαστε επίσης σοβαρό "
"κρυπτογράφημα. Με το τρέχον σχεδιασμό, αν ένα πιστοποιητικό κλαπεί ως "
"προηγούμενες τιμές DHT μιας συζήτησης, η συζήτηση μπορεί να "
"αποκρυπτογραφηθεί. Ίσως πρέπει να πάμε σε κάτι σαν **Double ratchet**."
#: ../../../developer/swarm.md:616
msgid ""
"Note: a lib might exist to implement group conversations. TODO, investigate."
msgstr ""
"Σημείωση: μπορεί να υπάρχει ένα lib για να εφαρμόσει ομαδικές συνομιλίες."
#: ../../../developer/swarm.md:618
msgid "Needs ECC support in OpenDHT"
msgstr "Χρειάζεται υποστήριξη ECC στο OpenDHT"
#: ../../../developer/swarm.md:622
msgid "Add Roles?"
msgstr "Προσθέστε ρόλους;"
#: ../../../developer/swarm.md:624
msgid "There is two major use case for group chats:"
msgstr "Υπάρχουν δύο σημαντικές περιπτώσεις χρήσης για ομαδικές συνομιλίες:"
#: ../../../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 ""
"Κάτι σαν ένα Mattermost σε μια εταιρεία, με ιδιωτικούς κανάλους, και "
"ορισμένους ρόλους (admin/spectator/bot/etc) ή για εκπαίδευση (όπου μόνο "
"λίγοι είναι ενεργοί)."
#: ../../../developer/swarm.md:627
msgid "Horizontal conversations like a conversation between friends."
msgstr "Οριζόντια συνομιλίες σαν μια συνομιλία μεταξύ φίλων."
#: ../../../developer/swarm.md:629
msgid "Jami will be for which one?"
msgstr ""
#: ../../../developer/swarm.md:631
msgid "Implementation idea"
msgstr "Ινδία υλοποίησης"
#: ../../../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 ""
"Ένα πιστοποιητικό για μια ομάδα που υπογράφει χρήστη με σημαία για έναν "
"ρόλο."
#: ../../../developer/swarm.md:635
msgid "Join a conversation"
msgstr "Συμπληρώστε μια συζήτηση"
#: ../../../developer/swarm.md:637
msgid "Only via a direct invite"
msgstr "Μόνο μέσω άμεσης πρόσκλησης"
#: ../../../developer/swarm.md:638
msgid "Via a link/QR Code/whatever"
msgstr "Με σύνδεση/Κώδικα QR/ οτιδήποτε"
#: ../../../developer/swarm.md:639
msgid "Via a room name? (a **hash** on the DHT)"
msgstr "Με όνομα δωματίου;"
#: ../../../developer/swarm.md:641
msgid "What we need"
msgstr "Αυτό που χρειαζόμαστε"
#: ../../../developer/swarm.md:643
msgid ""
"Confidentiality: members outside of the group chat should not be able to "
"read messages in the group"
msgstr ""
"Εμπιστευτικότητα: τα μέλη εκτός της ομαδικής συνομιλίας δεν πρέπει να "
"μπορούν να διαβάζουν μηνύματα στην ομάδα"
#: ../../../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 ""
"Προηγούμενη απόρρητη: εάν κάποιο κλειδί από την ομάδα διακυβευτεί, τα "
"προηγούμενα μηνύματα θα πρέπει να παραμείνουν εμπιστευτικά (όσο περισσότερο "
"γίνεται)"
#: ../../../developer/swarm.md:646
msgid "Message ordering: There is a need to have messages in the right order"
msgstr ""
"Τάξη μηνυμάτων: Είναι απαραίτητο να υπάρχουν μηνύματα με τη σωστή σειρά"
#: ../../../developer/swarm.md:647
msgid ""
"Synchronization: There is also a need to be sure to have all messages at "
"soon as possible."
msgstr ""
"Συγχρονισμός: Υπάρχει επίσης ανάγκη να βεβαιωθείτε ότι έχετε όλα τα μηνύματα"
" το συντομότερο δυνατό."
#: ../../../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 ""
"Η επιμονή: Στην πραγματικότητα, ένα μήνυμα στο DHT διαρκεί μόνο 10 λεπτά. "
"Επειδή είναι το καλύτερο χρονοδιάγραμμα που υπολογίζεται για αυτό το είδος "
"DHT. Για να επιμείνουν τα δεδομένα, ο κόμβος πρέπει να επαναθέτει την τιμή "
"στο DHT κάθε 10 λεπτά. Ένας άλλος τρόπος να γίνει όταν ο κόμβος είναι εκτός "
"λειτουργίας είναι να αφήσει τους κόμβους να επαναθέσουν τα δεδομένα."
#: ../../../developer/swarm.md:650
msgid "Other distributed ways"
msgstr "Άλλες διανεμημένες μεθόδους"
#: ../../../developer/swarm.md:652
msgid "IPFS: Need some investigation"
msgstr "Χρειάζεται κάποια έρευνα."
#: ../../../developer/swarm.md:653
msgid "BitMessage: Need some investigation"
msgstr "Χρειάζομαι κάποια έρευνα."
#: ../../../developer/swarm.md:654
msgid "Maidsafe: Need some investigation"
msgstr "Χρειάζομαι κάποια έρευνα."
#: ../../../developer/swarm.md:656
msgid "Based on current work we have"
msgstr "Με βάση την τρέχουσα εργασία που έχουμε"
#: ../../../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 ""
"Το ομαδικό chat μπορεί να βασίζεται στο ίδιο έργο που έχουμε ήδη για πολυ-"
"έργονα (αλλά εδώ, με ένα πιστοποιητικό ομάδας)."
#: ../../../developer/swarm.md:660
msgid ""
"History sync. This needs to move the database from the client into the "
"daemon."
msgstr ""
"Αυτό πρέπει να μεταφέρει την βάση δεδομένων από τον πελάτη στο δαίμονα."
#: ../../../developer/swarm.md:661
msgid ""
"If nobody is connected, the synchronization can not be done, and the person "
"will never see the conversation"
msgstr ""
"Αν κανείς δεν είναι συνδεδεμένος, η συγχρονισμός δεν μπορεί να γίνει, και το"
" άτομο δεν θα δει ποτέ τη συζήτηση"
#: ../../../developer/swarm.md:663
msgid "Another dedicated DHT"
msgstr "Άλλο ένα ειδικό DHT"
#: ../../../developer/swarm.md:665
msgid "Like a DHT with a superuser. (Not convinced)"
msgstr "Σαν ένα DHT με έναν υπερωχνητή."
#: ../../../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 ""
"Αυτή τη στιγμή, ο αλγόριθμος μεταφοράς αρχείων βασίζεται σε μια σύνδεση TURN"
" (βλ. {doc}`file-transfer`). Στην περίπτωση μιας μεγάλης ομάδας, αυτό θα "
"είναι κακό. Πρώτα χρειαζόμαστε ένα p2p υλικό για τη μεταφορά αρχείων."
#: ../../../developer/swarm.md:671
msgid ""
"Other problem: currently there is no implementation for TCP support for ICE "
"in PJSIP. This is mandatory for this point (in pjsip or homemade)"
msgstr ""
"Άλλο πρόβλημα: δεν υπάρχει επί του παρόντος εφαρμογή για την υποστήριξη TCP "
"για ICE στο PJSIP."
#: ../../../developer/swarm.md:673
msgid "Resources"
msgstr "Πηγές"
#: ../../../developer/swarm.md:675
msgid "https://eprint.iacr.org/2017/666.pdf"
msgstr "https://eprint.iacr.org/2017/666.pdf"
#: ../../../developer/swarm.md:676
msgid ""
"Robust distributed synchronization of networked linear systems with "
"intermittent information (Sean Phillips and Ricardo G.Sanfelice)"
msgstr ""
"Σκληρή κατανεμημένη συγχρονισμός δικτυακών γραμμικών συστημάτων με "
"διασταυρωμένες πληροφορίες (Σηαν Φίλιπς και Ρικάρντο Γ. Σανφέλις)"
#: ../../../developer/synchronization-protocol.md:1
msgid "Synchronization protocol"
msgstr "Πρωτόκολλο συγχρονισμού"
#: ../../../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 ""
"Η συνομιλία σμήνος παρέχει νέες δυνατότητες για κάθε συσκευή. Τώρα, είναι "
"δυνατόν να συγχρονιστεί το ιστορικό μεταξύ των συσκευών μοιράζοντας το "
"σχετικό αποθετήριο."
#: ../../../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 "Πολλά σενάρια ορίζονται στο έγγραφο σχεδιασμού του σάουρμ."
#: ../../../developer/synchronization-protocol.md:8
msgid "Old method"
msgstr "Παλιά μέθοδος"
#: ../../../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 ""
"Η συγχρονισμός συσκευών πραγματοποιήθηκε μέσω του DHT. Επειδή κάθε τιμή δεν "
"πρέπει να υπερβαίνει τα 64k, οι συνομιλίες δεν έστειλαν σε συγχρονισμό "
"συσκευών, ούτε τα προφίλ μελών, επειδή είναι πολύ βαρύ. Αυτό είναι ένα "
"πρόβλημα και πρέπει να βελτιωθεί."
#: ../../../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 ""
"Στην παλιά μέθοδο, το δαίμονα ακούει στο \"inbox:DEVICE_ID\" για τις τιμές "
"DeviceSync που περιέχει την λίστα επαφών για συγχρονισμό (βλ. "
"`AccountManager::startSync() `);"
#: ../../../developer/synchronization-protocol.md:14
msgid ""
"**NOTE:** The current **DeviceSync** value present on the **DHT** is "
"deprecated with this draft."
msgstr ""
"**ΑΝΘΩΣΗ:** Η τρέχουσα τιμή **DeviceSync** που βρίσκεται στο **DHT** έχει "
"εκτραπεί με το παρόν σχέδιο."
#: ../../../developer/synchronization-protocol.md:16
msgid "New method"
msgstr "Νέα μέθοδος"
#: ../../../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 έχει το {doc}`ConnectionManager <connection-manager>`, "
"χρησιμοποιώντας p2p socket είναι δυνατόν να εκτελέσει γρήγορα συγχρονισμό με"
" μεγάλες τιμές (γιατί η socket δεν είναι περιορισμένη στα δεδομένα)"
#: ../../../developer/synchronization-protocol.md:20
msgid "Now, this is the scenario used to sync:"
msgstr "Τώρα, αυτό είναι το σενάριο που χρησιμοποιείται για την συγχρονισμό:"
#: ../../../developer/synchronization-protocol.md:22
msgid ""
"When the device (*A*) goes online, it announces its presence via a "
"DeviceAnnouncement like the OldMethod"
msgstr ""
"Όταν η συσκευή (*A*) ενεργοποιείται, ανακοινώνει την παρουσία της μέσω ενός "
"ανακοινώματος συσκευής όπως η OldMethod"
#: ../../../developer/synchronization-protocol.md:23
msgid ""
"Other devices (*!A*) will detect that announce and will ask this device "
"through the **ConnectionManager** to open a new channel named "
"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other devices, "
"so it will asks for sync channels too)."
msgstr ""
"Άλλες συσκευές (*!A*) θα ανιχνεύσουν αυτή την ανακοίνωση και θα ζητήσουν από"
" αυτή τη συσκευή μέσω του **ConnectionManager** να ανοίξει ένα νέο κανάλι με"
" το όνομα \"sync://DEVICE_ID_A\". (Περιμνεία: Η A θα λάβει ανακοίνωση από "
"άλλες συσκευές, οπότε θα ζητήσει και κανάλια συγχρονισμού)."
#: ../../../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 ""
"Μόλις ανοίξει αυτό το κανάλι, η συσκευή που ζητά από αυτό το κανάλι θα "
"στείλει μια τιμή **DeviceSync** (βλ. επόμενο μέρος) που περιέχει τις γνωστές"
" συνομιλίες και τις επαφές της."
#: ../../../developer/synchronization-protocol.md:25
msgid "*A* will check the **DeviceSync** value and:"
msgstr "*A* θα ελέγξει την τιμή **DeviceSync** και:"
#: ../../../developer/synchronization-protocol.md:26
msgid "Remove contacts if it detects removed contacts"
msgstr "Αφαιρέστε επαφές αν ανιχνεύσει αφαιρεμένες επαφές"
#: ../../../developer/synchronization-protocol.md:27
msgid "Add contacts if it detects added contacts"
msgstr "Προσθέστε επαφές αν εντοπίσει προστιθέμενες επαφές"
#: ../../../developer/synchronization-protocol.md:28
msgid "Remove conversations if it detects removed conversations"
msgstr "Αφαιρέστε τις συνομιλίες αν εντοπίσει τις αφαιρεμένες συνομιλίες"
#: ../../../developer/synchronization-protocol.md:29
msgid "Add conversations if it detects added conversations"
msgstr "Προσθέστε συνομιλίες αν ανιχνεύει πρόσθετες συνομιλίες"
#: ../../../developer/synchronization-protocol.md:30
msgid ""
"Remove conversation's requests if request is accepted (now in "
"conversations)/declined"
msgstr ""
"Απομακρύνετε τα αιτήματα της συζήτησης εάν το αίτημα γίνει αποδεκτό (τώρα σε"
" συζητήσεις) / απορριφθεί"
#: ../../../developer/synchronization-protocol.md:31
msgid "Add conversation's requests if detected"
msgstr "Προσθέστε τα αιτήματα της συζήτησης αν εντοπιστούν"
#: ../../../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 ""
"Σημείωση: Εάν η *A* ανιχνεύσει νέες συνομιλίες, θα ζητήσει από τη συσκευή "
"που ανακοίνωσε αυτή τη συνομιλία να κλωνοποιήσει το αποθετήριο μέσω ενός "
"κανάλου git (όπως περιγράφεται στο σχέδιο συνομιλιών σάρμ <swarm>`)"
#: ../../../developer/synchronization-protocol.md:35
msgid "Device Sync"
msgstr "Συγχρονισμός συσκευών"
#: ../../../developer/synchronization-protocol.md:37
msgid "This value is a JSON containing:"
msgstr "Αυτή η τιμή είναι ένα JSON που περιέχει:"
#: ../../../developer/synchronization-protocol.md:54
msgid "User stories"
msgstr "Ιστορίες χρηστών"
#: ../../../developer/synchronization-protocol.md:56
msgid "Sync when adding device"
msgstr "Συγχρονισμός κατά την προσθήκη συσκευής"
#: ../../../developer/synchronization-protocol.md:58
#: ../../../developer/synchronization-protocol.md:65
#: ../../../developer/synchronization-protocol.md:73
msgid "Alice creates a conversation"
msgstr "Η Άλις δημιουργεί μια συζήτηση."
#: ../../../developer/synchronization-protocol.md:59
#: ../../../developer/synchronization-protocol.md:66
msgid "(Optional) Alice add some messages"
msgstr "(Επιαιρετικό) Alice προσθέτει μερικά μηνύματα"
#: ../../../developer/synchronization-protocol.md:60
msgid "Alice adds another device"
msgstr "Η Άλις προσθέτει άλλη μια συσκευή."
#: ../../../developer/synchronization-protocol.md:61
#: ../../../developer/synchronization-protocol.md:68
msgid ""
"The other device should receives and sync the conversation previously "
"created"
msgstr ""
"Η άλλη συσκευή θα πρέπει να λαμβάνει και να συγχρονίζει τη συζήτηση που έχει"
" δημιουργηθεί προηγουμένως"
#: ../../../developer/synchronization-protocol.md:63
msgid "Sync when connect a device"
msgstr "Συγχρονισμός κατά την σύνδεση συσκευής"
#: ../../../developer/synchronization-protocol.md:67
msgid "Alice connects another device"
msgstr "Η Άλις συνδέει μια άλλη συσκευή."
#: ../../../developer/synchronization-protocol.md:70
msgid "Sync between multiple devices"
msgstr "Συγχρονισμός μεταξύ πολλών συσκευών"
#: ../../../developer/synchronization-protocol.md:72
msgid "Alice got 2 devices"
msgstr "Η Άλις έχει δύο συσκευές."
#: ../../../developer/synchronization-protocol.md:74
msgid ""
"The other device should receives and sync the conversation created on one of"
" the devices"
msgstr ""
"Η άλλη συσκευή θα πρέπει να λαμβάνει και να συγχρονίζει τη συνομιλία που "
"δημιουργήθηκε σε μία από τις συσκευές"
#: ../../../developer/synchronization-protocol.md:76
msgid "Sync for detecting new requests"
msgstr "Συγχρονισμός για την ανίχνευση νέων αιτήσεων"
#: ../../../developer/synchronization-protocol.md:78
msgid "Alice receives a conversation's request"
msgstr "Η Άλις λαμβάνει αίτηση για συζήτηση"
#: ../../../developer/synchronization-protocol.md:79
msgid "Alice add a new device"
msgstr "Η Άλις προσθέτει μια νέα συσκευή."
#: ../../../developer/synchronization-protocol.md:80
msgid "The other device should retrieve the requests from device A"
msgstr "Η άλλη συσκευή πρέπει να λαμβάνει τα αιτήματα από την συσκευή Α"
#: ../../../developer/synchronization-protocol.md:82
msgid "Sync for accepted requests"
msgstr "Συγχρονισμός για αποδεκτές αιτήσεις"
#: ../../../developer/synchronization-protocol.md:84
#: ../../../developer/synchronization-protocol.md:90
msgid "Alice has 2 devices"
msgstr "Η Άλις έχει 2 συσκευές."
#: ../../../developer/synchronization-protocol.md:85
msgid "Alice accepts a conversation's request"
msgstr "Η Άλις δέχεται την αίτηση για συζήτηση."
#: ../../../developer/synchronization-protocol.md:86
msgid "The other device should detect the accepted request"
msgstr "Η άλλη συσκευή πρέπει να ανιχνεύει την αποδεκτή αίτηση"
#: ../../../developer/synchronization-protocol.md:88
msgid "Sync for decline requests"
msgstr "Συγχρονισμός για αιτήσεις απόρριψης"
#: ../../../developer/synchronization-protocol.md:91
msgid "Alice declines a conversation's request"
msgstr "Η Άλις αρνείται την αίτηση για συζήτηση."
#: ../../../developer/synchronization-protocol.md:92
msgid "The other device should detect the declined request"
msgstr "Η άλλη συσκευή πρέπει να ανιχνεύει την άρνηση αίτησης"
#: ../../../developer/synchronization-protocol.md:94
msgid "Current implementation"
msgstr "Συγχρονή εφαρμογή"
#: ../../../developer/synchronization-protocol.md:96
msgid "{gerrit}`15584` implements this page"
msgstr "{gerrit}`15584` εφαρμόζει αυτή τη σελίδα"
#: ../../../developer/synchronizing-profiles.md:1
msgid "Profile synchronization"
msgstr "Συγχρονισμός προφίλ"
#: ../../../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 ""
"Υπάρχουν δύο τύποι προφίλ. Ο ένας για το τρέχον λογαριασμό και οι άλλοι από "
"επαφές. Καθώς αυτή η vcard περιέχει πληροφορίες, όπως το avatar και το όνομα"
" της οθόνης, πρέπει να συγχρονιστεί το συντομότερο δυνατό. Αλλά, πρέπει να "
"αποσταλεί μόνο όταν είναι απαραίτητο, για να αποφευχθεί η μη αναγκαία "
"μετάδοση δεδομένων."
#: ../../../developer/synchronizing-profiles.md:5
msgid "Where are stored profiles?"
msgstr "Πού αποθηκεύονται τα προφίλ;"
#: ../../../developer/synchronizing-profiles.md:7
msgid "Self"
msgstr "Ειδικότερα"
#: ../../../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` π.χ.: "
"`.local/share/jami/xxxxxx/profile.vcf` στο GNU/Linux."
#: ../../../developer/synchronizing-profiles.md:11
msgid "Contacts"
msgstr "Επικοινωνίες"
#: ../../../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 ""
"Επειδή αυτή η λογική εξακολουθεί να διαχειρίζεται ανά πελάτη, εξαρτάται από "
"τον πελάτη."
#: ../../../developer/synchronizing-profiles.md:16
msgid "When a profile is sent"
msgstr "Όταν στέλνεται ένα προφίλ"
#: ../../../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 ""
"Στην αρχή μιας κλήσης, γενικά ο πελάτης στέλνει την vCard. Ωστόσο, αυτή η "
"μέθοδος πρέπει να αφαιρεθεί υπέρ του άλλου που βρίσκεται στο δήμονο."
#: ../../../developer/synchronizing-profiles.md:23
msgid "Send to contact's devices"
msgstr "Στείλτε στις συσκευές των επαφών"
#: ../../../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 ""
"Όταν συνδεθείτε σε μια νέα συσκευή, γίνεται ένα SIP ή ένα κανάλι "
"συγχρονισμού. Όταν αυτό το κανάλι είναι έτοιμο, ελέγχουμε αν πρέπει να "
"στείλουμε το προφίλ. Για να το κάνουμε αυτό, το χασά του προφίλ συγκρίνεται "
"με αυτό στο cache (`${cacheDir}/${accId}/vcard/sha3` όπως "
"`~/.cache/jami/xxxxx/vcard/sha3`on GNU/Linux), και το αρχείο "
"`${cacheDir}/${accId}/vcard/deviceId`)."
#: ../../../developer/synchronizing-profiles.md:27
msgid "Multidevices"
msgstr "Πολυπράγματα"
#: ../../../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 ""
"Εάν το προφίλ αποστέλλεται και η συσκευή είναι από τον ίδιο λογαριασμό, οι "
"συνομιλίες ελέγχονται και στέλνουμε προφίλ όλων των μελών. Το όνομα του "
"καναλιού θα είναι \"${conversationId}/profile/${memberUri}.vcf\"."
#: ../../../developer/technical-overview.md:1
msgid "Technical overview"
msgstr "Τεχνική επισκόπηση"
#: ../../../developer/technical-overview.md:4
msgid "Concepts"
msgstr "Συνοπτικές"
#: ../../../developer/technical-overview.md:7
msgid "Jami Account"
msgstr "Λογαριασμός Jami"
#: ../../../developer/technical-overview.md:9
msgid ""
"A **Jami account** is defined by a cryptographic Jami Identity based of "
"**RSA asymmetric key-pair** and managed with **x.509 certificates** as "
"defined by *[RFC 5280](https://tools.ietf.org/html/rfc5280)*."
msgstr ""
"Ένα λογαριασμό **Jami** ορίζεται από μια κρυπτογραφική ταυτότητα Jami που "
"βασίζεται σε **RSA ασύμμετρικό ζευγάρι κλειδιών** και διαχειρίζεται με "
"πιστοποιητικά **x.509** όπως ορίζονται από *[RFC "
"5280](https://tools.ietf.org/html/rfc5280)*."
#: ../../../developer/technical-overview.md:13
msgid ""
"Jami uses the **gnutls** library to generate and manage RSA keys and "
"certificates."
msgstr ""
"Η Jami χρησιμοποιεί τη βιβλιοθήκη **gnutls** για τη δημιουργία και τη "
"διαχείριση κλειδιών και πιστοποιητικών RSA."
#: ../../../developer/technical-overview.md:16
msgid "Jami certificate"
msgstr "Πιστοποιητικό Jami"
#: ../../../developer/technical-overview.md:18
msgid "This represents the identify of a Jami user."
msgstr "Αυτό αντιπροσωπεύει την ταυτότητα ενός χρήστη Jami."
#: ../../../developer/technical-overview.md:19
msgid "Generated at account creation"
msgstr "Δημιουργείται κατά τη δημιουργία λογαριασμού"
#: ../../../developer/technical-overview.md:20
msgid "Contains the Jami account public key."
msgstr "Περιέχει το δημόσιο κλειδί του λογαριασμού Jami."
#: ../../../developer/technical-overview.md:21
msgid ""
"The SHA-1 fingerprint (160-bits) of this public certificate is the "
"**JamiId**."
msgstr ""
"Το αποτύπωμα SHA-1 (160-bit) του παρόντος δημόσιου πιστοποιητικού είναι το "
"**JamiId**."
#: ../../../developer/technical-overview.md:23
msgid "Signed by a CA (from an organization or self-signed)."
msgstr "Υπογεγραμμένο από CA (από οργανισμό ή αυτουπογεγραμμένο)."
#: ../../../developer/technical-overview.md:24
msgid "The subject UID field must be the hexadecimal form of the JamiId."
msgstr ""
"Το πεδίο UID του αντικειμένου πρέπει να είναι η εξιδεκασιακή μορφή του "
"JamiId."
#: ../../../developer/technical-overview.md:25
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (CA)."
msgstr ""
"Το πεδίο UID του εκδότη πρέπει να είναι η εξιδεκασιακή μορφή του δακτυλικού "
"αποτυπώματος του δημόσιου κλειδιού του εκδότη (CA)."
#: ../../../developer/technical-overview.md:27
msgid "Random RSA key-pair of at least 4096-bits long."
msgstr "Ατυχείο ζευγάρι κλειδιών RSA μήκους τουλάχιστον 4096 bits."
#: ../../../developer/technical-overview.md:29
msgid "Device certificate"
msgstr "Πιστοποιητικό συσκευής"
#: ../../../developer/technical-overview.md:31
msgid "This is the identity of one specific device used to run Jami."
msgstr ""
"Αυτή είναι η ταυτότητα μιας συγκεκριμένης συσκευής που χρησιμοποιήθηκε για "
"να τρέξει Jami."
#: ../../../developer/technical-overview.md:32
msgid "One per device."
msgstr "Ένα ανά συσκευή."
#: ../../../developer/technical-overview.md:33
msgid "Random and 4096-bits long."
msgstr "Ατυχερά και 4096 bits μακριά."
#: ../../../developer/technical-overview.md:34
msgid "The SHA-1 fingerprint of the public key becomes the **DeviceId**."
msgstr "Το αποτύπωμα SHA-1 του δημόσιου κλειδιού γίνεται το **DeviceId**."
#: ../../../developer/technical-overview.md:35
msgid "Must be signed by the private key that created the Jami certificate."
msgstr ""
"Πρέπει να υπογράφεται από το κλειδί που δημιούργησε το πιστοποιητικό Τζάμι."
#: ../../../developer/technical-overview.md:36
msgid "The subject UID field must be the hexadecimal form of the DeviceId."
msgstr ""
"Το πεδίο UID του αντικειμένου πρέπει να είναι η εξιδεκασιακή μορφή του "
"DeviceId."
#: ../../../developer/technical-overview.md:37
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (JamiId)."
msgstr ""
"Το πεδίο UID του εκδότη πρέπει να είναι η εξιδεκασιακή μορφή του δακτυλικού "
"αποτυπώματος του δημόσιου κλειδιού του εκδότη (JamiId)."
#: ../../../developer/technical-overview.md:40
msgid "Usages"
msgstr "Χρησιμοποιήσεις"
#: ../../../developer/technical-overview.md:42
msgid "The JamiId:"
msgstr "Το Τζαμίλντ:"
#: ../../../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 όπου δημοσιεύεται η λίστα των συσκευών λογαριασμού και "
"όπου όλες οι συσκευές ακούν να συγχρονίζονται στις αλλαγές λογαριασμού "
"(δηλαδή προσθέτοντας ή ανακαλώντας μια συσκευή)."
#: ../../../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 ""
"Τα κλειδιά RSA του πιστοποιητικού Jami χρησιμοποιούνται ως μακροπρόθεσμα "
"κλειδιά για την υπογραφή/συνθηματισμό/αποσυνθηματισμό των μηνυμάτων που "
"αποστέλλονται μέσω του DHT:"
#: ../../../developer/technical-overview.md:48
msgid ""
"private key to sign-off and decrypt incoming messages and device "
"certificates."
msgstr ""
"ιδιωτικό κλειδί για την υπογραφή και αποκρυπτογράφηση εισερχόμενων μηνυμάτων"
" και πιστοποιητικών συσκευής."
#: ../../../developer/technical-overview.md:50
msgid ""
"public key to encrypt messages (this is done by the message issuer using the"
" receiver public key)."
msgstr ""
"δημόσιος κλειδί για την κρυπτογράφηση μηνυμάτων (αυτό γίνεται από τον εκδότη"
" του μηνύματος χρησιμοποιώντας το δημόσιο κλειδί του παραλήπτη)."
#: ../../../developer/technical-overview.md:52
msgid ""
"A device can be \"removed\" from a Jami account through revocation of the "
"device certificate:"
msgstr ""
"Μια συσκευή μπορεί να \"αποσυρθωθεί\" από λογαριασμό Jami μέσω της ανάκλησης"
" του πιστοποιητικού συσκευής:"
#: ../../../developer/technical-overview.md:54
msgid ""
"Revoked device certificates are added to one or more standard x509 "
"Certificate Revocation List (CRL)."
msgstr ""
"Τα πιστοποιητικά συσκευής που έχουν ανακαταγραφεί προστίθενται σε έναν ή "
"περισσότερους τυποποιημένους λίστες ανακαταγραφής πιστοποιητικών x509 (CRL)."
#: ../../../developer/technical-overview.md:56
msgid ""
"CRLs for revoked device must be valid and signed with the corresponding CA "
"key, which is the Jami account private key."
msgstr ""
"Οι ΚΑΣ για την ακύρωση της συσκευής πρέπει να είναι έγκυρες και να "
"υπογράφονται με το αντίστοιχο κλειδί CA, το οποίο είναι το ιδιωτικό κλειδί "
"του λογαριασμού Jami."
#: ../../../developer/technical-overview.md:59
msgid "Long-term Storage"
msgstr "Διατήρηση μακροπρόθεσμης διάρκειας"
#: ../../../developer/technical-overview.md:61
msgid "Why storing data?"
msgstr "Γιατί αποθηκεύεις δεδομένα;"
#: ../../../developer/technical-overview.md:65
msgid ""
"Jami needs to load certificates and key-pairs each time the application is "
"started."
msgstr ""
"Η Τζάμι πρέπει να φορτώνει πιστοποιητικά και ζευγάρια κλειδιών κάθε φορά που"
" ξεκινά η αίτηση."
#: ../../../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 ""
"Όταν ο Τζάμι δημιουργεί μια νέα συσκευή, αυτές οι πληροφορίες χρειάζονται "
"επίσης, που μοιράζονται από μια άλλη αξιόπιστη συσκευή με ασφαλή τρόπο."
#: ../../../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 ""
"Όλες οι πλατφόρμες δεν παρέχουν ασφαλές τρόπο αποθήκευσης δεδομένων, η Jami "
"υποστηρίζει αυτό το γεγονός κρυπτογράφησης δεδομένων που αποθηκεύονται εκτός"
" μνήμης (δηλαδή σε ένα σύστημα αρχείων) χρησιμοποιώντας ένα κωδικό πρόσβασης"
" που ορίζεται από τον χρήστη κατά τη δημιουργία λογαριασμού."
#: ../../../developer/technical-overview.md:76
msgid "These files are stored on user device (see below for details):"
msgstr ""
"Τα αρχεία αυτά αποθηκεύονται στην συσκευή του χρήστη (δείτε παρακάτω για "
"λεπτομέρειες):"
#: ../../../developer/technical-overview.md:77
msgid "a compressed and encrypted archive with private account data."
msgstr ""
"ένα συμπυκνωμένο και κρυπτογραφημένο αρχείο με δεδομένα ιδιωτικού "
"λογαριασμού."
#: ../../../developer/technical-overview.md:78
msgid "the public certificates chain as a CRT file"
msgstr "η αλυσίδα δημόσιων πιστοποιητικών ως αρχείο CRT"
#: ../../../developer/technical-overview.md:79
msgid "the device private key."
msgstr "το κλειδί ιδιωτικού τύπου της συσκευής."
#: ../../../developer/technical-overview.md:81
msgid "Jami archive (export.gz)"
msgstr "Αρχείο Jami (export.gz)"
#: ../../../developer/technical-overview.md:83
msgid "Contains private account data."
msgstr "Περιέχει δεδομένα ιδιωτικού λογαριασμού."
#: ../../../developer/technical-overview.md:84
msgid ""
"Currently transmitted over the DHT network when device is created or "
"revoked."
msgstr ""
"Σήμερα μεταδίδεται μέσω του δικτύου DHT όταν δημιουργείται ή ανακαλείται η "
"συσκευή."
#: ../../../developer/technical-overview.md:86
msgid "It's a JSON compressed and encrypted file."
msgstr "Είναι ένα συμπυκνωμένο και κρυπτογραφημένο αρχείο JSON."
#: ../../../developer/technical-overview.md:90
msgid "The current format is (could change at any time):"
msgstr "Η τρέχουσα μορφή είναι (μπορεί να αλλάξει ανά πάσα στιγμή):"
#: ../../../developer/technical-overview.md:103
msgid "The JSON byte-stream is compressed using \\*gzip\\* algorithm."
msgstr "Η ροή byte JSON συμπίεζεται χρησιμοποιώντας αλγόριθμο \\ * gzip \\ *."
#: ../../../developer/technical-overview.md:107
msgid ""
"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with a "
"256-bits key."
msgstr ""
"Στη συνέχεια, η ροή gzip κρυπτογραφηθεί χρησιμοποιώντας AES-GCM-256 "
"συμμετρική κρυπτογράφηση με κλειδί 256 bits."
#: ../../../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 ""
"Αυτό το κλειδί προέρχεται από το κωδικό πρόσβασης, το PIN και το timestamp "
"που παρέχει ο χρήστης, χρησιμοποιώντας "
"[Argon2](https://github.com/P-H-C/phc-winner-argon2) (ένα κωδικό πρόσβασης "
"και κανονιστή) όπως ακολουθεί:"
#: ../../../developer/technical-overview.md:124
msgid ""
"The PIN should be shown to the user to be copied manually on the new "
"physical device along with the password to finish the device creation "
"process."
msgstr ""
"Το PIN πρέπει να εμφανίζεται στον χρήστη για να αντιγραφεί χειροκίνητα στην "
"νέα φυσική συσκευή μαζί με το κωδικό πρόσβασης για να ολοκληρωθεί η "
"διαδικασία δημιουργίας της συσκευής."
#: ../../../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 ""
"ΣΗΜΕΙΩΣΗ: όταν εξάγει ένα αρχείο στο DHT ή αλλού, ο δήμος ενημερώνει πρώτα "
"το αρχείο, για να γράψει τις τελευταίες επαφές. Αυτός είναι ο λόγος για τον "
"οποίο το κωδικό πρόσβασης είναι απαραίτητο κατά την εξαγωγή (δεν είναι απλά "
"ένα αντίγραφο του αρχείου κάπου αλλού)"
#: ../../../developer/technical-overview.md:129
msgid "Jami device certificate chain (ring\\_device.crt)"
msgstr "Διάλξη πιστοποιητικών συσκευής Jami (ring\\_device.crt)"
#: ../../../developer/technical-overview.md:131
#: ../../../developer/technical-overview.md:137
msgid "PEM format"
msgstr "Τμήμα PEM"
#: ../../../developer/technical-overview.md:132
msgid ""
"Includes the Device certificate and parent certificates (Jami device "
"certificate and parents)"
msgstr ""
"Περιλαμβάνει το πιστοποιητικό συσκευής και τα πιστοποιητικά γονέα ( "
"πιστοποιητικό συσκευής Jami και τα πιστοποιητικά γονέα)"
#: ../../../developer/technical-overview.md:135
msgid "Device private key (ring\\_device.key)"
msgstr "Κλειδί ιδιωτικού συστήματος (ring\\_device.key)"
#: ../../../developer/technical-overview.md:138
msgid "not encrypted, we let the device file-system protect this file"
msgstr ""
"Δεν κρυπτογραφημένο, αφήνουμε το σύστημα αρχείων της συσκευής να προστατεύει"
" αυτό το αρχείο"
#: ../../../developer/technical-overview.md:140
msgid "The DHT network"
msgstr "Το δίκτυο DHT"
#: ../../../developer/technical-overview.md:142
msgid ""
"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
" page."
msgstr ""
"Ειδική [Jami διανεμημένο δίκτυο]Ring_distributed_network \"wikilink\") "
"σελίδα."
#: ../../../developer/technical-overview.md:145
msgid "Contact Request"
msgstr "Επικοινωνιακό αίτημα"
#: ../../../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 "Απευθείας Μήνυμα"
#: ../../../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 "Εξωτερικές και εισερχόμενες κλήσεις"
#: ../../../developer/technical-overview.md:164
msgid ""
"Contactable addresses (i.e. IP addresses) of the user are given to peer "
"only:"
msgstr ""
"Οι επαφές που μπορούν να γίνουν με τον χρήστη (δηλαδή οι διευθύνσεις IP) "
"παρέχονται μόνο σε συνάδελφο:"
#: ../../../developer/technical-overview.md:166
msgid "When we call a peer (outgoing call)."
msgstr "Όταν καλέσουμε έναν συνάδελφο."
#: ../../../developer/technical-overview.md:167
msgid "When a **trusted** peer is calling (incoming call)."
msgstr "Όταν καλεί κάποιος αξιόπιστος συνάδελφος (έρχουσα κλήση)."
#: ../../../developer/technical-overview.md:168
msgid ""
"All combination forms of how a specific device can be contacted is "
"summarized by a ICE message:"
msgstr ""
"Όλες οι συνδυασμένες μορφές του τρόπου επικοινωνίας με συγκεκριμένη συσκευή "
"συνοψίζονται από ένα μήνυμα ICE:"
#: ../../../developer/technical-overview.md:170
msgid ""
"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE (Interactive "
"Connectivity Establishment), a protocol for NAT traversal."
msgstr ""
"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* ορίζει το ICE (Interactive"
" Connectivity Establishment), ένα πρωτόκολλο για την διέλευση NAT."
#: ../../../developer/technical-overview.md:176
msgid "Making an outgoing call"
msgstr "Κάνω ένα τηλεφωνικό τηλεφώνημα"
#: ../../../developer/technical-overview.md:178
msgid ""
"The calling device gathers candidates and build an **Initial Offer** "
"according to the ICE specifications."
msgstr ""
"Η συσκευή κλήσης συγκεντρώνει υποψηφίους και δημιουργεί ** Αρχική Προσφορά**"
" σύμφωνα με τις προδιαγραφές της ICE."
#: ../../../developer/technical-overview.md:180
msgid ""
"The calling device puts the encrypted ICE offer (the *Initial Offer*) on the"
" DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is "
"SHA1, *+* is the string concatenation, *DeviceID* is in hexadecimal form."
msgstr ""
"Η συσκευή κλήσης αναθέτει την κρυπτογραφημένη προσφορά ICE (η * Αρχική "
"Προσφορά*) στο DHT σε: `h(\"`[callto:\"+DeviceID`](callto:%22+DeviceID)`)` "
"όπου *h* είναι SHA1, *+* είναι η συχώνεια string, *DeviceID* είναι σε "
"έκδεκατη μορφή."
#: ../../../developer/technical-overview.md:185
msgid ""
"The calling device waits on the peer answer, with its own ICE candidates "
"lists."
msgstr ""
"Η συσκευή που καλεί περιμένει την απάντηση των ομοτίμων, με τις δικές της "
"λίστες υποψηφίων ICE."
#: ../../../developer/technical-overview.md:187
msgid ""
"At peer answer reception, the calling device starts the ICE negotiation."
msgstr ""
"Στην υποδοχή απαντήσεων από τους συνάδελφους, η συσκευή κλήσης ξεκινά τη "
"διαπραγμάτευση με το ICE."
#: ../../../developer/technical-overview.md:189
msgid ""
"If the negotiation succeed, the process continues on a client-side DTLS "
"session establishment over the created ICE socket (see below)."
msgstr ""
"Εάν η διαπραγμάτευση επιτύχει, η διαδικασία συνεχίζεται σε μια εγκατάσταση "
"DTLS σε συνάντηση με τον πελάτη πάνω από την δημιουργημένη πρίζα ICE (βλ. "
"παρακάτω)."
#: ../../../developer/technical-overview.md:192
msgid "Listening for incoming calls"
msgstr "Ακούω εισερχόμενες κλήσεις"
#: ../../../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 ""
"Μια συσκευή ακούν για εισερχόμενες κλήσεις εκτελώντας μια λειτουργία OpenDHT"
" ακούν στο `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` όπου *h* "
"είναι SHA1, *+* είναι η συνδεσία string και *DeviceID* είναι σε έκδεκατη "
"μορφή."
#: ../../../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 ""
"Στην αίτηση υποδοχής ICE * Αρχική Προσφορά*, η συσκευή που ονομάζεται **** "
"πρέπει να πραγματοποιήσει επικύρωση ασφαλείας του ομολόγου (βλ. παρακάτω)."
#: ../../../developer/technical-overview.md:200
msgid ""
"If the security validation succeed, the called device starts the ICE "
"negotiation."
msgstr ""
"Αν η επικύρωση ασφαλείας πετύχει, η συσκευή που καλείται ξεκινά τη "
"διαπραγμάτευση με το ICE."
#: ../../../developer/technical-overview.md:202
msgid ""
"If the negotiation succeed, the process continues on a server-side DTLS "
"session establishment over the created ICE socket (see below)."
msgstr ""
"Εάν η διαπραγμάτευση επιτύχει, η διαδικασία συνεχίζεται σε μια εγκατάσταση "
"DTLS σε server-side session πάνω από το δημιουργημένο ICE socket (βλ. "
"παρακάτω)."
#: ../../../developer/technical-overview.md:205
msgid ""
"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
"specified by OpenDHT protocol.*"
msgstr ""
"*Σημείωση: Το OpenDHT αφήνει σε πέτρα τιμές που δεν είναι σωστά "
"κρυπτογραφημένες ή υπογεγραμμένες, όπως ορίζεται από το πρωτόκολλο OpenDHT.*"
#: ../../../developer/technical-overview.md:208
msgid "ICE serialization format"
msgstr "Τυπικό σύστημα σειριασμού ICE"
#: ../../../developer/technical-overview.md:210
msgid ""
"ICE messages exchanged between peers during a call set up use following "
"format."
msgstr ""
"Τα μηνύματα ICE που ανταλλάσσονται μεταξύ ομοτίμων κατά τη διάρκεια μιας "
"κλήσης που έχει ρυθμιστεί χρησιμοποιούνται με τη μορφή που ακολουθεί."
#: ../../../developer/technical-overview.md:212
msgid ""
"An ICE message is a chunk of binary data, following "
"[msgpack](http://msgpack.org/) data format."
msgstr ""
"Ένα μήνυμα ICE είναι ένα κομμάτι δυαδικών δεδομένων, που ακολουθεί τη μορφή "
"δεδομένων [msgpack]"
#: ../../../developer/technical-overview.md:222
msgid "**Current defined protocol is 1**:"
msgstr "**Το τρέχον καθορισμένο πρωτόκολλο είναι 1**:"
#: ../../../developer/technical-overview.md:224
msgid "Security Validation of the Peer"
msgstr "Επιβεβαίωση Ασφάλειας από τους Σύλληφους"
#: ../../../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 ""
"Μετά την παραλαβή της κρυπτογραφημένης και υπογεγραμμένης αρχικής προσφοράς "
"ICE (μέσω της λειτουργίας ακουστικής), η καλούμενη συσκευή πρέπει να "
"πραγματοποιεί ελέγχους εξουσιοδότησης της συσκευής κλήσης, η οποία "
"προσδιορίζεται ως υπογράφων της αρχικής προσφοράς."
#: ../../../developer/technical-overview.md:230
msgid ""
"Authorization rules are implementation defined, but a typical implementation"
" would authorize known or trusted contacts."
msgstr ""
"Οι κανόνες έγκρισης καθορίζονται ως εφαρμογή, αλλά μια τυπική εφαρμογή θα "
"εξουσιοδοτούσε γνωστές ή αξιόπιστες επαφές."
#: ../../../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, η καλούμενη συσκευή ξεκινά μια DTLS σερβιτόρα στην πρίζα "
"ICE, ενώ ο καλούμενος ξεκινά μια DTLS σερβιτόρα στην άλλη πλευρά της πρίζας "
"ICE."
#: ../../../developer/technical-overview.md:247
msgid ""
"The DTLS communication is [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compliant using gnutls library."
msgstr ""
"Η επικοινωνία DTLS είναι [RFC6347](https://tools.ietf.org/html/rfc6347) "
"συμβατή χρησιμοποιώντας τη βιβλιοθήκη gnutls."
#: ../../../developer/technical-overview.md:250
msgid ""
"To prevent peer certificates to be displayed in plain-text for the call "
"anonymity, the session handshake is done twice:"
msgstr ""
"Για να αποφευχθεί η εμφάνιση πιστοποιητικών ομολόγων σε απλό κείμενο για την"
" ανωνυμία της κλήσης, η χειραψία της συνεδρίας γίνεται δύο φορές:"
#: ../../../developer/technical-overview.md:253
msgid ""
"A first handshake in **anonymous mode** to create a secure but anonymous "
"transport."
msgstr ""
"Μια πρώτη χειραψία σε ανώνυμη λειτουργία για να δημιουργηθεί μια ασφαλής "
"αλλά ανώνυμη μεταφορά."
#: ../../../developer/technical-overview.md:255
msgid ""
"A second handshake in **certificate mode**, over the first one, to prove the"
" identity of peers."
msgstr ""
"Δεύτερη χειραψία σε κατάσταση πιστοποιητικού, σε σχέση με την πρώτη, για να "
"αποδειχθεί η ταυτότητα των ομοτίμων."
#: ../../../developer/technical-overview.md:258
msgid "Only PFS cipher suites are supported:"
msgstr "Υποστηρίζονται μόνο τα κωδικα κωδικοποίησης PFS:"
#: ../../../developer/technical-overview.md:259
msgid ""
"The set of supported cipher suites is implementation defined but should "
"include at least ECDHE-AES-GCM."
msgstr ""
"Το σύνολο των υποστηριζόμενων συστημάτων κρυπτογράφησης είναι καθορισμένο "
"για την εφαρμογή, αλλά πρέπει να περιλαμβάνει τουλάχιστον ECDHE-AES-GCM."
#: ../../../developer/technical-overview.md:261
msgid "The actual cipher suites (in gnutls form) is:"
msgstr "Οι πραγματικές σουίτες κρυπτογράφησης (σε μορφή gnutls) είναι:"
#: ../../../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 ""
"ανώνυμο βήμα: `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 ""
"βήμα πιστοποιητικού: `SECURE192:-VERS-TLS-ALL: +VERS-DTLS-"
"ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
#: ../../../developer/technical-overview.md:267
msgid "SIP signaling"
msgstr "Σημειώσεις SIP"
#: ../../../developer/technical-overview.md:269
msgid ""
"Used over the DTLS session to signaling the call (vcard, media negotiation, "
"hangup, instant messaging, ...)"
msgstr ""
"Χρησιμοποιείται μέσω της συνεδρίασης DTLS για την υπογραφή της κλήσης "
"(vcard, διαπραγμάτευση με τα μέσα ενημέρωσης, hangup, instant messaging,...)"
#: ../../../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 ""
"Μόλις είναι διαθέσιμος ένας κρυπτογραφημένος και αυθεντικός κανάλι "
"επικοινωνίας μεταξύ ατόμων, πρέπει να χρησιμοποιείται το [πρωτόκολλο SIP] "
"(https://tools.ietf.org/html/rfc3261) για τη διενέργεια κλήσης και την "
"αποστολή μηνυμάτων."
#: ../../../developer/technical-overview.md:275
msgid ""
"The caller might send a SIP INVITE as soon as the DTLS channel is "
"established."
msgstr ""
"Ο καλούντος μπορεί να στείλει μια SIP INVITE μόλις δημιουργηθεί το κανάλι "
"DTLS."
#: ../../../developer/technical-overview.md:284
msgid "Presence"
msgstr "Παρουσία"
#: ../../../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 "Ασφάλεια / Ιδιωτική προστασία"
#: ../../../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 παρέχει τέλεια προετοιμασία για κλήσεις και σε κλήσεις κειμένου "
"μηνυμάτων με διαφορετική διαπραγμάτευση κλιμάκων Diffie-Hellman σε κάθε "
"κλήσεις. Για μηνύματα εκτός κλήσεις χρησιμοποιείται μόνο RSA-4096."
#: ../../../developer/technical-overview.md:297
msgid "More informations:"
msgstr "Περισσότερες πληροφορίες:"
#: ../../../developer/technical-overview.md:299
msgid ""
"[Technical overview](technical/Technical-overview) of concepts and protocols"
" inside Jami"
msgstr ""
"[Τεχνική επισκόπηση](τεχνική/τεχνική επισκόπηση) των εννοιών και των "
"πρωτοκόλλων στο εσωτερικό του Jami"
#: ../../../developer/working-with-gerrit.md:1
msgid "Working with Gerrit"
msgstr "Δουλεύοντας με τον Γκέριτ"
#: ../../../developer/working-with-gerrit.md:4
msgid "Account Setup"
msgstr "Συστημική εγκατάσταση λογαριασμού"
#: ../../../developer/working-with-gerrit.md:6
msgid "Gerrit server: <https://review.jami.net>"
msgstr "Διοικητής:"
#: ../../../developer/working-with-gerrit.md:7
msgid ""
"User documentation: <https://review.jami.net/Documentation/intro-user.html>"
msgstr ""
"Χρησιμοποιούμενος έγγραφο: <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 για την Gerrit: <https://review.jami.net/admin/repos/>"
#: ../../../developer/working-with-gerrit.md:10
msgid "Sign-in with your google or github account or git.jami.net account"
msgstr "Εισαγωγή με το λογαριασμό google ή github ή git.jami.net"
#: ../../../developer/working-with-gerrit.md:11
msgid ""
"You'll also need to [upload an SSH "
"key](https://review.jami.net/settings/#SSHKeys) to be able to commit changes"
" for review."
msgstr ""
"Θα πρέπει επίσης να κάνετε [φόρτωση κλειδί "
"SSH]https://review.jami.net/settings/#SSHKeys) για να μπορείτε να κάνετε "
"αλλαγές για αναθεώρηση."
#: ../../../developer/working-with-gerrit.md:12
msgid "Don't forget to select a username."
msgstr "Μην ξεχάσεις να επιλέξεις όνομα χρήστη."
#: ../../../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 ""
"Τέλος, η διεύθυνση ηλεκτρονικού ταχυδρομείου που αναφέρεται στο git config "
"σας πρέπει να ταιριάζει με τη διεύθυνση ηλεκτρονικού ταχυδρομείου που έχει "
"καταχωριστεί με το λογαριασμό Gerrit σας."
#: ../../../developer/working-with-gerrit.md:15
msgid ""
"*Note for Savoir-faire Linux employees: please continue to use your "
"@savoirfairelinux.com email address.*"
msgstr ""
"*Παρατήρηση για τους εργαζόμενους Savoir-faire Linux: παρακαλούμε συνεχίστε "
"να χρησιμοποιείτε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας "
"@savoirfairelinux.com.*"
#: ../../../developer/working-with-gerrit.md:17
msgid "To Know your Git Config"
msgstr "Για να γνωρίσετε το Git Config σας"
#: ../../../developer/working-with-gerrit.md:19
msgid "`git config --list`"
msgstr "`git config --list`"
#: ../../../developer/working-with-gerrit.md:21
msgid "To Test your SSH Access"
msgstr "Για να δοκιμάσετε την πρόσβαση SSH σας"
#: ../../../developer/working-with-gerrit.md:23
msgid ""
"To check that your SSH access is properly setup, run the following command:"
msgstr ""
"Για να ελέγξετε αν η πρόσβαση SSH σας είναι σωστά ρυθμισμένη, εκτελέστε την "
"ακόλουθη εντολή:"
#: ../../../developer/working-with-gerrit.md:25
msgid "`ssh -p 29420 <username>@review.jami.net`"
msgstr "`ssh -p 29420 <υτοχνητικό όνομα>@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> είναι το όνομα χρήστη Gerrit, που θα έπρεπε να έχετε ορίσει "
"κατά τη δημιουργία λογαριασμού."
#: ../../../developer/working-with-gerrit.md:44
msgid "Git Configuration"
msgstr "Συγκρότηση Git"
#: ../../../developer/working-with-gerrit.md:46
msgid "Gerrit is the official git repository."
msgstr "Ο Τζέρριτ είναι το επίσημο αποθετήριο των git."
#: ../../../developer/working-with-gerrit.md:48
msgid "To update the configuration"
msgstr "Για να ενημερώσετε τη διαμόρφωση"
#: ../../../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."
#: ../../../developer/working-with-gerrit.md:52
msgid ""
"`git remote set-url origin "
"ssh://<username>@review.jami.net:29420/<project_name>`"
msgstr ""
"`git απόσταση set-url προέλευση "
"ssh://<username>@review.jami.net:29420/<project_name>`"
#: ../../../developer/working-with-gerrit.md:54
msgid "Replace `<project_name>` by the correct project (example: jami-daemon)"
msgstr ""
"Αντικατάστατε το `<project_name>` με το σωστό έργο (πράγμα: jami-daemon)"
#: ../../../developer/working-with-gerrit.md:56
msgid "Or clone the existing repository if you want to start fresh."
msgstr ""
"Ή κλωνοποιήστε το υπάρχον αποθετήριο αν θέλετε να ξεκινήσετε από την αρχή."
#: ../../../developer/working-with-gerrit.md:58
msgid "To Push by Default in refs/for/master"
msgstr "Για να σπρώξετε κατά προεπιλογή σε refs/for/master"
#: ../../../developer/working-with-gerrit.md:60
msgid ""
"You can configure git to automatically create a review when a change is "
"pushed."
msgstr ""
"Μπορείτε να ρυθμίσετε το git για να δημιουργεί αυτόματα μια αναθεώρηση όταν "
"μια αλλαγή πιέζεται."
#: ../../../developer/working-with-gerrit.md:62
msgid "`git config remote.origin.push HEAD:refs/for/master`"
msgstr "`git config remote.origin.push HEAD:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:64
msgid "To Create the Review"
msgstr "Για να Δημιουργήσουμε την Επισκόπηση"
#: ../../../developer/working-with-gerrit.md:66
msgid ""
"When pushing to this magic branch, a review will automatically be created on"
" Gerrit."
msgstr ""
"Όταν πιέσεις σε αυτό το μαγικό κλάδο, αυτόματα θα δημιουργηθεί μια "
"αναθεώρηση για τον Gerrit."
#: ../../../developer/working-with-gerrit.md:68
msgid "`git push origin HEAD:refs/for/master`"
msgstr "`git πύση προέλευση ΠΕΔ:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:70
msgid ""
"If you configured the default to refs/for/master as described above, simply"
msgstr ""
"Εάν έχετε ρυθμίσει την προεπιλεγμένη σε refs/for/master όπως περιγράφεται "
"παραπάνω, απλά"
#: ../../../developer/working-with-gerrit.md:72
msgid "`git push`"
msgstr "`git πιέσει `"
#: ../../../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 δείχνει προς το τμήμα με τα commits που θέλετε να πιέσετε."
#: ../../../developer/working-with-gerrit.md:76
msgid "`git push origin <bugfix_branchname>:refs/for/master`"
msgstr "`git πύση προέλευση <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 ""
"Αν αυτό είναι η πρώτη φορά που πιέζεις, θα σε ζητηθεί να εγκαταστήσεις ένα "
"Hook μετά την ανάληψη υποχρεώσεων για να εισαγάγεις ένα Change-ID στο μήνυμα"
" commit."
#: ../../../developer/working-with-gerrit.md:80
msgid "To Push a Private patch"
msgstr "Για να σπρώξεις ένα ιδιωτικό πατς"
#: ../../../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 ""
"Μπορείτε να πιέσετε ένα έργο που βρίσκεται σε εξέλιξη (α.χ. σχέδιο) "
"πιέζοντας σε refs/for/master%private"
#: ../../../developer/working-with-gerrit.md:84
msgid ""
"For instance, you may want a \"private\" remote to push to; open "
"<project_dir>/.git/config and add:"
msgstr ""
"Για παράδειγμα, μπορεί να θέλετε ένα \"ιδιωτικό\" τηλεχειριστήριο να πιέσετε"
" σε; ανοίξτε <project_dir>/.git/config και προσθέστε:"
#: ../../../developer/working-with-gerrit.md:93
msgid "Then:"
msgstr "Μετά:"
#: ../../../developer/working-with-gerrit.md:95
msgid "`git push private`"
msgstr "`git πιέσει ιδιωτικό`"
#: ../../../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 ""
"Το ιδιωτικό έργο λειτουργεί με τον ίδιο τρόπο με τα πατς σετ, εκτός από το "
"ότι δεν είναι ορατά για τους άλλους κατά προεπιλογή και δεν ενεργοποιεί "
"οποιαδήποτε κατασκευή Jenkins."