|  | @@ -1,15 +1,21 @@
 | 
	
		
			
			| 1 | 1 |  # import htmlentitydefs
 | 
	
		
			
			|  | 2 | +import locale
 | 
	
		
			
			|  | 3 | +import dateutil.parser
 | 
	
		
			
			|  | 4 | +import cStringIO
 | 
	
		
			
			|  | 5 | +import csv
 | 
	
		
			
			|  | 6 | +import os
 | 
	
		
			
			|  | 7 | +import re
 | 
	
		
			
			|  | 8 | +
 | 
	
		
			
			| 2 | 9 |  from codecs import getincrementalencoder
 | 
	
		
			
			| 3 | 10 |  from HTMLParser import HTMLParser
 | 
	
		
			
			| 4 | 11 |  from random import choice
 | 
	
		
			
			| 5 | 12 |  
 | 
	
		
			
			| 6 | 13 |  from searx.version import VERSION_STRING
 | 
	
		
			
			| 7 | 14 |  from searx import settings
 | 
	
		
			
			|  | 15 | +from searx import logger
 | 
	
		
			
			| 8 | 16 |  
 | 
	
		
			
			| 9 |  | -import cStringIO
 | 
	
		
			
			| 10 |  | -import csv
 | 
	
		
			
			| 11 |  | -import os
 | 
	
		
			
			| 12 |  | -import re
 | 
	
		
			
			|  | 17 | +
 | 
	
		
			
			|  | 18 | +logger = logger.getChild('utils')
 | 
	
		
			
			| 13 | 19 |  
 | 
	
		
			
			| 14 | 20 |  ua_versions = ('29.0',
 | 
	
		
			
			| 15 | 21 |                 '30.0',
 | 
	
	
		
			
			|  | @@ -181,3 +187,22 @@ def get_result_templates(base_path):
 | 
	
		
			
			| 181 | 187 |                  f = os.path.join(directory[base_path_length:], filename)
 | 
	
		
			
			| 182 | 188 |                  result_templates.add(f)
 | 
	
		
			
			| 183 | 189 |      return result_templates
 | 
	
		
			
			|  | 190 | +
 | 
	
		
			
			|  | 191 | +
 | 
	
		
			
			|  | 192 | +def format_date_by_locale(date_string, locale_string):
 | 
	
		
			
			|  | 193 | +    # strftime works only on dates after 1900
 | 
	
		
			
			|  | 194 | +    parsed_date = dateutil.parser.parse(date_string)
 | 
	
		
			
			|  | 195 | +    if parsed_date.year <= 1900:
 | 
	
		
			
			|  | 196 | +        return parsed_date.isoformat().split('T')[0]
 | 
	
		
			
			|  | 197 | +
 | 
	
		
			
			|  | 198 | +    orig_locale = locale.getlocale()[0]
 | 
	
		
			
			|  | 199 | +    try:
 | 
	
		
			
			|  | 200 | +        locale.setlocale(locale.LC_ALL, locale_string)
 | 
	
		
			
			|  | 201 | +    except:
 | 
	
		
			
			|  | 202 | +        logger.warning('cannot set locale: {0}'.format(locale_string))
 | 
	
		
			
			|  | 203 | +    formatted_date = parsed_date.strftime(locale.nl_langinfo(locale.D_FMT))
 | 
	
		
			
			|  | 204 | +    try:
 | 
	
		
			
			|  | 205 | +        locale.setlocale(locale.LC_ALL, orig_locale)
 | 
	
		
			
			|  | 206 | +    except:
 | 
	
		
			
			|  | 207 | +        logger.warning('cannot set original locale: {0}'.format(orig_locale))
 | 
	
		
			
			|  | 208 | +    return formatted_date
 |