我试图按照指南进行操作,但还不够清楚.
我把它添加到我的urls.py中
urlpatterns = patterns('',
(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
)
Run Code Online (Sandbox Code Playgroud)使用以下命令生成lang文件:
django-admin.py makemessages -d djangojs -l fr
Run Code Online (Sandbox Code Playgroud)root_folder/locale/fr/LC_MESSAGES现在包含django.po与djangojs.po和alert(gettext('this is to be translated'));在我的js文件之一是在回升djangojs.po.
我跑了django-admin.py compilemessages并重新启动了服务器.
将此添加到我的base.html:
<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' 'locale' %}" >< /script >
Run Code Online (Sandbox Code Playgroud)请注意,我添加了"locale"以避免在动态加载翻译时未传递包名称的例外.
/jsi18n/locale/从我的浏览器访问,我得到的是Django翻译功能:
/* gettext library */
var catalog = new Array();
function pluralidx(count) { return (count == 1) ? 0 : 1; }
function gettext(msgid) {
....
Run Code Online (Sandbox Code Playgroud)为什么'这是要被翻译'没有显示,在哪个基础上它将显示一个特定的语言而不传递它的URL?
settings.py
INSTALLED_APPS = (
...
'myprojectname',
...
)
STATIC_ROOT = '/var/www/a_valid_path/'
LOCALE_PATHS = (
os.path.join(BASE_DIR, "locale"),
)
Run Code Online (Sandbox Code Playgroud)
urls.py
js_info_dict = {
'domain': 'djangojs',
'packages': ('myprojectname',),
}
urlpatterns = patterns('',
...
url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
)
Run Code Online (Sandbox Code Playgroud)
我的项目结构如下:
|- projectname
|--- app1
|--- app2
|--- manage.py
|- virtualenv
|- static
|--- js
|--- css
Run Code Online (Sandbox Code Playgroud)
我还有locale我项目的根文件夹中的文件夹,其manage.py位置.
只需运行:
./manage.py -l ro -d djangojs
Run Code Online (Sandbox Code Playgroud)
它不起作用.没有.po生成任何文件.但是,服务器端转换工作(视图+模板).我遵循了所有的建议,但仍然没有.甚至试图自己创建djangojs.po文件,看看Django是否删除了它,或者用它做了什么 - 不行.
没有错误产生,只是processing locale ro显示(在很短的时间内 - 如果你问我那么短),就是这样.有帮助吗? …