Android 如何使用特定的区域设置?

Android 如何使用特定的区域设置?,android,localization,locale,Android,Localization,Locale,在Android中获取字符串是自动完成的,这取决于用户选择为设备设置哪个语言环境。但是,有时用户可能希望在不同的应用程序中使用不同的语言环境(例如,法语表示程序a,英语表示程序B) 关于使用特定区域设置,我有一些问题: 是否可以运行外部应用程序,并告诉它当前区域设置为X(或使用特定区域设置)?如果是,怎么做 是否可以运行当前应用程序,并告诉它当前区域设置为X? 如果是,怎么做 是否可以使用特定的语言环境X在当前应用程序中获取字符串(例如,使用getString)?如果是,怎么做 这是可能的,但你

在Android中获取字符串是自动完成的,这取决于用户选择为设备设置哪个语言环境。但是,有时用户可能希望在不同的应用程序中使用不同的语言环境(例如,法语表示程序a,英语表示程序B)

关于使用特定区域设置,我有一些问题:

  • 是否可以运行外部应用程序,并告诉它当前区域设置为X(或使用特定区域设置)?如果是,怎么做

  • 是否可以运行当前应用程序,并告诉它当前区域设置为X? 如果是,怎么做

  • 是否可以使用特定的语言环境X在当前应用程序中获取字符串(例如,使用getString)?如果是,怎么做


  • 这是可能的,但你反对安卓系统

    您可以使用以下内容设置每个活动的语言:

        Resources res = context.getResources();
        // Change locale settings in the app.
        DisplayMetrics dm = res.getDisplayMetrics();
        android.content.res.Configuration conf = res.getConfiguration();
        conf.locale = new Locale(language_code.toLowerCase());
        res.updateConfiguration(conf, dm);
    

    您可以找到另一种方法来更改问题2、3的配置:我使用以下方法为我的应用程序设置了特定的区域设置,而不考虑设备的区域设置(例如:我的设备的默认区域设置为日本,但我的应用程序将以美国的区域设置启动):

    扩展名为MyApp class的应用程序类,并在onCreate方法中添加以下代码段:

    public static Configuration mConfig;
    
    public void onCreate() {
       super.onCreate();
       ...
       mConfig = getResources().getConfiguration();
       mConfig.locale = new Locale(user_locale); // user_locale is your self-defined locale
       getResources().updateConfiguration(mConfig, null);
    }
    
    此外,您必须在清单文件中定义此项,主要活动部分:

    android:configChanges="locale"
    
    这样,我就可以在问题2和3中做你想做的事情。请注意,当您想要(或确实要)将区域设置更改为另一个区域设置时,必须重新启动应用程序


    希望对您有所帮助。

    此代码的作用是什么?你回答了我的哪些问题?其余的都是不可能的?除此之外,如果用户选择了这种方式,它怎么可能与android系统对抗呢?例如,我想让我的新闻应用程序用希伯来语编写,但其余的应用程序用英语编写。我看没什么问题。对不起,我很快回答了。如果当前应用程序是指您正在编写的应用程序,我会回答2。此代码更改活动的android ressource配置。有了它,用户可以为应用程序本身选择多种语言。这种方法是反对android系统的,因为android没有改变语言环境的方法,它只是你必须在每个活动上应用的技巧。所以我认为1是不可能的,对于3我真的不知道。对于1,事实上,它似乎是不可能的:,我不明白。你用代码回答了哪个问题,其他问题呢?这听起来更像是对#2的单独回答,因为我无法获得多个语言环境的字符串,只能使用当前的语言环境。