【android studio 简单配置多语言国际化app 一行代码实现切换语言】

前言

新版本的android studio配置多语言其实很简单,不过目前网上找到的几个博客都搞得很复杂,可能是版本比较老的时候出的方案,今天分享一下怎么一行代码切换语言.

一、语言文件

1.切换语言你得先有语言对应的文本,推荐插件一键生成.在设置里搜索Androidlocalize,直接安装即可

2.安装好了以后右键需要翻译的默认语言文本文件,一般都是写在res里面values的string中,找到新增加的翻译按钮

3.勾选上需要翻译的语言.上面这里是覆盖已有翻译,看自己是否需要勾上.选好语言直接点ok就会生成语言文件

4.语言文件类似这样

二、一行代码切换语言

1.切换语言

代码如下(示例):

less 复制代码
AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en"));

有了文件夹以后可以直接通过这行代码来切换语言,传入的语言字符一般就是语言文件夹values-后面的两个字母,英文就是en,俄语是ru,中文是zh,不过还有繁体中文,这个可以使用tw,可以在Google的Locale类里面查,直接看文件也可以.或者网上也都有. 注意跟随系统语言可以传入null 发现一个坑,tw有时候会不能设置成功,需要用zh-TW

2.保存语言状态

一行代码虽然能切换语言,但是杀掉进程以后重启应用又会恢复默认语言,为了保存状态需要配置下AndroidManifest.xml

在application里面加入这个service

代码如下(示例):

ini 复制代码
        <service
            android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
            android:enabled="true"
            android:exported="true">
            <meta-data
                android:name="autoStoreLocales"
                android:value="true"/>
        </service>

3.界面闪动解决之返回主界面

切换语言以后会闪一下重新启动当前界面,为了避免闪一下的情况可以切换语言后直接回到主界面

context是当前界面的上下文

ini 复制代码
                Intent myIntent = new Intent(context.getApplicationContext(), MainActivity.class);
                reIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                context.startActivity(myIntent);

总结

翻译多语言文件在android的实现其实已经很简单了,主要可能需要有质量的翻译文本.这部分不属于技术范围,可以自学下多国语言来优化插件的机翻.

相关推荐
LinXunFeng2 分钟前
拿竞品 App 一扫,技术栈全暴露了
android·flutter·开源
Gracker3 小时前
AIW:从系统机制到性能排查,一本可以对照源码的 Android 电子书
android
三少爷的鞋3 小时前
代码越来越便宜,判断力越来越贵:AI 时代的 Android 架构与协程避坑指南
android
Gracker5 小时前
SmartPerfetto 1.19.0:换过分析引擎之后,这次更新了什么
android
HQL_seven9 小时前
【Android】BroadcastReceiver 详解
android
_祝你今天愉快10 小时前
Paint Cavans高级绘制:[二] Paint-滤镜,XFERMODE
android
小乖写代码10 小时前
字段获取代码(Android) · Android Input Examples
android·whatsapp·账号注册
booboosui10 小时前
停一个活只有杀进程:界面上少了「说点要求」
android
传奇开心果编程13 小时前
【Flutter踩坑排雷】第28课:平台目录缺失与修复坑|`flutter create` 的“重建”与“覆盖”边界
android·flutter·ios·移动开发·跨平台·dart·声明式ui
longxibo1 天前
【AIBIZ低代码平台:能长出业务系统的平台】
android·低代码·rxjava