If you want to change the default locale of backoffice/cockpit login page, without using "language selector" (maybe you don't want to display this selector. So let's suppose that this selector desn't exist):

There is a better solution, that doesn't require java code.
Simply all you have to do is override login.zul, buy adding a text input. And note that :
- Input name must be : "locale"
- Input type must be : "text" (type="hidden" didn't work for me. You can hide it using CSS)
example of login.zul :
<h:form action="j_spring_security_check" method="post">
<textbox type="text" placeholder="Email/Username" class="email-input" name="j_username"/>
<textbox type="password" placeholder="Password" class="email-password" name="j_password"/>
<textbox type="text" class="hidden-locale-input" name="locale" value="en"/>
<button type="button" class="login" label="Login" />
</h:form>
All these inputs will be passed to BackofficeAuthenticationSuccessHandler.java as a map.
In BackofficeAuthenticationSuccessHandler.java, hybris will use this map and search a parameter named "locale". We already provided this parameter, with his value (en) by creating the input "locale" in login.zul
This will work without overriding the native implementation of BackofficeAuthenticationSuccessHandler.java.