gpt4 book ai didi

symfony - 带学说的数据库翻译

转载 作者:行者123 更新时间:2023-12-02 22:43:27 27 4
gpt4 key购买 nike

在思考了很多如何支持 i18n 之后,我想出了一个公认的解决方案来拥有一个单独的表。
可翻译问题
我按照建议安装了 Translatable from doctrine extensions,但没有按我想要的方式工作,有经验的用户建议我不要使用它。即使有一个单独的表,它在主表和翻译表中都有可翻译的列,并以一种简单的方式存储值。此外,如果默认语言环境发生变化(发生在我身上并且可能再次发生),它会使事情变得复杂,因为主表中的默认值似乎没有指定的语言环境。我还有几个可翻译字段(5~)。这将导致 5甚至更多左连接以防回退。

其他解决方案
我认为的另一个解决方案是有一个单独的表,只为每个表提供翻译,并可能通过 postLoad 事件监听器设置默认语言环境和回退。这样我就可以在没有 obj.translations['en'] 的情况下调用 obj.getTitle()。 getTitle() ,无需提供语言环境。

问题
这种方法的问题是回退。一个解决方法是在加入过程中添加一个“WITH locale in ('en','de') 例如。这会返回更多的数据,但回退会起作用。另一种方法是使用合并,但学说不可能将其映射到实体。有什么方法可以有效地实现回退?

最佳答案

你可以看看https://github.com/KnpLabs/DoctrineBehaviors#translatable ,这是我们在深入研究后找到的最佳解决方案。

我们目前正在为许多实体使用它,而且效果很好。您可以像任何其他实体一样查询翻译,加入,例如使用 DQL。

是的,您可以使用现有 API 轻松想象回退机制。

关于symfony - 带学说的数据库翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423786/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com