Xin chào Tôi hiện đang sử dụng asp.net MVC 4 rc với System.Web.Optimization. Vì trang web của tôi cần được bản địa hóa theo sở thích của người dùng, tôi đang làm việc với plugin jquery.globalize.Giải pháp scriptbundle được bản địa hóa
Tôi rất muốn phân lớp lớp ScriptBundle và xác định tệp nào sẽ được nhóm theo System.Threading.Thread.CurrentThread.CurrentUICulture
. Điều đó sẽ trông như thế này:
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 })
));
Ví dụ, nếu văn hóa ui là "en-GB" Tôi muốn các tập tin sau đây để được chọn (minified tất nhiên và nếu có thể được lưu trữ là tốt cho đến khi một tập tin kịch bản hay thay đổi văn hóa hiện tại).
- "~/Scripts/jquery.globalize/globalize.js"
- "~/Scripts/jquery.globalize/globalize-en-GB.js" < - nếu tập tin này không tồn tại trên cắt đứt hệ thống tệp để dự phòng thành globalize-en.js.
Tôi đã cố gắng quá tải phương thức Bao gồm một cái gì đó như sau nhưng điều này sẽ không hoạt động vì nó không được đánh giá theo yêu cầu mà là khi khởi động ứng dụng.
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;
}
}
Cảm ơn
Constantinos
Có điều này là đúng tất nhiên. Nhưng dường như, khi một tệp js hoặc css thay đổi phía máy chủ, gói được đánh giá lại để được cập nhật (nội bộ có thể sử dụng FileSystemWatcher). Tôi không thấy lý do tại sao người ta không thể ghi đè hành vi này để đưa vào tài khoản các sự kiện khác trong vòng đời ứng dụng như văn hóa giao diện người dùng thay đổi ví dụ. – cleftheris
Có, các phản hồi của gói có cài đặt phụ thuộc vào bộ nhớ cache để làm mất hiệu lực mục nhập bộ nhớ cache khi các tệp trong nhóm thay đổi. Chúng tôi đã mở rộng hành vi lưu vào bộ nhớ cache để có thể mở rộng trên danh sách việc cần làm của chúng tôi, nhưng tôi không chắc chắn khi nào chúng tôi sẽ thực hiện việc này. –