bernardomacedo / laravel-db-translator
Laravel 5.6 数据库翻译扩展
Requires
- illuminate/config: 5.6.x
- illuminate/console: 5.6.x
- illuminate/database: 5.6.x
- illuminate/filesystem: 5.6.x
- illuminate/routing: 5.6.x
- illuminate/support: 5.6.x
- illuminate/translation: 5.6.x
Requires (Dev)
- mockery/mockery: ^0.9.4
- orchestra/testbench: 3.2.x
- phpunit/phpunit: ^5
- dev-master
- 5.6.1
- 5.6
- 2.4
- 2.3.0
- 2.2.9.x-dev
- 2.2.9
- 2.2.8.x-dev
- 2.2.8
- 2.2.7.x-dev
- 2.2.6.x-dev
- 2.2.6
- 2.2.5.x-dev
- 2.2.5
- 2.2.4.x-dev
- 2.2.4
- 2.2.3.x-dev
- 2.2.3
- 2.2.2.x-dev
- 2.2.2
- 2.2.1.x-dev
- 2.2.1
- 2.2.0.x-dev
- 2.2.0
- 2.1.17.x-dev
- 2.1.17
- 2.1.16.x-dev
- 2.1.15.x-dev
- 2.1.14.x-dev
- 2.1.13.x-dev
- 2.1.12.x-dev
- 2.1.11.x-dev
- 2.1.10.x-dev
- 2.1.10
- 2.1.9.x-dev
- 2.1.8.x-dev
- 2.1.8
- 2.1.7.x-dev
- 2.1.7
- 2.1.6.x-dev
- 2.1.6
- 2.1.5.x-dev
- 2.1.5
- 2.1.4.x-dev
- 2.1.3.x-dev
- 2.1.2.x-dev
- 2.1.2
- 2.1.1.x-dev
- 2.1.1
- 2.1.0.x-dev
- 2.1.0
- 2.0.9.x-dev
- 2.0.9
- 2.0.8.x-dev
- 2.0.8
- 2.0.7.x-dev
- 2.0.7
- 2.0.6.x-dev
- 2.0.6
- 2.0.5.x-dev
- 2.0.5
- 2.0.4.x-dev
- 2.0.4
- 2.0.3.x-dev
- 2.0.3
- 2.0.2.x-dev
- 2.0.2
- dev-origin/5.6
- dev-origin/2.4
This package is not auto-updated.
Last update: 2024-09-14 18:36:46 UTC
README
此包允许您向数据库添加翻译,并为每个组生成本地化文件夹。
注意
- 它不会通过使用另一个函数调用来构建键/值翻译来替换当前的 Laravel 翻译器。
- 它与您的当前 Laravel 项目不冲突。
- 它不会替换您当前的任何翻译,并且与您的语言文件无缝协同工作,因为此包生成它自己的语言文件和目录。
- Dev Laravel 5.6
兼容性
Laravel 框架 5.6
安装
$ composer require bernardomacedo/laravel-db-translator
首先在您的应用程序中注册服务提供者和外观。
// config/app.php 'providers' => [ ... bernardomacedo\DBTranslator\DBTranslatorServiceProvider::class, ]; 'aliases' => [ ... 'DBTranslator' => bernardomacedo\DBTranslator\DBTranslatorFacade::class, ];
要发布所有设置...
php artisan vendor:publish --provider="bernardomacedo\DBTranslator\DBTranslatorServiceProvider"
...或单独
$ php artisan vendor:publish --provider="bernardomacedo\DBTranslator\DBTranslatorServiceProvider" --tag="config"
$ php artisan vendor:publish --provider="bernardomacedo\DBTranslator\DBTranslatorServiceProvider" --tag="migrations"
$ php artisan vendor:publish --provider="bernardomacedo\DBTranslator\DBTranslatorServiceProvider" --tag="lang"
然后运行迁移
$ php artisan migrate
将磁盘添加到 filesystems.php
文件存储
如果您更改了默认磁盘名称,因为它可能与其他包或潜在的未来包冲突,请确保在发布的 db-translator.php => storage_driver 参数下更改它。
'disks' => [
...
'translator' => [
'driver' => 'local',
'root' => base_path('resources/lang/vendor/dbtranslator')
],
...
用法
默认语言设置为 App::getLocale()
。
在 blade 模板中使用
function lang($text = false, $vars = null, $value = null, $group = null, $locale = null)
{{ lang('some text to translate') }} {{ lang(':count apple named :name|:count apples named :name', ['name' => 'Bernardo'], 2) }} {{ lang('{0} There are no apples (:count) named :name|[1,19] There are some (:count) apples named :name|[20,Inf] There are many (:count) apples named :name', ['name' => 'Bernardo'], 2) }}
这种翻译方法更容易理解,因为即使翻译未找到,输入的文本也会返回。
{{ lang('some text to translate') }} // returns 'algum texto para traduzir' {{ lang('some text to translate', null, null, null, 'ru') }} // returns 'какой-нибудь текст' bypassing the current language forcing a locale. {{ lang('this text does not exists on the database') }} // returns 'this text does not exists on the database' and will be added for future translation
组是什么意思?
有时您需要根据基于上下文的情况生成特定的翻译。在同一短语或文本您希望翻译的情况下,在其他语言中可能意味着不同的东西。因此,组参数允许您根据上下文区分相同的翻译。
{{ lang('participations') }} /* general group assumed */ {{ lang('participations', null, null, 'some_group') }} /* some_group group assumed */
动态组和变量
当使用动态变量进行翻译时,请确保强制使用名为 'dynamic_...' 的组。
{{ lang($language_name, null, null, 'dynamic_language') }} /* language group assumed with dynamic flag on database */ {{ lang($SomeDynamicVar, null, null, 'dynamic_some_group') }} /* some_group group assumed with dynamic flag on database */
翻译文本
DBTranslator::doTranslation($variable_id, $text, $language_id, $group = 'general');
如果仅提供字符串,DBTranslator 将为您查找 $variable_id
和 $language_id
。
DBTranslator::doTranslation('This is cool', 'Isto é cool', 'pt');
有时您希望为翻译创建一个变量,直接在您选择的某个语言上添加翻译。因此,在 $variable_id 上提供一个不存在于 translations_variables
表中的字符串,将生成一个新变量,并将条目直接添加到 translations_translated
表中。
生成翻译文件
在控制器类中
use bernardomacedo\DBTranslator\DBTranslator; class SomeControllerName extends BaseController { public function generate_translations() { /** * This will generate the language translations for all * translated texts in the database, and will assume * the original language by default. * This will work on all languages active by default. */ DBTranslator::generate(); /* will generate all translations */ DBTranslator::generate('pt'); /* will generate the Portuguese translations */ DBTranslator::generate(64); /* will generate the Portuguese translations based on ID */ /** * Redirect or do whatever you wish after generation */ return redirect()->route('home'); } }
这将在 filesystems.php
文件指定的目录下创建所有必需的文件。
resources/lang/vendor/dbtranslator/
- en
- general.php
- some_group.php
- pt
- general.php
- some_group.php
获取数据库中的所有变量
use bernardomacedo\DBTranslator\Models\Intl; class SomeControllerName extends BaseController { public function some_function() { $all = Intl::all(); $group = Intl::group('general')->get(); } }
获取可用的翻译
use bernardomacedo\DBTranslator\Models\Translated; class SomeControllerName extends BaseController { public function some_function() { /** * Gets all available translations */ $all = Translated::all(); /** * Gets all available translations */ $portuguese = Translated::language('pt')->get(); // using string ISO $portuguese = Translated::language(64)->get(); // using ID for the language } }
在不渲染浏览器视图的情况下将翻译插入/从数据库中插入/删除
您可以在不渲染视图的情况下将翻译添加到数据库。为此,您可以运行 artisan 命令,Laravel Database Translator
将检查您在 config/view.php
配置文件 paths
下配置的视图文件夹,并将找到的任何 lang(*) 元素添加到数据库中。
插入翻译
$ php artisan dbtranslator:add
删除未使用的翻译
$ php artisan dbtranslator:remove
在运行这些命令时,将忽略 动态组
和 `$变量`。例如
lang($php_var) /* is not supported so they will be ignored */
生成翻译
为葡萄牙语生成
$ php artisan dbtranslator:generate pt
为西班牙语生成
$ php artisan dbtranslator:generate es
为所有语言生成
$ php artisan dbtranslator:generate --status=all
为活动语言生成
$ php artisan dbtranslator:generate --status=active
为非活动语言生成
$ php artisan dbtranslator:generate --status=inactive
许可协议
Laravel 数据库翻译器是开源软件,许可协议为 MIT 许可协议