Django支持多语言(i18n)
目标读者
刚开始学习 Django 的程序员,希望开发多语言支持的网页应用程序的人。
国际化与区域化 (i18n) 是什么意思?
i18n是一個常用的國際化縮寫詞,是一個重要的概念。它指的是使應用程式能夠在不同的語言和地區使用的過程。
“()的意思”
在Django中,下划线(_)被用作翻译标记。这是为了让Django的翻译工具能够检测文本并将其添加到翻译目录中。例如,用_(“Hello World”)括起来的文本将被标记为待翻译的文本。
翻译目录
翻译目录是指用于翻译Django应用程序内文本的数据库或数据文件。它存储每种语言的文本及其相应的翻译版本。翻译目录通常通过使用Django的管理命令来生成,并保存在应用程序的locale目录中。
生成和编辑翻译目录
生成翻译目录,可使用以下命令来完成。
$ python manage.py makemessages -l <言語コード>
打开已生成的.po文件,使用文本编辑器,添加或编辑文本和相应的翻译。
#模板文件名和行号
msgid “原始文本”
msgstr “翻译后的文本”
编制翻译目录
编译翻译目录,生成实际的翻译文件(.mo 文件)。
$ python manage.py compilemessages
在应用中使用翻译
在 Django 应用程序中使用翻译,您可以在模板或 Python 代码中使用 gettext 函数或 {% trans %} 模板标签。Django 将根据用户选择的语言显示适当的翻译。
指定用户使用的语言的方法。
-
- ブラウザの言語設定
-
- Djangoは、ユーザーのブラウザから送られてくるAccept-Language HTTPヘッダーを見て、ユーザーの言語を推測します。これはブラウザの言語設定に基づいています。
-
- URLパラメータ
-
- Djangoは、URLの一部として言語コードを含めることで、特定のビューで使用する言語を指定することができます。
-
- セッションやクッキー
- Djangoは、ユーザーが明示的に言語を選択した場合(例えば、言語選択ドロップダウンメニューを使用して)、その選択をセッションやクッキーに保存することができます。これにより、ユーザーが次にサイトを訪れたときに同じ言語が使用されます。
Django的国际化(i18n)功能与Google翻译的区别在哪里?
Django的国际化(i18n)功能使用开发者提供的翻译来翻译应用程序内的文字。而Google翻译是由Google提供的翻译服务,可以翻译整个网页或任意文本。然而,由于Google翻译提供动态翻译,所以其结果并不总是完全准确的。
总结
Django的国际化(i18n)功能是开发多语言支持的网页应用程序时非常重要的工具。借助此功能,开发者可以翻译应用程序中的文本,并与不同语言的用户进行交互。本文介绍了Django的i18n功能的基本用法以及其工作原理。开发者可以利用此功能将自己的应用程序适配更广泛的用户群。