有以下css部分:
。介绍:之前{ 内容:'谁将以优雅的方式翻译我?'; }
可能没有简单的方法来处理i18n for css文件,有两种可能的选择:
任何新的可能解决方案将不胜感激,谢谢。
答案 0 :(得分:4)
我会提供需要通过Django进行翻译的css文件,并按语言缓存它以减轻性能损失。
urls.py
url(r'^static/css/translated.css$', TemplateView.as_view(template_name='translated.css')),
translated.css
{% load cache %}
{% cache 60*60*24 translated_css LANGUAGE_CODE %}
{# write css here, translate as a normal template #}
.introduction:before { content:
{% trans 'Who is going to translate me in a graceful way?' %}
; }
{% endcache %}
答案 1 :(得分:3)
我认为这是不可能的。只有当css是模板(如html模板)时才能翻译它。但这是一个糟糕的解决方案......效率
但是,如果你的身体中有一种类语言,你可以这样:
body.language_en .introduction:before { content: 'Who is going to translate me in a graceful way?'; }
body.language_es .introduction:before { content: 'El traductor de google es terrible :-)'; }
在你的base.html中有这样的东西:
....
<body class="language_{{ LANGUAGE_CODE }}">
....
答案 2 :(得分:0)
对于那些希望避免以不同方式提供CSS文件或复制CSS行或文件的人来说,另一种可能的解决方案是使用django javascript translation support。
保留原始CSS作为备份。然后使用javascript覆盖内容,方法是将翻译的样式附加到页面的头部:
var trans_str = gettext("some content");
$('<style>.classWithContent:before{content:"' + trans_str + '" !important}' +
'</style>').appendTo('head');
这是使用JQuery的版本,但您可以轻松地在纯JavaScript中重写它。添加尽可能多的翻译字符串并覆盖任意数量的样式。
通过这种方式,您可以使用已经存在的django internationalization并使用最少的代码翻译CSS字符串。这种解决方案显然不适用于大量使用CSS内容。