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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django 中文本地化汉化方法

發(fā)布時(shí)間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 中文本地化汉化方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 Python 的 web 開(kāi)發(fā)框架中很多人都會(huì)選擇強(qiáng)大的 Django 來(lái)進(jìn)行學(xué)習(xí),但是 Django 默認(rèn)使用的語(yǔ)言是英語(yǔ),對(duì)于開(kāi)發(fā)人員可能還好,但是實(shí)際部署的時(shí)候英文環(huán)境對(duì)于網(wǎng)站運(yùn)維人員未必友好,所以需要能夠?qū)?Django 的后臺(tái)中文本地化,接下來(lái)就簡(jiǎn)單介紹一下如何漢化我們的 Django 。

系統(tǒng)環(huán)境

本文建立在以下系統(tǒng)環(huán)境中,對(duì)于其他版本和環(huán)境本文內(nèi)容僅供參考。

操作系統(tǒng):Manjaro Linux 內(nèi)核版本 4.14
Django: 1.11
Python: 3.6

我們搭建了一個(gè)簡(jiǎn)單的投票應(yīng)用,登錄后臺(tái)是純英文的如下圖:

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

設(shè)置項(xiàng)目為中文

打開(kāi)項(xiàng)目配置文件 settings.py 修改為下面的樣子

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

保存后我們刷新后臺(tái)就可以多看,幾乎所有由 Django 創(chuàng)建的內(nèi)容都已經(jīng)漢化為了中文

漢化應(yīng)用app

眼尖的同學(xué)肯定看到我們創(chuàng)建的應(yīng)用 polls 和模型 Question 還都是英文的狀態(tài),那么接下來(lái)我們首先給應(yīng)用設(shè)置中文名字。

我們打開(kāi)應(yīng)用下的 apps.py 文件設(shè)置應(yīng)用的名稱

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

設(shè)置模型 models 的中文名

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

class Question(models.Model):# django 的大多數(shù)字段都接受一個(gè)可選的位置參數(shù)# (在第一的位置) — 字段的自述名,我們利用它來(lái)使我們的項(xiàng)目漢化question_text = models.CharField("問(wèn)題", max_length=200)pub_date = models.DateTimeField('發(fā)布時(shí)間')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中通過(guò) short_description 設(shè)置自定義名稱was_published_recently.short_description = '是否最近發(fā)布?'class Meta:# 設(shè)置模型的名字,但是記得復(fù)數(shù)形式也要設(shè)置,否則有些地方就變成 verbose_name + s 了verbose_name = '問(wèn)卷'verbose_name_plural = '問(wèn)卷(復(fù)數(shù)形式)'

ForeignKey、ManyToManyField 和 OneToOneField 的中文名

由于 ForeignKey() ManyToManyField() 和 OneToOneField() 的第一個(gè)參數(shù)要求是關(guān)聯(lián)的模型,因此他們的漢化名字需要通過(guò)增加 verbose_name 關(guān)鍵字參數(shù)來(lái)設(shè)置

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

至此,我們通過(guò)相對(duì)來(lái)說(shuō)簡(jiǎn)單暴力的方法讓我們的 Django 站點(diǎn)實(shí)現(xiàn)了中文化。而對(duì)于需要面對(duì)多語(yǔ)言用戶的的情況,官方更建議的方式是通過(guò)本地化和全球化的方法來(lái)編輯翻譯文檔來(lái)實(shí)現(xiàn)。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。