036. 数据库的多语言翻译方案 ——spatie/laravel-translatable
数据库的多语言翻译方案 ——spatie/laravel-translatable
如果我们的项目需要针对多种语言环境进行切换,某些固定的文案我们可以通过 Laravel 本地化 进行翻译,但是有些数据库中的数据就需要我们使用其他的方式进行处理了,因为这些数据不是固定的,而是手动保存到数据库中,之后还可能会变动。
这节课以 LaraBBS 中的资源推荐(Link)为例,Link 模型有个 title 字段用于显示资源标题,假设我们支持中文和英文两种语言,那么为了让英文用户可以查看到英文的标题,我们可能会实现成这样:
- 为 links 表增加一个 title_en 字段;
- 添加 / 修改 link 数据的时候同时设置 title 以及 title_en 字段;
- 根据用户当前的语言环境返回对应的字段。
这是一种比较简单的实现,但是增加语言的时候又会带来新的问题,我们需要为数据表增加更多的字段,显然是不合适的。今天要学习的扩展包 spatie/laravel-translatable 利用了