Я хочу установить локаль по умолчанию для моей JVM в fr_CA. Каковы возможные варианты для этого?Как установить языковой стандарт по умолчанию для моей JVM?
Я знаю только один вариант Locale.setDefault()
Я хочу установить локаль по умолчанию для моей JVM в fr_CA. Каковы возможные варианты для этого?Как установить языковой стандарт по умолчанию для моей JVM?
Я знаю только один вариант Locale.setDefault()
От Oracle Reference:
Стандарт по умолчанию для вашего приложения определяется тремя способами. Прежде всего, если вы явно не изменили значение по умолчанию, метод
Locale.getDefault()
возвращает исходную локаль, которая была первоначально определена виртуальной машиной Java (JVM) при ее первой загрузке. То есть, JVM определяет локаль по умолчанию из среды хоста. Хост локаль среды определяется операционной системой хоста и пользовательскими настройками, установленными в этой системе.Во-вторых, в некоторых реализациях среды исполнения Java, пользователь приложения может переопределять локаль по умолчанию хоста, предоставляя информацию о командной строки, установив свойства системы
user.language
,user.country
иuser.variant
.В-третьих, ваше приложение может вызвать метод
Locale.setDefault(Locale)
. Метод setDefault (Locale aLocale) позволяет вашему приложению установить общесистемную систему (фактически VM-wide) ресурс. После того, как вы установили локаль по умолчанию с помощью этого метода , последующие вызовы Locale.getDefault() вернут новый набор настроек .
Добавлены ссылки Javadoc. Документация класса «Локаль» довольно обширна. – eckes
- их любой конфликт при получении одного и того же языка из ResourceBundle.Я попытался получить пакет, но я получил то, что у меня было первоначально –
Вы можете установить его в командной строке с помощью параметров виртуальной машины Java:
java -Duser.country=CA -Duser.language=fr ... com.x.Main
Для получения дополнительной информации смотрите на Internationalization: Understanding Locale in the Java Platform - Using Locale
Вы также можете установить его через переменную окружения _JAVA_OPTIONS. –
Через [Java 7 default locale] (http://stackoverflow.com/questions/7107972/java-7-default-locale): 'setx _JAVA_OPTIONS -Dsun.locale.formatasdefault = true/m' – Vadzim
Вы можете использовать JVM арг
java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN
В ответах здесь, до сих пор, мы находим два пути изменения языковой стандарт JRE:
Programatically, используя Locale.setDefault() (который, в моем случае, было решение, так как я не хотел требовать каких-либо действий пользователя):
Locale.setDefault(new Locale("pt", "BR"));
через аргументы в JVM:
java -jar anApp.jar -Duser.language=pt-BR
Но, так же, как ссылки, я хочу отметить, что в Windows, есть еще один способ изменить локаль, используемую JRE, как описано here: изменение общесистемного языка.
Примечание: Вы должны войти в систему с учетной записью с правами администратора.
Нажмите Пуск> Панель управления.
Windows 7 и Vista: щелкните Часы, язык и регион>Регион и язык.
Windows XP: Дважды щелкните по Региональные и языковые параметры icon.
Региональные и языковые параметры Появляется диалоговое окно.
Windows 7: Нажмите на Административный адрес.
Windows XP и Vista: перейдите на вкладку Advanced.
(Если нет вкладки Advanced, вы не вошли в систему с правами администратора.)
Под Язык программ, не поддерживающих Unicode раздела, выберите нужный язык из выпадающего меню ,
Нажмите ОК.
Система отображает диалоговое окно с вопросом, следует ли использовать существующие файлы или установить с компакт-диска с операционной системы. Убедитесь, что вы подготовили компакт-диск .
Для установки файлов следуйте инструкциям руководства.
Перезагрузите компьютер после завершения установки.
Конечно на Линуксе JRE также использует системные настройки для определения локаль использовать, но инструкции для установки общесистемного изменения языка от дистрибутива к дистрибутиву.
, хотя эта информация может быть полезна, я хотел бы подчеркнуть, что эти шаги отличаются от каждой ОС и для каждой ОС, вы можете настроить локаль, которая используется системой широкий. Java предназначен для использования этой локали в качестве локали по умолчанию всякий раз, когда мы явно не устанавливаем локаль по умолчанию. Таким образом, информация в этом ответе о том, как установить стандартную локаль в Windows, а не в java. – MozenRath
Вы можете применять параметры виртуальной машины для JAR
файла со следующим кодом:
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());
}
}
}
Он используется следующим образом:
JVMArgumentEnforcer jvmArgumentEnforcer = new JVMArgumentEnforcer("-Duser.language=pt-BR"); // For example
jvmArgumentEnforcer.forceArgument();
Остерегайтесь [Java 7 изменения локали по умолчанию] (HTTP://stackoverflow.com/questions/7107972/java-7-default-locale). – Vadzim
Dup: http://stackoverflow.com/questions/64038/setting-java-locale-settings – Vadzim