Nội địa hóa rất khó. Nó thực sự khó khăn. Nó không chỉ là "pairs of words" => "Wortpaare"
, nó phức tạp hơn thế rất nhiều. Điều mà hầu hết mọi người đều quên khi họ nhìn vào gettext và xem "Ugh, xấu xí" đó có phải là quá trình bản địa hóa quan trọng hơn rất nhiều so với các chi tiết kỹ thuật của việc thực hiện. Đó là bởi vì những người dịch thực tế thường không phải là lập trình viên và có lẽ thậm chí không phải là người trong nhà. Điều này gây ra nhiều cơn đau đầu hơn bạn nghĩ. gettext thực sự cũ, đã được thử nghiệm trong trận chiến và có một chuỗi công cụ khổng lồ đằng sau nó được điều chỉnh để hỗ trợ quá trình này. Nếu bạn muốn thực hiện i18n và l10n đúng cách, bạn cần có một hệ thống mạnh mẽ. gettext là như vậy và được hỗ trợ từ nhiều loại công cụ. Hệ thống Dịch thuật Homebrewed ™ của bạn thì không.
Trước hết, bạn cần một hệ thống mạnh mẽ để trích xuất chuỗi có thể dịch được. Nếu không có khả năng trích xuất tự động và tái tạo các chuỗi có thể dịch từ mã nguồn, bạn có một núi công việc cho mỗi chuỗi mới mà bạn muốn dịch. Trong gettext, xgettext
làm điều đó.
Tiếp theo, bạn cần một công cụ để đồng bộ hóa các chuỗi đã trích xuất với các bản dịch đã có theo cách mà không có bản dịch nào bị mất và chỉ giữ lại các bản dịch có thay đổi nhỏ nếu có thể. Trong gettext, msgmerge
làm điều đó.
Tiếp theo, bạn muốn một cách để thêm thông tin bổ sung vào chuỗi. Bạn muốn có thể nhóm chúng theo danh mục, "miền" và ngữ cảnh, bạn có thể muốn thêm nhận xét cho người dịch vào mã nguồn và bạn có thể muốn người dịch có thể thêm nhận xét vào bản dịch. gettext hỗ trợ tất cả những điều đó.
Tiếp theo, bạn muốn một định dạng tệp có sự hỗ trợ tốt từ nhiều công cụ khác nhau, vì bạn có thể gửi tệp của mình đến Trung Quốc để chúng được dịch sang đó. Lý do bạn có thể gửi chúng cho người dịch bên ngoài cũng là lý do bạn cần một công cụ đồng bộ hóa tốt để hợp nhất các thay đổi, vì đây có thể là một quá trình rất không đồng bộ. Các tệp PO được hỗ trợ rất tốt, vì gettext đã quá cũ. Có nhiều mã nguồn mở và công cụ thương mại hỗ trợ quá trình bản địa hóa ở nhiều cấp độ, tùy thuộc vào nhu cầu cụ thể của bạn.
Đừng đánh giá thấp nhiệm vụ bản địa hóa, hãy chọn một công cụ phù hợp với quy trình và tìm hiểu nó. gettext là một công cụ tuyệt vời, nếu phải thừa nhận là không thân thiện với người mới bắt đầu nhất.
Đối với những gì nó đáng giá, đây là tiện ích mở rộng gettext của tôi cho Twig , điều này làm cho gettext cho PHP thậm chí còn tốt hơn.