Los caracteres especiales de Route mit no se analizan correctamente en Zend Framework 2

Los URI con caracteres especiales alemanes no funcionan (error 404). Ya he tenido este problema (aquí) y se ha resuelto con elmodificador Unicode y unayudante de vista personalizada, eso lo usa.

Ahora tengo el mismo problema con unSegment ruta secundaria, pero esta vez el enfoque con el identificador Unicode y un asistente de vista personalizado no está funcionando.

Alle peticiones comosld.tld/sport/sportäöüÄÖÜß/cityäöüÄÖÜß osld.tld/sport/sportäöüÄÖÜß/cityäöüÄÖÜß/page/123 están terminando con un404 error.

/module/Catalog/config/module.config.php

<?php
return array(
    ...
    'router' => array(
        'routes' => array(
            'catalog' => array(
                ...
            ),
            'city' => array(
                ...
            ),
            // works correctly, if I remove the child route
            'sport' => array(
                'type'  => 'MyNamespace\Mvc\Router\Http\UnicodeRegex',
                'options' => array(
                    'regex' => '/catalog/(?<city>[\p{L}\p{Zs}]*)/(?<sport>[\p{L}\p{Zs}]*)',
                    'defaults' => array(
                        'controller' => 'Catalog\Controller\Catalog',
                        'action'     => 'list-courses',
                    ),
                    'spec'  => '/catalog/%city%/%sport%',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'courses' => array(
                        'type'  => 'segment',
                        'options' => array(
                            'route' => '[/page/:page]',
                            'defaults' => array(
                                'controller' => 'Catalog\Controller\Catalog',
                                'action'     => 'list-courses',
                            ),
                        ),
                        'may_terminate' => true,
                    ),
                )
            ),
        ),
    ),
    ...
);

También lo he probado con unUnicodeRegex ruta infantil

        'sport' => array(
            'type'  => 'MyNamespace\Mvc\Router\Http\UnicodeRegex',
            'options' => array(
                'regex' => '/catalog/(?<city>[\p{L}\p{Zs}]*)/(?<sport>[\p{L}\p{Zs}]*)',
                'defaults' => array(
                    'controller' => 'Catalog\Controller\Catalog',
                    'action'     => 'list-courses',
                ),
                'spec'  => '/catalog/%city%/%sport%',
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'courses' => array(
                    'type'  => 'MyNamespace\Mvc\Router\Http\UnicodeRegex',
                    'options' => array(
                        'regex' => '/page/(?<page>[\p{N}]*)',
                        'defaults' => array(
                            'controller' => 'Catalog\Controller\Catalog',
                            'action'     => 'list-courses',
                        ),
                        'spec'  => '/page/%page%',
                    ),
                    'may_terminate' => true,
                ),
            )
        ),

UnicodeRegex

veraquí

UnicodeSegment

Se extiendeZend\Mvc\Router\Http\Segment y completa la entrada de TODOSpreg_match(...) llama conu:

'((\G(?P<literal>[^:{\[\]]*)(?P<token>[:{\[\]]|$)))u''(\G\{(?P<name>[^}]+)\}:?)u''((\G(?P<name>[^:/{\[\]]+)(?:{(?P<delimiters>[^}]+)})?:?))u''(\G(?P<literal>[^}]+)\})u''(\G' . $this->regex . ')u''(^' . $this->regex . '$)u'

¿Cómo hacer que funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta