mortendhansen/laravel-database-translations

v0.5.1 2022-04-20 11:23 UTC

This package is auto-updated.

Last update: 2024-09-20 16:47:06 UTC


README

run-tests

数据库中管理的 Laravel 翻译

允许 Laravel 的翻译在数据库中被覆盖、添加或编辑。

Laravel 随附了一个基于文件结构的 本地化,可以使用两种方式

  • 每个语言在 /lang 目录下的 .json 文件,或
  • 返回嵌套在以区域设置为第一级的文件夹中的数组的 php 文件

作为开发者,保持多个语言文件更新并包含键可能相当麻烦,有时你的利益相关者/客户或用户可能希望参与翻译软件。

此包将 前端 Laravel 的本地化,以便

  • 翻译/本地化可以在数据库中发生
  • 缺少的键会即时创建,因此你不必担心在某些区域缺少键
  • 如果数据库中没有设置值或缺少键,则回退到 Laravel 的默认值

例如,你可以使用这样的翻译

__('animal') 

键将在当前区域的表中创建。因此,如果你有来自 10 个不同国家的访客,它将在遇到并发现缺少键时更新表。

如果你有一个 en.json 设置了 {"animal":"bird"},上述结果将是 'bird'。你现在可以通过简单地更新记录来在数据库中覆盖它

$record = DatabaseLangItem::where('locale', 'en')->where('group', '*')->where('key', 'animal')->first();
$record->value = 'giraffe';
$record->save();

现在 __('animal') 的结果是 giraffe。

安装

composer require mortendhansen/laravel-database-translations

发布迁移

artisan vendor:publish --provider="MortenDHansen\LaravelDatabaseTranslations\DatabaseTranslationsServiceProvider" --tag="migrations"
artisan migrate

现在你需要用包中的服务提供者替换 Laravel TranslationServiceProvider

\MortenDHansen\LaravelDatabaseTranslations\DatabaseTranslationsServiceProvider::class,
// Illuminate\Translation\TranslationServiceProvider::class, 

缓存

当然,每次出现时获取和写入语言键都是一个相当大的负载,如果你有很多这样的键。因此,该包缓存了键。当缓存冷时,页面可能会相当慢。你可以使用 artisan 命令 dbtrans:cache-rebuild 来删除键并从表中重建。