CakePHP - Quốc tế hóa

Giống như nhiều framework khác, CakePHP cũng hỗ trợ Internationalization. Chúng ta cần làm theo các bước sau để chuyển từ một ngôn ngữ sang nhiều ngôn ngữ.

Bước 1

Tạo một tài nguyên thư mục miền địa phương riêng biệt \locales.

Bước 2

Tạo thư mục con cho từng ngôn ngữ, trong thư mục src \ Locale. Tên của thư mục con có thể là mã ISO gồm hai chữ cái của ngôn ngữ hoặc tên miền địa phương đầy đủ như en_US, fr_FR, v.v.

Bước 3

Tạo riêng biệt default.potệp dưới mỗi thư mục con ngôn ngữ. Tệp này chứa mục nhập ở dạngmsgidmsgstr, như được hiển thị trong chương trình sau đây.

msgid "msg"
msgstr "CakePHP Internationalization example."

Đây, msgid là khóa sẽ được sử dụng trong tệp mẫu Xem và msgstr là giá trị lưu trữ bản dịch.

Bước 4

Trong tệp mẫu Xem, chúng ta có thể sử dụng msgid, như hình dưới đây sẽ được dịch dựa trên giá trị đặt của ngôn ngữ.

<?php echo __('msg'); ?>

Ngôn ngữ mặc định có thể được đặt trong config/app.php tập tin theo dòng sau.

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')

Để thay đổi cục bộ trong thời gian chạy, chúng ta có thể sử dụng các dòng sau.

use Cake\I18n\I18n;
I18n::locale('de_DE');

Thí dụ

Thực hiện các thay đổi trong tệp config / route.php như được hiển thị trong chương trình sau.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',
      ['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('locale',
      ['controller'=>'Localizations','action'=>'index']);
   $builder->fallbacks();
});

Tạo một LocalizationsController.php nộp tại src/Controller/LocalizationsController.php. Sao chép mã sau vào tệp bộ điều khiển.

src/Controller/LocalizationsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\I18n\I18n;
   class LocalizationsController extends AppController {
      public function index() {
         if($this->request->is('post')) {
            $locale = $this->request->getData('locale');
            I18n::setLocale($locale);
         }
      }
   }
?>

Tạo một locales thư mục tại tài nguyên \locales. Tạo 3 thư mục được gọi làen_US, fr_FR, de_DEtrong thư mục ngôn ngữ. Tạo một tệp trong mỗi thư mục có têndefault.po. Sao chép mã sau vào tệp tương ứng.

resources/locales/en_US/default.po

msgid "msg"
msgstr "CakePHP Internationalization example."

resources/locales/fr_FR/default.po

msgid "msg"
msgstr "Exemple CakePHP internationalisation."

resources/locales/de_DE/default.po

msgid "msg"
msgstr "CakePHP Internationalisierung Beispiel."

Tạo một thư mục Localizations tại src/Template và trong thư mục đó, hãy tạo một View tệp được gọi là index.php. Sao chép mã sau vào tệp đó.

src/Template/Localizations/index.php

<?php
   echo $this->Form->create(NULL,array('url'=>'/locale'));
   echo $this->Form->radio("locale",
      [
         ['value'=>'en_US','text'=>'English'],
         ['value'=>'de_DE','text'=>'German'],
         ['value'=>'fr_FR','text'=>'French'],
      ]
   );
   echo $this->Form->button('Change Language');
   echo $this->Form->end();
?>
<?php echo __('msg'); ?>

Thực hiện ví dụ trên bằng cách truy cập URL sau. http: // localhost / cakephp4 / locale

Đầu ra

Sau khi thực hiện, bạn sẽ nhận được kết quả sau.

E-mail

CakePHP cung cấp lớp Email để quản lý các chức năng liên quan đến email. Để sử dụng chức năng email trong bất kỳ bộ điều khiển nào, trước tiên chúng ta cần tải lớp Email bằng cách viết dòng sau.

use Cake\Mailer\Email;

Lớp Email cung cấp các phương thức hữu ích khác nhau được mô tả bên dưới.

Cú pháp

From (string | array | null $ email null, string | null $ name null)

Thông số
  • Chuỗi với email

  • Name

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Nó chỉ định từ địa chỉ email nào; email sẽ được gửi

Cú pháp

Tới (chuỗi | mảng | null $ email null, chuỗi | null $ name null)

Thông số
  • Chuỗi với email

  • Name

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Nó chỉ định email sẽ được gửi đến ai

Cú pháp

Gửi (chuỗi | mảng | null $ content null)

Thông số
  • Chuỗi với thông báo hoặc mảng với thông báo.

Lợi nhuận mảng
Sự miêu tả

Gửi email sử dụng nội dung, mẫu và bố cục được chỉ định

Cú pháp

Chủ đề (string | null $ subject null)

Thông số
  • Chuỗi chủ đề

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Nhận / Đặt chủ đề

Cú pháp

Tệp đính kèm (chuỗi | mảng | null $ tệp đính kèm snull)

Thông số
  • Chuỗi với tên tệp hoặc mảng với tên tệp

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Thêm tệp đính kèm vào email

Cú pháp

Bcc (chuỗi | mảng | null $ email null, chuỗi | null $ name null)

Thông số
  • Chuỗi với email

  • Name

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Bcc

Cú pháp

cc (string | array | null $ email null, string | null $ name null)

Thông số
  • Chuỗi với email

  • Name

Lợi nhuận

mảng | $ cái này

Sự miêu tả

Cc

Thí dụ

Thực hiện các thay đổi trong tệp config / route.php như được hiển thị trong chương trình sau.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/email',['controller'=>'Emails','action'=>'index']);
   $builder->fallbacks();
});

Tạo ra một EmailsController.php nộp tại src/Controller/EmailsController.php. Sao chép mã sau vào tệp bộ điều khiển.

src/Controller/EmailsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Mailer\Email;
   class EmailsController extends AppController{
      public function index(){
         $email = new Email('default');
         $email->to('[email protected]')
            ->subject('About')
            ->send('My message');
      }
   }
?>

Tạo một thư mục Emails tại src/Template và trong thư mục đó, tạo tệp Xem có tên index.php. Sao chép mã sau vào tệp đó.

src/Template/Emails/index.php

Email Sent.

Trước khi chúng tôi gửi bất kỳ email nào, chúng tôi cần phải cấu hình nó. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy rằng có hai phương tiện, mặc định và Gmail. Chúng tôi đã sử dụng vận chuyển Gmail.

Bạn cần thay thế “GMAIL USERNAME” bằng tên người dùng Gmail và “MẬT KHẨU ỨNG DỤNG” bằng mật khẩu ứng dụng của bạn. Bạn cần bật xác minh 2 bước trong Gmail và tạo mật khẩu APP mới để gửi email.

config/app.php

Thực hiện ví dụ trên bằng cách truy cập URL sau - http: // localhost / cakephp / email

Đầu ra

Sau khi thực hiện, bạn sẽ nhận được kết quả sau.