Natural

           

          Django 國際化

          Django 1.5
          Python 2.7.3

              國際化支持,網上一搜詳細的例子很多。本以為是一個簡單的case,結果折騰了好幾個小時卻百撕不得騎姐!!最終去翻看官方教程,總算找到解決方案。

              簡單說下如何國際化支持(以中文國際化為例):(詳情參閱:http://djangobook.py3k.cn/2.0/chapter19/)

              對 Django 中 Python 代碼進行國際化主要用到 ugettext(),gettext_noop(),gettext_lazy() 和 ungettext() 等函數;模板中則使用trans、blocktrans標簽。

          國際化步驟:
              1.在你的App 目錄下創建 locale 目錄,并運行“django-admin.py makemessages -l zh_CN”產生 locale/zh_CN/LC_MESSAGES/django.po 文件。它會自動搜索目錄下所有需要國際化的內容,生成一個清單文件(django.po),然后打開該文件,加上對應的中文翻譯即可。
              2.運行“django-admin.py compilemessages”命令,生成一個django.mo文件,這是真正在運行時所調用的。

          按照教程所說,django運行時會根據算法自動找到該文件,然而遇到的問題是它沒有被找到。顯示的依然是默認的英文。
          Django使用以下算法尋找翻譯:

              首先,Django在該視圖所在的應用程序文件夾中尋找 locale 目錄。 若找到所選語言的翻譯,則加載該翻譯。

              第二步,Django在項目目錄中尋找 locale 目錄。 若找到翻譯,則加載該翻譯。

              最后,Django使用 django
          /conf/locale 目錄中的基本翻譯。
          估計這個問題與我的項目的目錄結構有關,app沒有直接在項目的根目錄下,而是中間多了一個目錄apps。(感興趣的可參考一下:django最佳實踐:項目布局
          翻看了下官方文擋,總算找到了解決辦法:
          在項目的settings.py配置文件中,添加LOCALE_PATHS變量,把locale目錄添加到其中(官方鏈接)。
          LOCALE_PATHS = (
              
          '/home/www/project/common_files/locale',
              
          '/var/local/translations/locale'
          )

          在django1.5下,國際化默認是支持的,并不需要像各教程所說那樣在配置文件中添加相應的中間件(默認已經加上了)。如果你發現你的國際化資源文件沒有被載入,那就去上面這個變量中添加locale路徑吧。

          posted on 2013-05-10 16:24 此號已被刪 閱讀(630) 評論(0)  編輯  收藏 所屬分類: Python

          導航

          統計

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 都安| 怀来县| 建瓯市| 田东县| 姚安县| 湘乡市| 岳普湖县| 揭西县| 贵定县| 彰化市| 偏关县| 郓城县| 凤冈县| 南部县| 秦皇岛市| 饶平县| 弋阳县| 泰安市| 涟水县| 柘城县| 武汉市| 辉县市| 海安县| 海门市| 西和县| 舟曲县| 龙门县| 大关县| 开封县| 中西区| 广东省| 呼图壁县| 恩平市| 栾城县| 巴塘县| 车险| 闻喜县| 昌邑市| 连州市| 广西| 乳源|