Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓:有没有办法把安卓的默认语言改成新语言?_Java_Android - Fatal编程技术网

Java 安卓:有没有办法把安卓的默认语言改成新语言?

Java 安卓:有没有办法把安卓的默认语言改成新语言?,java,android,Java,Android,我想知道是否有可能将默认的android操作系统语言更改为其他语言。语言不在设置中。例如:如何以编程方式将设备语言设置为缅甸语。您可以将语言环境更改为您想要的任何语言,并且系统需要支持它 试试这个: public static void changeLocale(Locale locale) { try { Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNa

我想知道是否有可能将默认的android操作系统语言更改为其他语言。语言不在设置中。例如:如何以编程方式将设备语言设置为缅甸语。

您可以将语言环境更改为您想要的任何语言,并且系统需要支持它

试试这个:

public static void changeLocale(Locale locale) {
    try {
        Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative");

        Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative);

        Object config = am.getClass().getMethod("getConfiguration").invoke(am);
        config.getClass().getDeclaredField("locale").set(config, locale);
        config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true);

        am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config);
        Log.i(LOG_TAG, "send change locale request");
    } catch (Exception e) {
        Log.e(LOG_TAG, "change locale error:", e);
    }
}
公共静态void changeLocale(区域设置){
试一试{
Class activityManagerNative=Class.forName(“android.app.activityManagerNative”);
对象am=ActivityManagerActive.getMethod(“getDefault”).invoke(ActivityManagerActive);
对象配置=am.getClass().getMethod(“getConfiguration”).invoke(am);
config.getClass().getDeclaredField(“locale”).set(config,locale);
config.getClass().getDeclaredField(“userSetLocale”).setBoolean(config,true);
getClass().getMethod(“updateConfiguration”,android.content.res.Configuration.class).invoke(am,config);
Log.i(Log_标记,“发送更改区域设置请求”);
}捕获(例外e){
Log.e(Log_标记,“更改区域设置错误:”,e);
}
}

使用此选项以编程方式更改语言--

写语言的国家代码来代替“en_US”你想要的任何语言…比如日语--“ja_JP”阿拉伯语--“ar”或者查看国家代码的链接--

并在res/values ja中为日语或res/values ar为阿拉伯语创建文件夹

并创建string.xml文件,并在布局中添加所需的语言。。它将从values文件夹中获取默认语言,否则您需要手动获取,然后它将从外部文件夹中获取值ar等,如

它的例子是阿拉伯语的res/ar值--


تصفية حسب
2011 فرق 
بحث :

希望对您有所帮助。

您可以试试这个。来自github

你是说用代码来做这件事吗?@John Skeet:请看我最新的问题。是的,我需要以编程的方式来做。除了java之外,你是否在其他平台上开发android应用程序?@F4L:不,我只使用java来开发android应用程序…此代码是否将默认语言更改为其他新语言?是的,缅甸语言环境可能喜欢
locale=new locale(“我的”)
,但是您的设备需要支持此语言,否则系统不会更改语言。+1获取此有用信息。但是,如果设备没有内置缅甸语,我必须让它在所有设备上都工作,那该怎么办?我们不能在编程代码中添加语言支持,它需要更改固件或rom,所以我们不能这样做-:@Raman Mystry-将语言更改为设备不支持的语言有什么意义?当然,你应该想办法增加对语言/区域设置的支持。回答得好,绿巨人先生。我在projset(Diff)中使用了相同的代码:PWhere将此代码放在Local.setDefault中?在MainActivity.java中,您需要将其放入每个活动的onCreate()中。否则,它可能会被系统覆盖—例如,当您将设备切换到横向时,您的活动会使用新的(系统提供的)配置重新创建。这是一个很好的解决方案—不过,我有一个问题。如果我将区域设置更改为RTL区域设置,如“ar”,则尽管语言资源限定符(-ar)起作用(例如,我的应用程序中使用了阿拉伯语字符串),但布局方向res限定符(-ldrtl)不起作用。Android仍然从RESFOLDER而不是RESFOLDER ldrtl获取资源:(有解决方案吗?如果您设置了一个RTL区域设置,如“ar”,并希望您的-ldrtl资源文件夹也能正常工作,那么还可以调用config.setLayoutDirection(区域设置);
Locale locale = new Locale("en_US");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, null);
<?xml version="1.0" encoding="UTF-8"?>
  <resources>
    <string name="spinner_label">تصفية حسب</string>
    <string name="app_name">2011 فرق</string> 
    <string name="search">بحث :</string>
</resource>