summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
Diffstat (limited to 'searx')
-rw-r--r--searx/settings.yml2
-rw-r--r--searx/static/css/style.css2
-rw-r--r--searx/templates/categories.html2
-rw-r--r--searx/templates/preferences.html16
-rw-r--r--searx/webapp.py35
5 files changed, 48 insertions, 9 deletions
diff --git a/searx/settings.yml b/searx/settings.yml
index 355b07cf5..c207f3f57 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -106,6 +106,6 @@ engines:
title_xpath : ./a/div[@class="data"]/p[@class="title"]/text()
content_xpath : ./a/img/@src
-languages:
+locales:
en : English
hu : Magyar
diff --git a/searx/static/css/style.css b/searx/static/css/style.css
index 3d3f46036..4163e753d 100644
--- a/searx/static/css/style.css
+++ b/searx/static/css/style.css
@@ -49,6 +49,8 @@ input[type="submit"] { border: 1px solid #666666; color: #444444; padding: 4px;
input[type="checkbox"] { visibility: hidden; }
+fieldset { margin: 8px; }
+
#categories { margin: 0 10px; }
.checkbox_container { display: inline-block; position: relative; margin: 0 3px; padding: 0px; }
diff --git a/searx/templates/categories.html b/searx/templates/categories.html
index b1fd3d1fc..57e63c85d 100644
--- a/searx/templates/categories.html
+++ b/searx/templates/categories.html
@@ -1,7 +1,7 @@
<div id="categories">
{% for category in categories %}
<div class="checkbox_container">
- <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}">{{ category }}</label>
+ <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
</div>
{% endfor %}
</div>
diff --git a/searx/templates/preferences.html b/searx/templates/preferences.html
index d47dd4834..3c2afef21 100644
--- a/searx/templates/preferences.html
+++ b/searx/templates/preferences.html
@@ -5,15 +5,25 @@
<h2>{{ _('Preferences') }}</h2>
+ <form method="post" action="/preferences" id="search_form">
<fieldset>
<legend>{{ _('Default categories') }}</legend>
- <form method="post" action="/preferences" id="search_form">
<p>
{% include 'categories.html' %}
</p>
- <input type="submit" value="{{ _('save') }}" />
- </form>
</fieldset>
+ <fieldset>
+ <legend>{{ _('Interface language') }}</legend>
+ <p>
+ <select name='locale'>
+ {% for locale_id,locale_name in locales.items() %}
+ <option value={{ locale_id }} {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name}}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <input type="submit" value="{{ _('save') }}" />
+ </form>
<div class="right"><a href="/">{{ _('back') }}</a></div>
</div>
{% endblock %}
diff --git a/searx/webapp.py b/searx/webapp.py
index e042443b4..cf1e71ef2 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -63,7 +63,20 @@ opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?>
@babel.localeselector
def get_locale():
- return request.accept_languages.best_match(settings['languages'].keys())
+ locale = request.accept_languages.best_match(settings['locales'].keys())
+
+ if request.cookies.get('locale', '') in settings['locales']:
+ locale = request.cookies.get('locale', '')
+
+ if 'locale' in request.args\
+ and request.args['locale'] in settings['locales']:
+ locale = request.args['locale']
+
+ if 'locale' in request.form\
+ and request.form['locale'] in settings['locales']:
+ locale = request.form['locale']
+
+ return locale
def get_base_url():
@@ -213,21 +226,35 @@ def preferences():
if request.method == 'POST':
selected_categories = []
+ locale = None
for pd_name, pd in request.form.items():
if pd_name.startswith('category_'):
category = pd_name[9:]
if not category in categories:
continue
selected_categories.append(category)
+ elif pd_name == 'locale' and pd in settings['locales']:
+ locale = pd
+
+ resp = make_response(redirect('/'))
+
+ if locale:
+ # cookie max age: 4 weeks
+ resp.set_cookie(
+ 'locale', locale,
+ max_age=60 * 60 * 24 * 7 * 4
+ )
+
if selected_categories:
- resp = make_response(redirect('/'))
# cookie max age: 4 weeks
resp.set_cookie(
'categories', ','.join(selected_categories),
max_age=60 * 60 * 24 * 7 * 4
)
- return resp
- return render('preferences.html')
+ return resp
+ return render('preferences.html'
+ ,locales=settings['locales']
+ ,current_locale=get_locale())
@app.route('/stats', methods=['GET'])