使用 Laravel 翻译加载程序包将您的翻译存储在数据库中
发布于 作者: Diaa Fares
Laravel 内置支持 本地化,使用存储在语言文件中的数组,在 5.4 中,他们添加了对 基于 JSON 的语言文件 的支持。
某些应用程序更适合将语言字符串存储在数据库中,以便最终用户可以通过自定义用户界面更改它们,这就是 Laravel 翻译加载程序 包可以提供帮助的地方。
让我们看一下如何设置和使用此包。
安装
首先,通过 Composer 安装 **Laravel 翻译加载程序**
composer require spatie/spatie/laravel-translation-loader
接下来,打开您的 **config/app.php** 并替换 Laravel 的翻译服务提供商
Illuminate\Translation\TranslationServiceProvider::class,
使用 **Laravel 翻译加载程序** 服务提供商
Spatie\TranslationLoader\TranslationServiceProvider::class,
然后发布 **Laravel 翻译加载程序** 迁移文件
php artisan vendor:publish --provider="Spatie\TranslationLoader\TranslationServiceProvider" --tag="migrations"
最后,运行迁移,它将在数据库中创建一个名为 **language_lines** 的新表,用于保存应用程序翻译
php artisan migrate
概述
完成安装后,将新语言行添加到数据库将像这样简单
use Spatie\TranslationLoader\LanguageLine; LanguageLine::create([ 'group' => '<span id="result_box" class="short_text" lang="en"><span class="">greetings</span></span>', 'key' => 'hello', 'text' => ['en' => 'Hello', 'ar' => 'السلام عليكم ورحمة الله وبركاته', 'es' => 'Hola'],]);
要从数据库中获取翻译,请使用默认的 Laravel **trans** 函数,如下所示
echo trans('<span id="result_box" class="short_text" lang="en"><span class="">greetings</span></span>.hello');// Will return 'Hello' if the locale is English and Will return 'السلام عليكم ورحمة الله وبركاته' if the locale is Arabic
或者,您可以使用 blade 语法和 @lang 指令,如下所示
{{ trans('<span id="result_box" class="short_text" lang="en"><span class="">greetings</span></span>.hello') }}// Or@lang('<span id="result_box" class="short_text" lang="en"><span class="">greetings</span></span>.hello')
您也可以使用 laravel **trans** 函数的参数功能,它允许您在翻译中使用占位符,并稍后通过将替换数组作为第二个参数传递给 **trans** 函数来替换它们,如下所示
trans('<span id="result_box" class="short_text" lang="en"><span class="">greetings</span></span>.welcome', ['name' => 'Diaa'])
**Laravel 翻译加载程序** 的一个不错的功能是允许您同时将翻译保存到语言文件和数据库中。默认情况下,它将查找数据库版本,然后回退到文件。另一个功能是,您可以扩展该包以支持其他翻译提供商,例如 YAML、CSV 等。
就是这样,如果您想要一个非常有用的包,它提供了一种干净且简单的方式将您的翻译保存到数据库中,请查看 Laravel 翻译加载程序。