9

Cho phép nói rằng tôi đang thiết kế trang web nơi chúng tôi có tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha, tiếng Đức và tiếng Hàn Quốc (tôi không, nhưng hãy giả vờ là tôi).Mẫu thiết kế cho trang web đa ngôn ngữ?

Tôi không thể dựa vào các dịch vụ như google dịch, vì bản chất của trang web không dành cho giải trí mà là kinh doanh. Cho phép nói rằng tôi có quyền truy cập vào các dịch giả chuyên nghiệp có thể dịch nội dung nào đó trong ngữ cảnh sang một ngôn ngữ khác và cung cấp cho tôi văn bản đó.

Một số cách đơn giản và nổi tiếng để phân phối nội dung qua nhiều ngôn ngữ với một trang web là gì? Có rất nhiều lựa chọn, chẳng hạn như các trang riêng biệt, sử dụng cơ sở dữ liệu, v.v ... nhưng tôi không thể quyết định điều gì là tốt nhất, khái niệm sẽ mở rộng như thế nào, cần phải cân nhắc điều gì và cách xử lý với bản dịch bị thiếu?

Có bất kỳ thực tiễn nào được thiết lập tốt cho điều này không?

+0

Chắc chắn bạn không thể dựa vào Google Dịch, nó quản lý để bán thịt Nhật Bản khá tốt, tôi hy vọng việc đối xử với Hàn Quốc sẽ tương tự. –

+0

Phụ thuộc vào ngôn ngữ lập trình bạn đang sử dụng – Wil

Trả lời

13

Chủ đề rộng mà bạn đang hỏi về được gọi là "Quốc tế hóa và bản địa hóa" (hoặc ngắn gọn là I18N và L10N). Điều quan trọng cần nhớ là không phải là chỉ là về dịch các tin nhắn. Có rất nhiều thứ khác đi vào quốc tế hóa một trang web.

Những điều rõ ràng hơn, bạn sẽ cần là:

  • Một mã hóa ký tự mà làm việc cho các nhân vật trong tất cả các ngôn ngữ, không chỉ tiếng Anh (Điều này có nghĩa tất cả mọi thứ xuống cơ sở dữ liệu nên sử dụng mã hóa UTF)
  • Một số cách đại diện cho Locale của người sử dụng (ví dụ: Java Locale lớp)
  • một mô hình phổ biến để sản xuất một thông điệp trong miền địa phương của người dùng đó (ví dụ: Spring MessageSource

Những điều khác bạn cần phải xem xét:

  • chuỗi đúng sắp xếp dựa trên Locale
  • ngày Định dạng dựa trên locale
  • Luôn thể hiện lần theo múi giờ của người dùng
  • đo Cho biết khoảng cách cho người sử dụng của locale (ví dụ: Miles so Kilometers)
  • Đặt ra các trang web trong từ phải sang trái cho các ngôn ngữ như tiếng Hebrew
  • Hãy suy nghĩ về cách bạn plura lize tin nhắn của bạn. String message = "Please fix the following error" + (errors.size() > 1 ? "s" : ""); không hoạt động trong chương trình quốc tế.
  • Hãy suy nghĩ về cách bố trí các trang web của bạn khi độ dài văn bản có thể khác nhau .. và không bao giờ giả định rằng ký tự có chiều rộng nhất định (một ký tự đơn trong chữ Kanji có thể lớn gấp 8 lần chữ thường 'i')

Tài nguyên tốt nhất tôi có thể tìm thấy là ICU library's User guide. Nếu bạn sử dụng Java, đây là thư viện để sử dụng.

Hy vọng câu trả lời này là một khởi đầu hữu ích!

1

Chúng tôi có một tập hợp các tệp trên đĩa chứa tất cả các chuỗi trong tiện ích con/mô-đun/tệp bất kỳ và các tệp riêng biệt cho mỗi ngôn ngữ, tức là:

foo.strings == generic (happens to be US english) 
foo.fr.strings == french 
foo.fr-CA.strings == canadian french 
foo.en-CA.strings == canadian english 

Dựa trên tiêu đề Chấp nhận ngôn ngữ của khách hàng, chúng tôi xác định ngôn ngữ nào bạn muốn.

Khi một ngôn ngữ cụ thể được yêu cầu đầu tiên, chúng tôi nhấn hệ thống tệp để xây dựng bản đồ chuỗi lớn cho ngôn ngữ đó, sau đó lưu vào bộ nhớ cache trong bộ nhớ. Nếu một chuỗi đã cho không được xác định trong fr-CA, chúng tôi sẽ tăng ngăn xếp thành fr, sau đó cuối cùng là các trang chung là

Trang được tạo động và phiên bản được tạo của từng url được lưu vào bộ nhớ cache tùy thuộc vào ngôn ngữ của người dùng tiêu đề (trong số những thứ khác).

Hy vọng rằng sẽ giúp

2

Hoàn toàn đồng ý với @Michael D và các nhà phát triển khác đã đăng câu trả lời của họ. Mặc dù câu hỏi này đã được chấp nhận nhưng tôi nghĩ rằng một tùy chọn nhỏ như lớp học giả: lang() có thể hữu ích cho việc tạo các trang web đa ngôn ngữ. Lớp giả: lang() cho phép xác định ngôn ngữ trong các tài liệu khác nhau.

mã CSS:

 


    q:lang(fr) {  /* Quotations for French */ 
    quotes: "\00AB" "\00BB"; 
    } 

    q:lang(en) { 
    quotes: "\201C" "\201D"; /* Quotations for English */ 
    } 


HTML code:

<html> 
<body> 
<pre> 
    <p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p> 
    <p>Quote in English: <q lang="en">То be or not to be</q>.</p> 
</pre> 
</body> 
</html> 

Và kết quả sẽ là như thế này:

Quote in French language: << То être ou ne pas être >>. 

Quote in English language: "То be or not to be". 

Xin lưu ý rằng chúng ta đang nói về tài liệu, không phải là một đoạn văn bản, khi chúng thực hiện định dạng phức tạp.

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