2012-01-13 164 views

回答

2

将它包装在可从Web脚本访问的对象中。 Here's an example它已经做的:

package com.someco.web.jscript; 

import org.alfresco.repo.jscript.ScriptNode; 
import org.alfresco.repo.processor.BaseProcessorExtension; 
import org.alfresco.service.ServiceRegistry; 
import org.alfresco.service.cmr.ml.MultilingualContentService; 
import org.alfresco.service.cmr.repository.NodeRef; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

import java.util.Locale; 

public final class MultilingualScript extends BaseProcessorExtension 
{ 
    private static final Log logger = LogFactory.getLog(MultilingualScript.class); 

    private MultilingualContentService multilingualContentService; 
    private ServiceRegistry serviceRegistry; 

    public MultilingualScript() 
    { 
     if (logger.isDebugEnabled()) { 
     logger.debug("MultilingualScript Constructor Called"); 
     } 
    } 

    //path = path of the original document 
    //language = required language 
    //returns the noderef for the translation content for the given language 
    public ScriptNode multilingualContent(String path, String language, ScriptNode companyHome) { 
     if (logger.isDebugEnabled()) { 
     logger.debug("MultilingualScript - parameters - " + path + " , " + language); 
     } 
     NodeRef nodeRef = new ScriptNode(companyHome.getNodeRef(), serviceRegistry) 
     .childByNamePath(path).getNodeRef();  
     nodeRef = multilingualContentService.getTranslationForLocale(nodeRef, new Locale(language));  
     return new ScriptNode(nodeRef, serviceRegistry); 
    } 

    public MultilingualContentService getMultilingualContentService() { 
     return multilingualContentService; 
    } 

    public void setMultilingualContentService(
     MultilingualContentService multilingualContentService) { 
     this.multilingualContentService = multilingualContentService; 
    } 

    public ServiceRegistry getServiceRegistry() { 
     return serviceRegistry; 
    } 

    public void setServiceRegistry(ServiceRegistry serviceRegistry) { 
     this.serviceRegistry = serviceRegistry; 
    } 
} 

的春豆:

<bean id="multilingualScript" parent="baseJavaScriptExtension" class="com.someco.web.jscript.MultilingualScript"> 
     <property name="extensionName"> 
      <value>multilingual</value> 
     </property> 
     <property name="serviceRegistry"> 
     <ref bean="ServiceRegistry" /> 
     </property> 
     <property name="multilingualContentService"> 
     <ref bean="MultilingualContentService" /> 
     </property> 
    </bean> 

最后,使用这样的:

var multilingualArticle = multilingual.multilingualContent("/myarticle", "es", companyhome); 
1

我猜想实际内容不应该很难,因为每个内容都有他自己的uuid。 难度在于创建UI来上传不同的语言。

我要做的第一件事就是分析动作'上传新版本'的工作原理。 所以我们需要的是一个自定义操作来上传一个不同的语言文件和一个弹出窗口来选择是哪种语言。所以'上传新版本'几乎完全一样,你可以浏览到一个文件并填写版本评论。

我不知道在资源管理器中是否有可用的webscripts来存储多语言内容,如果不是,你应该开发这些。

其次是创建一个webscript返回你所有的多语言文件(同上,可能不会存在)

然后定义一个块,如工作流或版本块,这样的链接将显示的文件。