1 package org.jahia.taglibs.util; 2 3 import java.io.IOException ; 4 import java.util.Locale ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.jsp.JspException ; 8 import javax.servlet.jsp.JspWriter ; 9 import javax.servlet.jsp.tagext.TagSupport ; 10 11 import org.jahia.data.JahiaData; 12 import org.jahia.utils.JahiaConsole; 13 import org.jahia.utils.LanguageCodeConverters; 14 15 16 26 public class I18nTag extends TagSupport { 27 28 private static org.apache.log4j.Logger logger = 29 org.apache.log4j.Logger.getLogger(I18nTag.class); 30 31 private static final String CLASS_NAME = I18nTag.class.getName(); 32 33 protected String contentType = "text/html"; protected String charSet = "ISO-8859-1"; 35 36 private String pageContentType = ""; 37 38 public void setPageContentType (String pageContentType) { 39 this.pageContentType = pageContentType; 40 } 41 42 public String getPageContentType() { 43 return this.pageContentType; 44 } 45 46 public void setContentType(String contentType) { 47 this.contentType = contentType; 48 } 49 50 public void setCharSet(String charSet) { 51 this.charSet = charSet; 52 } 53 54 public int doStartTag() { 55 56 HttpServletRequest request = (HttpServletRequest )pageContext.getRequest(); 57 JahiaData jData = (JahiaData) request.getAttribute("org.jahia.data.JahiaData"); 58 59 String jahiaCharSet = ""; 61 if (jData.params().settings().isUtf8Encoding()) { 62 jahiaCharSet = "UTF-8"; 63 } 64 66 StringBuffer buff = new StringBuffer (contentType); 67 buff.append(";"); 68 if (!jahiaCharSet.equals("")) { 69 buff.append("charset="); 70 buff.append(jahiaCharSet); 71 } else if (!charSet.equals("")) { 72 buff.append("charset="); 73 buff.append(charSet); 74 } 75 76 jData.params().getResponse().setContentType(buff.toString()); 77 logger.debug("Content type : " + buff.toString()); 78 79 if (pageContentType.trim().equals("true")) { 80 StringBuffer pageContentTypeBuf = new StringBuffer ( 81 "<%@ page contentType=\"text/html,charset="); 82 if (!jahiaCharSet.equals("")) { 83 pageContentTypeBuf.append(jahiaCharSet); 84 } else if (!charSet.equals("")) { 85 pageContentTypeBuf.append(charSet); 86 } 87 pageContentTypeBuf.append("\" %>"); 88 try { 89 JspWriter out = pageContext.getOut(); 90 out.print(pageContentTypeBuf.toString()); 91 } 92 catch (IOException ioe) { 93 JahiaConsole.println("I18nTag: doStartTag ", ioe.toString()); 94 } 95 } 96 97 Locale locale = jData.params().getLocale(); 98 if ( locale != null ){ 99 jData.params().getResponse().setHeader("Content-Language", LanguageCodeConverters.localeToLanguageTag(locale)); 100 jData.params().getResponse().setHeader("Vary","Accept-Language"); 101 } 102 return SKIP_BODY; 103 } 104 105 106 public int doEndTag() throws JspException { 107 contentType = "text/html"; charSet = "ISO-8859-1"; 111 pageContentType = ""; 112 return EVAL_PAGE; 113 } 114 } 115 | Popular Tags |