python将日期的特定区域设置设置为字符串

时间:2017-04-01 05:07:40

标签: python django date localization django-templates

我正在使用python 3.4& django 1.10。

我有一些代码可以设置,然后根据用户在模板上选择的语言,通过选择的语言列表动态显示字符串。

例如,如果用户选择de,则会显示德语值,en会显示英语(美国)详细信息等。

我正在尝试将今天的日期字符串本地化为不同的语言代码。

我搜索了谷歌和搜索引擎优化,但无法弄清楚这一点,或者即使这是可能的。

有人有任何建议吗?

感谢。

这是我的代码:

from django.template.defaultfilters import date as _date
from datetime import datetime

GENERIC_DETAILS_LIVE_PREVIEW_LABELS = {
    'ar': {
        ....
        'nac_generic_descriptor': u"موظف السنة",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
    'en': {
        ....
        'nac_generic_descriptor': u"Employee of the year",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
    'it': {
        ....
        'nac_generic_descriptor': u"Impiegato dell'anno",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
    'de': {
        ....
        'nac_generic_descriptor': u"Mitarbeiter des Jahres",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
    'fr': {
        ....
        'nac_generic_descriptor': u"Employé de l'année",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
    'es': {
        ....
        'nac_generic_descriptor': u"Empleado del año",  # Employee of the year
        'nac_generic_preview_date': _date(datetime.now(), "N j, Y"),  # todays date localised
        ....
    },
}

1 个答案:

答案 0 :(得分:1)

我使用Babel让它工作。

这是我的代码:

from datetime import date, datetime, time
from babel.dates import format_date, format_datetime, format_time

GENERIC_DETAILS_LIVE_PREVIEW_LABELS = {
    'ar': {
        ....
        'nac_generic_descriptor': u"موظف السنة",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='ar'),  # todays date localised
        ....
    },
    'en': {
        ....
        'nac_generic_descriptor': u"Employee of the year",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='en_US'),  # todays date localised
        ....
    },
    'it': {
        ....
        'nac_generic_descriptor': u"Impiegato dell'anno",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='it_IT'),  # todays date localised
        ....
    },
    'de': {
        ....
        'nac_generic_descriptor': u"Mitarbeiter des Jahres",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='de_DE'),  # todays date localised
        ....
    },
    'fr': {
        ....
        'nac_generic_descriptor': u"Employé de l'année",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='fr_FR'),  # todays date localised
        ....
    },
    'es': {
        ....
        'nac_generic_descriptor': u"Empleado del año",  # Employee of the year
        'nac_generic_preview_date': format_date(datetime.now(), format='long', locale='es_ES'),  # todays date localised
        ....
    },
}

在我的模板中,日期现在显示为:

zh:2017年4月3日

fr:3 avril 2017

es:3 de abril de 2017

etcetra,etcetra。

我希望这有助于某人。