javascript-如何将变量放在分配给变量的字符串内?

时间:2018-10-17 23:43:51

标签: javascript

我正在尝试为我的项目开始一些本地化,我只是意识到我不知道如何做一个简单的事情,将变量放入我的语言环境变量的字符串中。

我在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中插入两个变量?

感谢您的帮助!

2 个答案:

答案 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。但是,如果需要在单个变量中使用它们,则可以选择数组或对象。

请参阅:Can I have multiple values in a single variable?