博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android APP 中英文切换
阅读量:7124 次
发布时间:2019-06-28

本文共 3810 字,大约阅读时间需要 12 分钟。

 

实习期间,师父要求做app的中英文切换,就顺便记录了下。

 

一、AndroidManifest.xml文件(清单文件)

在每个要切换语言的Activity下面添加:

android:configChanges="locale"

1 
7

 百度上都是这么写的,然而我并没有用到。

 

二、创建一个英文的strings.xml文件,目录名为values-en

or

 

values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。

1 
2
3
language
4
Settings
5
updating..
6

 

三、核心代码

1 /** 2      * 刷新语言 3      */ 4     public void updateActivity(String sta) { 5  6         // 本地语言设置 7         Locale myLocale = new Locale(sta); 8         Resources res = getResources();// 获得res资源对象 9         DisplayMetrics dm = res.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。10         Configuration conf = res.getConfiguration();// 获得设置对象11         conf.locale = myLocale;// 简体中文12         res.updateConfiguration(conf, dm);13         // startActivity((new Intent(this, TabActivity.class)));14         // this.finish();15     }

String sta= getResources().getConfiguration().locale.getCountry()  //用于判断当前的语言

Locale.getDefault().getLanguage() //语言:取到的比如中文为zh,英文为en,日文为ko;

Locale.getDefault().toString()
//具体的类别:比如繁体为zh_TW,简体为zh_CN。英文中有en_GB;日文有ko_KR。
把需要切换的Strings.xml对应的语言,传入到 updateActivity(String sta)  方法.....
 

也可以调用此类

 

public class LanguageSettings {    private static LanguageSettings language = null;    private String currentLanguage = "zh";    private LanguageSettings() {    }    public static LanguageSettings getInstance() {        if (language == null) {            language = new LanguageSettings();        } else {        }        return language;    }    public String getCurrentLanguage() {        return currentLanguage;    }    public void switchCurrentLanguage() {        if (currentLanguage.equals("zh")) {            currentLanguage = "en";        } else {            currentLanguage = "zh";        }    }}
LanguageSettings

 

1 // 切换成英文 2                 if (LanguageSettings.getInstance().getCurrentLanguage() 3                         .equals("zh")) { 4                     updateActivity("en"); 5                     LanguageSettings.getInstance().switchCurrentLanguage(); 6                 } else { 7                     // 切换成中文 8                     updateActivity("zh"); 9                     LanguageSettings.getInstance().switchCurrentLanguage();10                 }

LanguageSettings.getInstance().getCurrentLanguage() 给变量动态赋值的标识列,用于判断!(采用单例模式)

 

 

我自己写的是这样的:

private void checkLanguage() {

        // 界面出来前判断好
        String aString = SystemArgs.LANGUAGE;
        System.out.print(aString);
        System.out.print(SystemArgs.LANGUAGE);
        String language = pref.getString(SystemArgs.LANGUAGE, "Chinese");
        System.out.print(language);
        Log.i("a", language);
        try {
            if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))
                chooseLanguage(Locale.CHINA);
            else if (language.equalsIgnoreCase("English")
                    || language.equals("英文"))
                chooseLanguage(Locale.US);
        } catch (Exception e) {
            // Log.i("error", "语言选择出错");
        }
    }

 

private void chooseLanguage(Locale locale) {

        Resources resources = getResources();// 获得res资源对象
        Configuration config = resources.getConfiguration();// 获得设置对象
        DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
        config.locale = locale; // 语言
        resources.updateConfiguration(config, dm);
    }

 对于图片的更改,需要自己在oncreate里判断语言,然后显示什么图片

 

四、其他的记录

对ListPreference的语言选项设置默认值

try {

            if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))
                CLanguage_ListPreference.setValueIndex(0);
            else if (language.equalsIgnoreCase("English")
                    || language.equals("英文"))
                CLanguage_ListPreference.setValueIndex(1);
        } catch (Exception e) {
            // Log.i("error", "语言选择出错");
        }

 

String language = defaultSharedPreferences.getString(

                SystemArgs.LANGUAGE, "中文");
        ImageView button = null;
        // 图片要自己去判断语言选择
        if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))

转载于:https://www.cnblogs.com/tutuskys/p/4863146.html

你可能感兴趣的文章
网页设计师和网页前端开发我该选择哪一个
查看>>
Apache Flink 漫谈系列(08) - SQL概览
查看>>
使用免费OA系统,让你成为职场锦鲤
查看>>
京东测试之道,这些你早该知道!
查看>>
jQuery可放大预览的图片滑块
查看>>
SpringBoot连接Redis哨兵模式
查看>>
【WPF】ComboBoxItem的禁用
查看>>
HTML5_CSS3仿Google Play垂直菜单
查看>>
达观杯文本智能处理挑战赛 练手代码实现
查看>>
Tornado 简单入门教程(一)——Demo1
查看>>
Pgpool-II 最新小版本更新发布,PgSQL 负载均衡中间件
查看>>
数据传输加密方式总结
查看>>
U-Boot启动过程完全分析
查看>>
深入理解Java中的底层阻塞原理及实现
查看>>
shell编程之转义和引用
查看>>
云盾.态势感知情报生态合作发布
查看>>
可视化生信分析利器-Galaxy(第一讲)
查看>>
Java多线程1:进程和线程的区别
查看>>
BugkuCTF 域名解析
查看>>
JVM(二)—GC垃圾回收
查看>>