Quiero establecer la Configuración regional predeterminada para mi JVM en fr_CA. ¿Cuáles son las posibles opciones para hacer esto?¿cómo configuro la configuración regional predeterminada para mi JVM?
No conozco una sola opción Locale.setDefault()
Quiero establecer la Configuración regional predeterminada para mi JVM en fr_CA. ¿Cuáles son las posibles opciones para hacer esto?¿cómo configuro la configuración regional predeterminada para mi JVM?
No conozco una sola opción Locale.setDefault()
Desde Oracle Reference:
La configuración regional predeterminada de la aplicación se determina de tres maneras. En primer lugar, a menos que haya cambiado explícitamente el valor predeterminado, el método
Locale.getDefault()
devuelve la configuración regional que inicialmente se determinó mediante la Máquina virtual Java (JVM) cuando se cargó por primera vez. Es decir, la JVM determina la configuración regional predeterminada del entorno de host. La configuración regional del entorno host está determinada por el sistema operativo del host y las preferencias del usuario establecidas en ese sistema.En segundo lugar, en algunas implementaciones Java de tiempo de ejecución, el usuario de la aplicación puede anular regional predeterminada del huésped, proporcionando esta información en la línea de comandos mediante el establecimiento de los
user.language
,user.country
, yuser.variant
propiedades del sistema.En tercer lugar, su aplicación puede llamar al método
Locale.setDefault(Locale)
. El método setDefault (Locale aLocale) permite que su aplicación establezca un recurso en todo el sistema (en realidad VM-wide). Después de establecer la configuración regional predeterminada con este método , las llamadas subsiguientes a Locale.getDefault() devolverán la nueva configuración regional .
Agregados enlaces de Javadoc. La documentación de la clase 'Locale' es bastante extensa. – eckes
es su conflicto al obtener la misma configuración regional de ResourceBundle.Traté de buscar el paquete, pero obtuve lo que tenía inicialmente, –
Se puede establecer en la línea de comandos a través de parámetros de JVM:
java -Duser.country=CA -Duser.language=fr ... com.x.Main
Para más información vistazo a Internationalization: Understanding Locale in the Java Platform - Using Locale
También puede configurarlo a través de la variable de entorno _JAVA_OPTIONS. –
A través de [configuración regional predeterminada de Java 7] (http://stackoverflow.com/questions/7107972/java-7-default-locale): 'setx _JAVA_OPTIONS -Dsun.locale.formatasdefault = true/m' – Vadzim
Puede utilizar argumentos de JVM
java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN
En las respuestas aquí, hasta ahora, encontramos dos formas de cambiar la configuración local JRE:
Programatically, utilizando Locale.setDefault() (que, en mi caso, era la solución, ya que no quería requiere ninguna acción del usuario):
Locale.setDefault(new Locale("pt", "BR"));
Via argumentos para la JVM:
java -jar anApp.jar -Duser.language=pt-BR
Pero, apenas como referencia, quiero señalar que, en Windows, existe una forma más de cambiar la configuración regional que utiliza el JRE, tal como se documenta here: cambiar el idioma de todo el sistema.
Nota: Debe haber iniciado sesión con una cuenta que tenga privilegios administrativos.
Haga clic en Inicio> Panel de control.
Windows 7 y Vista: haga clic en Reloj, idioma y región>Región e idioma.
Windows XP: haga doble clic en el icono Regional y Opciones de idioma .
Aparece el cuadro de diálogo Regional and Language Options.
Windows 7: haga clic en la ficha Administrativa.
Windows XP y Vista: haga clic en la ficha Advanced.
(Si no hay ninguna ficha Avanzada, entonces no se ha identificado con privilegios administrativos.)
Bajo la Lengua para programas no Unicode sección, seleccione el idioma deseado en el menú desplegable .
Haga clic en Aceptar.
El sistema muestra un cuadro de diálogo que le pregunta si desea usar los archivos existentes o instalar desde el CD del sistema operativo. Asegúrese de tener listo para CD.
Siga las instrucciones guiadas para instalar los archivos.
Reinicie la computadora después de que se complete la instalación.
Ciertamente en Linux JRE también utiliza la configuración del sistema para determinar qué localización para su empleo, pero las instrucciones para configurar el cambio de idioma en todo el sistema de distribución a distro.
, mientras que esta información puede ser útil, me gustaría resaltar que estos pasos son diferentes de cada sistema operativo y para cada sistema operativo, es posible que pueda configurar una configuración regional que se utiliza sistema amplio. Java está diseñado para usar esa configuración regional como configuración regional predeterminada siempre que no establezcamos explícitamente una configuración regional predeterminada. Entonces la información en esta respuesta se trata de cómo establecer la configuración regional predeterminada en Windows y no en Java. – MozenRath
Puede valer argumentos de VM para un archivo JAR
con el siguiente código:
import java.io.File;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
public class JVMArgumentEnforcer
{
private String argument;
public JVMArgumentEnforcer(String argument)
{
this.argument = argument;
}
public static long getTotalPhysicalMemory()
{
com.sun.management.OperatingSystemMXBean bean =
(com.sun.management.OperatingSystemMXBean)
java.lang.management.ManagementFactory.getOperatingSystemMXBean();
return bean.getTotalPhysicalMemorySize();
}
public static boolean isUsing64BitJavaInstallation()
{
String bitVersion = System.getProperty("sun.arch.data.model");
return bitVersion.equals("64");
}
private boolean hasTargetArgument()
{
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> inputArguments = runtimeMXBean.getInputArguments();
return inputArguments.contains(argument);
}
public void forceArgument() throws Exception
{
if (!hasTargetArgument())
{
// This won't work from IDEs
if (JARUtilities.isRunningFromJARFile())
{
// Supply the desired argument
restartApplication();
} else
{
throw new IllegalStateException("Please supply the VM argument with your IDE: " + argument);
}
}
}
private void restartApplication() throws Exception
{
String javaBinary = getJavaBinaryPath();
ArrayList<String> command = new ArrayList<>();
command.add(javaBinary);
command.add("-jar");
command.add(argument);
String currentJARFilePath = JARUtilities.getCurrentJARFilePath();
command.add(currentJARFilePath);
ProcessBuilder processBuilder = new ProcessBuilder(command);
processBuilder.start();
// Kill the current process
System.exit(0);
}
private String getJavaBinaryPath()
{
return System.getProperty("java.home")
+ File.separator + "bin"
+ File.separator + "java";
}
public static class JARUtilities
{
static boolean isRunningFromJARFile() throws URISyntaxException
{
File currentJarFile = getCurrentJARFile();
return currentJarFile.getName().endsWith(".jar");
}
static String getCurrentJARFilePath() throws URISyntaxException
{
File currentJarFile = getCurrentJARFile();
return currentJarFile.getPath();
}
private static File getCurrentJARFile() throws URISyntaxException
{
return new File(JVMArgumentEnforcer.class.getProtectionDomain().getCodeSource().getLocation().toURI());
}
}
}
Se utiliza de la siguiente manera:
JVMArgumentEnforcer jvmArgumentEnforcer = new JVMArgumentEnforcer("-Duser.language=pt-BR"); // For example
jvmArgumentEnforcer.forceArgument();
Cuidado con [Java 7 cambios de configuración regional predeterminada] (http://stackoverflow.com/questions/7107972/java-7-default-locale). – Vadzim
Dup: http://stackoverflow.com/questions/64038/setting-java-locale-settings – Vadzim