【发布时间】:2020-06-26 02:52:27
【问题描述】:
我来自 CakePhp 世界,是 Laravel 的新手。在 cakephp 中,可以用一张表翻译所有模型。 表格方案是这样的:
id,language,model,foreign_key,field,content
每个翻译都在一个表中,您只需在模型中设置要翻译的字段。我在 laravel 中找不到那种结构。如果我必须为每个要翻译的新模型制作一个额外的表格,那将是太多的代码/表格。
那么,有没有人知道如何在 laravel 中实现这一点?我看到在获取数据时没有任何事件。
【问题讨论】:
-
您是否希望在
translations表中包含所有翻译(包括主要语言)?或者为每个模型创建一个表,该表存储主要语言值和要在该translations表中的任何其他翻译(例如,拥有一个Product模型,该模型具有相应的products表,例如,name和以英语存储值的description列,以及将该模型的任何其他语言翻译存储在具有您描述的结构的translations表中)? -
@Bogdan 我想要一张表包含所有翻译(包括主要语言)
-
可以安装一些软件包来处理 Eloquent 模型翻译,但它们似乎都通过为每个存储翻译的模型设置一个辅助表来解决这个问题,当你有很多模型时需要翻译会导致很多额外的表格。这可能是因为它可以通过像您描述的那样拥有一个全局
translations表来实现这一点。 -
要解决这个问题,需要对 Eloquent 模型在获取和存储模型信息方面的工作方式进行一些更改(具有处理逻辑的
Translatable特征可能是一个好方法)。我还建议使用Polymorphic Relations,它可以让您轻松地将模型映射到翻译值。 -
您可以看看this package 如何处理不同翻译的获取和存储,并使其适应单个翻译表。