on master help sign in
[fix] translate engine errors to Occitan when configured
bce3830Noémi Ványi
searx/results.py+2−2
@@ -345,8 +345,8 @@ class ResultContainer(object):
345 return 0
345 return 0
346 return resultnum_sum / len(self._number_of_results)
346 return resultnum_sum / len(self._number_of_results)
347
347
348− def add_unresponsive_engine(self, engine_error):
348+ def add_unresponsive_engine(self, engine_name, error_type, error_message=None):
349− self.unresponsive_engines.add(engine_error)
349+ self.unresponsive_engines.add((engine_name, error_type, error_message))
350
350
351 def add_timing(self, engine_name, engine_time, page_load_time):
351 def add_timing(self, engine_name, engine_time, page_load_time):
352 self.timings.append({
352 self.timings.append({
searx/search.py+5−12
@@ -127,11 +127,7 @@ def search_one_offline_request_safe(engine_name, query, request_params, result_c
127 logger.exception('engine {0} : invalid input : {1}'.format(engine_name, e))
127 logger.exception('engine {0} : invalid input : {1}'.format(engine_name, e))
128 except Exception as e:
128 except Exception as e:
129 record_offline_engine_stats_on_error(engine, result_container, start_time)
129 record_offline_engine_stats_on_error(engine, result_container, start_time)
130−
131− result_container.add_unresponsive_engine((
130+ result_container.add_unresponsive_engine(engine_name, 'unexpected crash', str(e))
132− engine_name,
133− u'{0}: {1}'.format(gettext('unexpected crash'), e),
134− ))
135 logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
131 logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
136
132
137
133
@@ -186,24 +182,21 @@ def search_one_http_request_safe(engine_name, query, request_params, result_cont
186 engine.stats['errors'] += 1
182 engine.stats['errors'] += 1
187
183
188 if (issubclass(e.__class__, requests.exceptions.Timeout)):
184 if (issubclass(e.__class__, requests.exceptions.Timeout)):
189− result_container.add_unresponsive_engine((engine_name, gettext('timeout')))
185+ result_container.add_unresponsive_engine(engine_name, 'timeout')
190 # requests timeout (connect or read)
186 # requests timeout (connect or read)
191 logger.error("engine {0} : HTTP requests timeout"
187 logger.error("engine {0} : HTTP requests timeout"
192 "(search duration : {1} s, timeout: {2} s) : {3}"
188 "(search duration : {1} s, timeout: {2} s) : {3}"
193 .format(engine_name, engine_time, timeout_limit, e.__class__.__name__))
189 .format(engine_name, engine_time, timeout_limit, e.__class__.__name__))
194 requests_exception = True
190 requests_exception = True
195 elif (issubclass(e.__class__, requests.exceptions.RequestException)):
191 elif (issubclass(e.__class__, requests.exceptions.RequestException)):
196− result_container.add_unresponsive_engine((engine_name, gettext('request exception')))
192+ result_container.add_unresponsive_engine(engine_name, 'request exception')
197 # other requests exception
193 # other requests exception
198 logger.exception("engine {0} : requests exception"
194 logger.exception("engine {0} : requests exception"
199 "(search duration : {1} s, timeout: {2} s) : {3}"
195 "(search duration : {1} s, timeout: {2} s) : {3}"
200 .format(engine_name, engine_time, timeout_limit, e))
196 .format(engine_name, engine_time, timeout_limit, e))
201 requests_exception = True
197 requests_exception = True
202 else:
198 else:
203− result_container.add_unresponsive_engine((
199+ result_container.add_unresponsive_engine(engine_name, 'unexpected crash', str(e))
204− engine_name,
205− u'{0}: {1}'.format(gettext('unexpected crash'), e),
206− ))
207 # others errors
200 # others errors
208 logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
201 logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
209
202
@@ -238,7 +231,7 @@ def search_multiple_requests(requests, result_container, start_time, timeout_lim
238 remaining_time = max(0.0, timeout_limit - (time() - start_time))
231 remaining_time = max(0.0, timeout_limit - (time() - start_time))
239 th.join(remaining_time)
232 th.join(remaining_time)
240 if th.isAlive():
233 if th.isAlive():
241− result_container.add_unresponsive_engine((th._engine_name, gettext('timeout')))
234+ result_container.add_unresponsive_engine(th._engine_name, 'timeout')
242 logger.warning('engine timeout: {0}'.format(th._engine_name))
235 logger.warning('engine timeout: {0}'.format(th._engine_name))
243
236
244
237
searx/webapp.py+12−2
@@ -626,7 +626,7 @@ def index():
626 'corrections': list(result_container.corrections),
626 'corrections': list(result_container.corrections),
627 'infoboxes': result_container.infoboxes,
627 'infoboxes': result_container.infoboxes,
628 'suggestions': list(result_container.suggestions),
628 'suggestions': list(result_container.suggestions),
629− 'unresponsive_engines': list(result_container.unresponsive_engines)},
629+ 'unresponsive_engines': __get_translated_errors(result_container.unresponsive_engines)}, # noqa
630 default=lambda item: list(item) if isinstance(item, set) else item),
630 default=lambda item: list(item) if isinstance(item, set) else item),
631 mimetype='application/json')
631 mimetype='application/json')
632 elif output_format == 'csv':
632 elif output_format == 'csv':
@@ -694,7 +694,7 @@ def index():
694 corrections=correction_urls,
694 corrections=correction_urls,
695 infoboxes=result_container.infoboxes,
695 infoboxes=result_container.infoboxes,
696 paging=result_container.paging,
696 paging=result_container.paging,
697− unresponsive_engines=result_container.unresponsive_engines,
697+ unresponsive_engines=__get_translated_errors(result_container.unresponsive_engines),
698 current_language=match_language(search_query.lang,
698 current_language=match_language(search_query.lang,
699 LANGUAGE_CODES,
699 LANGUAGE_CODES,
700 fallback=request.preferences.get_value("language")),
700 fallback=request.preferences.get_value("language")),
@@ -705,6 +705,16 @@ def index():
705 )
705 )
706
706
707
707
708+def __get_translated_errors(unresponsive_engines):
709+ translated_errors = []
710+ for unresponsive_engine in unresponsive_engines:
711+ error_msg = gettext(unresponsive_engine[1])
712+ if unresponsive_engine[2]:
713+ error_msg = "{} {}".format(error_msg, unresponsive_engine[2])
714+ translated_errors.append((unresponsive_engine[0], error_msg))
715+ return translated_errors
716+
717+
708@app.route('/about', methods=['GET'])
718@app.route('/about', methods=['GET'])
709def about():
719def about():
710 """Render about page"""
720 """Render about page"""