【问题标题】:Django translations - translate days of weekDjango 翻译 - 翻译星期几
【发布时间】:2018-01-11 07:04:30
【问题描述】:

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

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 轴上使用天数(也许这很重要:))

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

【问题讨论】:

    标签: javascript django d3.js c3.js


    【解决方案1】:

    您提供的代码示例

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

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

    如果您想在 Python 中进行翻译,那么您应该将已翻译的字符串作为变量提供给您的 JS 脚本。如果 values 仅来自 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多