Umbraco में V6 यह निम्न आदेश के साथ एक dictionaryitem प्राप्त करना संभव है:उम्ब्राको भाषा द्वारा शब्दकोश वस्तु को मिलता है, कैसे?
umbraco.library.GetDictionaryItem("EmailSubject");
यह निर्भर करता है जो संस्कृति पर उपयोगकर्ता Umbraco वेबसाइट पर जाकर है "EmailSubject" के समुचित मान प्राप्त करता है।
अब मैं एक साधारण ईमेल क्लास लाइब्रेरी लिख रहा हूं जहां मुझे सिस्टम की परवाह नहीं है। थ्रेडिंग। थ्रेड। कंटेंट थ्रेड। कंटेंटकल्चर और मैं मूल्य प्राप्त करने से पहले हर समय वर्तमान संस्कृति को सेट नहीं करना चाहता हूं। यह काम करता है, लेकिन मुझे दृष्टिकोण पसंद नहीं है। मैं एक साधारण मेलिंग पुस्तकालय लिख रहा हूँ। प्रत्येक मेल प्राप्तकर्ता के लिए मुझे लगता है कि इस तरह की संस्कृति को स्थापित करना वास्तव में कुशल नहीं है।
समाधान मैंने पाया (ऑनलाइन खोज, मैं स्रोत खो खेद) निम्नलिखित उदाहरण है:
//2 = the 2nd language installed under Settings > Languages, which is German in my case
var sometext = new umbraco.cms.businesslogic.Dictionary.DictionaryItem("SomeText").Value(2);
मेरे द्वारा बनाए गए कुछ सहायक विधि यह आसान बनाने के लिए: प्राप्त करने के लिए
private string GetDictionaryText(string dictionaryItem, string language)
{
//try to retrieve from the cache
string dictionaryText = (string)HttpContext.Current.Cache.Get(dictionaryItem + language);
if (dictionaryText == null)
{
dictionaryText = new umbraco.cms.businesslogic.Dictionary.DictionaryItem(dictionaryItem).Value(GetLanguageId(language));
//add to cache
HttpContext.Current.Cache.Insert(dictionaryItem + language, dictionaryText, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);
}
return dictionaryText;
}
private int GetLanguageId(string language)
{
int languageId = 1; //1 = english, 2 = german, 3 = french, 4 = italian
switch (language)
{
case "de":
languageId = 2;
break;
case "fr":
languageId = 3;
break;
case "it":
languageId = 4;
break;
}
return languageId;
}
उदाहरण जर्मन में "ईमेलसब्जेक्ट", मेरे हेल्पर्स का उपयोग करके:
string emailSubject = GetDictionaryText("EmailSubject", "de");
यह काम करता है (ने umbraco 6.2.x के साथ परीक्षण किया) लेकिन जैसा कि आप देख सकते थे, हर बार जब आप इस तरह के एक पाठ चाहते हैं, तो umbraco.cms.businesslogic.Dictionary.DictionaryItem क्लास का एक नया उदाहरण बनाया जाना चाहिए ... जो आवश्यक नहीं है बुरा लेकिन मैं सोच रहा था कि इसके लिए एक स्थिर विधि उपलब्ध है, हो सकता है कि भाषा या संस्कृति आईडी के बजाय भाषा या संस्कृति (स्ट्रिंग के रूप में) निर्दिष्ट करने की अनुमति दे जो अलग-अलग वातावरण में भिन्न हो सकती है ...
चूंकि umbraco API बहुत बड़ा है (और कभी-कभी कुछ ठंडा विशेषताएं अनियंत्रित होती हैं) और मुझे इसके लिए एक बेहतर समाधान नहीं मिल सका, मैं सोच रहा था कि ऊपर सूचीबद्ध किए गए अतिरिक्त सहायक तरीकों के बिना, इसे प्राप्त करने के लिए बेहतर umbraco "मूल" तरीका है या नहीं।
अपने उत्तर में कृपया आप जिस umbraco संस्करण का उपयोग कर रहे हैं उसे सूचीबद्ध करें।
तो क्या आपको पूरी सूची मिलती है और इसे कैश में लोड किया जाता है? प्रत्येक भाषा के लिए? क्या umbraco समारोह का जिक्र कर रहे हैं? –