Menu liên kết không được dịch


7

Tôi đã cài đặt Drupal 7 và các mô-đun quốc tế hóa. Tôi có thể thêm một trang web cơ bản và dịch nó. Tôi thậm chí có thể chọn để thêm các bí danh url cục bộ hoạt động tốt khi chuyển đổi ngôn ngữ. Một điều không làm việc là dịch menu. Khi dịch một bài viết tôi có thể chọn một tên menu khác nhau cho mỗi ngôn ngữ - nhưng chỉ phiên bản tiếng Anh được hiển thị trong menu cho tất cả các ngôn ngữ.

Bất cứ ai cũng có một manh mối tại sao điều này có thể được?

Câu trả lời:


6

Đâ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_menuphả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/editlà 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/2hoà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/hellocho 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.


4

Tôi khá chắc chắn rằng bạn cần kích hoạt mô-đun phụ Trình dịch i18n , là một phần của mô-đun Quốc tế hóa .

Chỉnh sửa menu và chọn chế độ dịch bạn muốn. Tôi sử dụng Dịch và Bản địa hóa .

Sau đó, khi bạn chỉnh sửa một liên kết menu, cần có một tab mới cho Dịch . Từ đó bạn có thể thêm các mục menu dịch. Sau đó, bạn sẽ thấy mục menu. Nếu bạn không thể dịch tùy chọn, hãy chỉnh sửa nút chính và sau đó lưu lại. Điều này thường sẽ buộc mục menu phải có ngôn ngữ được gán.

Sau đó, bạn có thể sắp xếp các liên kết menu của bạn khi bạn cần chúng. Tôi sử dụng các bí danh URL cha / con dựa trên phân cấp menu, vì vậy tôi tạo một cây menu gương.

Khi bạn thêm menu vào một trang, chỉ các liên kết cho ngôn ngữ hiện tại sẽ được hiển thị.

Một lưu ý phụ, Trang web đa ngôn ngữ Drupal 7 rất đáng giá để làm việc trên trang web đa ngôn ngữ đầu tiên của bạn (giả sử bạn đã biết rõ về Drupal).


Tôi không phải là một chuyên gia về điều này, nhưng tôi đã dành một ngày trong tuần này để thiết lập ban đầu cho một trang web đa ngôn ngữ, vì vậy mọi thứ đều mới mẻ trong tâm trí tôi. Tôi rất thích thấy các lựa chọn khác / tốt hơn để xử lý việc này.
mpdon Arena

2
Xin chào, MPD, cảm ơn bạn đã dành thời gian. Tôi đã có nó được xác định chính xác như bạn nói. Mô-đun đã được cài đặt và tôi đã dịch các bài báo và liên kết con (URL). Điều này hoạt động tốt. Những gì không hoạt động là liên kết hiển thị trong menu.
dmeu

Hôm nay tôi cũng gặp phải vấn đề này, các mục menu không hiển thị trong ngôn ngữ đã chọn (chúng luôn ở ngôn ngữ mặc định). Hóa ra, thứ tự cài đặt phát hiện ngôn ngữ chịu trách nhiệm cho việc này.
Volker

0

Lưu ý rằng trên trang Ngôn ngữ> Lựa chọn và Phát hiện, bạn phải đặt phương thức phát hiện thành URL cho cả Giao diện người dùng và Nội dung. Tôi đoán menu nằm trong cài đặt giao diện người dùng. Mất hàng giờ tôi mới nhận ra điều đó. Tôi giả sử Giao diện người dùng là các trang quản trị phụ trợ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.