【发布时间】:2020-01-02 14:18:28
【问题描述】:
在我的应用程序端点中返回带有已翻译字符串的 JSON 响应时遇到问题。
默认的金字塔渲染器是我的自定义 JSON 渲染器。一些响应的对象是TranslationStrings。我想让它们自动翻译。
现在我正在使用这个:Pyramid TranslationString not working on json renderer,但这对我来说不是一个理想的解决方案。我不想手动翻译所有回复。
对于翻译我使用TransationStringFactory:
_ = i18n.TranslationStringFactory('coma')
我已经有一些渲染器的适配器。所以我添加了一个新的 - TransationString 类:
def includeme(config):
json_renderer = JSON()
def date_adapter(obj, request):
return obj.isoformat()
def set_adapter(obj, request):
return list(obj)
def uuid_adapter(obj, request):
return str(obj)
def enum_adapter(obj, request):
return obj.value
def trans_string_adapter(obj, request):
return request.localizer.translate(obj)
json_renderer.add_adapter(TranslationString, trans_string_adapter)
json_renderer.add_adapter(datetime.date, date_adapter)
json_renderer.add_adapter(set, set_adapter)
json_renderer.add_adapter(uuid.UUID, uuid_adapter)
json_renderer.add_adapter(enum.Enum, enum_adapter)
config.add_renderer('json', json_renderer)
这是我要返回的 JSON 对象的示例:
return {
'label': _('Estimated net income'),
'value': round(income_net, self.decimal_places),
...
}
为什么我的自定义 JSON 渲染器无法为 TranslationString 对象调用适配器?
【问题讨论】:
标签: python json adapter pyramid cornice