w3c.css.util.Messages Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cssvalidator Show documentation
Show all versions of cssvalidator Show documentation
Backend for the W3C CSS Validation Service
//
// $Id$
// From Philippe Le Hegaret ([email protected])
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
/**
* @version $Revision$
*/
public class Messages {
/**
* Message properties
*/
public Utf8Properties properties = null;
public static final ConcurrentHashMap> languages;
public static final ArrayList languages_name;
public Utf8Properties default_properties = null;
/**
* Creates a new Messages
*/
public Messages(String lang) {
if (lang != null) {
StringTokenizer lanTok = new StringTokenizer(lang, ",");
int maxTok = lanTok.countTokens();
String slang[] = new String[maxTok];
float qlang[] = new float[maxTok];
// quick and dirty, it would be better to use Jigsaw's classes
while (lanTok.hasMoreTokens()) {
String l = lanTok.nextToken().trim().toLowerCase();
int qualsep = l.indexOf(';');
float qval = 1;
if (qualsep != -1) {
String p = l.substring(qualsep + 1);
l = l.substring(0, qualsep);
if (p.startsWith("q=")) {
qval = Float.parseFloat(p.substring(2));
}
}
for (int i = 0; i < maxTok; i++) {
if (slang[i] == null) {
slang[i] = l;
qlang[i] = qval;
break;
} else if (qval > qlang[i]) {
System.arraycopy(slang, i, slang, i + 1, (maxTok - i - 1));
System.arraycopy(qlang, i, qlang, i + 1, (maxTok - i - 1));
slang[i] = l;
qlang[i] = qval;
break;
}
}
}
for (int i = 0; i < maxTok; i++) {
String l = slang[i];
properties = languages.get(l);
if (properties != null) {
break;
}
int minusIndex = l.indexOf('-');
if (minusIndex != -1) {
// suppressed -cn in zh-cn (example)
l = l.substring(0, minusIndex);
properties = languages.get(l);
}
if (properties != null) {
break;
}
}
}
default_properties = languages.get("en");
if (properties == null) {
properties = default_properties;
}
}
/**
* Get a property.
*/
public String getString(String message) {
String s = properties.getProperty(message);
if (s != null) {
return s;
}
return default_properties.getProperty(message);
}
/**
* Get a property but not its default when not found
*/
public String getStringStrict(String message) {
return properties.getProperty(message);
}
/**
* Get a warning property.
*
* @param message the warning property.
*/
public String getWarningString(String message) {
return getString("warning." + message);
}
/**
* Get a warning level property.
*
* @param message the warning property.
*/
public String getWarningLevelString(String message) {
return getString(new StringBuilder("warning.").append(message).append(".level").toString());
}
/**
* Get an error property.
*
* @param message the error property.
*/
public String getErrorString(String message) {
return getString("error." + message);
}
/**
* Get an generator property.
*
* @param message the generator property.
*/
public String getGeneratorString(String message) {
return getString("generator." + message);
}
/**
* Get an generator property.
*
* @param message the generator property.
*/
public String getGeneratorString(String message, String param) {
String str = getString("generator." + message);
// replace all parameters
int i = str.indexOf("%s");
if (i >= 0) {
str = str.substring(0, i) + param + str.substring(i + 2);
}
return str;
}
/**
* Get an generator property.
*
* @param message the generator property.
*/
public String getServletString(String message) {
return getString("servlet." + message);
}
/**
* escape string
*/
static public String escapeString(String orig) {
if (orig != null) {
int len = orig.length();
StringBuilder ret = new StringBuilder(len + 16);
char c;
for (int i = 0; i < len; i++) {
switch (c = orig.charAt(i)) {
case '&':
ret.append("&");
break;
case '\'':
ret.append("'");
break;
case '"':
ret.append(""");
break;
case '<':
ret.append("<");
break;
case '>':
ret.append(">");
break;
default:
ret.append(c);
}
}
return ret.toString();
}
return "[empty string]";
}
/**
* Replace curly quotes with HTML code tags
*/
static public String replaceCurlyQuotesWithHtmlCodeTags(String orig) {
if (orig != null) {
int len = orig.length();
StringBuilder ret = new StringBuilder(len + 16);
char c;
for (int i = 0; i < len; i++) {
switch (c = orig.charAt(i)) {
case '\u201C':
ret.append("");
break;
case '\u201D':
ret.append("
");
break;
default:
ret.append(c);
}
}
return ret.toString();
}
return "[empty string]";
}
public String getString(String message, ArrayList params) {
if ((params == null) || params.size() == 0) {
return getString(message);
}
String[] msg_parts = getString(message).split("%s", -1);
Iterator param_it = params.iterator();
StringBuilder sb = new StringBuilder(msg_parts[0]);
for (int i = 1; i < msg_parts.length; i++) {
if (param_it.hasNext()) {
sb.append(param_it.next());
}
sb.append(msg_parts[i]);
}
return sb.toString();
}
static {
languages = new ConcurrentHashMap>();
languages_name = new ArrayList();
Utf8Properties tmp;
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.de");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("de");
languages.put("de", tmp);
languages.put("de_DE", tmp);
languages.put("de_AT", tmp);
languages.put("de_CH", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties de");
System.err.println(" " + e.toString());
}
// ------------------------------------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.en");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("en");
languages.put("en", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties en");
System.err.println(" " + e.toString());
}
// ------------------------------------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.es");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("es");
languages.put("es", tmp);
languages.put("es_ES", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties es");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.fr");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("fr");
languages.put("fr", tmp);
languages.put("fr_FR", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties fr");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ko");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("ko");
languages.put("ko", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties ko");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.it");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("it");
languages.put("it", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties it");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.nl");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("nl");
languages.put("nl", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties nl");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ja");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("ja");
languages.put("ja", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages:" + " couldn't load properties ja");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.pl-PL");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("pl-PL");
languages.put("pl", tmp);
languages.put("pl_PL", tmp);
languages.put("pl-PL", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties pl");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.pt-BR");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("pt-BR");
languages.put("pt-br", tmp);
languages.put("pt-BR", tmp);
languages.put("pt_BR", tmp);
languages.put("pt", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties pt-br");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ru");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("ru");
languages.put("ru", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties ru");
System.err.println(" " + e.toString());
}
// -----------------------
// disabled for the time being, the properties file has trouble with line breaks
// and the rtl text makes it difficult to fix with my editor. Ball is in the camp of translator 2009-03 -- olivier
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.fa");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("fa");
languages.put("fa", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties fa");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.sv");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("sv");
languages.put("sv", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties sv");
System.err.println(" " + e.toString());
}
// -----------------------
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.bg");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("bg");
languages.put("bg", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties bg");
System.err.println(" " + e.toString());
}
// -----------------------
// Ukrainian
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.uk");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("uk");
languages.put("uk", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties uk");
System.err.println(" " + e.toString());
}
// -----------------------
// Czech
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.cs");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("cs");
languages.put("cs", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties cs");
System.err.println(" " + e.toString());
}
// -----------------------
// Romanian
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ro");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("ro");
languages.put("ro", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties ro");
System.err.println(" " + e.toString());
}
// -----------------------
// Magyar (Hungarian)
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.hu");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("hu");
languages.put("hu", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties hu");
System.err.println(" " + e.toString());
}
// -----------------------
// Greek
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.el");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("el");
languages.put("el", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties el");
System.err.println(" " + e.toString());
}
// -----------------------
// Hindi
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.hi");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("hi");
languages.put("hi", tmp);
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties hi");
System.err.println(" " + e.toString());
}
// -----------------------
// Chinese
try {
java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.zh-cn");
try {
tmp = new Utf8Properties();
tmp.load(f);
languages_name.add("zh-cn");
languages.put("zh-cn", tmp);
languages.put("zh", tmp); // for now we have no other
// alternative for chinese
} finally {
f.close();
}
} catch (Exception e) {
System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties cn");
System.err.println(" " + e.toString());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy