瀏覽代碼

[enh] date formatting by locale

Adam Tauber 10 年之前
父節點
當前提交
23fa74b5f9
共有 1 個檔案被更改,包括 29 行新增4 行删除
  1. 29
    4
      searx/utils.py

+ 29
- 4
searx/utils.py 查看文件

1
 # import htmlentitydefs
1
 # import htmlentitydefs
2
+import locale
3
+import dateutil.parser
4
+import cStringIO
5
+import csv
6
+import os
7
+import re
8
+
2
 from codecs import getincrementalencoder
9
 from codecs import getincrementalencoder
3
 from HTMLParser import HTMLParser
10
 from HTMLParser import HTMLParser
4
 from random import choice
11
 from random import choice
5
 
12
 
6
 from searx.version import VERSION_STRING
13
 from searx.version import VERSION_STRING
7
 from searx import settings
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
 ua_versions = ('29.0',
20
 ua_versions = ('29.0',
15
                '30.0',
21
                '30.0',
181
                 f = os.path.join(directory[base_path_length:], filename)
187
                 f = os.path.join(directory[base_path_length:], filename)
182
                 result_templates.add(f)
188
                 result_templates.add(f)
183
     return result_templates
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