我使用Django 1.3.我有一个干净的项目:
settings.py
import os, sys
# absolute path to the project
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
# add to PYTHONPATH
sys.path.append(os.path.join(PROJECT_ROOT, "apps"))
LANGUAGE_CODE = 'ru-ru'
USE_I18N = True
USE_L10N = True
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT,'templates'),
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'i18n_app',
)
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = patterns('',
url(r'^$', 'i18n_app.views.test'),
)
Run Code Online (Sandbox Code Playgroud)
i18n_app/views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
def test(request):
return render_to_response('i18n_app/test.html', context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
模板/ i18n_app/test.html中
{% load i18n %}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
{% trans "String for trans" %}
<br>
<br>
<br>
{% blocktrans %}And one more{% endblocktrans %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
从项目的根目录运行此命令:
D:\Django\projects\testi18n>django-admin.py makemessages -l ru
processing language ru
Run Code Online (Sandbox Code Playgroud)
然后我填写在此命令后创建的文件django.po并执行:
D:\Django\projects\testi18n>django-admin.py compilemessages --traceback
processing file django.po in D:\Django\projects\testi18n\conf\locale\ru\LC_MESSAGES
Run Code Online (Sandbox Code Playgroud)
但我所看到的只是英文字符串.我发现了太多关于此的问题,但没有人对我没有帮助.
我做错了什么?
添加到您的设置:
ugettext = lambda s: s
LANGUAGES = (
('ru', ugettext('Russian')),
('en', ugettext('English')),
)
Run Code Online (Sandbox Code Playgroud)
创建locale项目目录中指定的空文件夹
然后从您的项目目录运行:
django-admin.py makemessages -l ru
Run Code Online (Sandbox Code Playgroud)
此命令将在您的文件夹中创建一个.po文件.locale打开该文件并msgstr ""使用所需的msgid上面字段的翻译填充空字段.您可以在此处定义.html文件中标记为要翻译的字符串的翻译.
写完你的字符串的翻译后运行:
django-admin.py compilemessages
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |