Update: Add config to disable translated news

Rewrite addLang() for efficiency
This commit is contained in:
zzz
2015-06-21 15:41:33 +00:00
parent feff6c003b
commit 428d89a307
2 changed files with 25 additions and 14 deletions

View File

@ -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

View File

@ -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";
/**