Skip to content

KeyError when using parameter on _() gettext function #421

@ripperdoc

Description

@ripperdoc

If I use the line

_('Regarding order %(order)s')|format(order=order.id)

I get a KeyError exception:

Traceback (most recent call last):
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/Users/martin/Dev/raconteur/resource.py", line 527, in dispatch_request
    return render_template(r['template'], **r)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Jinja2-2.7.2-py2.7.egg/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Jinja2-2.7.2-py2.7.egg/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/martin/Dev/raconteur/templates/shop/order_item.html", line 3, in top-level template code
    {% import 'includes/macros.html' as MACRO %}
  File "/Users/martin/Dev/raconteur/templates/shop/_page.html", line 2, in top-level template code
    {% import 'includes/macros.html' as MACRO %}
  File "/Users/martin/Dev/raconteur/templates/_page.html", line 138, in top-level template code
    {% block mainblock %}
  File "/Users/martin/Dev/raconteur/templates/_page.html", line 148, in block "mainblock"
    {% block middle %}
  File "/Users/martin/Dev/raconteur/templates/_page.html", line 159, in block "middle"
    {% block content %}{% endblock %}
  File "/Users/martin/Dev/raconteur/templates/shop/order_item.html", line 26, in block "content"
    {% block content %}{% block inline %}
  File "/Users/martin/Dev/raconteur/templates/shop/order_item.html", line 33, in block "inline"
    {% set prefill_subject = safe(_('Regarding order %(order)s'))|format(order=order.id) %}
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Jinja2-2.7.2-py2.7.egg/jinja2/ext.py", line 132, in _gettext_alias
    return __context.call(__context.resolve('gettext'), *args, **kwargs)
  File "/Users/martin/Dev/rac2env/lib/python2.7/site-packages/Jinja2-2.7.2-py2.7.egg/jinja2/ext.py", line 141, in gettext
    return rv % variables
KeyError: u'order'

If I instead use the line:

gettext('Regarding order %(order)s', order=order.id)

I don't get this error. Why the difference? (edited for mistake in first code line)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions