Django国际化最小示例
我在国际化我的应用程序方面遇到了困难,所以我在这里给出了一个实现失败的最小示例 考虑以下步骤,在django制作一个有国际支持的网站: 转到终端中您最喜爱的文件夹,然后:Django国际化最小示例,django,Django,我在国际化我的应用程序方面遇到了困难,所以我在这里给出了一个实现失败的最小示例 考虑以下步骤,在django制作一个有国际支持的网站: 转到终端中您最喜爱的文件夹,然后: django-admin.py startproject mysite cd mysite/ mkdir locale python manage.py startapp main # (1) modify mysite/urls.py # (2) modify main/views.py # (3) modify mysit
django-admin.py startproject mysite
cd mysite/
mkdir locale
python manage.py startapp main
# (1) modify mysite/urls.py
# (2) modify main/views.py
# (3) modify mysite/settings.py
django-admin.py makemessages -l de
# (4) modify locale/de/LC_MESSAGES/django.po
django-admin.py compilemessages -l de
python manage.py runserver
其中:
## (1) mysite/urls.py
urlpatterns = patterns('',
url(r'^$', 'main.views.home'),
)
## (2) main/views.py
from django.http import HttpResponse
from django.utils.translation import ugettext as _
def home(request):
return HttpResponse(_('Hello'))
## (3) mysite/settings.py
LANGUAGE_CODE = 'de'
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + \
('django.core.context_processors.i18n',) # ensures all django processors are used.
## (4) locale/de/LC_MESSAGES/django.po
#: main/views.py:6
msgid "Hello"
msgstr "Hallo"
我假设网站只有一种语言,因此,我没有通过以下方式激活中间件区域设置:
如果您想让每个单独的用户指定他使用的语言或
她更喜欢使用localemidware。LocalEMIDlware启用语言
根据请求中的数据进行选择。它为用户定制内容
每个用户
此实现不会生成所需的“Hello”到“Hallo”的翻译。我做错了什么?Django以以下三种方式收集翻译: LOCALE_路径中列出的目录具有最高的优先级,最先出现的目录的优先级高于随后出现的目录 然后,它查找并使用installed_apps中列出的每个已安装应用中是否存在区域设置目录。先出现的优先权高于后出现的优先权 最后,使用Django提供的Django/conf/locale中的基本翻译作为回退 由于您的翻译文件不在这些位置,您需要使用
LOCALE\u路径手动设置它,如下所述:
1º在settings.py中启用国际化:
USE_I18N = True
2º在设置上,导入:
从django.utils.translation导入ugettext\u lazy as
3º设置要在settings.py中使用的语言:
LANGUAGES = (
('en', _('English')),
('pt-br', _('Portuguese')),
('it', _('Italian')),
('fr', _('French')),
('es', _('Spanish')),
)
3º在settings.py中配置LOCALE_路径:
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'conf/locale'),
)
4º在您在区域设置中配置的路径内创建文件夹,例如:
$ cd django_project_folder
$ mkdir conf
$ mkdir conf/locale
5º运行命令:
django-admin.py makemessages -a
它将在settings.py LANGUAGES中每个语言集的子文件夹中创建一个.po文件。翻译文件中的每个句子
Ps:在当前目录的整个源代码树上运行,并提取所有标记为转换的字符串
对于测试,在运行之前,放置标签
{% trans "Welcome to my project!" %}
在index.html中,再次运行makemessages命令。您将在de.po文件中看到一个新字符串:
msgid "Welcome to my Project"
msgstr ""
6º现在,运行命令:
django-admin compilemessages
它将从.po文件收集所有msgstr,并将编译为.mo文件
7º运行项目并进行测试
8ªPlus:如果您希望在URL中显示用户使用的语言,您可以配置URL.py以显示:
urlpatterns += i18n_patterns(
# your urls here,
)
如果您访问Django管理面板,是否使用德语?您是否尝试设置LOCALE\u路径
@andrea.ge:根据我从django文档中了解到的情况,这些应该是翻译的最小步骤。。。我尝试了本地路径,但没有成功,我没有尝试admin,因为它需要一个DB,我没有使用它…您将LOCALE\u路径设置为哪个路径??LOCALE\u路径=('/Users/username/Desktop/Trials/test django/mysite/LOCALE'),这是makemessages的内容所指向的路径。a=('something')=>type(a)=第一次也是在上面浪费时间:)这是我修复它的原因:在settings.py add LOCALE_PATHS=(“/mysite/LOCALE”),在url.py中添加url模式后,它开始显示页面未找到错误。我也遇到同样的问题。我打开