sluy/laravel-translation

用Laravel正确管理您的翻译。导出和导入其他格式,在大多数前端框架中执行操作,更多!

dev-master 2020-02-08 22:32 UTC

This package is auto-updated.

Last update: 2024-09-09 08:32:54 UTC


README

使用单个命令将翻译文件存储在不同格式(数据库、json、js、xml、php)中。

我们知道,Laravel非常强大,是PHP框架中的巨人;然而,其中的一些一致性非常模糊,例如,翻译。

您有一个单独的翻译文件,可以轻松快速地编辑它,但...当您制作SPA或Vue应用程序时?哪里有一个强大的界面来管理翻译?这就是问题的开始。

我们创建了一个简单的命令来操作不同格式的翻译,并生成一个简单的类(目前是Vanilla JS和Vue.js)来将其加载到前端应用程序中。

就是这样,格式转换和前端翻译的单个函数,Laravel还需要什么?

另一个Laravel的“数据库翻译”?

不,永远不。

一些库(好吧,绝大多数)为您提供了一个使用Db在翻译中(在某些情况下会替换Laravel翻译)的桥梁,加上任何加载器、一些事情和爆炸:另一个数据库翻译库。

我们提供更高级的“舒适度”:管理您需要的所有翻译,并享受所有与之相关的“事情”。

安装

您可以通过composer安装此包

composer require sluy/laravel-translation

您可以使用以下命令发布迁移、配置和视图翻译

php artisan vendor:publish --provider="Sluy\LaravelTranslation\LaravelTranslationServiceProvider"

配置

在许多情况下,您可以使用一些配置(或无配置)执行所有包功能

//config/laravel-translation.php
<?php return [
    // Determines if language will be autodetected on request.
    // If this option are enabled it will use 'Accept-Language' http header
    // to lookup. 
    'autodetect_language' => true,
    // An array with package drivers.
    'drivers' => [
        // Db driver: Store/Retrieve data from Database.
        'db' => [
            'class' => Sluy\LaravelTranslation\Drivers\Common\DbDriver::class,
            'location' => 'translations', // Default table to work
            'connection' => null, // null for default connection
        ],
        // Php driver: Store/Retrieve data from default Laravel php location files.
        'php' => [
            'class' => Sluy\LaravelTranslation\Drivers\Common\PhpDriver::class,
            'location' => resource_path('lang'),
        ],
        // JS driver: Store/Retrieve data in Js Modules format. Common of VanillaJs/VueJS
        // apps works with this
        'js' => [
            'class' => Sluy\LaravelTranslation\Drivers\Common\JsDriver::class,
            'location' => storage_path('laravel_translation/lang/js'),
            // determines if will generate index.js files when store/delete items
            'generate_index' => true,
             // determines if npm will reload files when store/delete items
            'npm_reload' => true,
        ],
        // Json driver: Store/Retrieve data in JSON format. You can perform, for example,
        // remote fetches of translations.
        'json' => [
            'class' => Sluy\LaravelTranslation\Drivers\Common\JsonDriver::class,
            'location' => storage_path('laravel_translation/lang/json'),
        ],
        // Xml driver: Store/Retrieve data in XML format. Yes, we know, XML doesnt seems
        // like a "popular" format, but it have too!.
        'xml' => [
            'class' => Sluy\LaravelTranslation\Drivers\Common\XmlDriver::class,
            'location' => storage_path('laravel_translation/lang/xml'),
        ],
    ],
];

命令

导入/导出翻译

在多个格式中生成翻译的常见方式。基本上是从一个格式到另一个格式,就是这样。

php artisan laravel-translation:import {src_driver} {dst_driver} --locale=  --dst_location= --src_location=

基本上,我们有以下内容

示例

php artisan laravel-translation:import {db} {php} --locale=es,en --dst_location=my_custom_translations src_location=/my_custom_folder/php  

它将导入/my_custom_folder/php中的PHP文件到名为my_custom_translations的数据库表中。

销毁翻译

