col*_*lla 15 javascript internationalization react-native expo
我有一个反应本机应用程序,我正在使用 expo。
我想翻译我的移动应用程序,因此我将使用 expo-localization 和 i18n-js,它们是我在expo 文档中安装的。
然后我将其导入到我的 App.js 中,如下所示:
import * as Localization from "expo-localization";
import i18n from "i18n-js";
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样导入:
import * as Localization from "expo-localization";
import { I18n } from "i18n-js";
Run Code Online (Sandbox Code Playgroud)
但导入 i18n 时出现以下错误:
Unable to resolve "make-plural" from "node_modules/i18n-js/dist/import/Pluralization.js"
Run Code Online (Sandbox Code Playgroud)
在我的 package.json 中,我有以下版本:
"i18n-js": "^4.2.3",
"expo-localization": "~13.1.0",
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
小智 18
记得还要延长expo/metro-config
const { getDefaultConfig } = require('expo/metro-config');
const config = getDefaultConfig(__dirname);
// Adds support for `mjs` files
config.resolver.sourceExts.push('mjs' );
module.exports = config;
Run Code Online (Sandbox Code Playgroud)
Cru*_*inh 16
我可以i18n-js通过编辑我的 Metro 配置来使用 4.2.3。
如果我理解正确的话,我认为问题在于make-plural包含一些 Metro 默认情况下不拾取的源文件。您可以通过确保扩展程序包含在resolver.sourceExts您的设置中来解决此问题metro.config.js,如下所示:
const defaultSourceExts = require('metro-config/src/defaults/defaults').sourceExts
const sourceExts = [ 'jsx', 'js', 'ts', 'tsx', 'json', 'svg', 'd.ts', 'mjs' ].concat(defaultSourceExts)
module.exports = {
resolver: {
sourceExts
},
}
Run Code Online (Sandbox Code Playgroud)
我想我可能会在列表中添加一些重复项,但这就是目前对我有用的。
小智 12
降级至
“i18n-js”:“4.2.0”
它开始在最新版本上使用 make-plural https://github.com/fnando/i18n/blob/main/CHANGELOG.md
| 归档时间: |
|
| 查看次数: |
6998 次 |
| 最近记录: |