我正在尝试使用plone.app.multilingual来处理目前使用英语的网站,但会部分翻译。我正在使用plone.app.multilingual而不是更熟悉的LinguaPlone,因为LinguaPlone不支持的网站使用的Dexterity内容类型。
我有一个测试网站可供使用。我翻译一个页面时,似乎为英语内容创建了一个/ en文件夹,并且(例如)/ fr为法语创建了一个文件夹。我可以在页面的两种语言变体之间来回切换,但是一旦我使用法语,我就看不到所有其他英文页面了。作为网站访问者,这是没有用的,它忽略了这样一个事实:虽然浏览器可能设置为更喜欢法语,但它也可能接受英语。我选择了我认为是允许回退到默认网站语言的相关选项,如果我知道页面的URL,它可以让我查看它们,但如果我没有看到内容在那里那就没用多少首先。
可以使plone.app.multilingual以这样的方式工作,即用户可以用某种语言查看内容页面,即使它不是他们自己的,或者是我唯一的转换选项使用Archetypes的网站?
感谢。
答案 0 :(得分:2)
LinguaPlone将以同样的方式处理此案例:使所有内容“语言中立”,除了有翻译的地方。
通过将所有内容标记为“中性语言”,无论设置了哪种语言偏好,都会找到并显示给最终用户。现在,如果您的任何内容 有翻译,您需要将英语设置为原始版本的语言,以便只有在选择英语时才会显示。
为此,您可以使用plone.multilingual.events.IObjectTranslatedEvent
的订阅者。
至于为您的内容创建en/
和fr/
位置,这是ITranslationLocator
适配器的任务(来自plone.multilingual.interfaces
,您可以覆盖该适配器以提供您自己的选择。请参阅default implementations了解当前的工作原理。