lumen / translator
[字符串,数组,对象]的通用翻译器。
Requires
- php: >= 5.3
Suggests
- ext-intl: PHP Universal translator of ['string', 'array', 'object']
This package is auto-updated.
Last update: 2024-09-25 07:40:57 UTC
README
Translator是一个用于生成和翻译数据的包
构建
阅读Lumen应用程序的种子器文件,并编写具有友好结构的json文件以进行编辑“参见配置”
翻译器
具有几种翻译数组、对象和字符串的方法,可以接收包含数组的对象矩阵,并将返回不改变其结构的翻译
安装
使用以下命令安装最新版本:
$ composer require lumen/translator
或编辑您的 composer.json
{ "require": { "lumen/translator": "^2.0@dev" } }
$ composer update
配置
$ php vendor/lumen/translator/configuration.php --config
上述命令将创建以下目录和文件
your_app_name/ ├── translator/ │ ├── configuration.json │ ├── default.json │ ├── en-AR.json │ ├── en-US.json │ └── pt-BR.json
configuration.json
{ "default": "", "column_table": [], "not_tables": [], "file_config": [], "filter_column": [] }
Desciption configuration.json:
配置文件,包含
`default`: default language example file name "es-AR"
`column_table`: columns of the tables to read (only columns string, text, varchar*)
`not_tables`: tables that will not be translated
`file_config`: configuration translation files that are in your_app_name/config/
`filter_column`: columns with data that does not want translation
default.json
{ "table_a.000": "Hola Mundo", "table_b.001": "Mi nombre es", "table_b.002": "el mundo es todo" }
Description default.json:
由种子器执行的动态数据创建
es-AR.json
{ "table_a.000": "Hola Mundo", "table_b.001": "Mi nombre es", "table_b.002": "el mundo es todo" }
Description es-AR.json:
用于用户数据,您必须添加default.json中存在的键及其应用的翻译
en-US.json
{ "table_a.000": "Hello World", "table_b.001": "My name is", "table_b.002": "the world is all" }
Description en-US.json:
手动数据,您必须添加default.json中存在的键及其应用的翻译
pt-BR.json
{ "table_a.000": "Olá mundo", "table_b.001": "Meu nome é", "table_b.002": "o mundo é tudo" }
Description pt-BR.json:
手动数据,您必须添加default.json中存在的键及其应用的翻译
编辑您的 .gitignore
并添加
/laravel/translator/default.json
在 /app/Traits/Translator.php
中创建特质以实现更多控制和使用
<?php namespace App\Traits; use Translator\Translator; use Translator\Build; trait Translator { /** * @return mixed */ public function dictionaryBuild(){ (new Build())->make(); } /** * @return array */ public function dictionaries(){ return (new Translator())->dictionaries(); } /** * @return string */ public function dictionaryDefault(){ return (new Translator())->default(); } /** * indicative if it is going to translate in favor of the user or the system (save system as TRUE) * * @param $data data to translation * @param $system TRUE => as in database or FALSE => user language * @return mixed */ public function dictionary($data, $system=FALSE){ return (new Translator())->dictionary($data, $system); } /** * @return string */ public function language($value = NULL){ $languageC = new Translator(); $language = $languageC->language($value); $language = $languageC->validateLanguage($language); return $language; } /** * @param $request * @return mixed */ public function dictionaryRequest($request){ return (new Translator())->dictionaryRequest($request); } /** * Translation method indicating the language of the system * @param $data * @param $language * @return mixed */ public function dictionarySetLanguage($data, $language){ return (new Translator())->dictionarySetLanguage($data, $language); } }
方法
$this->dictionaryDefault()
用于确定从头部发送的语言(如果不存在则返回null) $this->dictionary($data)
当我们想返回带有翻译的数据时使用 $this->dictionaryRequest($request)
当我们以某种语言接收数据并将其传递给根据default.json的数据时使用 $this->dictionaryBuild()
用从应用程序种子器读取的现有数据重写文件 translator/default.json
基本使用翻译器
frontend
在头部
Accept-Language=es-AR
注意
:如果没有发送Accept-Language,则默认为 ../translator/configuration.json
,如果您只发送两个字母(如en
、pt
、es
),则没有问题,只是后端将获取这些功能中的第一个语言
后端
<?php use App\Traits\Translator; class yourClassX { use Translator; public function yourMethodXGet(){ //part of your code $your_data_example = ['product', 'call', ['colour' => 'white']]; //use of translator $data = $this->dictionary($your_data_example); //part of your code return response()->json($data, 200); } public function yourMethodXPostUpdate(Request $request){ //translator to all the request $request = $this->dictionaryRequest($request); //part of your code } public function yourMethodX(){ //part of your code $your_data_example = ['product', 'call', ['colour' => 'white']]; //use of translator $your_lenguage = 'en-US'; $language = isset($your_lenguage) ? $your_lenguage : $this->dictionaryDefault(); $language = $this->language($language); $text = $this->dictionarySetLanguage($your_data_example, $language); } }
基本使用构建
编辑您的 ../database/seeds/DatabaseSeeder.php
并添加
<?php use App\Traits\Translator; class DatabaseSeeder extends Seeder { use Translator; public function run(){ //part of your code $this->dictionaryBuild(); } }
运行您的种子器
$ php artisan db:seed
关于
需求
- Translator与PHP 5.3或更高版本兼容。
框架集成
- 使用PSR-3的框架和库
- Laravel 4 & 5 集成。
- Lumen 集成。
- CakePHP 可通过cakephp-translator插件使用Translator,插件状态为“禁用”。
作者
Manuel Martinez - sitgem@gmail.com
许可证
Translator根据MIT许可证授权 - 有关详细信息,请参阅LICENSE
文件