2009-02-04 3 views
6

Tôi có một ứng dụng dành cho thị trường toàn cầu và cần phải có bản địa. Trong quá trình phát triển, tôi đã có một số vấn đề trong đó hội đồng vệ tinh của tôi dường như không bao giờ được chọn ngay cả khi tôi thay đổi ngôn ngữ của mình. Sau một số nghiên cứu, bây giờ tôi hiểu tại sao điều này là và đã có thể kiểm tra bằng cách thiết lập CurrentUICulture trong mã và xác minh rằng mọi thứ hoạt động như mong đợi.Tôi có nên đặt Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture theo mặc định trong ứng dụng của tôi không?

Bây giờ nói đến việc đóng gói lên ứng dụng để phát hành và tôi không chắc chắn nếu thiết lập Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture cho thread hiện tại khi ứng dụng của tôi bắt đầu là một ý tưởng tốt. Về phía cộng, ứng dụng của tôi sẽ có thể được địa phương hóa bằng cách thay đổi các thiết lập khu vực (nếu đây là một mặt up), nhưng tôi lo lắng rằng có thể có những nhược điểm không đáng kể này. Một điều mà ngay lập tức nảy sinh trong tâm trí là trong khi những gì tôi đã làm là tốt và tốt cho chủ đề của tôi, nó sẽ không áp dụng (từ những gì tôi hiểu từ đọc trên đây và xung quanh) đến bất kỳ chủ đề nào được tạo ra bởi ứng dụng của tôi (trừ khi Tôi đặt CurrentUICulture trên những người quá) hoặc tồi tệ hơn bởi bất kỳ thành phần mà tôi sử dụng mà có thể tạo ra chủ đề của riêng mình.

Có thể có các sự cố khác không? Có phải thiết lập CurrentCultures giống với một cái gì đó là thực hành tiêu chuẩn hay cái gì đó được cau mày không?

Tôi muốn được trang bị nhiều thông tin về những thăng trầm của điều này trước khi đưa ra quyết định.

Cảm ơn

Sam

Trả lời

5

Sam, không gây rối với nó, trừ khi bạn thực sự chắc chắn những gì bạn đang làm.

Tôi giả sử chúng ta đang nói WinForms tại đây. Khung công tác chọn các cài đặt tốt nhất có thể cho được từ hệ thống (như được cấu hình bởi người dùng). Từ câu hỏi của bạn, nó có thể chỉ là một vấn đề thử nghiệm. Tôi thường xuyên đưa vào một số mã sau #if DEBUG để chọn một ngôn ngữ cho mục đích thử nghiệm.

Trường hợp riêng của tôi tại điểm: ngôn ngữ của tôi là tiếng Hà Lan (nl-NL) nhưng tôi thường chạy các phiên bản tiếng Anh của Windows. Nếu bạn ghi đè CurrentUICulture tôi sẽ nhận được phiên bản tiếng Hà Lan (nếu có) mà thường là OK. Nhưng tôi biết từ eperience rằng một số điều khiển/add-in sẽ vẫn còn bằng tiếng Anh (bao gồm cả hộp ShowMessage và hộp thoại std). Sự kết hợp là xấu xí.

Nhưng cũng xem xét trường hợp khi bạn không thêm vệ tinh phù hợp với CurrentCulture. Hệ thống sẽ quay trở lại mặc định trong chương trình của bạn, trong khi văn hóa giao diện người dùng có thể là lựa chọn tốt hơn. Tôi không biết tất cả các quy tắc dự phòng nhưng bạn có thể có được một cái gì đó tương tự như:

Người dùng chạy cài đặt fr-CA trên cửa sổ fr-FR. Chương trình của bạn rơi trở lại en-US, người dùng n'est pas hạnh phúc.

Lời khuyên của tôi:

  • làm một số xét nghiệm lĩnh vực
  • nếu bạn xây dựng trong ghi đè sau đó sử dụng một chuyển đổi trong app.config
+0

Cảm ơn, tất cả thông tin hữu ích. Tôi đồng ý với các nguyên tắc và nghĩ rằng chúng tôi sẽ sử dụng một cách tiếp cận cho phép bật tắt tùy chọn này. –

2

Cũ câu hỏi, nhưng một số ý kiến ​​từ một người dùng và nhà phát triển:

  • Tôi là người Na Uy, nhưng tôi có một hệ điều hành tiếng Anh vì một lý do. Tôi ghét nó khi các ứng dụng hiển thị bằng tiếng Na Uy chỉ vì các thiết lập khu vực của tôi là tiếng Na Uy.
  • Tôi đã sử dụng Thread.CurrentThread.CurrentCulture trước đây, và mặc dù nó có vẻ hoạt động tốt lúc đầu ... sau đó đột nhiên bạn có thứ gì đó kích hoạt một chuỗi mới ... (đã dành khá nhiều thời gian để tìm ra lý do tại sao tôi có định dạng số chính xác trong đơn của tôi, nhưng không có trong báo cáo của tôi chẳng hạn)