- Careers
- Contact Us
- Feedback
- Legal
<%@page import="java.io.*,java.util.*,java.net.*" %><%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %><%!
public class Language
{
private String english_name;
private String local_name;
private String directory;
public Language(String en, String ln, String dir)
{
english_name = en;
local_name = ln;
directory = dir;
}
public String getEnglishName()
{
return english_name;
}
public String getLocalName()
{
return local_name;
}
public String getDirectory()
{
return directory;
}
public String toString()
{
return local_name;
}
}
public String getLanguageFromDocumentUri(String document_uri, HttpServletRequest request) {
String language = "en-us";
if (document_uri.matches("^/[a-z][a-z]-[a-z][a-z]/.+$")) {
language = document_uri.substring(1,6);
}
else {
String cookie_language = deNull(getCookieValue(request, "novell_language"));
if (cookie_language.length() > 0) {
language = cookie_language;
}
}
return language;
}
public String getQueryString(HttpServletRequest request)
{
StringBuffer retval = new StringBuffer();
Enumeration paramnames = request.getParameterNames();
while (paramnames.hasMoreElements()) {
String nextparam = (String)paramnames.nextElement();
if (!(nextparam.equals("docroot") || nextparam.equals("document_uri") || nextparam.equals("lang") || nextparam.equals("cm_sp"))) {
String[] paramvalues = request.getParameterValues(nextparam);
for (int i=0; i<%
// Trying to prevent caching
// See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
response.setHeader("Cache-Control", "max-age=0, s-maxage=0, public, must-revalidate, proxy-revalidate");
try {
int found_languages = 0;
boolean isstage = false;
//boolean isstage = (System.getProperty("server") != null && System.getProperty("server").equals("stage")); // only uncomment for debugging
// otherwise it clogs up the stage logs
String docroot = deNull(request.getParameter("docroot"));
String document_uri = deNull(request.getParameter("document_uri"));
String document_uri_nolang = document_uri.replaceAll("^/[a-z][a-z]-[a-z][a-z]/", "/");
String document_uri_nolang_or_country = document_uri_nolang.replaceAll("^/[A-Z][A-Z]/", "/");
//String novell_language = deNull(getCookieValue(request, "novell_language"));
String novell_language = getLanguageFromDocumentUri(document_uri, request);
String query_string = getQueryString(request);
//String query_string_replaced = request.getQueryString().replaceAll("&?docroot=[^&]+","").replaceAll("&?document_uri=[^&]+",""); // another way
//if (query_string_replaced.startsWith("&")) { query_string_replaced = query_string_replaced.replaceFirst("&", ""); }
String debug_string = deNull(request.getParameter("debug"));
boolean debug = false;
if (debug_string.equals("true")) { debug = true; }
if (debug) {
System.out.println("document_uri_nolang is: "+document_uri_nolang+"
");
System.out.println("Docroot is: "+docroot+"
");
System.out.println("document uri is: "+document_uri+"
");
}
//if (!(document_uri.endsWith("get_translations") || document_uri.endsWith("get_translations/"))) { // avoid recursive calls from 404 urls
if (isstage) { System.out.println("\n\nInside footer_language_popup.jsp. document_uri is: "+document_uri+", document_uri_nolang is: "+document_uri_nolang+", document_uri_nolang_or_country is: "+document_uri_nolang_or_country); }
if (isstage) { System.out.println("novell_language is: "+novell_language); }
//if ((document_uri.endsWith(".html") || document_uri.endsWith(".htm")) && !document_uri.endsWith("ftr.html")) {
if (!document_uri.startsWith("/get_translations") && !document_uri.endsWith("ftr.html")) {
Language english = new Language("English", "English", "");
Language german = new Language("German", "Deutsch", "/de-de");
Language spanish = new Language("Spanish", "Español", "/es-es");
Language french = new Language("French", "Français", "/fr-fr");
Language italian = new Language("Italian", "Italiano", "/it-it");
Language dutch = new Language("Dutch", "Nederlands", "/nl-nl");
Language chineseSimplified = new Language("Chinese Simplified", "中文(简体)", "/zh-cn");
Language chineseTraditional = new Language("Chinese Traditional", "中文(繁体)", "/zh-tw");
Language japanese = new Language("Japanese", "日本語", "/ja-jp");
Language polish = new Language("Polish", "Polski", "/pl-pl");
Language portuguese = new Language("Portuguese", "Português (Brasil)", "/pt-br");
Language russian = new Language("Russian", "Русский", "/ru-ru");
Language swedish = new Language("Swedish", "Svenska", "/sv-se");
// Less used languages:
Language danish = new Language("Danish", "Dansk", "/da-dk");
Language norwegian = new Language("Norwegian", "Norsk", "/no-no");
Language czech = new Language("Czech", "čeština", "/cs-cz");
Language hungarian = new Language("Hungarian", "Magyar", "/hu-hu");
Language finnish = new Language("Finnish", "suomi", "/fi-fi");
Language[] languages = new Language [] {danish, german, english, spanish, french, italian, dutch, norwegian, czech, chineseSimplified, chineseTraditional, japanese, hungarian, polish, portuguese, russian, finnish, swedish};
HashMap found = new HashMap();
HashMap language_translated = new HashMap();
language_translated.put("en-us","Language");
language_translated.put("es-es","Idioma");
language_translated.put("fr-fr","Langue");
language_translated.put("de-de","Sprache");
language_translated.put("it-it","Lingua");
language_translated.put("ja-jp","言語");
language_translated.put("zh-cn","语言");
language_translated.put("nl-nl","Taal");
language_translated.put("sv-se","Språk");
language_translated.put("pl-pl","Język");
language_translated.put("da-dk","Sprog");
language_translated.put("no-no","Språk");
language_translated.put("cs-cz","Jazyk");
language_translated.put("hu-hu","Nyelv");
language_translated.put("fi-fi","Kieli");
language_translated.put("ru-ru","Язык");
language_translated.put("pt-br","Idioma");
language_translated.put("zh-tw","語言");
String language = (String)language_translated.get(novell_language);
if (language == null || language.length() <= 0) { language = "Language"; }
HashMap save_preference_translated = new HashMap();
save_preference_translated.put("en-us","Save Preference");
save_preference_translated.put("es-es","Guardar
preferencias");
save_preference_translated.put("fr-fr","Enregistrer les
préférences");
save_preference_translated.put("de-de","Einstellungen
speichern");
save_preference_translated.put("it-it","Salva preferenze");
save_preference_translated.put("ja-jp","設定を保存");
save_preference_translated.put("zh-cn","保存首选项");
save_preference_translated.put("nl-nl","Voorkeuren
opslaan");
save_preference_translated.put("sv-se","Spara inställningar");
save_preference_translated.put("pl-pl","Zapisz preferencje");
save_preference_translated.put("da-dk","Gem opsætning");
save_preference_translated.put("no-no","Lagre innstillinger");
save_preference_translated.put("cs-cz","Uložit pøedvolby");
save_preference_translated.put("hu-hu","Beállítások
mentése");
save_preference_translated.put("fi-fi","Tallenna valinnat");
save_preference_translated.put("ru-ru","Сохранить
настройки");
save_preference_translated.put("pt-br","Salvar preferências");
save_preference_translated.put("zh-tw","儲存優先設定");
String save_preference = (String)save_preference_translated.get(novell_language);
if (save_preference == null || save_preference.length() <= 0) { save_preference = "Save Preference"; }
/**************************************
1. Search the filesystem
***************************************/
if (isstage) { System.out.println("Found these languages on the file system:\n"); }
for (int i=0; i<%
String plone_languages_string = deNull((String)pageContext.getAttribute("plone_languages", pageContext.PAGE_SCOPE)).trim();
if (isstage) { System.out.println(plone_languages_string.replaceAll("^","\t").replaceAll("\n","\n\t")); }
if (plone_languages_string.indexOf("<") == -1) { // no language has a < in it. Use this to test for html
String[] plone_languages = plone_languages_string.split("\n");
for (int i=0; i 0) {
found.put(next_plone_language, "Found");
found_languages++;
}
}
}
} catch (Exception e) {
if (isstage) {
System.out.println(new java.util.Date() + "::/common/inc/footer_language_popup.jsp Couldn't access Plone translations at "+plone_languages_path_pagescope+"::Exception was:");
e.printStackTrace();
}
}
}
/**************************************
3. Show what we've found!
***************************************/
String langselect_link = "/common/util/langselect.php?referer="+URLEncoder.encode(document_uri+(query_string.length() > 0 ? "?"+query_string : ""));
if (found_languages > 1) {
%>
-
<%=language%>
<%
for (int i=0; i 0 ? "?"+query_string : "") : "/inc/util/get_language_url.jsp?language=en-us&url="+URLEncoder.encode(document_uri_nolang_or_country+(query_string.length() > 0 ? "?"+query_string : ""),"utf-8");
if (found.get(english_name) != null) {
out.println("\t\t\t\t\t\t\t- "+languages[i]+"
");
}
}
%>
<% }
}
}
catch (Exception e) {
System.out.println(new java.util.Date()+"::General exception in /common/inc/footer_language_popup.jsp::Exception was:");
e.printStackTrace();
}
%>
© 2009 Novell, Inc. All Rights Reserved.