在Android Activity中更改字符串语言

时间:2015-08-27 12:15:55

标签: java android android-activity locale

我正在使用多语言进行应用。我理解string.xml的概念,即将应用程序语言设置为手机的默认语言。有什么方法可以覆盖这个吗?例如,如果我在西班牙使用西班牙语手机,但我仍然希望使用英语应用程序?

2 个答案:

答案 0 :(得分:13)

您可以使用简单的功能以编程方式更改应用的语言(语言环境)。您只需要实现一种类似于下面的方法,该方法接收一个字符串作为参数(例如' en'对于英语,' es'对于西班牙语),您可以在其中配置应用的区域设置并刷新当前活动以反映更改。在您再次手动更改之前,您应用的区域设置不会更改。

public void setLocale(String lang) { 
    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); 
    startActivity(refresh); 
    finish();
} 

确保导入以下包:

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.DisplayMetrics; 
import android.content.res.Resources;
import android.content.res.Configuration;

在活动代码android:configChanges="locale|orientation"

中的清单中添加

答案 1 :(得分:0)

编辑正确地提到这不是OP所要求的,我仍然会把它留在这里以防万一有人在这里试图解决我所回答的问题。

从Android开发者页面:

  

如何创建替代资源

     

本地化应用程序的很大一部分是提供替代方案   不同语言的文本。在某些情况下,您还将提供   替代图形,声音,布局和其他特定于语言环境的   资源。

     

应用程序可以指定许多res //目录   有不同的限定词。为a创建替代资源   在不同的语言环境中,您使用指定语言的限定符或   语言区域组合。 (资源目录的名称必须是   符合提供替代方案中描述的命名方案   资源,否则它将无法编译。)

     

示例:

     

假设您的应用程序的默认语言是英语。假设   您还想要将应用程序中的所有文本本地化   法语和您应用程序中的大部分文本(除了以外的所有内容)   该应用程序的标题)日语。在这种情况下,您可以创建   三个替代strings.xml文件,每个文件都存储在特定于语言环境的文件中   资源目录:

res/values/strings.xml
Contains English text for all the strings that the application uses, including text for a string named title.
res/values-fr/strings.xml
Contain French text for all the strings, including title.
res/values-ja/strings.xml
Contain Japanese text for all the strings except title.
     

如果您的Java代码引用了R.string.title,那么将会发生这种情况   在运行时:

If the device is set to any language other than French, Android will load title from the res/values/strings.xml file.
If the device is set to French, Android will load title from the res/values-fr/strings.xml file.
     

请注意,如果设备设置为日语,则Android会查找   res / values-ja / strings.xml文件中的title。但因为没有这样的   字符串包含在该文件中,Android将回归到   默认,并将从中加载英文标题   res / values / strings.xml文件。

这里也是原始链接供参考:http://developer.android.com/guide/topics/resources/localization.html