- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想根据 babel 语言环境使用时区。我怎样才能实现这个目标?我的具体情况是希望以人性化、本地化的方式显示文章的日期和时间eg:
Yesterday
13:21
或者如果设置了瑞典语语言参数,它将显示
Igår
13:21
如果日期不是昨天或今天,它将打印日期和 24 小时时间。我认为除了处理时区之外我一切都成功了:
from webapp2_extras import i18n
from webapp2_extras.i18n import lazy_gettext as _
import datetime
from datetime import date, datetime, time
from babel.dates import format_date, format_datetime, format_time
from babel.numbers import format_number, format_decimal, format_percent
def datetimeformat_jinja(value, format='%H:%M / %d-%m-%Y', locale='en'):
now= datetime.now()
info = None
if datetime.date(value) == datetime.date(now):
info= _('Today')
elif (now - value).days < 2:
info= _('Yesterday')
else:
month = value.month
if month == 1:
info = str(value.day)+' '+_('Jan')
elif month == 2:
info = str(value.day)+' '+_('Feb')
elif month == 3:
info = str(value.day)+' '+_('Mar')
elif month == 4:
info = str(value.day)+' '+_('April')
elif month == 5:
info = str(value.day)+' '+_('May')
elif month == 6:
info = str(value.day)+' '+_('June')
elif month == 7:
info = str(value.day)+' '+_('July')
elif month == 8:
info = str(value.day)+' '+_('Aug')
elif month == 9:
info = str(value.day)+' '+_('Sep')
elif month == 10:
info = str(value.day)+' '+_('Oct')
elif month == 11:
info = str(value.day)+' '+_('Nov')
else:
info = str(value.day)+' '+_('Dec')
return info+'<br>'+format_time(value, 'H:mm', locale=locale)
上面的代码本地化和人性化输出:
我还可以将语言切换为例如巴西葡萄牙语:
其中“Hoje”的意思是“今天”,因此过滤器似乎可以工作。
您能否告诉我如何使我的代码也允许时区?我使用 babel 进行本地化,使用 Jinja2 进行渲染。时区应该是文章的时区还是查看者的时区?例如,巴西的巴西用户发布消息,瑞典的瑞典查看者查看该消息。那么应该使用哪个时区?
我可以尝试处理时区的方法是导入 pytz 库(如文档状态)并使用 I 时区对象。我可以通过模板代码传递时区参数,但如何从文章或语言环境中了解时区参数?在这种情况下,区域设置和时区将有所不同,因为它针对印度,区域设置为英语,时区为印度:
{{ article.modified|datetimeformat_jinja(locale='en') }}
然后我也可以像这样传递时区参数
{{ article.modified|datetimeformat_jinja(locale='en') }}
过滤器:
def datetimeformat_jinja(value, format='%H:%M / %d-%m-%Y', locale='en', tzinfo=timezone('India')):
now= datetime.now()
info = None
if datetime.date(value) == datetime.date(now):
info= _('Today')
elif (now - value).days < 2:
info= _('Yesterday')
else:
month = value.month
if month == 1:
info = str(value.day)+' '+_('Jan')
elif month == 2:
info = str(value.day)+' '+_('Feb')
elif month == 3:
info = str(value.day)+' '+_('Mar')
elif month == 4:
info = str(value.day)+' '+_('April')
elif month == 5:
info = str(value.day)+' '+_('May')
elif month == 6:
info = str(value.day)+' '+_('June')
elif month == 7:
info = str(value.day)+' '+_('July')
elif month == 8:
info = str(value.day)+' '+_('Aug')
elif month == 9:
info = str(value.day)+' '+_('Sep')
elif month == 10:
info = str(value.day)+' '+_('Oct')
elif month == 11:
info = str(value.day)+' '+_('Nov')
else:
info = str(value.day)+' '+_('Dec')
return info+'<br>'+format_time(value, 'H:mm', tzinfo=tzinfo, locale=locale)
所以至少我似乎可以本地化一个时区,但我想知道如何使其动态。
最佳答案
Should the timezone be the timezone of the article or the timezone of the viewer? For instance, a Brazilian user in Brazil posts a message and a Swedish viewer in Sweden views the message. Which timezone should then be used?
我总是将时间显示为“挂钟时间”,这意味着使用您的观看者在其办公 table 上的常规时钟上看到的时区。不过,这取决于您。
I can pass the timezone parameter via the template code but how to know the timezone parameter, from the article or from the locale? In this case the locale and the timezone will be different since it's for India and locale is English and timezone India:
丑陋的事实是,时区和地点是两种不同的动物,它们之间的联系非常松散。例如,瑞典的印度人仍然想阅读英语(印地语,...),但处于瑞典时区。
当然,您可以针对特定用途对其进行硬编码,但更明智的做法是将语言环境与时区分离,并让用户控制时区设置。
对于您的代码,您可能需要从简单的日期时间切换到 tz 感知的日期时间。
关于python - 如何在我的 jinja 过滤器中使用 babel 启用时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628102/
我想知道如何首先检测 Javascript 是否启用/禁用。在此站点上禁用 javascript 表明 stackoverflow 使用了称为标签的东西。 这是标准的做法吗?它适用于所有浏览器吗?它不
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How to enable PHP short tags ? Enable short open tags
在 VSTS (Azure DevOps) 上拥有私有(private)存储库我尝试通过将以下内容添加到 .csproj 文件来启用 SourceLink:https://github.com/dot
我创建了一个 wx.Frame(我们称之为 mainFrame)。该框架上包含一个按钮,当单击该按钮时,会创建一个新框架(我们称之为 childFrame)。 我想知道如何在创建 childFrame
当我禁用 WPF 中的控件时,比如说一个菜单项 MenuItem aMenuItem = ... aMenuItem.IsEnabled = false; MenuItem 中的文本仍然处于事件状态,
我想在我的 nginx 服务器上启用 gzip 压缩。 nginx.conf 文件在这里: http { # Enable Gzip server { location ~* \.(?
我正在使用免费的 heroku 附加 PG 备份并遵循这些 instructions .我找到了安装应用程序的命令:heroku addons:add pgbackups:auto-week。但是我想
我想知道脚本是否可以使用某种切换按钮启用/禁用页面上的所有输入元素。 我用谷歌搜索了它,但除了这个之外没有发现任何有用的东西: http://www.codetoad.com/javascript/e
在我的 php 文件中,我想使用 jQuery Datepicker。 当我的文件加载时,我创建了禁用的日期选择器。 然后,当我的 php 文件(它是一个表单)中的一个特殊字段被填充时,我想启用日期选
我有一个按钮,如下所示: RadButton lnkAdd = new RadButton(); lnkAdd.ID = "BtnAdd"; lnkAdd.CommandName = RadGrid.
public static void ToggleTaskManager(string keyValue) { RegistryKey objRegistryK
我正在 Azure 中使用事件网格订阅,该订阅在创建 Blob 时触发。然而,我们有很多文件进入这个 blob,比如说 1000 多个。 如果我发现任何文件有任何错误,我想做的是禁用事件订阅。 最佳答
我的网站上有几个使用 HTML5 contentEditable 属性的 div。目标是让用户能够开始编写日记条目,并将保存按钮从禁用更改为启用。 这是我目前拥有的 HTML: Write
我有一个范围输入,其定义如下: @Html.LabelFor(m => Model.Quality, Resources.CompressionQuality) 和一个下拉菜单: @Html.Lab
我正在尝试创建一个启用/禁用按钮的下拉菜单,并且我正在关注此 example 但它已经有 4 年历史了,而且该功能似乎无法在我的 xhtml 页面上运行。 任何帮助都将被适当 最佳答案 这是一个现场演
我正在 Azure 中使用事件网格订阅,该订阅在创建 Blob 时触发。然而,我们有很多文件进入这个 blob,比如说 1000 多个。 如果我发现任何文件有任何错误,我想做的是禁用事件订阅。 最佳答
我在这里遇到一个非常奇怪的情况:我编写了一个应用程序,除其他外,将连接的代理从打开切换到关闭,反之亦然。通过更改注册表中的值来完成此操作: public void SetUpProxy(string
我需要调整一堆 PVC 的大小。似乎最简单的方法是通过ExpandPersistentVolumes 功能。但是我无法获得配置合作。 ExpandPersistentVolumes feature g
如果我的TextField为空,则应禁用该按钮,并且该按钮的textColor和borderColor应该为灰色。但是,启用按钮后,颜色应为蓝色。 更改textColor很容易: button.Set
您好,我的问题是:我无法从另一个类启用表单的按钮。我的表单类是 public class FileSending { //Function for enabling the button
我是一名优秀的程序员,十分优秀!