Многоязычные документы в Alfresco Share? - PullRequest
0 голосов
/ 13 января 2012

Alfresco имеет MultilingualContentService , но, к сожалению , он не реализован в интерфейсе общего доступа .

Итак, как обращаться с многоязычным контентом в Share?
(для каждого документа несколько файлов на разных языках)

Есть ли какое-нибудь решение готово?
Если бы у меня не было выбора, кроме как развиваться, как бы вы это сделали?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2012

Оберните его в объект, доступный из ваших сценариев. Вот пример , который уже делает это:

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 голос
/ 18 января 2012

Полагаю, показ реального контента не должен быть сложным, потому что у каждого контента есть свой UUID. Трудность будет заключаться в создании пользовательского интерфейса для загрузки другого языка.

Первое, что я хотел бы сделать, это проанализировать, как работает действие «загрузить новую версию». Так что нам нужно пользовательское действие для загрузки другого языкового файла и всплывающее окно для выбора языка. Таким образом, «загрузить новую версию» делает почти то же самое, вы можете перейти к файлу и заполнить комментарий управления версиями.

Я не знаю, есть ли в Explorer доступные сценарии для хранения многоязычного контента, если нет, то вам следует разработать их.

Во-вторых, создать веб-скрипт, который вернет вам все многоязычные файлы (как и выше, вероятно, не будет существовать)

Затем определите блок, например, рабочий процесс или блок версии, чтобы ссылки на файлы появлялись.

...