Sử dụng ngôn ngữ khác ngoài ngôn ngữ mặc định của Wikipedia làm chuẩn


7

Chúng tôi hiện đang xây dựng một trang web khá lớn sẽ được phát hành ở Thụy Điển ban đầu, nhưng các ngôn ngữ khác sau này. Vì lý do này, chúng tôi đã xây dựng mọi thứ bằng tiếng Anh và sau đó dịch mọi thứ sang Thụy Điển. Đối với việc phát hành, chỉ có thể truy cập Thụy Điển. Đây là nơi vấn đề bắt đầu.

-Chúng tôi không muốn / không thể sử dụng tiền tố URL ngôn ngữ vì các lý do khác nhau (xung đột PURL, xấu xí, sẽ không cần một khi trang web có sẵn nhiều ngôn ngữ)

-Chúng tôi không thể sử dụng tiếng Thụy Điển làm ngôn ngữ mặc định vì điều đó sẽ phá vỡ tất cả các bản dịch (bản dịch chuỗi sau đó sẽ coi Thụy Điển là ngôn ngữ gốc). Vì tất cả mọi thứ từ các trường, nhãn, loại nội dung, văn bản trợ giúp, vv đều bằng tiếng Anh, đây không phải là một tùy chọn.

-Chúng tôi có thể sử dụng phát hiện trình duyệt, nhưng điều đó không thực sự chứng minh và không bao gồm tất cả các trường hợp. Rất nhiều người dùng ở Thụy Điển sử dụng tiếng Anh làm ngôn ngữ trình duyệt.

-Chúng tôi có thể sử dụng vị trí IP, như một sự bổ sung ở trên, nhưng đó cũng không phải là bằng chứng ngu ngốc.

Những gì chúng ta thực sự cần là sử dụng tiếng Thụy Điển làm ngôn ngữ mặc định nhưng bằng cách nào đó sử dụng tiếng Anh làm ngôn ngữ gốc. Đây có phải là có thể bằng cách nào đó?


Bạn đã tìm thấy giải pháp nào tốt hơn (có thể là một mô-đun?) Hơn là thực hiện hook_language_negotiation_info()?
Isaac

Câu trả lời:


6

Drupal 7?

Việc đàm phán ngôn ngữ có thể mở rộng, bạn chỉ cần thực hiện hook_lingu_negotiation_info () . Trong đó, bạn có thể làm bất cứ điều gì bạn muốn, như luôn luôn mặc định cho Thụy Điển bây giờ. Dường như bạn có thể giới hạn ngôn ngữ bạn có thể chuyển sang, tuy nhiên tôi không chắc cách thức hoạt động chính xác.

Không chắc chắn phải làm gì khi bạn thêm nhiều ngôn ngữ, nhưng bạn có thể gọi các cuộc gọi lại đàm phán khác trong ngôn ngữ của bạn và dự phòng cho Thụy Điển nếu đó không phải là một trong những ngôn ngữ bạn muốn hiển thị.


Hmm .. ok vì vậy bạn đang nói rằng chúng ta có thể sử dụng tiếng Anh làm ngôn ngữ mặc định (theo mặc định tôi có nghĩa là đặt nó là "mặc định" trong admin / config / khu vực / ngôn ngữ / tổng quan) và vẫn buộc tất cả khách truy cập vào phiên bản Thụy Điển, mặc dù chúng ta không thể dựa vào một trong hai phương pháp "phát hiện và lựa chọn" tiêu chuẩn?
Adam Gerthel

Bạn có thể tạo các phương thức "phát hiện và lựa chọn" của riêng mình với hook được liên kết ở trên, trong đó bạn có thể trả về bất kỳ ngôn ngữ nào bạn muốn làm mặc định. Tôi đã không làm điều đó bản thân mình, nhưng nó sẽ làm việc.
Berdir

Cũng có thể thay đổi việc thực hiện đàm phán ngôn ngữ được thực hiện bởi một mô-đun khác bằng cách sử dụng hook_lingu_negotiation_info_alter () .
kiamlaluno

2

Câu hỏi này đã cũ, nhưng tôi nghĩ rằng câu trả lời này có thể vẫn hữu ích cho ai đó. Một mô-đun có chức năng này hiện đang tồn tại, bạn có thể tìm thấy nó ở đây: https://drupal.org/project/fallback_lingu_negotation

Tôi là một nhà phát triển, nhưng tôi không biết đủ Drupal để viết các mô-đun và triển khai các hook. Tôi rất cần chức năng này, nhưng tôi không thể tự làm điều đó.

Mô-đun đó cũng rất đơn giản, vì vậy thật tốt cho người mới bắt đầu hiểu cách viết mô-đun.


0

Có thể bạn đang thiếu một số thông tin (có thể không quan trọng bây giờ, 3 năm sau đó), nhưng đối với tôi có vẻ đơn giản: sử dụng phát hiện URL và định cấu hình trình phát hiện để sử dụng tên miền, sau đó đặt tên miền trang web của bạn cho tiếng Thụy Điển và tiền tố cho tiếng Anh . Theo cách đó, nó sẽ luôn mặc định là tiếng Thụy Điển vì nó khớp với tên miền của bạn và không bao giờ với tiếng Anh, vì nó không quan tâm đến tiền tố (tuy nhiên, bạn buộc phải nhập tiền tố hoặc tên miền trong cấu hình ngôn ngữ).

Một cách khác có thể là thay đổi trình đàm phán ngôn ngữ URL trong lõi, điều này có thể được thực hiện thông qua hook_lingu_negotiation_info_alter () . Dường như có rất ít tài liệu về điều này, nhưng tôi đã sử dụng nó thành công để thực hiện một số logic tương tự trong một mô-đun tùy chỉnh.

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.