Laravel - 在从数据库中获取数据后翻译数据或在数据库中翻译文本?
Laravel - Translating data after fetching from databsase OR to have translated text in database?
我想用 Laravel 建立一个多语言网站。
这样做是个好主意吗:
- 使用
trans()
? 从数据库中获取的数据翻译字符串
或
- 每种语言有三列不同的标题?
例如在数字 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
我想用 Laravel 建立一个多语言网站。
这样做是个好主意吗:
- 使用
trans()
? 从数据库中获取的数据翻译字符串
或
- 每种语言有三列不同的标题?
例如在数字 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