/ / गैर संस्कृति पृष्ठ - asp.net, umbraco, umbraco7 का अनुरोध करते समय बल संस्कृति / बहुभाषी पृष्ठ

गैर संस्कृति पृष्ठ - asp.net, umbraco, umbraco7 का अनुरोध करते समय बल संस्कृति / बहुभाष पृष्ठ

मेरी उम्ब्राको साइट पर, क्या कोई पृष्ठ सभी पृष्ठों के लिए डिफ़ॉल्ट बहु भाषा पृष्ठ पर रीडायरेक्ट करना संभव है, यदि कोई व्यक्ति इसमें बहु भाषा भाग के बिना पृष्ठ पर जाने का प्रयास करता है?

यहां एक उदाहरण है:

website.com/en/news
website.com/da/news

अगर कोई यात्रा करने का प्रयास करता है:

website.com/news

इसे इसके बजाय डिफ़ॉल्ट संस्कृति पृष्ठ पर रीडायरेक्ट करना चाहिए:

website.com/en/news

मैं इस तरह कुछ अनुमान लगा रहा हूं, बल्कि यह आसान होना चाहिए (जैसा कि मुझे लगता है कि यह ज्यादातर उपयोगकर्ता चाहते हैं), लेकिन मैं यह नहीं समझ सकता कि कैसे।

उत्तर:

जवाब के लिए 0 № 1

इसलिए जब तक मैं बेहतर "उत्तर" प्राप्त नहीं करता, तब तक मैं एक भयानक फिक्स कर रहा था। यह इस प्रकार चलता है:

var culture = HttpContext.Current.Request.Url.AbsolutePath.Split("/")[1];
if (culture != "en" && culture != "da")
{
var shortCulture = "en";

var languages = HttpContext.Current.Request.UserLanguages;

//Just making sure
if (languages != null && languages.Length > 0)
{
shortCulture = languages[0].Trim().Substring(0, 2);

//If the culture is something like fr (French), we default back to en
if (shortCulture != "en" && shortCulture != "da")
{
shortCulture = "en";
}
}
Uri uri = new Uri(HttpContext.Current.Request.Url.AbsoluteUri);
var url = uri.Scheme + Uri.SchemeDelimiter + uri.Host;
url += "/" + shortCulture + HttpContext.Current.Request.Url.AbsolutePath;
Response.RedirectPermanent(url);
}

तो मूल रूप से, अगर मैं अनुरोध करने का प्रयास करता हूं:

https://website.com/news
http://website.com/news
website.com/news
http://website.com/news/some-news-article/
etc. etc.

यह रीडायरेक्ट करेगा। उदाहरण:

https://website.com/news/
|
V
https://website.com/en/news/

(हालांकि यह आपके लोकेल पर निर्भर करता है)।

भयानक, भयानक, भयानक। मैं शर्मिंदा हूँ।


जवाब के लिए 0 № 2

ठीक है, तो उम्ब्राको 7 में, आप इसे सामग्रीफिंडर के साथ कर सकते हैं। यह ऐसा कुछ है जो सामग्री पाइपलाइन के हिस्से के रूप में चलाया जाता है जो कि एम्ब्राको को स्वयं नहीं ढूंढ सकता है।

एक सामग्री खोजक के लिए दो भाग हैं, वास्तविक सामग्रीफिंडर स्वयं, और फिर आपको इसे एम्म्ब्राको के लिए एप्लिकेशन स्टार्टअप ईवेंट पर तार करना होगा।

मैंने वास्तव में कुछ भी किया है जो आप कोशिश कर रहे हैं लेकिन विपरीत में (मेरी सभी सामग्री / सामग्री में है, लेकिन मैं वर्चुअल यूआरएल जैसे / एन-एन / सामग्री का उपयोग करता हूं और सामग्री खोजक में सबकुछ वापस मैप करता हूं)।

ContentFinders पर जानकारी के लिए, दस्तावेज़ देखें: https://our.umbraco.org/documentation/reference/routing/request-pipeline/icontentfinder

यहां एक गलती है जो मैंने पाया है कि आप जो कुछ भी कर रहे हैं वह बहुत कुछ करता है: https://gist.github.com/alindgren/4f8e47d9b2d769137be3

कंटेंटफाइंडर का लाभ यह है कि यह केवल उस सामग्री के लिए चलाया जाएगा जो आपके पास मौजूद समाधान जैसे प्रत्येक पृष्ठ लोड की तुलना में नहीं मिलता है, जिससे इसे और अधिक कुशल बना दिया जाता है!

उम्मीद है की वो मदद करदे!

:)