无服务器后端 (AWS) 的国际化

Internationalization on serverless backend (AWS)

我正在 AWS 上构建无服务器 node.js Web 应用程序(使用无服务器框架)并尝试在后端实现国际化 (API Gateway/Lambda/DynamoDB)。

对于前端(React),我用redux存储选择的语言,用react-intl切换多国语言。对于后端,实现国际化的最佳方式是什么?

这里有两种我能想到的方法,但一定有更好的。

一个。后台翻译(从路径参数获取语言)

path: {language}/validate

validate.js

export function main(event, context, callback) {
    const language = event.pathParameters.language;
    const data = JSON.parse(event.body);
    callback(null, validate(language, data));
}

这样,我需要将语言作为函数参数传递到任何地方,这是不可取的。

乙。前端翻译 (i18n, react-intl)

后端hello.js响应

{
    id: "samplePage.message.hello",
    defaultMessage: `Hello, ${name}`,
    values: { name }
}

前端hello.js

<FormattedMessage {...response} />

ja.json(i18n 的翻译文件)

{
    "samplePage.message.hello": "こんにちは、{name}。",
}

这样看起来一切正常,没有任何问题,但我是否遗漏了什么?

我们按照您在 B) 中的建议做同样的事情...基本上我们在 AWS lambda 上有我们的后端并从 dynamodb 访问数据。

我们所有的翻译都发生在前端。我们使用 i18next 的唯一区别(更具体的 react-i18next 但如果这个或 react-intl 没有区别 -> 只是提供更多的后端、缓存、语言检测,...https://www.i18next.com/)。

如果您想了解更多信息或在操作结帐中查看 https://locize.com (or directly try it at https://www.locize.io/ 14 天免费试用)虽然该应用程序目前仅提供英文版本,但所有文本均通过 xhr 加载并在运行时应用(i18n ).

如果对 locize.com 我们如何使用无服务器感兴趣,请参阅我们去年发表的演讲中的以下幻灯片:https://blog.locize.com/2017-06-22-how-locize-leverages-serverless/

最后但并非最不重要的...如果您想通过在 MT 期间不破坏 icu dsl 来充分利用您的 ICU 消息和验证、语法突出显示以及适当的复数转换和机器翻译 -> 请给我们的服务一个试试...它附带 14 天免费试用。