我目前正在使用Neos / Flow开发的网站包括一个自行开发的商店系统,作为Flow插件实现。产品,变体和凭证保留为域模型。 由于客户想要以不同语言提供他们的网站,我需要找到一种方法来管理域对象的翻译。 我找不到一种融入Neos / Flow的方法,所以我的第一个想法是简单地在可翻译字段(描述和类似的东西)中插入翻译标识符,然后在视图中使用翻译viewhelper。如果客户不想自己编辑这些字段,这将完全正常。
我的下一个想法是为每个语言维度和每个可翻译字段(如description_en; description_es,...)实现一个额外的字段。但就可维护性和可变性而言,这将是最糟糕的方法。 我经常参与TYPO3项目,在这些项目中,域对象的翻译非常简单,开箱即用。因此,Neos内部的这种体验非常令人沮丧。
是否有人遇到过类似的问题,甚至找不到解决方法?
答案 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,而内容是您的域;)