Maven default locale not same with OS locale

java, localization, maven

Solution

You can use this command

set MAVEN_OPTS= -Duser.language=tr

Anyway the best solution is to put these informations in the POM file and never by command line. In particular you have to deal with the configuration of Maven-Surefire-Plugin

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.9</version>
        <configuration>
            <systemPropertyVariables>
                <user.language>tr</user.language>
                <user.region>TR</user.region>
            </systemPropertyVariables>
        </configuration> 
    </plugin>

Second Question: Another question if I may, I am running a web app in my locale but it supports lets say german, english.. And your system locale is DE. Can I get your system locale from your request? Or maybe the language you prefer by your browser?

You can take these informations from the request. Here is an example in a servlet.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;

public class GetLocale extends HttpServlet{

  public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
  {
      Locale locale = request.getLocale();
      String language = locale.getLanguage();
      String country = locale.getCountry();

      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      out.println(language + ":" + country);
  }
}

Problem

When I type ``` mvn --version ``` in command prompt I see: Default Locale : en_US However my System Locale is `tr_TR` When I start a Java SE Project without maven and run `Locale.getDefault()`, `tr_TR` returns fine. But when I run a Maven project and then `Locale.getDefault()` it returns `en_US` which I do not like. How can I tell maven that my default locale is TR ?

Original source