根据当前设备语言更改上下文语言

时间:2015-06-25 13:48:36

标签: java android locale android-context

好吧我知道在一个应用程序中使用多种语言是可以的。但我找不到合适的方法。所以这是我想要做的开始,我希望活动检测Android设备语言,然后更改一个简单的文本

@EnableAspectJAutoProxy
@EnableAsync
@EnableScheduling
@EnableTransactionManagement
@Configuration
public class IntegrationTestConfig {
    /**
     * Override the existing JPA data source bean with a test data source.
     * @return test data source
     */
    @Bean
    public DataSource dataSource() {
        final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriverClass(org.h2.Driver.class);
        dataSource.setUrl("jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS mydb");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }
}

根据它。我知道方法是locale.getDefault()。getLanguage() 但我不知道如何应用它。 其次,如果他愿意,我想让用户选择更改语言。

 "@string/hello"

这是简单的布局

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Locale.getDefault().getLanguage();
}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
android:layout_height="match_parent"   

android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.vermelha.tourword.MainActivity">

<TextView android:text="@string/hello"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"/>

</RelativeLayout>

值-TR

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">Tour Word</string>
<string name="title_activity_main">MainActivity</string>
<string name="hello">Hello</string>
<string name="action_settings">Settings</string>

</resources>

1 个答案:

答案 0 :(得分:2)

你必须在res中创建一个新文件夹:values-es作为西班牙语的例子,values-pt作为葡萄牙语的例子

创建一个新的strings.xml文件

将相同的字符串放在那里

值/ strings.xml中

<string name="app_about_title">About</string>

值-ES / strings.xml中

<string name="app_about_title">Acerca</string>

值-PT / strings.xml中

<string name="app_about_title">Sobre</string>

当您使用@string/app_about_title或通过代码R.string.app_about_title时,它将被自动翻译 如果您使用的语言没有翻译,它将使用标准(值fodler)