Laravel - 在从数据库中获取数据后翻译数据或在数据库中翻译文本?

Laravel - Translating data after fetching from databsase OR to have translated text in database?

我想用 Laravel 建立一个多语言网站。

这样做是个好主意吗:

  1. 使用 trans()?
  2. 从数据库中获取的数据翻译字符串

  1. 每种语言有三列不同的标题?

例如在数字 1 中我有:

ID - title
1  - hello
2  - how_are_you

$texts = Text::all();
$translatedText = trans('somefile.'.$texts[0]->title);

对于数字 2,我有:

ID - title_fa - title_en    - title_ar
1  - درود     - Hello       - سلام
2  - خوبی؟    - How are you - کیف احوالک؟


$texts = Text::all();
$translatedText = $texts[0]->title_fa;

从各个方面来说,哪个更好?

这取决于您的要求和您想要更改的数据量。两者各有优缺点。

1.使用翻译文件:

您的数据库会很干净,您无需担心条件字段的显示。所以只有有效数据,没有冗余数据。

如果您对文本不确定,将很难添加相关翻译。


2。使用数据库:

如果您愿意,您可以更灵活地从 UI 界面动态 change/update 翻译文本。

可以在Accessor中添加条件设置属性值,不用担心blade.

您无需担心字段内容,因为会有单独的翻译字段。

如果您有大量数据,数据库性能可能会受到影响。


所以根据您的应用需求,您可以选择最适合您的方法。

最后,如果您要使用数据库方法,您应该创建不同的翻译 table 而不是在相同的 table.

中插入列

就像您在 table1 中有 5 个字段,您需要保留 3 个字段的翻译,那么您应该创建不同的 table,例如 table1_translation 和这 3 个字段,并且只保留 2 个字段在 table1