APP语言设置

Next.js App Router 设置多语言(i18n):详细笔记 由于在建英文站还是中文站之间摇摆不定,纠结了半个多月之后还是决定为自己的网站做多语言版本,静下心来好好学习一下官方文档🤱。本文采用的是next-intl (i18n)。是 Internationalization 的缩写。这个名字的由来是因为 "Internationalization" 这个单词中,首字母 "I" 和尾字母 "N" 之间有 18个字母,因此简写为。在路径中加入了语言代码(比如 /en/about 或者 en.example.com/about)。路径中没有语言代码。 阅读详情
 

Android 系统语言切换监听和设置

标签: string国际化语言
  1300人阅读  评论(2)  收藏  举报
  分类:

目录(?)[+]

最近项目上产品经理提了个需求,要求关闭语言国际化,不管手机系统设置那个国家的语言,都要显示汉语,好吧,既然有需求,那就做吧。但是项目中已经有英文的配置了,且是作为默认String提供的,这么多翻译好的文字,直接删除掉替换成中文为默认String又感觉弃之可惜。故网上Google下解决方案。就开始往下看吧。

一、代码中动态设置应用显示语言(手动控制使用values-zh-rCN下字符串)

这个方法是通过改变Resource中的配置来实现的,代码如下:
public static void initAppLanguage(Context context) {
    if (context == null) {
        return;
    }
    Locale.setDefault(Locale.CHINA);
    Configuration config = context.getResources().getConfiguration();
    config.locale = Locale.CHINA;
    context.getResources().updateConfiguration(config
            , context.getResources().getDisplayMetrics());
}
上面方法我们可以在MyApplication中设置也可以在Activity的基类中调用
但是上面的方法还是不足以让我们的应用一直显示指定的某种语言文字的。因为我们的应用在运行阶段中,系统语言发生了改变后,我们的应用还是会被切换语言的,如果没有指定语言,就显示默认的语言。这肯定不是我们要看到的结果,那就到了标题中提到的语言切换监听了。

二、语言切换监听

1.广播方式监听

我们可以通过监听系统广播来实现(广播静态注册动态注册都可以,动态注册把握好注册时机)
/**
 * ClassName: LocaleChangeReceiver
 * Description:(这里用一句话描述这个类的作用)
 * Created by chensf on 2016-8-17 16:47.
 */

public class LocaleChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.v(TAG, "mReceiver  onReceive  intent.getAction(): "+intent.getAction());

        if(intent.getAction().equals(Intent.ACTION_LOCALE_CHANGED)) {
            Log.e("LocaleChangeReceiver","Language change");
            SystemUtil.initAppLanguage(context);
        }
    }
}

这里我们通过监听Intent.ACTION_LOCALE_CHANGED广播,在系统语言切换后我们会得到通知,然后就爱干嘛干嘛了,这里我通过调用上面 提到的设置语言方法,将语言设置为初始设定语言。网上大多都是采用这种方式来监听语言切换,其实还有另外一种方式。

2.重写onConfigurationChanged方法

一些系统设置变化后都会回调这个方法,所以我们可以从这里下手。
那在哪里重写这个方法呢,这个方法大家是不是感觉很熟悉,监听横竖屏切换是不是有用到过呢,提到横竖屏切换,这里顺便讲点题外话
在横竖屏切换的时候,我们为了避免Activity重新调用onCreate,一般都会重写这个方法,但是,横竖屏切换后Activity没有调用onConfigurationChanged而是依旧调用了
onCreate,因为我们Activity默认是不回调onConfigurationChanged的,开启方法就是
<activity
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
在AndroidManifest中Activity标签下添加android:configChanges="orientation|screenSize,orientation是横竖屏切换的配置,至于为什么要同时加上screenSize,是因为Android3.0之后,如果只设置orientation没有设置screenSize,onConfigurationChanged依旧不会被回调。
那回归正题,大家通过上面的例子知道了这个onConfigurationChanged要在Activity中重写,配置跟上面一致,参数改变了而已
<activity
    android:name=".MainActivity"
    android:configChanges="locale|layoutDirection">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

