静态数据的CakePHP本地化
CakePHP版本:3.6.6静态数据的CakePHP本地化,cakephp,localization,cakephp-3.0,Cakephp,Localization,Cakephp 3.0,CakePHP版本:3.6.6 我为这么长的帖子提前道歉,但我相信这是所有需要帮助的人所需要的信息 ============================================================================================================================ 第1节 //我想要实现的目标 最后,我希望我的应用程序能够自动检测用户的语言,并相应地更改以下内容: 文本 日期格式 数字格式 货币 为了实现这一点,
我为这么长的帖子提前道歉,但我相信这是所有需要帮助的人所需要的信息 ============================================================================================================================ 第1节 //我想要实现的目标 最后,我希望我的应用程序能够自动检测用户的语言,并相应地更改以下内容:
'defaultLocale'=>env('APP\u DEFAULT\u LOCALE','en\u GB') config/bootstrap.php
ini_set('intl.default_locale',Configure::read('App.defaultLocale') //欢迎控制器
?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Event\Event;
// For translation
use Cake\I18n\I18n;
use Cake\I18n\Time;
use Cake\I18n\Number;
class WelcomeController extends AppController
{
public function index()
{
// Get the default locale
$defaultLocale = I18n::getDefaultLocale();
echo $defaultLocale . '<br />';
// Date
$date = new Time('2017-12-05 23:00:00');
echo $date . '<br />';
// Number
echo Number::format(123.50) . '<br />';
// Currency
echo Number::currency(1250.00) . '<br /><br />';
}
}
============================================================================================================================
第4节
//我所做的
1。在src中创建了一个名为Locale的文件夹2.在区域设置中创建了一个名为de_de的文件夹
3.使用cli导航到bin。
4.键入cake i18n extract并单击enter。
5.单击enter后,cli将显示以下内容:
当前路径:无
您要提取的路径是什么?
[Q] uit[D]one
[C:xampp\htdocs\app\u name\src]>
然后在>之后添加以下内容,并单击enter
C:xampp\htdocs\app\u name\src\Template\Welcome 6.单击enter后,cli将显示以下内容:
当前路径:C:xampp\htdocs\app\u name\src\Template\Welcome
您要提取的路径是什么?
[Q] uit[D]one
[D] >
7。I然后单击enter,cli将显示以下内容:
是否要从CakePHP核心提取消息?(是/否)
[n] >
8。I然后单击enter,cli将显示以下内容:
您希望输出的路径是什么?
[Q] uit
[C:xampp\htdocs\app\u name\src\Template\Welcome\Locale]>
然后在>之后添加以下内容,并单击enter
C:xampp\htdocs\app\u name\src\Locale
9。I然后单击enter,cli将显示以下内容:
是否要将所有域字符串合并到default.pot文件中?(是/否)
[n] >
10。I然后单击enter,cli将显示以下内容:
正在提取…
路径:C:xampp\htdocs\app\u name\src\Template\Welcome
输出目录:C:xampp\htdocs\app\u name\src\Locale\
===========================================================================================>100%
完成。
11。之后,我在src/Locale文件夹中有一个default.pot文件。我将此文件复制并粘贴到de_de文件夹中。
该文件夹的内容如下:
# LANGUAGE translation of CakePHP Application
# Copyright YEAR NAME <EMAIL@ADDRESS>
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2018-09-05 09:20+0000\n"
"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
"Last-Translator: NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: Template/Welcome/index.ctp:52
msgid "Welcome"
msgstr ""
#: Template/Welcome/index.ctp:58
msgid "What would you like to do today!"
msgstr ""
然后,我将config/app.php中的默认区域设置更改为:'defaultLocale'=>env('APP\u DEFAULT\u LOCALE','de\u de') 然后刷新浏览器并显示以下内容:
de_DE
05.12.15, 23:00
123,5
1.250,00 €
Welcome
What would you like to do today!
de_DE
05/12/2015, 23:00
123.5
£1,250.00
Welcome
What would you like to do today!
============================================================================================================================
第5节
//结果
区域设置、日期、编号和货币已更改,但文本未更改。它仍然显示:
Welcome
What would you like to do today!
我希望它能显示:
abc
xyz
============================================================================================================================
第6节
//我试图解决的问题
我在中间件Application.php中添加了以下内容:
// Add middleware and set the valid locales
$middlewareQueue->add(new LocaleSelectorMiddleware(['en_GB', 'de_DE']));
这就是浏览器显示的内容:
de_DE
05.12.15, 23:00
123,5
1.250,00 €
Welcome
What would you like to do today!
de_DE
05/12/2015, 23:00
123.5
£1,250.00
Welcome
What would you like to do today!
区域设置仍然是de_de,但日期、数字和货币已恢复为英语
============================================================================================================================
第7节
//摘要
我真的非常感谢在这方面的任何帮助,因为如果我能将我的应用程序本地化,并具有允许用户以他们的母语使用我的应用程序的功能,那将是非常棒的。如果我做不到这一点,我真的在限制我的市场
如果还有什么我没有写但你需要的,请不要犹豫,让我知道
非常感谢您的帮助。Z
============================================================================================================================
@ndm-感谢您的回复,已经学到了很多,但仍然没有雪茄
我下载了Poedit并打开了它。然后我单击“编辑翻译”,并从Locale文件夹打开default.pot文件
一切看起来都很好,并显示以下内容:欢迎光临
你今天想做什么 然后单击“创建新翻译”并从下拉列表中选择德语,窗口分为两半: 左侧-源文本-英语。
右图-翻译-德语 我突出显示“欢迎”,并选择德语对应的“Willkomen”,然后在右侧窗口中填充。我也这么做
de_DE
05/12/2015, 23:00
123.5
£1,250.00
Welcome
What would you like to do today!
# LANGUAGE translation of CakePHP Application
# Copyright YEAR NAME <EMAIL@ADDRESS>
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2018-09-05 09:41+0000\n"
"PO-Revision-Date: 2018-09-05 14:26+0100\n"
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.1.1\n"
"Last-Translator: \n"
"Language: de\n"
#: Template/Welcome/index.ctp:52
msgid "Welcome"
msgstr "Willkommen"
#: Template/Welcome/index.ctp:58
msgid "What would you like to do today!"
msgstr "Was würden Sie heute gerne machen!"