Các Nhà Phát Triển Tranh Luận Về Giải Pháp Dịch Thuật Sau Khi Cách Tiếp Cận Tùy Chỉnh Của SumatraPDF Gây Tranh Cãi

Nhóm Cộng đồng BigGo
Các Nhà Phát Triển Tranh Luận Về Giải Pháp Dịch Thuật Sau Khi Cách Tiếp Cận Tùy Chỉnh Của SumatraPDF Gây Tranh Cãi

Cộng đồng nhà phát triển đang tham gia vào một cuộc thảo luận sôi nổi về các phương pháp dịch thuật phần mềm sau khi cách tiếp cận quốc tế hóa tùy chỉnh của SumatraPDF được công bố. Trình xem PDF phổ biến này, hỗ trợ 72 ngôn ngữ, đã chọn xây dựng hệ thống dịch thuật riêng thay vì sử dụng các giải pháp đã có như GNU gettext hoặc các dịch vụ thương mại.

Thống kê Hệ thống Dịch thuật SumatraPDF:

  • 341 chuỗi có thể dịch được
  • 72 ngôn ngữ được hỗ trợ
  • 35,440 tổng số bản dịch chuỗi đã thu thập
  • 239 dòng mã C++ cho dịch thuật
  • 4,000 dòng mã máy chủ Go cho AppTranslator

Tranh Cãi Về Giải Pháp Tùy Chỉnh

Nhà phát triển của SumatraPDF đã tạo ra một hệ sinh thái dịch thuật hoàn chỉnh từ đầu, bao gồm một ứng dụng web có tên AppTranslator để crowdsource các bản dịch và mã C++ tùy chỉnh để xử lý việc chuyển đổi ngôn ngữ. Hệ thống sử dụng các macro đơn giản như _TRA()_TRN() để đánh dấu các chuỗi có thể dịch được và xử lý chúng thông qua một script Go . Tuy nhiên, cách tiếp cận này đã thu hút sự chỉ trích đáng kể từ các nhà phát triển có kinh nghiệm, những người cho rằng các giải pháp hiện có sẽ phù hợp hơn.

Cuộc tranh luận tập trung vào việc liệu có nên tái phát minh các công cụ đã được thiết lập hay không. Những người chỉ trích chỉ ra rằng giải pháp tùy chỉnh thiếu các tính năng quan trọng như hỗ trợ dạng số nhiều và định dạng vị trí, những tính năng này là tiêu chuẩn trong các framework dịch thuật trưởng thành. Những tính năng này trở nên quan trọng khi xử lý các ngôn ngữ có quy tắc ngữ pháp phức tạp hoặc cấu trúc câu khác nhau.

Các Thành Phần Của Hệ Thống Dịch Thuật:

  • Macro _TRA(): Mở rộng thành lời gọi hàm dịch thuật
  • Macro _TRN(): Mở rộng thành chuỗi tiếng Anh để dịch thuật trì hoãn
  • AppTranslator : Ứng dụng web tùy chỉnh để crowdsource các bản dịch
  • Go script: Trích xuất các chuỗi từ mã nguồn bằng regex
  • Linear search: Phương pháp tìm kiếm bản dịch trong mảng C++

Các Tính Năng Thiếu Sót Và Hạn Chế Kỹ Thuật

Một số nhà phát triển đã nêu bật những khoảng trống quan trọng trong cách tiếp cận tùy chỉnh. Hệ thống coi các chuỗi tiếng Anh vừa là văn bản hiển thị vừa là khóa dịch thuật, điều này có thể gây ra vấn đề khi cùng một từ tiếng Anh cần các bản dịch khác nhau tùy thuộc vào ngữ cảnh. Ngoài ra, phương pháp tìm kiếm tuyến tính để tìm bản dịch, mặc dù đơn giản, có thể không mở rộng tốt cho các ứng dụng lớn hơn.

Quốc tế hóa và bản địa hóa là những vấn đề cực kỳ khó khăn. Tôi biết vì tôi đã làm việc như một dịch giả kỹ thuật trong một số năm.

