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ạngmsgid và msgstr, 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.
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ố |
|
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ố |
|
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ố |
|
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ố |
|
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ố |
|
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ố |
|
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ố |
|
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.