How can I add the _locale parameter to security paths?

If all your locales are 2-character ones (en|fr|es|de|...) you can use a more generic regex like this:

- { path: '^/[a-z]{2}/privacy$', role: 'IS_AUTHENTICATED_ANONYMOUSLY' }

This way you won't have to touch your security.access_control every time you add a new locale.

For locales in the form EN_en you could use something like this btw:

- { path: '^/[a-zA-Z]{2}_[a-zA-Z]{2}/privacy$', role: 'IS_AUTHENTICATED_ANONYMOUSLY' }

Nowadays (since Symfony 4.1 or later) you can define the locales in one place and use it everywhere in your application

in config/services.yaml add

parameters:
    myAppName.locales: en|fr|es|de

in config/routes.yaml

cms:
    prefix:   /{_locale}/
    controller: App\Controller\DefaultController::index
    requirements:
        _locale: '%myAppName.locales%'

in config/packages/security.yaml

security:
    ## .... no changes here
    access_control:
        - { path: ^/(%myAppName.locales%)/cms, roles: ROLE_ADMIN }