第一个可选路由段充当子路由的强制路由段

I have the following routing definition:

'admin_default' => array( 
    'type'    => 'segment', 
    'options' => array( 
        'route'    => '[/:lang]/administrator[/:module][/:action]', 
        'constraints' => array( 
            'lang' => '[a-zA-Z]{2}', 
            'module' => '[a-zA-Z0-9_-]*', 
            'action' => '[a-zA-Z0-9_-]*', 
        ), 
        'defaults' => array( 
            'module' => 'Application', 
            'controller' => 'Admin', 
            'action'     => 'index', 
            'lang' => 'ru' 
        ), 
    ), 
    'may_terminate' => true, 
    'child_routes'  => array( 
        'wildcard' => array( 
            'type' => 'wildcard', 
            'may_terminate' => true, 
            'options' => array( 
                'key_value_delimiter' => '/', 
                'param_delimiter' => '/' 
             ), 
        ), 
    ), 
), 

So, I can't get rid of segment [/:lang] in URL string

For example:

URL view helper $this->url('admin_default', array('module' => 'albums')) returns the following URL string:

/administrator/albums 

while $this->url('admin_default/wildcard', array('module' => 'albums', 'action' => 'edit', 'id' => album_id_here)) returns:

/ru/administrator/albums/edit/id/album_id_here 

How can I remove [/:lang] segment from URL string in second case?

so whats the matter with that "ru" ?

you have to extend the zend view helper URL to inject your current locale to the URL

look what i made for my current project :

    <?php

namespace PatrickCore\View\Helper;

use Doctrine\ORM\EntityManager;
use Zend\View\Helper\Url;

class I18nUrl extends Url {

    /**
     * @var String
     */
    protected $lang;
    protected $router;

    public function __construct($locale,$router) {

        $arraylanguagemapping = array(
            'en_US' => 'en',
            'fa_IR' => 'fa'
        );
        $this->lang = $arraylanguagemapping[$locale];
        $this->router = $router;
    }

    public function __invoke($name = null, array $params = array(), $options = array(), $reuseMatchedParams = false) {

        $this->setRouter($this->router);

        if (!array_key_exists('lang', $params)) {
            $params['lang'] = $this->lang;
        }


        return parent::__invoke($name,$params,$options,$reuseMatchedParams);

    }

}

?>