Привет. Я использую asp.net MVC 4 rc с System.Web.Optimization. Поскольку мой сайт должен быть локализован в соответствии с предпочтением пользователя, я работаю с плагином jquery.globalize.
Я бы очень хотел подклассифицировать класс ScriptBundle и определить, какие файлы нужно связывать в соответствии с System.Threading.Thread.CurrentThread.CurrentUICulture
. Это будет выглядеть так:
bundles.Add(new LocalizedScriptBundle("~/bundles/jqueryglobal")
.Include("~/Scripts/jquery.globalize/globalize.js")
.Include("~/Scripts/jquery.globalize/cultures/globalize.culture.{0}.js",
() => new object[] { Thread.CurrentThread.CurrentUICulture })
));
Например, если культура ui является "en-GB", я бы хотел, чтобы следующие файлы были подхвачены (конечно, и, если возможно, кэшированы, а до тех пор, пока не будет изменен файл script или культура currentui).
- "~/Scripts/jquery.globalize/globalize.js"
- "~/Scripts/jquery.globalize/globalize-en-GB.js" < - если этот файл не существует в файловой системе sever, поэтому возвратитесь к globalize-en.js.
Я попытался перегрузить метод Include с чем-то вроде следующего, но это не будет работать, потому что оно не оценивается по запросу, а при запуске приложения.
public class LocalizedScriptBundle : ScriptBundle
{
public LocalizedScriptBundle(string virtualPath)
: base(virtualPath) {
}
public Bundle Include(string virtualPathMask, Func<object[]> getargs) {
string virtualPath = string.Format(virtualPathMask, getargs());
this.Include(virtualPath);
return this;
}
}
Спасибо
Константинос