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à 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
- Tắt dịch tự động: Trước hết, hãy đảm bảo rằng dịch tự động đã được tắt.
- 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.
- Dịch nội dung: Gửi nội dung của
payloadArray.txttạ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. - 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.
- 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:
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.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.field_content_translation.txt: Sau khi dịch nội dung trongfield_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:
- 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.
- 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.
- 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.
- 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ả.
Đ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ợ.