2009-09-09 26 views
6

Tôi có một ứng dụng Net trong C# và tôi có một cái gì đó cấu trúc tập tin như:Lập trình tập tin tài nguyên thay đổi ngôn ngữ (resx) ở Mã Đằng sau

App_LocalResources 
- MyPage.aspx.resx 
- MyPage.aspx.fr.resx 
MyPage.aspx 
MyPage.aspx.cs 

Tôi cố gắng để programatically thay đổi ngôn ngữ mà nói với các ứng dụng mà resx tập tin để sử dụng. Tôi muốn làm điều này trong mã phía sau tập tin (MyPage.aspx.cs).

Tôi đã thử cả hai trong những sự kiện OnPreRender, Page_Init, và Page_Load:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 

và nó không hoạt động. Trang vẫn hiển thị ngôn ngữ tiếng Anh. Tệp MyPage.aspx có:

<h3><asp:Literal runat="server" Text="<%$ Resources:pageTitle %>" /></h3> 

Lưu ý rằng tôi không thể quan tâm đến ngôn ngữ trình duyệt. Nó phải vượt qua điều này. Tôi đã tìm kiếm trên web để giải pháp này không có kết quả. Tất cả các ví dụ cho thấy việc chuyển đổi ngôn ngữ theo cách tôi đã thử (ở trên) tuy nhiên điều này không ảnh hưởng đến tệp tài nguyên được sử dụng. Bất kỳ ý tưởng?

Trả lời

11

Bạn phải ghi đè phương thức InitializeCulture và đặt mã của bạn ở đó. Ví dụ:

protected override void InitializeCulture() 
{ 
    base.InitializeCulture(); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 
} 

Hope this helps

+1

MartinB bạn có cảm ơn ấn tượng của tôi. Hoặc tôi đã tìm kiếm với các điều khoản sai hoặc có rất ít thông tin về điều này trực tuyến. Điều đó làm việc hoàn hảo. Tôi rất vui vì điều này sẽ được thực hiện trên SO cho những người trong tương lai tìm kiếm câu trả lời. Cảm ơn bạn! – Sherri

Các vấn đề liên quan