我有一个支持diff语言的android应用程序 我对每种语言都有不同版本的字符串。
值-aa,值-bb和值-cc等
但是我的应用程序没有在diff语言中显示字符串。 我已经为多语言支持做了所有必要的事情,但有时候应用程序不会在diff中显示文本。语言。
可能是什么原因?
答案 0 :(得分:10)
看看here;如上所述:
创建区域设置目录和字符串文件
要添加对更多语言的支持,请在res /中创建其他值目录,其中包含连字符和目录名末尾的ISO国家/地区代码。例如,values-es /是包含语言代码为“es”的Locales的简单resourcess的目录。 Android在运行时根据设备的区域设置加载适当的资源。
确定要支持的语言后,请创建资源子目录和字符串资源文件。例如:
MyProject的/ RES / 值/ strings.xml中 值-ES / strings.xml中 值-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>
注意:您可以在任何资源类型上使用区域设置限定符(或任何配置限定符),例如,如果您要提供位图drawable的本地化版本。有关更多信息,请参阅本地化。
我想首先一瞥你必须改变文件夹名称。
答案 1 :(得分: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。
请记住将此添加到您的Manifest(在您要控制语言的活动中):
android:configChanges="locale"
答案 2 :(得分:0)
只需尝试本link
中提供的一些步骤即可一些参考代码
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);
它的工作。祝你好运:)
答案 3 :(得分:0)
在测试中,您必须更改设备语言以获取应用程序的特定语言,而用户如果不更改设备语言,则将获得默认语言。