Selaa lähdekoodia

[enh] date formatting by locale

Adam Tauber 10 vuotta sitten
vanhempi
commit
23fa74b5f9
1 muutettua tiedostoa jossa 29 lisäystä ja 4 poistoa
  1. 29
    4
      searx/utils.py

+ 29
- 4
searx/utils.py Näytä tiedosto

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