Trao đổi về dự án
Partitech Sonata Extra Bundle

Sonata Extra Bundle: tạo một mẫu dịch trực tuyến bằng dòng lệnh

Tổng quan PartitechSonataExtraBundle cung cấp một cách thuận tiện để quản lý các bản dịch trong Sonata Admin. Gói này bao gồm hai lệnh chính: sonata:extra:translation-create-template và sonata:extra:translation-import-template. Các lệnh này giúp việc tạo v...

Contrôles de compatibilité Symfony et Sonata

Tổng quan

PartitechSonataExtraBundle cung cấp một cách thuận tiện để quản lý các bản dịch trong Sonata Admin. Gói này bao gồm hai lệnh chính: sonata:extra:translation-create-templatesonata:extra:translation-import-template. Các lệnh này giúp việc tạo và nhập bản dịch trở nên dễ dàng hơn, tối ưu hóa quy trình và tích hợp với một dịch vụ dịch thuật bên ngoài.

Đơn hàng

Đơn hàng sonata:extra:translation-create-template

Mô tả

Lệnh này chuẩn bị nội dung của bạn cho việc dịch. Nó tạo ra một cấu trúc thư mục với các tệp chứa văn bản cần dịch.

Sử dụng

bin/console sonata:extra:translation-create-template --site=[SITE_ID] --reference-site=[REFERENCE_SITE_ID] --service="[ADMIN_SERVICE]"

  • --site: ID của trang web mà các bản dịch cần được tạo ra.
  • --reference-site: Mã định danh của trang web tham chiếu.
  • --service: Dịch vụ quản lý mà cần thực hiện các bản dịch.

lối ra

Lệnh tạo ra một tập hợp các thư mục và tệp dưới var/cache/translation/YourService/Đối với mỗi mã nhận dạng sản phẩm, bạn sẽ tìm thấy các tệp như:

  • payloadArray.txt: Chứa các câu cần dịch.
  • payloadArray_translated.json: Để lưu trữ nội dung đã dịch.
  • Các tập tin khác để quản lý nội dung có cấu trúc như HTML.

Đơn hàng sonata:extra:translation-import-template

Mô tả

Lệnh này sẽ nhập nội dung đã dịch vào cơ sở dữ liệu của bạn, tái tạo cấu trúc HTML.

Sử dụng

Sau khi dịch nội dung, hãy thực hiện:

bin/console sonata:extra:translation-import-template --service="[ADMIN_SERVICE]"

Tổng quan về quy trình

  1. Tắt dịch tự động: Trước hết, hãy đảm bảo rằng dịch tự động đã được tắt.
  2. Tạo một mẫu dịch: sử dụng lệnh sonata:extra:translation-create-template để tạo các tệp dịch.
  3. Dịch nội dung: Gửi nội dung của payloadArray.txt tại dịch vụ phiên dịch được chọn hoặc với một phiên dịch viên chuyên nghiệp. Điền nội dung đã dịch vào payloadArray_translated.json.
  4. Quản lý nội dung có cấu trúc: đối với các trường HTML, hãy sử dụng field_content_payload.txt để dịch và cập nhật field_content_translation.txt tương ứng.
  5. Nhập khẩu bản dịch: Chạy lệnh sonata:extra:translation-import-template để cập nhật nội dung của bạn với các bản dịch mới.

Ví dụ

# Creating translation templates
bin/console sonata:extra:translation-create-template --site=5 --reference-site=2 --service="Partitech\SonataExtra\Admin\ArticleAdmin"

# Importing translated content
bin/console sonata:extra:translation-import-template --service="Partitech\SonataExtra\Admin\ArticleAdmin"

Quản lý nội dung có cấu trúc như HTML

Khi xử lý các bản dịch cho các trường văn bản chứa nội dung có cấu trúc (ví dụ, HTML), PartitechSonataExtraBundle cung cấp một phương pháp tinh vi để đảm bảo rằng cấu trúc và định dạng được bảo toàn. Điều này đặc biệt quan trọng đối với nội dung bao gồm thẻ HTML, đoạn mã, hình ảnh và các phương tiện nhúng khác.

Hiểu cấu trúc của các tệp

Lệnh sonata:extra:translation-create-template tạo ra một số tệp để hỗ trợ quá trình này:

  1. field_content_code_blocks.json: Tệp này chứa các « khối mã » hoặc các phần nội dung HTML mà không nên dịch. Điều này có thể bao gồm các đoạn mã thực tế, phương tiện nhúng hoặc các yếu tố không phải văn bản khác trong nội dung HTML của bạn.
  2. field_content_payload.txt: Tệp này bao gồm văn bản của nội dung HTML của bạn cần được dịch. Trước khi tạo tệp này, gói sẽ trích xuất các phần tử không thể dịch (như những phần trong field_content_code_blocks.json) và thay thế chúng bằng các chỗ giữ chỗ. Việc trích xuất này đảm bảo rằng chỉ văn bản cần thiết được dịch, tối ưu hóa cả chất lượng và chi phí của việc dịch.
  3. field_content_translation.txt: Sau khi dịch nội dung trong field_content_payload.txt, văn bản đã dịch phải được đặt trong tệp này.

Quy trình dịch thuật

Dưới đây là cái nhìn chi tiết về cách thức quy trình dịch thuật hoạt động đối với nội dung có cấu trúc:

  1. Trích xuất các yếu tố không thể dịch: Gói phần mềm xác định và trích xuất các phần của nội dung HTML không cần dịch (ví dụ, các khối mã, hình ảnh) và lưu chúng vào file field_content_code_blocks.json. Các yếu tố này được thay thế bằng các chỗ giữ chỗ trong văn bản HTML.
  2. Nội dung văn bản cần dịch, hiện đã loại bỏ các yếu tố không phải văn bản, được đặt trong field_content_payload.txt. Văn bản này phải được gửi để dịch.
  3. Chèn lại văn bản đã dịch: Khi đã dịch xong, văn bản mới sẽ được chèn vào file field_content_translation.txt.
  4. Xây dựng lại nội dung HTML: Trong quá trình nhập khẩu (sonata:extra:translation-import-template), gói sẽ tái lắp ráp nội dung HTML. Nó kết hợp văn bản đã dịch từ field_content_translation.txt với các phần tử không thể dịch từ field_content_code_blocks.json, bằng cách thay thế các chỗ giữ chỗ bằng nội dung gốc của chúng.

Kết luận

Tính năng này đơn giản hóa quá trình dịch trong Sonata Admin, tích hợp hoàn hảo với các công cụ dịch thuật bên ngoài và đảm bảo quản lý nội dung hiệu quả.

Kiểm tra tính tương thích Symfony và Sonata

Điều chỉnh ví dụ cho phù hợp với phiên bản đã cài đặt

Các ví dụ Symfony và Sonata vẫn gắn với các phiên bản được chỉ ra trong bài viết. Symfony 4.x và Symfony 6.2 không còn được duy trì: đối với một dự án hiện tại, hãy sử dụng một nhánh được duy trì và tài liệu tương ứng chính xác với các phụ thuộc của bạn.

php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle

Trước khi tiếp tục với mã, hãy kiểm tra các chữ ký, dịch vụ, tuyến đường và mẫu liên quan. Sau đó thêm một bài kiểm tra chức năng bao phủ quyền, mã HTTP và kết quả hiển thị.

Tham chiếu : phiên bản Symfony được hỗ trợ.

Chia sẻ bài viết