2010-06-16 26 views
19

Làm thế nào để bạn kiểm tra ứng dụng của mình để tuân thủ Iñtërnâtiônàlizætiøn? Tôi nói với mọi người để lưu trữ chuỗi Unicode Iñtërnâtiônàlizætiøn vào mỗi trường và sau đó xem nếu nó được hiển thị chính xác trên đầu ra.Làm cách nào để bạn kiểm tra ứng dụng của mình cho Iñtërnâtiônàlizætiøn? (Quốc tế hóa?)

--- bao gồm cả đầu ra như nội dung của một tế bào trong các báo cáo Excel, ở định dạng rtf cho tài liệu, các file xml vv

Những xét nghiệm khác cần được thực hiện?

Đã thêm ý tưởng từ @Paddy:

Đồng thời thử dùng ngôn ngữ từ phải sang trái. Ví dụ: יום ירושלים ([Hòa bình Jerusalem]. Nên trông giống như:

שלום ירושלים http://sandbox.kluger.com/shalom.jpg

Lưu ý: Stackoverflow được triển khai chính xác. Nếu văn bản không khớp với hình ảnh thì bạn gặp sự cố với trình duyệt, os hoặc proxy của mình.

Cũng lưu ý: Bạn không cần phải thay đổi hoặc "thiết lập" ứng dụng đang chạy của bạn để chấp nhận ký tự W châu Âu hoặc ví dụ Hebrew. Bạn sẽ có thể chỉ cần nhập các ký tự đó vào ứng dụng của mình và yêu cầu chúng quay lại chính xác trong đầu ra của bạn. Trong trường hợp bạn không có bàn phím tiếng Do Thái đặt xung quanh, hãy sao chép và dán các ví dụ từ câu hỏi này vào ứng dụng của bạn.

+0

Hỗ trợ Unicode là một phần nhỏ của quy trình i18n: ngày, định dạng số, tiền tệ, phân loại, quy ước xã hội, v.v. http://stackoverflow.com/questions/2072491/best-practices-for-writing-software- to-be-consumption-international-i18n/2177674 # 2177674 – McDowell

+0

Tôi nghĩ câu hỏi này sẽ hoạt động tốt như một wiki cộng đồng. – jtbandes

Trả lời

6

Chọn văn hóa nơi văn bản đọc từ phải sang trái và thiết lập hệ thống của bạn cho điều đó - đảm bảo rằng nó đọc đúng cách (nói dễ hơn làm ...).

+0

Ahh, +1 điểm tốt. Tôi cũng đã được thử nghiệm với tiếng Hebrew và tiếng Ả Rập. Nhưng tôi có thể tìm hiểu xem tiếng Do Thái có bị đảo ngược hay không. Tôi không có kỹ năng đó cho tiếng Ả Rập. Tôi sẽ cập nhật OP với ảnh chụp màn hình. –

3

Trước tiên, hãy tìm hiểu The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets.

Đảm bảo ứng dụng của bạn có thể xử lý Turkish. Nó có một số quirks phá vỡ các ứng dụng mà giả định các quy tắc tiếng Anh. Bởi vì có bốn loại chữ "i" (chấm và chấm ít hơn, chữ hoa và chữ thường), các ứng dụng giả định uppercase(i) => I sẽ bị vỡ khi sử dụng các quy tắc Thổ Nhĩ Kỳ, trong đó uppercase(i) => İ.

Một điều phổ biến cần làm là kiểm tra xem người dùng đã nhập lệnh "exit" bằng cách sử dụng lowercase(userInput) == "exit" hoặc uppercase(userInput) == "EXIT". Điều này hoạt động như mong đợi theo quy tắc tiếng Anh nhưng sẽ không tuân theo các quy tắc của Thổ Nhĩ Kỳ, trong đó "exıt" != "exit""EXİT" != "EXIT". Để làm điều này một cách chính xác, người ta phải sử dụng các thói quen so sánh không phân biệt dạng chữ được tích hợp vào tất cả các ngôn ngữ hiện đại.

1

Tôi đã suy nghĩ về câu hỏi này từ một góc nhìn hoàn toàn khác. Tôi không thể nhớ chính xác những gì chúng tôi đã làm, nhưng trong một dự án trước, tôi nghĩ chúng tôi sẽ thay đổi Cài đặt vùng (trong bảng điều khiển Tùy chọn ngôn ngữ và khu vực?) Để giúp chúng tôi đảm bảo các chuỗi được bản địa hóa đang hoạt động.

3

Có nhiều thứ để quốc tế hóa hơn là xử lý unicode. Bạn cũng cần đảm bảo rằng ngày hiển thị được bản địa hóa theo múi giờ của người dùng, nếu bạn biết (và đảm bảo có cách để mọi người cho bạn biết múi giờ của họ là gì).

Một thực tế hữu ích để kiểm tra xử lý múi giờ là có hai múi giờ (Pacific/TongatapuPacific/Midway) thực sự cách nhau 24 giờ. Vì vậy, nếu múi giờ đang được xử lý đúng cách, các ngày sẽ không bao giờ giống nhau đối với người dùng trong hai múi giờ đó cho bất kỳ dấu thời gian nào. Nếu bạn sử dụng bất kỳ múi giờ nào khác trong các bài kiểm tra của bạn, kết quả có thể khác nhau tùy thuộc vào thời gian trong ngày bạn chạy bộ thử nghiệm của mình.Bạn cũng cần đảm bảo ngày tháng và thời gian được định dạng theo cách có ý nghĩa với ngôn ngữ của người dùng, hoặc thất bại, rằng bất kỳ sự mơ hồ tiềm năng nào trong kết xuất ngày được giải thích (ví dụ: "05/11/2009 (dd/mm/yyyy) ").

4

Sử dụng một trong the three "pseudo-locales" sẵn từ Windows Vista:

Ba khác nhau pseudo-locale được để thử nghiệm 3 loại miền địa phương:

cơ sở Các qps-ploc locale được sử dụng để giả tiếng Anh như bản địa hóa. Chuỗi của nó là các phiên bản dài hơn của chuỗi tiếng Anh, sử dụng ký tự không phải tiếng Latinh và có dấu trọng âm thay vì tập lệnh thông thường. Ngoài ra, các chuỗi Latin đơn giản phải sắp xếp theo thứ tự ngược với miền địa phương này.

Nhân đôiqpa-mirr được sử dụng cho dữ liệu giả từ phải sang trái, là một khu vực quan tâm khác để thử nghiệm.

Đông Áqps-asia được thiết kế để sử dụng ký tự lớn CJK tiết mục, cũng hữu ích để thử nghiệm.

Windows sẽ bắt đầu định dạng ngày, giờ, số, tiền tệ trong một làm-up psuedo-locale trông đủ như tiếng Anh mà bạn có thể làm việc với nó, nhưng cũng đủ rõ ràng khi bạn đang không tôn trọng bản địa :

[Шěđлеśđαỳ !!!], 8 [Μäŕςћ !!] của 2006

1

"Iñtërnâtiônàlizætiøn" là một thực sự chuỗi xấu để thử nghiệm với vì tất cả các char các diễn viên trong nó cũng xuất hiện trong ISO-8859-1, do đó, chuỗi có thể hoạt động hoàn toàn mà không cần bất kỳ hỗ trợ Unicode nào cả! Tôi không biết tại sao nó thường được sử dụng khi nó hoàn toàn thất bại ở chức năng chính của nó!

Thậm chí văn bản tiếng Trung hoặc tiếng Do Thái không phải là lựa chọn tốt (mặc dù từ phải sang trái là toàn bộ sâu) bởi vì nó không nhất thiết chứa bất kỳ thứ gì ngoài 3 byte UTF-8, một lỗ hổng rất lớn trong việc thực thi UTF-8 mặc định của MySQL (được giới hạn trong các ký tự 3 byte), cho đến khi nó được sửa bằng cách bổ sung bộ mã utf8mb4 trong MySQL 5.5. Những ngày này một trong những cách sử dụng phổ biến hơn> 3 byte UTF-8 là biểu tượng cảm xúc như sau: [⛔]. Nếu bạn không nhìn thấy một số hình ảnh khá nhỏ màu giữa các dấu ngoặc, xin chúc mừng, bạn chỉ cần tìm thấy một lỗ hổng trong ngăn xếp Unicode của bạn!

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