expo处理android+ios多语言问题
问题
我的多语言名称配置方法大概是:
- 在项目根目录放置一系列多语言名称的json(个人放在/locales/meta目录); 每个语言文件格式大致如下: 文件名最好完全和语言Tag一致,如zh-Hans.json等。
// en.json
{
"app_name": "iChingLife",
"CFBundleDisplayName": "iChingLife",
"NSContactsUsageDescription": "English version"
}
- 在expo项目的app.json中配置上述文件路径;
"expo": {
...
"locales": {
"zh-Hans": "./locale/meta/zh-Hans.json",
"zh-Hant": "./locale/meta/zh-Hant.json",
"ja": "./locale/meta/ja.json",
"en": "./locale/meta/en.json",
"ko": "./locale/meta/ko.json",
"es": "./locale/meta/es.json"
},
...
}
这样的方法对ios已经完全ok了,但在android build时会出错误。
原因是"CFBundleDisplayName","NSContactsUsageDescription"这两个iOS专用的项也会写入android/app/src/main/res目录下各种语言的values目录下的strings.xml中,和主values目录下的strings.xml有冲突。
以前我的处理方法很简单,一个个改文件(删除不必要项)。
但是在新版expo(v54+)下,此法失效,原因和之前splits控制大小的问题一样的。