2009-04-06 35 views
32

Khi làm việc với ASP.NET MVC, tôi đã nhận thấy rằng các thông báo ngoại lệ do khung .NET được cài đặt trên Hệ thống của tôi bằng tiếng Đức. Tôi thực sự thích tin nhắn tiếng Anh, vì vậy tôi có thể đăng chúng trên SO.Buộc ngoại lệ ngôn ngữ tiếng Anh trong .NET framework

Tôi biết điều này đã được yêu cầu trước đó về SO, nhưng kỳ lạ không có cách giải quyết nào được đề xuất có vẻ hoạt động trong trường hợp của tôi. Tôi đã thử như sau:

  • chuyển đổi hệ thống Windows của tôi đến một miền địa phương tiếng Anh và khởi động lại Visual Studio
  • cụ Setting -> Options -> Môi trường -> Settings Quốc tế -> Ngôn ngữ để "tiếng Anh"
  • đặt ngôn ngữ chủ đề sang tiếng Anh ngay trước khi ngoại lệ được ném như sau:

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture ("en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo ("en-US");

    // gọi phương thức lỗi của tôi ...

Vì vậy, làm thế nào tôi có thể làm cho vấn đề khuôn khổ NET thông điệp bằng tiếng Anh là ngoại lệ? Và có cách tiếp cận nào thực hiện điều này trên cơ sở cho mỗi giải pháp hay thậm chí toàn hệ thống không?

Chỉnh sửa: Ngoại lệ được ném khi kiểm tra các bài kiểm tra đơn vị của tôi. Tôi không chắc chắn nếu đây là lý do thiết lập văn hóa của thread đã không có hiệu lực.

+0

Nếu bạn đang cấu hình tùy chọn Windows, bạn có thể cần phải khởi động lại Visual Studio. Bạn đã thử chưa Nếu không, vấn đề này sẽ thực sự có vẻ khá kỳ quặc. – Noldorin

+0

Có, tôi đã khôi phục VS sau khi cài đặt ngôn ngữ. –

+0

có thể trùng lặp của [C# - Thông báo ngoại lệ bằng tiếng Anh?] (Http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

Trả lời

9

Như tôi vừa phát hiện ra, vấn đề thực sự liên quan đến việc có một dự án thử nghiệm khác. Trong khi tôi đã thử thiết lập ngôn ngữ giao diện người dùng sang tiếng Anh trong dự án thực tế của tôi, tôi đã không làm như vậy trong dự án thử nghiệm, đó là lý do tại sao các thông báo ngoại lệ vẫn còn bằng tiếng Đức khi xem kết quả kiểm tra.

Đặt ngôn ngữ giao diện người dùng trong phương pháp thử nghiệm ngay trước khi ngoại lệ được ném làm mẹo cho tôi.

+0

Bạn có thể đặt ngôn ngữ giao diện người dùng trong một điểm Trace trong khi gỡ lỗi, vì vậy việc thực thi có thể tiếp tục mà không bị gián đoạn (đối với các trường hợp ngoại lệ không phải lúc nào cũng xuất hiện). Đặt điểm ngắt tại dòng mà bạn mong muốn Ngoại lệ được ném và có "in" thông báo này: '{System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo (" en-us ");} ' –

1

Bạn đã thử chuyển đổi văn hóa ngay trước khi đọc văn bản ngoại lệ chưa? Có thể là việc bản địa hóa xảy ra khi bạn truy cập thư - trái ngược với khi đối tượng ngoại lệ được tạo.

+0

Điểm tốt. Trong trường hợp của tôi, ngoại lệ được ném trong khi thực hiện kiểm tra đơn vị. Tôi không chắc liệu văn bản ngoại lệ có đọc một chủ đề khác trong trường hợp này hay không. –

+0

Bạn có thể thử đặt văn bản giao diện người dùng luồng hiện tại ngay trước mã "chuỗi message = ex.Message" (hoặc bất kỳ thứ gì bạn có) không? – dommer

+0

Tin nhắn được đọc bởi người thử nghiệm. thiết lập ngôn ngữ giao diện người dùng trong phương pháp kiểm tra đơn vị ngay trước khi ngoại lệ được ném đã làm các trick. –

7

Bạn đã thử đặt văn bản giao diện người dùng thành "en" trong web.config? Thông tin thêm here.

3

Dường như tất cả các thông báo ngoại lệ khung được gắn với ngôn ngữ hệ điều hành đã cài đặt. Vì vậy, trừ khi bạn cài đặt phiên bản tiếng Anh của Windows Các ngoại lệ khung .Net sẽ không xuất hiện bằng tiếng Anh. Mặc dù có vẻ lạ khi cài đặt CurrentUICulture thành "en-US" không giúp được gì, tôi đã sử dụng loại tấn công này để có thông điệp tiếng Anh trên hệ điều hành Windows Hà Lan của mình.

9

Gỡ bỏ các gói ngôn ngữ Tiếng Đức:

Start - Control Panel - Programs and Chức năng - Microsoft .Khuôn khổ .NET (4 Hồ sơ khách hàng) Gói ngôn ngữ DEU - Gỡ cài đặt (Deinstallieren)

Bạn có thể cần phải lặp lại quá trình gỡ cài đặt cho mỗi phiên bản Khuôn khổ .NET mà bạn tìm thấy ở đó.

+0

Tại sao lại là downvote? – tomsv

+0

Đồng ý. Nó hữu ích; nó giải quyết câu hỏi của OP: theo cách (hơi khác) và chắc chắn hữu ích cho phần còn lại của chúng ta. Tôi upvoted bạn để bù đắp. :) –

+3

Gói ngôn ngữ không còn được sử dụng, trong các cửa sổ 8 trở lên .NET sử dụng ngôn ngữ của Hệ điều hành –

2

Tôi đã thử những thay đổi sau trong web.config và nó giúp:

<system.web> 
    <globalization uiCulture="en-US" culture="en-US" /> 
... 
Các vấn đề liên quan