Flutter iOS 调起相机、相册显示英文,需要改成中文

一、解决问题

  • flutter 相机使用的是 image_picker 插件,打开中文的问题跟原生开发解决思路是一样的。

  • 在开发相机、相册功能时,默认调起展示的英文,可以通过原生工程修改 info 配置,添加:

    Localization native development region -> String -> zh_CN

    Localized resources can be mixed -> Boolean -> YES

    注意:推荐从原工程 Target 中进入修改,直接修改 info.plist 文件有概率不生效,可能是同步问题,理论上来说都可以,如果遇上了这个问题了可以尝试下。下面也提供了 info.plist 配置方式。

    在这里插入图片描述

  • 配置细节了解:

    通常配置 Localization native development region 配置后就生效了,而 Localized resources can be mixed 属于可选,可以加一个尝试一下再追加。

    如果两个配置都设置了,还没有生效,那么就还需要添加一下资源包:

    在这里插入图片描述

    加了资源包后,重新运行看下有没有问题,按理论上基本就不会存在问题了,如果还有还可以强制设置一下默认:

    扫描二维码关注公众号,回复: 17584736 查看本文章

    在这里插入图片描述

    到这还不行,重新找文档吧。

二、info.plist 配置与介绍总结

1. Localization native development region

  • 作用:这个键指定了应用的默认区域设置。如果你将其设置为某个特定的区域(例如 zh_CN),并且没有设置其他区域相关的资源,它将会使你的应用在默认情况下使用该区域的语言和格式。
  • 效果:即使没有在应用中本地化所有资源文件,系统也会根据这个设置提供默认的区域语言。
示例
<key>Localization native development region</key>
<string>zh_CN</string>

2. Localized resources can be mixed

  • 作用:这个设置允许混合使用不同区域的资源。如果启用了它,资源文件(例如 strings、图片等)可以不严格依赖于区域设置,这意味着可以在多个区域中共享资源,而不需要为每个区域单独维护一组资源。

  • 效果:即使没有明确为每个区域提供本地化资源,这个设置也会让应用根据开发设置的默认语言进行显示。

示例
<key>Localized resources can be mixed</key>
<true/>

结论

  • 只要 Localization native development region 设置正确,应用会优先使用该区域的语言。例如,zh_CN 会让系统默认使用简体中文。
  • 如果希望更灵活地使用资源,并且不强制按地区创建多个资源文件,可以启用 Localized resources can be mixed,这样即使没有为所有地区提供资源,应用也可以正常运行。

实际应用中

  • 如果希望应用强制使用中文,并且不需要其他语言的支持,那么只配置 Localization native development regionzh_CN 就足够了。
  • 如果需要更灵活地处理不同语言和地区的资源,可以同时启用 Localized resources can be mixed