सी # रिसोर्स फाइल्स ऐवजी आय 18 एन चा सोपा फॉर्म कसा वापरायचा (रेक्स फाइल्स)

स्त्रोत फाइल्स (रेक्स फाइल्स) थकल्या?

तुमच्यापैकी बर्‍याच जणांप्रमाणे, मी बर्‍याच वर्षांपासून सी # अनुप्रयोग विकसित करीत आहे. असे अनेकवेळे होते जेव्हा मला की-व्हॅल्यूज म्हणून भाषांतरित करण्यासाठी .रेक्स फायली वापराव्या लागल्या. रेक्स फाइल्स वापरण्याचे काही फायदे आहेतः

1- हे संपादक व्हिज्युअल स्टुडिओमध्ये अंगभूत आहे 2- व्हिज्युअल स्टुडियो भाषांतर मूल्ये प्रदान करण्यासाठी एक स्थिर वर्ग तयार करतो

परंतु यामध्ये काही समस्या आहेत: 1- रेक्सॉक्स फायली संपादित करणे केवळ व्हिज्युअल स्टुडिओमध्ये शक्य आहे. जरी आम्ही तृतीय-पक्ष अ‍ॅप्‍स जरी झेटाऊरसोर्सएडिटर किंवा रेसएक्ससोर्समेनेजर वापरत असलो तरीही आम्ही विंडोज ऑपरेटिंग सिस्टमपुरते मर्यादित आहोत. 2- ज्यांना outputप्लिकेशन आउटपुटमध्ये कमी dlls ची काळजी असते त्यांच्यासाठी, रेक्स फाइल्स एक समस्या आहे, कारण applicationप्लिकेशन आउटपुटमध्ये बरेच उपग्रह असेंब्ली असतात. 3- रेक्सॅक्स पध्दतीसह अवलंबित्व इंजेक्शन क्षुल्लक नसते आणि स्थिर वर्गाभोवती काही रॅपर्सची आवश्यकता असते.

आपल्याकडे एखाद्या पर्यायाबद्दल उत्सुक असल्यास वाचन सुरू ठेवा.

JSON बचाव!

पर्याय म्हणून आम्ही आपली भाषांतर संचयित करण्यासाठी JSON वापरू शकतो. मी libc.translation नावाचे एक रेपॉजिटरी तयार केली आहे जी सोर्स कोडच्या केवळ 6 फायलींनी हे कार्य करते. कोडचा हा तुकडा आम्हाला कशी मदत करेल ते पाहूया:

1- नुजेट पॅकेजचा संदर्भः https://www.nuget.org/packages/libc.translation/

२- आता आम्हाला आपली भाषांतर जेएसओएन फाइलमध्ये लिहिण्याची गरज आहे (आमचे स्थानिकरण स्त्रोत तयार करा). आमची JSON फाईल भाषांतरांची संस्कृती म्हणून की सह ऑब्जेक्ट आहे. खाली एक उदाहरण आहेः

अरबी (एआर), पर्शियन (एफए) आणि इंग्रजी (एन) भाषांतर की-मूल्यांसह असलेल्या जेएसओएन फाइलचे उदाहरण

3- ILocalizationS स्त्रोत म्हणून या फाईलचा वापर करण्याचे दोन मार्ग आहेत:

3-1- ही फाइल आमच्या असेंबलीमध्ये एम्बेड करा: सोल्यूशन एक्सप्लोररमध्ये फाईल निवडा आणि एफ 4 दाबा. प्रॉपर्टी पॅनेलमध्ये “बिल्ड Actionक्शन” म्हणून “एम्बेड केलेले संसाधन” निवडा. आता JSON फाईल आमच्या असेंब्लीमध्ये एम्बेड केली आहे :-) माझा दृष्टिकोन वापरुन लक्षात ठेवा आउटपुटमध्ये कोणत्याही उपग्रह असेंब्ली होणार नाहीत

3–2- ही फाईल डिस्कवर कुठेतरी साठवा.

4- या लेखात मी अंतःस्थापित जेएसओएन फाइल (3-1) सह जात आहे. जर आमच्या प्रोजेक्टचे नाव "libc.translation.tests" असेल तर आम्ही आयलोकॅलायझेशन स्त्रोताचे उदाहरण तयार करू शकतोः

ILocalizationSource चा एक उदाहरण तयार करा

लोकलायझेशन सोर्स वर्गामध्ये काही इतर कन्स्ट्रक्टर ओव्हरलोड देखील आहेत जे आम्हाला फाईलइन्फो, JObject किंवा JSON डेटासाठी प्रवाह प्रदान करण्याची परवानगी देतात.

