React Native 如何修改权限申请、系统弹窗使用的默认语言
React Native系统权限弹窗本地化可行方案
系统权限弹窗属于原生系统渲染的组件,文案控制权不在React Native的JS层,因此JS端的本地化库无法直接修改这类弹窗的文案,可通过以下两端原生配置实现需求:
基础适配(跟随系统语言切换)
如果你的应用默认跟随系统语言展示,只需要分别配置iOS和Android端的多语言权限文案即可:
- iOS端:在Xcode项目中打开「Info」选项卡,在
Localizations配置项中添加所有需要支持的语言,然后为每个权限的描述key创建对应语言的多语言字符串即可。常见的权限key包括推送权限对应的NSUserNotificationUsageDescription、相册访问权限对应的NSPhotoLibraryUsageDescription,系统会自动根据当前设备的系统语言读取对应文案。 - Android端:在
android/app/src/main/res目录下创建对应语言的资源文件夹,例如简体中文对应values-zh、英文对应values-en,每个文件夹下新建strings.xml文件写入对应语言的权限提示文案,系统调用权限弹窗时会自动匹配当前系统语言加载对应资源。
进阶适配(应用内自定义语言,不跟随系统)
如果你的应用支持用户在应用内手动切换语言,不需要和系统语言保持一致,需要额外修改原生配置强制应用优先级高于系统语言:
- iOS端:在AppDelegate的启动方法中,读取用户在RN端缓存的自定义语言配置,强制设置当前应用的语言偏好,覆盖系统语言设置即可。
- Android端:自定义Application类,重写
attachBaseContext方法,根据用户缓存的语言配置修改Context的Locale参数,后续系统弹窗就会优先读取应用设置的语言对应的资源文案。
注意:所有系统弹窗的文案都需要提前在原生端配置完成,无法通过JS层代码动态修改。
内容的提问来源于stack exchange,提问作者J.Ko
相关产品推荐
相关产品推荐

