topics i18n docs djangoproject java localization globalization

java - https docs djangoproject com en 2.1 topics i18n



¿Cómo configuro la configuración regional predeterminada para mi JVM? (5)

De la referencia de Oracle :

La configuración regional predeterminada de su aplicación se determina de tres maneras. Primero, a menos que haya cambiado explícitamente el valor predeterminado, el método Locale.getDefault() devuelve la configuración regional que inicialmente fue determinada por 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 del host está determinada por el sistema operativo del host y las preferencias del usuario establecidas en ese sistema.

En segundo lugar, en algunas implementaciones de tiempo de ejecución de Java, el usuario de la aplicación puede anular la configuración regional predeterminada del host al proporcionar esta información en la línea de comando estableciendo las propiedades de sistema user.language , user.country y user.variant .

En tercer lugar, su aplicación puede llamar al Locale.setDefault(Locale) . El método setDefault (Locale aLocale) le permite a su aplicación establecer un recurso de todo el sistema (en realidad, VM-wide) . Después de establecer la configuración regional predeterminada con este método, las llamadas posteriores a Locale.getDefault () devolverán la configuración regional recién establecida.

Quiero establecer la Configuración regional predeterminada para mi JVM en fr_CA. ¿Cuáles son las posibles opciones para hacer esto?

Sé de una sola opción Locale.setDefault()


En las respuestas aquí, hasta ahora, encontramos dos formas de cambiar la configuración regional de JRE:

  • Programaticamente, usando Locale.setDefault() (que, en mi caso, era la solución, ya que no quería requerir ninguna acción del usuario):

    Locale.setDefault(new Locale("pt", "BR"));

  • A través de argumentos a la JVM:

    java -jar anApp.jar -Duser.language=pt-BR

Pero, solo como referencia, quiero señalar que, en Windows, hay una forma más de cambiar la configuración regional utilizada por el JRE, como se documenta here : cambiar el idioma de todo el sistema.

Nota : debe haber iniciado sesión con una cuenta que tenga privilegios administrativos.

  1. Haga clic en Inicio> Panel de control .

  2. Windows 7 y Vista: haga clic en Reloj, Idioma y Región> Región e idioma .

    Windows XP: haga doble clic en el icono de Opciones regionales y de idioma .

    Aparecerá el cuadro de diálogo Opciones regionales y de idioma .

  3. Windows 7: haga clic en la pestaña Administrativo .

    Windows XP y Vista: haga clic en la pestaña Avanzado .

    (Si no hay una pestaña Avanzado, entonces no ha iniciado sesión con privilegios administrativos).

  4. En la sección Idioma para programas que no sean Unicode , seleccione el idioma deseado en el menú desplegable.

  5. 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 el CD listo.

  6. Siga las instrucciones guiadas para instalar los archivos.

  7. Reinicie la computadora después de que se complete la instalación.

Ciertamente, en Linux, el JRE también usa la configuración del sistema para determinar qué configuración regional usar, pero las instrucciones para establecer el cambio de idioma en todo el sistema van desde la distribución a la distribución.


Puede aplicar argumentos 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 usa de la siguiente manera:

JVMArgumentEnforcer jvmArgumentEnforcer = new JVMArgumentEnforcer("-Duser.language=pt-BR"); // For example jvmArgumentEnforcer.forceArgument();



Puede usar args JVM

java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN