2015-04-15 26 views
17

Şu anda Main Menus ile Culture Layers (en/de) kullanıyorum. Düzenli (çevrilmiş) İçerik için çalışıyor. Ancak, Kullanıcı/Hesap veya MyModule/List gibi Özel Modüller/Sayfalar için Menünün hiç görünmediğiÇeviri Üzerine Menü Özel Modül Sitelerinde kayboluyor Katman

.

Bu sorunu nasıl düzeltebilirim?

+0

Eğer bir örnek var mı kültür yönlendirme yoluyla çözülmesini ediliyorsa

, aşağıdaki kodu kullanabilirsiniz Menü kodu veya etkilenen sayfanın URL'si olabilir mi? – JDandChips

+0

Üzgünüm URL henüz kamuya açık değil. Menü için özel bir kod yok, sadece bir "Almanca" ve mevcut kültüre bağlı bir "İngilizce" Menüsü. Kontrolörlerin kültürü "yayınlama" gibi görünmediği için denetleyiciden döndürülen görünüm için herhangi bir kültür ayarlanmamıştır. Belki de [Temalı] 'gibi bir özellik var ama kültür için ... –

+0

Uygulamada kültür nasıl çözülür? Yönlendirme tablosundan ayarlandı mı ve adresinden mi çözüldü? –

cevap

2

Özniteliği ayarlayan herhangi bir filtrenin farkında değilim, ancak aynısını yapmak için kesinlikle bir eylem filtresi yazabilirsiniz. Eğer kültür bilgisi yaptığınızda oturum değişkenleri ayarladıysanız bu kodu kullanmak

using System.Globalization; 
using System.Threading; 
using System.Web.Mvc; 

public class CultureAttribute : ActionFilterAttribute { 

public override void OnActionExecuting(ActionExecutingContext filterContext) { 

    string language = (string)filterContext.RouteData.Values["language"] ?? "en"; 
    string culture = (string)filterContext.RouteData.Values["culture"] ?? "US"; 

    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture)); 
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture)); 

} 
} 

:

using System.Globalization; 
using System.Threading; 
using System.Web.Mvc; 

public class CultureAttribute : ActionFilterAttribute { 

public override void OnActionExecuting(ActionExecutingContext filterContext) { 

    string language = (string)filterContext.HttpContext.Session.Contents["language"] ?? "en"; 
    string culture = (string)filterContext.HttpContext.Session.Contents["culture"] ?? "US"; 

    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture)); 
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture)); 

} 
} 
+0

Orchard'ın nasıl çeviri kullandığını bilmiyorum, ancak dili URL'de ayarlamam. Yeni sayfalar ve dil katmanları için yeni bir çeviri ekledim. Kullanıcı "Translations: de" seçeneğini tıkladığında Alman sayfası yüklenir. Yani burada rota yok. –