lumen/translator

[字符串,数组,对象]的通用翻译器。

dev-master / 2.0.x-dev 2019-04-24 12:44 UTC

This package is auto-updated.

Last update: 2024-09-25 07:40:57 UTC


README

[Total Downloads [Latest Stable Version 2.0

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,如果您只发送两个字母(如enptes),则没有问题,只是后端将获取这些功能中的第一个语言

后端

<?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或更高版本兼容。

框架集成

作者

Manuel Martinez - sitgem@gmail.com

许可证

Translator根据MIT许可证授权 - 有关详细信息,请参阅LICENSE文件