प्रतिवेदन
जिस प्रोजेक्ट पर मैंने काम किया, उसमें एक चुनिंदा फ़ील्ड थी जिसमें परिभाषित मान थे जो नहीं बदलेंगे। इसलिए, इस चयन में आइटमों को सूचीबद्ध करने के लिए, मैंने एक गणना वर्ग बनाने और फिर इन मूल्यों का वर्णन करने का निर्णय लिया। हालाँकि, परियोजना को अंग्रेजी और स्पेनिश भाषाओं का समर्थन करने की आवश्यकता थी, और संबंधित एनम आइटम के संदर्भ को खोए बिना इसे अनुकूलित करने के लिए चयनित विकल्पों के पाठ की आवश्यकता थी। दूसरे शब्दों में, यदि मैंने आइटम "घोड़ा" चुना है, तो मुझे यह जानने के लिए सिस्टम की आवश्यकता है कि यह आइटम अभी भी "घोड़ा" है, भले ही यह "घोड़ा" या "कैबेलो" के रूप में दिखाई दे। डेटा की अखंडता को बनाए रखने के लिए मैंने प्रोजेक्ट में एनम और लैंग को एकीकृत करते हुए निम्नलिखित संरचना बनाई।
एनम क्या हैं
एक संक्षिप्त परिचय. PHP संस्करण 8.1 से प्रारंभ करके, मानों की गणना के लिए एक विशेष वर्ग पेश किया गया था। व्यवहार में, इसका मतलब यह है कि हम एक ऐसा वर्ग बना सकते हैं जिसके संपत्ति मूल्य स्थिर होंगे। एक उदाहरण स्थिति है, क्योंकि यदि आप इसे मुफ़्त छोड़ देते हैं, तो पूरे कोड में संभवतः आपके पास एक "सक्रिय" स्थिति होगी, एक और "सक्रिय", एक और "सक्रिय" आदि। लेकिन यदि आप स्थिति को एक एनम से जोड़ते हैं और स्ट्रिंग टाइप करने के बजाय एनम का उपयोग करते हैं, तो मुझे यकीन है कि कोड में कहीं भी मान हमेशा एनम में एक ही होगा।
enum Status { case ATIVO = "ativo"; case INATIVO = "inativo"; case PENDENTE = "pendente"; }
एनम्स और लैंग
चूँकि एनम एक वर्ग है, मैं सामान्य रूप से अपनी कक्षा के लिए विधियाँ बना सकता हूँ। इसलिए, मैंने डिस्प्ले() विधि बनाई जो मेरे एनम मान के विज़ुअलाइज़ेशन को संभालने के लिए ज़िम्मेदार होगी, इसे उपयोगकर्ता द्वारा उपयोग की जाने वाली भाषा में अनुकूलित करेगी, हालांकि, मेरे एनम आइटम में मूल मान को बदले बिना। दूसरे शब्दों में, उपयोगकर्ता के लिए, स्थिति "लंबित", या "लंबित", या "लंबित" दिखाई देती है; लेकिन डेटाबेस में इसे केवल "लंबित" के रूप में सहेजा गया है - जो कि मूल मूल्य है और इसके माध्यम से मैं अपना आइटम एनम से प्राप्त कर सकता हूं, और उस आइटम से उपयोगकर्ता को अनुवादित दिखाने के लिए डिस्प्ले विधि का उपयोग कर सकता हूं।
लेकिन उदाहरण दिखाने से पहले, लारवेल लैंग का एक परिचय। लैंग प्रोजेक्ट रूट में अनुवादों को संग्रहीत करने के लिए एक फ़ोल्डर है जिसे आपका प्रोजेक्ट समर्थन करेगा। प्रत्येक भाषा में एक फ़ोल्डर होता है, और उस फ़ोल्डर में अनुवाद संदर्भों के लिए फ़ाइलें होती हैं। इन फ़ाइलों में एक सरणी होती है, जहां कुंजी शब्द का प्रतिनिधित्व होती है और मान संबंधित भाषा में अनुवाद होता है।
प्रदर्शन विधि को कॉन्फ़िगर करना
लैंग फ़ोल्डर में, मैं निम्नलिखित सरणी के साथ प्रत्येक भाषा फ़ोल्डर के लिए एक status.php फ़ाइल बनाऊंगा:
value => "Ativo", Status::INATIVO->value => "Inativo", Status::PENDENTE->value => "Pendente", ];
मैं संबंधित भाषा के संबंधित अनुवादों के लिए सरणी मानों को सही करता हूं।
और मेरी प्रदर्शन विधि इन स्टेटस.php फ़ाइलों में एनम आइटम का अनुवाद लाएगी और यह मान वापस कर देगी।
public function display(): string { return trans('status.'.$this->value); }
उपयोग का उदाहरण:
// EN echo Status::ATIVO->display(); // Active // PT_BR echo Status::INATIVO->display(); // Inativo // ES echo Status::PENDENTE->display(); // Pediente
निष्कर्ष
इसके साथ, मैं गारंटी देता हूं कि मेरा एनम मान मेरे कोड में स्थिर रहता है, लेकिन यह डेटा अखंडता खोए बिना डिस्प्ले विधि का उपयोग करके उपयोगकर्ता की भाषा को अनुकूलित करता है। यदि मैं सिस्टम में कोई नई भाषा जोड़ता हूं तो यह लचीला भी रहता है। मुझे आशा है कि आपने इसका आनंद लिया और अगली बार मिलेंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3