17 điểm bởi xguru 2024-05-03 | 4 bình luận | Chia sẻ qua WhatsApp
  • Bản địa hóa phi đối xứng: hướng tới bản dịch tự nhiên bằng cách chỉ dùng giới tính/chữ hoa chữ thường khi cần. Khả năng biểu đạt không bị giới hạn bởi ngữ pháp của ngôn ngữ gốc
  • Cải thiện dần theo thời gian: mỗi bản dịch được quản lý độc lập nên không ảnh hưởng tới locale khác. Có thể lặp lại việc cải thiện bản dịch mà không tác động tới các ngôn ngữ khác
  • Nhiều tính năng: định dạng ngày, giờ và số. Danh mục số nhiều. Hỗ trợ hai chiều. Định dạng do người dùng định nghĩa. Cú pháp dễ đọc. Dịch và dịch lại trong runtime. Xử lý lỗi mạnh mẽ
  • Mã nguồn mở theo giấy phép Apache. Triển khai phía máy chủ có JS, Python, Rust và cũng cung cấp binding cho React

Lý do Fluent được tạo ra

  • Bản địa hóa phần mềm từ lâu đã bị chi phối bởi một mô hình cũ: dịch theo kiểu ánh xạ một-một với bản tiếng Anh
  • Ngữ pháp của ngôn ngữ gốc làm hạn chế khả năng biểu đạt của bản dịch
  • Fluent được tạo ra כדי thay đổi mô hình này
    • Dịch giả phải có thể dùng toàn bộ khả năng biểu đạt của ngôn ngữ mà không cần xin phép nhà phát triển
    • Trong Fluent, bản dịch là phi đối xứng. Một chuỗi tiếng Anh đơn giản có thể được ánh xạ sang bản dịch đa biến thể phức tạp ở ngôn ngữ khác
  • Dùng Fluent có thể đáp ứng ngữ pháp và phong cách của nhiều ngôn ngữ khác nhau bất kể ngôn ngữ nguồn là gì
  • Tính độc lập
    • Việc một ngôn ngữ tận dụng lợi ích của logic nâng cao không đồng nghĩa các bản địa hóa khác cũng phải có để áp dụng điều đó
    • Mỗi bản địa hóa tự kiểm soát mức độ phức tạp của bản dịch

4 bình luận

 
yangeok 2024-05-09

Ồ, việc thoát khỏi mô hình ghép nối 1:1 trước đây đúng là rất thú vị.

 
iolothebard 2024-05-03

Phiên bản gettext suy giảm chỉ dành cho JavaScript.

 
xguru 2024-05-03

https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext

Nói như vậy thì là đã xem nhẹ dự án này quá rồi.

 
iolothebard 2024-05-13

Câu trả lời quá thiếu thành ý(?) nên có thể bạn sẽ thấy như vậy. Tôi sẽ cố viết có tâm hơn một chút.

Bảng so sánh thì dù sao cũng được quyết định bởi việc lấy ai làm đối tượng so sánh, nên không có nhiều ý nghĩa lắm,

Lý do tôi cảm thấy đây là một phiên bản hạ cấp là... vì nó tạo cảm giác không tôn trọng những kinh nghiệm và tri thức đã được tích lũy trong gettext qua thời gian dài bởi rất nhiều người.

Bạn nói gettext chỉ dùng được với ngôn ngữ C, nhưng trong số các ngôn ngữ lập trình phổ biến thì có ngôn ngữ nào không hỗ trợ gettext vậy?
Bạn nói dùng tham số dựa trên key để xét đến vấn đề trật tự từ, nhưng không phải ngôn ngữ nào cũng tích hợp sẵn dictionary làm mặc định, nên với những ngôn ngữ đó sẽ cần thêm phương thức bổ sung (ví dụ: nếu là Java thì kiểu như Map). gettext tuy dựa trên vị trí nhưng cũng đã tính đến việc thay đổi trật tự từ.

Tôi đã lan man viết dài dòng như vậy, nhưng
thực ra... lý do tôi không thích ngay từ đầu là vì nó là {$...} chứ không phải ${...}^^

Cá nhân tôi cực kỳ thích việc "phát minh lại bánh xe", nhưng việc khoe khoang như thể mình đã phát minh ra một cái bánh xe chưa từng tồn tại trên đời thì lại không mấy dễ coi.