On Nov 13, 2011, at 2:16 AM, Bruno Rocha wrote:
> I just tested this:
>
> routes_in = (
> ('/(?P<app>artigos|articulos|artiklid)', '/myapp/default/articles'),
> )
> routes_out = (
> ('/myapp/default/articles', '/(?P<app>artigos|articulos|artiklid)'),
> )
>
>
> it works, but I can't receive args and vars, I am missing some wildcard to
> match args/vars
>
Are you sure that routes_out works? It seems unlikely. Something like this will
get you args; vars will come along for free.
routes_in = (
(r'/(artigos|articulos|artiklid)\w(?P<args>.*)',
r'/myapp/default/articles\g<args>'),
)
routes_out is tougher; you really want an embedded function in the regex
replacement string, but I don't know whether Python regexes support that.
Here's an alternative, though. I think it might work. In your controller, do
something like this:
def articles():
whatever
artigos = articles
articulos = articles
artiklid = articles
...and for outgoing URLs, just call URL() with the right string for the current
language.
If that works, then generalize it with a better data structure. For example:
function_translate = {
'articles' : ('artigos', articulos', 'artiklid'),
...
}
...where the translation tuple is in a known order (make yourself a set of
index constants to access it). Then write functions for making the assignments
in the controller, and for providing the translated string for your URL()
calls. You might even be able to do it with T(), but I think I'd prefer to have
this kind of thing more directly under my control.