2012-03-13 54 views
5

我想知道是否有可能将默认的android操作系统语言更改为其他。例如,语言不在设置中:如何设置设备的语言以编程方式缅怀。Android:有什么方法可以将Android的默认语言更改为新语言?

+2

你说的是在代码*中做这个*吗? – 2012-03-13 06:58:52

+0

@John Skeet:请参阅我更新的问题。是的,我需要以编程方式进行。 – 2012-03-13 06:59:55

+0

你是否正在寻找开发除Java之外的其他平台的android应用程序? – 2012-03-13 07:01:11

回答

12

使用此功能可以通过programmatically--

Locale locale = new Locale("en_US"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
context.getApplicationContext().getResources().updateConfiguration(config, null); 

改变语言编写语言的COUNTRYCODE代替“EN_US”任何你想要的语言......像对于日语 - “ja_JP”对于阿拉伯语 - “ar”或查看此链接查看国家代码 -

http://code.google.com/apis/igoogle/docs/i18n.html

,并在RES /值-JA日本或RES /值-AR阿拉伯语的文件夹..

而且使string.xml文件并把任何你想要的语言在你的布局..它会从值文件夹中获取默认语言,否则手动需要它,然后它会从您的外部文件夹值中提取值-ar等...

其示例res/values-ar阿拉伯语 - -

<?xml version="1.0" encoding="UTF-8"?> 
    <resources> 
    <string name="spinner_label">تصفية حسب</string> 
    <string name="app_name">2011 فرق</string> 
    <string name="search">بحث :</string> 
</resource> 

希望这将有助于你..

+0

好答案绿巨人先生。我在我的projcet(Diff)中使用相同的代码:P – 2013-03-14 09:49:08

+0

在哪里放置此代码Local.setDefault?在MainActivity.java中? – 2013-04-19 22:24:46

+0

你需要把它放在每一个activity的onCreate()中。否则,它可能会被系统覆盖 - 例如,当您将设备设置为横向时,您的活动将通过新的(系统提供的)配置重新创建。 – 2014-06-29 12:32:27

3

您可以将语言环境更改为任何您想要的,并且系统需要支持它。

试试这个:

public static void changeLocale(Locale locale) { 
    try { 
     Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); 

     Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative); 

     Object config = am.getClass().getMethod("getConfiguration").invoke(am); 
     config.getClass().getDeclaredField("locale").set(config, locale); 
     config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); 

     am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config); 
     Log.i(LOG_TAG, "send change locale request"); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "change locale error:", e); 
    } 
} 
+0

此代码是否将默认语言更改为其他新语言? – 2012-03-13 07:04:25

+1

是的,缅甸语言环境可能会喜欢'Locale locale = new Locale(“my”)',但您的设备需要支持此语言,否则系统不会更改语言。 – idiottiger 2012-03-13 07:06:23

+0

+1这个有用的信息。但是如果设备没有内置的缅语言,我必须让它在所有设备上工作呢? – 2012-03-13 07:11:35