blob: 15833b77c748a608730f7bf77e55fad74e6d3100 [file] [log] [blame]
# LANGUAGE translation of FILENAME.pot
# Copyright (C) 2018-2024 Savoir-faire Linux Inc. and contributors
# This file is distributed under the same license as the Jami documentation.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# savoirfairelinux <support@savoirfairelinux.com>, 2023
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Jami\n"
"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
"POT-Creation-Date: 2024-04-02 02:52+0000\n"
"PO-Revision-Date: 2022-09-14 17:48+0000\n"
"Last-Translator: savoirfairelinux <support@savoirfairelinux.com>, 2023\n"
"Language-Team: Bengali (https://app.transifex.com/savoirfairelinux/teams/49466/bn/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bn\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` (বেস ৬৪ "
"কোডযুক্ত)"
#: ../../../developer/account-management.md:73
msgid "Generated CA key (for self-signed certificates) `ringCAKey`"
msgstr "জেনারেট করা CA কী (স্ব-স্বাক্ষরিত শংসাপত্রের জন্য) `ringCAKey`"
#: ../../../developer/account-management.md:74
msgid "Revocated devices `ringAccountCRL`"
msgstr "বাতিল করা ডিভাইস `ringAccountCRL`"
#: ../../../developer/account-management.md:75
msgid ""
"The ethereum private key `ethKey` for the device. It's only used when you "
"register your name on `ns.jami.net`. Not mandatory."
msgstr ""
#: ../../../developer/account-management.md:76
msgid "The contacts"
msgstr "যোগাযোগ"
#: ../../../developer/account-management.md:77
msgid "The account settings"
msgstr "অ্যাকাউন্ট সেটিংস"
#: ../../../developer/account-management.md:79
msgid "So let's generate it!"
msgstr "তাহলে আসুন এটি তৈরি করি!"
#: ../../../developer/account-management.md:81
#: ../../../developer/contact-management.md:162
msgid "**TODO**"
msgstr "** টডো **"
#: ../../../developer/account-management.md:84
msgid "Delete the account"
msgstr "অ্যাকাউন্ট মুছে ফেলুন"
#: ../../../developer/account-management.md:86
msgid ""
"Deleting a Jami account is pretty simple. Because the keys are only on the "
"device, if the keys are deleted... the account is deleted! The only thing "
"outside the device is the username, on the nameserver. To remove this info, "
"it depends how the nameserver work. For example, it's not possible with "
"https://ns.jami.net"
msgstr ""
#: ../../../developer/account-management.md:108
msgid ""
"When the account is deleted, the signal `accountsChanged` will be emitted. "
"The client should update its internal structure after this signal with other"
" methods in ConfigurationManager."
msgstr ""
"অ্যাকাউন্টটি মুছে ফেললে `accountsChanged` সংকেত প্রেরণ করা হবে। ক্লায়েন্টকে"
" কনফিগারেশনম্যানেজারে অন্যান্য পদ্ধতির সাহায্যে এই সংকেতের পরে তার "
"অভ্যন্তরীণ কাঠামো আপডেট করতে হবে।"
#: ../../../developer/account-management.md:112
msgid ""
"The main logic to create a new account is located in `src/manager.cpp`, in "
"`Manager::removeAccount`. It removes the accounts files and update the "
"config (`dring.yml`)."
msgstr ""
"নতুন অ্যাকাউন্ট তৈরির মূল লজিক `src/manager.cpp`, `Manager::removeAccount` এ"
" অবস্থিত। এটি অ্যাকাউন্ট ফাইলগুলি মুছে দেয় এবং কনফিগেশন আপডেট করে "
"(`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 ""
"** কনফিগারেশন ম্যানেজার** কনফিগারেশন জিনিস পরিচালনা করতে ব্যবহৃতঃ অ্যাকাউন্ট"
" সেটিংস, ব্যবহারকারী পছন্দ,..."
#: ../../../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 "ভিডিও ম্যানেজার ভিডিও ডিভাইস এবং রেন্ডারার পরিচালনা করতে ব্যবহৃত হয়"
#: ../../../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 "জেএনআই"
#: ../../../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 ""
"Node JS API এর সমস্ত ডকুমেন্টেশন এবং কোড `jami-daemon/bin/nodejs` এ অবস্থিত।"
" এই API কোন পরিচিত প্রকল্পে ব্যবহৃত হয় না এবং সম্ভবত আপ টু ডেট নয়।"
#: ../../../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 "জ্যামি ক্লায়েন্টদের ক্ষেত্রে (প্রস্তাবিত বাস্তবায়ন)"
#: ../../../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 ""
"অ্যালিস এখনও * ডিলিট হিস্ট্রি* বোতাম ব্যবহার করে কথোপকথনের ইতিহাস মুছে ফেলতে"
" পারে।"
#: ../../../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 ""
"** দ্রষ্টব্যঃ এই পাতায় জামি অ্যাকাউন্টের নীতি বিস্তারিতভাবে উল্লেখ করা "
"হয়েছে। SIP অ্যাকাউন্টের জন্য SIP প্রোটোকল ব্যবহার করা হয়।**"
#: ../../../developer/calls.md:6
msgid "Let's do a call in Jami!"
msgstr "আসুন জামিতে একটা ফোন করি!"
#: ../../../developer/calls.md:10
msgid ""
"When creating a call between two peers, Jami mainly uses known protocols "
"such as ICE, SIP or TLS. However, to make it distributed, the process of "
"creating a call is a bit different. To summarize, when someone wants to "
"contact one of its contact, this is what they will do:"
msgstr ""
"দুই সমকক্ষের মধ্যে কল তৈরি করার সময়, জামি মূলত আইসিই, এসআইপি বা টিএলএস এর "
"মতো পরিচিত প্রোটোকল ব্যবহার করে। তবে এটি বিতরণ করার জন্য, কল তৈরির "
"প্রক্রিয়াটি কিছুটা আলাদা। সংক্ষেপে, যখন কেউ তার যোগাযোগকারীদের মধ্যে একজনের"
" সাথে যোগাযোগ করতে চায়, তারা যা করবে তা হ'লঃ"
#: ../../../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 ""
"যোগাযোগটি পাওয়া গেলে, পরিচিত প্রার্থীদের (প্রতিটি নেটওয়ার্ক ইন্টারফেস + "
"রিলে ঠিকানা + প্রতিফলন ঠিকানা (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 ""
"আইসিই মাধ্যমে সকেটটি নিয়ে আলোচনা করুন। আসলে, দুটি আইসিই সেশন আলোচনা করা "
"হয়। একটি (পছন্দিত) টিসিপিতে, অন্যটি ইউডিপিতে (ফ্যালব্যাক হিসাবে) ।"
#: ../../../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` একটি র্যান্ডম নম্বর যা কলটি সনাক্ত করতে ব্যবহৃত হয় এবং "
"ব্লবটিতে দুটি কনকেটেড আইসিই বার্তা রয়েছে (`IceTransport::packIceMsg` in "
"`ice_transport.cpp`) যা সেশনের পাসওয়ার্ড, *ufrag* এবং আইসিই প্রার্থীদের "
"অন্তর্ভুক্ত করে) যেমনঃ"
#: ../../../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 ""
"এবং ডিএইচটি মাধ্যমে ডিভাইসের জন্য একটি এনক্রিপ্ট করা বার্তা "
"`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 ""
"আইসিই সেশন উভয় পক্ষেরই তৈরি হয় যখন তাদের সমস্ত প্রার্থী থাকে (অতএব "
"প্রেরকের জন্য, যখন যোগাযোগের উত্তর প্রাপ্ত হয়) ।"
#: ../../../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() `, যা প্রথমে টিসিপি আলোচনার সমাপ্তির "
"জন্য অপেক্ষা করে (এবং যদি এটি ব্যর্থ হয় তবে ইউডিপি-এর জন্য অপেক্ষা করুন) । "
"আইসিই আলোচনার কোডটি মূলত [pjproject]https://github.com/pjsip/pjproject) "
"দ্বারা পরিচালিত হয় তবে জ্যামির জন্য, আকর্ষণীয় অংশটি `ice_transport.cpp`. "
"উপরন্তু, আমরা *pjproject* এর উপরে কিছু গুরুত্বপূর্ণ প্যাচ / বৈশিষ্ট্য যুক্ত "
"করি যা বর্তমানে আপস্ট্রিম সংযুক্ত হয়নি (উদাহরণস্বরূপ, আইসিইউ TCP এর উপর) । "
"এই প্যাচগুলি `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 ""
"একবার সকেটটি ** আইসট্রান্সপোর্ট ** ইন্সট্যান্ট দ্বারা তৈরি এবং পরিচালিত হয়ে"
" গেলে, এটি একটি ** সিকট্রান্সপোর্ট ** এর সাথে সম্পর্কিত একটি ** "
"সিকট্রান্সপোর্ট ** এ আবৃত হয়। মূল কোডটি `JamiAccount::handlePendingCall() `"
" এবং আবরণটি ` সিকট্রান্সপোর্ট ব্রোকার::getTlsIceTransport` এ সম্পন্ন হয়। "
"অবশেষে, আমাদের সেশনটি `daemon/src/security/tls_session.cpp` এ ** "
"সিকট্রান্সপোর্ট ** দ্বারা পরিচালিত হয় এবং GnuTLS লাইব্রেরি ব্যবহার করে।"
#: ../../../developer/calls.md:60
msgid ""
"So, the control socket will be a TLS (1.3 if your and your peer gnutls "
"version support it) if a TCP socket is negotiated. If a UDP socket is "
"negotiated instead (due to firewall restrictions/problem in the "
"negotiation/etc), the socket will use DTLS (still managed by the same "
"parts)."
msgstr ""
"সুতরাং, একটি টিসিপি সকেট আলোচনার ক্ষেত্রে, কন্ট্রোল সকেটটি একটি টিএলএস (1.3 "
"যদি আপনার এবং আপনার সমকক্ষের গন্যটলস সংস্করণটি এটি সমর্থন করে) হবে। যদি একটি"
" ইউডিপি সকেট আলোচনার পরিবর্তে (নির্বাচনে ফায়ারওয়াল সীমাবদ্ধতা / সমস্যা / "
"ইত্যাদির কারণে) হয় তবে সকেটটি ডিটিএলএস ব্যবহার করবে (এখনও একই অংশ দ্বারা "
"পরিচালিত) ।"
#: ../../../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 প্যাকেটগুলি প্রেরণ করতে ব্যবহৃত হয়, যেমন আমন্ত্রণ, "
"কাস্টম বার্তা (জামি কলের শুরুতে এই সকেটটিতে আপনার প্রোফাইলের ভিকার্ড প্রেরণ "
"করে, বা ক্যামেরার ঘূর্ণন), পাঠ্য বার্তা।"
#: ../../../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 ""
"মিডিয়া সকেটগুলি এসআরটিপি সকেট যেখানে পূর্বে তৈরি টিএলএস সেশনের মাধ্যমে কীটি"
" আলোচনার মাধ্যমে হয়। ** TODO**"
#: ../../../developer/calls.md:74 ../../../developer/drt.rst:140
msgid "Architecture"
msgstr "স্থাপত্য"
#: ../../../developer/calls.md:76
msgid "**TOOD**"
msgstr "** টড **"
#: ../../../developer/calls.md:79
msgid "Multi-stream"
msgstr "মাল্টি স্ট্রিম"
#: ../../../developer/calls.md:81
msgid ""
"Since daemon's version 13.3.0, multi-stream is fully supported. This "
"feature allows users to share multiple videos during a call at the same "
"time. In the following parts, we will describe all related changes."
msgstr ""
"Daemon এর সংস্করণ 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 টি ইউডিপি সকেট ব্যবহার করে। আমরা তিনটি দৃশ্যকল্প বিবেচনা "
"করিঃ"
#: ../../../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 ""
"যদি আমরা ১ঃ১ এ থাকি, এখনকার জন্য, যেহেতু কোন কনফারেন্সের তথ্য নেই, মাল্টি "
"স্ট্রিম সমর্থিত নয়।"
#: ../../../developer/calls.md:99
msgid "Else, 2 new sockets are negotiated for new media."
msgstr "অন্যথায়, নতুন মিডিয়া জন্য 2 নতুন সকেট আলোচনা করা হয়।"
#: ../../../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 ""
"আইসিই সেশন প্রতি আরও বেশি সকেট তৈরি করতে পারার জন্য, `PJ_ICE_COMP_BITS` `5` "
"(যা `2^5` এর সাথে সম্পর্কিত, তাই 32 স্ট্রিম) এ পরিবর্তন করা হয়েছিল।"
#: ../../../developer/calls.md:105
msgid "Deprecate switchInput, support requestMediaChange"
msgstr "ডিপ্রেকেট সুইচ ইনপুট, সাপোর্ট অনুরোধমিডিয়াচ্যানেজ"
#: ../../../developer/calls.md:107
msgid ""
"In the daemon, the old API `switchInput` is now **DEPRECATED**; same for "
"`switchSecondaryInput`:"
msgstr ""
"ডেমোনের মধ্যে, পুরানো এপিআই `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 "এক্সএমএল আপডেট করা হয়েছে যাতে অনুসন্ধান করা স্ট্রিম যোগ করা হয়ঃ"
#: ../../../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 স্ট্যাকের সাথে সামঞ্জস্য"
" বজায় রাখতে হবে, adn একটি বিতরণিত পরিবেশে কাজ করতে হবে। এই বিতরণিত পরিবেশে "
"কিছু চ্যালেঞ্জও রয়েছে, যেমন সম্ভাব্য জাতির শর্ত (যদি একাধিক দল একই সাথে কল "
"শুরু করতে পারে) । অবশেষে, যেহেতু 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:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#: ../../../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 ""
"**Swarm এর প্রোফাইল** একটি 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` একটি Swarm এর জন্য ডিফল্ট URI, সেট করা হয় *Swarm এর প্রোফাইল*"
#: ../../../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 ""
"দ্রষ্টব্যঃ এই দুটি ইউআরআই ক্লায়েন্টকে একটি * রেন্ডেজউসে যোগদানের জন্য কল "
"করতে বা একটি ঘোড়ায় কল শুরু করতে দেয়, যার ফলে পরবর্তী বিভাগে বর্ণিত "
"যুক্তিটি ঘটে।"
#: ../../../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 "অন্যথায়, নতুন একটি রেন্ডেভো হোস্ট করুন এবং এতে যোগ দিন।"
#: ../../../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 "! [আর্কিটঃ একটি স্টাফ মধ্যে কল স্থাপন]"
#: ../../../developer/calls-in-swarm.md:32
msgid "Diagram: Placing a call in a Swarm"
msgstr "চিত্রঃ একটি স্যামের মধ্যে কল স্থাপন"
#: ../../../developer/calls-in-swarm.md:34
msgid "**TODO, when to commit and who is commiting**"
msgstr "**টডো, কখন প্রতিশ্রুতিবদ্ধ হওয়া উচিত এবং কে প্রতিশ্রুতিবদ্ধ হচ্ছে**"
#: ../../../developer/calls-in-swarm.md:36
msgid "Incoming calls for swarm"
msgstr "অভিশপ্ত ডাক"
#: ../../../developer/calls-in-swarm.md:38
msgid ""
"When receiving a new incoming call, the URI MUST be parsed. If the incoming "
"call is for a *Rendezvous* which is currently hosted by the device and the "
"caller is authorized to join, the call MUST be answered and added to the "
"current *Rendezvous*"
msgstr ""
"নতুন ইনকামিং কল পাওয়ার সময়, ইউআরআইটি বিশ্লেষণ করা আবশ্যক। যদি ইনকামিং কলটি"
" একটি * রেন্ডেভোস * এর জন্য হয় যা বর্তমানে ডিভাইসে হোস্ট করা হয় এবং কলারটি"
" যোগদানের জন্য অনুমোদিত হয়, কলটি উত্তর দেওয়া আবশ্যক এবং বর্তমান * "
"রেন্ডেভোসে যুক্ত করা আবশ্যক"
#: ../../../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 "** টডো? আপডেটের অনুমতি, হোস্টের আলোচনা**"
#: ../../../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 "সিআইপি ব্রিজ?"
#: ../../../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 "প্রথমটি জামির বর্তমান পরামিতি দিয়ে কোড করা হয়েছে"
#: ../../../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 Mbit/s (মধ্যবর্তী মান)"
#: ../../../developer/choosing-crf-value-for-encoder.md:23
msgid "6 Mbit/s (High value)"
msgstr "6 Mbit/s (উচ্চ মান)"
#: ../../../developer/choosing-crf-value-for-encoder.md:25
msgid ""
"The graphs show the evolution of the bitrate with the file being tested "
"(resolution and specific set bitrate)."
msgstr ""
"গ্রাফগুলি ফাইলটি পরীক্ষা করার সাথে সাথে বিটরেটের বিবর্তন দেখায় (রেজোলিউশন "
"এবং নির্দিষ্ট সেট বিটরেট) ।"
#: ../../../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 Mbps / CRF17![চিত্র](ছবি/চয়ন-crf-1080p-6mbps-crf17.png) 1080p / 6"
" Mbit/s / CRF23![চিত্র](ছবি/চয়ন-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 "
"Mbit/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 "
"Mbit/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 ""
"এই নথিতে আমরা কনফারেন্স পরিচালনার জন্য যে পরিবর্তনগুলি করব তা বর্ণনা করার "
"লক্ষ্য রয়েছে (অডিও / ভিডিও) লক্ষ্যটি হ'ল বর্তমান বাস্তবায়ন উন্নত করা যা "
"কেবলমাত্র এসআইপি কলগুলিকে একত্রিত করে এবং একটি গ্রিড ভিউ সরবরাহ করে, যেখানে "
"অংশগ্রহণকারীদের তালিকাভুক্ত করা হয়, স্বতন্ত্রভাবে নিঃশব্দ করা যায়, বা "
"ভিডিও বিন্যাস পরিবর্তন করা যায় (কেবলমাত্র একজন অংশগ্রহণকারী দেখানোর জন্য)"
#: ../../../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 "uri = অ্যাকাউন্টের uri"
#: ../../../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 "active = যদি অংশগ্রহণকারী সক্রিয় হয়"
#: ../../../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 = যদি স্ট্রিমটিতে ভয়েস অ্যাক্টিভিটি থাকে"
#: ../../../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 ""
"`কনফারেন্স ` অবজেক্ট (যা শুধুমাত্র যদি আমরা কলগুলি মিশ্রিত করি, এর অর্থ আমরা"
" মাস্টার) প্রতিটি `কল ` অবজেক্টের লেআউট ইনফোসের ভিত্তিতে পুরো সম্মেলনের তথ্য"
" পরিচালনা করে। 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` অবজেক্টের এখন একটি লেআউট ইনফো রয়েছে এবং যদি আপডেট "
"করা হয়, তাহলে `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 টাইপ সহ "
"একটি বার্তা হিসাবে পাঠায়ঃ `প্রয়োগ/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 ""
"একটি লেআউট পরিবর্তন করতে, মডারেটর একটি দরকারী লোড পাঠাতে পারেন "
"\"অ্যাপ্লিকেশন / কনফোর্ডার + 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 ""
"`ভয়েসঅ্যাক্টিভিটি ` মিডিয়া স্ট্রিমের ভয়েসঅ্যাক্টিভিটির অবস্থা নির্দেশ "
"করতে (শুধুমাত্র অডিওর জন্য প্রাসঙ্গিক)"
#: ../../../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 "সুতরাং, `অ্যাপ্লিকেশন/কনফোর্ডার+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 (ICE এর মাধ্যমে) বব এর ডিভাইসে সংযোগ "
"স্থাপন করবে এবং একটি TLS Socket সেট আপ করবে। তারপরে, এটি একটি চ্যানেলের জন্য"
" জিজ্ঞাসা করবে এবং যখন চ্যানেলটি প্রস্তুত হবে, কলব্যাকের মাধ্যমে অ্যালিসকে "
"অবহিত করবে। দ্বিতীয় ফাইলের জন্য, এটি প্রথম সকেটটি ব্যবহার করবে এবং কেবল "
"একটি নতুন চ্যানেল খুলবে (শুধুমাত্র 2 টিএলএস প্যাকেট প্রয়োজন, তাই এটি দ্রুত)"
#: ../../../developer/connection-manager.md:26
msgid "DHT side"
msgstr "DHT পার্শ্ব"
#: ../../../developer/connection-manager.md:28
msgid ""
"It's the same as {doc}`calls`, see **Exchange ICE candidates**, **ICE "
"negotiation**, **Encrypt the control socket** but only in TCP."
msgstr ""
"এটি {doc}`call`, দেখুন **Exchange ICE প্রার্থী**, **ICE negotiation**, "
"**Encrypt control socket** কিন্তু শুধুমাত্র TCP তে।"
#: ../../../developer/connection-manager.md:30
msgid ""
"However, when a side receives a new ICE request, the callback set by ` void "
"onICERequest(onICERequestCallback&& cb);` is triggered."
msgstr ""
"তবে, যখন কোনও পক্ষ একটি নতুন আইসিই অনুরোধ পায়, তখন ` void "
"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 ""
"একটি চ্যানেল একটি আইডি (একক) এবং একটি 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 ""
"যখন প্রস্তুত হয়, ConnectionManager মনে করে যে 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 "শরীরের দৈর্ঘ্য সংরক্ষণ করতে ১৬ বিট ব্যবহার করা হয়।"
#: ../../../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 "তাই সব প্যাকেটে ৩২ বিট লেন হেডার থাকে।"
#: ../../../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`) । পিয়ারটি ChannelRequest এ ̀ void দিয়ে দেওয়া "
"কলব্যাকটি কলব্যাক করবে এবং অনুরোধটি প্রত্যাখ্যান করবে বা গ্রহণ করবে। যদি "
"গৃহীত হয় তবে পিয়ার একই ডেটা সহ একটি ChannelRequest দিয়ে উত্তর দেবে (এবং "
"̀`isAnswer = true`) এবং তারপরে উভয় পিয়ার কলব্যাক সক্রিয় করা হবে যাতে "
"জানানো যায় যে ChannelSock ব্যবহারযোগ্য।"
#: ../../../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 "সংযোগের কাঠামোManager"
#: ../../../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 ""
"একটি জ্যামি অ্যাকাউন্ট কানেকশন ম্যানেজার মালিক এবং চ্যানেলসকেট অবজেক্টগুলিতে"
" অ্যাক্সেস আছে (মাল্টিপ্লেক্সডসকেট-এর সাথে মালিকানাধীন শেয়ার্ড_পিটিআর।"
#: ../../../developer/connection-manager.md:57
msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
msgstr "ConnectionManager এর মালিক MultiplexedSockets এবং ICE অবজেক্ট"
#: ../../../developer/connection-manager.md:58
msgid ""
"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
msgstr "MultiplexedSockets TLS পরিবহন এবং ChannelSocket বস্তুর মালিক"
#: ../../../developer/connection-manager.md:59
msgid "ChannelSocket owns the data buffers"
msgstr "ChannelSocket ডেটা বাফার মালিক"
#: ../../../developer/connection-manager.md:61
msgid "Roles"
msgstr "ভূমিকা"
#: ../../../developer/connection-manager.md:63
msgid "ConnectionManager is used to manage connections to peers."
msgstr "ConnectionManager ব্যবহার করা হয় সমকক্ষদের সাথে সংযোগ পরিচালনা করতে।"
#: ../../../developer/connection-manager.md:64
msgid ""
"MultiplexedSockets are used to send data over the TLSSocket, read the "
"incoming packets and manage channels."
msgstr ""
"মাল্টিপ্লেক্সডসকেটগুলি টিএলএসএসসকেট জুড়ে ডেটা প্রেরণ, প্রাপ্ত প্যাকেটগুলি "
"পড়া এবং চ্যানেল পরিচালনা করতে ব্যবহৃত হয়।"
#: ../../../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 ""
"উপস্থিতিটি ডিএইচটি-তে ঘোষণা করা বেশ সহজ। আসলে, এটি কেবলমাত্র একটি মান যা "
"ডিভাইস হ্যাশ (পূর্বেকার বিভাগটি দেখুন, {doc}`অ্যাকাউন্ট-ম্যানেজমেন্ট`) এর "
"উপর হ্যাশটি কীটির আঙ্গুলের ছাপের সাথে সম্পর্কিত। সুতরাং, যদি আমাদের "
"ডিএইচটি-তে `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` ডিভাইস "
"`62fbdff0ce86f368c7d3c2682539e5ba9e06404f` থাকে, তাহলে নিম্নলিখিত নির্ধারিত "
"মানটি ডিএইচটি-তে প্রেরণ করা হবেঃ"
#: ../../../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);`, একটি স্থায়ী "
"put হিসাবে স্থাপন করা যেতে পারে। যদি ডিভাইসটি ঘোষণা করা হয়, ডিভাইসটি "
"উপস্থিত থাকে। এখন পর্যন্ত, DHT এ কোনও মান মুছে ফেলার বা সম্পাদনা করার কোনও "
"উপায় নেই (এটি আসবে যখন OpenDHT ইসিসি সমর্থন করবে) । সুতরাং, উপস্থিতি সবসময়"
" এখন পর্যন্ত বিলম্ব থাকে (মধ্য বিলম্বঃ expire-time/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` এবং এই হ্যাশটিতে ` ডিভাইস "
"বিজ্ঞপ্তি ` পুনরুদ্ধার করতে হবে। রিং ডেমোনের সম্পর্কিত কোডটি `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(\"inbox:\" + deviceId) `"
#: ../../../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 ""
"` কনফিগারেশনম্যানেজার ` এ বিশ্বাস অনুরোধ এবং যোগাযোগ পরিচালনার জন্য ব্যবহৃত "
"সমস্ত পদ্ধতি এবং সংকেত রয়েছে যেমনঃ"
#: ../../../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 ""
"আপনি কি ডিবাগ করতে চান তার উপর নির্ভর করে, বিকাশকারী দৃষ্টিকোণ থেকে জামিকে "
"ডিবাগ করার বিভিন্ন উপায় রয়েছে।"
#: ../../../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` ওপেনড্যাচট থেকে লগ সক্ষম করার জন্য।"
#: ../../../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 --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 "লট্টং"
#: ../../../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 "TURN 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 ""
"আইপি থেকে আইপি ঠিক করুন -> যোগাযোগ করুন #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 জন্য মিডিয়া RTP cipher আপডেট / সম্ভবত সহজ"
#: ../../../developer/feature-requests.md:23
msgid "Support ECC (instead RSA) for Jami accounts / hard but short"
msgstr ""
"জ্যামি অ্যাকাউন্টের জন্য ECC (RSA এর পরিবর্তে) সমর্থন / কঠিন কিন্তু "
"সংক্ষিপ্ত"
#: ../../../developer/feature-requests.md:24
msgid "Remove usages of SHA1 (ids + git) / hard"
msgstr "SHA1 (id + 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 এর উপর নির্ভর করা এড়াতে "
"(ম্যাকোজে উপলব্ধ নয়) (উদাহরণস্বরূপ https://github.com/jnodev/QMLemoji)"
#: ../../../developer/feature-requests.md:39
msgid ""
"Categorized conversations (like favorites, groups, etc) (to discuss with "
"#Jami)"
msgstr ""
"শ্রেণীবদ্ধ কথোপকথন (যেমন প্রিয়, গ্রুপ ইত্যাদি) (#Jami এর সাথে আলোচনা করার "
"জন্য)"
#: ../../../developer/feature-requests.md:40
msgid "jami-web:"
msgstr "জামাই-ওয়েব:"
#: ../../../developer/feature-requests.md:41
msgid ""
"Design architecture to support calls between jami-web and desktop versions "
"-> Contact #Jami (Adrien, Sébastien) / hard"
msgstr ""
"জামি-ওয়েব এবং ডেস্কটপ সংস্করণের মধ্যে কল সমর্থন করার জন্য ডিজাইন "
"আর্কিটেকচার -> যোগাযোগ #জামি (এড্রিয়েন, সেবাস্টিয়ান) / হার্ড"
#: ../../../developer/feature-requests.md:44
msgid ""
"Help for the Roadmap 2023: "
"https://git.jami.net/groups/savoirfairelinux/-/epics/48"
msgstr ""
"২০২৩ সালের রোডম্যাপের জন্য সহায়তাঃ "
"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 ""
"ইয়োক্টোতে জামি উন্নত করুন (কিছু কোডেক সমস্যা/আই.এম.এক্স. ৬-এ বিলম্ব) -> "
"যোগাযোগ করুন রেনস"
#: ../../../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 "{client-gnome-issue}`Spell checking support <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}` উইন্ডোজের জন্য পোর্টেবল সংস্করণ <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 "{ক্লায়েন্ট-জেনোম-ইস্যু}`FreeBSD support <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}`ভোকোডার বিকল্প <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 "রিমোট কন্ট্রোল"
#: ../../../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}`Locked messages (feature that can be enabled to hide "
"messages until they are clicked on) <1146>`"
#: ../../../developer/feature-requests.md:121
msgid ""
"{client-qt-issue}`selecting one or multiple messages and delete them just "
"for the user doing so <1188>`"
msgstr ""
#: ../../../developer/feature-requests.md:122
msgid ""
"{client-qt-issue}`Drag and drop files from chatview and send to other "
"contacts <485>`"
msgstr ""
#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:397
#: ../../../developer/swarm.md:667
msgid "File transfer"
msgstr "ফাইল স্থানান্তর"
#: ../../../developer/file-transfer.md:4
msgid "**THIS PAGE IS DEPRECATED: READ {ref}`developer/swarm:File transfer`**"
msgstr "**এই পৃষ্ঠাটি বিপরীতঃ পড়ুন {ref}`developer/swarm:file transfer`**"
#: ../../../developer/file-transfer.md:7
#: ../../../developer/location-sharing.md:4
msgid "How to use it?"
msgstr "কিভাবে ব্যবহার করবেন?"
#: ../../../developer/file-transfer.md:10
#: ../../../developer/release-process.md:111
msgid "Gnome"
msgstr "গনোম"
#: ../../../developer/file-transfer.md:12
msgid ""
"For sending a file on gnome, in a conversation you need to click to the send"
" file icon at the bottom right of the conversation:"
msgstr ""
"গনমে ফাইল পাঠানোর জন্য, কথোপকথনে আপনাকে কথোপকথনের নীচের ডানদিকে ফাইল পাঠান "
"আইকনে ক্লিক করতে হবেঃ"
#: ../../../developer/file-transfer.md:15
msgid ""
"![Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
msgstr ""
"! [Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)"
#: ../../../developer/file-transfer.md:15
msgid "Gnome_send_file"
msgstr "Gnome_send_file"
#: ../../../developer/file-transfer.md:17
msgid ""
"Then you will see your image as soon as the transfer is finished (and show "
"images is activated)"
msgstr ""
"তারপর আপনি আপনার ছবি দেখতে পাবেন যত তাড়াতাড়ি স্থানান্তর শেষ হয় (এবং "
"প্রদর্শন চিত্র সক্রিয় করা হয়)"
#: ../../../developer/file-transfer.md:20
msgid ""
"![Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
msgstr ""
"! [Gnome_image](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)"
#: ../../../developer/file-transfer.md:20
msgid "Gnome_image"
msgstr "Gnome_image"
#: ../../../developer/file-transfer.md:22
msgid ""
"On the contrary if you receive a file (and if it's not a picture &lt; 20 "
"Mb), you will have to accept the transfer:"
msgstr ""
"বিপরীতে যদি আপনি একটি ফাইল পান (এবং যদি এটি একটি ছবি না হয় &lt; 20 Mb), "
"আপনাকে স্থানান্তরটি গ্রহণ করতে হবেঃ"
#: ../../../developer/file-transfer.md:25
msgid ""
"![Gnome_accept](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)"
msgstr "[Gnome_accept]"
#: ../../../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 ""
"![অ্যান্ড্রয়েড_ফাইল_বটনে](https://git.jami.net/savoirfairelinux/jami-"
"project/uploads/d68472b2c7bfcc616b0c674c9c7a8fed/অ্যান্ড্রয়েড_ফাইল_বটনে.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 "! [অ্যান্ড্রয়েড_অনুগ্রহ_পিয়ার]"
#: ../../../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-diagram.png)"
#: ../../../developer/file-transfer.md:69
msgid ""
"2\\. The method `DhtPeerConnector: requestConnection()` is triggered and "
"creates a connection between all connected devices of the peer (found on the"
" DHT). `DhtPeerConnector` is used to manage the main event loop which manage"
" connections. When a device is found, the *event loop* will create a "
"`ClientConnector` (which manage the connection for one device) and launch "
"the `process()` method."
msgstr ""
"2\\. `DhtPeerConnector: requestConnection() ` পদ্ধতিটি সক্রিয় করা হয় এবং "
"পিয়ার (ডিএইচটি-তে পাওয়া) এর সমস্ত সংযুক্ত ডিভাইসের মধ্যে সংযোগ তৈরি করে। "
"`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\\. এই পদ্ধতিটি আইসিই পরিবহনকে সূচনা করার জন্য ব্যবহৃত হয় এবং একটি "
"*পিআরসিএনএমএসজি* (যা 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 লিঙ্ক (নির্দেশকভাবে আইসিই মাধ্যমে, বা "
"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() ` এর "
"`DhtPeerConnector::eventLoop (পিয়ার সংযোগকারীঃeventLoop) ` এর একটি বার্তার "
"মাধ্যমে সংযোগটি বন্ধ করা হবে এবং সম্পদগুলি মুক্তি পাবে।"
#: ../../../developer/file-transfer.md:81
msgid ""
"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
msgstr ""
"! [TLSsocketEndpoint](ছবি/ফাইল-পরিবর্তন-tlssocketendpoint-diagram.png)"
#: ../../../developer/file-transfer.md:81
msgid "TLSsocketEndpoint"
msgstr "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() ` এ ইভেন্টলুপের "
"মাধ্যমে দেওয়া হয়।"
#: ../../../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` টিউআরএন সার্ভারে সংযোগ স্থাপন করার"
" চেষ্টা করবে (যদি সংযুক্ত না হয়) এবং আইসিই পরিবহন শুরু করবে। এই পদ্ধতিটি "
"টিউআরএন সার্ভারে 2 টি নিয়ন্ত্রণ সংযোগ খুলবে (একটি আইপিভি 4 পিয়ার অনুমোদনের"
" জন্য, অন্যটি আইপিভি 6 পিয়ারগুলির জন্য **RFC 6156** এর কারণে) যদি এটি "
"ইতিমধ্যে খোলা না থাকে এবং পিয়ার পাবলিক ঠিকানাগুলি সংযোগ করার অনুমতি দেয়। "
"তারপরে, যদি প্রাপ্ত এসডিপি আইসিই প্রার্থী না থাকে তবে টিউআরএন ব্যবহার করে "
"এবং পিয়ারটির জন্য অপেক্ষা করার জন্য এসডিপি উত্তরটি তৈরি করবে। যদি এসডিপি "
"আইসিই প্রার্থী থাকে তবে পদ্ধতিটি লিঙ্কটি আলোচনার চেষ্টা করবে (বা টিউআরএন-তে "
"পিছনে পড়ে) এবং তারপরে এসডিপি (আইসিই প্রার্থী দিয়ে বা না) উত্তর দেবে।"
#: ../../../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 ""
"একবার লিঙ্কগুলি প্রস্তুত হয়ে গেলে, প্রেরকের মতো, একটি টিএলএস লিঙ্কটি আলোচনা"
" করা হয় এবং `PeerConnection ` এ দেওয়া হয়, যা `IncomingFileTransfer ` এ "
"প্রবেশের জন্য দেওয়া হয়। ফাইলের হেডারগুলি আসবে এবং ক্লায়েন্ট এখন "
"স্থানান্তরটি গ্রহণ বা বাতিল করতে সক্ষম হবে।"
#: ../../../developer/file-transfer.md:93
msgid "Re-ask for a previous file transfer"
msgstr "পূর্ববর্তী ফাইল স্থানান্তর পুনরায় অনুরোধ"
#: ../../../developer/file-transfer.md:95
msgid ""
"As specified in {ref}`developer/swarm:Other mime types`, the data-transfer "
"interactions are now synced and stored into conversations. So, a device can "
"easily detects if a file was downloaded or not. If not, it can asks all "
"members in the conversation to transmits the file again."
msgstr ""
"{ref}`developer/swarm:Other mime types`-এ নির্দিষ্ট করা হয়েছে, "
"ডেটা-ট্রান্সফার মিথস্ক্রিয়াগুলি এখন সিঙ্ক করা হয় এবং কথোপকথনে সংরক্ষণ করা "
"হয়। সুতরাং, একটি ডিভাইস সহজেই সনাক্ত করতে পারে যে কোনও ফাইল ডাউনলোড করা "
"হয়েছে কিনা। যদি না হয় তবে এটি কথোপকথনের সমস্ত সদস্যকে ফাইলটি আবার প্রেরণ "
"করতে বলতে পারে।"
#: ../../../developer/file-transfer.md:97
msgid ""
"To do this, the device will send a json with the mime-type: "
"`application/data-transfer-request+json` containing `conversation` (the "
"conversation's id), `interaction` (related interaction), `deviceId` the "
"device receiving the file."
msgstr ""
"এই কাজের জন্য, ডিভাইসটি একটি json পাঠাবেঃ "
"`অ্যাপ্লিকেশন/ডেটা-ট্রান্সফার-প্রার্থনা+json` যা `কনভার্শন` (কনভার্শন আইডি),"
" `ইন্টারেকশন` (সম্পর্কিত মিথস্ক্রিয়া), `ডিভাইসId` ফাইলটি গ্রহণকারী ডিভাইস।"
#: ../../../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` আইসিই সেশনের "
"পাসওয়ার্ড। `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 "PJSIP এর সাথে সম্পর্কিত প্যাচ।"
#: ../../../developer/file-transfer.md:127
msgid "3 patches will be included into the PJSIP project:"
msgstr "পিজেএসআইপি প্রকল্পে তিনটি প্যাচ অন্তর্ভুক্ত করা হবেঃ"
#: ../../../developer/file-transfer.md:129
msgid ""
"RFC 6062, used to perform TURN over TCP (merged upstream: pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
msgstr ""
"RFC 6062, TCP-এর উপর TURN সম্পাদন করতে ব্যবহৃত (উপরে প্রবাহিতঃ pjproject - "
"fa6616c43c7e19797084f4e02a67d1fb6fd99473)"
#: ../../../developer/file-transfer.md:130
msgid "RFC 6544, used to perform ICE over TCP"
msgstr "RFC 6544, TCP-এর উপর ICE সম্পাদন করতে ব্যবহৃত"
#: ../../../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 ""
"প্রথম পদ্ধতিটি ছিল ডিএইচটি মাধ্যমে সমস্ত ডিভাইসে একটি অনুরোধ প্রেরণ করা এবং "
"প্রথম ডিভাইসগুলি যা উত্তর দেয় ফাইলটি স্থানান্তরিত করতে দেয়। এটি আপনার "
"যোগাযোগের জন্য খারাপ কারণ তারা জানে না কোন ডিভাইসটি গ্রহণ করবে স্থানান্তরটি "
"পাবে।"
#: ../../../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* এর সাথে লিঙ্কযুক্ত যা এক ডিভাইস দিয়ে "
"স্থানান্তরের অবস্থাকে উপস্থাপন করে। ক্লায়েন্টদের পরে একটি সাব-ট্রান্সফার "
"পরিবর্তে আশাবাদী দেখানোর ক্ষমতা থাকবে (টডো তালিকা দেখুন) ।"
#: ../../../developer/file-transfer.md:180
msgid "Using another TURN server"
msgstr "অন্য একটি TURN সার্ভার ব্যবহার করে"
#: ../../../developer/file-transfer.md:182
msgid ""
"Actually the default TURN server is *turn.ring.cx*. But you can host your "
"own TURN server. For example by running a "
"[coturn](https://github.com/coturn/coturn) server."
msgstr ""
"আসলে ডিফল্ট TURN সার্ভারটি *turn.ring.cx*। কিন্তু আপনি আপনার নিজের TURN "
"সার্ভার হোস্ট করতে পারেন। উদাহরণস্বরূপ একটি [coturn] "
"((https://github.com/coturn/coturn) সার্ভার চালিয়ে) ।"
#: ../../../developer/file-transfer.md:186
msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
msgstr "`sudo turnserver -a -v -n -u ব্যবহারকারী: পাসওয়ার্ড -r \"realm\""
#: ../../../developer/file-transfer.md:188
msgid ""
"Then, you can configure the TURN server in the advanced settings of RING."
msgstr ""
"তারপর, আপনি RING এর উন্নত সেটিংস মধ্যে TURN সার্ভার কনফিগার করতে পারেন."
#: ../../../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 "SIP"
#: ../../../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 Re-INVITE: <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 "এসডিপি এবং আইপিভি৬ঃ <http://tools.ietf.org/html/rfc6157>"
#: ../../../developer/important-rfcs.md:28
msgid "SDP for SRTP: <http://tools.ietf.org/html/rfc4568>"
msgstr "এসআরটিপি-র জন্য এসডিপিঃ <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 "AES-192 এবং AES-256: <https://tools.ietf.org/html/rfc6188>"
#: ../../../developer/important-rfcs.md:48
msgid "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
msgstr "AES-GCM: <https://tools.ietf.org/html/rfc7714>"
#: ../../../developer/improving-quality-of-jami.md:1
msgid "Improving the quality of Jami"
msgstr "জামির গুণমান উন্নত করা"
#: ../../../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 ""
"বহু স্তরের নির্ভরতার উপর জাতির শর্তাবলী কারণে জামি প্রকল্পে ইউনিট পরীক্ষা "
"করা আরও কঠিন।"
#: ../../../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 ""
"প্রায় ৩০টি ইউনিট-টেস্ট এবং ২৬ শতাংশ কভারেজ রয়েছে। ব্যবহারকারীকে দ্রুত নতুন"
" কার্যকারিতা দেওয়ার জন্য জ্যামির উচ্চ চাহিদা থাকা কারণে, এগুলি বিকাশকারী বা"
" একটি গুণগত মান বিভাগ দ্বারা বজায় রাখা হয় না।"
#: ../../../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 দিয়ে "
"ইউনিট-টেস্ট ফোল্ডারেঃ gdb ut_media_encoder"
#: ../../../developer/improving-quality-of-jami.md:16
msgid ""
"The environment needs to be set with ‘--disable-shared’ during the "
"’./configure’ command"
msgstr ""
"./configure কমান্ডের সময় পরিবেশকে -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 ""
"আপনি ডেমোন Makefile.am এ ফ্রেমওয়ার্ক টেস্টগুলি খুঁজে পেতে পারেন এবং এটি "
"make ইন্টিগ্রেশন এর সাথে মধ্যাহ্নভোজ করতে পারেন। এটি সরঞ্জাম / dringctrl "
"ফোল্ডারে 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 ""
"সামগ্রিকভাবে জ্যামির কার্যকারিতা পরীক্ষা করার জন্য ভবিষ্যতে অন্যান্য কাঠামো "
"পরীক্ষা করা প্রয়োজন।"
#: ../../../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 ""
"প্রতিটি কমিট বিল্ড মেশিনের ডোকারে ইন্টিগ্রেশন টেস্টের মধ্য দিয়ে যায়। "
"বিস্তারিত তথ্য আপনি জেনিস.জেমি.নেট এ খুঁজে পেতে পারেন।"
#: ../../../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 ""
"সোনারকুবে জেঙ্কিন্সকে জামি তৈরি করতে এবং লিন্টিং যাচাই করতে দেয়। আপনি "
"ফিল্টার এবং ফলাফলগুলি দেখতে পারেনঃ সোনার-জামি.সভারফায়ারেলিনক্স.নেট সোনার "
"প্রিপ্রসেসর লিন্টিং কম্পাইলারের মতো ক্ল্যাং-টাইড ব্যবহার করে, আপনি ডেমোন "
"ফোল্ডারে.ক্ল্যাং-টাইড ফাইলটিতে ক্ল্যাং-টাইড ফিল্টারগুলি খুঁজে পেতে পারেন।"
#: ../../../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 "আপনি ডকুমেন্টেশন সব docs.jami.net এ খুঁজে পেতে পারেন"
#: ../../../developer/improving-quality-of-jami.md:40
msgid "Issues are made by developers or users on git.jami.net"
msgstr "git.jami.net-এ ডেভেলপার বা ব্যবহারকারীরা সমস্যা তৈরি করেন"
#: ../../../developer/improving-quality-of-jami.md:42
msgid "Monitoring"
msgstr "পর্যবেক্ষণ"
#: ../../../developer/improving-quality-of-jami.md:44
msgid ""
"A script is called every 30 minutes on a virtual machine jami-"
"monitorpeervm-01. You can find it on sflvault service s#7209 and is calling "
"an other client viratual jami- monitorpeer-02 (service s#7224). A series of "
"calls is being made and it returns the failure rate. You can find all the "
"details at https://wiki.savoirfairelinux.com/wiki/Jami-"
"monitorpeervm-01.mtl.sfl."
msgstr ""
"একটি স্ক্রিপ্ট একটি ভার্চুয়াল মেশিনে প্রতি 30 মিনিটে কল করা হয় jami-"
"monitorpeervm-01. আপনি এটি sflvault পরিষেবা s#7209 এ খুঁজে পেতে পারেন এবং "
"অন্য ক্লায়েন্টকে ভাইরাল jami-monitorpeer-02 (সার্ভিস s#7224) কল করছেন। একটি"
" সিরিজ কল করা হচ্ছে এবং এটি ব্যর্থতার হার ফেরত দেয়। আপনি "
"https://wiki.savoirfairelinux.com/wiki/Jami-monitorpeervm-01.mtl.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 "প্রয়োজনে ডেভেলপারদের কাছে পাঠানোর আগে তাদের পর্যালোচনা করে QA dpt।"
#: ../../../developer/improving-quality-of-jami.md:59
msgid ""
"If a release contains a network commit that has been merged, the QA dept. "
"Should be able to automate the different connectivity tests (as descibed "
"below in Calls configurations)"
msgstr ""
"যদি একটি রিলিজে একটি নেটওয়ার্ক কমিট থাকে যা সংযুক্ত করা হয়েছে, তাহলে QA "
"ডিপার্টমেন্টকে বিভিন্ন সংযোগ পরীক্ষা (যেমন কল কনফিগারেশনে নীচে বর্ণিত) "
"স্বয়ংক্রিয় করতে সক্ষম হওয়া উচিত"
#: ../../../developer/improving-quality-of-jami.md:61
msgid "Calls configurations."
msgstr "কনফিগারেশন কল."
#: ../../../developer/improving-quality-of-jami.md:63
msgid "This is the list of network configurations that need to be tested:"
msgstr "এই হল নেটওয়ার্ক কনফিগারেশনগুলির তালিকা যা পরীক্ষা করা দরকারঃ"
#: ../../../developer/improving-quality-of-jami.md:65
msgid ""
"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both "
"sides."
msgstr ""
"(IPv4 IPv6) + (TURN !TURN) + (STUN !STUN) + (UPnP ! UPnP) উভয় পক্ষের জন্য।"
#: ../../../developer/improving-quality-of-jami.md:67
msgid ""
"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only "
"local."
msgstr ""
"যদি উভয় পক্ষই শুধুমাত্র IPv4 ছাড়া TURN/STUN/UPnP হয়, তাহলে কলটি শুধুমাত্র"
" স্থানীয় হওয়া উচিত।"
#: ../../../developer/improving-quality-of-jami.md:69
msgid "Special note: FDroid"
msgstr "বিশেষ দ্রষ্টব্যঃ FDroid"
#: ../../../developer/improving-quality-of-jami.md:71
msgid ""
"The script to generate MR is in the client-android repo "
"(fdroidMergeRequest.sh)"
msgstr ""
"এমআর তৈরির স্ক্রিপ্টটি ক্লায়েন্ট-অ্যান্ড্রয়েড রিপোতে "
"(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 ""
"জামি ডেভেলপার ম্যানুয়াল জামি ডেভেলপার এবং অবদানকারীদের জন্য একটি রেফারেন্স,"
" জামি হ্যাকিং এবং বিকাশের বিভিন্ন দিকগুলি নথিভুক্ত করে, জামি কীভাবে ডিজাইন "
"করা হয়েছে এবং এর বিভিন্ন অংশ কীভাবে একসাথে কাজ করে সে সম্পর্কে গভীর "
"ব্যাখ্যা সহ।"
#: ../../../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/Push-"
"notifications-support)"
#: ../../../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), p2p যোগাযোগের জন্য ব্যবহৃত হয়। আপনি এই "
"লাইব্রেরির সাথে অন্য কোনও সি ++ লাইব্রেরির মতো, বা পাইথন আবরণ ব্যবহার করে, "
"বা এর [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 ""
"ডেমোন, যা মূল অংশ। এটি এমন অংশ যা জামি জন্য সমস্ত যুক্তি করে এবং ওপেনডএইচটি,"
" পিজিসিপ, এফএফএমপিইজি এবং অন্যান্য লাইব্রেরির সাথে ইন্টারঅ্যাক্ট করে এবং "
"পুরো প্রোটোকলটি বাস্তবায়ন করে। আপনি যদি নতুন জামি ক্লায়েন্ট তৈরি করতে চান "
"তবে আমরা এটিকে এই ডেমোনের উপরে বাস্তবায়ন করার পরামর্শ দিই, এর অনেকগুলি "
"এপিআই (আরইএসটি, ডিবিস, লিব্রপ, বা জেএনআই) ব্যবহার করে।"
#: ../../../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 ""
"জামিতে অনেকগুলি সনাক্তকারী রয়েছে। আমাদের সমস্ত বাস্তবায়নের মধ্যে এই "
"সনাক্তকারীগুলির নামকরণকে একত্রিত করতে হবে। এই পৃষ্ঠাটি প্রাসঙ্গিক উদাহরণ সহ "
"জামিতে ব্যবহৃত বিভিন্ন ধরণের সনাক্তকারী উল্লেখ করে।"
#: ../../../developer/jami-identifiers.md:8
msgid ""
"**Jami Infohash** or **Jami public key fingerprint** : a public key "
"fingerprint such as `3d1112ab2bb089370c0744a44bbbb0786418d40b`"
msgstr ""
"**Jami Infohash** অথবা **Jami public key fingerprint**: একটি public key "
"fingerprint যেমন `3d1112ab2bb089370c0744a44bb0786418d40b`"
#: ../../../developer/jami-identifiers.md:10
msgid ""
"**Registered name** : a username associated to a Jami Infohash on the "
"blockchain such as `jeandupont`"
msgstr ""
"** নিবন্ধিত নাম**: ব্লকচেইনে একটি জামি ইনফোশের সাথে যুক্ত একটি ব্যবহারকারীর "
"নাম যেমন `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] এর সাথে সামঞ্জস্যপূর্ণ হতে হবে। "
"যদি এটি একটি SIP URI হয়, তবে এটি অবশ্যই [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 ""
"**Display name** অথবা **Profile name**: `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-colours.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 ""
"ব্যবহারকারী মানচিত্রের সাথে যোগাযোগ করতে পারেন, এটিকে রিচার্জ করে, জুম করে "
"এবং আউট করে, এটি সরিয়ে এবং এটি বন্ধ করে। মানচিত্রটি পিন করা বা unpinnedও "
"হতে পারে। যখন মানচিত্রটি unpinned হয়, তখন এটি পুনরায় পুনরায় পিন করা যেতে "
"পারে যদি ব্যবহারকারী সঠিক অ্যাকাউন্টে থাকে। এই বৈশিষ্ট্যটি ব্যবহারকারীকে "
"জামি ব্যবহার চালিয়ে যাওয়ার সময় মানচিত্রটি দৃশ্যমান রাখতে দেয়।"
#: ../../../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 "ব্যবহারকারী ইতিমধ্যে কথোপকথন A এবং কথোপকথন B সঙ্গে অবস্থান ভাগ করছে."
#: ../../../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 ""
"প্রতিটি অ্যাকাউন্টের নিজস্ব অনন্য মানচিত্র রয়েছে। যদি ব্যবহারকারী "
"অ্যাকাউন্ট এ এ থাকা অবস্থায় মানচিত্রটি আনপিন করে, তারপরে অ্যাকাউন্ট বিতে "
"স্যুইচ করে এবং মানচিত্রটি আনপিন করে, দুটি মানচিত্র দৃশ্যমান হবে। অ্যাকাউন্ট "
"এ এবং বি এর জন্য মানচিত্রগুলি সেই অ্যাকাউন্টগুলির সাথে ভাগ করা অবস্থানগুলি "
"প্রদর্শন করে, যথাক্রমে, এবং একে অপরের থেকে সম্পূর্ণ পৃথক"
#: ../../../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) API ব্যবহার করা হয়। "
"অবস্থান নির্ধারণ করার পরে, এটি 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` with 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 ""
"আমাদের অ্যাকাউন্টের জন্য সর্বশেষ প্রদর্শিত বার্তাটি জেনে আমরা এই তথ্য এবং "
"`ConfigrationManager::countInteractionsSince` ব্যবহার করতে পারি যা একটি "
"নির্দিষ্ট বার্তার জন্য সর্বশেষ বার্তা থেকে মিথস্ক্রিয়া গণনা করে (সাধারণত "
"সর্বশেষ প্রদর্শিত মিথস্ক্রিয়া)"
#: ../../../developer/message-displayed-status.md:72
msgid ""
"To get last displayed message for a member, in "
"`Configuration::getConversationMembers` each member will have the last "
"displayed interaction available via `memberInfo[\"lastDisplayed\"]`"
msgstr ""
"` কনফিগারেশন::getConversationMembers` প্রতিটি সদস্যের `memberInfo[\"শেষ "
"প্রদর্শিত\"] মাধ্যমে সর্বশেষ প্রদর্শিত মিথস্ক্রিয়া উপলব্ধ থাকবে"
#: ../../../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) API এর উপর "
"ভিত্তি করে যা JSON নথি এবং নিয়মিত HTTP স্থিতি কোড সহ অনুরোধের উত্তর দেয়।"
#: ../../../developer/name-server-protocol.md:10
msgid ""
"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as "
"its backend. Another implementation could use any other database or "
"directory service making the nameserver protocol reusable."
msgstr ""
"পাবলিক নাম সার্ভার `ns.jami.net` এ হোস্ট করা হয় এবং এর ব্যাক-এন্ড হিসাবে "
"একটি ব্লকচেইন ব্যবহার করে। অন্য বাস্তবায়ন নাম সার্ভার প্রোটোকল পুনরায় "
"ব্যবহারযোগ্য করে যে কোনও অন্যান্য ডাটাবেস বা ডিরেক্টরি পরিষেবা ব্যবহার করতে "
"পারে।"
#: ../../../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`*।"
#: ../../../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` স্ট্যাটাস কোড সহ একটি "
"উত্তর পাঠানো হবে `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 ডকুমেন্ট যা দুটি স্ট্রিং অ্যাট্রিবিউট রয়েছেঃ `name` এবং "
"`addr`। `name` অনুরোধকৃতটির সমান এবং `addr` ` `0x` এর সাথে সামনের জ্যামি "
"আইডি এর ছয় দশমিক উপস্থাপনা।"
#: ../../../developer/name-server-protocol.md:50
#: ../../../developer/name-server-protocol.md:98
msgid "In our example, the JSON answer would be:"
msgstr "আমাদের উদাহরণে, JSON উত্তর হবেঃ"
#: ../../../developer/name-server-protocol.md:59
#: ../../../developer/name-server-protocol.md:106
msgid "Response (Not found)"
msgstr "উত্তর (পুনরুদ্ধার হয়নি)"
#: ../../../developer/name-server-protocol.md:61
msgid ""
"If the name is not found, a response with status code `404` `Not` `Found` "
"must be sent to the client with a `Content-type` field set as "
"`application/json`."
msgstr ""
"যদি নামটি পাওয়া না যায়, তাহলে `404` `Not` `Found` এর সাথে একটি উত্তর "
"ক্লায়েন্টকে `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 ""
"`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 ""
"অনুরোধের উপাদানটি একটি 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` `true` হিসাবে সেট করা একটি "
"JSON ডকুমেন্ট রয়েছে।"
#: ../../../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-বিট ফিঙ্গারপ্রিন্টকে ** "
"রিংআইডি** বলা হয়।"
#: ../../../developer/protocol.md:13
msgid ""
"The account public key is used as the subject of an x509 certificate that "
"must be valid, have the Certificate Authority flag set, and can be self-"
"signed. This certificate is called the **Jami account certificate**."
msgstr ""
#: ../../../developer/protocol.md:18
msgid ""
"The subject UID field of the account certificate must be the hexadecimal "
"form of the public key fingerprint. The issuer UID field must be the "
"hexadecimal form of the issuer public key fingerprint."
msgstr ""
"অ্যাকাউন্ট সার্টিফিকেটের বিষয় UID ক্ষেত্রটি অবশ্যই পাবলিক কী আঙ্গুলের ছাপের"
" ছয় দশমিক ফর্ম হতে হবে। ইস্যুকারীর UID ক্ষেত্রটি অবশ্যই ইস্যুকারীর পাবলিক "
"কী আঙ্গুলের ছাপের ছয় দশমিক ফর্ম হতে হবে।"
#: ../../../developer/protocol.md:22
msgid "Persisting the account"
msgstr "অ্যাকাউন্টের স্থায়িত্ব"
#: ../../../developer/protocol.md:24
msgid ""
"Persisting a Jami account private key and certificate is implementation "
"defined."
msgstr ""
#: ../../../developer/protocol.md:27
msgid ""
"Access to a saved Jami account private key must be authenticated and "
"authorized. Authentication and authorization method to access the account "
"private key is implementation defined."
msgstr ""
#: ../../../developer/protocol.md:31
msgid "Adding a device to a Jami account"
msgstr ""
#: ../../../developer/protocol.md:33
msgid "*See [RFC 5280](https://tools.ietf.org/html/rfc5280)*"
msgstr "*আরএফসি ৫২৮০ দেখুন*"
#: ../../../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 ""
"যেখানে পিন হল ছয় দশমিক আকারে র্যান্ডম ৩২ বিট নম্বর, \"+\" হল স্ট্রিং "
"কনক্যাটেশন, টাইমস্ট্যাম্প হল বর্তমান ইউনিক্স টাইমস্ট্যাম্প, যা 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 "আইসিই বর্ণনাকারী বিনিময় ওয়ানডেইট এর সাথে"
#: ../../../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, \"+\" হল স্ট্রিং কনক্যাটেনেশন এবং ডিভাইস আইডি হল ডিভাইস "
"আইডি এর ষাট দশমিক ফর্ম।"
#: ../../../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 "*আরএফসি ৫২৪৫ দেখুন*"
#: ../../../developer/protocol.md:114
msgid ""
"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
"for NAT traversal."
msgstr ""
"আরএফসি ৫২৪৫ আইসিই (ইন্টারেক্টিভ কানেক্টিভিটি ইন্সটলমেন্ট) সংজ্ঞায়িত করে, যা"
" এনএটি ট্রান্সফার করার জন্য একটি প্রোটোকল।"
#: ../../../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 "**আইসিইএস সিরিয়ালাইজেশন ফরম্যাট**"
#: ../../../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 ""
"আইসিই স্থানীয় সেশন ufrag এবং আইসিই স্থানীয় সেশন পাসওয়ার্ডের স্ট্রিংগুলির "
"একটি 2-element array"
#: ../../../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 ""
"পূর্ববর্তী সংখ্যা এন্ট্রিগুলির একটি স্ট্রিং অ্যারে, যেখানে প্রতিটি স্ট্রিং "
"আইসিই প্রার্থী বর্ণনা করে, [rfc5245, বিভাগ 4.3]এ বর্ণিত \"a=\" লাইন (a=\" "
"শিরোনাম ছাড়া) হিসাবে বিন্যাস করা হয়েছে "
"[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 ""
"যদি কল করা ডিভাইস কলকারীকে অনুমোদন দেয় এবং সংযোগটি গ্রহণ করতে চায় তবে "
"এটিকে আইসিই উত্তর তৈরি করতে হবে, আইসিই আলোচনার প্রক্রিয়া শুরু করতে হবে এবং "
"একই ডিএইচটি কীতে এনক্রিপ্ট এবং স্বাক্ষরিত আইসিই উত্তর প্রেরণ করতে হবে।"
#: ../../../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 ""
"DTLS হাতের মুঠোয়, উভয় সমকক্ষকে তাদের নিজ নিজ ডিভাইস সার্টিফিকেট চেইন "
"প্রদান করতে হবে এবং অন্য সমকক্ষকে প্রমাণীকরণ করতে হবে, যাচাই করে যে তার "
"পাবলিক কীটি DHT ICE এক্সচেঞ্জের সময় ব্যবহৃত একই।"
#: ../../../developer/protocol.md:179
msgid "SIP call"
msgstr "SIP কল"
#: ../../../developer/protocol.md:181
msgid "*See [Important\\_RFC](Important_RFC \"wikilink\")*"
msgstr "*দেখুন [Important\\_RFC]"
#: ../../../developer/protocol.md:183
msgid ""
"Once an encrypted and authenticated peer-to-peer communication channel is "
"available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) must be"
" used to place a call and send messages. The caller might send a SIP INVITE "
"as soon as the DTLS channel is established."
msgstr ""
"একবার একটি এনক্রিপ্ট এবং প্রমাণিত পিয়ার-টু-পিয়ার যোগাযোগ চ্যানেল উপলব্ধ "
"হয়ে গেলে, একটি কল স্থাপন এবং বার্তা প্রেরণের জন্য SIP প্রোটোকল "
"[2](https://tools.ietf.org/html/rfc3261) ব্যবহার করা উচিত। কলারটি 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 ""
"সমর্থিত কোডেকগুলি বাস্তবায়ন সংজ্ঞায়িত, তবে জামি ক্লায়েন্টদের 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 ""
"টার্ন-কস্ট = 16, এমটার-কস্ট = 2^16 (64 মাইব), একক থ্রেড ব্যবহার করে argon2i "
"ব্যবহার করে পাসওয়ার্ডগুলি প্রসারিত করা হয়, যাতে 512 বিট হ্যাশ তৈরি করা "
"যায়।"
#: ../../../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 ""
"অডিও/ভিডিও ডেটা সমকক্ষদের মধ্যে এনক্রিপ্ট করা RTP চ্যানেল ব্যবহার করে "
"বিনিময় করা হয়।"
#: ../../../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 ব্যবহার করা উচিত। একটি সংকেতকে কোনও "
"ক্রিয়াটির সহজ অতীত সময় বা অতীত অংশীদারের ব্যবহার করা উচিত, সম্ভবত একটি ছোট"
" বিষয় দ্বারা উপসংহারিত। একটি সংশ্লিষ্ট স্লট \"on\" শব্দ দিয়ে উপসংহারিত "
"সংকেত হওয়া উচিত এবং \"slot\" শব্দ নয়। এখানে কিছু উদাহরণ রয়েছেঃ"
#: ../../../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 ""
"Qt 5.15.0 সংস্করণ qmlformat কিছু সমস্যা আছে মন্তব্য বিভাগ সঙ্গে মোকাবেলা এবং"
" বর্তমানে সর্বোচ্চ কলামের বিরুদ্ধে বৈষম্য করে না, তাই আমরা এই নির্দেশিকা "
"ব্যবহার করে ফরম্যাট করা অব্যাহত থাকবে এখন জন্য. নিম্নলিখিত একটি ব্যাপক নমুনা"
" উপাদান, 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 "উবুন্টু / ডেবিয়ানঃ `আপনি গুগলটেস্ট 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 ""
"উবুন্টু / ডেবিয়ানঃ `আপনি 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 "১"
#: ../../../developer/release-process.md:0
msgid "2"
msgstr "২"
#: ../../../developer/release-process.md:0
msgid "3"
msgstr "৩"
#: ../../../developer/release-process.md:0
msgid "4"
msgstr "৪"
#: ../../../developer/release-process.md:0
msgid "5"
msgstr "৫"
#: ../../../developer/release-process.md:0
msgid "6"
msgstr "৬"
#: ../../../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 "Daemon এবং ক্লায়েন্ট তৈরি এবং ইনস্টল করুন, দেখুন কিভাবে\\\\\\_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 push --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 "আপনার নিজস্ব TURN সার্ভার সেট আপ করা"
#: ../../../developer/setting-up-your-own-turn-server.md:4
msgid ""
"Jami can be configured to use TURN or STUN servers ([RFC "
"5766](https://tools.ietf.org/html/rfc5766)) to establish a connection "
"between two peers."
msgstr ""
"জামি দুটি সমকক্ষের মধ্যে সংযোগ স্থাপনের জন্য TURN বা STUN সার্ভার ([RFC "
"5766](https://tools.ietf.org/html/rfc5766) ব্যবহার করতে কনফিগার করা যেতে "
"পারে।"
#: ../../../developer/setting-up-your-own-turn-server.md:8
msgid ""
"The default TURN server is \"turn.jami.net\", with username \"ring\", "
"password \"ring\", and realm \"ring\"."
msgstr ""
"ডিফল্ট TURN সার্ভারটি \"turn.jami.net\", ব্যবহারকারীর নাম \"ring\", "
"পাসওয়ার্ড \"ring\" এবং realm \"ring\" সহ।"
#: ../../../developer/setting-up-your-own-turn-server.md:11
msgid ""
"In this guide, we will setup a [coturn](https://github.com/coturn/coturn) "
"server. There are other TURN/STUN server implementations available under a "
"free license, such as [TurnServer](http://turnserver.sourceforge.net/) and "
"[Restund](http://www.creytiv.com/restund.html)."
msgstr ""
"এই গাইডে আমরা একটি [coturn] সার্ভার সেট আপ করব। বিনামূল্যে লাইসেন্সের অধীনে "
"অন্যান্য TURN/STUN সার্ভার বাস্তবায়ন উপলব্ধ রয়েছে, যেমন [TurnServer] "
"(http://turnserver.sourceforge.net/) এবং [Restund] "
"(http://www.creytiv.com/restund.html) ।"
#: ../../../developer/setting-up-your-own-turn-server.md:17
msgid "Installing"
msgstr "ইনস্টলেশন"
#: ../../../developer/setting-up-your-own-turn-server.md:19
msgid ""
"COTURN is available in most Linux distributions. On Debian, install it with "
"the following command:"
msgstr ""
"COTURN বেশিরভাগ লিনাক্স বিতরণে পাওয়া যায়। ডিবিয়ান-এ, নিম্নলিখিত কমান্ড "
"দিয়ে এটি ইনস্টল করুনঃ"
#: ../../../developer/setting-up-your-own-turn-server.md:25
msgid "Configuring"
msgstr "কনফিগারেশন"
#: ../../../developer/setting-up-your-own-turn-server.md:27
msgid "Here is a basic `turnserver.conf` file:"
msgstr "এখানে একটি মৌলিক `turnserver.conf` ফাইল রয়েছেঃ"
#: ../../../developer/setting-up-your-own-turn-server.md:38
msgid ""
"This also will function as a STUN server. The STUN server does not require a"
" username and password (STUN uses very little bandwidth)."
msgstr ""
"এটি একটি STUN সার্ভার হিসাবেও কাজ করবে। STUN সার্ভারে কোনও ব্যবহারকারীর নাম "
"এবং পাসওয়ার্ডের প্রয়োজন হয় না (STUN খুব কম ব্যান্ডউইথ ব্যবহার করে) ।"
#: ../../../developer/setting-up-your-own-turn-server.md:41
msgid "Creating users on your TURN server"
msgstr "আপনার TURN সার্ভারে ব্যবহারকারী তৈরি করা"
#: ../../../developer/setting-up-your-own-turn-server.md:43
msgid ""
"To create users on your TURN server, use the `turnadmin` binary (this might "
"require superuser permissions)."
msgstr ""
"আপনার TURN সার্ভারে ব্যবহারকারী তৈরি করতে, `turnadmin` বাইনারি ব্যবহার করুন "
"(এটি সুপার ইউজার অনুমতি প্রয়োজন হতে পারে) ।"
#: ../../../developer/setting-up-your-own-turn-server.md:50
msgid "Launching the TURN server"
msgstr "TURN সার্ভার চালু করা হচ্ছে"
#: ../../../developer/setting-up-your-own-turn-server.md:56
msgid "Configuring Jami to authenticate with the TURN server"
msgstr "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 "** সার্ভার ইউআরএল**"
#: ../../../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 "তোমার পাবলিক কীটা গেরিতকে বলো"
#: ../../../developer/submitting-your-first-patch.md:26
msgid ""
"Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-"
"in=>OAuth Gitlab)"
msgstr ""
"আপনার গিটলাব অ্যাকাউন্টের মাধ্যমে [gerrit](https://review.jami.net) লগইন "
"করুন (সাইন ইন=>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 ( `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 উপর একটি repo ক্লোন করার চেষ্টা করুন)"
#: ../../../developer/submitting-your-first-patch.md:33
msgid "Your Repository"
msgstr "আপনার সংগ্রহস্থল"
#: ../../../developer/submitting-your-first-patch.md:35
msgid ""
"This *assumes* you have moved any existing project clone out of the way."
msgstr ""
"এটি * অনুমান করে* আপনি যে কোনও বিদ্যমান প্রকল্পের ক্লোনকে সরিয়ে ফেলেছেন।"
#: ../../../developer/submitting-your-first-patch.md:37
msgid ""
"Clone a (fresh) copy of the project. `git clone "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. `git "
"clone ssh://foo@review.jami.net:29420/jami-project.git`."
msgstr ""
"প্রকল্পের একটি (নতুন) কপি ক্লোন করুন। `git clone "
"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; যেমন `git "
"clone ssh://foo@review.jami.net:29420/jami-project.git`।"
#: ../../../developer/submitting-your-first-patch.md:38
msgid "Configure this clones local .git/config (optional)"
msgstr "এই ক্লোন স্থানীয়.git/config কনফিগার করুন (ঐচ্ছিক)"
#: ../../../developer/submitting-your-first-patch.md:39
msgid "Generate commit Change-Ids aka: commit-msg hook script"
msgstr "Commit-Ids তৈরি করুন পরিবর্তন আইডি aka: commit-msg hook script"
#: ../../../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:hash তৈরি করে।"
#: ../../../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 push origin HEAD:refs/for/master` পর্যালোচনা করার চেষ্টা "
"করলে, gerrit Change-Id এর অভাব লক্ষ্য করবে।"
#: ../../../developer/submitting-your-first-patch.md:51
msgid ""
"Gerrit will also present a secure copy (scp) string. Use *that* to download "
"a copy of .git/hooks/commit-msg."
msgstr ""
"Gerrit এছাড়াও একটি নিরাপদ কপি (scp) স্ট্রিং উপস্থাপন করবে। *that* ব্যবহার "
"করে.git/hooks/commit-msg এর একটি কপি ডাউনলোড করুন।"
#: ../../../developer/submitting-your-first-patch.md:55
msgid "References"
msgstr "রেফারেন্স"
#: ../../../developer/submitting-your-first-patch.md:58
msgid ""
"[Some Gritty Details](https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
msgstr ""
"[কিছু গ্রিটি বিস্তারিত]https://review.jami.net/Documentation/user-"
"upload.html#_gritty_details)"
#: ../../../developer/submitting-your-first-patch.md:62
msgid "Original author: *Peter Gossner*"
msgstr "মূল লেখকঃ *পিতর গসনার*"
#: ../../../developer/swarm.md:1
msgid "Swarm"
msgstr "স্যাম"
#: ../../../developer/swarm.md:3
msgid "Synospis"
msgstr "সিনোস্পিস"
#: ../../../developer/swarm.md:5
msgid ""
"The goal of this document is to describe how group chats (a.k.a. **swarm "
"chat**) will be implemented in Jami."
msgstr ""
"এই নথির লক্ষ্য হল গ্রুপ চ্যাট (অর্থাৎ **swarm chat**) কিভাবে Jami-তে "
"বাস্তবায়ন করা হবে তা বর্ণনা করা।"
#: ../../../developer/swarm.md:7
msgid ""
"A *swarm* is a group able to discuss without any central authority in a "
"resilient way. Indeed, if two person doesn't have any connectivity with the "
"rest of the group (ie Internet outage) but they can contact each other (in a"
" LAN for example or in a subnetwork), they will be able to send messages to "
"each other and then, will be able to sync with the rest of the group when "
"it's possible."
msgstr ""
"একটি *swarm * একটি গ্রুপ যা কোনও কেন্দ্রীয় কর্তৃপক্ষ ছাড়াই স্থিতিশীলভাবে "
"আলোচনা করতে পারে। প্রকৃতপক্ষে, যদি দুই ব্যক্তির গ্রুপের বাকি অংশের সাথে কোনও"
" সংযোগ না থাকে (যেমন ইন্টারনেট সংযোগ বিচ্ছিন্নতা) তবে তারা একে অপরের সাথে "
"যোগাযোগ করতে পারে (উদাহরণস্বরূপ ল্যান বা সাবনেটওয়ার্কে), তারা একে অপরের "
"কাছে বার্তা পাঠাতে সক্ষম হবে এবং তারপরে, যখন সম্ভব হয় তখন গ্রুপের বাকি "
"অংশের সাথে সিঙ্ক করতে সক্ষম হবে।"
#: ../../../developer/swarm.md:9
msgid "So, the *swarm* is defined by:"
msgstr "সুতরাং, *সওয়ারম* এর সংজ্ঞা দেওয়া হয়ঃ"
#: ../../../developer/swarm.md:10
msgid "Ability to split and merge following the connectivity."
msgstr "সংযোগের পর বিভক্ত ও একত্রিত হওয়ার ক্ষমতা।"
#: ../../../developer/swarm.md:11
msgid ""
"Syncing of the history. Anyone must be able to send a message to the whole "
"group."
msgstr "ইতিহাসের সিঙ্কিং। যে কেউ গোটা গ্রুপকে বার্তা পাঠাতে সক্ষম হতে হবে।"
#: ../../../developer/swarm.md:12
msgid "No central authority. Can not rely on any server."
msgstr "কোন কেন্দ্রীয় কর্তৃপক্ষ নেই, কোন সার্ভারে নির্ভর করতে পারবে না।"
#: ../../../developer/swarm.md:13
msgid ""
"Non-repudiation. Devices must be able to verify old messages' validity and "
"to replay the whole history."
msgstr ""
"ডিভাইসগুলি অবশ্যই পুরানো বার্তাগুলির বৈধতা যাচাই করতে এবং পুরো ইতিহাস "
"পুনরায় প্লে করতে সক্ষম হতে হবে।"
#: ../../../developer/swarm.md:14
msgid "PFS on the transport. Storage is managed by the device."
msgstr "ট্রান্সপোর্ট করা হচ্ছে, ডিভাইস দ্বারা স্টোরেজ পরিচালিত হয়।"
#: ../../../developer/swarm.md:16
msgid ""
"The main idea is to get a synchronized Merkle tree with the participants."
msgstr ""
"মূল ধারণা হলো অংশগ্রহণকারীদের সাথে একটি সিঙ্ক্রোনাইজড মের্কল গাছ তৈরি করা।"
#: ../../../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 "তার CRL ̀ /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`তে আমন্ত্রিত ইউআরআই যোগ করে"
#: ../../../developer/swarm.md:44
msgid "Adds the CRL into `/crls`"
msgstr "`/crls` তে সিআরএল যোগ করা হয়েছে"
#: ../../../developer/swarm.md:45
msgid "Alice sends a request on the DHT"
msgstr "আলিস DHT এর জন্য একটি অনুরোধ পাঠায়"
#: ../../../developer/swarm.md:47
msgid "Receiving an invite"
msgstr "আমন্ত্রণ গ্রহণ"
#: ../../../developer/swarm.md:49
msgid "*Alice gets the invite to join the previously create swarm*"
msgstr "*আলিসকে আগে তৈরি করা ঘোড়ায় যোগ দিতে বলা হয়েছে*"
#: ../../../developer/swarm.md:51
msgid ""
"She accepts the invite (if decline, do nothing, it will just stay into "
"invited and Alice will never receive any message)"
msgstr ""
"তিনি আমন্ত্রণ গ্রহণ (যদি প্রত্যাখ্যান, কিছুই না, এটা শুধুমাত্র আমন্ত্রিত "
"মধ্যে থাকবে এবং আলিস কোন বার্তা পাবেন না)"
#: ../../../developer/swarm.md:52
msgid "A peer-to-peer connection between Alice and Bob is done."
msgstr "এলিস এবং বব এর মধ্যে পিয়ার-টু-পিয়ার সংযোগ সম্পন্ন হয়েছে।"
#: ../../../developer/swarm.md:53
msgid ""
"Alice pull the git repo of Bob. **WARNING this means that messages need a "
"connection, not from the DHT like today**"
msgstr ""
"আলিস বব এর গিট রিপো টানেন. ** এই সতর্কতা মানে যে বার্তা সংযোগ প্রয়োজন, না "
"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 "** টডো ফরম্যাট অস্পষ্ট**"
#: ../../../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 ""
"তিনটা মামলা, কমিশনের দুইজন অভিভাবক আছে, তাই এটি একত্রিত হয়েছে, এখানে আর "
"কিছু বৈধ করার নেই"
#: ../../../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 "ভোট টাইপ সমর্থিত কিনা তা পরীক্ষা করুন (ব্যান, আনব্যান)"
#: ../../../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 ""
"গ্রুপ চ্যাটের জন্য কোন কেন্দ্রীয় সার্ভার ছাড়া সিগন্যাল (এডিআইটিঃ তারা "
"সম্প্রতি যে পয়েন্ট পরিবর্তন), একটি গ্রুপ থেকে কাউকে নিষিদ্ধ করার ক্ষমতা "
"দেয় না।"
#: ../../../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 ""
"যদি ভোট সমাধান হয়, ফাইলগুলি /ভোট / আনব্যানে সরানো যেতে পারে, সমস্ত ফাইলগুলি"
" / সদস্য, / অ্যাডমিন, / আমন্ত্রিত, / সিআরএলগুলিতে বব, পুনরায় যোগ করা যেতে "
"পারে (বা কেবলমাত্র / ডিভাইসে যদি এটি একটি ডিভাইস হয় যা নিষিদ্ধ নয়) এবং "
"রিপোতে প্রতিশ্রুতিবদ্ধ করা যেতে পারে"
#: ../../../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 remove=time::now() (যেমন removeContact সংরক্ষণ করে পরিচিতিতে) "
"সংরক্ষণ করুন যে কথোপকথনটি সরানো হয় এবং অন্য ব্যবহারকারীর ডিভাইসের সাথে "
"সিঙ্ক করা হয়"
#: ../../../developer/swarm.md:163
msgid "Now, if a new commit is received for this conversation it's ignored"
msgstr ""
"এখন, যদি এই কথোপকথনের জন্য নতুন কমিটমেন্ট পাওয়া যায় তাহলে তা উপেক্ষা করা "
"হয়"
#: ../../../developer/swarm.md:164
msgid ""
"Now, if Jami startup and the repo is still present, the conversation is not "
"announced to clients"
msgstr ""
"এখন, যদি জামি স্টার্টআপ এবং রিপো এখনও উপস্থিত থাকে, কথোপকথন ক্লায়েন্টদের "
"ঘোষণা করা হয় না"
#: ../../../developer/swarm.md:165
msgid ""
"Two cases: a. If no other member in the conversation we can immediately "
"remove the repository b. If still other members, commit that we leave the "
"conversation, and now wait that at least another device sync this message. "
"This avoids the fact that other members will still detect the user as a "
"valid member and still sends new message notifications."
msgstr ""
"দুটি ক্ষেত্রেঃ 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 ""
"যখন আমরা নিশ্চিত যে কেউ সিঙ্ক করা হয়েছে, মুছে ফেলুন মুছে ফেলা=time::now() "
"এবং অন্যান্য ব্যবহারকারীর ডিভাইস সঙ্গে সিঙ্ক"
#: ../../../developer/swarm.md:169
msgid ""
"All devices owned by the user can now erase the repository and related files"
msgstr ""
"ব্যবহারকারীর মালিকানাধীন সমস্ত ডিভাইস এখন রিপোজিটরি এবং সম্পর্কিত ফাইল মুছে "
"ফেলতে পারে"
#: ../../../developer/swarm.md:171
msgid "How to specify a mode"
msgstr "মোড কিভাবে নির্দিষ্ট করবেন"
#: ../../../developer/swarm.md:173
msgid ""
"Modes can not be changed through time. Or it's another conversation. So, "
"this data is stored in the initial commit message. The commit message will "
"be the following:"
msgstr ""
"মোডগুলি সময়ের সাথে পরিবর্তন করা যায় না। অথবা এটি অন্য একটি কথোপকথন। "
"সুতরাং, এই তথ্যটি প্রাথমিক কমিট বার্তায় সংরক্ষণ করা হয়। কমিট বার্তাটি "
"নিম্নরূপ হবেঃ"
#: ../../../developer/swarm.md:184
msgid ""
"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
"(INVITES_ONLY), 3 (PUBLIC)"
msgstr ""
"এখন, \"মোড\" মান গ্রহণ 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
"(INVITES_ONLY), 3 (পাবলিক)"
#: ../../../developer/swarm.md:186
msgid "Processus for 1:1 swarms"
msgstr "১ঃ১ গোষ্ঠীর জন্য প্রক্রিয়া"
#: ../../../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 ""
"কথোপকথন অনুরোধগুলি ** মানচিত্র < স্ট্রিং, স্ট্রিং>** এর মাধ্যমে নিম্নলিখিত "
"কীগুলির সাথে প্রতিনিধিত্ব করা হয়ঃ"
#: ../../../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 ""
"একটি কথোপকথন সনাক্তযোগ্য হওয়ার জন্য সাধারণত একটি শিরোনাম (উদাহরণস্বরূপ, "
"জামি), একটি বর্ণনা (উদাহরণস্বরূপঃ কিছু লিঙ্ক, প্রকল্পটি কী, ইত্যাদি) এবং "
"একটি চিত্র (প্রকল্পের লোগো) এর মতো কিছু মেটাডেটা প্রয়োজন। এই মেটাডেটাগুলি "
"ঐচ্ছিক তবে সমস্ত সদস্যের মধ্যে ভাগ করা হয়, তাই অনুরোধগুলিতে সিঙ্ক করা এবং "
"অন্তর্ভুক্ত করা দরকার।"
#: ../../../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 "৫টি পরিস্থিতির জন্য সমর্থন রয়েছেঃ"
#: ../../../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 "পছন্দগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য API হলঃ"
#: ../../../developer/swarm.md:294
msgid "Merge conflicts management"
msgstr "মার্জ সংঘাত ব্যবস্থাপনা"
#: ../../../developer/swarm.md:296
msgid ""
"Because two admins can change the description at the same time, a merge "
"conflict can occur on `profile.vcf`. In this case, the commit with the "
"higher hash (eg ffffff > 000000) will be chosen."
msgstr ""
"যেহেতু দুটি প্রশাসক একই সময়ে বর্ণনা পরিবর্তন করতে পারে, তাই `profile.vcf` এ"
" একত্রিতকরণের দ্বন্দ্ব ঘটতে পারে। এই ক্ষেত্রে, উচ্চ হ্যাশ সহ কমিশনটি "
"নির্বাচিত হবে (উদাহরণস্বরূপ 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 ""
"সংরক্ষণাগারটি পুনরায় আমদানির পরে নতুন কমিটগুলিতে কথোপকথন পুনরুদ্ধার করতে "
"সক্ষম হওয়ার জন্য কথোপকথন আইডি থাকতে হবে (কারণ এই মুহুর্তে কোনও আমন্ত্রণ "
"নেই) যদি কোনও কথোপকথনের জন্য একটি কমিট আসে তবে দুটি সম্ভাবনা রয়েছেঃ"
#: ../../../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 অনুপস্থিত, তাই ডেমোনটি (বার্তা `{{\"অ্যাপ্লিকেশন/আমন্ত্রণ\", "
"কথোপকথন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 ""
"আমরা বার্তা সিঙ্ক এবং অর্ডার করতে হবে. Merkle গাছ এটি করার জন্য নিখুঁত "
"কাঠামো এবং শাখা মার্জিং দ্বারা লাইনীভূত করা যেতে পারে. উপরন্তু, এটি "
"ব্যাপকভাবে 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 ""
"তবে অস্থায়ী বার্তা (যেমন বার্তা যা কয়েক মিনিটের জন্য কেবল পাঠ্যযোগ্য) একটি"
" বিশেষ বার্তা মাধ্যমে ডিআরটি (যেমন টাইপিং বা পড়ুন বিজ্ঞপ্তি) মাধ্যমে পাঠানো"
" যেতে পারে।"
#: ../../../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 ""
"একটি ঘোড়ার কথোপকথন একাধিক রেন্ডেজ থাকতে পারে। একটি রেন্ডেজ নিম্নলিখিত ইউরি "
"দ্বারা সংজ্ঞায়িত করা হয়ঃ"
#: ../../../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 অপারেশন, কন্ট্রোল বার্তা, ফাইল, এবং অন্যান্য জিনিস শুধুমাত্র এনক্রিপশন "
"যা PFS গ্যারান্টি ব্যবহার করে একটি p2p TLS v1.3 লিঙ্ক ব্যবহার করবে। তাই "
"প্রতিটি নতুন সংযোগের জন্য প্রতিটি কী পুনরায় আলোচনা করা হয়।"
#: ../../../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 ""
"মোবাইলের জন্য বার্তা পাঠাতে (পশ বিজ্ঞপ্তি ট্রিগার করতে) এবং টিসিপি সংযোগ "
"শুরু করতে ব্যবহৃত হয়।"
#: ../../../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. অন্যথায়, "
"Alice SIP চ্যানেল পাঠায়"
#: ../../../developer/swarm.md:473
msgid ""
"Two possibilities for Bob a. Receives the invite, a signal is emitted for "
"the client b. Not connected, so will never receive the request cause Alice "
"must not know if Bob just ignored or blocked Alice. The only way is to "
"regenerate a new invite via a new message (cf. next scenario)"
msgstr ""
"বব 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 ""
"দুটি সম্ভাবনা, অ্যালিস এবং বব সংযুক্ত বা না। উভয় ক্ষেত্রে একটি বার্তা তৈরি "
"করা হয়ঃ { \"অ্যাপ্লিকেশন/আইএম-জিটমেসেজ-আইডি\" : \"{\"আইডি\":\"$ কনভিল্ড\", "
"\"কমিট\":\"$ কমিটআইডি\", \"ডিভাইসআইডি\": \"$আলিস_ডিভাইস_হ্যাশ\"}\"}."
#: ../../../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 ""
"চারটি সম্ভাব্যতা ববঃ a. বব আলিসের সাথে সংযুক্ত নয়, সুতরাং যদি তিনি আলিসে "
"বিশ্বাস করেন তবে একটি নতুন সংযোগের জন্য জিজ্ঞাসা করুন এবং বি-এ যান। যদি "
"সংযুক্ত হন তবে আলিসের কাছ থেকে নতুন বার্তা আনুন এবং ঘোষণা করুন। বব সেই "
"কথোপকথনটি জানেন না। DHT এর মাধ্যমে প্রথমে একটি আমন্ত্রণ পেতে জিজ্ঞাসা করুন "
"যাতে সেই কথোপকথনটি গ্রহণ করতে সক্ষম হতে পারে ({\"অ্যাপ্লিকেশন / আমন্ত্রণ\", "
"কথোপকথনId}) d. বব সংযোগ বিচ্ছিন্ন (কোন নেটওয়ার্ক নেই, বা কেবল বন্ধ) । তিনি "
"নতুন বার্তা পাবেন না তবে পরবর্তী সংযোগটি যখন ঘটবে তখন সিঙ্ক করার চেষ্টা "
"করবেন"
#: ../../../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 মান "
"হিসাবে চুরি করা হয়, কথোপকথন বিচ্ছিন্ন করা যেতে পারে. হয়তো আমরা ** ডাবল "
"ratchet** মত কিছু যেতে হবে."
#: ../../../developer/swarm.md:616
msgid ""
"Note: a lib might exist to implement group conversations. TODO, investigate."
msgstr "দ্রষ্টব্যঃ গ্রুপ কথোপকথন বাস্তবায়নের জন্য একটি লিব থাকতে পারে।"
#: ../../../developer/swarm.md:618
msgid "Needs ECC support in OpenDHT"
msgstr "ওপেনডিএইচটি-তে ইসিসি সমর্থন প্রয়োজন"
#: ../../../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 "আরেকটি ডেডিকেটেড ডিএইচটি"
#: ../../../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 নকশা ডকুমেন্ট <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 ""
"পুরানো পদ্ধতিতে, ডিভাইসসিঙ্ক মানগুলির জন্য \"ইনবক্সঃ ডিভাইস_আইডি\" এ ডেমোনটি"
" শুনছে যা সিঙ্ক করার জন্য যোগাযোগের তালিকা রয়েছে (cf. "
"`AccountManager::startSync() `);"
#: ../../../developer/synchronization-protocol.md:14
msgid ""
"**NOTE:** The current **DeviceSync** value present on the **DHT** is "
"deprecated with this draft."
msgstr ""
"** দ্রষ্টব্যঃ** ** ডিভাইস সিঙ্ক** এর বর্তমান মান ** ডিএইচটি** এ অবৈধভাবে "
"ব্যবহৃত হয়।"
#: ../../../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 ""
"যেহেতু জ্যামির কাছে {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 ""
"এই চ্যানেলটি খোলার সাথে সাথে, এই চ্যানেলটি জিজ্ঞাসা করা ডিভাইসটি তার পরিচিত "
"কথোপকথন এবং পরিচিতিগুলি ধারণকারী একটি ** ডিভাইস সিঙ্ক** মান প্রেরণ করবে "
"(পরবর্তী অংশটি দেখুন) ।"
#: ../../../developer/synchronization-protocol.md:25
msgid "*A* will check the **DeviceSync** value and:"
msgstr "*A* ** ডিভাইস সিঙ্ক** মান চেক করবে এবংঃ"
#: ../../../developer/synchronization-protocol.md:26
msgid "Remove contacts if it detects removed contacts"
msgstr "যদি এটি অপসারণ করা পরিচিতি সনাক্ত করে তবে পরিচিতিগুলি সরান"
#: ../../../developer/synchronization-protocol.md:27
msgid "Add contacts if it detects added contacts"
msgstr "যোগ করা পরিচিতি যদি এটি যোগ করা পরিচিতি সনাক্ত করে"
#: ../../../developer/synchronization-protocol.md:28
msgid "Remove conversations if it detects removed conversations"
msgstr "যদি এটি অপসারণ করা কথোপকথন সনাক্ত করে তবে কথোপকথন সরান"
#: ../../../developer/synchronization-protocol.md:29
msgid "Add conversations if it detects added conversations"
msgstr "সংযোজন সংলাপ যদি এটি সংযোজন সংলাপ সনাক্ত করে"
#: ../../../developer/synchronization-protocol.md:30
msgid ""
"Remove conversation's requests if request is accepted (now in "
"conversations)/declined"
msgstr ""
"কথোপকথনের অনুরোধগুলি সরিয়ে ফেলুন যদি অনুরোধটি গৃহীত হয় (এখন কথোপকথনে) / "
"প্রত্যাখ্যান করা হয়"
#: ../../../developer/synchronization-protocol.md:31
msgid "Add conversation's requests if detected"
msgstr "যদি সনাক্ত করা হয় তাহলে কথোপকথনের অনুরোধ যোগ করুন"
#: ../../../developer/synchronization-protocol.md:33
msgid ""
"Note: If *A* detects new conversations, it will asks the device which "
"announced that conversation to clone the repository through a git channel "
"(so like described in {doc}`Swarm chat design <swarm>`)"
msgstr ""
"দ্রষ্টব্যঃ *A* যদি নতুন কথোপকথন সনাক্ত করে, তবে এটি সেই কথোপকথনটি ঘোষণা করা "
"ডিভাইসটিকে একটি গিট চ্যানেলের মাধ্যমে সংগ্রহস্থলটি ক্লোন করতে বলবে (যেমন "
"{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 "অ্যালিসের দুটি ডিভাইস আছে"
#: ../../../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 "অন্য ডিভাইস ডিভাইস A থেকে অনুরোধগুলি পুনরুদ্ধার করবে"
#: ../../../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 "অ্যালিসের ২টি ডিভাইস আছে"
#: ../../../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` যেমনঃ `.local/share/jami/xxxxxx/profile.vcf` "
"GNU/Linux এ।"
#: ../../../developer/synchronizing-profiles.md:11
msgid "Contacts"
msgstr "পরিচিতি"
#: ../../../developer/synchronizing-profiles.md:13
msgid ""
"Because this logic is still managed per client, it depends on the client. "
"However, on Desktop, this is unified and stored into: "
"`${idPath_}/profiles/${base64(uri)}.vcf`"
msgstr ""
"যেহেতু এই লজিকটি এখনও ক্লায়েন্টের প্রতি পরিচালিত হয়, এটি ক্লায়েন্টের উপর "
"নির্ভর করে। যাইহোক, ডেস্কটপে, এটি একীভূত এবং সংরক্ষণ করা হয়ঃ "
"`${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 ""
"নতুন ডিভাইসের সাথে সংযোগ করার সময়, একটি এসআইপি বা একটি সিঙ্ক চ্যানেল "
"সম্পন্ন হয়। যখন এই চ্যানেলটি প্রস্তুত হয়, আমরা প্রোফাইলটি প্রেরণের "
"প্রয়োজন কিনা তা পরীক্ষা করি। এটি করার জন্য, প্রোফাইলের হ্যাশটি ক্যাশে থাকা "
"(`${cacheDir}/${accId}/vcard/sha3` যেমন `~/.cache/jami/xxxxx/vcard/sha3`on "
"GNU/Linux) এর সাথে তুলনা করা হয় এবং ফাইলটি "
"`${cacheDir}/${accId}/vcard/deviceId`) চেক করা হয়। অ্যাকাউন্টটি দেখুন "
"`JamiAccount::needToSendProfile() `। যদি উপস্থিত না থাকে তবে অ্যাকাউন্টের "
"প্রোফাইল প্রেরণ করা হয়। সাধারণত, চ্যানেলের নাম \"vcard://xxx\" হবে যেখানে "
"প্রযোজকটি প্রেরকটি প্রেরকটি।"
#: ../../../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 অ্যাকাউন্ট** একটি ক্রিপ্টোগ্রাফিক Jami পরিচয় দ্বারা সংজ্ঞায়িত করা "
"হয় যা **RSA অসামত কী-পিয়ার** ভিত্তিক এবং **[RFC 5280]** দ্বারা সংজ্ঞায়িত "
"**x.509 শংসাপত্র** দিয়ে পরিচালিত হয়।"
#: ../../../developer/technical-overview.md:13
msgid ""
"Jami uses the **gnutls** library to generate and manage RSA keys and "
"certificates."
msgstr ""
"জামি আরএসএ কী এবং সার্টিফিকেট তৈরি ও পরিচালনা করতে **গনটলস** লাইব্রেরি "
"ব্যবহার করে।"
#: ../../../developer/technical-overview.md:16
msgid "Jami certificate"
msgstr "জামির শংসাপত্র"
#: ../../../developer/technical-overview.md:18
msgid "This represents the identify of a Jami user."
msgstr "এটি জামি ব্যবহারকারীর পরিচয়।"
#: ../../../developer/technical-overview.md:19
msgid "Generated at account creation"
msgstr "অ্যাকাউন্ট তৈরির সময় তৈরি করা"
#: ../../../developer/technical-overview.md:20
msgid "Contains the Jami account public key."
msgstr "জামি অ্যাকাউন্টের পাবলিক কী আছে।"
#: ../../../developer/technical-overview.md:21
msgid ""
"The SHA-1 fingerprint (160-bits) of this public certificate is the "
"**JamiId**."
msgstr "এই পাবলিক সার্টিফিকেটের SHA-1 আঙ্গুলের ছাপ (১৬০ বিট) হল **JamiId**।"
#: ../../../developer/technical-overview.md:23
msgid "Signed by a CA (from an organization or self-signed)."
msgstr "একটি সিএ দ্বারা স্বাক্ষরিত (একটি সংস্থার বা স্ব-স্বাক্ষরিত) ।"
#: ../../../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 ""
"ইস্যুকারীর ইউআইডি ক্ষেত্রটি অবশ্যই ইস্যুকারীর পাবলিক কী ফিংটারপ্রিন্টের "
"(সিএ) ছয় দশমিক ফর্ম হতে হবে।"
#: ../../../developer/technical-overview.md:27
msgid "Random RSA key-pair of at least 4096-bits long."
msgstr "র্যান্ডম আরএসএ কী-প্যারের দৈর্ঘ্য কমপক্ষে ৪০৯৬ বিট।"
#: ../../../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 "এটা জামি চালানোর জন্য ব্যবহৃত এক নির্দিষ্ট ডিভাইসের পরিচয়।"
#: ../../../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 ফিঙ্গারপ্রিন্টটি ** ডিভাইস আইডি** হয়ে ওঠে।"
#: ../../../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 ""
"ইস্যুকারীর ইউআইডি ক্ষেত্রটি অবশ্যই ইস্যুকারীর পাবলিক কী ফিঙ্গারপ্রিন্টের "
"(জামিআইডি) ছয় দশমিক ফর্ম হতে হবে।"
#: ../../../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 ""
"এটি ডিএইচটি কী যেখানে অ্যাকাউন্ট ডিভাইসগুলির তালিকা প্রকাশিত হয় এবং যেখানে "
"সমস্ত ডিভাইস অ্যাকাউন্ট পরিবর্তনগুলি (যেমন একটি ডিভাইস যুক্ত বা প্রত্যাহার) "
"সিঙ্ক্রোনাইজ করতে শোনে।"
#: ../../../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 ""
"ডিভাইস সার্টিফিকেট বাতিলের মাধ্যমে একটি ডিভাইসকে জ্যামি অ্যাকাউন্ট থেকে "
"\"নিষ্কাশন\" করা যেতে পারেঃ"
#: ../../../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 ""
"যখন জামি একটি নতুন ডিভাইস তৈরি করে, তখন এই তথ্যগুলিও প্রয়োজন, অন্য একটি "
"নির্ভরযোগ্য ডিভাইস থেকে নিরাপদ উপায়ে ভাগ করা হয়।"
#: ../../../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 "সিআরটি ফাইল হিসেবে পাবলিক সার্টিফিকেট চেইন"
#: ../../../developer/technical-overview.md:79
msgid "the device private key."
msgstr "ডিভাইসের প্রাইভেট কী।"
#: ../../../developer/technical-overview.md:81
msgid "Jami archive (export.gz)"
msgstr "জামি আর্কাইভ (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 ""
"তারপর gzip-stream একটি 256-বিট কী সঙ্গে AES-GCM-256 সমতুল্য cipher ব্যবহার "
"করে এনক্রিপ্ট করা হয়।"
#: ../../../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 ""
"একটি নির্দিষ্ট ডিভাইসের সাথে যোগাযোগের পদ্ধতির সমস্ত সংমিশ্রণ ফর্মগুলি একটি "
"আইসিই বার্তায় সংক্ষিপ্ত করা হয়েছেঃ"
#: ../../../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) * আইসিই (ইন্টারেক্টিভ "
"কানেক্টিভিটি ইন্সটলমেন্ট) সংজ্ঞায়িত করে, যা এনএটি ট্রাভেলের জন্য একটি "
"প্রোটোকল।"
#: ../../../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(\"`[কল্টঃ:\"+ডিভাইসআইডি`](কল্টঃ%22+ডিভাইসআইডি)`)` যেখানে *h* হল SHA1, *+*"
" হল স্ট্রিং কনক্যাটেনেশন, *ডিভাইসআইডি* ছয় দশমিক আকারে।"
#: ../../../developer/technical-overview.md:185
msgid ""
"The calling device waits on the peer answer, with its own ICE candidates "
"lists."
msgstr ""
"ফোন ডিভাইসটি নিজস্ব আইসিই প্রার্থী তালিকা দিয়ে সমকক্ষের উত্তরের জন্য "
"অপেক্ষা করছে।"
#: ../../../developer/technical-overview.md:187
msgid ""
"At peer answer reception, the calling device starts the ICE negotiation."
msgstr "পিয়ার সাড়া গ্রহণের সময়, কল ডিভাইস আইসিই আলোচনার শুরু করে।"
#: ../../../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 ""
"যদি আলোচনা সফল হয়, তাহলে ক্লায়েন্টের পক্ষ থেকে তৈরি আইসিই সকেট (নিচে "
"দেখুন) এর উপর একটি ডিটিএলএস সেশন প্রতিষ্ঠানে প্রক্রিয়াটি অব্যাহত থাকবে।"
#: ../../../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)`)` যেখানে *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 "যদি নিরাপত্তা বৈধতা সফল হয়, ডাকা ডিভাইস আইসিই আলোচনার শুরু।"
#: ../../../developer/technical-overview.md:202
msgid ""
"If the negotiation succeed, the process continues on a server-side DTLS "
"session establishment over the created ICE socket (see below)."
msgstr ""
"যদি আলোচনা সফল হয়, তাহলে সার্ভারের পাশের একটি DTLS সেশন সেশন সেটআপ তৈরি করা"
" আইসিই সকেট (নিচে দেখুন) এর উপরে প্রক্রিয়াটি অব্যাহত থাকবে।"
#: ../../../developer/technical-overview.md:205
msgid ""
"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
"specified by OpenDHT protocol.*"
msgstr ""
"*দ্রষ্টব্যঃ ওপেনডএইচটি প্রোটোকল দ্বারা নির্দিষ্ট হিসাবে সঠিকভাবে এনক্রিপ্ট "
"বা স্বাক্ষরিত নয় এমন মানগুলি ফেলে দেয়। *"
#: ../../../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 ""
"আইসিই বার্তাগুলি একটি কল সেটআপের সময় সহকর্মীদের মধ্যে বিনিময় করা হয় "
"নিম্নলিখিত বিন্যাসে ব্যবহার করা হয়।"
#: ../../../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 ""
"আইসিই প্রোটোকলের মাধ্যমে পিয়ার-টু-পিয়ার যোগাযোগ চ্যানেল স্থাপন করা হলে, কল"
" করা ডিভাইস আইসিই সকেটটিতে সার্ভার-সাইড ডিটিএলএস সেশন শুরু করে, যখন কলকারী "
"আইসিই সকেটটির অন্য দিকে ক্লায়েন্ট-সাইড ডিটিএলএস সেশন শুরু করে।"
#: ../../../developer/technical-overview.md:247
msgid ""
"The DTLS communication is [RFC6347](https://tools.ietf.org/html/rfc6347) "
"compliant using gnutls library."
msgstr ""
"DTLS যোগাযোগ [RFC6347](https://tools.ietf.org/html/rfc6347) gnutls লাইব্রেরি"
" ব্যবহার করে মেনে চলে।"
#: ../../../developer/technical-overview.md:250
msgid ""
"To prevent peer certificates to be displayed in plain-text for the call "
"anonymity, the session handshake is done twice:"
msgstr ""
"কলের অ্যানোনিমিটি জন্য পিয়ার সার্টিফিকেটগুলি সাদা পাঠ্যে প্রদর্শিত হতে বাধা"
" দিতে, সেশন হাতের মুঠোয় দুইবার করা হয়ঃ"
#: ../../../developer/technical-overview.md:253
msgid ""
"A first handshake in **anonymous mode** to create a secure but anonymous "
"transport."
msgstr ""
"** অ্যানোনিমেড মোডে ** একটি নিরাপদ কিন্তু অ্যানোনিমেড পরিবহন তৈরি করার জন্য "
"প্রথম হাতের মিল।"
#: ../../../developer/technical-overview.md:255
msgid ""
"A second handshake in **certificate mode**, over the first one, to prove the"
" identity of peers."
msgstr ""
"**পূর্ববর্তী শংসাপত্রের চেয়ে **প্রমাণপত্র মোডে ** দ্বিতীয় হাতের মুঠোয় "
"সহকর্মীদের পরিচয় প্রমাণ করা।"
#: ../../../developer/technical-overview.md:258
msgid "Only PFS cipher suites are supported:"
msgstr "শুধুমাত্র পিএফএস সিফার স্যুইট সমর্থিতঃ"
#: ../../../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 "প্রকৃত cipher suite (gnuts আকারে) হলঃ"
#: ../../../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 ""
"কল সিগন্যালিং (ভি কার্ড, মিডিয়া আলোচনার, হ্যাং আপ, তাত্ক্ষণিক বার্তা,...)"
#: ../../../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 ব্যবহার করা হয়। ব্যবহৃত ক্রিপ্টোগ্রাফি "
"লাইব্রেরিটি জিএনইউটিএলএস"
#: ../../../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 ""
"আপনার গুগল বা গিটহাব অ্যাকাউন্ট বা গিট.জামি.নেট অ্যাকাউন্ট দিয়ে লগইন করুন"
#: ../../../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 ""
"আপনারও [এসএসএইচ কী আপলোড করা "
"দরকার]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 ""
"*সাবার ফায়ার লিনাক্সের কর্মীদের জন্য নোটঃ দয়া করে আপনার "
"@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 config --list`"
#: ../../../developer/working-with-gerrit.md:21
msgid "To Test your SSH Access"
msgstr "আপনার SSH অ্যাক্সেস পরীক্ষা করার জন্য"
#: ../../../developer/working-with-gerrit.md:23
msgid ""
"To check that your SSH access is properly setup, run the following command:"
msgstr ""
"আপনার SSH অ্যাক্সেস সঠিকভাবে সেট আপ করা হয়েছে কিনা তা পরীক্ষা করার জন্য, "
"নিম্নলিখিত কমান্ডটি চালানঃ"
#: ../../../developer/working-with-gerrit.md:25
msgid "`ssh -p 29420 <username>@review.jami.net`"
msgstr "`ssh -p 29420 <ব্যবহারকারীর নাম>@review.jami.net`"
#: ../../../developer/working-with-gerrit.md:27
msgid ""
"<username> is your Gerrit username, that you should have set during the "
"account creation. If not, you can do that here."
msgstr ""
"<username> আপনার Gerrit ব্যবহারকারীর নাম, যে আপনি অ্যাকাউন্ট তৈরি করার সময় "
"সেট করা উচিত ছিল. যদি না, আপনি এখানে এটি করতে পারেন."
#: ../../../developer/working-with-gerrit.md:44
msgid "Git Configuration"
msgstr "Git কনফিগারেশন"
#: ../../../developer/working-with-gerrit.md:46
msgid "Gerrit is the official git repository."
msgstr "জেরিত হল অফিসিয়াল গিট রিপোজিটরি।"
#: ../../../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 দূরবর্তী সেট-ইউআরএল উৎপত্তি "
"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 "`<প্রকল্প_নাম>` এর বদলে সঠিক প্রকল্প (উদাহরণঃ 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 config remote.origin.push HEAD:refs/for/master`"
#: ../../../developer/working-with-gerrit.md:64
msgid "To Create the Review"
msgstr "পর্যালোচনা তৈরি করতে"
#: ../../../developer/working-with-gerrit.md:66
msgid ""
"When pushing to this magic branch, a review will automatically be created on"
" Gerrit."
msgstr ""
"যখন এই জাদু শাখায় চাপ দেওয়া হবে, তখন স্বয়ংক্রিয়ভাবে জেরিতের উপর একটি "
"পর্যালোচনা তৈরি করা হবে।"
#: ../../../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 ""
"আপনি যদি ডিফল্টভাবে উপরে বর্ণিত হিসাবে refs/for/master কনফিগার করেন, তাহলে "
"কেবল"
#: ../../../developer/working-with-gerrit.md:72
msgid "`git push`"
msgstr "`git push `"
#: ../../../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 push origin <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 ""
"যদি আপনি এটি প্রথমবার চাপেন, তাহলে আপনাকে আপনার কমিট বার্তায় একটি পরিবর্তন-"
"আইডি সন্নিবেশ করার জন্য একটি পোস্ট-কমিট হুক ইনস্টল করতে বলা হবে। জেরিতের এটি"
" প্যাচসেটগুলি ট্র্যাক করার জন্য প্রয়োজন এবং আপনি এটি ইনস্টল না করা পর্যন্ত "
"চাপগুলি প্রত্যাখ্যান করবে। কেবল জেরিতের নির্দেশ অনুসারে হুক ইনস্টল করার জন্য"
" কমান্ডটি অনুলিপি করুন এবং পেস্ট করুন এবং আপনার কমিটগুলি সংশোধন করুন।"
#: ../../../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 ""
"আপনি একটি চলমান কাজ (অথবা খসড়া) চাপতে পারেন রেফ / জন্য / মাস্টার%প্রাইভেট "
"চাপ দিয়ে"
#: ../../../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 push private `"
#: ../../../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 ""
"ব্যক্তিগত কাজ প্যাচসেটগুলির মতোই, তবে তারা ডিফল্টরূপে অন্যদের কাছে দৃশ্যমান "
"নয় এবং কোনও জেঙ্কিনস বিল্ড ট্রিগার করে না।"