Alfresco中的编程方式多语言内容

时间:2012-02-13 16:40:01

标签: java repository alfresco

我收到的要求是使用Alfresco内容管理模拟SQL Server数据库上可用的一些现有内容,因此,我创建了我的新内容模型,它似乎工作正常。但是我对多语言有一个问题:我知道Alfresco中有一个节点可以添加多种语言(如何使用Java进行大量加载?)但是,我还使用了一些需要翻译的方面。

在这种情况下你通常做什么?我要按照以下步骤操作:

  • 创建Eng内容并添加方面
  • 创建新子项已翻译并添加方面

这是对的吗?如何以编程方式(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未正确初始化。有什么建议如何初始化它?我要用春天但是,怎么样?

任何建议或回复都会非常有帮助!

谢谢,
安德烈

1 个答案:

答案 0 :(得分:2)

您可以使用MultilingualContentService添加翻译。但!我猜您的属性应该是d:mltext(如cm:title和cm:description),以支持多语言内容。

这意味着如果您使用带有英语的浏览器访问露天,您将看到与浏览器中使用德语设置的人不同的描述。这可能有点令人困惑,因为在Share中有(是?)没有标识符属性是多语言的。

如果您希望您的翻译出现在任何地方,无论人们使用什么样的语言,那么更好的方法是定义一些方面(例如ex:translatable),其中包含您需要翻译的多个属性。然后,您可以以编程方式(使用Java或JavaScript)使用搜索服务来查找所需的节点并将方面添加到它们中。最后,然后将该方面的属性(转换)添加到节点。

我希望这有助于清除一些事情......:)