Django翻译 - 翻译星期几

时间:2018-01-11 07:04:31

标签: javascript django d3.js c3.js

我正在制作多语言网站,并且在翻译星期几时遇到问题 所以:

var day = moment().startOf("week").format('dddd')

这是简短版本。

我尝试过使用ugettext_lazy(_) -

var one = _(moment().startOf("week").format('dddd'))

但它不起作用。

全:

var days = data.buckets.map(e => moment().startOf('week').day(1 + e.key).format('dddd'))

这是d3 / c3格式。

我在垂直条形图中使用x轴的日子(可能很重要:))

我需要翻译一整天的名字。

1 个答案:

答案 0 :(得分:2)

您提供的代码示例

var one = _(moment().startOf("week").format('dddd'))

是JavaScript。在JS中,将_名称用于underscore.js或lodash更常见,而不是翻译。这可能不是你想要的。

如果您想在Python中进行翻译,那么您应该将已经翻译的字符串作为变量提供给JS脚本。如果仅来自JS,那么我建议将字典/对象映射日期数字转换为字符串。制作包含以下内容的Django模板:

{% load trans %}

<script>
var dayNamesMap = {
    0: "{% trans 'Monday' %}",
    1: "{% trans 'Tuesday' %}",
    2: "{% trans 'Wednesday' %}",
    // etc.
};
</script>

或者在您的视图中执行此操作,确保已设置区域设置(请参阅How Django discovers language preference):

day_names_map = json.dumps({
    date.weekday(): date.strftime('%A')
    for i in range(7)
    for date in [datetime.date.today() + datetime.timedelta(days=i)]
})

返回

'{"3": "Thursday", "4": "Friday", "5": "Saturday", "6": "Sunday", "0": "Monday", "1": "Tuesday", "2": "Wednesday"}'

然后将day_names_map添加到您的上下文中,并在模板中执行:

<script>
var dayNamesMap = {{ day_names_map }}
</script>