Hi all,
I'm "modernizing" my Pylons based SoL application, porting it to
Python 3, rebasing it on Pyramid 1.4.
One thing that's not clear to me is how I should recode the i18n from
the inside of a SQLAlchemy model.
Consider for example the "caption()" method of the Player class[1],
which returns a localized description of the player: that string may be
used by a template to build an HTML page, or returned to an ExtJS
application within a JSON response. In either cases, it seems reasonable
that the method in question returns the already translated string, *not*
an instance of (say) TranslationString, because otherwise the caller
would be required to know that particularity and appropriately call
.translate() on it, basically something like the following:
from pyramid.i18n import TranslationStringFactory, get_localizer
translatable_string = TranslationStringFactory('ex')
def caption():
"Description of the player, made up concatenating his names."
_ = translatable_string
nickname = u"“Lele”"
firstname = u"Emanuele"
lastname = u"Gaifax"
return _(u'<b>$lastname</b> $firstname $nickname',
mapping=dict(firstname=firstname,
lastname=lastname,
nickname=nickname))
@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
localizer = get_localizer(request)
return {'player': localizer.translate(caption())}
One way out would be using "get_current_request()" in the caption()
method, but the documentation explicitly discourages the approach.
Another way could be attaching the right localizer (or the request
itself) to the SQLAlchemy session as soon as a request handler creates
one, but this does not look very elegant neither.
Is there a better/recommended way to do this?
Thank you for any hint,
bye, lele.
[1] http://progetti.metapensiero.it/sol/browser/sol/sol/model/player.py#L128
--
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
[email protected] | -- Fortunato Depero, 1929.
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pylons-discuss?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.