首页 > 解决方案 > Laravel - 从数据库获取后翻译数据或在数据库中翻译文本?

问题描述

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

这样做是否是个好主意:

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

或者

  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;

从不同的方面来看,哪一个更好?

标签: databaselaravelmultilingual

解决方案


它取决于您的要求和您想要更改的数据量。两者都有自己的优点和缺点。

1.使用翻译文件:

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

如果您对文本不确定,则很难添加关于该文本的翻译。


2.使用数据库:

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

您可以在设置属性值时添加条件,Accessor因此无需担心刀片内部。

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

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


因此,根据您的应用要求,您可以选择最适合您的方法。

最后,如果您使用数据库方法,您应该创建不同的翻译表,而不是在同一个表中插入列。

就像您有 5 个字段table1需要保留 3 个字段的翻译,那么您应该table1_translation使用这 3 个字段创建不同的表,并且只保留 2 个字段table1


推荐阅读