我正在尝试为我的项目开始一些本地化,我只是意识到我不知道如何做一个简单的事情,将变量放入我的语言环境变量的字符串中。
我在app.js
中的原始字符串是`Input must be between ${props.minValue} and ${props.maxValue}.`
例如
let errorMsg = `Input must be between ${props.minValue} and ${props.maxValue}.`
,我想将其分配给INPUT_MUST_BE_BETWEEN
内的变量en.js
,这样我的代码现在看起来像
let errorMsg = validation.INPUT_MUST_BE_BETWEEN
我的en.js
的样子
define({
validation: {
FIX_ERRORS: "Please fix the errors.",
SPECIAL_CHARACTERS_NOT_PERMITTED: "Special Characters not permitted.",
WHITESPACE_NOT_PERMITTED: "Special Characters not allowed.",
REQUIRED_FIELD: "This field is required.",
INPUT_MUST_BE_BETWEEN: `Input must be between and .`,
NOT_A_VALID_URL: "Not a valid URL"
}
}
如何在INPUT_MUST_BE_BETWEEN
中插入两个变量?
感谢您的帮助!
答案 0 :(得分:2)
您的问题非常不清楚。
我个人认为您应该使用许多可以将i18n添加到您的应用程序的软件包之一(例如,我看到您正在使用道具,因此可以使用https://github.com/i18next/react-i18next)。
无论如何,如果我理解正确,您可以将INPUT_MUST_BE_BETWEEN
转换为一个函数并将这两个变量传递给该函数,以返回正确的字符串:
例如:
function INPUT_MUST_BE_BETWEEN(min, max) {
return `Input must be between ${props.minValue} and ${props.maxValue}.`
}
但是,您的问题仍然不清楚,请尝试对其进行编辑,以便我可以解决您的问题:)
UDPATE:
您显示的代码可以像这样重构:
define({
validation: {
FIX_ERRORS: "Please fix the errors.",
SPECIAL_CHARACTERS_NOT_PERMITTED: "Special Characters not permitted.",
WHITESPACE_NOT_PERMITTED: "Special Characters not allowed.",
REQUIRED_FIELD: "This field is required.",
INPUT_MUST_BE_BETWEEN: (min, max) => `Input must be between ${min} and ${max}.`,
NOT_A_VALID_URL: "Not a valid URL"
}
}
重点是我不会那样做。我会使用模板文字的标记功能(例如,请查看此帖子:https://jaysoo.ca/2014/03/20/i18n-with-es2015-template-literals/)
同样,要点是,我根本不会使用个人解决方案,我向您展示了在这种情况下可以使用的软件包,我会推荐它。
答案 1 :(得分:0)
为了保持可读性,我将使用minValue和maxValue。但是,如果需要在单个变量中使用它们,则可以选择数组或对象。