Pyramid documentation हमें दिखाता है कि दृश्यों के अंदर i18n का उपयोग कैसे करें (और templates as well)। लेकिन विचारों और टेम्पलेट्स के बाहर इसका उपयोग कैसे किया जाता है, जहां हमारे पास वर्तमान request
(उदाहरण के लिए, forms
और models
) तक कोई पहुंच नहीं है?विचारों और टेम्पलेट्स के बाहर पिरामिड i18n का उपयोग कैसे करें?
@ माइकल ने request
को मॉडल और रूपों में पास करने के लिए कहा। लेकिन क्या यह सही है? मेरा मतलब है कि फॉर्म फ़ील्ड __init__()
विधि कॉल से पहले परिभाषित करता है, मॉडल के साथ ही। वे विचारों से कोई पैरामीटर नहीं दिख रहा है ...
Pylons में हम बस get_lang()
और set_lang()
का उपयोग करें और माता पिता के नियंत्रक में बेहतर भाषा को परिभाषित करने और उसके बाद ugettext()
और किसी भी जगह हम चाहते हैं में ungettext()
का उपयोग यह request
से सीधे हर बुला बिना कर सकता है संभव समय (विचारों में)।
पिरामिड में ऐसा कैसे करें? ध्यान दें कि भाषा उपयोगकर्ता की सेटिंग्स (सत्र, कुकीज़, डीबी, आदि) से सेट की जानी चाहिए।
'get_localizer में इस तर्क रख सकते हैं 'fr' के रूप में यह सेट हो जाएगा() को पैरामीटर 'अनुरोध' की आवश्यकता है, इसलिए इसका मतलब है कि मैं इसे केवल दृश्य फ़ंक्शन (या कक्षा) के अंदर उपयोग कर सकता हूं। लेकिन बाहरी विचारों का उपयोग कैसे करें? –
वैसे आप इसे अपने फॉर्म/मॉडल में पास करके 'अनुरोध' तक पहुंचते हैं, या 'get_current_request() 'का उपयोग करते हैं या आप अपना खुद का स्थानीयकरण करते हैं क्योंकि वह लिंक' make_localizer' के माध्यम से कहता है। 'अनुरोध' निर्धारित करता है कि स्थानीयकरणकर्ता द्वारा लोकेल का उपयोग किस प्रकार किया जाना चाहिए, और यदि आप उस व्यवहार को बनाए रखना चाहते हैं तो स्पष्ट रूप से आपको 'अनुरोध' की आवश्यकता है। –
ऐसा लगता है कि आपने "अनुवाद कैसे करें" के लिए "विचारों/टेम्पलेट्स के बाहर अनुवाद कैसे करें" से प्रश्न बदल दिया है। मुझे लगता है कि मैंने जवाब में आपके मूल प्रश्न का उत्तर दिया और पिरामिड इस तरह के संबंध में टिप्पणियों का उत्तर दिया। यह जानने के लिए कि पिरामिड अनुवाद कैसे करता है, आपको पूरे पृष्ठ को पढ़ना चाहिए क्योंकि यह वास्तव में "अभ्यास में" में से अधिकांश को कवर करता है। –