Đây là những gì tôi hiểu với Drupal 7.32 hiện tại. Hành vi của i18n trong Drupal phụ thuộc rất nhiều vào cài đặt, vì vậy tôi đề cập đến cách tôi khá quen thuộc. Nếu cài đặt của bạn khác, hành vi có thể khác.
Trước tiên, i18n_menu
phải được bật, cũng như i18n_node
(Tôi hiểu một số người thích dịch thuật Thực thể, hành vi của họ phải khác, nhưng tôi không biết về điều đó).
Thứ hai, cung cấp "URL" với "Tiền tố đường dẫn" ưu tiên hàng đầu tại /admin/config/regional/language/configure
. Ngoài ra, cá nhân tôi rất thích đặt tiền tố đường dẫn cho ngôn ngữ mặc định (thường là tiếng Anh, "en") tại /admin/config/regional/language/edit/en
. Theo mặc định, nó là Null và đó là điều tôi thấy khá khó hiểu do bản chất không đối xứng vốn có của nó. Có nói rằng, nó là tùy thuộc vào mỗi nhà phát triển, rõ ràng!
Thứ ba, "Chế độ dịch" tại /admin/structure/menu/manage/main-menu/edit
là chìa khóa. Theo mặc định, đó là "Không có tùy chọn đa ngôn ngữ cho các mục menu". Rõ ràng điều đó là không tốt cho các menu có thể dịch. Chọn một trong hai tùy chọn sau, nghĩa là, (1) "Dịch và bản địa hóa." và (2) "Ngôn ngữ cố định."
Tôi nghĩ rằng tùy chọn thứ hai (2) phù hợp với hầu hết các trang web, trừ khi các cấu trúc menu cho tất cả các ngôn ngữ được hỗ trợ trong trang web là giống hệt nhau. Nếu bạn chọn (2), chỉ cần tạo một menu khác, nói "Menu chính của Pháp", đánh dấu vào "Ngôn ngữ cố định" là tiếng Pháp và đặt nó vào khu vực bạn thích trong cấu hình khối/admin/structure/block
Nếu bạn chọn cái đầu tiên (1) "Dịch và bản địa hóa", thì bạn sẽ thấy tab "TRANSLATE" (gần trên cùng) trong /admin/structure/menu/manage/main-menu/edit
(ví dụ cho menu chính) và bây giờ có thể dịch từng liên kết từ cột "dịch" (phải nhất?) tại /admin/structure/menu/manage/main-menu
.
Bây giờ, có nhiều hơn một lựa chọn, hoàn toàn phụ thuộc vào những gì bạn muốn đạt được trên menu. Ví dụ: giả sử có một nút "Xin chào" và nút dịch tiếng Pháp của nó là "Bonjour" (chúng là hai nút khác nhau, giả sử, các nút 1 và 2, tương ứng). Bạn có muốn cung cấp hai liên kết cho cả "Xin chào" và "Bonjour" trong menu (khi được xem bằng một trong hai ngôn ngữ) không? Hoặc, bạn có muốn cung cấp liên kết "Xin chào" cho chế độ / trình đọc tiếng Anh và liên kết cho "Bonjour" cho chế độ tiếng Pháp không? (Đó là sự phức tạp của các trang web đa ngôn ngữ ...)
Giả sử bạn thích tùy chọn thứ hai. Ví dụ: chuẩn bị một liên kết menu duy nhất cho "Hello / Bonjour" trong menu chính; nghĩa là, kế hoạch là "Hello" -menu được liên kết với "Hello" -node (= 1) xuất hiện nếu được xem bằng tiếng Anh và "Bonjour" -menu được liên kết với "Bonjour" -node (= 2) xuất hiện nếu được xem trong Người Pháp.
Trước tiên, bạn tạo liên kết menu "Xin chào", được liên kết với nút 1. Thứ hai, thông qua tab "TRANSLATE" đã đề cập ở trên /admin/structure/menu/manage/main-menu/edit
, bạn nhập tiêu đề được dịch là "Bonjour" và đừng quên thay đổi liên kết thành Node = 2 để làm "Bonjour" -menu chỉ chính xác vào bài báo "Bonjour" của Pháp.
Bây giờ nếu bạn xem một nút tiếng Pháp khác (ví dụ "Au revoir") bằng tiếng Pháp (phải có tiền tố đường dẫn /fr/
), bạn sẽ thấy menu "Bonjour", được liên kết với nút "Bonjour" của Pháp. Nếu bạn thấy bản dịch tiếng Anh của nó ("Tạm biệt") ở chế độ tiếng Anh (không phải là tiền tố đường dẫn /fr/
), menu ở trên là "Xin chào", được liên kết với nút "Xin chào" tiếng Anh. Công việc đã xong.
Vấn đề là, tôi nghĩ đơn giản hơn là đặt bí danh đường dẫn cho từng nội dung (một bí danh đường dẫn duy nhất cho một tập hợp các nút cho tất cả các bản dịch) và về cơ bản là từ bỏ /node/2
hoàn toàn sử dụng hình thức liên kết kiểu nút . Trong ví dụ đã đề cập ở trên, giả sử bạn đặt bí danh đường dẫn artilce/hello
cho nút 1 (tiếng Anh; không đặt bí danh đường dẫn khác cho nút 2, tiếng Pháp, vì nó sẽ thêm một sự nhầm lẫn). Bây giờ bằng cách truy cập /fr/artilce/hello
, bạn có thể thấy nút "Bonjour" với menu tiếng Pháp. Tuy nhiên, nếu bạn truy cập/fr/node/1
, những gì bạn sẽ thấy là tiếng Anh "Hello" -node (= 1), trong khi menu ở trên là tiếng Pháp "Bonjour". Đó là bởi vì nút = 1 được viết bằng tiếng Anh, trong khi bạn đang xem nội dung trong môi trường Pháp, điều này buộc menu phải bằng tiếng Pháp (nếu bạn đã bật bản địa hóa, các phần khác như menu người dùng cũng trở thành tiếng Pháp, nhưng không nội dung chính).
Đối với một số người, đó có thể là những gì họ muốn. Ví dụ: một trang web mua sắm của Pháp có thể cung cấp giao diện tiếng Anh cho giỏ mua hàng, v.v., trong khi họ không thể bận tâm dịch mô tả của từng mặt hàng để bán. Tôi đoán đó là lý do tại sao i18n trong Drupal được thiết kế như thế này.
Cuối cùng, bạn có thể muốn "Xóa tất cả bộ nhớ cache" thường xuyên, trong khi bạn sửa đổi cài đặt, để đảm bảo mọi thay đổi bạn đã thực hiện đều được phản ánh với những gì bạn thấy.