【问题标题】:Laravel manage translations with one tableLaravel 用一张表管理翻译
【发布时间】: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 如何处理不同翻译的获取和存储,并使其适应单个翻译表。

标签: php laravel laravel-5


【解决方案1】:

https://github.com/LaravelArab/tarjama

我也从 cakephp 迁移而来,这是最接近我想要的包。 不幸的是,今天它与 Laravel 7 不兼容。

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 2013-01-02
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2011-03-25
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多