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

时间:2018-04-26 16:54:30

标签: amazon-web-services internationalization serverless-framework i18next react-intl

我正在AWS上构建一个无服务器的nod​​e.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));
}

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

B中。翻译在前端(i18n,react-intl)

backend hello.js回复

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

前端hello.js

<FormattedMessage {...response} />

ja.json(i18n的翻译文件)

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

这样,看起来一切正常,没有任何麻烦,但我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

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

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

如果您想了解详情或在行动中查看https://locize.com(或直接在https://www.locize.io/ 14d免费试用版试用),而应用目前只提供英文版所有文字都来自xhr加载并在运行时应用(i18n)。

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

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