Việc thiếu hỗ trợ dạng số nhiều đặc biệt có vấn đề vì các ngôn ngữ khác nhau xử lý số nhiều theo những cách rất khác nhau. Một số ngôn ngữ có nhiều dạng số nhiều, trong khi những ngôn ngữ khác sử dụng các cấu trúc ngữ pháp hoàn toàn khác mà việc thay thế chuỗi đơn giản không thể xử lý được.

Các Giải Pháp Thay Thế Và Cách Tiếp Cận Hiện Đại

Các thành viên cộng đồng đã đề xuất một số giải pháp thay thế đã được thiết lập có thể tiết kiệm thời gian phát triển trong khi cung cấp chức năng tốt hơn. GNU gettext vẫn phổ biến vì bộ tính năng toàn diện và hỗ trợ công cụ rộng rãi. Các dịch vụ như Weblate , Transifex và translatewiki.net cung cấp quản lý dịch thuật dựa trên web với các tính năng cộng tác tích hợp và hỗ trợ chuyên gia.

Đối với các ứng dụng dành riêng cho Windows , một số nhà phát triển khuyến nghị sử dụng hệ thống Multilingual User Interface (MUI) của Microsoft , cung cấp tích hợp nền tảng gốc và hỗ trợ công cụ rộng rãi. Những người khác đề xuất hệ thống dịch thuật của Qt cho các ứng dụng đa nền tảng.

Một cách tiếp cận hiện đại thú vị đã xuất hiện từ cuộc thảo luận: sử dụng các mô hình ngôn ngữ AI cho bản dịch ban đầu. Mặc dù điều này đã khơi mào cuộc tranh luận riêng về chất lượng dịch thuật, một số nhà phát triển đã báo cáo thành công khi sử dụng AI cho các yếu tố giao diện người dùng cơ bản, mặc dù họ thừa nhận rằng việc xem xét của con người vẫn cần thiết cho việc bản địa hóa chất lượng.

Các Giải Pháp Dịch Thuật Thay Thế Được Đề Xuất:

  • GNU gettext: Sử dụng các tệp .po, bao gồm công cụ trích xuất xgettext
  • Weblate: Nền tảng dịch thuật dựa trên web mã nguồn mở
  • Transifex: Dịch vụ dịch thuật thương mại
  • translatewiki.net: Nền tảng dịch thuật cộng đồng cho mã nguồn mở
  • Microsoft MUI: Hệ thống giao diện đa ngôn ngữ gốc của Windows
  • Qt Translation System: Giải pháp đa nền tảng với bộ công cụ toàn diện

Triết Lý Phát Triển Rộng Hơn

Tranh cãi này phản ánh một sự chia rẽ triết lý sâu sắc hơn trong phát triển phần mềm giữa việc xây dựng các giải pháp tùy chỉnh so với việc áp dụng các công cụ hiện có. Trong khi cách tiếp cận của SumatraPDF thể hiện kỹ năng kỹ thuật ấn tượng và cung cấp quyền kiểm soát hoàn toàn đối với quy trình dịch thuật, những người chỉ trích cho rằng nó đại diện cho sự phức tạp không cần thiết cho một vấn đề đã được giải quyết.

Cuộc thảo luận cũng làm nổi bật tầm quan trọng của việc hiểu phạm vi vấn đề trước khi chọn giải pháp. Những gì có vẻ như một nhiệm vụ dịch thuật đơn giản có thể nhanh chóng trở nên phức tạp khi xử lý nhiều ngôn ngữ, bối cảnh văn hóa và yêu cầu về khả năng tiếp cận. Sự đồng thuận của cộng đồng cho thấy rằng mặc dù các giải pháp tùy chỉnh có vị trí của chúng, các công cụ đã được thiết lập thường cung cấp giá trị dài hạn tốt hơn cho các vấn đề phổ biến như quốc tế hóa.

Tham khảo: Implementing UI translation in SumatraPDF, a C++ Windows application