使用 Django 进行国际化和本地化

2023-04-06 00:00:00 django 本地化 国际化

首先,需要在 settings.py 文件中设置语言和时区。

# settings.py

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

接下来,在需要进行国际化和本地化的代码中,使用 Django 提供的 gettext 函数对字符串进行标记。如下所示:

from django.utils.translation import gettext as _

welcome_msg = _('Welcome to pidancode.com')

然后,需要在项目中生成语言文件,在语言文件中翻译标记的字符串。可以使用以下命令生成语言文件:

python manage.py makemessages -l zh_Hans

其中,-l 参数指定生成的语言文件的目标语言。生成的语言文件会保存在项目的 locales 目录下,可以在其中找到需要翻译的标记字符串。如下所示:

# locales/zh_Hans/LC_MESSAGES/django.po

msgid "Welcome to pidancode.com"
msgstr "欢迎来到皮蛋编程"

完成翻译后,需要使用以下命令编译生成的语言文件:

python manage.py compilemessages

最后,可以在视图函数中使用 Django 提供的 ugettext 函数将翻译后的字符串返回给模板进行渲染。如下所示:

from django.utils.translation import ugettext as _

def my_view(request):
    welcome_msg = _('Welcome to pidancode.com')
    return render(request, 'my_template.html', {'welcome_msg': welcome_msg})

在模板中可以直接使用渲染后的字符串:

<!-- my_template.html -->

<h1>{{ welcome_msg }}</h1>

这样就完成了 Django 的国际化和本地化设置,当浏览器的语言设置和项目支持的语言相同时,会渲染对应的翻译文本。

相关文章