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

Sonata Extra Bundle: biến Trang Sonata thành đa ngôn ngữ

Tổng quan Sonata Extra Bundle nâng cao Gói SonataPage bằng cách cung cấp khả năng quản lý đa trang web và đa ngôn ngữ đầy đủ. Tính năng này cho phép theo dõi và chuyển đổi giữa các bản dịch trang trên giao diện người dùng và hỗ trợ một chiến lược đa trang ...

Contrôles de compatibilité Symfony et Sonata

Tổng quan

Sonata Extra Bundle nâng cao Gói SonataPage bằng cách cung cấp khả năng quản lý đa trang web và đa ngôn ngữ đầy đủ. Tính năng này cho phép theo dõi và chuyển đổi giữa các bản dịch trang trên giao diện người dùng và hỗ trợ một chiến lược đa trang web linh hoạt.

Màn hình

  • Chế độ xem danh sách:

Chỉ_mục_nhật_ký_hoạt_động.png

  • Xem chi tiết:

Chi_tiết_nhật_ký_hoạt_động.png

Cấu hình một multisite với nhiều ngôn ngữ

Tạo các trang web đa ngôn ngữ

Mỗi trang web có thể hỗ trợ các cài đặt vùng khác nhau. Sử dụng lệnh sau để tạo các trang web cần thiết:

bin/console sonata:page:create-site

Cấu hình nhanh cho các bài kiểm tra

Vì mục đích thử nghiệm, bạn có thể nhanh chóng thiết lập nhiều trang web bằng cách sử dụng các lệnh này:

TRUNCATE `page__page`;
TRUNCATE `page__site`;
TRUNCATE `page__snapshot`;
php bin/console sonata:page:create-site --enabled --name="Sonata Extra FR" --locale=fr_FR --host=fr.sonata-extra.localhost --relativePath=/fr --enabledFrom=now --enabledTo=- --default
php bin/console sonata:page:create-site --enabled --name="Sonata Extra EN" --locale=en --host=en.sonata-extra.localhost --relativePath=/en --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra ES" --locale=es --host=es.sonata-extra.localhost --relativePath=/es --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra IT" --locale=it --host=it.sonata-extra.localhost --relativePath=/it --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra VN" --locale=vn --host=vn.sonata-extra.localhost --relativePath=/vn --enabledFrom=now --enabledTo=-

Cấu hình máy chủ ảo Apache

Cấu hình máy chủ ảo Apache của bạn như sau :

<VirtualHost *:80>
ServerName sonata-extra.localhost
ServerAlias fr.sonata-extra.localhost
ServerAlias en.sonata-extra.localhost
ServerAlias es.sonata-extra.localhost
ServerAlias it.sonata-extra.localhost
ServerAlias vn.sonata-extra.localhost
DocumentRoot /var/www/sonata-extra/public

    <Directory /var/www/sonata-extra/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Truy cập các trang web

  • Bảng điều khiển quản trị: Truy cập vào bảng điều khiển quản trị chính của trang tại http://sonata-extra.localhost/admin/login.
  • Trang web theo địa phương: Xem nội dung trên http://[fr,en,es,it,vn].sonata-extra.localhost/[fr,en,es,it,vn]/. Kết nối quản trị viên cho mỗi trang web có sẵn tại các URL tương ứng.

Cấu hình các tuyến đường và ảnh chụp nhanh

Thực hiện các lệnh sau để tạo các tuyến đường, sửa chúng cho Sonata Extra và tạo các ảnh chụp nhanh:

bin/console sonata:page:update-core-routes
bin/console sonata:extra:page-fix-route
bin/console sonata:page:create-snapshots

Cấu hình Sonata Page cho đa trang

Để kích hoạt hỗ trợ đa ngôn ngữ của Sonata Extra, hãy chỉnh sửa các cấu hình như sau :

Chỉnh sửa public/index.php

<?php
use App\Kernel;
use Sonata\PageBundle\Request\RequestFactory;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (array $context) {
    $kernel =  new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
    $request = RequestFactory::createFromGlobals('host_with_path');
    return $kernel->handle($request);
};

sonata_page.yaml Thay đổi

### Configuration in sonata_page.yaml for multisite management
sonata_page:
multisite: host_with_path

Kết luận

Các chức năng quản lý đa trang và đa ngôn ngữ của Sonata Extra Bundle cung cấp một cách tiếp cận mạnh mẽ và linh hoạt để quản lý nội dung trên các địa điểm và trang khác nhau, phù hợp với các khả năng mạnh mẽ của SonataPageBundle.

Đ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