Tôi đang phát triển hỗ trợ đa ngôn ngữ cho ứng dụng web của mình. Chúng tôi đang sử dụng Django's helpers xung quanh thư viện gettext. Mọi thứ đều dễ dàng đến ngạc nhiên, ngoại trừ câu hỏi về cách xử lý các câu bao gồm đánh dấu HTML đáng kể. Dưới đây là một ví dụ đơn giản:Bạn xử lý bản dịch của văn bản bằng đánh dấu như thế nào?
Please <a href="/login/">log in</a> to continue.
Sau đây là các cách tiếp cận tôi có thể nghĩ:
Thay đổi liên kết để bao gồm toàn bộ bản án. Bất kể sự thay đổi là một ý tưởng hay trong trường hợp này, vấn đề với giải pháp này là giao diện người dùng phụ thuộc vào nhu cầu của i18n khi hai điều này là độc lập lý tưởng.
Đánh dấu toàn bộ chuỗi ở trên để dịch (bao gồm định dạng). Các chuỗi dịch sẽ sau đó cũng bao gồm HTML trực tiếp. Vấn đề với điều này là việc thay đổi định dạng HTML yêu cầu thay đổi tất cả bản dịch.
Chấm dứt nhiều bản dịch, sau đó sử dụng nội suy chuỗi để kết hợp chúng. Ví dụ: cụm từ "Vui lòng% s để tiếp tục" và "đăng nhập" có thể được đánh dấu riêng để dịch, sau đó kết hợp. "Đăng nhập" được bản địa hóa, sau đó được bao bọc trong HREF, sau đó chèn vào cụm từ đã dịch, giữ cụm từ% s trong bản dịch để đánh dấu vị trí của liên kết. Cách tiếp cận này làm phức tạp mã và phá vỡ sự độc lập của các chuỗi dịch.
Có tùy chọn nào khác không? Những người khác đã giải quyết vấn đề này như thế nào?
Theo khuyến nghị của Wordpress.org với ví dụ sprintf (__ ('Thay thế% 1 $ s với% 2 $ s') cho. Ví dụ này là dành cho nhiều chuỗi HTML riêng biệt. –