2012-01-13 19 views
0

アルフレコはMultilingualContentServiceですが、残念ながらit is not implemented in the Share UIです。Alfrescoの多言語ドキュメントShare?

共有で多言語コンテンツを処理する方法は?
(ドキュメントごとに複数の言語のファイルがあります)

解決策はありますか?
私は開発する以外に選択肢がない場合は、どうやってやるのですか?

+0

あなたはAlfrescoは4.0でWCMクイックスタートが行う方法を見てきました多言語コンテンツ? – Gagravarr

答えて

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

すべてのコンテンツには自分のUUIDがあるので、実際のコンテンツを示すのは難しいとは思わないでしょう。 難しいのは、別の言語をアップロードするUIを作成することです。

最初に行うことは、「新しいバージョンをアップロードする」というアクションがどのように動作するかを分析することです。 それでは、別の言語ファイルをアップロードするカスタムアクションと、その言語を選択するためのポップアップが必要です。したがって、「新しいバージョンをアップロードする」はほとんど同じですが、ファイルを参照してバージョン管理のコメントを記入することができます。

多言語コンテンツを保存するためにエクスプローラで利用できるWebスクリプトがあるかどうかわかりませんが、そうでなければ開発する必要があります。第二に

すべての多言語ファイル(上記と同じで、おそらく存在しないでしょう)あなたを返すようにwebscriptを作成することです

リンクはで表示されますので、その後、ワークフローまたはバージョンのブロックのように、ブロックを定義しますファイル。