You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo React Native应用如何适配iOS/Android系统语言设置?

Expo多语言适配:iOS/Android系统设置同步及配置指南

一、iOS端:告知系统应用支持的语言

要让iOS系统设置识别你的应用支持的语言,需在项目根目录的app.json中配置ios.infoPlist.CFBundleLocalizations字段,列出所有支持的语言代码(遵循ISO 639-1标准,比如英文en、简体中文zh-Hans):

{
  "expo": {
    "ios": {
      "infoPlist": {
        "CFBundleLocalizations": ["en", "zh-Hans", "ja"]
      }
    }
  }
}

配置完成后,用户在iOS系统设置的「通用」-「语言与地区」-「iPhone语言」切换语言时,你的应用会被纳入支持该语言的应用列表,系统会自动匹配对应语言(前提是你没有通过AsyncStorage强制设置应用内语言)。

二、Localization.locale与iOS设置的同步逻辑

  • 未手动切换应用内语言时:Localization.locale会实时同步iOS系统设置中选中的语言,系统语言变化后,Localization.locale会自动更新。你可以监听Localization.onLocaleChange事件,触发应用内语言的重新初始化:
import * as Localization from 'expo-localization';

Localization.onLocaleChange(() => {
  // 重新初始化i18next,读取新的locale值
  i18next.changeLanguage(Localization.locale);
});
  • 已手动切换应用内语言并存储到AsyncStorage时:此时你应当优先读取AsyncStorage中保存的语言值,而非直接使用Localization.locale,这种情况下不会自动同步系统设置,除非你在语言切换逻辑中添加「跟随系统」选项,主动恢复使用Localization.locale。

三、Android端的适配情况

Android端的逻辑和iOS基本一致,但配置方式不同:

  1. 告知系统支持的语言:在app.json的android字段下添加locales数组:
{
  "expo": {
    "android": {
      "locales": ["en", "zh-Hans", "ja"]
    }
  }
}

配置后,用户在Android系统设置的「系统」-「语言和输入法」-「语言」中切换语言时,应用会自动匹配对应语言(无手动设置时)。
2. Localization.locale的同步逻辑:和iOS完全相同——未手动设置时跟随系统语言变化,已手动设置则优先读取AsyncStorage的值,同样可以通过Localization.onLocaleChange监听系统语言变化事件。

内容的提问来源于stack exchange,提问作者Ken Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:35:40