根据当前设备语言更改上下文语言
Change context language according to the current device language
好的,我知道在一个应用程序中使用多种语言是可以的。但我找不到正确的方法。所以这就是我一开始想要做的,我希望 activity 检测 android 设备语言,然后更改一个简单的文本
"@string/hello"
根据它。我知道方法是 locale.getDefault().getLanguage()
但我不知道如何应用它。
其次,我想让用户可以选择更改语言,如果他愿意的话。
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>
值
<?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>
值-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">Merhaba!</string>
<string name="action_settings">Ayralar</string>
</resources>
您必须在 res 中创建一个新文件夹:values-es 作为西班牙语示例,values-pt 作为葡萄牙语示例
创建一个新的 strings.xml 文件
将相同的字符串放在那里
values/strings.xml
<string name="app_about_title">About</string>
values-es/strings.xml
<string name="app_about_title">Acerca</string>
values-pt/strings.xml
<string name="app_about_title">Sobre</string>
当您使用 @string/app_about_title
或通过代码 R.string.app_about_title
时自动翻译
如果您使用没有翻译的语言,它将使用标准 (values fodler)
好的,我知道在一个应用程序中使用多种语言是可以的。但我找不到正确的方法。所以这就是我一开始想要做的,我希望 activity 检测 android 设备语言,然后更改一个简单的文本
"@string/hello"
根据它。我知道方法是 locale.getDefault().getLanguage() 但我不知道如何应用它。 其次,我想让用户可以选择更改语言,如果他愿意的话。
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>
值
<?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>
值-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">Merhaba!</string>
<string name="action_settings">Ayralar</string>
</resources>
您必须在 res 中创建一个新文件夹:values-es 作为西班牙语示例,values-pt 作为葡萄牙语示例
创建一个新的 strings.xml 文件
将相同的字符串放在那里
values/strings.xml
<string name="app_about_title">About</string>
values-es/strings.xml
<string name="app_about_title">Acerca</string>
values-pt/strings.xml
<string name="app_about_title">Sobre</string>
当您使用 @string/app_about_title
或通过代码 R.string.app_about_title
时自动翻译
如果您使用没有翻译的语言,它将使用标准 (values fodler)