thiagocordeiro / laravel-translator
搜索翻译键并将其插入待翻译的JSON文件
Requires
- php: ^7.4|^8.0
- ext-json: *
- laravel/framework: >=5.4.0
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.0
- slevomat/coding-standard: ^6.0
README
Laravel-translator会扫描项目的resources/view/
和app/
目录,查找@lang(...)
、lang(...)
和__(...)
函数,然后根据第一个参数的值创建键,并将其插入JSON翻译文件。
安装
只需引入此包即可
composer require thiagocordeiro/laravel-translator
此包会自动注册提供者,请参阅laravel包发现。
Composer安装完成后,您可以通过运行以下命令更新项目翻译键
php artisan translator:update
如果由于任何原因Artisan找不到translator:update
命令,您可以在config/app.php
文件中手动注册提供者
return [ ... 'providers' => [ ... Translator\Framework\TranslatorServiceProvider::class, ... ] ]
用法
首先,您需要创建您的JSON翻译文件
app/
resources/
lang/
pt-br.json
es.json
fr.json
...
继续像往常一样工作,当Laravel内置的翻译函数找不到给定的键时,它将返回自身,因此如果您创建了英语键,您不需要创建英语翻译。
blade:
<html>
@lang('Hello World')
{{ lang('Hello World') }}
{{ __('Hello World') }}
</html>
controllers, models, etc.:
<?php
__('Hello World');
lang('Hello World');
您还可以在翻译键中使用参数
@lang('Welcome, :name', ['Arthur Dent'])
输出
translator:update
命令将扫描您的代码以识别新的翻译键,然后将在app/resources/lang/
目录中的所有JSON文件中追加这些键。
{ "Hello World": "Hola Mundo", "Welcome, :name": "Bienvenido, :name", "Just scanned key": "" }
在Laravel 9中,'lang'目录向上移动了一级,因此您需要更改输出。
首先发布配置
php artisan vendor:publish --provider="Translator\Framework\TranslatorServiceProvider"
然后更改输出为
'output' => base_path('lang'),
自定义
您可以更改要扫描的视图的默认路径以及JSON翻译文件的输出。
首先,发布配置文件。
php artisan vendor:publish --provider="Translator\Framework\TranslatorServiceProvider"
在config/translator.php
中,您可以更改languages
、default_language
、use_keys_as_default_value
、directories
、functions
、output
的默认值,或者如果您有不同的实现来保存/加载翻译,您可以创建自己的translation_repository
并将其替换在container
配置中。
use Translator\Framework\LaravelConfigLoader; use Translator\Infra\LaravelJsonTranslationRepository; return [ 'languages' => ['pt-br', 'es'], 'directories' => [ app_path(), resource_path('views'), ], 'functions' => ['lang', '__'], 'output' => resource_path('lang'), 'container' => [ 'config_loader' => LaravelConfigLoader::class, 'translation_repository' => LaravelJsonTranslationRepository::class, ], ];
使用键作为默认值
对于默认语言,您通常希望使用键值作为默认翻译值。您可以通过将配置选项use_keys_as_default_value
设置为true
并定义一个default_language
来您的语言来实现此功能。默认配置为en
,但可以通过在配置中设置default_language
键来覆盖。
提示
- Laravel
trans(...)
函数不使用JSON文件进行翻译,因此您最好在PHP文件中使用__(...)
或其别名lang(...)
,在blade文件中使用@lang(...)
或{{ lang(...) }}
。 - 不要在翻译函数中使用变量,扫描器只会获取字符串键
待办事项
- 为翻译短语提供视图
- 与某些翻译API(如Google或deepl)集成以自动翻译
支持
如果您想支持更改,则可以向以下地址捐款。
比特币地址:bc1qfyudlcxqnvqzxxgpvsfmadwudg4znk2z3asj9h