1. 程式人生 > >Python locale 多語言模組和遇到的坑

Python locale 多語言模組和遇到的坑

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())