From 428d89a3070f5f33952add269ad137071866cfd4 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 21 Jun 2015 15:41:33 +0000 Subject: [PATCH] Update: Add config to disable translated news Rewrite addLang() for efficiency --- .../net/i2p/router/update/NewsFetcher.java | 34 +++++++++++-------- .../src/net/i2p/router/web/NewsHelper.java | 5 +++ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java index 76a77fe7e..b00043597 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java @@ -95,13 +95,8 @@ class NewsFetcher extends UpdateRunner { } for (URI uri : _urls) { - String origURL = uri.toString(); - String newsURL = addLang(origURL); - try { - _currentURI = new URI(newsURL); - } catch (URISyntaxException use) { - _currentURI = uri; - } + _currentURI = addLang(uri); + String newsURL = _currentURI.toString(); if (_tempFile.exists()) _tempFile.delete(); @@ -137,18 +132,25 @@ class NewsFetcher extends UpdateRunner { } /** - * Add a query param for the local language to get translated news + * Add a query param for the local language to get translated news. + * Unchanged if disabled by property, if language is english, + * or if URI already contains a language paramter + * * @since 0.9.21 */ - private String addLang(String url) { - if (url.contains("?lang=") || url.contains("&lang=")) - return url; + private URI addLang(URI uri) { + if (!_context.getBooleanPropertyDefaultTrue(NewsHelper.PROP_TRANSLATE)) + return uri; String lang = Translate.getLanguage(_context); if (lang.equals("en")) - return url; + return uri; + String query = uri.getRawQuery(); + if (query != null && (query.startsWith("lang=") || query.contains("&lang="))) + return uri; + String url = uri.toString(); StringBuilder buf = new StringBuilder(); buf.append(url); - if (url.contains("?")) + if (query != null) buf.append("&lang="); else buf.append("?lang="); @@ -156,7 +158,11 @@ class NewsFetcher extends UpdateRunner { String co = Translate.getCountry(_context); if (co.length() > 0) buf.append('_').append(co); - return buf.toString(); + try { + return new URI(buf.toString()); + } catch (URISyntaxException use) { + return uri; + } } // Fake XML parsing diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java index f7a30c6dd..be3b5685b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java @@ -28,6 +28,11 @@ public class NewsHelper extends ContentHelper { public static final String PROP_LAST_CHECKED = "routerconsole.newsLastChecked"; /** @since 0.9.4 */ public static final String PROP_LAST_UPDATED = "routerconsole.newsLastUpdated"; + /** + * Default true + * @since 0.9.21 + */ + public static final String PROP_TRANSLATE = "routerconsole.newsTranslate"; public static final String NEWS_FILE = "docs/news.xml"; /**