我希望我的应用程序支持三种语言西班牙语,葡萄牙语
1)3个可绘制文件夹可绘制-es,可绘制-pt,可绘制。
2)3个值文件夹值-es,值-pt,值。根据语言更改String.xml值。
我有imageView来选择语言。当点击它时,菜单打开,包括选项英语、西班牙语、葡萄牙语。
我通过以下代码在选项选择上设置应用程序内部的区域设置
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.en:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
break;
case R.id.pt:
Locale locale2 = new Locale("pt");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
break;
case R.id.es:
Locale locale3 = new Locale("es");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
我已在清单中声明-android:configChanges=“locale”
它可以工作,但有一些问题。
问题:-
1) 当选择语言时,包含语言选择图像的屏幕不会更改,但其他屏幕会更改。
2)方向改变后,应用程序根据手机的语言环境恢复语言。
上面@Uday的所有代码都很完美,但只缺少一点(build.gradle中的默认配置)
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
finish();
startActivity(refresh);
}
我的不工作只是因为语言没有提到配置文件(build.gradle)
defaultConfig {
resConfigs "en", "hi", "kn"
}
此后,所有语言都开始运行
好的解决方案在这里解释得很好。但是这里还有一个。
创建自己的CustomContextWrapper
类扩展ContextWrapper
,并使用它更改整个应用程序的区域设置。下面是用法要点。
然后调用CustomContextWrapper
,其中包含已保存的区域设置标识符,例如活动生命周期方法中印地语语言的hi
attachBaseContext。这里的用法:
@Override
protected void attachBaseContext(Context newBase) {
// fetch from shared preference also save the same when applying. Default here is en = English
String language = MyPreferenceUtil.getInstance().getString("saved_locale", "en");
super.attachBaseContext(MyContextWrapper.wrap(newBase, language));
}
网页摘录:http://android.programmerguru.com/android-localization-at-runtime/
当用户从语言列表中选择应用程序时,很容易更改应用程序的语言。使用如下方法,将区域设置接受为字符串(如英语为“en”,印地语为“hi”),为应用程序配置区域设置,并刷新当前活动以反映语言的变化。在再次手动更改之前,不会更改您应用的区域设置。
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
finish();
startActivity(refresh);
}
确保导入了以下程序包:
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;
将清单添加到活动android:configChanges=“locale | orientation”
问题内容: 我正在使用FXML中描述的核心组件制作JavaFX桌面应用程序,我想为用户提供更改语言的选项。但是,一旦从FXML加载了组件,我还没有找到任何直接的方法来更改语言。 问题是,有什么标准方法可以处理JavaFX中的语言切换。 问题答案: 你可以做这样的事情。正如您在回答中一样,您可能希望将其实现为单例,或者使用DI框架在需要的地方注入单个实例: 现在,您可以执行以下操作: 而且任何时候您
如果用户选择任何语言的应用程序更改,language.but我的应用程序内容是从json检索数据api.how改变它? 在此处输入图像描述 } } 在此处输入图像描述
问题内容: 我想更改应用程序的语言,在API 26之前可以正常使用。 对于api> 25我放在了前面,但没有任何变化。 该文档不解释太多关于这一点。 问题答案: 我遇到了同样的问题:自Android 8.0+起,我的应用程序的某些部分不再更改其语言。更新应用程序和活动上下文对我有帮助。这是MainActivity函数的示例:
为应用程序创建多语言支持,可以更改应用程序中的语言设置。 至于现在,一切都适用于英语、西班牙语、法语、俄语,但不适用于印地语和汉语。 1) 我以原始语言指定语言名称,但在应用程序中指定,而不是हिन्दी 我能看到“印地语”。 \res \ values hi \数组。xml 2) 选择“印地语”后结束-实际上选择了默认值(英语) \res\values hi\strings。xml .... 在
使用一种语言比另外一种语言更流利?请为您的 Creative Cloud 应用程序选择其他语言。 选择您的操作系统筛选依据:所有系统较新的系统:Mac OS 10.7、Windows 7 或更高版本较旧的系统:Mac OS 10.6、Windows Vista 或更早版本 较新的系统:Mac OS 10.7、Windows 7 或更高版本 使用 Adobe Creative Cloud 桌面应用程
我正在尝试更改下拉式适配器视图中的语言,该视图使用旋转adpater从字符串数组资源获取数据。我根据区域设置创建了两个不同的Strings.xml(一个用于法语,一个用于英语),但当我切换到法语并单击旋转器下拉菜单时,应用程序崩溃了。 下面是默认值目录中的Strings.xml 下面是values-fr-rFR目录中的strings.xml 这是自定义适配器中返回自定义视图的代码(视图是简单的文本