| # 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 < 20 " |
| "Mb), you will have to accept the transfer:" |
| msgstr "" |
| "इसके विपरीत यदि आप एक फ़ाइल प्राप्त करते हैं (और यदि यह एक तस्वीर नहीं है " |
| "< 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 "" |
| "निजी काम पैचसेट के समान है, लेकिन वे डिफ़ॉल्ट रूप से दूसरों के लिए दिखाई " |
| "नहीं देते हैं और किसी भी जेनकिंस बिल्ड को ट्रिगर नहीं करते हैं। एक ड्राफ्ट " |
| "को फिर साझा या प्रकाशित किया जा सकता है।" |