Alfresco Share的多语言文件?

时间:2012-01-13 12:12:41

标签: multilingual alfresco

Alfresco有一个MultilingualContentService但不幸的是it is not implemented in the Share UI

那么,如何处理Share中的多重内容呢? (对于每个文档,使用不同语言的几个文件)

是否准备好了解决方案?
如果我别无选择只能发展,你会怎么做?

1 个答案:

答案 0 :(得分:2)

将其包裹在可从您的网页中访问的对象中。已经完成的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;
   }
}

Spring bean:

<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);