我需要在 android 应用程序本身内部切换两种语言。现在,我在两个不同的文件夹中的两个 strings.xml 文件中有两种不同语言的字符串值,一个在 Values 文件夹下 (默认情况下),另一个在 values-fr (法语) 下,当尝试在 android studio 中的语言下编辑翻译时创建。但我不知道如何在语言之间切换。它显示了默认语言 (即切换英语),但不
有没有一个简单的方法来实现它...?
您可以使用Android-LocalizationActivity
这里是文档的摘录:
保持冷静,保持轻松,在你的 Andr oid 应用程序支持多种语言。
支持多种语言是 android 应用程序的基础。是的!这很容易,因为 android 有 String Resource。开发人员只需要为不同的语言准备文本,然后 android 系统将使用它自己。但经常出现的问题是“On-time Language Changing”。因为 String Resource 被设计为取决于当前的设备语言。但如果我们想通过单击某个按钮来更改语言。这将很难处理它。这个问题将得到解决,因为我创建
这里的例子使用它从文档:
import android.os.Bundle;
import android.view.View;
import com.akexorcist.localizationactivity.LocalizationActivity;
public class MainActivity extends LocalizationActivity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
findViewById(R.id.btn_th).setOnClickListener(this);
findViewById(R.id.btn_en).setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_en) {
setLanguage("en");
} else if (id == R.id.btn_th) {
setLanguage("th");
}
}
}
在上面的例子中,当用户点击一个按钮,它会变成英语或泰语。
您可以使用区域设置类来做到这一点。希望这有助于
public class LocaleLanguage {
private static Locale mLocale;
public static void setLocale(Locale locale) {
mLocale = locale;
if(mLocale != null) {
Locale.setDefault(mLocale);
}
}
public static void updateConfig(ContextThemeWrapper wrapper) {
if(mLocale != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = new Configuration();
configuration.setLocale(mLocale);
wrapper.applyOverrideConfiguration(configuration);
}
}
public static void updateConfig(Application app, Configuration configuration) {
if(mLocale != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
//Wrapping the configuration to avoid Activity endless loop
Configuration config = new Configuration(configuration);
config.locale = mLocale;
Resources res = app.getBaseContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
}
}
这里是应用程序类
public class App extends Application {
public void onCreate(){
super.onCreate();
// get user preferred language set locale accordingly new locale(language,country)
LocaleUtils.setLocale(new Locale("iw"));
LocaleUtils.updateConfig(this, getBaseContext().getResources().getConfiguration());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LocaleUtils.updateConfig(this, newConfig);
}
}
这里是你的活动
public class MainActivity extends Activity {
public BaseActivity() {
LocaleUtils.updateConfig(this);
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(56条)