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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Django國(guó)際化的實(shí)現(xiàn)

2019-11-10 20:11:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

django-admin.py startPRoject translate因?yàn)槲业膁jango版本是1.5的,所以項(xiàng)目結(jié)構(gòu)是這樣的: --translate --translate --__init__.py --wsgi.py --settings.py --urls.py --manage.py如果版本在1.4以下,manage.py應(yīng)該在translate內(nèi)部,現(xiàn)在比較高的版本中translate包下應(yīng)該還有migrate,admin.py等文件或文件夾.不過(guò)不影響.

2.Django國(guó)際化的配置需要在settings文件中添加以下幾個(gè)東西:  USE_I18N = True 在middleware中添加  'django.middleware.locale.LocaleMiddleware',  當(dāng)然,這個(gè)middleware不是隨便添加的,需要添加在sessionMiddleware之后,CommonMiddleware之前,如果使用的CacheMiddleware則放在CacheMiddleware之后. 3.創(chuàng)建一個(gè)APP  python manage.py startapp internation 或者使用  django-admin.py startapp internation 然后在settings的app中添加internation 4.創(chuàng)建view  cd internation 創(chuàng)建view函數(shù)  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, 創(chuàng)建hello.html mkdir templates touch hello.html 記住要在hello.html中添加{% load i18n %}(寫(xiě)在最開(kāi)頭) 然后編寫(xiě)簡(jiǎn)單代碼 {% load i18n %} <!DOCTYPE html> <html>  <head>   <title>welcome</title>  </head>  <body>   <span>{{ hi }}</span>  </body> </html> 7.生成翻譯文件  在app下創(chuàng)建locale文件夾,因?yàn)樵谶\(yùn)行時(shí),Django構(gòu)建一個(gè)內(nèi)存中的文字-翻譯目錄,其搜索加載編譯后的.mo文件的順序是:  優(yōu)先搜索settings文件中LOCALE_PATHS配置的路徑,  其次搜索各個(gè)app下有沒(méi)有l(wèi)ocale  最后,django/conf/locale中提供的Django提供的基本翻譯用作后備. 其實(shí),locale因?yàn)橹饕饔糜谡麄€(gè)項(xiàng)目,而不是某個(gè)app,所以推薦創(chuàng)建在最外面,和manage.py在同一個(gè)根目錄下  然后在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  此時(shí)locale目錄結(jié)構(gòu)應(yīng)該是:  –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 "你好"  調(diào)用命令python manage.py compilemessages  將會(huì)生成對(duì)應(yīng)的django.mo文件.  因?yàn)槲野袻OCALE_PAHTS設(shè)置成與settings.py在同一目錄下的緣故,需要將編譯好的locale移到translation中. 8.測(cè)試運(yùn)行  python manage.py runserver 8000 打開(kāi)瀏覽器輸入:  http://127.0.0.1:8000/hello 即可看到"你好"或者"hello" 主要看瀏覽器的當(dāng)前語(yǔ)言設(shè)置,可以在設(shè)置中更改當(dāng)前語(yǔ)言. 9.更高級(jí)的使用方法  很多網(wǎng)站上都提供按鈕來(lái)切換語(yǔ)言,一般都是中英文切換,這里就用最簡(jiǎn)單的按鈕切換中英文.  只需要在之前的代碼上稍作修改.  首先需要在settings.py中添加  LANGUAGES = (   ('en', 'English'),   ('zh-CN', 'Chinese'),  )  表示兩種語(yǔ)言切換.  然后在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})  最后進(jìn)行測(cè)試,重啟服務(wù)器,打開(kāi)瀏覽器,點(diǎn)擊translate就可以切換中英文了.


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚松县| 贵港市| 志丹县| 潮州市| 志丹县| 泰来县| 彭水| 房山区| 揭西县| 嘉义县| 宁强县| 保靖县| 南江县| 灌阳县| 江城| 五家渠市| 肇源县| 克拉玛依市| 兴仁县| 明星| 金秀| 柏乡县| 韶关市| 巴楚县| 包头市| 申扎县| 白山市| 溧水县| 灵宝市| 茌平县| 濉溪县| 武安市| 天水市| 景洪市| 彭泽县| 正镶白旗| 垫江县| 大新县| 梅州市| 来安县| 郎溪县|