12

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 ?

4

3 に答える 3

20

このコマンドを使用できます

set MAVEN_OPTS= -Duser.language=tr

とにかく、最善の解決策は、これらの情報を POM ファイルに入れ、決してコマンド ラインでは入れないことです。特に、 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>

2 番目の質問: よろしければもう 1 つの質問です。Web アプリを自分のロケールで実行していますが、ドイツ語、英語などをサポートしています。システム ロケールは DE です。リクエストからシステム ロケールを取得できますか? それとも、ブラウザの好みの言語でしょうか?

これらの情報は、リクエストから取得できます。これはサーブレットの例です。

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);
  }
}
于 2013-07-21T16:46:19.270 に答える