Named заменяет в строках на Мако - PullRequest
0 голосов
/ 06 октября 2010

При создании шаблона в Mako мне нужно написать что-то вроде: ${_('Hello, %(fname)s %(lname)s') % {'fname':'John','lname':'Doe'}}

Я получаю SyntaxException: (SyntaxError) неожиданный EOF при синтаксическом анализе при записи этого.Есть ли какой-нибудь способ сделать то же самое?

${_('Hello, %s %s') % ('John', 'Doe')} работает, но не позволяет при необходимости изменить порядок замен при смене языка.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Использование {} внутри Мако ${} сложно; по-видимому, Мако перестает анализировать выражение после нахождения первого }. Возможный обходной путь - использовать dict() вместо {}:

${_('Hello, %(fname)s %(lname)s') % dict(fname='John', lname='Doe')}
0 голосов
/ 06 октября 2010

Попробуйте новое форматирование строки Python:

>>> "{foo} {bar}".format(foo="foo", bar="bar")
'foo bar'
>>> "{foo} {bar}".format(**{"foo": "Hello", "bar": "World!"})
'Hello World!'

Это выглядит лучше и перспективнее.

...