Neos / Flow中域模型的本地化

时间:2018-05-24 10:13:02

标签: internationalization typo3-flow neoscms typo3-neos flow-framework

我目前正在使用Neos / Flow开发的网站包括一个自行开发的商店系统,作为Flow插件实现。产品,变体和凭证保留为域模型。 由于客户想要以不同语言提供他们的网站,我需要找到一种方法来管理域对象的翻译。 我找不到一种融入Neos / Flow的方法,所以我的第一个想法是简单地在可翻译字段(描述和类似的东西)中插入翻译标识符,然后在视图中使用翻译viewhelper。如果客户不想自己编辑这些字段,这将完全正常。

我的下一个想法是为每个语言维度和每个可翻译字段(如description_en; description_es,...)实现一个额外的字段。但就可维护性和可变性而言,这将是最糟糕的方法。 我经常参与TYPO3项目,在这些项目中,域对象的翻译非常简单,开箱即用。因此,Neos内部的这种体验非常令人沮丧。

是否有人遇到过类似的问题,甚至找不到解决方法?

2 个答案:

答案 0 :(得分:1)

到目前为止,只要我们要求拥有多语言内容,我们就可以通过将数据存储在Neos Content Repository中来解决这个问题。这种方式语言处理又称维度开箱即用。此外,通过使用内联编辑或内容模块的检查器,可以非常轻松地为该记录构建UI。

请注意,在CR中存储数据并不一定意味着您必须将其存储在/ site根节点下。您还可以添加新的根节点[{ "name": "Heurelho Gomes", "position": "Keeper", "jerseyNumber": 1, "dateOfBirth": "1981-02-15", "nationality": "Brazil", "contractUntil": "2019-06-30", "marketValue": null, }, { "name": "Molla Wague", "position": "Centre-Back", "jerseyNumber": 13, "dateOfBirth": "1991-02-21", "nationality": "Mali", "contractUntil": "2018-06-30", "marketValue": null, }, { "name": "Christian Kabasele", "position": "Centre-Back", "jerseyNumber": 27, "dateOfBirth": "1991-02-24", "nationality": "Belgium", "contractUntil": "2021-06-30", "marketValue": null, }, { "name": "Daryl Janmaat", "position": "Right-Back", "jerseyNumber": 2, "dateOfBirth": "1989-07-22", "nationality": "Netherlands", "contractUntil": "2020-06-30", "marketValue": null, }, { "name": "José Holebas", "position": "Left-Back", "jerseyNumber": 25, "dateOfBirth": "1984-06-27", "nationality": "Greece", "contractUntil": "2020-06-30", "marketValue": null, }, { "name": "Étienne Capoue", "position": "Defensive Midfield", "jerseyNumber": 29, "dateOfBirth": "1988-07-11", "nationality": "France", "contractUntil": "2019-06-30", "marketValue": null, }, { "name": "Tom Cleverley", "position": "Central Midfield", "jerseyNumber": 8, "dateOfBirth": "1989-08-12", "nationality": "England", "contractUntil": "2022-06-30", "marketValue": null, }, { "name": "Roberto Pereyra", "position": "Attacking Midfield", "jerseyNumber": 37, "dateOfBirth": "1991-01-07", "nationality": "Argentina", "contractUntil": "2021-06-30", "marketValue": null, }, { "name": "Troy Deeney", "position": "Centre-Forward", "jerseyNumber": 9, "dateOfBirth": "1988-06-29", "nationality": "England", "contractUntil": "2021-06-30", "marketValue": null, }] 来存储您的产品。

您可以查看https://github.com/neos/metadata-contentrepositoryadapter元数据存储在其自己的根目录下。

希望有所帮助, 干杯,丹尼尔

答案 1 :(得分:0)

为记录起见,纯Flow中的“ Doctrine Translateable”扩展也可以实现类似的目的:

https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md

有关如何在Flow中激活扩展名的信息,请参见http://flowframework.readthedocs.io/en/stable/TheDefinitiveGuide/PartIII/Persistence.html#on-the-doctrine-event-system

但是,更干净的方法实际上是实际上将域模型和内容分开(除非您构建了CMS,而内容是您的域;)