android:configChanges="locale|layoutDirection 这里同样存在一个问题,4.2之前的系统只需要设置locale,4.2+就得多设置layoutDirection这个配置,不然onConfigurationChanged依旧不会被回调。
上面的在Activity重写onConfigurationChanged方式明显存在一个缺点,如果只需要改变某个Activity的语言设置,上面的方式可以适用,如果要改变整个应用的语言设置,上面的方式就很low,要每个Activity都重写onConfigurationChanged,虽然可以在Activity基类中重写,但是,AndroidManifest中还是得每个Activity标签下都去设置
android:configChanges="locale|layoutDirection,
说了这么多就不绕弯子了,我们可以在 Application中重写onConfigurationChanged
@Override
public void onConfigurationChanged(Configuration newConfig) {
    Log.e("MyApplication","onConfigurationChanged");
    super.onConfigurationChanged(newConfig);
    SystemUtil.initAppLanguage(getBaseContext());
}
这个配置是整个应用设置的,在这里设置语言,能够改变整个应用的语言设置,而且这种方式,无需在AndroidManifest中增加配置,我测试过,在Application中重写onConfigurationChanged,Activity的onConfigurationChanged

依旧能够回调到,但是其中有没有造成什么影响,我这里暂时没有发现。如果有采用我提供的这种方式实现语言切换监听的,遇到问题可以告诉我,我们一起探讨下。

好了,本文到此结束。
Android 监听系统语言切换 系统语言的切换 会发出 Intent.ACTION_LOCALE_CHANGED 广播 ,只要监听这个广播就可以了 功能如下: import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import com.xinrui.recordscreen.view.FloatWindowManager; publ 阅读详情

相关推荐

Android 系统语言切换监听和设置实例代码

