Dịch các văn bản dài hơn (xem mẫu và email) bằng gettext


9

Tôi đang phát triển một ứng dụng web PHP đa ngôn ngữ và tôi đã có các văn bản (-ish) dài mà tôi cần dịch bằng gettext. Đây là các mẫu email (thường là ngắn, nhưng vẫn còn vài dòng) và các phần của mẫu xem (các khối văn bản mô tả dài hơn). Các văn bản này sẽ bao gồm một số HTML đơn giản (những thứ như in đậm / in nghiêng để nhấn mạnh, có thể là một liên kết ở đây hoặc ở đó). Các mẫu là các tập lệnh PHP có đầu ra được ghi lại.

Vấn đề là gettext có vẻ rất vụng về để xử lý các văn bản dài hơn. Các văn bản dài hơn thường có nhiều thay đổi hơn theo thời gian so với các văn bản ngắn - Tôi có thể thay đổi các bản dịch và đảm bảo cập nhật nó trong tất cả các bản dịch (có thể rất nhiều công việc và rất dễ bị lỗi khi bản dịch dài) hoặc tôi có thể giữ Các bản dịch không thay đổi và chỉ sửa đổi các bản dịch (sẽ để lại các văn bản lỗi thời trong các mẫu). Ngoài ra, tôi đã thấy lời khuyên chống lại việc bao gồm HTML trong các chuỗi gettext, nhưng tránh nó sẽ phá vỡ một đoạn văn bản tự nhiên thành nhiều đoạn, đây sẽ là một cơn ác mộng lớn hơn để dịch và tập hợp lại, và tôi cũng đã thấy lời khuyên chống lại việc tách các chuỗi gettext không cần thiết thành các thông điệp riêng biệt.

Cách tiếp cận khác mà tôi thấy là bỏ qua gettext hoàn toàn cho các văn bản dài hơn này và tách các khối đó trong các mẫu phụ bên ngoài cho mỗi miền, và chỉ bao gồm một khối cho miền địa phương hiện tại. Nhược điểm là tôi tách biệt nỗ lực dịch giữa các tệp gettext .po và các mẫu riêng biệt nằm ở một vị trí hoàn toàn khác.

Vì ứng dụng này sẽ được sử dụng làm điểm khởi đầu cho các ứng dụng khác trong tương lai, tôi đang cố gắng đưa ra phương pháp tốt nhất trong dài hạn. Tôi cần một số lời khuyên cho các thực hành tốt nhất trong các tình huống như vậy. Làm thế nào bạn đã thực hiện các trường hợp tương tự? Điều gì hóa ra để làm việc và những gì hóa ra một ý tưởng tồi?


Câu trả lời:


3

Tôi đã vấp phải một vấn đề tương tự cách đây không lâu (xem /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).

Về cơ bản, có hai lựa chọn:

  1. Làm theo cách mà gettext có nghĩa là được sử dụng: Sử dụng các văn bản gốc như là, HTML và tất cả. Sau đó, mọi thay đổi đối với văn bản gốc sẽ làm mất hiệu lực tất cả các bản dịch. msgmergeTuy nhiên, kết hợp mờ sẽ vẫn khớp văn bản gốc đúng với bản dịch cũ, do đó, thông thường bản dịch cũ sẽ có sẵn cho người dịch.
  2. Ngay lập tức bằng cách sử dụng văn bản gốc dưới dạng, hãy sử dụng một số định danh tổng hợp (như EMAIL_TEMPLATE_NEWSLETTER_START). Bằng cách đó, ID không bao giờ thay đổi. Các văn bản gốc (có thể là tiếng Anh) sau đó sẽ đơn giản là một bản dịch khác sang gettext. Nhược điểm chính: 1) Bạn phải theo dõi riêng bản dịch nào được cập nhật; 2) Một số công cụ gettext có thể không xử lý tốt việc này (người dịch có thể cần các công cụ đặc biệt).

1

thay đổi các bản tin và đảm bảo cập nhật nó trong tất cả các bản dịch (có thể rất nhiều công việc và rất dễ bị lỗi khi bản dịch dài)

Đó là điều bạn có thể dễ dàng tự động hóa, do đó làm cho nó ít bị lỗi hơn và cũng ít hoạt động hơn.

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.