mprince / laravel-db-translator
Laravel 8 数据库翻译扩展
Requires
- illuminate/config: 8.x
- illuminate/console: 8.x
- illuminate/database: 8.x
- illuminate/filesystem: 8.x
- illuminate/routing: 8.x
- illuminate/support: 8.x
- illuminate/translation: 8.x
Requires (Dev)
- mockery/mockery: ^1.4.4
- orchestra/testbench: 6.x
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-22 10:57:10 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 数据库翻译器
将检查配置在 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 许可证