我收到的要求是使用 Alfresco 内容管理对 SQL Server 数据库上可用的一些现有内容进行建模,因此,我创建了新的内容模型,它似乎工作正常。但我在多语言方面遇到了问题:我知道在 Alfresco 中一个节点可以添加多种语言(我如何使用 Java 来实现大量负载?),但是,我还使用了一些需要翻译的方面。
遇到这种情况你通常会做什么?我想按照以下步骤操作:
- 创建英语内容并添加方面
- 创建新的子翻译并添加方面
正确吗?如何以编程方式创建多语言节点(Java)以及如何添加带有方面的新翻译内容?我查看了 Alfresco 文档,但是没有找到,您能帮我找到一些相关的文档或教程吗?
更新:
我正在尝试制作多语言内容:
void makeTranslation(Reference contentNodeRef, Locale locale) throws AlfrescoRuntimeException, Exception
{
try {
NodeRef nodeRef = new NodeRef("workspace://SpacesStore/" + contentNodeRef.getUuid());
MultilingualContentServiceImpl multilingualContentServiceImpl = new MultilingualContentServiceImpl();
multilingualContentServiceImpl.makeTranslation(nodeRef, locale);
}
catch (org.alfresco.error.AlfrescoRuntimeException ex) {
throw new AlfrescoRuntimeException(ex.getMessage());
}
catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
但是,makeTranslation 会引发 nullPoint 异常,因为 MultilingualContentServiceImpl 未正确初始化。有什么建议如何初始化它吗?我必须使用 spring,但是如何使用?
任何建议或回复都会非常有帮助!
谢谢,
安德里亚
最佳答案
您可以使用MultilingualContentService 添加翻译。但!我想您的属性应该是 d:mltext 类型(如 cm:title 和 cm:description )以支持多语言内容。
这意味着,如果您使用英语浏览器访问 alfresco,您将看到与在浏览器中使用德语设置的人不同的描述。这可能有点令人困惑,因为在 Share 中没有(曾经?)没有标识符表明该属性是多语言的。
如果您希望您的翻译出现在任何地方,无论人们在浏览器中使用哪种语言,那么更好的方法是定义某些方面(例如 ex:translatable),并具有与您需要翻译一样多的属性。然后,您可以以编程方式(使用 Java 或 JavaScript)使用搜索服务来查找所需的节点并向其添加方面。最后,您将该方面的属性(翻译)添加到节点。
我希望这有助于澄清一些事情......:)
关于java - Alfresco 中以编程方式提供多语言内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264290/