blob: 48ef8ddf0cb50db40d89f894c1d7fe0d7c88c888 [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:
# Nikhil R <4host@protonmail.com>, 2022
# savoirfairelinux <support@savoirfairelinux.com>, 2023
# Fadi Shehadeh, 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-02 02:52+0000\n"
"PO-Revision-Date: 2022-09-14 17:48+0000\n"
"Last-Translator: Fadi Shehadeh, 2023\n"
"Language-Team: Hindi (https://app.transifex.com/savoirfairelinux/teams/49466/hi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hi\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` जारी किया जाएगा। "
"ग्राहक को कॉन्फिगरेशन मैनेजर में अन्य तरीकों के साथ इस संकेत के बाद अपनी "
"आंतरिक संरचना को अपडेट करना चाहिए।"
#: ../../../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 "** TODO**"
#: ../../../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` में एक नया खाता बनाने का मुख्य तर्क `src/manager.cpp` में "
"स्थित है, `Manager::removeAccount` में। यह खाता फ़ाइलों को हटा देता है और "
"कॉन्फ़िग (`dring.yml`) को अपडेट करता है।"
#: ../../../developer/account-management.md:114
msgid "Update the details of an account"
msgstr ""
#: ../../../developer/account-management.md:135
msgid ""
"The map can contains a partial update and `accountDetailsChanged` will be "
"emitted on success. `getAccountDetails`"
msgstr ""
#: ../../../developer/account-management.md:137
msgid "Add a device"
msgstr ""
#: ../../../developer/account-management.md:139
msgid "There is two possibilities to add a device."
msgstr ""
#: ../../../developer/account-management.md:141
msgid "Backup archive (Then import from backup)"
msgstr ""
#: ../../../developer/account-management.md:166
msgid "Export on DHT"
msgstr ""
#: ../../../developer/account-management.md:188
msgid "Then `exportOnRingEnded` is emitted."
msgstr ""
#: ../../../developer/account-management.md:190
msgid "Revoke device"
msgstr "निरसन उपकरण"
#: ../../../developer/apis-of-jami.md:1
msgid "The APIs of Jami"
msgstr "जेमी के एपीआई"
#: ../../../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 ""
"OpenDHT के API से संबंधित प्रलेखन "
"[यहां]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 ""
"डेमन के एपीआई 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** इंटरफ़ेस का उपयोग कॉल और कॉन्फ्रेंस से संबंधित कार्यों का "
"प्रबंधन करने के लिए किया जाता है। चूंकि Jami daemon कई इनकमिंग / आउटगॉउन्ड "
"कॉल का समर्थन करता है, इसलिए किसी विशिष्ट कॉल से संबंधित किसी भी कार्रवाई को"
" एक अद्वितीय callID के माध्यम से विधि को संबोधित करना चाहिए। Jami daemon "
"आउटगॉउन्ड और इनकमिंग कॉल के लिए एक अद्वितीय 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 ""
"** इंस्टेंस** का उपयोग कोर में वास्तव में पंजीकृत ग्राहकों की संख्या की गणना"
" करने के लिए किया जाता है। अपने क्लाइंट को प्रारंभ करते समय, आपको इस "
"इंटरफ़ेस का उपयोग करके इसे कोर के खिलाफ पंजीकृत करने की आवश्यकता है।"
#: ../../../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 ""
"dbus API के लिए सभी दस्तावेज और कोड `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 ""
"यदि आप लिनक्स का उपयोग करते हैं, तो आप एपीआई (या किसी अन्य उपकरण के साथ) को "
"हेरफेर करने के लिए `d-feet` का उपयोग कर सकते हैं जब डेमन चल रहा है।"
#: ../../../developer/apis-of-jami.md:25
msgid "The LRC project uses this API (and use libwrap on windows and mac os)."
msgstr ""
"एलआरसी परियोजना इस एपीआई का उपयोग करती है (और विंडोज और मैक ओएस पर libwrap "
"का उपयोग करती है) ।"
#: ../../../developer/apis-of-jami.md:27
msgid "JNI"
msgstr "JNI"
#: ../../../developer/apis-of-jami.md:29
msgid ""
"All the documentation and code for the JNI API is located in `jami-"
"daemon/bin/jni`."
msgstr ""
"JNI API के लिए सभी दस्तावेज और कोड `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 ""
"नोड जेएस एपीआई के लिए सभी दस्तावेज और कोड `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` में स्थित है। "
"यह API किसी भी ज्ञात परियोजना में उपयोग नहीं किया जाता है और शायद अद्यतित "
"नहीं है।"
#: ../../../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 ""
"`jami-daemon/tools/jamictrl` में एक पायथन रैपर उपलब्ध है। यह रैपर DBus का "
"उपयोग करता है।"
#: ../../../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 ""
"एलिस अभी भी *Delete History* बटन का उपयोग करके वार्तालाप इतिहास को हटा सकती "
"है।"
#: ../../../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 खातों के लिए सिद्धांत का विवरण दिया गया है। SIP "
"खातों के लिए, SIP प्रोटोकॉल का उपयोग किया जाता है.**"
#: ../../../developer/calls.md:6
msgid "Let's do a call in Jami!"
msgstr "चलो Jami में एक कॉल करते हैं!"
#: ../../../developer/calls.md:10
msgid ""
"When creating a call between two peers, Jami mainly uses known protocols "
"such as ICE, SIP or TLS. However, to make it distributed, the process of "
"creating a call is a bit different. To summarize, when someone wants to "
"contact one of its contact, this is what they will do:"
msgstr ""
"जब दो समकक्षों के बीच कॉल बनाते हैं, तो जेमी मुख्य रूप से 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}`कॉन्टैक्ट-प्रबंधन` देखें)"
#: ../../../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 ""
"संपर्क मिल जाने के बाद, ज्ञात उम्मीदवारों (प्रत्येक नेटवर्क इंटरफ़ेस का आईपी"
" + रिले पते (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 के माध्यम से सॉकेट पर बातचीत करें. वास्तव में, दो 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 ""
"संपर्क अब कॉल को स्वीकार या अस्वीकार कर सकता है। जब वे स्वीकार करते हैं, तो "
"मीडिया के लिए 4 नए सॉकेट बनाने के लिए एक आईसीई परिवहन (केवल अभी के लिए "
"यूडीपी) पर बातचीत की जाती है (2 ऑडियो के लिए, 2 वीडियो के लिए) ।"
#: ../../../developer/calls.md:18
msgid "The call is now alive!"
msgstr "कॉल अब जीवित है!"
#: ../../../developer/calls.md:20
msgid "Exchange ICE candidates"
msgstr "आईसीई उम्मीदवारों का आदान-प्रदान"
#: ../../../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`) में सब कुछ वास्तव में "
"शुरू होता है। एक बार जब दोनों आईसीई ऑब्जेक्ट तैयार हो जाते हैं और जब डीएचटी "
"के माध्यम से संपर्क पाया जाता है, तो संपर्क के लिए कॉल अनुरोध तैयार किया "
"जाता है। इस अनुरोध में दूरस्थ आईसीई सत्र के लिए आवश्यक सभी जानकारी होती है, "
"जो निम्नानुसार परिभाषित की जाती हैः"
#: ../../../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(callto:xxxxxx) ` जहां `xxxxxx` डिवाइस आईडी है। पीयर उसी स्थान पर "
"(लेकिन प्रेषक डिवाइस के लिए एन्क्रिप्टेड) अपना `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 "आईसीई वार्ता"
#: ../../../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* के शीर्ष पर कुछ महत्वपूर्ण पैच / सुविधाएँ जोड़ते हैं "
"जो अभी तक अपस्ट्रीम में विलय नहीं हुए हैं (उदाहरण के लिए, TCP पर ICE) । ये "
"पैच `contrib/src/pjproject` में मौजूद हैं।"
#: ../../../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` में किया जाता है। अंत में, हमारा "
"सत्र `daemon/src/security/tls_session.cpp` में **TlsSession** द्वारा "
"प्रबंधित किया जाता है और 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 होगा यदि आपका और आपके सहकर्मी gnutls संस्करण "
"इसे समर्थन करता है) यदि एक TCP सॉकेट पर बातचीत की जाती है। यदि इसके बजाय एक "
"UDP सॉकेट पर बातचीत की जाती है (वॉयरवॉल प्रतिबंधों / बातचीत में समस्या / आदि"
" के कारण), सॉकेट 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 पैकेट, जैसे निमंत्रण, कस्टम संदेश (जमी कॉल की "
"शुरुआत में इस सॉकेट पर आपकी प्रोफ़ाइल का 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 ""
"मीडिया सॉकेट SRTP सॉकेट हैं जहां TLS सत्र के माध्यम से कुंजी पर पहले से बनाई"
" गई बातचीत की जाती है। ** TODO**"
#: ../../../developer/calls.md:74 ../../../developer/drt.rst:140
msgid "Architecture"
msgstr "वास्तुकला"
#: ../../../developer/calls.md:76
msgid "**TOOD**"
msgstr "**TOD**"
#: ../../../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 के बाद से मल्टीस्ट्रीम पूरी तरह से समर्थित है। यह "
"सुविधा उपयोगकर्ताओं को एक ही समय में एक कॉल के दौरान कई वीडियो साझा करने की "
"अनुमति देती है। निम्नलिखित भागों में, हम संबंधित सभी परिवर्तनों का वर्णन "
"करेंगे।"
#: ../../../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 सॉकेट का उपयोग करता है. हम तीन परिदृश्यों पर विचार करते"
" हैंः"
#: ../../../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 में हैं, अभी के लिए, क्योंकि वहाँ कोई सम्मेलन जानकारी नहीं है, "
"मल्टी-स्ट्रीम समर्थित नहीं है."
#: ../../../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 ""
"pjsip को प्रति ICE सत्र में अधिक सॉकेट उत्पन्न करने में सक्षम बनाने के लिए, "
"`PJ_ICE_COMP_BITS` को `5` (जो `2^5` के अनुरूप है, इसलिए 32 धाराओं में "
"संशोधित किया गया था) ।"
#: ../../../developer/calls.md:105
msgid "Deprecate switchInput, support requestMediaChange"
msgstr "डिप्रेकेट स्विचInput, समर्थन अनुरोधMediaChange"
#: ../../../developer/calls.md:107
msgid ""
"In the daemon, the old API `switchInput` is now **DEPRECATED**; same for "
"`switchSecondaryInput`:"
msgstr ""
"डेमन में, पुराना एपीआई `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 ""
"यदि एक कॉल एक पीयर के साथ की जाती है जहां डेमन का संस्करण < 13.3.0 है, तो "
"मल्टी-स्ट्रीम सक्षम नहीं है और पुराना व्यवहार (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 ""
"यहां तक कि अगर बैक-एंड एक ही समय में 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 ""
"क्लाइंट-qt में, दिलचस्प हिस्सा `AvAdapter` (यथा `isCapturing`, "
"`shareAllScreens`, `stopSharing`) में है। पुस्तकालय के तर्क में, `addMedia` "
"और `removeMedia` ` `callModel` में सीधे `requestMediaChange` का उपयोग करते "
"हैं और इसे डिज़ाइन संदर्भ के रूप में इस्तेमाल किया जा सकता है।"
#: ../../../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 स्टैक के साथ संगतता"
" बनाए रखना चाहिए, एडीएन को वितरित वातावरण में काम करना चाहिए। यह वितरित "
"वातावरण कुछ चुनौतियों को भी लाता है, जैसे कि संभावित दौड़ की स्थिति (जहां कई"
" पक्ष एक ही समय में कॉल शुरू कर सकते हैं) । अंत में, चूंकि Swarm केवल मोबाइल"
" का उपयोग करने वाले सदस्यों के साथ हो सकता है, या समर्पित सर्वर वाली "
"कंपनियों द्वारा वीडियो को मिश्रित करने के लिए, यह विषम वातावरण पर भी "
"सर्वोत्तम संभव अनुभव के साथ काम करने में सक्षम होना चाहिए।"
#: ../../../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 "इस सुविधा के लिए दो नए यूआरआई का उपयोग किया जाएगाः"
#: ../../../developer/calls-in-swarm.md:12
msgid "`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`"
msgstr "`swarm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#: ../../../developer/calls-in-swarm.md:13
msgid "`rdv:accountUri/deviceId/conversationId/confId`"
msgstr "`rdv:accountUri/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 ""
"**सवार की प्रोफ़ाइल** vCard में संग्रहीत swarm की प्रोफ़ाइल है "
"(`profile.vcf`, see {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 ""
"नोटः ये दो यूआरआई क्लाइंट को *Rendezvous* में शामिल होने या swarm को कॉल "
"शुरू करने के लिए कॉल करने की अनुमति देते हैं, जिसके परिणामस्वरूप अगले खंड "
"में वर्णित तर्क है।"
#: ../../../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 "**a:** यदि `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 "अन्यथा, एक नया *Rendezvous* होस्ट और इसमें शामिल हों।"
#: ../../../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 "**TODO, कब प्रतिबद्ध होना है और कौन प्रतिबद्ध है**"
#: ../../../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 ""
"एक नई आने वाली कॉल प्राप्त करते समय, यूआरआई को पार्स किया जाना चाहिए। यदि "
"आने वाली कॉल *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 ""
"डिफ़ॉल्ट यूआरआई को परिभाषित करने के लिए, सदस्य जो होस्ट होना चाहता है, को "
"वार्तालाप की प्रोफ़ाइल को अपडेट करना चाहिए, और इसे समकक्षों द्वारा "
"सिंक्रनाइज़ और मान्य किया जाएगा। हालांकि, होस्ट को होस्ट होने या नहीं होने "
"के लिए स्वीकार करने में सक्षम होना चाहिए और पर्याप्त अनुमति वाले सदस्य को "
"होस्ट होने के लिए किसी डिवाइस से पूछने में सक्षम होना चाहिए। यह प्रक्रिया "
"अभी तय नहीं की गई है।"
#: ../../../developer/calls-in-swarm.md:45
msgid "**TODO? Permissions to update, negotiation of the host**"
msgstr "** TODO? अद्यतन करने के लिए अनुमति, मेजबान की बातचीत**"
#: ../../../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 पुल अभी भी संभव है। "
"*Swarm की प्रोफ़ाइल* में कुछ लोकप्रिय VoIP सिस्टम की तरह एक 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 "संदर्भ"
#: ../../../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 ""
"जेमी एप्लिकेशन द्वारा बैंडविड्थ उपयोग सभी प्रकार के कनेक्शन के लिए इष्टतम "
"नहीं है। वास्तव में, कुछ मामलों में, बैंडविड्थ प्रबंधन एल्गोरिथ्म के बावजूद,"
" उपयोगकर्ता अनुभव अच्छा नहीं है (सैटेलाइट कनेक्शन,...) ।"
#: ../../../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) का लक्ष्य रखना आवश्यक नहीं है क्योंकि इसके अलावा,"
" दृश्य धारणा लगभग समान है जबकि आवश्यक डेटा प्रवाह (बिट्रेट) बहुत अधिक है।"
#: ../../../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 "पहले एक Jami के वर्तमान मापदंडों के साथ एन्कोड किया गया"
#: ../../../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 "इन प्रत्येक संकल्पों के लिए कई बिटरेट का उपयोग किया गया हैः"
#: ../../../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 एमबीटी/सेक (मध्यमान मूल्य)"
#: ../../../developer/choosing-crf-value-for-encoder.md:23
msgid "6 Mbit/s (High value)"
msgstr "6 एमबीटी/सेक (उच्च मूल्य)"
#: ../../../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 ""
"ग्राफों में फ़ाइल का परीक्षण (रिज़ॉल्यूशन और विशिष्ट सेट बिटरेट) के साथ "
"बिटरेट का विकास दिखाया गया है।"
#: ../../../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 ""
"इस परीक्षण के लिए धन्यवाद हम चयनित मापदंडों के अनुसार जेमी में उत्सर्जित "
"किया जाएगा कि बिटरेट का अनुमान लगा सकते हैं. हम भी दृश्य गुणवत्ता का एक "
"सिंहावलोकन है."
#: ../../../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![छवि](छवि/चयन-crf-1080p-300kbps-crf28.png) 1080p "
"/ 300 kbit/s / CRF38![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-1080p-1.5mbps-crf22.png) 1080p / "
"1.5 Mbit/s / CRF30![छवि](छवि/चयन-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 एमबीपीएस / CRF17![छवि](छवि/चयन-crf-1080p-6mbps-crf17.png) 1080p / "
"6 एमबीपीएस/सीआरएफ23![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-720p-300kbps-crf28.png) 720p / 300"
" kbit/s / CRF38![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-720p-1.5mbps-crf22.png) 720p / 1.5"
" Mbit/s / CRF30 (कम CRF के साथ परीक्षण)![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-720p-6mbps-crf17.png) 720p / 6 "
"Mbps/s / CRF23![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-436p-300kbps-crf28.png) 436p / 300"
" kbit/s / CRF38![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-436p-1.5mbps-crf22.png) 436p / 1.5"
" Mbit/s / CRF30![छवि](छवि/चयन-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![छवि](छवि/चयन-crf-436p-6mbps-crf17.png) 436p / 6 "
"Mbps/s / CRF23![छवि](छवि/चयन-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 ""
"इस दस्तावेज़ का उद्देश्य सम्मेलनों के प्रबंधन के लिए किए जाने वाले विकासों "
"का वर्णन करना है (ऑडियो / वीडियो) लक्ष्य वर्तमान कार्यान्वयन को बेहतर बनाना "
"है जो केवल SIP कॉल को मिलाता है और एक ग्रिड दृश्य प्रदान करता है, जिसमें "
"प्रतिभागियों की सूची है, स्वतंत्र रूप से मूट किया जा सकता है, या वीडियो "
"लेआउट बदल गया है (केवल एक प्रतिभागी को दिखाने के लिए)"
#: ../../../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 ""
"कॉल मैनेजर में सम्मेलन लेआउट को प्रबंधित करने के लिए दो नई विधियां उपलब्ध "
"हैंः"
#: ../../../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 ""
"नोटः वास्तव में, सम्मेलन में मिश्रित कॉल के लिए शब्द प्रतिभागी का उपयोग किया"
" जाता है। यह पहले एपीआई के लिए कुछ समस्याओं का कारण बन सकता है और भविष्य में"
" तय किया जाना चाहिए"
#: ../../../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 ""
"लेआउट को क्लाइंट के लिए एक वेक्टरमैपस्ट्रिंगस्ट्रिंग के रूप में और आंतरिक "
"रूप से निम्न प्रारूप के साथ एक वेक्टर<ParticipantInfo> के साथ संग्रहीत किया "
"जाता हैः"
#: ../../../developer/conference-protocol.md:67
msgid "Possible keys are:"
msgstr "संभावित कुंजीएँ हैंः"
#: ../../../developer/conference-protocol.md:69
msgid "uri = account's uri"
msgstr "उरी = खाता की उरी"
#: ../../../developer/conference-protocol.md:70
msgid "device = device's id"
msgstr "डिवाइस = डिवाइस की पहचान"
#: ../../../developer/conference-protocol.md:71
msgid "media = media's id"
msgstr "मीडिया = मीडिया की पहचान"
#: ../../../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 "videoMuted = यदि वीडियो मूट है"
#: ../../../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 = यदि यह एक moderator है"
#: ../../../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 = यदि धारा में voice activity है"
#: ../../../developer/conference-protocol.md:83
msgid "recording = if the peer is recording the conference"
msgstr "रिकॉर्डिंग = यदि समकक्ष सम्मेलन रिकॉर्ड कर रहा है"
#: ../../../developer/conference-protocol.md:85
msgid "New API"
msgstr "नई एपीआई"
#: ../../../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 ""
"एक नई विधि (कॉल मैनेजर में) और एक नया संकेत क्रमशः वर्तमान सम्मेलन जानकारी "
"और अद्यतन प्राप्त करने के लिए उपलब्ध हैंः"
#: ../../../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 ""
"`ConferenceObject (जो केवल तब मौजूद होता है जब हम कॉल को मिला देते हैं, इसका"
" मतलब है कि हम मास्टर हैं) प्रत्येक `Call`object के LayoutInfos के आधार पर "
"पूरे सम्मेलन के लिए जानकारी प्रबंधित करता है। getConferenceInfos इस ऑब्जेक्ट"
" से सीधे जानकारी प्राप्त करेगा।"
#: ../../../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 ""
"तो, प्रत्येक `Call` वस्तु में अब एक LayoutInfo है और यदि अद्यतन किया गया है,"
" तो `Conference ` वस्तु से उसकी जानकारी अद्यतन करने के लिए पूछें।"
#: ../../../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 ""
"तो, अगर किसी कॉल को कुछ confInfo मिलता है, हम जानते हैं कि यह कॉल एक सम्मेलन"
" के सदस्य है."
#: ../../../developer/conference-protocol.md:106
msgid ""
"To summarize, `Call` manages received layouts, `Conference`-managed sent "
"layouts."
msgstr ""
"संक्षेप में, `Call` प्राप्त लेआउट प्रबंधित करता है, `Conference`-managed "
"sent layouts।"
#: ../../../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 ""
"लेआउट बदलने के लिए, मॉडरेटर \"अनुप्रयोग/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 ""
"अभी के लिए, कोई कार्रवाई समर्थित नहीं है, हालांकि, भविष्य में `मॉडरेटरः "
"सच/झूठ ` एक मॉडरेटर बदलने के लिए संभाला जाना चाहिए।"
#: ../../../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 ` raise hand की स्थिति बदलने के लिए। केवल डिवाइस "
"द्वारा ही संभव, अन्यथा गिरा दिया गया।"
#: ../../../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 ""
"`voiceActivity ` मीडिया स्ट्रीम की आवाज गतिविधि की स्थिति को इंगित करने के "
"लिए (केवल ऑडियो के लिए प्रासंगिक)"
#: ../../../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 "वास्तव में तीन संभावनाएं हैंः"
#: ../../../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 "यदि `allModeratorsEnabled` सच है, सम्मेलन में कोई भी एक मॉडरेटर होगा"
#: ../../../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 ""
"कनेक्शन मैनेजर ग्रुप चैट सुविधाओं का पहला टुकड़ा है। यह वर्ग सहकर्मियों के "
"लिए कनेक्शन प्रबंधित करता है और उपयोगकर्ता को उन उपकरणों के लिए "
"मल्टीप्लेक्स्ड सॉकेट प्रदान करता है जिन्हें वे कनेक्ट करना चाहते हैं। उदाहरण"
" के लिए, यदि एलिस 2 फ़ाइलों को स्थानांतरित करने के लिए बॉब के डिवाइस से "
"कनेक्ट होना चाहती है, तो वह कनेक्शन मैनेजर से बॉब को 2 चैनल (एक प्रति फ़ाइल)"
" खोलने के लिए कहेंगी। यह देगीः"
#: ../../../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 ""
"इसके पीछे, कनेक्शन मैनेजर पहले DHT के माध्यम से बॉब के डिवाइस से कनेक्ट होगा"
" (आईसीई के माध्यम से) और एक TLS सॉकेट सेट अप करेगा। फिर, यह एक चैनल के लिए "
"पूछता है, और जब चैनल तैयार हो जाएगा, तो कॉलबैक के माध्यम से एलिस को सूचित "
"करें। दूसरी फ़ाइल के लिए, यह पहले सॉकेट का उपयोग करेगा और बस एक नया चैनल खोल"
" देगा (केवल 2 TLS पैकेट की आवश्यकता है, इसलिए यह तेज है)"
#: ../../../developer/connection-manager.md:26
msgid "DHT side"
msgstr "डीएचटी पक्ष"
#: ../../../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 नियंत्रण सॉकेट** लेकिन केवल 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 ""
"हालांकि, जब किसी पक्ष को एक नया आईसीई अनुरोध प्राप्त होता है, तो ` शून्य "
"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 (अद्वितीय नहीं) द्वारा परिभाषित किया "
"जाता है। उदाहरण के लिए (1, 'git://*')"
#: ../../../developer/connection-manager.md:36
msgid ""
"When ready, the ConnectionManager considers that the channel 0 exists. This "
"channel is called the *CONTROL* channel and is used to ask for new channels."
msgstr ""
"जब तैयार हो जाता है, तो कनेक्शन मैनेजर मानता है कि चैनल 0 मौजूद है। इस चैनल "
"को *CONTROL* चैनल कहा जाता है और इसका उपयोग नए चैनलों के लिए पूछने के लिए "
"किया जाता है।"
#: ../../../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 बिट्स का उपयोग किया जाता है।"
#: ../../../developer/connection-manager.md:41
msgid "16 bits for the channel id (destination)"
msgstr "चैनल आईडी (गंतव्य) के लिए 16 बिट्स"
#: ../../../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 बिट लेन हेडर है।"
#: ../../../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 ""
"एक नए चैनल के लिए पूछने के लिए, कनेक्शन मैनेजर चैनल 0 में एक "
"`ChannelRequest` ऑब्जेक्ट (msgpack का उपयोग स्ट्रक्चर को क्रमबद्ध करने के "
"लिए किया जाता है) भेज देगा ताकि नए चैनल की पहचान और नाम को सहकर्मी को भेज "
"दिया जा सके (के साथ `isAnswer = false`) । सहकर्मी चैनलRequest पर ̀ void के "
"साथ दिए गए कॉलबैक को कॉल करेगा(ChannelRequestCallBack&& cb);` और अनुरोध को "
"अस्वीकार या स्वीकार करेगा। यदि स्वीकार किया गया है, तो सहकर्मी एक ही डेटा के"
" साथ एक चैनलRequest के साथ जवाब देगा (और ̀`isAnswer = true`) और फिर दोनों "
"सहकर्मी कॉलबैक को चालू किया जाएगा ताकि सूचित किया जा सके कि चैनलसॉक उपयोग "
"योग्य है।"
#: ../../../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 "कनेक्शन मैनेजर के पास मल्टीप्लेक्स्ड सॉकेट और आईसीई ऑब्जेक्ट हैं"
#: ../../../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 "चैनलसॉकेट डेटा बफर का मालिक है"
#: ../../../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 ""
"मल्टीप्लेक्स्ड सॉकेट का उपयोग TLSSocket पर डेटा भेजने, आने वाले पैकेट पढ़ने "
"और चैनलों का प्रबंधन करने के लिए किया जाता है।"
#: ../../../developer/connection-manager.md:65
msgid "ChannelSockets are used by the client to interact with the other peer."
msgstr ""
"चैनलसॉकेट का उपयोग ग्राहक द्वारा दूसरे सहकर्मी के साथ बातचीत करने के लिए "
"किया जाता है।"
#: ../../../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 से क्लाइंट को संपर्क कैसे मिलाया जाए और "
"जोड़ा जाए। नाम सर्वर का उपयोग यहां नहीं समझाया जाएगा। यदि आप इसके बारे में "
"अधिक जानकारी चाहते हैं, तो कृपया {doc}`name-server-protocol` पढ़ें।"
#: ../../../developer/contact-management.md:6
msgid "Presence on the network"
msgstr "नेटवर्क पर उपस्थिति"
#: ../../../developer/contact-management.md:8
msgid "Announce the presence on the DHT"
msgstr "डीएचटी पर उपस्थिति की घोषणा करें"
#: ../../../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 पर घोषणा करने के लिए काफी सरल है. वास्तव में, यह सिर्फ एक मूल्य"
" है जिसमें डिवाइस हैश (पहले खंड, {doc}`कॉन्ट-प्रबंधन) हैश पर कुंजी के "
"फिंगरप्रिंट के अनुरूप है। इसलिए, यदि हमारे पास "
"`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);`, के साथ रखा जा "
"सकता है। यदि डिवाइस की घोषणा की जाती है, तो डिवाइस मौजूद है। अभी के लिए, DHT"
" पर किसी मान को हटाने या संपादित करने का कोई तरीका नहीं है (यह तब होगा जब "
"OpenDHT ECC का समर्थन करेगा) । इसलिए, उपस्थिति में हमेशा अभी के लिए देरी "
"होती है (मध्यम देरीः समाप्ति-समय / 2, इसलिए 2min30 अभी के लिए) ।"
#: ../../../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 पर मौजूद है (उदाहरणः "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9c1b9`), हमें "
"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` पर मूल्य प्राप्त करना होगा और "
"`DeviceAnnouncement` को इस हैश पर पुनर्प्राप्त करना होगा। रिंग डेमोन में "
"संबंधित कोड `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 "**टोटो शिल्प अनुरोध**"
#: ../../../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(\"इनबॉक्स:\" + डिवाइसId) `"
#: ../../../developer/contact-management.md:155
msgid "The following code is used in the daemon:"
msgstr "डेमोन में निम्नलिखित कोड का उपयोग किया जाता हैः"
#: ../../../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 "डेमोन एपीआई"
#: ../../../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 ""
"यदि आप कुछ उदाहरण चाहते हैं, तो इन तरीकों का उपयोग LRC में "
"`contactmodel.cpp` में किया जाता है।"
#: ../../../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 ""
"पहला तरीका रनटाइम लॉगर का उपयोग करना है। `jami` से `-d` से शुरू होने से डेमन"
" (या सामान्य सेटिंग्स में समस्या निवारण अनुभाग) द्वारा लॉगिंग सक्षम होगी। "
"क्योंकि 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 ""
"सामान्य तौर पर आपके आईडीई में एक एम्बेडेड डिबगगर होता है। अन्यथा, आप `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 ""
"डिबगर उपयोगी हैं, लेकिन वे वास्तविक समय मेमोरी खपत / नेटवर्क गतिविधि / "
"सीपीयू उपयोग नहीं दिखाते हैं। इसके लिए, आप अपने आईडीई में एम्बेडेड प्रोफाइलर"
" का उपयोग कर सकते हैं (उदाहरण के लिए एंड्रॉइड स्टूडियो या क्यूटी क्रिएटर / "
"विज़ुअल स्टूडियो से) ।"
#: ../../../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 ""
"यह लीक, क्रैश, रनटाइम पर संभावित डीललॉक का पता लगाने के लिए उपयोगी हो सकता "
"है। इसे सक्षम करने के लिए, आप `CXXFLAGS+=\"-fsanitize=address\"` के साथ डेमन"
" को संकलित कर सकते हैं। `tsan` जैसे अन्य ध्वज उपयोगी हो सकते हैं।"
#: ../../../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 ""
"डेमोन में कई परीक्षण और कवरेज सक्षम हैं। यदि डेमोन स्थिर में बनाया गया है "
"(अन्य निजी प्रतीकों उपलब्ध नहीं होंगे), तो नए परीक्षणों को जोड़ने से बग को "
"पुनः पेश करने, बग को हल करने और किसी भी प्रतिगमन से बचने में मदद मिल सकती "
"है। (cf. `daemon/tests/unitTests``)"
#: ../../../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 "LTTng"
#: ../../../developer/debugging-tools.rst:68
msgid ""
"Finally, tracepoints can be created and analyzed. `daemon/tools/trace` "
"provide the documentation and some examples. The advantage of LTTng is that "
"it is quicker than logs, can be triggered by system events and can be used "
"with tracepoints already present in the kernel (so that it can be used with "
"tracepoints from network interfaces)."
msgstr ""
"अंत में, ट्रैकपॉइंट्स बनाए और विश्लेषण किए जा सकते हैं। `daemon/tools/trace`"
" प्रलेखन और कुछ उदाहरण प्रदान करते हैं। LTTng का लाभ यह है कि यह लॉग से तेज "
"है, सिस्टम घटनाओं द्वारा ट्रिगर किया जा सकता है और इसे कर्नेल में पहले से "
"मौजूद ट्रैकपॉइंट्स के साथ इस्तेमाल किया जा सकता है (इसलिए यह नेटवर्क "
"इंटरफ़ेस से ट्रैकपॉइंट्स के साथ इस्तेमाल किया जा सकता है) ।"
#: ../../../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, आदि) / हार्ड / प्रगति में"
#: ../../../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 "टर्न ipv6 समर्थन"
#: ../../../developer/feature-requests.md:14
msgid "connection ipv6 only<->ipv4 only"
msgstr "केवल ipv6 कनेक्शन"
#: ../../../developer/feature-requests.md:15
msgid "SIP:"
msgstr "SIP:"
#: ../../../developer/feature-requests.md:16
msgid "Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy"
msgstr "IP को 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 "ffmpeg के लिए मीडिया आरटीपी एन्क्रिप्शन अद्यतन / शायद आसान"
#: ../../../developer/feature-requests.md:23
msgid "Support ECC (instead RSA) for Jami accounts / hard but short"
msgstr "जेमी खातों के लिए ईसीसी (आरएसए के बजाय) का समर्थन / कठिन लेकिन छोटा"
#: ../../../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 "मीडिया -> संपर्क #जमी (एड्रिएन, एंड्रियास, आदि)"
#: ../../../developer/feature-requests.md:26
msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard"
msgstr "{daemon-issued}`POC के लिए AV1 समर्थन <27>` / शायद कठिन"
#: ../../../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 "{प्लग-इश्यू}`भुगतान प्लग-इन <27>`"
#: ../../../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 ""
"सार्वजनिक पृष्ठ/व्यक्तिगत ब्लॉग जेमी (संपर्क #जेमी / मध्यम कठिनाई और "
"दीर्घकालिक परियोजना) के माध्यम से उपलब्ध है"
#: ../../../developer/feature-requests.md:35
msgid "Qt:"
msgstr "Qt:"
#: ../../../developer/feature-requests.md:36
msgid ""
"{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - "
"easy)"
msgstr ""
"{client-qt-issue}`Peer discovery के लिए समर्थन जोड़ें<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 ""
"इमोजी के रूप में एक मूल घटक के लिए 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 ""
"वर्गीकृत वार्तालाप (जैसे पसंदीदा, समूह, आदि) (जमी के साथ चर्चा करने के लिए)"
#: ../../../developer/feature-requests.md:40
msgid "jami-web:"
msgstr "jami-web:"
#: ../../../developer/feature-requests.md:41
msgid ""
"Design architecture to support calls between jami-web and desktop versions "
"-> Contact #Jami (Adrien, Sébastien) / hard"
msgstr ""
"jami-web और डेस्कटॉप संस्करणों के बीच कॉल का समर्थन करने के लिए डिज़ाइन "
"आर्किटेक्चर -> संपर्क #Jami (एड्रिएन, सेबस्टियन) / हार्ड"
#: ../../../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 ""
"Yocto पर Jami को सुधारें (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 ग्राहक](https://git.jami.net/savoirfairelinux/jami-client-"
"qt/-/issues) -> संपर्क #Jami (Andreas)"
#: ../../../developer/feature-requests.md:54
msgid "Redo emoji-picker with native component"
msgstr "मूल घटक के साथ इमोजी-पिकर को रीडो करें"
#: ../../../developer/feature-requests.md:55
msgid "Implement designs from Charlotte"
msgstr "शार्लोट से कार्यान्वयन डिजाइन"
#: ../../../developer/feature-requests.md:56
msgid "Help for swarms (Sébastien)"
msgstr "झुंडों के लिए सहायता (सेबस्टियन)"
#: ../../../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 ""
"{gerrit-project}`jami-web`; क्योंकि एक ऐप स्थापित करना उबाऊ हो सकता है. एक "
"लिंक के माध्यम से एक सम्मेलन में शामिल होना शांत हो सकता है. अभी के लिए, कोई"
" भी इस पर काम नहीं कर रहा है।"
#: ../../../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 ""
"{प्रोजेक्ट-एश्यू}`अधिक संभावना दिखाएं \"निम्न समय पर उपलब्ध\" (संपर्क विवरण)"
" <1261>`"
#: ../../../developer/feature-requests.md:69
msgid ""
"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
"ringtone) <1280>`"
msgstr ""
"{प्रोजेक्ट-प्रसंग}`प्रति संपर्क (कॉल, फ़ाइल स्थानांतरण, कस्टम रिंगटोन की "
"अनुमति दें) <1280>`"
#: ../../../developer/feature-requests.md:71
msgid ""
"{project-issue}`Ability to create polls (ideally a plugin with swarm) "
"<1254>`"
msgstr ""
"{प्रोजेक्ट-प्रसन्धि}`मत सर्वेक्षण बनाने की क्षमता (आदर्श रूप से एक प्लगइन के"
" साथ झुंड) <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 ({प्रोजेक्ट-प्रश्न}`922`, "
"{प्रोजेक्ट-प्रश्न}`622`, {प्रोजेक्ट-प्रश्न}`495`), {प्रोजेक्ट-प्रश्न}`i2p "
"<630>`"
#: ../../../developer/feature-requests.md:78
msgid "{project-issue}`Bluetooth support <774>`"
msgstr "{प्रोजेक्ट-प्रसङ्ग}`ब्लूटुथ समर्थन <774>`"
#: ../../../developer/feature-requests.md:79
msgid "{project-issue}`Secret-based turn server <886>`"
msgstr "{प्रोजेक्ट-प्रसंग}`सैक्रेट आधारित टर्न सर्वर <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 "{प्रोजेक्ट-प्रसङ्ग}`इको बॉट ऑडियो परीक्षण करने के लिए <392>`"
#: ../../../developer/feature-requests.md:85
msgid ""
"{project-issue}`Handle click on jami:uri system wide (missing "
"macOS/Android/iOS) <653>`"
msgstr ""
"{प्रोजेक्ट-प्रसङ्ग}`हैंडल क्लिक करें jami:uri सिस्टम व्यापक "
"(मैकओएस/एंड्रॉयड/आईओएस गायब) <653>`"
#: ../../../developer/feature-requests.md:86
msgid ""
"{project-issue}`Initial audio mode <1288>` (need to wait for group chat)"
msgstr ""
"{प्रोजेक्ट-प्रसङ्ग}` आरंभिक ऑडियो मोड <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 "{ग्राहक-नाम-प्रश्न}`मुक्तBSD सहायता <1272>`"
#: ../../../developer/feature-requests.md:99
msgid "Others"
msgstr "अन्य"
#: ../../../developer/feature-requests.md:101
msgid "{project-issue}`Collaborative editor <1010>`"
msgstr "{प्रोजेक्ट-एडिस}`सहयोग संपादक <1010>`"
#: ../../../developer/feature-requests.md:102
msgid "{project-issue}`A thunderbird plugin <516>`"
msgstr "{प्रोजेक्ट-प्रसङ्ग}`एक Thunderbird प्लगइन <516>`"
#: ../../../developer/feature-requests.md:103
msgid "{project-issue}`OpenAlias <928>`"
msgstr "{प्रोजेक्ट-इश्यू}`OpenAlias <928>`"
#: ../../../developer/feature-requests.md:104
msgid "{project-issue}`CMIS integration <455>`"
msgstr "{प्रोजेक्ट-प्रश्न}`CMIS एकीकरण <455>`"
#: ../../../developer/feature-requests.md:105
msgid "{project-issue}`Sound safety <441>`"
msgstr "{प्रोजेक्ट-प्रश्न}` ध्वनि सुरक्षा <441>`"
#: ../../../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}`Vocoder विकल्प <957>`"
#: ../../../developer/feature-requests.md:108
msgid "{project-issue}`SOCKS5 support <430>`"
msgstr "{प्रोजेक्ट-एमिशन}`SOCKS5 समर्थन <430>`"
#: ../../../developer/feature-requests.md:109
msgid "{project-issue}`Cardbook integration <383>`"
msgstr "{प्रोजेक्ट-इश्यू}`कार्डबुक एकीकरण <383>`"
#: ../../../developer/feature-requests.md:110
msgid "{project-issue}`Multiple instances running <629>`"
msgstr "{प्रोजेक्ट-एज}`बहुत से अधिक चल रहे <629>`"
#: ../../../developer/feature-requests.md:111
msgid "{daemon-issue}`Whiteboard <181>`"
msgstr "{daemon-issued}`Whiteboard <181>`"
#: ../../../developer/feature-requests.md:112
msgid "{client-android-issue}`Camera zoom <979#note_29386>`"
msgstr "{client-android-issue}`कैमरा ज़ूम <979#note_29386>`"
#: ../../../developer/feature-requests.md:113
msgid "{client-qt-issue}`Emoji reaction in calls <497>`"
msgstr "{client-qt-issue}` कॉल में इमोजी प्रतिक्रिया <497>`"
#: ../../../developer/feature-requests.md:114
msgid "{client-android-issue}`Conversation's background <710>`"
msgstr "{client-android-issue}` वार्तालाप की पृष्ठभूमि <710>`"
#: ../../../developer/feature-requests.md:115
msgid "{project-issue}`[Desktop] Option to have a Window per Chat <633>`"
msgstr "{प्रोजेक्ट-प्रसंद}`[डेस्कटॉप] प्रति चैट विंडो का विकल्प <633>`"
#: ../../../developer/feature-requests.md:116
msgid "{project-issue}`Multiple text selection <1096>`"
msgstr "{प्रोजेक्ट-एज}`बहुवचन पाठ चयन <1096>`"
#: ../../../developer/feature-requests.md:117
msgid "{project-issue}`In-app sticker pack creation <1317>`"
msgstr "{प्रोजेक्ट-एडिस}`इन-ऐप स्टिकर पैक बनाना <1317>`"
#: ../../../developer/feature-requests.md:118
msgid "{project-issue}`Re-order messages <1357>`"
msgstr "{प्रोजेक्ट-इश्यू}`पुनः आदेश संदेश <1357>`"
#: ../../../developer/feature-requests.md:119
msgid "{daemon-issue}`Remote control <349>`"
msgstr "{daemon-issue}` रिमोट कंट्रोल <349>`"
#: ../../../developer/feature-requests.md:120
msgid ""
"{client-android-issue}`Locked messages (feature that can be enabled to hide "
"messages until they are clicked upon) <1146>`"
msgstr ""
"{client-android-issue}`लॉक किए गए संदेश (विशेषता जो संदेशों को तब तक छिपाने "
"में सक्षम हो सकती है जब तक कि वे क्लिक न किए जाएं) <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 ""
"ग्नोम पर फ़ाइल भेजने के लिए, वार्तालाप में आपको वार्तालाप के निचले दाएं भाग "
"में फ़ाइल भेजने के आइकन पर क्लिक करना होगाः"
#: ../../../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 एमबी), तो आपको स्थानांतरण स्वीकार करना होगाः"
#: ../../../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/29dd852e062e7bcbcb654e4e7e3f8e47/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](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)"
#: ../../../developer/file-transfer.md:30
msgid "Gnome_ongoing"
msgstr "ग्नोम_गिंगिंग"
#: ../../../developer/file-transfer.md:32
msgid "Android"
msgstr "एंड्रॉइड"
#: ../../../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 ""
"जब आप एंड्रॉइड पर किसी से बात कर रहे हों, तो आपके पास अपने डिवाइस पर एक "
"तस्वीर भेजने या इन बटनों के साथ एक तस्वीर लेने की संभावना हैः"
#: ../../../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 ""
"जेमी एक वितरित एप्लिकेशन है और इसे इंटरनेट कनेक्शन के बिना काम करना है। तो, "
"फ़ाइल ट्रांसफर भी! मूल रूप से, हम फ़ाइल ट्रांसफर और कॉल करने के लिए एक ही "
"विधि का उपयोग करते हैं, लेकिन टीसीपी में। यह कैसे काम करता है इसका सारांश "
"देने के लिए, हम एक ऐसी स्थिति की कल्पना कर सकते हैं जहां एलिस (ए) बॉब (बी) "
"को फ़ाइल स्थानांतरित करना चाहता है।"
#: ../../../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 ""
"सबसे पहले, एलिस बॉब से कनेक्शन का अनुरोध करेगी। ऐसा करने के लिए, जेमी आईसीई "
"(आरएफसी 6544) का उपयोग कर रही है, जो एक प्रोटोकॉल है जिसका उपयोग सहकर्मियों "
"के बीच लिंक पर बातचीत करने के लिए किया जाता है। एलिस डीएचटी के माध्यम से "
"अपने डिवाइस का आईपी एन्क्रिप्टेड पैकेट में भेजेगी। इसलिए, जब बॉब को एलिस के "
"आईपी प्राप्त होंगे, तो वे एक परिवहन पर बातचीत करने में सक्षम होंगे जहां बॉब "
"एलिस को पैकेट भेजने में सक्षम होगा। बातचीत सफल हो सकती है, लेकिन यदि यह विफल"
" हो जाती है, तो स्थानांतरण करने के लिए एक टीयूआरएन सर्वर (जो सेटिंग्स में "
"कॉन्फ़िगर किया गया है) का उपयोग किया जाएगा। यदि बातचीत सफल होती है, तो बॉब "
"अपने आईपी को एलिस को दूसरी दिशा में बातचीत करने के लिए भेजेगा। ध्यान दें कि "
"लिंक अभी भी नहीं है, इसलिए बॉब एक एन्क्रिप्टेड संदेश में डीएचटी के माध्यम से"
" आईपी सुरक्षित भेजेंगे। यदि दूसरा बातचीत विफल हो जाता है, तो टीयूआरएन का "
"उपयोग एक बैकअप के रूप में किया जाएगा।"
#: ../../../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 ""
"अब जब दो दिशाओं का टीसीपी लिंक यहाँ है, अगला कदम एलिस और बॉब के बीच एक "
"टीएलएस 1.3 (आमतौर पर एक (टीएलएस 1.3)-(डीएचई-एफएफडीएचई 8192)-(आरएसए-पीएसएस-"
"आरएसएई-एसएचए 384)-(एईएस-256-जीसीएम) पर बातचीत करना होगा, जब मैं इन पंक्तियों"
" को लिखता हूं, तो एलिस फ़ाइल को स्थानांतरित करना शुरू कर देगा।"
#: ../../../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` "
"क्लाइंट के लिए उजागर किए गए एपीआई के अनुरूप वर्ग है। इसका उपयोग फ़ाइल "
"हस्तांतरण के दृश्य को प्रबंधित करने के लिए किया जाता है (अनुरूप वर्ग "
"`DataTransfer`, `IncomingFileTransfer`, `OutgoingFileTransfer` और "
"`SubOutgoingFileTransfer`) । यह विधि लिंक किए गए `JamiAccount` से कनेक्शन का"
" अनुरोध करेगी।"
#: ../../../developer/file-transfer.md:67
msgid ""
"![Diagram: DataTransfer class diagram]images/file-transfer-datatransfer-"
"class-diagram.png)"
msgstr ""
"![चक्रः डेटा ट्रांसफर वर्ग का चित्र]images/file-transfer-dataatransfer-"
"class-chart.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() ` को ट्रिगर किया जाता है और"
" पीयर के सभी जुड़े उपकरणों के बीच कनेक्शन बनाया जाता है (DHT पर पाया जाता "
"है) । `DhtPeerConnector` का उपयोग कनेक्शन प्रबंधित करने वाले मुख्य घटना लूप "
"के प्रबंधन के लिए किया जाता है। जब कोई डिवाइस पाया जाता है, तो *घटना लूप* एक"
" `ClientConnector` (जो एक डिवाइस के लिए कनेक्शन प्रबंधित करता है) बनाता है "
"और `प्रक्रिया) ` विधि शुरू करता है।"
#: ../../../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 परिवहन को प्रारंभ करने और DHT पर एक "
"*PeerConnectionMsg* (जिसमें SDP संदेश है, नीचे देखें) डालने और प्रतिक्रिया "
"की प्रतीक्षा करने के लिए किया जाता है "
"(`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 के"
" माध्यम से एक बैकअप के रूप में) पर बातचीत कर सकते हैं। यह "
"`TlsSocketEndpoint` एक आउटपुट के रूप में `PeerConnection ` ऑब्जेक्ट को दिया "
"जाता है और स्थानांतरण शुरू हो सकता है।"
#: ../../../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 ""
"`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\\. यदि पीयर या क्लाइंट से रद्द हो जाती है या यदि फ़ाइल स्थानांतरण समाप्त "
"हो जाता है, तो `DhtPeerConnector::eventLoop() ` पर `CANCEL` संदेश के माध्यम "
"से कनेक्शन बंद कर दिया जाएगा और संसाधन जारी किए जाएंगे।"
#: ../../../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 "TLSsocketEndpoint"
#: ../../../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 परिवहन को प्रारंभ करेगा। यह विधि एक"
" TURN सर्वर के लिए 2 नियंत्रण कनेक्शन खोलती है (एक IPv4 समकक्षों को अधिकृत "
"करने के लिए, एक IPv6 समकक्षों के लिए **RFC 6156** के कारण) यदि यह पहले से ही"
" खुला नहीं है और कनेक्शन की अनुमति देता है समकक्ष सार्वजनिक पते। फिर, यदि "
"प्राप्त SDP में ICE उम्मीदवार नहीं हैं, तो TURN का उपयोग करेगा और समकक्षों "
"के लिए प्रतीक्षा करने के लिए SDP उत्तर तैयार करेगा। यदि SDP में ICE "
"उम्मीदवार हैं, तो विधि लिंक पर बातचीत करने का प्रयास करेगी (या TURN पर वापस "
"गिरना) और फिर SDP (आईसीई उम्मीदवारों के साथ या नहीं) का जवाब देगा।"
#: ../../../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 ""
"इसके लिए, डिवाइस एक mime प्रकार के साथ एक json भेजेगाः `application/data-"
"transfer-request+json` जिसमें `conversation` (वार्ता की पहचान), "
"`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 ""
"![चर्चाः मुख्य योजना का चित्र](छवि/फ़ाइल स्थानांतरण-मुख्य योजना का "
"चित्र.png)"
#: ../../../developer/file-transfer.md:105
msgid "Diagram: main schema diagram"
msgstr "आरेखः मुख्य योजना आरेख"
#: ../../../developer/file-transfer.md:107
msgid "SDP sent over the DHT"
msgstr "डीएचटी के माध्यम से एसडीपी भेजा"
#: ../../../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 प्रकार srflx tcptype निष्क्रिय` एक निष्क्रिय होस्ट"
" सार्वजनिक आईपी को प्रतिबिंबित करता है (उदाहरण के लिए UPnP के माध्यम से "
"नक्शाबद्ध) ।"
#: ../../../developer/file-transfer.md:125
msgid "PJSIP related patches."
msgstr "पीजेएसआईपी से संबंधित पैच।"
#: ../../../developer/file-transfer.md:127
msgid "3 patches will be included into the PJSIP project:"
msgstr "पीजेएसआईपी परियोजना में 3 पैच शामिल किए जाएंगेः"
#: ../../../developer/file-transfer.md:129
msgid ""
"RFC 6062, used to perform TURN over TCP (merged upstream: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
msgstr ""
"आरएफसी 6062, टीसीपी पर टीयूआरएन करने के लिए उपयोग किया जाता है (उपप्रवाह में"
" विलयः pjproject - fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
#: ../../../developer/file-transfer.md:130
msgid "RFC 6544, used to perform ICE over TCP"
msgstr "आरएफसी 6544, 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 ""
"एक रिंग उपयोगकर्ता अपने खाते को कई उपकरणों से लिंक कर सकता है. इसलिए, हमें "
"स्थानांतरण को लागू करने की आवश्यकता है जब एक उपयोगकर्ता एक संपर्क को फ़ाइल "
"भेजता है जो इस खाते से जुड़े कई उपकरणों है."
#: ../../../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 ""
"अब, हम अभी भी सभी उपकरणों को एक अनुरोध भेजते हैं। अंतर यह है कि सभी उपकरणों "
"में फ़ाइल प्राप्त करने के लिए सूचना होगी और स्थानांतरण को स्वीकार / अस्वीकार"
" कर सकते हैं। इसके लिए कोड का मुख्य हिस्सा *data\\_transfer.cpp* में है।"
#: ../../../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* से जुड़ा हुआ है जो एक डिवाइस के साथ "
"स्थानांतरण की स्थिति का प्रतिनिधित्व करता है। ग्राहकों को बाद में एक उप "
"स्थानांतरण दिखाने की क्षमता होगी (TODO सूची देखें) ।"
#: ../../../developer/file-transfer.md:180
msgid "Using another TURN server"
msgstr "एक और टर्न सर्वर का उपयोग करना"
#: ../../../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 ""
"फिर, आप रिंग की उन्नत सेटिंग्स में टर्न सर्वर को कॉन्फ़िगर कर सकते हैं।"
#: ../../../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 सर्वर "
"को आपके नोड का वही आईपी पता देखना चाहिए जैसा कि गंतव्य नोड या सहकर्मी "
"कनेक्शन विफल हो जाएगा (क्योंकि प्राधिकरण गलत होगा)"
#: ../../../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 "TODO सूची"
#: ../../../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 "महत्वपूर्ण आरएफसी"
#: ../../../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 "SIP फिर से आमंत्रित करेंः <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 "एसडीपी और आईपीवी 6: <http://tools.ietf.org/html/rfc6157>"
#: ../../../developer/important-rfcs.md:28
msgid "SDP for SRTP: <http://tools.ietf.org/html/rfc4568>"
msgstr "SRTP के लिए SDP: <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 ""
"SRTP के लिए DTLS: <https://tools.ietf.org/html/rfc5763> et "
"<http://tools.ietf.org/html/rfc5764>"
#: ../../../developer/important-rfcs.md:47
msgid "AES-192 and AES-256: <https://tools.ietf.org/html/rfc6188>"
msgstr "एईएस-192 और एईएस-256: <https://tools.ietf.org/html/rfc6188>"
#: ../../../developer/important-rfcs.md:48
msgid "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
msgstr "एईएस-जीसीएमः <https://tools.ietf.org/html/rfc7714>"
#: ../../../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 ""
"लगभग 30 यूनिट-टेस्ट और 26% कवरेज हैं। उपयोगकर्ताओं को जल्दी से नई "
"कार्यक्षमताएं देने के लिए Jami की उच्च मांग के कारण, उन्हें डेवलपर्स या एक "
"गुणवत्ता विभाग द्वारा बनाए नहीं रखा जाता है।"
#: ../../../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 का उपयोग करते हैं, आप daemon Makefile.am में lcov s "
"कॉन्फ़िगरेशन पा सकते हैं. इसके अलावा, कवरेज 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 करने के द्वारा डेमोन फ़ोल्डर में या "
"अलग से gdb के साथ इकाई-परीक्षण फ़ोल्डर में"
#: ../../../developer/improving-quality-of-jami.md:16
msgid ""
"The environment needs to be set with ‘--disable-shared’ during the "
"’./configure’ command"
msgstr ""
"./configure कमांड के दौरान --disable-shared के साथ पर्यावरण को सेट करना "
"आवश्यक है"
#: ../../../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 ""
"आप डेमोन मेकफ़ाइल.एएम में फ्रेमवर्क परीक्षण पा सकते हैं और इसे मेक "
"इंटीग्रेशन के साथ लंच कर सकते हैं। यह उपकरण / ड्रिंगक्ट्रल फ़ोल्डर में "
"jami_test.py स्क्रिप्ट को बुलाता है। यह dringctrl.py और controller.py का "
"उपयोग करता है जो आपको bash के माध्यम से Jami को नियंत्रित करने देता है।"
#: ../../../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 ""
"प्रत्येक कॉम निर्माण मशीनों पर डॉकर में एकीकरण परीक्षण से गुजरता है आप विवरण"
" पर पा सकते हैंः 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 ""
"कोड-पुनरावलोकन एक साथी डेवलपर द्वारा किया जाता है, कभी-कभी कोड को उसी डेवलपर"
" द्वारा समीक्षा की जाती है, इसे लिनस कानून पर जोर देने के लिए टालना चाहिए। "
"जेनकिन्स सत्यापित लेबल कभी-कभी त्याग दिया जाता है और एक डेवलपर से +1 से "
"प्रतिस्थापित किया जाता है, इसे भी टालना चाहिए।"
#: ../../../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 जेन्किंस को Jami बनाने और linting सत्यापित करने देता है. आप फिल्टर"
" और परिणामों को पा सकते हैंः sonar- jami.savoirfairelinux.net Sonar एक "
"प्रीप्रोसेसर linting संकलक के रूप में clang-tidy का उपयोग करता है, आप डेमन "
"फ़ोल्डर में.clang-tidy फ़ाइल में clangs फिल्टर पा सकते हैं।"
#: ../../../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 और सेवा 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 "आप डॉक्स.जमी.नेट पर सभी दस्तावेज पा सकते हैं"
#: ../../../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. आप इसे sflvault सेवा s#7209 पर पा सकते हैं और एक अन्य "
"क्लाइंट को virtual jami-monitorpeer-02 (सेवा s#7224) बुला रहा है। एक "
"श्रृंखला कॉल की जा रही है और यह विफलता दर वापस करती है। आप सभी विवरण "
"https://wiki.savoirfairelinux.com/wiki/Jami-monitorpeervm-01.mt.sfl पर पा "
"सकते हैं।"
#: ../../../developer/improving-quality-of-jami.md:46
msgid ""
"If needed, the manual command is ./script.sh –peer "
"031acbb73f2a3385b2babc7161f13325be103431"
msgstr ""
"यदि आवश्यक हो, तो मैनुअल कमांड./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 "यहाँ परिदृश्यों का वर्णन किया गया हैः [जामी धूम्रपान परीक्षण]"
#: ../../../developer/improving-quality-of-jami.md:57
msgid ""
"They are reviewed by QA dpt. before sending it to the developers if needed."
msgstr ""
"यदि आवश्यक हो तो इसे डेवलपर्स को भेजने से पहले उन्हें क्यूए डीटी द्वारा "
"समीक्षा की जाती है।"
#: ../../../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 ""
"यदि एक रिलीज़ में एक नेटवर्क कॉम शामिल है जिसे विलय कर दिया गया है, तो क्यूए"
" डिपार्टमेंट को विभिन्न कनेक्टिविटी परीक्षणों को स्वचालित करने में सक्षम "
"होना चाहिए (जैसा कि कॉल कॉन्फ़िगरेशन में नीचे वर्णित है)"
#: ../../../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 "विशेष नोटः एफडीरोइड"
#: ../../../developer/improving-quality-of-jami.md:71
msgid ""
"The script to generate MR is in the client-android repo "
"(fdroidMergeRequest.sh)"
msgstr ""
"एमआर उत्पन्न करने के लिए स्क्रिप्ट क्लाइंट-एंड्रॉयड रेपो में है "
"(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 "60% के करीब कवरेज बढ़ाएं"
#: ../../../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 "प्रत्येक ग्राहक पर sonarqube एकीकृत"
#: ../../../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 "एक make_ring.py स्क्रिप्ट विंडोज के लिए अनुकूलित भी बनाने"
#: ../../../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 ""
"जमी के डेवलपर मैनुअल में आप जानेंगे कि जमी उच्च स्तर से लेकर निम्न स्तर तक "
"कैसे काम करती है, कुछ उदाहरणों के साथ।"
#: ../../../developer/introduction.md:7
msgid "Table of contents"
msgstr "सामग्री तालिका"
#: ../../../developer/introduction.md:9
msgid "{doc}`apis-of-jami`"
msgstr "{doc}`apis-of-jami`"
#: ../../../developer/introduction.md:10
msgid "Basic features"
msgstr "मूलभूत विशेषताएं"
#: ../../../developer/introduction.md:11
msgid "{doc}`account-management`"
msgstr "{doc}` लेखा-प्रबंधन"
#: ../../../developer/introduction.md:12
msgid "{doc}`contact-management`"
msgstr "{doc}`संपर्क प्रबंधन"
#: ../../../developer/introduction.md:13
msgid "{doc}`swarm`"
msgstr "{doc}`swarm`"
#: ../../../developer/introduction.md:14
msgid "{doc}`calls`"
msgstr "{doc}`कॉल"
#: ../../../developer/introduction.md:15
msgid "{doc}`file-transfer` (deprecated; see {doc}`swarm`)"
msgstr "{doc}`file-transfer` (deprecated; see {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/पुश "
"सूचना-सहायता)"
#: ../../../developer/introduction.md:22
msgid "What is a DHTProxy"
msgstr "DHTProxy क्या है"
#: ../../../developer/introduction.md:23
msgid "Supporting SIP"
msgstr "एसआईपी का समर्थन"
#: ../../../developer/introduction.md:24
msgid "{doc}`setting-up-your-own-turn-server`"
msgstr "{doc}`अपनी-अपने-टर्न-सर्वर सेटअप"
#: ../../../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 "{doc}`निर्माण निर्देश <../निर्माण/निर्माण>`"
#: ../../../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 "{doc}`कनेक्शन मैनेजर"
#: ../../../developer/introduction.md:35
msgid "DRT"
msgstr "डीआरटी"
#: ../../../developer/introduction.md:36
msgid "{doc}`calls-in-swarm`"
msgstr "{doc}`कॉल-इन-स्वारम"
#: ../../../developer/introduction.md:38
msgid "Drafts"
msgstr "मसौदा"
#: ../../../developer/introduction.md:39
msgid "{doc}`conference-protocol`"
msgstr "{doc}` सम्मेलन-प्रोटोकॉल"
#: ../../../developer/introduction.md:40
msgid "{doc}`synchronization-protocol`"
msgstr "{doc}`सिनक्रनाइज़ेशन प्रोटोकॉल"
#: ../../../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 ""
"यदि आप यह पढ़ रहे हैं, तो संभावना है कि आप या तो जामी के किसी घटक / परियोजना"
" में योगदान करना चाहते हैं, या अपने स्वयं के ग्राहक को लागू करना चाहते हैं। "
"इस परियोजना में तीन मुख्य परतें हैंः"
#: ../../../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), पी 2 पी संचार के लिए उपयोग किया जाता है। आप"
" इस पुस्तकालय के साथ बातचीत कर सकते हैं किसी भी सी ++ पुस्तकालय की तरह, या "
"पायथन रैपर का उपयोग करके, या इसके [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, और अन्य पुस्तकालयों के साथ बातचीत करता है, और पूरे "
"प्रोटोकॉल को लागू करता है। यदि आप एक नया Jami क्लाइंट बनाना चाहते हैं, तो हम"
" इसे इस डेमोन के शीर्ष पर लागू करने की सलाह देते हैं, इसके कई एपीआई (REST, "
"DBus, libwrap, या JNI) का उपयोग करके।"
#: ../../../developer/introduction.md:60
msgid "The client part, which is basically the *frontend*."
msgstr "ग्राहक भाग, जो मूल रूप से है *फ्रंटेंड*"
#: ../../../developer/introduction.md:62
msgid ""
"The developer manual of Jami will explain the different features from all of"
" these layers."
msgstr ""
"जमी के डेवलपर मैनुअल में इन सभी परतों की अलग-अलग विशेषताएं बताई जाएंगी।"
#: ../../../developer/jami-identifiers.md:1
msgid "Jami identifiers"
msgstr "जेमी पहचानकर्ता"
#: ../../../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 में कई पहचानकर्ता हैं. हमें इन पहचानकर्ताओं के नामकरण को सभी "
"कार्यान्वयनों के बीच एकजुट करने की आवश्यकता है. यह पृष्ठ संबंधित उदाहरणों के"
" साथ Jami में उपयोग किए जाने वाले विभिन्न प्रकार के पहचानकर्ताओं का संदर्भ "
"देता है।"
#: ../../../developer/jami-identifiers.md:8
msgid ""
"**Jami Infohash** or **Jami public key fingerprint** : a public key "
"fingerprint such as `3d1112ab2bb089370c0744a44bbbb0786418d40b`"
msgstr ""
"**जामी इन्फोहाश** या **जामी पब्लिक कुंजी फिंगरप्रिंट**: "
"`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 से जुड़े उपयोगकर्ता नाम जैसे "
"`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:3d1112abbb089370c0744a44bb0786418d40b` या `jami:jeandupont` या "
"`<sip:nnnnn@host:5060>`. [rfc3986] के अनुरूप होना चाहिए। "
"[https://tools.ietf.org/html/rfc3986] यदि यह एक SIP URI है, तो यह "
"[rfc3261#19.1] के अनुरूप होना चाहिए। [https://tools.ietf.org/html/rfc3261# "
"अनुभाग-19.1)."
#: ../../../developer/jami-identifiers.md:15
msgid ""
"**Canonical URI** : `jami:3d1112ab2bb089370c0744a44bbbb0786418d40b` or "
"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered name "
"must be resolved, doesn't include <> brackets or display name. Prefixed with"
" the scheme (`jami:` or `sip:` or `sips:`)."
msgstr ""
"**कैनोनिक यूआरआई**: `jami:3d1112ab2bb089370c0744a44bb0786418d40b` या "
"`sip:nnnnn@host:5060`. यूआरआई का सबसे सरल रूप। पंजीकृत नाम को हल किया जाना "
"चाहिए, <> ब्रैकेट या डिस्प्ले नाम शामिल नहीं है। योजना (`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 ""
"यदि कोई फोटो उपलब्ध नहीं है और एक पंजीकृत नाम (रिंग) या प्रदर्शन नाम (सिप) "
"उपलब्ध है, तो इस नाम के पहले अक्षर का उपयोग प्लेसहोल्डर उत्पन्न करने के लिए "
"किया जा सकता है। अन्यथा एक सामान्य प्लेसहोल्डर का उपयोग किया जाता है।"
#: ../../../developer/jami-identifiers.md:32
msgid ""
"If no photo is available, a placeholder with an Canonical URI-specific "
"background color can be used:"
msgstr ""
"यदि कोई फोटो उपलब्ध नहीं है, तो एक स्थान धारक का उपयोग किया जा सकता है "
"जिसमें एक कैनोनिकल यूआरआई विशिष्ट पृष्ठभूमि रंग हैः"
#: ../../../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](images/jami-reference-colors.png)"
#: ../../../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 ""
"एक वार्तालाप में, उपयोगकर्ता एक नक्शा प्रदर्शित करने के लिए स्थान आइकन पर "
"क्लिक कर सकता है। यदि `Location Services` डिवाइस पर सक्षम है, तो उपयोगकर्ता "
"की स्थिति नक्शे पर दिखाई जाएगी, साथ ही सभी अन्य सदस्यों के स्थान जो अपना "
"स्थान साझा कर रहे हैं (छोटे खाते की सभी वार्तालापों से) । उपयोगकर्ता स्थान "
"साझा करने के बटन पर क्लिक करके स्थान साझा करना चालू और बंद कर सकता है। "
"डिफ़ॉल्ट रूप से, उपयोगकर्ता का स्थान 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 ""
"स्थान साझा करने के अंत बटन पर क्लिक करें. यह एक पॉप-अप प्रदर्शित करेगा जो "
"उपयोगकर्ता को या तो स्थान साझा करना पूरी तरह से बंद करने या केवल बातचीत सी "
"के सदस्यों के साथ अपना स्थान साझा करना बंद करने की अनुमति देगा।"
#: ../../../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 ""
"यदि विंडो अनपिन है, तो उपयोगकर्ता स्थान साझा करने के बटन पर क्लिक नहीं कर "
"पाएगा क्योंकि विंडो अब बातचीत से जुड़ी नहीं है। नए लोगों के साथ स्थान साझा "
"करना शुरू करने के लिए, उपयोगकर्ता को विंडो को फिर से पिन करना होगा। ध्यान "
"दें कि विंडो को अनपिन करना किसी भी चल रहे स्थान साझाकरण को प्रभावित नहीं "
"करता है। इसके अलावा, विंडो अनपिन होने के दौरान स्थान साझा करने के अंत बटन पर"
" क्लिक करने से सभी वर्तमान स्थान साझाकरण बंद हो जाएगा और कोई पॉप-अप दिखाई "
"देगा जिससे उपयोगकर्ता को साझा करना बंद करने के लिए एक विशिष्ट वार्तालाप "
"चुनने की अनुमति मिलेगी।"
#: ../../../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 ""
"स्थान निर्धारित करने के लिए, [Qt "
"Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html) एपीआई का उपयोग "
"किया जाता है। एक बार स्थिति निर्धारित हो जाने के बाद, इसे DHT पर एक संदेश के"
" रूप में भेजा जाता है और क्लाइंट को प्रेषित किया जाता है। प्राप्त स्थिति फिर"
" [OpenLayers]https://openlayers.org/) जावास्क्रिप्ट लाइब्रेरी का उपयोग करके "
"प्रदर्शित की जाती है।"
#: ../../../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` मॉड्यूल का `QtPositioning` वर्ग तब स्थिति को 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 ""
"डेटा का एक उदाहरण: "
"`{\\\"लाट\\\":45.51616583988481,\\\"लंबा\\\":-73.620693,\\\"समय\\\":1671658862000,\\\"प्रकार\\\":\\\"स्थिति\\\"}`"
#: ../../../developer/location-sharing.md:74
msgid ""
"When sending the position to the daemon, the author's URI is also "
"transmitted."
msgstr "डेमोन को स्थिति भेजते समय, लेखक की यूआरआई भी प्रेषित की जाती है।"
#: ../../../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 ""
"जब उपयोगकर्ता वार्तालाप के साथ अपनी स्थिति साझा करना बंद कर देता है, तो "
"वार्तालाप की आईडी को `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` मॉड्यूल से स्थानीय स्थिति हो या किसी अन्य "
"संपर्क से स्थिति। `positionManager` स्तर पर, `objectListSharingUris_` सूची "
"ग्राहक की सभी स्थितियों को संग्रहीत करती है। स्थिति या तो हैः"
#: ../../../developer/location-sharing.md:83
msgid "Added (the URI is not present in the list)"
msgstr "जोड़ा गया (यूआरआई सूची में मौजूद नहीं है)"
#: ../../../developer/location-sharing.md:84
msgid "Updated (the URI is already present in the list)"
msgstr "अद्यतन (यूआरआई सूची में पहले से मौजूद है)"
#: ../../../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 को प्रेषित होती है जो बदले में जानकारी को "
"[OpenLayers]https://openlayers.org/) जावास्क्रिप्ट लाइब्रेरी में भेजती है। "
"Qt `WebEngine` मॉड्यूल लाइब्रेरी की वेब तकनीक और Qml के बीच पुल बनाने की "
"अनुमति देता है। प्रत्येक स्थिति को मानचित्र में एक परत द्वारा जोड़ा जाता है।"
" `newPosition() ` फ़ंक्शन एक नई परत जोड़ता है, `updatePosition() ` फ़ंक्शन "
"परत के निर्देशांक को अपडेट करता है, और `removePosition() फ़ंक्शन परत को हटा "
"देता है।"
#: ../../../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 "इसके लिए, डेमोन कुछ एपीआई प्रदान करता हैः"
#: ../../../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` "
"status 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 ""
"`Configuration::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 "नाम सर्वर प्रोटोकॉल"
#: ../../../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 ""
"जेमी द्वारा किसी नाम को क्वेरी करने और पंजीकृत करने के लिए उपयोग किया जाने "
"वाला प्रोटोकॉल HTTP [REST] "
"(https://en.wikipedia.org/wiki/Representational_state_transfer) एपीआई पर "
"आधारित है जो 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` पर होस्ट किया जाता है और इसका बैक-एंड "
"ब्लॉकचेन का उपयोग करता है। एक अन्य कार्यान्वयन किसी अन्य डेटाबेस या "
"निर्देशिका सेवा का उपयोग कर सकता है जिससे नाम सर्वर प्रोटोकॉल का पुनः उपयोग "
"किया जा सकता है।"
#: ../../../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 ""
"यदि आप अपना स्वयं का नाम सर्वर चलाते हैं, तो `username@example.com` के रूप "
"में उपयोगकर्ता नाम खोजें `username` नाम सर्वर के साथ `example.com`. "
"(पूर्वनिर्धारित नाम सर्वर का उपयोग करने के लिए `@ns.jami.net` जोड़ने की "
"आवश्यकता नहीं है।)"
#: ../../../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 ""
"उपयोगकर्ता नामों को उनके प्रारूप के बारे में कुछ नियम सुनिश्चित करने के लिए "
"एक रेजेक्स द्वारा जांच किया जाता हैः"
#: ../../../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` के साथ एक उत्तर स्थिति कोड `200` ` को "
"`Content-type` फ़ील्ड के साथ ग्राहक को भेजना होगा जो `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` ` `0x` से पूर्ववर्ती Jami ID का एक "
"छक्के दशमलव प्रतिनिधित्व है।"
#: ../../../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` के साथ एक उत्तर "
"`Content-type` फ़ील्ड के साथ ग्राहक को भेजना होगा जो `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`* के रूप में यूआरआई।"
#: ../../../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` के साथ एक उत्तर "
"`Content-type` फ़ील्ड के साथ ग्राहक को `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` के साथ एक उत्तर "
"`Content-type` फ़ील्ड के साथ ग्राहक को भेजना होगा `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 के रूप में है। शीर्षक विशेषता `Content-type` को "
"`application/json` पर सेट किया जाना चाहिए।"
#: ../../../developer/name-server-protocol.md:137
msgid ""
"The body of the request is a JSON document with 2 string attributes: `addr` "
"and `owner`. `addr` contains the Jami ID prefixed with `0x` and `owner` is "
"the name to be registered."
msgstr ""
"अनुरोध का शरीर 2 स्ट्रिंग गुणों के साथ एक JSON दस्तावेज़ हैः `addr` और "
"`owner`। `addr` में Jami ID `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` के साथ एक "
"प्रतिक्रिया ग्राहक को `Content-type` फ़ील्ड के साथ `application/json` के रूप"
" में सेट की जानी चाहिए।"
#: ../../../developer/name-server-protocol.md:156
msgid ""
"The body contain a JSON document with 1 boolean attribute `success` set to "
"`true`."
msgstr ""
"शरीर में 1 बुलियन विशेषता `success` के साथ एक JSON दस्तावेज़ होता है `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` के साथ एक प्रतिक्रिया ग्राहक "
"को `Content-type` फ़ील्ड के साथ भेजी जानी चाहिए जो `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 ""
"शरीर 2 गुणों के साथ एक JSON दस्तावेज़ हैः `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` के साथ एक प्रतिक्रिया ग्राहक को `Content-type` फ़ील्ड के "
"साथ भेजी जानी चाहिए जो `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 ""
"शरीर 3 गुणों के साथ एक JSON दस्तावेज़ हैः `success` जो `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`: `ns.jami.net` द्वारा उपयोग किए जाने वाले"
" संदर्भ NodeJS कार्यान्वयन और एथेरियम नोड से क्वेरी करना।"
#: ../../../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-बिट के फिंगरप्रिंट को **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 ""
"खाता प्रमाण पत्र का विषय यूआईडी फ़ील्ड सार्वजनिक कुंजी फिंगरप्रिंट का छक्के "
"दशमलव रूप होना चाहिए। जारीकर्ता यूआईडी फ़ील्ड जारीकर्ता सार्वजनिक कुंजी "
"फिंगरप्रिंट का छक्के दशमलव रूप होना चाहिए।"
#: ../../../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 "* [आरएफसी 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 बिट्स है।"
#: ../../../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 प्रमाणपत्र के रूप में परिभाषित किया जाता है "
"जिसका विषय एक डिवाइस सार्वजनिक कुंजी है, जिसे एक खाते की निजी कुंजी के साथ "
"हस्ताक्षरित किया गया है। प्रमाणपत्र वैध होना चाहिए। जारीकर्ता यूआईडी फ़ील्ड "
"खाता सार्वजनिक कुंजी के फिंगरप्रिंट का छक्के दशमलव रूप होना चाहिए।"
#: ../../../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 ""
"जहां पिन एक यादृच्छिक 32बिट संख्या है, \"+\" स्ट्रिंग कॉनकेशन है, "
"टाइमस्टैम्प वर्तमान 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 ""
"उपयोगकर्ता को पासवर्ड के साथ-साथ नया भौतिक डिवाइस पर मैन्युअल रूप से कॉपी "
"करने के लिए पिन दिखाया जाना चाहिए।"
#: ../../../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(\"कॉल\"+डिवाइस आईडी) `"
#: ../../../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 डिवाइसID का "
"हेक्साडेसिमल रूप है।"
#: ../../../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 ""
"प्राप्त किए गए ओपनडीएचटी मान जिन्हें एन्क्रिप्ट नहीं किया गया है या सही ढंग "
"से हस्ताक्षरित नहीं किया गया है, उन्हें छोड़ दिया जाना चाहिए। मान को बुलाए "
"गए डिवाइस सार्वजनिक कुंजी के साथ एन्क्रिप्ट किया जाना चाहिए और ओपनडीएचटी "
"विनिर्देशों के अनुसार बुलाए गए डिवाइस निजी कुंजी के साथ हस्ताक्षर किए जाने "
"चाहिए।"
#: ../../../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 "*देखें [आरएफसी 5245]*"
#: ../../../developer/protocol.md:114
msgid ""
"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
"for NAT traversal."
msgstr ""
"आरएफसी 5245 ने आईसीई (इंटरैक्टिव कनेक्टिविटी एस्टिस्टमेंट) को परिभाषित किया "
"है, जो एनएटी पार करने के लिए एक प्रोटोकॉल है।"
#: ../../../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 ""
"आईसीई का उपयोग जैमी में दो उपकरणों के बीच पीयर-टू-पीयर संचार स्थापित करने के"
" लिए किया जाता है।"
#: ../../../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 ""
"कॉल डिवाइस उम्मीदवारों को इकट्ठा करता है और आईसीई विनिर्देशों के अनुसार "
"प्रारंभिक प्रस्ताव बनाता है और आईसीई वार्ता प्रक्रिया शुरू करता है।"
#: ../../../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 ""
"कॉल डिवाइस डीएचटी पर एन्क्रिप्टेड आईसीई ऑफर (प्रारंभिक ऑफर) "
"h(\"कॉल\"+डिवाइसआईडी) पर रखता है, जहां डिवाइसआईडी डिवाइसआईडी नामक डिवाइसआईडी"
" का छक्के दशमलव रूप है।"
#: ../../../developer/protocol.md:128
msgid "**ICE serialization format**"
msgstr "**ICE क्रमबद्धता प्रारूप**"
#: ../../../developer/protocol.md:130
msgid ""
"ICE messages exchanged between peers during a call setup use following "
"format. An ICE message is a chunk of binary data, following "
"[msgpack](http://msgpack.org/) data format."
msgstr ""
"आईसीई संदेश [msgpack](http://msgpack.org/) डेटा प्रारूप के बाद द्विआधारी "
"डेटा का एक टुकड़ा है।"
#: ../../../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 ""
"एक पूर्णांक जो शेष डेटा के लिए उपयोग किए जाने वाले आईसीई संदेश प्रारूप "
"प्रोटोकॉल के संस्करण को दर्शाता है। वर्तमान परिभाषित प्रोटोकॉल संस्करण **1**"
" है।"
#: ../../../developer/protocol.md:139
msgid ""
"a 2-elements array of strings of the ICE local session ufrag and the ICE "
"local session password"
msgstr ""
"ICE स्थानीय सत्र ufrag और ICE स्थानीय सत्र पासवर्ड की स्ट्रिंग्स की 2- तत्व "
"सरणी"
#: ../../../developer/protocol.md:140
msgid "an integer giving the number of components in the ICE session"
msgstr "आईसीई सत्र में घटकों की संख्या देने वाली पूर्णांक"
#: ../../../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 ""
"एन्क्रिप्टेड और हस्ताक्षरित प्रारंभिक आईसीई ऑफर (सुनने के संचालन के माध्यम "
"से) प्राप्त करने पर, एक बुलाए गए डिवाइस को कॉल डिवाइस की प्राधिकरण जांच करनी"
" चाहिए, जिसे प्रारंभिक ऑफर हस्ताक्षरकर्ता के रूप में पहचाना जाता है। "
"प्राधिकरण नियम कार्यान्वयन परिभाषित हैं, लेकिन एक विशिष्ट कार्यान्वयन ज्ञात "
"या विश्वसनीय संपर्कों को अधिकृत करेगा।"
#: ../../../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 वार्ता प्रक्रिया "
"शुरू करना होगा और उसी DHT कुंजी पर एन्क्रिप्टेड और हस्ताक्षरित ICE उत्तर "
"भेजना होगा।"
#: ../../../developer/protocol.md:161
#: ../../../developer/technical-overview.md:241
msgid "DTLS negotiation"
msgstr "डीटीएलएस वार्ता"
#: ../../../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 कनेक्शन (डीटीएलएस क्लाइंट के रूप "
"में कार्य करने) शुरू करता है।"
#: ../../../developer/protocol.md:168
msgid ""
"The DTLS communication must be RFC6347 compliant "
"([1](https://tools.ietf.org/html/rfc6347))."
msgstr ""
"डीटीएलएस संचार आरएफसी 6347 के अनुरूप होना चाहिए "
"([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 ""
"डीटीएलएस हाथ मिलाने के दौरान, दोनों समकक्षों को अपने संबंधित डिवाइस प्रमाण "
"पत्र श्रृंखला प्रदान करनी चाहिए और दूसरे समकक्ष को प्रमाणित करना चाहिए, यह "
"जांचना चाहिए कि DHT ICE एक्सचेंज के दौरान इसका सार्वजनिक कुंजी वही है।"
#: ../../../developer/protocol.md:179
msgid "SIP call"
msgstr "एसआईपी कॉल"
#: ../../../developer/protocol.md:181
msgid "*See [Important\\_RFC](Important_RFC \"wikilink\")*"
msgstr "*देखें [महत्वपूर्ण\\_RFC](महत्वपूर्ण_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) का उपयोग किया जाना चाहिए। DTLS चैनल"
" स्थापित होने के तुरंत बाद कॉल करने वाले को SIP INVITE भेजा जा सकता है।"
#: ../../../developer/protocol.md:188
#: ../../../developer/technical-overview.md:277
msgid "The SIP implementation must support ICE and SRTP."
msgstr "एसआईपी कार्यान्वयन को आईसीई और एसआरटीपी का समर्थन करना चाहिए।"
#: ../../../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 ""
"एसआईपी के साथ मीडिया पर बातचीत करते समय एसआरटीपी का उपयोग किया जाना चाहिए, "
"प्रत्येक मीडिया और प्रत्येक बातचीत के लिए एक नई यादृच्छिक कुंजी का उपयोग "
"किया जाना चाहिए। एसआईपी के साथ मीडिया पर बातचीत करते समय आईसीई का उपयोग किया"
" जाना चाहिए।"
#: ../../../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 ""
"512 बिट हैश उत्पन्न करने के लिए, पासवर्ड को t\\_cost = 16, m\\_cost = 2\\^16"
" (64 MiB) का उपयोग करके argon2i का उपयोग करके मोनो-थ्रेड किया जाता है।"
#: ../../../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 बिट्स) का उपयोग करना"
#: ../../../developer/protocol.md:215
msgid ""
"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
"for each encryption."
msgstr ""
"एन्क्रिप्शन में प्रत्येक एन्क्रिप्शन के लिए एक यादृच्छिक IV का उपयोग करके "
"नेटल द्वारा लागू किए गए मानक AES-GCM का उपयोग किया जाता है।"
#: ../../../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 बिट्स की कुंजी और 128 बिट्स की यादृच्छिक नमक उत्पन्न करने के "
"लिए बढ़ाया गया है।"
#: ../../../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 ""
"ऑडियो/वीडियो डेटा को पीयर के बीच एन्क्रिप्टेड आरटीपी चैनलों का उपयोग करके "
"आदान-प्रदान किया जाता है।"
#: ../../../developer/protocol.md:231
msgid ""
"The protocol is a classic SRTP, with following supported crypto suites:"
msgstr ""
"प्रोटोकॉल एक क्लासिक एसआरटीपी है, जिसमें निम्नलिखित समर्थित क्रिप्टो सूट "
"हैंः"
#: ../../../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 "QML"
#: ../../../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 ""
"qmlformat के Qt 5.15.0 संस्करण में टिप्पणी अनुभागों से संबंधित कुछ मुद्दे "
"हैं और वर्तमान में अधिकतम स्तंभों के खिलाफ भेदभाव नहीं करता है, इसलिए हम अभी"
" के लिए इन दिशानिर्देशों का उपयोग करके प्रारूपण जारी रखेंगे। निम्नलिखित "
"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 "गूगल टेस्ट"
#: ../../../developer/qt-qml-testing-tools.md:80
msgid "Google's c++ test framework."
msgstr "गूगल के सी ++ परीक्षण ढांचे।"
#: ../../../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 "उबंटू / डेबियन: `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 "उबंटू / डेबियन: `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 "रेडमाइन टिकट"
#: ../../../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 ""
"रिलीज़ स्टोरी के लिए एक नया टास्क ऑन रेडमाइन बनाएँ, सही उप-मॉड्यूल के लिए। "
"शीर्षक को \"रिलीज़ मेजर.माइनर.माइक्रो\" पर सेट करें, उपयुक्त संस्करण संख्या "
"के साथ।"
#: ../../../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 clean -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 "vim ring-daemon.spec"
#: ../../../developer/release-process.md:181
msgid ""
"When the packaging is finished, test that they are installable. Then "
"announce the release"
msgstr ""
"जब पैकेजिंग समाप्त हो जाती है, तो परीक्षण करें कि वे स्थापित करने योग्य हैं।"
#: ../../../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 "ट्विटर पर <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 पर विषय पंक्ति के साथः \"रिंग "
"मेजर.माइनर.पैच जारी किया गया\""
#: ../../../developer/setting-up-your-own-turn-server.md:1
msgid "Setting up your own TURN server"
msgstr "अपने स्वयं के टर्न सर्वर स्थापित करना"
#: ../../../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 ""
"जेमी को दो समकक्षों के बीच कनेक्शन स्थापित करने के लिए 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\" है, जिसमें उपयोगकर्ता नाम \"रिंग\", "
"पासवर्ड \"रिंग\" और क्षेत्र \"रिंग\" है।"
#: ../../../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] सर्वर स्थापित करेंगे। [TurnServer] और [Restund] "
"जैसे अन्य TURN/STUN सर्वर कार्यान्वयन मुफ्त लाइसेंस के तहत उपलब्ध हैं। "
"[http://turnserver.sourceforge.net/) और [Restund]"
#: ../../../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 अधिकांश लिनक्स वितरणों में उपलब्ध है। डेबियन पर, इसे निम्न कमांड के "
"साथ स्थापित करेंः"
#: ../../../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 ""
"यह एक स्टन सर्वर के रूप में भी काम करेगा। स्टन सर्वर को उपयोगकर्ता नाम और "
"पासवर्ड की आवश्यकता नहीं है (स्टन बहुत कम बैंडविड्थ का उपयोग करता है) ।"
#: ../../../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 "टर्न सर्वर को लॉन्च करना"
#: ../../../developer/setting-up-your-own-turn-server.md:56
msgid "Configuring Jami to authenticate with the TURN server"
msgstr "TURN सर्वर के साथ सत्यापन के लिए Jami को कॉन्फ़िगर करना"
#: ../../../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 ""
"आप अपने खाते सेटिंग्स के उन्नत अनुभाग से अपने TURN सर्वर का उपयोग करने के "
"लिए Jami को कॉन्फ़िगर कर सकते हैंः"
#: ../../../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 "** सर्वर 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}`एक समीक्षा बनाना <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 "अपने सार्वजनिक कुंजी Gerrit बताओ"
#: ../../../developer/submitting-your-first-patch.md:26
msgid ""
"Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-"
"in=>OAuth Gitlab)"
msgstr ""
"अपने Gitlab खाते के माध्यम से [gerrit](https://review.jami.net) में लॉग इन "
"करें (साइन-इन=>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 ""
"(आपके) उपयोगकर्ता विकल्पों [सेटिंग्स]https://review.jami.net/settings/ से "
"मिली ssh कुंजी निर्देशों का पालन करें)"
#: ../../../developer/submitting-your-first-patch.md:29
msgid "Set up your local ssh (via `ssh-add` or in `~/.ssh/config`)"
msgstr "अपने स्थानीय ssh (via `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 ""
"उपरोक्त सभी का परीक्षण करें (सेवा पर एसएच या बस एसएच के माध्यम से gerrit पर "
"एक रेपो क्लोन करने की कोशिश करें)"
#: ../../../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 क्लोन "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; उदाहरण के "
"लिए `git क्लोन 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 "कमांड-आईडीज उत्पन्न करें"
#: ../../../developer/submitting-your-first-patch.md:42
msgid "A shell script, to be installed to .git/hooks/commit-msg."
msgstr ".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:हश बनाता है।"
#: ../../../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 ""
"जब आप पहली बार `git पुश मूल HEAD:refs/for/master` की समीक्षा करने के लिए "
"_push_ का प्रयास करते हैं, तो 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) स्ट्रिंग भी प्रस्तुत करेगा।.git/hooks/commit-"
"msg की एक प्रति डाउनलोड करने के लिए *that* का उपयोग करें।"
#: ../../../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 ""
"इस दस्तावेज़ का उद्देश्य यह वर्णन करना है कि Jami में समूह चैट (उर्फ **swarm"
" chat**) कैसे लागू किया जाएगा।"
#: ../../../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 "परिवहन पर PFS. भंडारण डिवाइस द्वारा प्रबंधित किया जाता है।"
#: ../../../developer/swarm.md:16
msgid ""
"The main idea is to get a synchronized Merkle tree with the participants."
msgstr ""
"मुख्य विचार प्रतिभागियों के साथ एक सिंक्रनाइज़्ड मर्केल पेड़ प्राप्त करना "
"है।"
#: ../../../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 "**ONE_TO_ONE**, मूल रूप से मामला हम आज है जब आप एक दोस्त के साथ चर्चा"
#: ../../../developer/swarm.md:20
msgid ""
"**ADMIN_INVITES_ONLY** generally a class where the teacher can invite "
"people, but not students"
msgstr ""
"**ADMIN_INVITES_ONLY** सामान्यतः एक कक्षा जहां शिक्षक लोगों को आमंत्रित कर "
"सकता है, लेकिन छात्रों को नहीं"
#: ../../../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 "बॉब एक स्थानीय गिट भंडार बनाता है।"
#: ../../../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 "पहली प्रतिबद्धता का हैश बातचीत की ** आईडी ** बन जाता है"
#: ../../../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 ""
"बॉब अपने अन्य उपकरणों को घोषणा करता है कि वह एक नई बातचीत बनाता है। यह DHT "
"के माध्यम से भेजे गए झुंड में शामिल होने के लिए एक आमंत्रण के माध्यम से किया"
" जाता है उस खाते से जुड़े अन्य उपकरणों के लिए।"
#: ../../../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 "`/invited` में आमंत्रित URI जोड़ता है"
#: ../../../developer/swarm.md:44
msgid "Adds the CRL into `/crls`"
msgstr "CRL को `/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 ""
"एलिस बॉब के गिट रेपो खींचता है. ** चेतावनी का मतलब यह है कि संदेशों को एक "
"कनेक्शन की जरूरत है, नहीं 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** (नीचे समझाया गया) का निर्माण करेगी।"
#: ../../../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 ""
"और अपने डिवाइस और सीआरएल को रिपॉजिटरी में जोड़ती है यदि गायब है (अन्य को कॉम"
" की पुष्टि करने में सक्षम होना चाहिए) । विलय संघर्षों से बचा जाता है क्योंकि"
" हम ज्यादातर कॉम संदेशों पर आधारित होते हैं, फ़ाइलों पर नहीं (जब तक कि "
"सीआरएलएस + प्रमाणपत्र नहीं हैं लेकिन वे स्थित हैं) । फिर वह ** डीआरटी** के "
"माध्यम से एक सेवा संदेश के साथ नए कॉम की घोषणा करती है (बाद में समझाया "
"जाएगा) और मोबाइल उपकरणों के लिए डीएचटी को पिग करती है (वे को एक पुश सूचना "
"प्राप्त करनी चाहिए) ।"
#: ../../../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 ""
"अन्य उपकरणों को पिंग करने के लिए, प्रेषक अन्य सदस्यों को एक एमआईपी संदेश "
"भेजता है जिसमें मिमीटाइप = \"अनुप्रयोग/इम-गिटमेसेज-आईडी\" होता है जिसमें "
"संदेश भेजने वाले \"डिवाइसआईडी\" के साथ एक जेएसओएन होता है, वार्तालाप से "
"संबंधित \"आईडी\" और \"प्रतिबंधित\""
#: ../../../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 ""
"यदि सभी कॉम मान्य हैं, तो कॉम संग्रहीत और प्रदर्शित किए जाते हैं। फिर *बॉब* "
"अन्य उपकरणों के लिए डीआरटी के माध्यम से संदेश की घोषणा करता है।"
#: ../../../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 ""
"यदि सभी प्रतिबद्धता मान्य नहीं हैं, तो खींचना रद्द कर दिया जाता है. *एलिस* "
"को अपनी स्थिति को सही स्थिति में बहाल करना होगा। **टोडो प्रक्रिया*"
#: ../../../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 ""
"3 मामलों. समिति में 2 माता पिता हैं, तो यह एक विलय है, और अधिक पुष्टि करने "
"के लिए यहाँ कुछ भी नहीं है"
#: ../../../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 "सीआरएल की जाँच करें जोड़ा गया"
#: ../../../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 "कॉम में 1 माता पिता है, कॉम संदेश एक प्रकार के साथ एक 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 "रेपो में प्रमाण पत्र से हस्ताक्षर की जाँच"
#: ../../../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 ""
"सबसे पहले, वह बॉब पर प्रतिबंध लगाने के लिए मतदान करती है। ऐसा करने के लिए, "
"वह फ़ाइल /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% से "
"अधिक प्रशासक बॉब पर प्रतिबंध लगाने के लिए सहमत हैं (यदि वह अकेली है, तो यह "
"निश्चित रूप से 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 में फ़ाइलें हटा दी जा सकती हैं, "
"/members, /admins, /invited, /CRLs, /devices में बॉब के लिए सभी फ़ाइलें हटा "
"दी जा सकती हैं (या केवल /devices में यदि यह एक डिवाइस है जो प्रतिबंधित है) "
"और बॉब का प्रमाण पत्र /banned/members/bob_uri.crt में रखा जा सकता है (या "
"/banned/devices/uri.crt यदि कोई डिवाइस प्रतिबंधित है) और repo को समर्पित "
"किया जा सकता है"
#: ../../../developer/swarm.md:153
msgid "Then, Alice informs other users (outside Bob)"
msgstr "फिर, एलिस अन्य उपयोगकर्ताओं को सूचित करती है (बॉब के बाहर)"
#: ../../../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 में फ़ाइलें हटा दी जा सकती हैं, "
"/members, /admins, /invited, /CRLs में बॉब के लिए सभी फ़ाइलें, फिर से जोड़ी "
"जा सकती हैं (या केवल /डिवाइसेस में यदि यह एक डिवाइस है जो गैर-प्रतिबंधित है)"
" और रेपो में प्रतिबद्ध किया जा सकता है"
#: ../../../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 में सहेजें हटाया=समय::अब() (जैसे हटाएंसंपर्क संपर्कों में सहेजता "
"है) कि बातचीत हटाया जाता है और अन्य उपयोगकर्ता के उपकरणों के साथ सिंक्रनाइज़"
" किया जाता है"
#: ../../../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 ""
"अब, अगर Jami स्टार्टअप और रेपो अभी भी मौजूद है, बातचीत ग्राहकों को घोषित "
"नहीं किया जाता है"
#: ../../../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 ""
"दो मामलेः a. यदि बातचीत में कोई अन्य सदस्य नहीं है तो हम तुरंत भंडार को हटा "
"सकते हैं b. यदि अभी भी अन्य सदस्य हैं, तो प्रतिबद्ध करें कि हम बातचीत छोड़ "
"दें, और अब प्रतीक्षा करें कि कम से कम एक अन्य डिवाइस इस संदेश को सिंक्रनाइज़"
" करता है। यह इस तथ्य से बचाता है कि अन्य सदस्य अभी भी उपयोगकर्ता को एक वैध "
"सदस्य के रूप में पहचानेंगे और फिर भी नए संदेश सूचनाएं भेजेंगे।"
#: ../../../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 ""
"जब हम सुनिश्चित कर रहे हैं कि किसी को सिंक्रनाइज़ किया गया है, हटाएँ "
"मिटाया=समय::अब() और अन्य उपयोगकर्ताओं के उपकरणों के साथ सिंक्रनाइज़"
#: ../../../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 ""
"अभी के लिए, \"मोड\" मानों को स्वीकार करता है 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 ""
"यहाँ लक्ष्य पुराने एपीआई (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 के माध्यम से एक TrustRequest भेज सकता है। लेकिन दो परिवर्तन"
" आवश्यक हैंः"
#: ../../../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 उत्पन्न नहीं करना चाहते हैं यदि सहकर्मी "
"पहले को त्यागता है) । इसलिए, यदि किसी खाते को एक विश्वास अनुरोध प्राप्त होता"
" है, तो यह स्वचालित रूप से अनदेखा किया जाएगा यदि संबंधित बातचीत के साथ "
"अनुरोध अस्वीकार कर दिया जाता है (जैसा कि convRequests सिंक्रनाइज़ होते हैं)"
#: ../../../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 झुंड दिखाया जाएगा। यह संक्रमण के समय के दौरान कुछ बग "
"उत्पन्न करेगा (जैसा कि हम एपीआई को नहीं तोड़ना चाहते हैं, अनुमानित वार्तालाप"
" दिखाए गए दो वार्तालापों में से एक होगा, लेकिन अभी के लिए यह \"ओके-आईएस\", "
"ठीक हो जाएगा जब ग्राहक सभी एपीआई (कॉल, फ़ाइल स्थानांतरण, आदि) के लिए बातचीत "
"को पूरी तरह से संभालेंगे) ।"
#: ../../../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() बातचीत की आईडी को सिंक्रनाइज़ करते "
"समय भी वापस करेगा"
#: ../../../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() दो यूआरआई का नक्शा लौटाएगा "
"(वर्तमान खाता और अनुरोध भेजने वाले साथी)"
#: ../../../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 "सेः प्रेषक का उरी"
#: ../../../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 "अवतार: (वैकल्पिक)"
#: ../../../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 ""
"बातचीत का प्रोफ़ाइल रूट (`/profile.vcf`) पर एक क्लासिक vCard फ़ाइल में "
"संग्रहीत किया जाता है जैसेः"
#: ../../../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`. संपादित करने की आवश्यकता होती है और मिमीटाइप "
"`application/update-profile` के साथ फ़ाइल को कमिट करेगा। नया संदेश उसी तंत्र"
" के माध्यम से भेजा जाता है और सभी समकक्षों को डेमन से **MessageReceived** "
"संकेत प्राप्त होगा। यदि कमिट में अन्य फ़ाइलें या बहुत बड़ी हैं या यदि एक "
"अनधिकृत सदस्य द्वारा किया जाता है (डिफ़ॉल्ट रूप सेः <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 "5 परिदृश्यों का समर्थन किया जाता हैः"
#: ../../../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 ""
"यदि रिमोट अंतिम प्रदर्शित रेपो में मौजूद नहीं है, तो इसका मतलब है कि कमिट "
"बाद में लाया जाएगा, इसलिए परिणाम कैश"
#: ../../../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 "\"प्रतीक\" - एक डिफ़ॉल्ट इमोजी को परिभाषित करने के लिए।"
#: ../../../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 "प्राथमिकताओं के साथ बातचीत करने के लिए एपीआई हैंः"
#: ../../../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` पर एक"
" विलय संघर्ष हो सकता है। इस मामले में, उच्च हैश (जैसे 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 "जहां `infos` निम्नलिखित कुंजी के साथ `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 होना चाहिए ताकि नए कॉमों पर वार्तालापों को पुनः "
"आयात के बाद पुनर्प्राप्त किया जा सके (क्योंकि इस बिंदु पर कोई आमंत्रण नहीं "
"है) । यदि एक कॉम वार्तालाप के लिए आता है जो मौजूद नहीं है तो दो संभावनाएं "
"हैंः"
#: ../../../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 गायब है, इसलिए डेमोन (एक संदेश के माध्यम से) एक नया आमंत्रण पूछता "
"है कि उपयोगकर्ता (पुनः) स्वीकार करने की जरूरत है"
#: ../../../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 ""
"प्रत्येक वार्तालाप एक गिट भंडार होगा। यह विकल्प निम्नलिखित कारणों से प्रेरित"
" हैः"
#: ../../../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 ""
"हमें संदेशों को सिंक करने और ऑर्डर करने की आवश्यकता है. मर्केल ट्री ऐसा करने"
" के लिए एकदम सही संरचना है और शाखाओं को मिलाकर लाइनर बनाया जा सकता है. इसके "
"अलावा, क्योंकि यह Git द्वारा बड़े पैमाने पर उपयोग किया जाता है, यह उपकरणों "
"के बीच सिंक करने के लिए आसान है."
#: ../../../developer/swarm.md:351
msgid "Distributed by nature. Massively used. Lots of backends and pluggable."
msgstr ""
"प्रकृति द्वारा वितरित, व्यापक रूप से उपयोग किया, बहुत सारे बैकेंड और प्लग "
"करने योग्य।"
#: ../../../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 "फ़ाइलों का नहीं, कॉम संदेशों का उपयोग करके संघर्षों से बचा जाता है।"
#: ../../../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[\"टाइड\"]}.${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 ""
"विफलता के मामले में, जब बातचीत का एक उपकरण फिर से ऑनलाइन हो जाएगा, हम सभी "
"प्रतीक्षा फ़ाइलों के लिए उसी तरह से पूछेंगे।"
#: ../../../developer/swarm.md:423
msgid "Call in swarm"
msgstr "झुंड में कॉल"
#: ../../../developer/swarm.md:425
msgid "TODO: nameserver part"
msgstr "TODO: नाम सर्वर भाग"
#: ../../../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 हो सकते हैं। एक rendez-vous को "
"निम्नलिखित uri द्वारा परिभाषित किया जाता हैः"
#: ../../../developer/swarm.md:431
msgid ""
"\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId "
"describes the host."
msgstr ""
"\"accountUri/deviceId/conversationId/confId\" जहां accountUri/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 ""
"कॉल शुरू करते समय, होस्ट एक नया कॉम जोड़ देगा, जिसमें यूआरआई शामिल होगा "
"(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 "गिट बम से बचें"
#: ../../../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 ""
"एक प्रतिबद्धता के समय टिकट पर भरोसा किया जा सकता है क्योंकि यह संपादन योग्य "
"है. केवल उपयोगकर्ता के समय टिकट पर भरोसा किया जा सकता है."
#: ../../../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 "डीएचटी (यूडीपी)"
#: ../../../developer/swarm.md:457
msgid ""
"Used to send messages for mobiles (to trigger push notifications) and to "
"initiate TCP connexions."
msgstr ""
"मोबाइल के लिए संदेश भेजने (पुश सूचनाओं को ट्रिगर करने) और 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 ""
"संदेश भेजने के लिए दो संभावनाएं a. यदि कनेक्ट नहीं है, DHT के माध्यम से b. "
"अन्यथा, एलिस 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 ""
"दो संभावनाएं बोब के लिए a. निमंत्रण प्राप्त करता है, एक संकेत क्लाइंट के लिए"
" जारी किया जाता है b. कनेक्टेड नहीं है, इसलिए कभी भी अनुरोध प्राप्त नहीं "
"करेगा क्योंकि एलिस को यह नहीं पता होना चाहिए कि क्या बॉब ने एलिस को अनदेखा "
"या अवरुद्ध किया है। एकमात्र तरीका एक नए संदेश के माध्यम से एक नया निमंत्रण "
"पुनर्जनित करना है (देखें अगले परिदृश्य)"
#: ../../../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 "एलिस रेपो में एक संदेश जोड़ती है, पहचान पत्र देती है"
#: ../../../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 ""
"दो संभावनाएं, एलिस और बॉब जुड़े हुए हैं, या नहीं। दोनों ही मामलों में एक "
"संदेश बनाया जाता हैः { \"अनुप्रयोग/im-gitmessage-id\" : "
"\"{\"id\":\"$convId\", \"commit\":\"$commitId\", \"deviceId\": "
"\"$alice_device_hash\"}\"}. ए. यदि कनेक्ट नहीं है, तो DHT b. अन्यथा, एलिस "
"SIP चैनल पर भेजता है"
#: ../../../developer/swarm.md:486
msgid ""
"Four possibilities for Bob: a. Bob is not connected to Alice, so if he "
"trusts Alice, ask for a new connection and go to b. b. If connected, fetch "
"from Alice and announce new messages c. Bob doesn't know that conversation."
" Ask through the DHT to get an invite first to be able to accept that "
"conversation ({\"application/invite\", conversationId}) d. Bob is "
"disconnected (no network, or just closed). He will not receive the new "
"message but will try to sync when the next connection will occur"
msgstr ""
"बॉब के लिए चार संभावनाएंः ए. बॉब एलिस से कनेक्ट नहीं है, इसलिए अगर वह एलिस "
"पर भरोसा करता है, तो एक नया कनेक्शन मांगें और बी. बी. पर जाएं। यदि कनेक्ट "
"है, तो एलिस से लाएं और नए संदेशों की घोषणा करें। सी. बॉब उस बातचीत को नहीं "
"जानता। डीएचटी के माध्यम से पहले उस बातचीत को स्वीकार करने में सक्षम होने के "
"लिए एक निमंत्रण प्राप्त करने के लिए पूछें ({\"अनुप्रयोग/ निमंत्रण\", "
"बातचीतId}) डी. बॉब डिस्कनेक्ट है (कोई नेटवर्क नहीं, या बस बंद है) । वह नया "
"संदेश प्राप्त नहीं करेगा लेकिन अगली कनेक्शन होने पर सिंक्रनाइज़ करने की "
"कोशिश करेगा"
#: ../../../developer/swarm.md:495
msgid "![Diagram: swarm chat classes](images/swarm-chat-classes-diagram.jpg)"
msgstr "! [आरेखः झुंड चैट कक्षाएं](छविएँ/ झुंड चैट-वर्ग-आरेख.jpg)"
#: ../../../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 मानों के "
"रूप में चोरी किया जाता है, तो बातचीत को डिक्रिप्ट किया जा सकता है। शायद हमें"
" ** डबल रचैट ** जैसे कुछ पर जाने की आवश्यकता है।"
#: ../../../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 "OpenDHT में ECC सहायता की आवश्यकता"
#: ../../../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, निजी चैनलों के साथ, और कुछ भूमिकाओं"
" (प्रशासक / दर्शक / बॉट / आदि) या शिक्षा के लिए (जहां केवल कुछ ही सक्रिय "
"हैं) ।"
#: ../../../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 "लिंक/क्यूआर कोड/जो भी"
#: ../../../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 के लिए गणना की गई सबसे अच्छी समय है। डेटा को बनाए रखने के लिए,"
" नोड को हर 10 मिनट में DHT पर मूल्य को फिर से सेट करना होगा। एक और तरीका है "
"जब नोड ऑफ़लाइन हो तो नोड को डेटा को फिर से सेट करने देना है। लेकिन, अगर 10 "
"मिनट के बाद, 8 नोड अभी भी यहां हैं, तो वे 64 अनुरोध करेंगे (और यह "
"एक्सपोनेंशियल है) । इसके लिए स्पैमिंग से बचने का वर्तमान तरीका पूछताछ है। यह"
" अभी भी 64 अनुरोध करेगा लेकिन अधिकतम अधिशेष को 8 नोड तक सीमित करेगा।"
#: ../../../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 ""
"समूह चैट उसी काम पर आधारित हो सकता है जो हमारे पास पहले से ही मल्टी-डिवाइस "
"के लिए है (लेकिन यहां, एक समूह प्रमाणपत्र के साथ) ।"
#: ../../../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 "एक सुपरयूजर के साथ एक डीएचटी की तरह."
#: ../../../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 कार्यान्वयन की आवश्यकता है। p2p स्थानांतरण के"
" लिए RFC लागू करें।"
#: ../../../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 ""
"अन्य समस्याः वर्तमान में पीजेएसआईपी में आईसीई के लिए टीसीपी समर्थन के लिए "
"कोई कार्यान्वयन नहीं है। यह इस बिंदु के लिए अनिवार्य है (पीजेसीपी या घर में "
"बनाया गया)"
#: ../../../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 ""
"{doc}`Swarm डिजाइन दस्तावेज़ में कई परिदृश्य परिभाषित किए गए हैं, हालांकि, "
"इसका मतलब यह नहीं है कि एक ही उपयोगकर्ता के लिए उपकरणों के बीच बातचीत को "
"सिंक्रनाइज़ किया जाए। कुछ नए परिदृश्य लिखे जाने चाहिए।"
#: ../../../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 ""
"पुरानी विधि में, डेमोन \"इनबॉक्सःDEVICE_ID\" पर सुन रहा है DeviceSync मानों "
"के लिए जिसमें समक्रमण करने के लिए संपर्क सूची शामिल है (cf. "
"`AccountManager::startSync() `);"
#: ../../../developer/synchronization-protocol.md:14
msgid ""
"**NOTE:** The current **DeviceSync** value present on the **DHT** is "
"deprecated with this draft."
msgstr ""
"**नोटः** **DHT** पर मौजूद वर्तमान **DeviceSync** मान इस मसौदे के साथ "
"अप्रचलित है।"
#: ../../../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 "
"सॉकेट का उपयोग करके बड़े मानों के साथ तेजी से सिंक्रनाइज़ करना संभव है "
"(क्योंकि सॉकेट डेटा में सीमित नहीं है)"
#: ../../../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 ""
"नोटः यदि * ए * नई वार्तालापों का पता लगाता है, तो यह उस वार्तालाप की घोषणा "
"करने वाले डिवाइस से एक गिट चैनल के माध्यम से रिपॉजिटरी का क्लोन करने के लिए "
"कहेगा (जैसा कि {doc}`Swarm चैट डिजाइन <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 "(वैकल्पिक) एलिस कुछ संदेश जोड़ें"
#: ../../../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 "एलिस के पास 2 डिवाइस हैं"
#: ../../../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] है "
"(https://en.wikipedia.org/wiki/VCard) "
"(https://datatracker.ietf.org/doc/html/rfc6350)"
#: ../../../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` में है।"
#: ../../../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 ""
"क्योंकि यह तर्क अभी भी प्रति क्लाइंट प्रबंधित किया जाता है, यह क्लाइंट पर "
"निर्भर करता है। हालांकि, डेस्कटॉप पर, यह एकीकृत है और संग्रहीत किया जाता हैः"
" `${idPath_}/profiles/${base64(uri)}. vcf`"
#: ../../../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 या एक सिंक्रनाइज़ेशन चैनल किया जाता "
"है। जब यह चैनल तैयार हो जाता है, तो हम जांचते हैं कि क्या हमें प्रोफ़ाइल "
"भेजना है। ऐसा करने के लिए, प्रोफ़ाइल का हैश कैश में एक के साथ तुलना की जाती "
"है (`${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\" होगा। "
"`daemon/test/unitTest/syncHistory/syncHistory.cpp` में व्यवहार का परीक्षण "
"किया गया है"
#: ../../../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 "जेमी खाता"
#: ../../../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 खाता** को **RSA असिममित कुंजी-जोड़ी** पर आधारित क्रिप्टोग्राफिक Jami "
"Identity द्वारा परिभाषित किया जाता है और **[RFC 5280] द्वारा परिभाषित "
"**x.509 प्रमाणपत्र** के साथ प्रबंधित किया जाता है।"
#: ../../../developer/technical-overview.md:13
msgid ""
"Jami uses the **gnutls** library to generate and manage RSA keys and "
"certificates."
msgstr ""
"जेमी आरएसए कुंजी और प्रमाणपत्र उत्पन्न करने और प्रबंधित करने के लिए "
"**gnutls** पुस्तकालय का उपयोग करता है।"
#: ../../../developer/technical-overview.md:16
msgid "Jami certificate"
msgstr "जमी प्रमाण पत्र"
#: ../../../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-बिट) **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 ""
"जारीकर्ता यूआईडी फ़ील्ड जारीकर्ता सार्वजनिक कुंजी फिंगरप्रिंट (CA) का छक्के "
"दशमलव रूप होना चाहिए।"
#: ../../../developer/technical-overview.md:27
msgid "Random RSA key-pair of at least 4096-bits long."
msgstr "कम से कम 4096 बिट्स की यादृच्छिक आरएसए कुंजी जोड़ी।"
#: ../../../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 बिट्स लंबा।"
#: ../../../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 फ़ील्ड डिवाइसआईडी का छक्के दशमलव रूप होना चाहिए।"
#: ../../../developer/technical-overview.md:37
msgid ""
"The issuer UID field must be the hexadecimal form of the issuer public key "
"fingerprint (JamiId)."
msgstr ""
"जारीकर्ता यूआईडी फ़ील्ड जारीकर्ता सार्वजनिक कुंजी फिंगरप्रिंट (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 ""
"जेमी प्रमाणपत्र आरएसए कुंजी का उपयोग डीएचटी पर भेजे गए संदेशों को "
"हस्ताक्षर/सीक्रिप्ट/डिक्रिप्ट करने के लिए दीर्घकालिक कुंजी के रूप में किया "
"जाता हैः"
#: ../../../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 प्रमाणपत्र निरसन सूची "
"(सीआरएल) में जोड़े जाते हैं।"
#: ../../../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 ""
"निरस्त किए गए उपकरण के लिए सीआरएल वैध और संबंधित सीए कुंजी, जो जेमी खाते की "
"निजी कुंजी है, से हस्ताक्षरित होना चाहिए।"
#: ../../../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 ""
"जब Jami एक नया डिवाइस बनाता है, तो इन जानकारी की भी आवश्यकता होती है, "
"सुरक्षित तरीके से किसी अन्य विश्वसनीय डिवाइस से साझा की जाती है।"
#: ../../../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 ""
"सभी प्लेटफार्म डेटा को संग्रहीत करने के लिए सुरक्षित तरीका प्रदान नहीं करते "
"हैं, जेमी खाता निर्माण के दौरान उपयोगकर्ता द्वारा परिभाषित पासवर्ड का उपयोग "
"करके मेमोरी के बाहर संग्रहीत डेटा (यानी फ़ाइल-सिस्टम पर) को एन्क्रिप्ट करके "
"इस तथ्य का समर्थन करता है।"
#: ../../../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 ""
"डिवाइस के निर्माण या निरस्त होने पर वर्तमान में डीएचटी नेटवर्क पर प्रसारित "
"किया जाता है।"
#: ../../../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 ""
"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 ""
"फिर जीजीपी-स्ट्रीम को 256-बिट कुंजी के साथ एईएस-जीसीएम-256 सममित एन्क्रिप्ट "
"का उपयोग करके एन्क्रिप्ट किया जाता है।"
#: ../../../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 ""
"यह कुंजी उपयोगकर्ता द्वारा प्रदान किए गए पासवर्ड, एक पिन और एक समय टिकट से "
"प्राप्त की गई है, [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 ""
"डिवाइस बनाने की प्रक्रिया को पूरा करने के लिए पासवर्ड के साथ-साथ नया भौतिक "
"डिवाइस पर मैन्युअल रूप से कॉपी करने के लिए उपयोगकर्ता को पिन दिखाया जाना "
"चाहिए।"
#: ../../../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 "जेमी डिवाइस प्रमाण पत्र श्रृंखला (ring\\_device.crt)"
#: ../../../developer/technical-overview.md:131
#: ../../../developer/technical-overview.md:137
msgid "PEM format"
msgstr "पीईएम प्रारूप"
#: ../../../developer/technical-overview.md:132
msgid ""
"Includes the Device certificate and parent certificates (Jami device "
"certificate and parents)"
msgstr ""
"डिवाइस प्रमाण पत्र और माता-पिता प्रमाण पत्र (जमी डिवाइस प्रमाण पत्र और "
"माता-पिता) शामिल है"
#: ../../../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 "डीएचटी नेटवर्क"
#: ../../../developer/technical-overview.md:142
msgid ""
"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
" page."
msgstr ""
"समर्पित [जमी वितरित नेटवर्क] ((रिंग_डिस्ट्रीब्यूट_नेटवर्क \"विकिलिनक\") "
"पृष्ठ।"
#: ../../../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 ""
"उपयोगकर्ता के संपर्क योग्य पते (यानी आईपी पते) केवल सहकर्मी को दिए जाते हैंः"
#: ../../../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 (इंटरैक्टिव "
"कनेक्टिविटी एस्टाब्लिशमेंट) को परिभाषित करता है, जो 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 ""
"कॉल डिवाइस उम्मीदवारों को इकट्ठा करता है और आईसीई विनिर्देशों के अनुसार ** "
"प्रारंभिक प्रस्ताव** बनाता है।"
#: ../../../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 ""
"कॉल डिवाइस डीएचटी पर एन्क्रिप्टेड आईसीई प्रस्ताव ( * प्रारंभिक प्रस्ताव*) "
"डालता हैः `h(\"`[callto:\"+DeviceID`](callto:%22+DeviceID)`)` जहां *h* SHA1 "
"है, *+* स्ट्रिंग संश्लेषण है, *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 ""
"एक डिवाइस `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` पर एक सुन "
"OpenDHT ऑपरेशन करके इनकमिंग कॉल के लिए सुनता है, जहां *h* SHA1 है, *+* "
"स्ट्रिंग कॉनकेटेशन है और *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 ""
"आईसीई *प्रारंभिक प्रस्ताव* रिसेप्शन पर, बुलाया गया डिवाइस **** पीयर की "
"सुरक्षा सत्यापन करना चाहिए (नीचे देखें) ।"
#: ../../../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 ""
"यदि वार्ता सफल हो जाती है, तो प्रक्रिया सर्वर-साइड डीटीएलएस सत्र स्थापना पर "
"बनाई गई आईसीई सॉकेट पर जारी रहती है (नीचे देखें) ।"
#: ../../../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 "आईसीई क्रमबद्धता प्रारूप"
#: ../../../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 ""
"एक आईसीई संदेश [msgpack] (http://msgpack.org/) डेटा प्रारूप का पालन करते हुए"
" बाइनरी डेटा का एक टुकड़ा है।"
#: ../../../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 ""
"एन्क्रिप्टेड और हस्ताक्षरित प्रारंभिक आईसीई ऑफर (सुनने के संचालन के माध्यम "
"से) प्राप्त करने पर, एक बुलाए गए डिवाइस को कॉल डिवाइस की प्राधिकरण जांच करनी"
" चाहिए, जिसे प्रारंभिक ऑफर हस्ताक्षरकर्ता के रूप में पहचाना जाता है।"
#: ../../../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 प्रोटोकॉल द्वारा एक पीयर-टू-पीयर संचार चैनल स्थापित किया गया "
"है, तो बुलाया गया डिवाइस ICE सॉकेट पर सर्वर-साइड DTLS सत्र शुरू करता है, "
"जबकि कॉल करने वाला ICE सॉकेट के दूसरी तरफ क्लाइंट-साइड DTLS सत्र शुरू करता "
"है।"
#: ../../../developer/technical-overview.md:247
msgid ""
"The DTLS communication is [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compliant using gnutls library."
msgstr "डीटीएलएस संचार [आरएफसी 6347] है।"
#: ../../../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 "केवल पीएफएस एन्क्रिप्टेड सूट समर्थित हैंः"
#: ../../../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 "वास्तविक एन्क्रिप्टेड सूट (गंटल के रूप में) हैः"
#: ../../../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:+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, मीडिया वार्ता, "
"हैंगअप, इंस्टेंट मैसेजिंग,...)"
#: ../../../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 ""
"DTLS चैनल स्थापित होने के तुरंत बाद कॉल करने वाला एक SIP INVITE भेज सकता है।"
#: ../../../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 ""
"जेमी कॉल के लिए और कॉल में टेक्स्ट संदेशों के लिए अलग-अलग एलिप्टिक कर्व "
"डिफी-हेल्मैन कुंजी बातचीत के साथ सही फॉरवर्ड सीक्रेटी प्रदान करता है। कॉल "
"आउट मैसेजिंग के लिए एकल आरएसए -4096 का उपयोग किया जाता है। इस्तेमाल किया गया"
" क्रिप्टोग्राफी लाइब्रेरी GNUTLS है"
#: ../../../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 ""
"[तकनीकी अवलोकन]जमी के भीतर अवधारणाओं और प्रोटोकॉल की तकनीकी/तकनीकी अवलोकन"
#: ../../../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 "Gerrit सर्वरः <https://review.jami.net>"
#: ../../../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 "जेमी परियोजनाएं जेरिट परः <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 "अपने गूगल या 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 ""
"अंत में, आपके गिट कॉन्फ़िग में निर्दिष्ट ईमेल पता आपके जेर्रिट खाते में "
"पंजीकृत ईमेल पते से मेल खाता होना चाहिए।"
#: ../../../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 कॉन्फ़िग को जानने के लिए"
#: ../../../developer/working-with-gerrit.md:19
msgid "`git config --list`"
msgstr "`git कॉन्फ़िग --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 "Gerrit आधिकारिक गिट भंडार है।"
#: ../../../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 भंडार का उपयोग करने के लिए अपने रिमोट जानकारी अद्यतन करना होगा."
" ऐसा करने के लिए, अपने मूल URL अद्यतन करेंः"
#: ../../../developer/working-with-gerrit.md:52
msgid ""
"`git remote set-url origin "
"ssh://<username>@review.jami.net:29420/<project_name>`"
msgstr ""
"`git रिमोट सेट-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 "रेफ / फॉर / मास्टर में डिफ़ॉल्ट रूप से धक्का देना"
#: ../../../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 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 धक्का मूल HEAD:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:70
msgid ""
"If you configured the default to refs/for/master as described above, simply"
msgstr ""
"यदि आप ऊपर वर्णित के रूप में रेफ / के लिए / मास्टर के लिए डिफ़ॉल्ट कॉन्फ़िगर"
" किया है, तो बस"
#: ../../../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 वर्तमान में उस शाखा को इंगित करता है जिसे आप आगे बढ़ाना चाहते हैं। "
"आदर्श रूप से, आपको समस्या के लिए एक सुविधा / बग शाखा में काम करना चाहिए। फिर"
" आप कर सकते हैंः"
#: ../../../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 ""
"यदि यह पहली बार है जब आप धक्का देते हैं, तो आपको अपने कॉम संदेश में एक "
"Change-ID डालने के लिए एक Post-commit Hook स्थापित करने के लिए कहा जाएगा। "
"Gerrit को पैचसेट को ट्रैक करने की आवश्यकता है और इसे स्थापित करने तक धक्का "
"को अस्वीकार कर देगा। बस Gerrit द्वारा निर्देशित हुक स्थापित करने के लिए "
"कमांड को कॉपी पेस्ट करें, और अपने कॉम को संशोधित करें।"
#: ../../../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 %p "
"प्राइवेट को पुश करके."
#: ../../../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 ""
"निजी काम पैचसेट के समान है, लेकिन वे डिफ़ॉल्ट रूप से दूसरों के लिए दिखाई "
"नहीं देते हैं और किसी भी जेनकिंस बिल्ड को ट्रिगर नहीं करते हैं। एक ड्राफ्ट "
"को फिर साझा या प्रकाशित किया जा सकता है।"