我尝试将我的应用中的输入和输出本地化为德语,并遇到以下设置的问题:
在托管的WebSpace上通过SSH / Composer安装CakePHP 3.2.1。
创建了一个只有一个表的数据库"发票"用于测试,使用列" id"," datum" (日期时间)和"金额" (十进制10,2)。
用" bin / cake烘焙所有发票"。
通过SSH使用" locale -a" ...
检查我的网络托管服务商的本地化缩写de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
de_DE.utf8@euro
编辑config / bootstrap.php:
ini_set('intl.default_locale', 'de_DE');
在/src/Template/Invoices/add.ctp中添加了一些php-test-output:
<?php
use Cake\I18n\I18n;
use Cake\I18n\Time;
$now = Time::now();
echo $now->i18nFormat('dd.MM.yyyy HH:mm:ss');
echo " +++ ";
echo $now->i18nFormat('l, N. F Y');
?>
<nav class="large-3 medium-4 columns" id="actions-sidebar">
<ul class="side-nav">
<li class="heading"><?= __('Actions') ?></li>
<li><?= $this->Html->link(__('List Invoices'), ['action' => 'index']) ?></li>
</ul>
</nav>
<div class="invoices form large-9 medium-8 columns content">
<?= $this->Form->create($invoice) ?>
<fieldset>
<legend><?= __('Add Invoice') ?></legend>
<?php
echo $this->Form->input('datum');
echo $this->Form->input('betrag');
?>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
</div>
这是我的php-test-output:
07.02.2016 12:42:19 +++ ,
正如您所看到的,第一个输出看起来像德国日期时间格式,但我必须手动传递格式,就像我会使用纯PHP代码一样,所以我在哪里可以告诉CakePHP始终使用此格式的日期或整个应用程序内的时间字段?
&#34; +++&#34;我期待以下输出,但只有逗号:
Sonntag, 7. Februar 2016
输入字段是否也可以使用本地化格式?我的下拉字段&#39;数据&#39;该月仍然有英文名称,并且该日期的前3个下拉字段的顺序是错误的。
如果您能给我一个如何在CakePHP表单输入元素和任意输出数据中获取本地本地化德语日期,数字和货币的信息,我将不胜感激。
提前致谢并致以最诚挚的问候,
TheDude
答案 0 :(得分:0)
i18n日期使用IntlDateFormatter
格式化,http://userguide.icu-project.org/formatparse/datetime使用ISO日期格式模式,而不是默认的PHP日期模式。
l
已被弃用,并且不会生成任何输出,N
似乎根本不是公认的符号,并且它负责其余的模式失败了,我不知道为什么会这样。
无论如何,对于有效符号,请检查例如
您正在寻找的模式是EEEE, d. MMMM Y
。