我正在寻找关于如何处理需要将字段翻译成n种语言的表的建议。我已经阅读过最好的方法是拥有一个基础表,其中包含所有不特定于语言的字段,以及一个包含所有翻译字段的表。
例如:
PRODUCT PRODUCT_TRANSLATIONS +--------------+ +----------------------+ | id | | id | +--------------+ +----------------------+ | category_id | | product_id | +--------------+ +----------------------+ | price | | language_id | +--------------+ | name | +----------------------+ | description | +----------------------+
因此,我们将拥有一个名为PRODUCT的基础表,其中包含所有元数据,以及一个名为PRODUCT_TRANSLATIONS的表,其中存储需要翻译成多种语言的所有数据。PRODUCT表与PRODUCT_TRANSLATIONS表具有OneToMany关系。
在Doctrine中,如何处理这种情况?如果我查询Products表,我会得到所有加入到该表中的翻译。但是大多数情况下,我只想获得给定产品ID的一个翻译。我可以使用存储库类编写自己的getter方法来将结果集限制为仅一个语言,但我将有很多需要翻译字段的表。我相信有更通用的解决方案。另一个问题是,如果我查询与另一个对象相关联的一个对象,我将获得该第二个对象的所有翻译。
顺便说一句:我知道Gediminas的可翻译行为扩展,但我不喜欢所有翻译都存储在一个表中的事实。
因此,我正在寻找有关国际化的任何最佳实践。对此主题的任何想法都将不胜感激。
例如:
PRODUCT PRODUCT_TRANSLATIONS +--------------+ +----------------------+ | id | | id | +--------------+ +----------------------+ | category_id | | product_id | +--------------+ +----------------------+ | price | | language_id | +--------------+ | name | +----------------------+ | description | +----------------------+
因此,我们将拥有一个名为PRODUCT的基础表,其中包含所有元数据,以及一个名为PRODUCT_TRANSLATIONS的表,其中存储需要翻译成多种语言的所有数据。PRODUCT表与PRODUCT_TRANSLATIONS表具有OneToMany关系。
在Doctrine中,如何处理这种情况?如果我查询Products表,我会得到所有加入到该表中的翻译。但是大多数情况下,我只想获得给定产品ID的一个翻译。我可以使用存储库类编写自己的getter方法来将结果集限制为仅一个语言,但我将有很多需要翻译字段的表。我相信有更通用的解决方案。另一个问题是,如果我查询与另一个对象相关联的一个对象,我将获得该第二个对象的所有翻译。
顺便说一句:我知道Gediminas的可翻译行为扩展,但我不喜欢所有翻译都存储在一个表中的事实。
因此,我正在寻找有关国际化的任何最佳实践。对此主题的任何想法都将不胜感激。