def add_localized_route(config, name, pattern, factory=None, pregenerator=None, **kw):
    orig_factory = factory
    def wrapper_factory(request):
        lang = request.matchdict['lang']
        # determine if this is a supported lang and convert it to a locale,
        # likely defaulting to your default language if the requested one is
        # not supported by your app
        request._LOCALE_ = lang
        if orig_factory:
            return orig_factory(request)
        
    orig_pregenerator = pregenerator
    def wrapper_pregenerator(request, elements, kw):
        if 'lang' not in kw:
            # not quite right but figure out how to convert request._LOCALE_ back into a language url
            kw['lang'] = request._LOCALE_
        if orig_pregenerator:
            return orig_pregenerator(elements, kw)
        return elements, kw
    
    if pattern.startswith('/'):
        pattern = pattern[1:]
    pattern = '/{lang}/' + pattern

    config.add_route(name, pattern, factory=factory, pregenerator=pregenerator, **kw)
    
def inclueme(config):
    config.add_directive('add_localized_route', add_localized_route)