麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

Django國際化的實現

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

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就可以切換中英文了.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人羞羞国产免费游戏 | 国产精品毛片无码 | 久久国产亚洲视频 | www.com超碰 | a级高清免费毛片av在线 | 一级一级一级毛片 | 一级黄色毛片播放 | 天天夜夜操操 | 久久一区二区三区av | 欧美激情精品久久久久久黑人 | 国产亚洲综合一区二区 | 成人在线视频网 | 91av大片| 色婷婷久久久亚洲一区二区三区 | 播色网| 激情综合在线 | 国产免费一区二区三区 | 成人福利视频在线观看 | 国产一级二级在线播放 | 91午夜理伦私人影院 | 亚洲第一视频 | 久草在线新视觉 | 欧美 日韩 亚洲 中文 | 久草在线最新 | 欧美激情视频一区二区免费 | 久久国产一级 | 亚洲精品3 | 国产午夜精品一区二区三区在线观看 | 欧美视频在线一区二区三区 | 空姐一级毛片 | 一级黄色大片在线观看 | 91九色网址 | 国产精品伊人久久 | 99ri在线| 亚洲人成中文字幕在线观看 | 性欧美一区二区 | 精品一区二区三区网站 | 日韩av在线播放一区 | 国产亚洲精品久久久久久大师 | h色网站在线观看 | 九九热在线视频观看 |