mortendhansen / laravel-database-translations
管理数据库中的 Laravel 翻译
v0.5.1
2022-04-20 11:23 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0
- phpunit/phpunit: ^9.5
README
数据库中管理的 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
来删除键并从表中重建。