|
@@ -63,7 +63,20 @@ opensearch_xml = '''<?xml version="1.0" encoding="utf-8"?>
|
63
|
63
|
|
64
|
64
|
@babel.localeselector
|
65
|
65
|
def get_locale():
|
66
|
|
- return request.accept_languages.best_match(settings['languages'].keys())
|
|
66
|
+ locale = request.accept_languages.best_match(settings['locales'].keys())
|
|
67
|
+
|
|
68
|
+ if request.cookies.get('locale', '') in settings['locales']:
|
|
69
|
+ locale = request.cookies.get('locale', '')
|
|
70
|
+
|
|
71
|
+ if 'locale' in request.args\
|
|
72
|
+ and request.args['locale'] in settings['locales']:
|
|
73
|
+ locale = request.args['locale']
|
|
74
|
+
|
|
75
|
+ if 'locale' in request.form\
|
|
76
|
+ and request.form['locale'] in settings['locales']:
|
|
77
|
+ locale = request.form['locale']
|
|
78
|
+
|
|
79
|
+ return locale
|
67
|
80
|
|
68
|
81
|
|
69
|
82
|
def get_base_url():
|
|
@@ -213,21 +226,35 @@ def preferences():
|
213
|
226
|
|
214
|
227
|
if request.method == 'POST':
|
215
|
228
|
selected_categories = []
|
|
229
|
+ locale = None
|
216
|
230
|
for pd_name, pd in request.form.items():
|
217
|
231
|
if pd_name.startswith('category_'):
|
218
|
232
|
category = pd_name[9:]
|
219
|
233
|
if not category in categories:
|
220
|
234
|
continue
|
221
|
235
|
selected_categories.append(category)
|
|
236
|
+ elif pd_name == 'locale' and pd in settings['locales']:
|
|
237
|
+ locale = pd
|
|
238
|
+
|
|
239
|
+ resp = make_response(redirect('/'))
|
|
240
|
+
|
|
241
|
+ if locale:
|
|
242
|
+ # cookie max age: 4 weeks
|
|
243
|
+ resp.set_cookie(
|
|
244
|
+ 'locale', locale,
|
|
245
|
+ max_age=60 * 60 * 24 * 7 * 4
|
|
246
|
+ )
|
|
247
|
+
|
222
|
248
|
if selected_categories:
|
223
|
|
- resp = make_response(redirect('/'))
|
224
|
249
|
# cookie max age: 4 weeks
|
225
|
250
|
resp.set_cookie(
|
226
|
251
|
'categories', ','.join(selected_categories),
|
227
|
252
|
max_age=60 * 60 * 24 * 7 * 4
|
228
|
253
|
)
|
229
|
|
- return resp
|
230
|
|
- return render('preferences.html')
|
|
254
|
+ return resp
|
|
255
|
+ return render('preferences.html'
|
|
256
|
+ ,locales=settings['locales']
|
|
257
|
+ ,current_locale=get_locale())
|
231
|
258
|
|
232
|
259
|
|
233
|
260
|
@app.route('/stats', methods=['GET'])
|