statikbe / laravel-chained-translator
Laravel Chained Translator 可以组合多个翻译器,它们可以覆盖彼此的翻译。
Requires
- php: ^8.0|^8.1|^8.2
- brick/varexporter: ^0.5
- laravel/framework: ^9.0|^10.0|^11.0
README
Laravel Chained Translator
链式翻译器可以组合多个翻译器,它们可以覆盖彼此的翻译。通常,在开发阶段某个时候,内容管理员可能需要翻译或微调开发人员添加的字符串。当开发人员和内容管理员同时处理翻译文件时,这通常会导致合并和版本控制问题。
链式翻译器包允许开发人员创建的翻译与内容管理员编辑的翻译(自定义翻译)在单独的 lang
目录中存在。库会合并这两个语言目录的翻译,其中内容管理员的翻译(自定义翻译)会覆盖开发人员的翻译(默认翻译)。
例如,开发人员创建的默认翻译保存在默认 Laravel lang
目录的 resources/lang
中,而内容管理员的翻译添加到 resources/lang-custom
中。当 resources/lang-custom
目录中存在翻译键时,它会被优先考虑,否则我们会回退到默认翻译。
我们提供了两个包,它们提供用户界面,让内容管理员可以编辑翻译。
- Laravel Nova Chained Translation Manager 用于 Laravel Nova
- Laravel Filament Chained Translation Manager 用于 Laravel Filament
安装
通过 composer
composer require statikbe/laravel-chained-translator
命令
将自定义翻译合并回默认翻译文件
如果您想将当前环境中内容管理员制作的翻译文件与默认翻译文件合并,可以使用以下命令。由于此库对您的 Laravel 应用程序支持的区域设置一无所知,因此您需要传递区域设置作为参数。遗憾的是,Laravel 没有默认支持的区域设置列表。因此,如果您想合并所有支持的区域设置的文件,请为每个区域设置运行此命令。
例如,对于法语
php artisan chainedtranslator:merge fr
此命令可以用于将翻译者的翻译工作合并回默认翻译文件。
配置
您可以通过运行此命令发布配置
php artisan vendor:publish --provider="Statikbe\LaravelChainedTranslator\TranslationServiceProvider" --tag=config
以下配置字段可用
1. 自定义 lang 目录
默认情况下,自定义翻译保存在 resources/lang-custom
中。可以使用 custom_lang_directory_name
进行配置。
2. 自定义 lang 目录的 .gitignore
如果 add_gitignore_to_custom_lang_directory
设置为 true,则会在自定义语言目录中添加 .gitignore 文件。
3. 在嵌套数组中分组键
如果 group_keys_in_array
设置为 true,则点分隔的翻译键将映射到数组中。
设置为 true:保存为嵌套数组,例如
'key' => [ 'detail' => 'translation', ]
设置为 false:保存为点分隔的键,例如
'key.detail' => 'translation',
4. 自定义 json 组名称
您可以使用 json_group
编辑所有 json 翻译的组名称。
待办事项 & 灵感
- 覆盖默认
lang
目录的选项。这可以在本地和预发布环境中管理开发人员的翻译。
致谢
我们使用了 Joe Dixon 的翻译库作为技术专长和灵感的来源
非常感谢您的大作!
许可协议
MIT许可证(MIT)。更多信息请参阅许可证文件。