国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Django國際化的實現

2019-11-10 19:06:52
字體:
來源:轉載
供稿:網友

Django國際化依賴于GNU gettext工具集,所以在實現國際化之前需要先裝gettext.  sudo apt-get install gettext 可以通過在python交互模式下測試一下有沒有安裝成功  import django   from django.utils.translation import ugettext Django實現翻譯需要在python代碼和模板中添加鉤子(翻譯字符串)  如: python代碼中: ugettext(“test”)     django模板中: {% trans “test” %}  當然,Django國際化不僅僅這么簡單,還有ungettext, gettext_lazy, blocktrans等等,這里只是介紹實現國際化需要的操作. 1.創建一個項目

django-admin.py startPRoject translate因為我的django版本是1.5的,所以項目結構是這樣的: --translate --translate --__init__.py --wsgi.py --settings.py --urls.py --manage.py如果版本在1.4以下,manage.py應該在translate內部,現在比較高的版本中translate包下應該還有migrate,admin.py等文件或文件夾.不過不影響.

2.Django國際化的配置需要在settings文件中添加以下幾個東西:  USE_I18N = True 在middleware中添加  'django.middleware.locale.LocaleMiddleware',  當然,這個middleware不是隨便添加的,需要添加在sessionMiddleware之后,CommonMiddleware之前,如果使用的CacheMiddleware則放在CacheMiddleware之后. 3.創建一個APP  python manage.py startapp internation 或者使用  django-admin.py startapp internation 然后在settings的app中添加internation 4.創建view  cd internation 創建view函數  from django.utils.translation import ugettext as _  from django.shortcuts import render_to_respoonse  def test_trans(request):   return render_to_response("hello.html", {"hi": _("hi")}) 5.配置url 在urls.py中添加 from internation.views import test_trans  url(r'^hello/$', test_trans), 6.在internation中添加templates, 創建hello.html mkdir templates touch hello.html 記住要在hello.html中添加{% load i18n %}(寫在最開頭) 然后編寫簡單代碼 {% load i18n %} <!DOCTYPE html> <html>  <head>   <title>welcome</title>  </head>  <body>   <span>{{ hi }}</span>  </body> </html> 7.生成翻譯文件  在app下創建locale文件夾,因為在運行時,Django構建一個內存中的文字-翻譯目錄,其搜索加載編譯后的.mo文件的順序是:  優先搜索settings文件中LOCALE_PATHS配置的路徑,  其次搜索各個app下有沒有locale  最后,django/conf/locale中提供的Django提供的基本翻譯用作后備. 其實,locale因為主要作用于整個項目,而不是某個app,所以推薦創建在最外面,和manage.py在同一個根目錄下  然后在settings.py中添加:  import os  PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))  LOCALE_PATHS = (   os.path.join(PROJECT_ROOT, 'locale/'),  )  接著使用命令:  python manage.py makemessages -l en_US  python manage.py makemessages -l zh_CN  此時locale目錄結構應該是:  –locale   –en_US    –LC_MESSAGES    –django.po   –zh_CN    –LC_MESSAGES    –django.po  編輯en_US下的django.po   msgid "hi"   msgstr "hello"  zh_CN下的django.po   msgid "hi"   msgstr "你好"  調用命令python manage.py compilemessages  將會生成對應的django.mo文件.  因為我把LOCALE_PAHTS設置成與settings.py在同一目錄下的緣故,需要將編譯好的locale移到translation中. 8.測試運行  python manage.py runserver 8000 打開瀏覽器輸入:  http://127.0.0.1:8000/hello 即可看到"你好"或者"hello" 主要看瀏覽器的當前語言設置,可以在設置中更改當前語言. 9.更高級的使用方法  很多網站上都提供按鈕來切換語言,一般都是中英文切換,這里就用最簡單的按鈕切換中英文.  只需要在之前的代碼上稍作修改.  首先需要在settings.py中添加  LANGUAGES = (   ('en', 'English'),   ('zh-CN', 'Chinese'),  )  表示兩種語言切換.  然后在urls.py中添加   (r'^i18n/', include('django.conf.urls.i18n')),  接著在hello.html修改為     ...   <body>   <form action="/i18n/setlang/" method="post" id="myform">    <input type="hidden" name="next" value="{{ to_url }}" />    {% for language in LANGUAGES %}     {% ifnotequal LANGUAGE_CODE language.0 %}      <input type="hidden" name="language" value="{{ language.0 }}"/>     {% endifnotequal %}    {% endfor %}   </form>   <span>{{ hi }}</span><br />   <span>{% trans "hi" %}</span><br />   <a href="#" onclick="submit()">translate</a><br />  </body>  <script type="text/javascript">   function submit() {   document.getElementById("myform").submit();  }  </script>    然后把views中返回值增加一下  return render_to_response("hello.html", {"hi": _("hi"), LANGUAGES: settings.LANGUAGES, LANGUAGE_CODE: request.LANGUAGE_CODE})  最后進行測試,重啟服務器,打開瀏覽器,點擊translate就可以切換中英文了.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 小金县| 卓尼县| 保德县| 日照市| 托克逊县| 红安县| 竹北市| 阳城县| 剑河县| 凤凰县| 大石桥市| 绥棱县| 莱州市| 堆龙德庆县| 耿马| 大洼县| 白山市| 土默特右旗| 三门县| 凤台县| 濉溪县| 彰化县| 龙门县| 杭州市| 璧山县| 铁力市| 铜鼓县| 曲阳县| 新郑市| 偃师市| 武陟县| 原阳县| 公安县| 广饶县| 平潭县| 巴楚县| 稻城县| 太和县| 翼城县| 绥德县| 河间市|