cancel
Showing results for 
Search instead for 
Did you mean: 

I18N in Freemarker template

geert
Champ in-the-making
Champ in-the-making
Hello,

I am trying to make my  webscripts available in different languages.
On the wiki I found some information on the message(String) method, but when I try to use it I always get the following error:


Error during processing of the template 'Expression message('error') is undefined on line 25, column 82 in /webclientextension/imagebrowser/image_upload.post.html.status.ftl.'. Please contact your system administrator.

freemarker.core.InvalidReferenceException - Expression message('error') is undefined on line 25, column 82 in /webclientextension/imagebrowser/image_upload.post.html.status.ftl.
   
   freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
   freemarker.core.Expression.getStringValue(Expression.java:118)
   freemarker.core.Expression.getStringValue(Expression.java:93)
   freemarker.core.DollarVariable.accept(DollarVariable.java:76)
   freemarker.core.Environment.visit(Environment.java:196)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:196)
   freemarker.core.Environment.process(Environment.java:176)
   freemarker.template.Template.process(Template.java:232)
   org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:201)
   org.alfresco.web.scripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:286)
   org.alfresco.web.scripts.AbstractWebScript.sendStatus(AbstractWebScript.java:355)
   org.alfresco.web.scripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:193)
   org.alfresco.repo.web.scripts.RepositoryContainer$1.execute(RepositoryContainer.java:311)
   org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:236)
   org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:166)
   org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:322)
   org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:266)
   org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:240)
   org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:139)
   org.alfresco.web.scripts.servlet.WebScriptServlet.service(WebScriptServlet.java:111)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   org.alfresco.web.app.servlet.MTWebScriptAuthenticationFilter.doFilter(MTWebScriptAuthenticationFilter.java:102)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   java.lang.Thread.run(Thread.java:595)

I use the message tag as follows in my ftl file:
${message('error')}

When I leave the message methods everything works perfect so normally my webscript configuration is correct.
I am using Alfresco Community 2.9.0C.

If you need more information, feel free to ask.

Thanks in advance!

Geert
11 REPLIES 11

robain
Champ in-the-making
Champ in-the-making
its a seperate project where i need the internationalization for webscripts.
heres the webscript backing java code, if thats what you were asking for.

package com.someco.web.scripts;

import java.util.HashMap;
import java.util.Map;
import java.util.Locale;

import org.alfresco.i18n.I18NUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.web.scripts.DeclarativeWebScript;
import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.web.scripts.WebScriptStatus;

public class LanguageHandlerScript extends DeclarativeWebScript
{
   
   @Override
   protected Map<String, Object> executeImpl(WebScriptRequest req, WebScriptStatus status)
   {
      String language = req.getParameter("language");
      
      if(language!=null)
         I18NUtil.setLocale(new Locale(language));
            
      Map model = new HashMap<String, Object>();
      return model;
   }
}

joshna
Champ in-the-making
Champ in-the-making
Hi Robain,

Thank u so much , for your reply,but as i am new to this tool,Kindly explain me whether u r gonna to internationalize only web scripts or the whole project..

Pls send me ur entire code.. Both business & presentation logic.

Regards,
Joshna