2

我有一个支持差异语言的 android 应用程序。
对于每种语言,我都有不同版本的字符串。

values-aa、values-bb 和 values-cc 等。

但是我的应用程序没有以不同的语言显示字符串。我已经为多语言支持做了所有必要的事情,但有时应用程序不会在差异中显示文本。语言。

可能是什么原因?

4

4 回答 4

14

看看这里;就像声明的那样:

创建语言环境目录和字符串文件

要添加对更多语言的支持,请在 res/ 中创建附加值目录,其中包括连字符和目录名称末尾的 ISO 国家代码。例如,values-es/ 是包含语言代码“es”的语言环境的简单资源的目录。Android 在运行时根据设备的区域设置加载适当的资源。

一旦你决定了你将支持的语言,创建资源子目录和字符串资源文件。例如:

MyProject/res/values/strings.xml values-es/strings.xml values-fr/strings.xml

将每个语言环境的字符串值添加到相应的文件中。

在运行时,Android 系统根据当前为用户设备设置的语言环境使用适当的字符串资源集。

例如,以下是针对不同语言的一些不同的字符串资源文件。

英语(默认语言环境),/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

西班牙语,/values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>

法语,/values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

注意:您可以在任何资源类型上使用语言环境限定符(或任何配置限定符),例如,如果您想提供位图可绘制对象的本地化版本。有关详细信息,请参阅本地化。

我想乍一看你必须更改文件夹名称。

于 2013-07-09T08:15:07.623 回答
0

您必须处理和更改默认电话区域设置。假设您选择了葡萄牙语(tag = "pt_PT"):

Locale locale = new Locale("pt_PT");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

现在当你这样做时:getString(R.string.YOUR_STRING_NAME)它将返回位于 values-pt 的字符串。

请记住将此添加到您的清单中(在您要控制语言的活动中):

android:configChanges="locale"
于 2013-07-09T08:08:58.927 回答
0

在测试中,您必须更改设备语言以获取应用程序的特定语言,如果用户不更改设备语言,他将获得默认语言。

于 2019-06-26T18:28:15.207 回答
0

只需尝试此链接中提供的一些步骤就很容易

一些代码供参考

String languageToLoad = "hi"; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());
this.setContentView(R.layout.activity_main);

这是工作。好运 :)

于 2016-06-21T05:59:14.323 回答