So i have this in Controller:
/**
 * @Route("/", name="home", defaults={"_locale": "%locale%"})
 * @Route("/{_locale}", name="home_locale", defaults={"_locale": "%locale%"}, requirements={"_locale": "\w{2,3}"})
 *
 * @param Request $request
 *
 * @return Response
 */
public function indexAction(Request $request)
{
    return $this->render('@Base/Default/index.html.twig');
}
/**
 * @Route("/{_locale}/welcome", name="welcome", defaults={"_locale": "%locale%"}, requirements={"_locale": "\w{2,3}"})
 *
 * @param Request $request
 *
 * @return RedirectResponse|Response
 */
public function loginAction(Request $request)
{
    $loggedUser = $this->getUser();
    $locale = $request->getLocale();
    if ($loggedUser instanceof User) {
        return $this->redirect($this->generateUrl('home', ['_locale' => $locale]));
    }
    $error = $this->get('security.authentication_utils')->getLastAuthenticationError();
    $loginForm = $this->createForm(LoginType::class, null, ['action' => $this->generateUrl('welcome', ['_locale' => $locale]), 'method' => 'POST']);
    $user = new User();
    $registrationForm = $this->createForm(UserRegistrationType::class, $user, ['action' => $this->generateUrl('register'), 'method' => 'POST']);
    return $this->render(
        '@Base/Default/login.html.twig',
        [
            'error' => $error,
            'loginForm' => $loginForm->createView(),
            'registerForm' => $registrationForm->createView()
        ]
    );
}
and this in security:
encoders:
    BaseBundle\Entity\User: bcrypt
# http://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
    database_users:
        entity: { class: BaseBundle:User, property: username }
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        anonymous: ~
        guard:
            authenticators:
                - base.security.login_form_authenticator
        logout:
            path: /logout
access_control:
    - { path: ^/%locales%/welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/%locales%/register$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/*, roles: ROLE_USER }
in parameters the locales are like this:
locale: ro
locales: ro|en
in guard the functions to redirect are:
 /**
 * @return mixed
 */
protected function getLoginUrl()
{
    /** @var RequestContext $locale */
    $requestContext = $this->router->getContext();
    $locale = $requestContext->getParameter('_locale');
    return $this->router->generate('welcome', ['_locale' => $locale]);
}
/**
 * @return mixed
 */
protected function getDefaultSuccessRedirectUrl()
{
    /** @var RequestContext $locale */
    $requestContext = $this->router->getContext();
    $locale = $requestContext->getParameter('_locale');
    return $this->router->generate('home', ['_locale' => $locale]);
}
The scenario is next, on the left will be path and the right what is happening:
/     ->    i am redirected to /ro/welcome  witch is correct
/en   ->    i am redirected to /en/welcome witch is also correct
/ro/welcome -> is working
/en/welcome -> is working
/ro   ->   i am NOT redirected to /ro/welcome witch is NOT good
After I login instead of keeping locale ro I am redirected to en, also if I try to access /en/welcome logged I am redirected to /?_locale=en (which is showing ro translation, so not working) instead of /en
Does anyone have any idea why this is happening?
                        
I found the problem, in security instead of
path: ^/%locales%/welcomethe corect path ispath: ^/(%locales%)/welcome