Android 封装国际化(中英文)

在这里插入图片描述

//strings.xml默认的是中文,适配英文的话就需要再创建一个values-en的文件夹,并且其中也是strings.xml文件

//中文的资源文件strings.xml

<resources>
    <string name="app_name">MyApp</string>
   
    <!--content-->
    <string name="title">这是标题</string>
    <string name="settings">设置</string>
    <!--dialog-->
    <string name="dialog_title">语言切换</string>
    <string name="dialog_msg">请选择你要切换的语言</string>
    <string name="dialog_positive">中文</string>
    <string name="dialog_negative">英文</string>
    <string name="toast_set_ch">设置成中文</string>
    <string name="toast_set_en">设置成英文</string>
</resources>

//这是英文的资源文件对比一下可以没那么多数据但是中英文一定要对应上

<resources>
    <string name="app_name">MyApp</string>

    <!--content-->
    <string name="title">title</string>
    <string name="settings">settings</string>
    <!--dialog-->
    <string name="dialog_title">language switch</string>
    <string name="dialog_msg">choose your language,please</string>
    <string name="dialog_positive">Chinese</string>
    <string name="dialog_negative">English</string>
    <string name="toast_set_en">has change to English</string>
    <string name="toast_set_ch">has change to Chinese</string>

</resources>

//直接粘贴在BaseActivity

private Context mContext = this;
    // 中文 英文 日语 德语
    private static final String[] language = {"zh_CN", "en", "ja", "de"};

    public static final String CHINESE = language[0];
    public static final String ENGLISH = language[1];
    private String type;


 /**
     * 设置语言
     *
     * @param lauType
     */
    private void set(String lauType) {
        // 本地语言设置
        Locale myLocale = new Locale(lauType);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
    }
    

//窗口显示转换
public void lanGuage(){
        AlertDialog dialog = new AlertDialog.Builder(mContext)
                .setTitle(getString(R.string.title))
                .setMessage(getResources().getString(R.string.dialog_title))
                .setNegativeButton(getResources().getString(R.string.dialog_negative), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        type = ENGLISH;
                        set(type);
                        Toast.makeText(mContext, getResources().getString(R.string.toast_set_en), Toast.LENGTH_SHORT).show();
                        recreate();
                         cler();
                    }
                })
                .setPositiveButton(getResources().getString(R.string.dialog_positive), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        type = CHINESE;
                        set(type);
                        Toast.makeText(mContext, getResources().getString(R.string.toast_set_ch), Toast.LENGTH_SHORT).show();
                        recreate();
                    }
                })
                .create();
        dialog.show();
    }

//刷新activity的文字
 public void cler(){

        Intent intent = new Intent(this, MainActivity.class);//跳到你的登录页面
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

    }

//以上粘贴完成之后直接在 activity中做个点击事件调用lanGuage方法即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值