提交 14dee4d0 authored 作者: Thomas Mueller's avatar Thomas Mueller

H2 Console: show correct language when starting

上级 c7604afd
......@@ -180,7 +180,7 @@ public class WebServer implements Service {
session.put("language", DEFAULT_LANGUAGE);
sessions.put(newId, session);
// always read the english translation,
// to that untranslated text appears at least in english
// so that untranslated text appears at least in english
readTranslations(session, DEFAULT_LANGUAGE);
return getSession(newId);
}
......
......@@ -92,6 +92,7 @@ class WebThread extends Thread implements DatabaseEventListener {
private String ifModifiedSince;
private boolean cache;
private boolean stop;
private String headerLanguage;
// TODO web: support online data editing like http://numsum.com/
......@@ -353,29 +354,29 @@ class WebThread extends Thread implements DatabaseEventListener {
len = Integer.parseInt(line.substring(line.indexOf(':') + 1).trim());
trace("len=" + len);
} else if (lower.startsWith("accept-language")) {
if (session != null) {
Locale locale = session.locale;
if (locale == null) {
String languages = line.substring(line.indexOf(':') + 1).trim();
StringTokenizer tokenizer = new StringTokenizer(languages, ",;");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
if (!token.startsWith("q=")) {
if (server.supportsLanguage(token)) {
int dash = token.indexOf('-');
if (dash >= 0) {
String language = token.substring(0, dash);
String country = token.substring(dash + 1);
locale = new Locale(language, country);
} else {
locale = new Locale(token, "");
}
Locale locale = session == null ? null : session.locale;
if (locale == null) {
String languages = line.substring(line.indexOf(':') + 1).trim();
StringTokenizer tokenizer = new StringTokenizer(languages, ",;");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
if (!token.startsWith("q=")) {
if (server.supportsLanguage(token)) {
int dash = token.indexOf('-');
if (dash >= 0) {
String language = token.substring(0, dash);
String country = token.substring(dash + 1);
locale = new Locale(language, country);
} else {
locale = new Locale(token, "");
}
headerLanguage = locale.getLanguage();
if (session != null) {
session.locale = locale;
String language = locale.getLanguage();
session.put("language", language);
server.readTranslations(session, language);
break;
session.put("language", headerLanguage);
server.readTranslations(session, headerLanguage);
}
break;
}
}
}
......@@ -600,6 +601,11 @@ class WebThread extends Thread implements DatabaseEventListener {
private String index() {
String[][] languageArray = server.getLanguageArray();
String language = (String) attributes.get("language");
if (language == null) {
// if the language is not yet known
// use the last header
language = headerLanguage;
}
Locale locale = session.locale;
if (language != null) {
if (locale == null || !StringUtils.toLowerEnglish(locale.getLanguage()).equals(language)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论