infotechnohelp/cakephp-localization_advanced

CakePHP 3 插件

安装: 0

依赖: 0

建议: 0

安全: 0

星标: 0

分支: 0

类型:cakephp-plugin

dev-master 2019-05-10 17:58 UTC

This package is auto-updated.

Last update: 2024-09-11 14:48:30 UTC


README

NB!!! 依赖于 infotechnohelp/cakephp-json-api_basic

实现

composer require infotechnohelp/cakephp-localization_advanced

1. 添加插件

核心实现

vendor/infotechnohelp/cakephp-core_.../config/bootstrap.php
/** @var \App\Application $Application */
$Application = new \App\Application(CONFIG);
$Application->addPlugin('Infotechnohelp/Localization', ['routes' => true]);

应用实现

src/Application.php → bootstrap()

`$this->addPlugin('Infotechnohelp/Localization', ['routes' => false]);

或者

bin/cake plugin load Infotechnohelp/Localization

2. 添加组件

核心实现

vendor/infotechnohelp/cakephp-core_.../src/Controller/AppController.php → initialize()

$this->loadComponent('Infotechnohelp/Localization.Localization');

应用实现

src/Controller/AppController.php → initialize()

$this->loadComponent('Infotechnohelp/Localization.Localization');

3. 设置本地化配置

config/bootstrap.php

Configure::write('Infotechnohelp.Localization', [

'ignoredPathPrefixes' => ['auth-api', 'api', 'user-activities',],

]);

4. 迁移迁移

bin/cake migrations migrate --plugin Infotechnohelp/Localization

表:i18nTable

路由

自动指示哪些区域包含在 APP/src/Locale

en_US, et_EE, ru_RU

.../en/... → 区域设置为 en_US .../et/... → 区域设置为 et_EE .../ru/... → 区域设置为 ru_RU

不适用于 api 路径 (.../api/...)

.../...?lang=en_US → 区域设置为 en_US,重定向到 .../en/...?lang=en_US

如果存在语言 cookie 且没有指定路由区域或 GET 查询参数,则使用语言 cookie 值

如果语言 cookie 值为 en_US 且请求为 .../...,则请求将被重定向到 .../en/...

NB!!! GET 查询比路由区域更重要。

重要性级别(优先级)

  1. GET 查询参数
  2. 路由区域
  3. 语言 cookie
  4. 默认区域

LanguagesComponent

API

.../localization/api/phrases

NB!!! 目前仅与默认.po 文件一起工作

请求负载结构

[

'keys' => ['key1', 'key2'],

]

区域管理器

i18n 区域化,ModelManager(保存本地化实体)

use Cake\ORM\Behavior\Translate\TranslateTrait;

class Article extends Entity
{
    use TranslateTrait; 
}

短语加载器

加载 JS 文件

区域Shell

bin/cake locale js

生成

webroot/js/Locale/en_US/default.js webroot/js/Locale/en_US/default.json

vendor/infotechnohelp/cakephp-localization_advanced/webroot/js/locale.js