语言敏感的标题方法(Plone、Archetypes、LinguaPlone)

Language sensitive title method (Plone, Archetypes, LinguaPlone)

我有一个具有国际化内容的 Plone 站点,使用 Archetypes 和 LinguaPlone。

我的一些 object(包括文件夹)是语言中性的,其他的则不是。对于菜单和导航面包屑的生成,我想要一种方法

我在 Products.LinguaPlone 包中找不到任何 *title* 方法; pretty_title_or_id 显然是 language-agnostic.

真的没有这样的方法吗?

(Products.LinguaPlone 4.1.8, Products.CMFPlone 4.3.3, Products.ATContentTypes 2.1.14)

编辑: 受影响的 object 是数量有限的文件夹(靠近站点根目录),它们的标题很少更改;大多数其他人有 non-empty Language(这将导致他们的 Title 不被翻译)或者是 non-folders(并且没有已知的翻译,我承认,但是在这些情况下,将使用原始标题)。我可以想象相应地修补 pretty_title_or_id,但我想知道不这样做的原因。

我认为这行不通,因为导航菜单只会查看索引和元数据,而且那里肯定只有一个 Title 列,您绝对不想出于性能原因,在那里使用元数据。

理论上,您可以修补您需要的所有模板(例如导航 portlet 和面包屑视图,但要彻底,您需要修补 所有 Title 任何地方,曾经)通过翻译层传递他们的所有字符串(基本上添加 i18n:domain="..." i18n:translate=""),并在 .mo/.po 语言文件中维护你的翻译,但是您将无法在运行时更改它们。我的直觉是,这是在解决概念性问题,即语言中性项可以做什么和不能做什么。

我会自己回答: 似乎没有这样的方法,因为 standard 组元数据字段不足以支持它。

对于一小部分固定语言,使用 title_<lang> 元数据字段可能是一个很好的解决方案。

使用 LinguaPlone 时,您会为每种语言创建不同的内容,因此使用 return 不同语言值的方法没有多大意义...

如果您想使用与语言无关的内容,您将需要修补对象的 Title 方法并在那里添加您的自定义代码...无论如何这将对目录产生影响,因为只有默认语言内容会为索引内容和元数据编目,并且会 return 奇怪的结果......所以不鼓励这样做。