您可以通过类似的方式销毁任何翻译资源

php artisan laravel-translation:destroy {driver} -locale=  --location=

基本上,我们有以下内容

示例

php artisan laravel-translation:destroy {json} --locale=es --location=/my_custom_folder/json  

它将销毁/my_custom_folder/json中的es locales。

GUI管理

我们的包包括一个所有命令(以及更多)功能的图形界面。

添加视图

您可以使用artisan命令添加GUI视图

php artisan laravel-translation:views {format} --rewrite=true/false

GUI视图存储在resources/vendor/laravel-translation路径中,并自动重置Laravel视图缓存。

示例

php artisan laravel-translation:views html --rewrite=true  

添加路由

要添加包路由,请输入您的项目根目录

php artisan laravel-translation:routes

它将添加所有必要的路由到您的web.phpapi.php

如果您只想部署webapi路由,您可以定义only可选参数

php artisan laravel-translation:routes --only=web #only deploys "web" routes

php artisan laravel-translation:routes --only=api #only deploys "api" routes

Web管理器

驱动管理

laravel-translation/drivers路由将显示您定义的驱动程序的所有管理主题

main

基本上,它以带有以下内容的框显示可用的驱动程序

  • 驱动器名称
  • 驱动器信息
  • "store"资源的位置
  • 当前加载的区域(带有x控制以删除模块区域翻译)
  • 操作
    • 导入:打开导入界面。
    • 清除:删除所有翻译。

导入数据

laravel-translation/drivers/{driver}路由将允许将翻译导入当前{driver}

import_main

首先,您需要选择您想要导入数据是从另一个驱动程序还是上传。

从另一个驱动程序

import_from_driver

选择“另一个驱动程序”选项后,它将显示其他必要的控件

  • 源:定义导入数据的源驱动程序。
  • 区域:选择要导入的区域。
从上传

是的,您可以从您的计算机上传翻译!

import_from_upload

选择上传选项时,需要填写

  • 来源:上传的源格式(也称为驱动)。
  • 要上传的文件:包含所有翻译结构的zip文件。翻译结构与Laravel翻译文件夹resources/lang相同。

辅助工具

JavaScript辅助工具

您可以在JavaScript中添加一个简单的辅助工具直接进行翻译(在SPA开发中非常有用)

php artisan laravel-translation:helpers js --bootstrap=true/false

boostrap选项将确定您是否希望在resources/js/bootstrap.js文件中自动添加辅助工具。默认值为false

输入javascript辅助工具安装命令(并在boostrap中添加它)后,您可以轻松翻译单词

__('your.keyword', {replace1: 'value1', replace2: 'value2', ...});

VueJS扩展

我们没有忘记可爱的VueJS框架。您可以使用以下命令添加VueJS辅助工具

首先,您需要安装JavaScript辅助工具才能与Vue扩展一起使用

php artisan laravel-translation:helpers js --bootstrap=true

之后,安装Vue扩展

php artisan laravel-translation:helpers vue --bootstrap=true/false

与上一个案例一样,boostrap选项将确定您是否希望在resources/js/bootstrap.js文件中自动添加辅助工具。默认值为false

安装VueJS辅助工具后,您可以在模板中使用翻译

<template>
    <div>
        <div>
        	{{__('your.keyword')}}
        </div>
    </div>
</template>

或在逻辑定义内部

export default {
	mounted () {
		this.__('your.keyword');
	}
}

此外,VueJS扩展注入了一个指令,以便在模板中直接进行翻译

<template>
    <div>
        <div v-trans="'your.keyword'"></div>
        <!-- or... -->
        <div trans>your.keyword</div>
    </div>
</template>

附加说明

给驱动文件/文件夹位置正确的权限

请记住提供对驱动程序的读写访问权限,否则将引发访问错误。

例如,对于PHP驱动程序

sudo chown -R youruser:www-data resources/lang
sudo chmod -R 775 resources/lang

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何与安全相关的问题,请通过电子邮件sluy1283@gmail.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件