这其实很简单。您只需要为语言标识符的字符串创建自定义资源目录,Android将自动选择正确的资源目录。
创建区域设置目录和资源文件添加支持更多的语言环境 ,创建内部RES /附加目录。每个目录的 名称应遵循以下格式:
-b + [+]例如, 值-B + ES /包含字符串资源的语言 码ES语言环境。类似地,mipmap-b + es + ES /包含语言代码和ES国家/地区代码的区域设置图标 。 Android在运行时根据设备 的区域设置加载适当的资源 。有关更多信息,请参阅提供替代资源。
确定要支持的语言环境后,请创建资源 子目录和文件。例如:
MyProject的/ RES/ 值/ 的strings.xml 值-B + ES/ 的strings.xml mip映射/ country_flag.png Mip映射B + ES + ES/ country_flag.png例如,以下是一些不同的资源文件针对不同的语言:
英文字符串(默认语言环境),/values/strings.xml:
的Hello World!西班牙语字符串(es locale),/values-es/strings.xml:
Hola Mundo!美国国旗图标(默认语言环境),/mipmap/country_flag.png:
用于 默认(EN_US)区域
西班牙的国旗图标美国图2.图标的标志的图标( es_ES区域设置),/mipmap-b+es+ES/country_flag.png:
西班牙国旗图标图3。用于es_ES图标区域设置
注意:您可以在任何资源类型使用的语言环境预选赛(或任何配置 预选赛),例如,如果您想为您的位图绘制的 本地化版本。有关更多信息,请参阅 本地化。
使用的资源在App
如果你不想让Android系统自动选择你的资源的语言,您可以以编程方式更改语言(不建议)。但是,你需要改变语言的每个活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String languageToLoad = "fa"; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
//setContentView...
}
或者你通过ADB设置语言,如果它只是用于测试目的(但是通过设置大概是接近那么快,这个解决方案):
adb shell "setprop persist.sys.language en; setprop persist.sys.country CA; setprop ctl.restart zygote"