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

时间:2019-06-20 06:50:00

标签: database laravel multilingual

我想与Laravel建立多语言网站。

这样做是一个好主意

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

OR

  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 个答案:

答案 0 :(得分:2)

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

1。使用翻译文件:

您的数据库将很干净,您无需担心条件字段的显示。因此,只有有效数据才不会有冗余数据。

如果您不确定文本,将很难添加有关该文本的翻译。


2。使用数据库:

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

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

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

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


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

最后,如果要使用数据库方法,则应创建不同的转换表,而不是在同一表中插入列。

就像您在table1中有5个字段一样,您需要保留3个字段的翻译,因此您应该使用这3个字段创建不同的表(如table1_translation,在table1中仅保留2个字段