最近项目上产品经理提了个需求,要求关闭语言国际化,不管手机系统设置那个国家的语言,都要显示汉语,好吧,既然有需求,那就做吧。但是项目中已经有英文的配置了,且是作为默认String提供的,这么多翻译好的文字,直接删除掉替换成中文为默认String又感觉弃之可惜。故网上Google下解决方案。就开始往下看吧。 一、代码中动态设置应用显示语言(手动控制使用values-zh-rCN下字符串) 这个方法是通过改变Resource中的配置来实现的,代码如下: public static void initAppLanguage(Context context) { if (context

Android 系统语言切换监听和设置

最近项目上产品经理提了个需求,要求关闭语言国际化,不管手机系统设置那个国家的语言,都要显示汉语,好吧,既然有需求,那就做吧。但是项目中已经有英文的配置了,且是作为默认String提供的,这么多翻译好的文字,直接删除掉替换成中文为默认String又感觉弃之可惜。故网上Google下解决方案。就开始往下看吧。 一、代码中动态设置应用显示语言(手动控制使用values-zh-rCN下字符串) 这个方

枫的专栏 3万+

别再自己写消息提示了!5分钟用WPF+Material Design打造专业级Snackbar(支持.NET 6)

本文为WPF开发者提供了一份快速集成专业级Snackbar消息提示的实战指南。通过引入MaterialDesignThemes开源库,在.NET 6 WPF项目中,仅需5分钟即可告别传统的MessageBox,实现遵循Material Design规范、动画流畅、支持队列管理的非侵入式Snackbar控件,显著提升应用的用户体验与现代化交互水平。

year5的博客 172

安卓开发 监听系统语言切换

1.监听系统语言切换广播 广播监听系统切换语言变换_xlhb的专栏-优快云博客广播监听系统切换语言变换静态注册: android:name="com.ulucu.receiver.LOCALEReceiver" android:enabled="true"> public class LOCALEReceiver extends BroadcastReceiver { https://blog.youkuaiyun.com/lib739449500/article/details/50581115 1.ap

shuangrenlong的博客 3561

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

深入构建加密货币价格预测系统:从数据获取到模型优化的完整指南!

🏆本文收录于「编程与技术实战」专栏,此专栏涵盖了C/C++编程、人工智能、数据结构、机器学习等技术领域的内容,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1276

Android中监听语言变化的两种方式

Android中监听语言变化的方式有两种,通过在Activity里配置configChanges,然后重写onConfigurationChanged方法,另一种方式通过注册广播监听LOCALE_CHANGED,下面就来看下,这两种方式以及遇到的一些问题。 1.在Activity里配置configChanges 1.1 在对应Activity里添加configChanges配置

Do Better Every Day 1万+

嵌入式Linux开发:手把手教你调试OV9281摄像头Sensor(基于全志平台DTS配置)

本文详细解析了嵌入式Linux开发中OV9281摄像头Sensor的调试全流程,重点介绍了基于全志平台的DTS配置指南。从硬件信号检测到软件驱动配置,包括设备树关键参数设置、内核驱动适配实战及图像质量调优技巧,为开发者提供了一套完整的调试方案,助力工业视觉和边缘计算设备的开发。

weixin_28716769的博客 371

Android 设置APP为某国语言

参考一:http://blog.youkuaiyun.com/fenghome/article/details/5769446 参考二:http://www.cnblogs.com/wuyunan/articles/1567960.html

hhbgk的专栏 5817

交叉验证选型指南:k折、留一法、时序与分层CV实战决策

交叉验证是评估机器学习模型泛化能力的基础技术,其核心在于通过系统性数据重划分,缓解有限样本对真实分布估计的偏差。原理上,它通过控制训练-验证数据的独立性与代表性,诊断过拟合风险并提升性能指标的稳定性。技术价值体现在避免单次切分导致的结果偶然性、数据利用低效及验证集污染等问题。典型应用场景涵盖分类任务中的类别不平衡处理、时间序列预测的因果约束、用户行为建模中的数据泄露防控等。本文聚焦k折交叉验证、留一法、时间序列交叉验证与分层抽样等主流方法的适用边界与工程落地要点,结合过拟合诊断和泛化能力评估两大热词,提供可

dienangpiao2051的博客 477

二十一.基于国民MCU 的增加M4F DSP库调用的验证

Cortex-M4F内核不仅内置硬件FPU单元,还支持多种DSP指令集,比如支持单周期乘加指令(MAC)等。因此Cortex-M4执行所有的DSP指令集都可以在单周期内完成,而Cortex-M3和M0需要多个指令和多个周期才能完成同样的功能。比如开方运算,M3和M0只能通过迭代法(标准数学函数库)计算,而M4F直接调用VSQRT指令完成。参考:\Nationstech.N32G45x_Library.1.1.1\Nationstech.N32G45x_Library.1.1.1\projects\n32g4

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 934

iOS app国际化语言设置以及默认语言

5.进阶需求,童鞋们想实现进app之后,设置默认语言,如果是当前本地语言之外的语言,就设置语言为英文的话,请看下边思路!这行代码意思获取首页userdefault中设置的语言类型,然后根据类型去获取语言资源包,然后使用相应的资源。设置语言资源:分别在两个语言文件里边设置key:value,key必须相同,然后value分别对应版本语言。4.目前为止,就实现了跟随系统语言来切换app里边的内容。2.文件名字我是使用的系统的Localizable。可以看下资源包名字,就明白了。3.设置支持的语言版本。

st646889325的博客 1466

RT-DETR算法优化改进:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测

DCNv4更快收敛、更高速度、更高性能,完美和RT-DETR结合,助力涨点

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1323

SwiftUI:单个App支持设置多语言

SwiftUI 多语言方案

sail的技术博客 898

LOFIC / 全局快门在移动端的可行性:曝光容限、读出噪声与算力预算

手机端引入 LOFIC 与全局快门的核心权衡在于:在有限像素面积与功耗下,如何换取更高的动态范围与运动场景鲁棒性。LOFIC 通过侧向溢流到积分电容扩大满井并保持较高转换增益,全局快门在帧内一次性采样消除行时序伪影,但需付出像素填充率、读出噪声与片上存储功耗的代价。本文以工程可实操为目标,给出像素与读出链的简化模型、曝光损益测算、数据率与带宽估算、端到端算力与热预算方法,配套寄存器配置流程、帧内/帧间切换策略与验证清单,帮助在真实移动 SoC 与 ISP 约束下完成可行性评估与原型落地。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1140

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android默认语言,Android默认设置App内的语言为中文

1.通用的设置App语言的方法(需要注意版本的变化)public static Context initAppLanguage(Context context, String language) {if (currentLanguageIsSimpleChinese(context)) {Log.e("LanguageUtil", "当前是简体中文");return context;}if (Bu...

weixin_34194520的博客 1747

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android 单独设置APP语言

如设置成英文: Locale currentLocal = Locale.US; public void switchLanguage(Locale locale) { Resources res = getResources(); Configuration config = res.getConfiguration(); DisplayMetrics dm = res.g...

xiaohudemsdn的博客 3797

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android App设置系统时间,语言和时区

安卓设置系统时间 安卓设置系统语言 安卓设置系统时区 设置系统时间 设置系统日期(仅设置到xxxx年xx月xx日) 设置系统是否自动获取时间 判断系统是否自动获取时间 设置系统时区 设置系统是否自动获取时区 判断系统是否自动获取时区 获取当前月有多少天 获取系统时间和时区信息 设置系统语言 获取系统语言偏好

kisaragi_yu的博客 5536

android系统语言设置对app本身的影响

android系统语言设置,对APP本身的影响,除了UI界面上的文案显示&截断类,也会有功能上的影响。 1.国际化APP 比如阿语书写习惯为从右到左,阿语版本APP整个界面和操作习惯,都响应为从右到左。 2.国内APP 需区分功能点。 一个好的case为,翻译语种根据字母顺序索引。 中文系统语言下,各语种名称,比如“中文”,对应的字母索引为Z;但英文系统语言下,”Chinese“对应的

bailangriver的专栏 1121

APP名字设置默认多语言时遇到的问题

InfoPlist.strings 文件,用于app名称,获取权限的本地化。 localizable.strings文件,用于app内字符串的本地化。 添加多语言都会有个base文件,是其他多语言(English,Korean...)的父类。当其他多语言文件中没有对应字符串的多语言时会从base文件中寻找。 App如何决定何种多语言 1.当安装/启动App时,系统会根据当前的iphone语言去和App的多语言文件匹配; 2.如果匹配不到就会去遍历首选语言顺序 去匹配App内是否有相应的多语言...

CoderL 1142

Uni-app原生Tabbar使用多语言设置

Uni-app原生Tabbar使用多语言设置。

Jinxiansen0211的博客 1741

【macOS】【本地化】 单独设置一个App的语言

    在开发macOS的App项目中,进行本地化的时候,这是一个很实用的命令。 之前,都是在系统设置中,设置为目标语言,然后重启macOS系统。全过程一般需要一分钟左右。 而用下面这个命令,不需要重启macOS系统,可以轻松搞定单个App的语言设置。 可以在本地化支持多语言项目开发与测试中,节省很多时间。 我们的项目,需要支持16种语言,尤其是当文档组翻译完项目的字符串之后,尤其是测试组...

maoyingyong的专栏 1562

Android 仿支付宝设置app语言

第一次登录,进入app语言选择界面,默认选择系统默认语言,自己可以选择其他语言,保存设置,下次进入直接应用保存设置的语言。(这里只用了英文和中文)直接贴代码:public class LanguageChoiceActivity extends Activity { public static final String LANGUAGE = "language"; private Che

haizicool的博客 912

Windows Store App 全球化 设置指定页面的语言

Windows Store App 全球化 设置指定页面的语言 上一小节介绍了通过在应用程序中添加语言设置选项来改变整个应用显示信息的语言,而有时用户只想对应用中某一页面信息的语言进行调整,这时就不能使用上一小节所讲述的知识来对应用进行设置。下面将通过一个示例介绍如何在指定页面上添加语言可选项,选择语言选项后单击“显示信息”按钮来显示相应语言的信息。 新建一个Window...

博客 139

App多语言设置

app多语言设置

李平的博客 781

Windows Store App 全球化:应用中设置语言选项

Windows Store App 全球化:应用中设置语言选项 当开发者将开发的应用上传到Windows应用商店以后,使用Windows 8系统的用户可能会看到并下载这些应用,而这些用户所在的区域或者所使用的语言可能都不相同,如果他们在使用应用程序时希望改变应用显示信息的语言为自己所熟悉的语言,这就需要应用能够提供一个语言设置选项,并在选项中包括用户所在地区的语言,这样就能...

博客 192
上一篇: 关于优酷开放SDk之setOnVideoIndexUpdateListener
下一篇: Andorid App内部跟随熊语言改变
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值