बर्‍याच वेळा आम्ही थेट स्थानिक विकास स्त्रोत वापरत नाही. त्याऐवजी, आम्ही स्त्रोत लोकॅलायझर कन्स्ट्रक्टरकडे देतो:

ILocalizer ची घटना तयार करा

“फॉलबॅककल्चर” पॅरामीटर असल्याचे तुमच्या लक्षात आले आहे का? नावाप्रमाणेच, जेव्हा आमच्या भाषांतरांमध्ये एखादी संस्कृती गहाळ असते तेव्हा फॉलबॅक संस्कृती वापरली जाते. वरील उदाहरणात जेएसओएन, चला आमच्या कोडमध्ये कुठेतरी गृहित धरू आम्ही “डी” (जर्मन) भाषेमधील “अवैध-इनपुट” की चे भाषांतर मूल्य मिळवण्याचा प्रयत्न करतो. “डी” संस्कृती JSON फाईलमध्ये निर्दिष्ट केलेली नाही, म्हणून लोकॅलायझर उदाहरण फॉलबॅक संस्कृती वापरते आणि “एआर” (अरबी) मधील मूल्य परत करते.

5- काही की आणि इच्छित संस्कृतींचा वापर करुन भाषांतर मूल्ये पुनर्प्राप्त करण्याची वेळ आली आहे:

5-1- एक संस्कृती पास केल्याशिवाय भाषांतर मिळवा: फक्त की (केस-असंवेदनशील) पास करा. येथे स्थानिक लोक थ्रेडची संस्कृती वापरतील: (थ्रेडची सद्य संस्कृती जेएसओएन फाइलमध्ये नसल्यास फॉलबॅक संस्कृती वापरली जाईल हे लक्षात ठेवा)

संस्कृती न जाता अनुवाद मिळवा

5–2- विशिष्ट संस्कृतीत अनुवाद मिळवा: इच्छित संस्कृती पास करा, मग की (केस-असंवेदनशील) (लक्षात ठेवा की दिलेली संस्कृती जेएसओएन फाइलमध्ये नसल्यास फेलबॅक संस्कृती वापरली जाईल). चला एक उदाहरण पाहू:

विशिष्ट संस्कृतीत अनुवाद मिळवा. फॉलबॅक संस्कृतीचीही चाचणी घ्या

वरील पहिल्या ब्लॉकमध्ये, आम्हाला “एन” (इंग्रजी) संस्कृतीत “अवैध इनपुट” की भाषांतर मूल्याची आवश्यकता आहे. दुसर्‍या ब्लॉकमध्ये आम्ही हा अनुवाद "डी" (जर्मन) संस्कृतीत आणण्याचा प्रयत्न केला, परंतु आमच्या डीपी मध्ये "डी" उपलब्ध नसल्यामुळे, लोकलायझर फॉलबॅक संस्कृतीत अनुवाद पुनर्प्राप्त करण्याचा प्रयत्न करेल (जे "एआर" आहे.) अरबी))

–-–- एक संस्कृती पास न करता स्वरूपित भाषांतर (स्ट्रिंग.फोरमेट वापरुन) मिळवा:

एक संस्कृती पास न करता स्वरूपित अनुवाद मिळवा

येथे आम्ही की पास केली (लक्षात घ्या की पहिले अक्षर लोअर-केसमध्ये आहे जे "अप्पर-केस" अज्ञातरॉरच्या विरूद्ध आहे) आणि सध्याच्या थ्रेडची संस्कृती (जी अरबी आहे) वापरली आहे. आणि तसेच, स्ट्रिंग प्रमाणेच. फॉर्मेट, लोकॅलायझर “{0}” चे “!!!” सह पुनर्स्थित करते.

अधिक उदाहरणे पाहण्यासाठी आपण प्रदान केलेल्या चाचण्यांवर एक नजर टाकू शकता.

निष्कर्ष:

या लेखात, आम्ही. नेट स्टँडर्ड ०.० (. नेट कोअर आणि. नेट फ्रेमवर्क 6.6.१+) प्रकल्पांमध्ये आपले अनुप्रयोग स्थानिक करण्याचे पर्यायी मार्ग वापरण्याचा प्रयत्न केला. आम्ही एक आयलोकॅलायझेशन स्त्रोत कसे तयार करावे ते ILocalization च्या उदाहरणाकडे कसे पाठवायचे ते पाहिले.

साईद फराही एक इराणी सॉफ्टवेअर डेव्हलपर आहे जो प्रामुख्याने नेट नेट फ्रेमवर्क आणि. नेट कोअर इकोसिस्टम वर लक्ष केंद्रित करतो. त्याला जगातील कोठूनही कोणत्याही भाड्याने घेतलेल्या ऑफरमध्ये रस आहे :-)