1

在 Android 中获取字符串是根据用户选择为设备设置的区域设置自动完成的。但是,有时用户可能希望在应用程序中使用不同的区域设置(例如,程序 A 使用法语,程序 B 使用英语)。

我对使用特定语言环境有一些疑问:

  1. 是否可以运行外部应用程序,并告诉它当前语言环境是 X(或使用特定语言环境)?如果是这样,怎么做?

  2. 是否可以运行当前应用程序并告诉它当前语言环境是 X?如果是这样,如何?

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

4

2 回答 2

0

对于问题 2、3:我使用以下方式为我的应用程序设置了特定的语言环境,尽管设备的语言环境(例如:我的设备的默认语言环境设置为日本,但我的应用程序将在语言环境中启动美国):

扩展 Application 类,命名为 MyApp 类,并在 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);
}

此外,您必须在 Manifest 文件的主要活动部分中定义它:

android:configChanges="locale"

通过这种方式,我可以在问题 2 和 3 中执行您想要的操作。请注意,当您想要(或者您确实想要)将语言环境更改为另一个语言环境时,您必须重新启动您的应用程序。

希望有所帮助。

于 2014-06-25T09:56:34.830 回答
0

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

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

    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);

您可以在此处找到另一种更改配置的方法

于 2013-01-23T18:41:54.520 回答