Tôi muốn đặt Ngôn ngữ mặc định cho JVM của tôi thành fr_CA. Các tùy chọn có thể thực hiện điều này là gì?làm cách nào để đặt ngôn ngữ mặc định cho JVM của tôi?
Tôi biết chỉ có một lựa chọn Locale.setDefault()
Tôi muốn đặt Ngôn ngữ mặc định cho JVM của tôi thành fr_CA. Các tùy chọn có thể thực hiện điều này là gì?làm cách nào để đặt ngôn ngữ mặc định cho JVM của tôi?
Tôi biết chỉ có một lựa chọn Locale.setDefault()
Từ Oracle Reference:
Ngôn ngữ mặc định của ứng dụng được xác định theo ba cách. Đầu tiên, trừ khi bạn đã thay đổi rõ ràng mặc định, phương thức
Locale.getDefault()
trả lại ngôn ngữ đã được xác định lần đầu tiên bởi Máy ảo Java (JVM) khi nó được tải lần đầu tiên. Tức là, JVM xác định ngôn ngữ mặc định từ môi trường máy chủ. Miền địa phương của máy chủ lưu trữ được xác định bởi hệ điều hành máy chủ và tùy chọn người dùng được thiết lập trên hệ thống đó.Thứ hai, trên một số triển khai thời gian chạy Java, người dùng ứng dụng có thể ghi đè lên locale mặc định của máy chủ bằng cách cung cấp thông tin này trên dòng lệnh bằng cách thiết lập
user.language
,user.country
, vàuser.variant
thuộc tính hệ thống.Thứ ba, ứng dụng của bạn có thể gọi phương thức
Locale.setDefault(Locale)
. Phương thức setDefault (Locale aLocale) cho phép ứng dụng của bạn đặt toàn bộ tài nguyên trên toàn hệ thống (thực tế là VM). Sau khi bạn đặt ngôn ngữ mặc định với phương thức này, các cuộc gọi tiếp theo tới Locale.getDefault() sẽ trả về miền địa phương mới được đặt .
Đã thêm liên kết Javadoc. Tài liệu lớp 'Locale' khá rộng. – eckes
là bất kỳ xung đột nào trong khi tìm nạp cùng một ngôn ngữ từ ResourceBundle.Tôi đã cố gắng tìm gói nhưng tôi đã có được những gì tôi đã có lúc đầu tiên –
Bạn có thể đặt nó trên dòng lệnh thông qua các thông số JVM:
java -Duser.country=CA -Duser.language=fr ... com.x.Main
Để biết thêm thông tin nhìn vào Internationalization: Understanding Locale in the Java Platform - Using Locale
Bạn cũng có thể đặt nó qua biến môi trường _JAVA_OPTIONS. –
Qua [Ngôn ngữ mặc định Java 7] (http://stackoverflow.com/questions/7107972/java-7-default-locale): 'setx _JAVA_OPTIONS -Dsun.locale.formatasdefault = true/m' – Vadzim
Bạn có thể sử dụng JVM args
java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN
Trong các câu trả lời ở đây, đến nay, chúng tôi tìm thấy hai cách để thay đổi JRE thiết lập ngôn ngữ:
Programatically, sử dụng Locale.setDefault() (trong đó, trong trường hợp của tôi, là giải pháp, vì tôi không muốn yêu cầu bất kỳ hành động của người sử dụng):
Locale.setDefault(new Locale("pt", "BR"));
Via đối số cho JVM:
java -jar anApp.jar -Duser.language=pt-BR
Nhưng, cũng giống như tham chiếu, tôi muốn lưu ý rằng, trên Windows, có một cách khác để thay đổi miền địa phương được JRE sử dụng, như được ghi lại here: thay đổi ngôn ngữ toàn hệ thống.
Lưu ý: Bạn phải đăng nhập bằng tài khoản có đặc quyền quản trị.
Bắt đầu> Pa-nen điều khiển.
Windows 7 và Vista: Nhấp vào Đồng hồ, Ngôn ngữ và khu vực>Khu vực và ngôn ngữ.
Windows XP: Nhấp đúp vào Tùy chọn ngôn ngữ và khu vực biểu tượng.
Các Tùy chọn ngôn ngữ và khu vực xuất hiện.
Windows 7: Nhấp vào tab Hành chính.
Windows XP và Vista: Nhấp vào tab Nâng cao.
(Nếu không có tab Advanced, sau đó bạn chưa đăng nhập với đặc quyền quản trị.)
Dưới ngôn ngữ cho chương trình phi Unicode phần, chọn ngôn ngữ mong muốn từ trình đơn thả xuống .
Bấm OK.
Hệ thống hiển thị hộp thoại hỏi có sử dụng các tệp hiện có hoặc để cài đặt từ đĩa CD hệ điều hành hay không. Đảm bảo rằng bạn đã có sẵn đĩa CD.
Làm theo hướng dẫn được hướng dẫn để cài đặt tệp.
Khởi động lại máy tính sau khi quá trình cài đặt hoàn tất.
Chắc chắn trên Linux JRE cũng sử dụng các thiết lập hệ thống để xác định miền địa phương để sử dụng, nhưng các hướng dẫn để thiết lập các thay đổi ngôn ngữ trên toàn hệ thống từ distro để distro.
trong khi thông tin này có thể hữu ích, tôi muốn nhấn mạnh rằng các bước này là khác nhau của mỗi hệ điều hành và cho mỗi hệ điều hành, bạn có thể thiết lập một ngôn ngữ được sử dụng hệ thống rộng. Java được thiết kế để sử dụng ngôn ngữ đó làm ngôn ngữ mặc định bất cứ khi nào chúng tôi không rõ ràng đặt ngôn ngữ mặc định. Vì vậy, thông tin trong câu trả lời này là về cách đặt ngôn ngữ mặc định trong cửa sổ chứ không phải trong java. – MozenRath
Bạn có thể thực thi đối số VM cho một tập tin JAR
với đoạn mã sau:
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());
}
}
}
Nó được sử dụng như sau:
JVMArgumentEnforcer jvmArgumentEnforcer = new JVMArgumentEnforcer("-Duser.language=pt-BR"); // For example
jvmArgumentEnforcer.forceArgument();
Cẩn thận với [Java 7 thay đổi miền địa phương mặc định] (http://stackoverflow.com/questions/7107972/java-7-default-locale). – Vadzim
Dup: http://stackoverflow.com/questions/64038/setting-java-locale-settings – Vadzim