日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django 中文本地化汉化方法

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 中文本地化汉化方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 Python 的 web 開發框架中很多人都會選擇強大的 Django 來進行學習,但是 Django 默認使用的語言是英語,對于開發人員可能還好,但是實際部署的時候英文環境對于網站運維人員未必友好,所以需要能夠將 Django 的后臺中文本地化,接下來就簡單介紹一下如何漢化我們的 Django 。

系統環境

本文建立在以下系統環境中,對于其他版本和環境本文內容僅供參考。

操作系統:Manjaro Linux 內核版本 4.14
Django: 1.11
Python: 3.6

我們搭建了一個簡單的投票應用,登錄后臺是純英文的如下圖:

可以看到我們的應用(app)名字叫polls ,polls 下有一個模型(models)叫做Question,然后我們整個后臺管理界面(admin)也都是全英文的。

設置項目為中文

打開項目配置文件 settings.py 修改為下面的樣子

# 較早版本的 Django 可以嘗試改為'zh-CN',具體可查看 # “python/site-packages/django/conf/locale/”中的語言名稱 LANGUAGE_CODE = 'zh-Hans'# Windows環境中此項的時區必須和系統一致,設置為 Asia/Shanghai。 # 另外此項設置如果保持 UTC 有可能導致 Django 時間和本地時間不同的情況。 TIME_ZONE = 'Asia/Shanghai'# 這里必須是 True,否則 LANGUAGE_CODE 會失效 USE_I18N = True

保存后我們刷新后臺就可以多看,幾乎所有由 Django 創建的內容都已經漢化為了中文

漢化應用app

眼尖的同學肯定看到我們創建的應用 polls 和模型 Question 還都是英文的狀態,那么接下來我們首先給應用設置中文名字。

我們打開應用下的 apps.py 文件設置應用的名稱

# polls/apps.pyclass PollsConfig(AppConfig):name = 'polls'# 在已有的 PollsConfig 類中增加app的名字verbose_name = '投票系統'

設置模型 models 的中文名

剩下的模型的名字了,當然還包括模型中不同字段的名字,不然不清楚要填寫什么就更要命了。
我們看一下 Question 的的模型

class Question(models.Model):# django 的大多數字段都接受一個可選的位置參數# (在第一的位置) — 字段的自述名,我們利用它來使我們的項目漢化question_text = models.CharField("問題", max_length=200)pub_date = models.DateTimeField('發布時間')def __str__(self):return self.question_textdef was_published_recently(self):now = timezone.now()return now - datetime.timedelta(days=1) <= self.pub_date <= nowwas_published_recently.admin_order_field = 'pub_date'was_published_recently.boolean = True# 我們可以在模型、admin中通過 short_description 設置自定義名稱was_published_recently.short_description = '是否最近發布?'class Meta:# 設置模型的名字,但是記得復數形式也要設置,否則有些地方就變成 verbose_name + s 了verbose_name = '問卷'verbose_name_plural = '問卷(復數形式)'

ForeignKey、ManyToManyField 和 OneToOneField 的中文名

由于 ForeignKey() ManyToManyField() 和 OneToOneField() 的第一個參數要求是關聯的模型,因此他們的漢化名字需要通過增加 verbose_name 關鍵字參數來設置

# 先來建立一個新的tag標簽的模型,并且設置中文名稱 class Tag(models.Model):tag_name = models.CharField("標簽", max_length=10)class Meta:verbose_name="Tag標簽"verbose_name_plural = "Tag標簽"# 創建一個新的文章的模型設置Tag模型的外鍵,并設置中文名稱 class Post(models.Model):title = models.CharField('題目', max_length=30)tag = models.ForeignKey(Tag, on_delete=models.CASCADE, verbose_name="標簽")

至此,我們通過相對來說簡單暴力的方法讓我們的 Django 站點實現了中文化。而對于需要面對多語言用戶的的情況,官方更建議的方式是通過本地化和全球化的方法來編輯翻譯文檔來實現。

總結

以上是生活随笔為你收集整理的Django 中文本地化汉化方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。