CakePHP的国际化
和许多其他框架一样,CakePHP也支持国际化。我们需要遵循以下步骤来实现从单一语言向多语言转化。
第1步 -创建一个单独的区域目录src\Locale 。
第2步 -在该src\Locale目录下为每一种语言创建子目录。子目录的名称可以是语言ISO代码所用的2个字母,或完整区域名如en_US, fr_FR等等。
第3步 -在每种语言子目录下创建独立的default.po文件。此文件包含以下程序中的msgid,msgstr表单入口。
msgid "msg" msgstr "CakePHP Internationalization example."
这里,msgid是将在视图模板文件中使用的键,msgstr是用来存储各翻译的值。
第4步 -在视图模板文件中,我们可以用上面msgid如下,程序将根据区域的设定值进行翻译。
<?php echo __('msg'); ?>
默认的语言环境可以通过config/bootstrap.php中的文件进行设置,如下。
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')
若要在运行时改变语言设置,我们可以使用下面的语句。
use CakeI18nI18n;
I18n::locale('de_DE');
例
修改config/routes.php文件如下。
config/routes.php文件
<?php
use CakeCorePlugin;
use CakeRoutingRouteBuilder;
use CakeRoutingRouter;
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('locale',['controller'=>'Localizations','action'=>'index']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
在src/Controller/目录下创建一个LocalizationsController.php文件。复制以下代码至其中。
src/Controller/LocalizationsController.php
<?php
namespace AppController;
use AppControllerAppController;
use CakeI18nI18n;
class LocalizationsController extends AppController{
public function index(){
if($this->request->is('post')){
$locale = $this->request->data('locale');
I18n::locale($locale);
}
}
}
?>
在src\Locale目录下创建3个目录名为en_US,fr_FR,de_DE,并在每个目录下分别创建一个default.po文件。复制以下代码至对应的文件中。
src/Locale/en_US/default.po
msgid "msg" msgstr "CakePHP Internationalization example."
src/Locale/fr_FR/default.po
msgid "msg" msgstr "Exemple CakePHP internationalisation."
src/Locale/de_DE/default.po
msgid "msg" msgstr "CakePHP Internationalisierung Beispiel."
在src/Template目录下创建一个目录Localizations, 并在此Localizations目录下创建一个名为index.ctp视图文件。复制以下代码至其中。
src/Template/Localizations/index.ctp
<?php
echo $this->Form->create("Localizations",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'); ?>
通过访问以下网址执行上面的例子。
http://localhost:85/locale
输出
执行以上程序,你会看到如下页面。

电子邮件
CakePHP提供了Email类来管理电子邮件相关的功能。如要在任何控制器中使用电子邮件功能,我们首先需要通过编写以下语句来加载Email类。
use CakeMailerEmail;
Email类提供各种有用的方法如下。
| 语法 | From (string|array|null $email null , string|null $name null ) | ||
| 参数说明 | -email;-名字; | ||
| 返回类型 | 数组|$this | ||
| 说明 | 表明邮件发送方地址 | ||
| 语法 | To (string|array|null $email null, string|null $name null) | ||
| 参数说明 | -email;-名字; | ||
| 返回类型 | 数组|$this | ||
| 说明 | 表明邮件接收方地址 | ||
| 语法 | Send (string|array|null $content null) | ||
| 参数说明 | 信息内容,或者信息数组 | ||
| 返回类型 | 数组 | ||
| 说明 | 使用指定的内容,模版或者样式发送邮件 | ||
| 语法 | Subject (string|null $subject null) | ||
| 参数说明 | 主题 | ||
| 返回类型 | 数组|$this | ||
| 说明 | 获得/设置主题 | ||
| 语法 | Attachments (string|array|null $attachments null) | ||
| 参数说明 | 文件名,或文件名数组 | ||
| 返回类型 | 数组|$this | ||
| 说明 | 给邮件添加附件 | ||
| 语法 | Bcc (string|array|null $email null, string|null $name null) | ||
| 参数说明 | -email;-名字; | ||
| 返回类型 | 数组|$this | ||
| 说明 | Bcc | ||
| 语法 | cc( string|array|null $email null , string|null $name null ) | ||
| 参数说明 | -email;-名字; | ||
| 返回类型 | 数组|$this | ||
| 说明 | Cc | ||
例
修改config/routes.php文件如下。
config/routes.php文件
<?php
use CakeCorePlugin;
use CakeRoutingRouteBuilder;
use CakeRoutingRouter;
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('/email',['controller'=>'Emails','action'=>'index']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
在src/Controller/目录下创建一个EmailsController.php文件。复制以下代码至其中。
src/Controller/EmailsController.php
<?php
namespace AppController;
use AppControllerAppController;
use CakeMailerEmail;
class EmailsController extends AppController{
public function index(){
$email = new Email('default');
$email->to('abc@gmail.com')->subject('About')->send('My message');
}
}
?>
在src/Template目录下创建一个Emails目录,并在该Emails目录下创建一个名为index.ctp视图文件。复制以下代码至其中。
src/Template/Emails/index.ctp
Email Sent.
在我们发送电子邮件之前,我们需要对它进行配置。在下面的截图中,可以看到有两个传输配置,默认和Gmail。我们使用Gmail的传输配置。使用您的Gmail用户名密码代替“GMAIL USERNAME”和"APP PASSWORD"。打开Gmail的两步验证,并创建一个新的应用密码发送电子邮件。
config/app.php

通过访问以下网址执行上述例如:
http://localhost:85/CakePHP/email
输出
执行以上程序,你会看到如下页面。


免费 AI IDE


更多建议: