Python locale 多語言模組和遇到的坑
阿新 • • 發佈:2018-12-19
locale
為計算機上提供了國際化和本地化轉化的環境。
locale 的相關命令
在liunx中,可以通過命令locale檢視當前系統的語言環境。
locale -a 可以檢視系統支援的locale值
阿里雲訊息佇列使用中遇到的坑
不同語言環境,執行出的結果也是不同,在工作中呼叫阿里雲的訊息佇列,因為語言環境的問題頻頻報錯,除錯不通,甚是苦惱
將訊息佇列的SDK 下載,並加入到自己的專案中,進行引用和配置,按照開發文件的流程一步一步開發完畢後,本想是很完美的,可以獲取到訊息佇列的資料了,卻遲遲沒有結果,然後除錯一路跟到的SDK的底層檔案,mns/mns_cllient.py檔案
發現這個地方報錯,才明白是時間格式問題。
因為我本地是zh_CN.UTF-8,而伺服器上獲取的是Thu, 24 Nov 2016 07:01:59 GMT 格式
應該做出的措施是:
time_locale = locale.setlocale(locale.LC_TIME) #獲取當前系統語言格式
locale.setlocale(locale.LC_TIME, 'en_US') #將語言格式轉換為en_US
報錯程式碼(將上面報錯行包裹)
import locale def to_untime(self, time_string): time_locale = locale.setlocale(locale.LC_TIME) if time_locale.find('en') != 0 and time_locale != 'C': locale.setlocale(locale.LC_TIME, 'en_US') unixtime = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()) locale.setlocale(locale.LC_TIME, time_locale) else: unixtime = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()) return unixtime
小提示: 要檢視是否有locale包,記得下載locale包哦
我呢,就慘了點,找到了問題所在,偏偏伺服器種種原因,locale下不下來,只能另尋它路了。
想必下面這種low方法,你用不到,因為你沒有我慘,哈哈哈哈
weeks = {'一': 'Mon', '二': 'Tue', '三': 'Wed', '四': 'Thu', '五': 'Fri', '六': 'Sat', '日': 'Sun'} months = {'01': 'Jan', '02': 'Feb', '03': 'Mar', '04': 'Apr', '05': 'May', '06': 'Jun', '07': 'Jul', '08': 'Aug','09': 'Sep', '10': 'Oct', '11': 'Nov', '12': 'Dec'} week = time.strftime('%a', time.gmtime()) month = time.strftime('%m', time.gmtime()) if week in weeks: w = weeks[week.strip()] else: w = week mont = month.strip() if mont in months: m = months[mont] else: m = month unixtime = time.strftime(w +', '+ "%d" + ' '+ m +' '+ "%Y %H:%M:%S GMT", time.gmtime())