use accept-language header instead of user agent for language detection

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5235 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
lotus 17 years ago
parent e5904e6a21
commit fe2792e9ce

@ -212,7 +212,7 @@ public class yacysearch {
if (language.startsWith("lang_")) language = language.substring(5);
if (!iso639.exists(language)) {
// find out language of the user by reading of the user-agent string
String agent = header.get("User-Agent");
String agent = header.get(httpRequestHeader.ACCEPT_LANGUAGE);
if (agent == null) agent = System.getProperty("user.language");
language = (agent == null) ? "en" : iso639.userAgentLanguageDetection(agent);
if (language == null) language = "en";

@ -76,6 +76,12 @@ public class httpHeader extends TreeMap<String, String> implements Map<String, S
// TODO: sort these header properties into request and response properties (some are both)
public static final String HOST = "Host";
public static final String USER_AGENT = "User-Agent";
public static final String ACCEPT = "Accept";
public static final String ACCEPT_LANGUAGE = "Accept-Language";
public static final String ACCEPT_ENCODING = "Accept-Encoding";
public static final String ACCEPT_CHARSET = "Accept-Charset";
public static final String CONTENT_LENGTH = "Content-Length";
public static final String CONTENT_TYPE = "Content-Type";

@ -202,6 +202,7 @@ public class iso639 {
public static final String userAgentLanguageDetection(String userAgent) {
if (userAgent == null || userAgent.length() < 2) return null;
userAgent = userAgent.toLowerCase();
if (mapping.containsKey(userAgent.substring(0, 2))) return userAgent.substring(0, 2);
if (userAgent.length() == 2 && mapping.containsKey(userAgent)) return userAgent;
if (userAgent.length() == 5 && mapping.containsKey(userAgent.substring(0, 2))) return userAgent.substring(0, 2);
int p = 2;

Loading…
Cancel
Save