From 8f8a188ade9c7f3d36dd2556654ddaf3e79a6512 Mon Sep 17 00:00:00 2001 From: HYBRID <48980248+hybridvamp@users.noreply.github.com> Date: Sat, 28 Oct 2023 03:53:22 +0400 Subject: [PATCH] Add Hindi language (by @hybridvamp, in #218) Co-authored-by: Stefano Pigozzi --- config/template_config.toml | 3 +- strings/hi.py | 415 ++++++++++++++++++++++++++++++++++++ worker.py | 4 + 3 files changed, 421 insertions(+), 1 deletion(-) create mode 100644 strings/hi.py diff --git a/config/template_config.toml b/config/template_config.toml index f2d956f..4de03de 100644 --- a/config/template_config.toml +++ b/config/template_config.toml @@ -11,8 +11,9 @@ # he - Hebrew, by https://github.com/netanelkoli # es_mx - Spanish (Mexican), by https://github.com/mastersuv # pt_br - Brasilian by https://github.com/eufelipemateus +# hi - Hindi by https://github.com/hybridvamp # The lanugages that messages can be displayed in -enabled_languages = ["it", "en", "uk", "ru", "zh_cn", "he", "es_mx", "pt_br"] +enabled_languages = ["it", "en", "uk", "ru", "zh_cn", "he", "es_mx", "pt_br", "hi"] # The default language to be set for users whose language cannot be autodetected or whose language is not enabled default_language = "it" # The language to fallback to if a string is missing in a specific language diff --git a/strings/hi.py b/strings/hi.py new file mode 100644 index 0000000..f8f259d --- /dev/null +++ b/strings/hi.py @@ -0,0 +1,415 @@ +# Strings / localization file for greed +# Can be edited, but DON'T REMOVE THE REPLACEMENT FIELDS (words surrounded by {curly braces}) + +# Currency symbol +currency_symbol = "€" + +# Positioning of the currency symbol +currency_format_string = "{symbol} {value}" + +# Quantity of a product in stock +in_stock_format_string = "{quantity} उपलब्ध हैं" + +# Copies of a product in cart +in_cart_format_string = "{quantity} कार्ट में" + +# Product information +product_format_string = "{name}\n" \ + "{description}\n" \ + "{price}\n" \ + "{cart}" + +# Order number, displayed in the order info +order_number = "आदेश #{id}" + +# Order info string, shown to the admins +order_format_string = "के द्वारा {user}\n" \ + "तिथि पर बनाया गया: {date}\n" \ + "\n" \ + "{items}\n" \ + "कुल: {value}\n" \ + "\n" \ + "ग्राहक नोट: {notes}\n" + +# Order info string, shown to the user +user_order_format_string = "{status_emoji} आदेश {status_text}\n" \ + "{items}\n" \ + "कुल: {value}\n" \ + "\n" \ + "टिप्पणियाँ: {notes}\n" + +# Transaction page is loading +loading_transactions = "लेन-देन लोड हो रहे हैं...\n" \ + "कृपया कुछ सेकंड प्रतीक्षा करें।" + +# Transactions page +transactions_page = "पृष्ठ {page}:\n" \ + "\n" \ + "{transactions}" + +# transactions.csv caption +csv_caption = "बॉट डेटाबेस में संचित सभी लेन-देन को समरूपित करने वाला एक 📄 .csv फ़ाइल बनाई गई है।\n" \ + "आप इस फ़ाइल को अन्य कार्यक्रमों के साथ खोल सकते हैं, जैसे LibreOffice Calc, डेटा प्रसंस्करण के लिए।" + +# Conversation: the start command was sent and the bot should welcome the user +conversation_after_start = "नमस्ते!\n" \ + "greed में आपका स्वागत है!\n" \ + "यह कोड सॉफ़्टवेयर का 🅱️ बीटा संस्करण है।\n" \ + "यह पूरी तरह से उपयोग योग्य है, लेकिन कुछ बग्स अब भी मौजूद हो सकते हैं।\n" \ + "यदि आपको कोई मिलता है, तो कृपया उन्हें https://github.com/Steffo99/greed/issues पर रिपोर्ट करें।" + +# Conversation: to send an inline keyboard you need to send a message with it +conversation_open_user_menu = "आप क्या करना चाहेंगे?\n" \ + "💰 आपके पास {credit} अपने वॉलेट में है।\n" \ + "\n" \ + "नीचे की कीबोर्ड पर किसी ऑपरेशन का चयन करने के लिए एक कुंजी दबाएं।\n" \ + "अगर कीबोर्ड नहीं खुला है, तो आप चार छोटे वर्ग वाले बटन को दबाकर इसे खोल सकते हैं।" + +# Conversation: like above, but for administrators +conversation_open_admin_menu = "आप इस दुकान के 💼 प्रबंधक हैं!\n" \ + "आप क्या करना चाहेंगे?\n" \ + "\n" \ + "एक क्रिया चुनने के लिए नीचे कीबोर्ड पर कुंजी दबाएं।\n" \ + "अगर कीबोर्ड नहीं खुला है, तो आप मैसेज बार में चार छोटे वर्ग वाले बटन को दबाकर उसे खोल सकते हैं।" + +# Conversation: select a payment method +conversation_payment_method = "आप अपने वॉलेट में फंड कैसे जोड़ना चाहेंगे?" + +# Conversation: select a product to edit +conversation_admin_select_product = "✏️ आप कौनसा उत्पाद संपादित करना चाहेंगे?" + +# Conversation: select a product to delete +conversation_admin_select_product_to_delete = "❌ आप कौनसा उत्पाद हटाना चाहेंगे?" + +# Conversation: select a user to edit +conversation_admin_select_user = "संपादित करने के लिए एक उपयोगकर्ता का चयन करें।" + +# Conversation: click below to pay for the purchase +conversation_cart_actions = "उपर स्क्रोल करके उन उत्पादों के नीचे जाकर उन्हें कार्ट में जोड़ने के लिए नीचे दिए गए " \ + "जोड़ें बटन को दबाएं। जब आपका कार्ट तैयार हो, तो इस संदेश पर वापस जाएं और " \ + "नीचे दिए गए डन बटन को दबाएं।" + +# Conversation: confirm the cart contents +conversation_confirm_cart = "🛒 आपका कार्ट निम्नलिखित उत्पादों को समेत रखता है:\n" \ + "{product_list}" \ + "कुल: {total_cost}\n" \ + "\n" \ + "यदि आप आगे बढ़ना चाहते हैं, तो इस संदेश के नीचे दिए गए डन बटन को दबाएं।\n" \ + "रद्द करने के लिए, रद्द बटन दबाएं।" + +# Live orders mode: start +conversation_live_orders_start = "आप लाइव आदेश मोड में हैं\n" \ + "ग्राहकों द्वारा नई आदेश प्लेस किए जाने पर वे इस चैट में वास्तविक समय में प्रकट होंगे, और आप" \ + " उन्हें ✅ पूरा किया गया मार्क" \ + " कर सकेंगे या ग्राहक को क्रेडिट ✴️ वापस कर सकेंगे।" + +# Live orders mode: stop receiving messages +conversation_live_orders_stop = "फ़ीड बंद करने के लिए इस संदेश के नीचे दिए गए स्टॉप बटन को दबाएं।" + +# Conversation: help menu has been opened +conversation_open_help_menu = "आपको किस प्रकार की सहायता चाहिए?" + +# Conversation: confirm promotion to admin +conversation_confirm_admin_promotion = "क्या आप इस उपयोगकर्ता को 💼 प्रबंधक बनाना चाहते हैं?\n" \ + "यह एक अपरिपरिणामी क्रिया है!" + +# Conversation: language select menu header +conversation_language_select = "एक भाषा चुनें:" + +# Conversation: switching to user mode +conversation_switch_to_user_mode = "आप 👤 ग्राहक मोड में स्विच कर रहे हैं।\nयदि आप 💼 प्रबंधक मेनू पर वापस जाना चाहते हैं, तो /start के साथ बातचीत फिर से शुरू करें।" + +# Notification: the conversation has expired +conversation_expired = "🕐 मैंने कुछ समय से कोई संदेश प्राप्त नहीं किए हैं, इसलिए मैंने संविदान को संचयन संबंधित संसाधनों को बचाने के लिए बंद कर दिया है।\nयदि आप एक नई बातचीत शुरू करना चाहते हैं, तो एक नई /start कमांड भेजें।" + +# User menu: order +menu_order = "🛒 उत्पाद आर्डर करें" + +# User menu: order status +menu_order_status = "🛍 मेरे आदेश" + +# User menu: add credit +menu_add_credit = "💵 फंड जोड़ें" + +# User menu: bot info +menu_bot_info = "ℹ️ बॉट जानकारी" + +# User menu: cash +menu_cash = "💵 नकद से" + +# User menu: credit card +menu_credit_card = "💳 क्रेडिट कार्ड से" + +# Admin menu: products +menu_products = "📝 उत्पाद" + +# Admin menu: orders +menu_orders = "📦 आदेश" + +# Menu: transactions +menu_transactions = "💳 लेन-देन सूची" + +# Menu: edit credit +menu_edit_credit = "💰 लेन-देन बनाएं" + +# Admin menu: go to user mode +menu_user_mode = "👤 ग्राहक मोड पर स्विच करें" + +# Admin menu: add product +menu_add_product = "✨ नया उत्पाद" + +# Admin menu: delete product +menu_delete_product = "❌ उत्पाद हटाएं" + +# Menu: cancel +menu_cancel = "🔙 रद्द करें" + +# Menu: skip +menu_skip = "⏭ छोड़ें" + +# Menu: done +menu_done = "✅ किया गया" + +# Menu: pay invoice +menu_pay = "💳 भुगतान करें" + +# Menu: complete +menu_complete = "✅ पूरा करें" + +# Menu: refund +menu_refund = "✴️ वापसी" + +# Menu: stop +menu_stop = "🛑 रोकें" + +# Menu: add to cart +menu_add_to_cart = "➕ जोड़ें" + +# Menu: remove from cart +menu_remove_from_cart = "➖ हटाएं" + +# Menu: help menu +menu_help = "❓ मदद / समर्थन" + +# Menu: guide +menu_guide = "📖 मार्गदर्शन" + +# Menu: next page +menu_next = "▶️ अगला पृष्ठ" + +# Menu: previous page +menu_previous = "◀️ पिछला पृष्ठ" + +# Menu: contact the shopkeeper +menu_contact_shopkeeper = "👨‍💼 दुकानदार से संपर्क करें" + +# Menu: generate transactions .csv file +menu_csv = "📄 लेन-देन .csv फ़ाइल बनाएं" + +# Menu: edit admins list +menu_edit_admins = "🏵 प्रबंधक सूची संपादित करें" + +# Menu: language +menu_language = "🇬🇧 भाषा" + +# Emoji: unprocessed order +emoji_not_processed = "*️⃣ अप्रक्रियित आदेश" + +# Emoji: completed order +emoji_completed = "✅ पूरा हुआ आदेश" + +# Emoji: refunded order +emoji_refunded = "✴️ वापसी किया गया आदेश" + +# Emoji: yes +emoji_yes = "✅ हां" + +# Emoji: no +emoji_no = "🚫 नहीं" + +# Text: unprocessed order +text_not_processed = "अप्रक्रियित" + +# Text: completed order +text_completed = "पूरा हुआ" + +# Text: refunded order +text_refunded = "वापसी किया गया" + +# Text: product not for sale +text_not_for_sale = "बेचने के लिए नहीं" + +# Add product: name? +ask_product_name = "उत्पाद का नाम क्या होना चाहिए?" + +# Add product: description? +ask_product_description = "उत्पाद का विवरण क्या होना चाहिए?" + +# Add product: price? +ask_product_price = "उत्पाद की मूल्य क्या होनी चाहिए?\n" \ + "X दर्ज करें अगर आप इस उत्पाद को अब बेचना नहीं चाहते हैं." + +# Add product: image? +ask_product_image = "🖼 आप इस उत्पाद को किस छवि के साथ चाहेंगे?\n" \ + "तस्वीर भेजें, या इस चरण को छोड़ें और कोई छवि न जोड़ें." + +# Order product: notes? +ask_order_notes = "क्या आप आदेश के साथ एक नोट छोड़ना चाहेंगे?\n" \ + "💼 यह दुकान प्रबंधकों को दिखाई देगा.\n" \ + "नोट के साथ एक संदेश भेजें जिसे आप छोड़ना चाहते हैं, या इस संदेश के नीचे स्थित" \ + " स्किप बटन दबाकर कुछ न छोड़ें." + +# Refund product: reason? +ask_refund_reason = "इस वापसी के साथ एक कारण जोड़ें।\n" \ + "👤 यह ग्राहक को दिखाई देगा।" + +# Edit credit: notes? +ask_transaction_notes = "इस लेन-देन के साथ एक नोट जोड़ें।\n" \ + "👤 यह ग्राहक को क्रेडिट/डेबिट करने के बाद और लेन-देन लॉग में 💼 प्रबंधकों को दिखाई देगा।" + +# Edit credit: amount? +ask_credit = "आप ग्राहक के क्रेडिट को कैसे बदलना चाहते हैं?\n" \ + "राशि शामिल करने वाले संदेश को भेजें।\n" \ + "ग्राहक के खाते में क्रेडिट जोड़ने के लिए + और उसे कम करने के लिए - का प्रयोग करें." + +# Header for the edit admin message +admin_properties = "{name} की अनुमतियाँ:" + +# Edit admin: can edit products? +prop_edit_products = "उत्पादों को संपादित करें" + +# Edit admin: can receive orders? +prop_receive_orders = "आदेश प्राप्त करें" + +# Edit admin: can create transactions? +prop_create_transactions = "लेन-देन प्रबंधित करें" + +# Edit admin: show on help message? +prop_display_on_help = "ग्राहक को दिखाएं" + +# Thread has started downloading an image and might be unresponsive +downloading_image = "मैं आपकी तस्वीर डाउनलोड कर रहा हूँ!\n" \ + "यह कुछ समay लग सकता है... कृपया धैर्य रखें!\n" \ + "मैं डाउनलोड करते समay आपके सवालों का उत्तर नहीं देंगा." + +# Edit product: current value +edit_current_value = "वर्तमान मूल्य है:\n" \ + "
{value}
\n" \ + "इस संदेश के नीचे स्थित स्किप बटन दबाकर समान मूल्य रखने के लिए कृपया दबाएं." + +# Payment: cash payment info +payment_cash = "आप दुकान के भौतिक स्थान पर नकद में भुगतान कर सकते हैं।\n" \ + "चेकआउट पर भुगतान करें, और मैनेजर को इस आईडी दें:\n" \ + "{user_cash_id}" + +# Payment: invoice amount +payment_cc_amount = "अपने वॉलेट में कितने फंड जोड़ना चाहेंगे?\n" \ + "नीचे दिए गए बटनों के साथ एक राशि का चयन करें, या सामान्य कीबोर्ड के साथ उसे मैन्युअल रूप से दर्ज करें." + +# Payment: add funds invoice title +payment_invoice_title = "फंड जोड़ना" + +# Payment: add funds invoice description +payment_invoice_description = "इस चालान को भुगतान करने से {amount} आपके वॉलेट में जोड़ा जाएगा." + +# Payment: label of the labeled price on the invoice +payment_invoice_label = "रीलोड" + +# Payment: label of the labeled price on the invoice +payment_invoice_fee_label = "लेन-देन शुल्क" + +# Notification: order has been placed +notification_order_placed = "एक नया आदेश दिया गया है:\n" \ + "{order}" + +# Notification: order has been completed +notification_order_completed = "आपका आदेश पूरा हुआ है!\n" \ + "{order}" + +# Notification: order has been refunded +notification_order_refunded = "आपका आदेश वापस किया गया है!\n" \ + "{order}" + +# Notification: a manual transaction was applied +notification_transaction_created = "ℹ️ आपके वॉलेट में एक नई लेन-देन लागू की गई है:\n" \ + "{transaction}" + +# Refund reason +refund_reason = "वापसी का कारण:\n" \ + "{reason}" + +# Info: informazioni sul bot +bot_info = 'यह बॉट greed का उपयोग कर रहा है,' \ + ' जो @Steffo द्वारा बनाया गया है और Telegram भुगतान के लिए जारी किया गया है' \ + ' ' \ + 'Affero General Public License 3.0 के तहत।\n' + +# Help: guide +help_msg = "greed का मार्गदर्शन इस पते पर उपलब्ध है:\n" \ + "https://github.com/Steffo99/greed/wiki" + +# Help: contact shopkeeper +contact_shopkeeper = "वर्तमान में, उपयोगकर्ता सहायता प्रदान करने के लिए उपलब्ध कर्मचारी इस प्रकार हैं:\n" \ + "{shopkeepers}\n" \ + "किसी नाम पर क्लिक/टैप करें ताकि आप उनसे एक Telegram चैट में संपर्क कर सकें." + +# Success: product has been added/edited to the database +success_product_edited = "✅ उत्पाद को सफलता से जोड़ा/संशोधित किया गया है!" + +# Success: product has been added/edited to the database +success_product_deleted = "✅ उत्पाद को सफलता से हटा दिया गया है!" + +# Success: order has been created +success_order_created = "✅ आदेश सफलता से भेजा गया!\n" \ + "{order}" + +# Success: order was marked as completed +success_order_completed = "✅ आपने आदेश #{order_id} को पूरा किया है।" + +# Success: order was refunded successfully +success_order_refunded = "✴️ आदेश #{order_id} को वापस किया गया था।" + +# Success: transaction was created successfully +success_transaction_created = "✅ लेन-देन को सफलता से बनाया गया था!\n" \ + "{transaction}" + +# Error: message received not in a private chat +error_nonprivate_chat = "⚠️ यह बॉट केवल निजी चैट में काम करता है।" + +# Error: a message was sent in a chat, but no worker exists for that chat. +# Suggest the creation of a new worker with /start +error_no_worker_for_chat = "⚠️ बॉट के साथ बातचीत टूट गई थी।\n" \ + "इसे पुनः प्रारंभ करने के लिए, बॉट को /start कमांड भेजें।" + +# Error: a message was sent in a chat, but the worker for that chat is not ready. +error_worker_not_ready = "🕒 बॉट के साथ बातचीत अभी प्रारंभ हो रही है।\n" \ + "कृपया, और कमांड भेजने से पहले कुछ क्षण प्रतीक्षा करें!" + +# Error: add funds amount over max +error_payment_amount_over_max = "⚠️ एक ही लेन-देन में जोड़ने की जा सकने वाली अधिकतम राशि {max_amount} है।" + +# Error: add funds amount under min +error_payment_amount_under_min = "⚠️ एक ही लेन-देन में जोड़ने की जा सकने वाली न्यूनतम राशि {min_amount} है।" + +# Error: the invoice has expired and can't be paid +error_invoice_expired = "⚠️ इस चालान की समय सीमा समाप्त हो गई है और यह भुगतान नहीं किया जा सकता है। अगर आप फंड जोड़ना चाहते हैं, तो 'फंड जोड़ना' मेनू विकल्प का उपयोग करें।" + +# Error: a product with that name already exists +error_duplicate_name = "⚠️ इसी नाम के साथ एक उत्पाद पहले से मौजूद है।" + +# Error: not enough credit to order +error_not_enough_credit = "⚠️ आपके पास आदेश देने के लिए पर्याप्त क्रेडिट नहीं है।" + +# Error: order has already been cleared +error_order_already_cleared = "⚠️ इस आदेश को पहले से ही प्रक्रिया किया गया है।" + +# Error: no orders have been placed, so none can be shown +error_no_orders = "⚠️ आपने अब तक कोई आदेश नहीं दिया है, इसलिए कुछ दिखाने के लिए कुछ नहीं है।" + +# Error: selected user does not exist +error_user_does_not_exist = "⚠️ चयनित उपयोगकर्ता मौजूद नहीं है।" + +# Fatal: conversation raised an exception +fatal_conversation_exception = "☢️ अरे नहीं! एक त्रुटि ने इस बातचीत को बाधित किया\n" \ + "त्रुटि बॉट मालिक को सूचित की गई है ताकि वह इसे ठीक कर सके।\n" \ + "बातचीत पुनः प्रारंभ करने के लिए, बॉट को /start कमांड भेजें." diff --git a/worker.py b/worker.py index 95aab3a..92bf6b3 100644 --- a/worker.py +++ b/worker.py @@ -1496,6 +1496,10 @@ class Worker(threading.Thread): lang = "🇧🇷 Português" keyboard.append([telegram.KeyboardButton(lang)]) options[lang] = "pt_br" + if "hi" in self.cfg["Language"]["enabled_languages"]: + lang = "🇮🇳 हिन्दी" + keyboard.append([telegram.KeyboardButton(lang)]) + options[lang] = "hi" # Send the previously created keyboard to the user (ensuring it can be clicked only 1 time) self.bot.send_message(self.chat.id, self.loc.get("conversation_language_select"),