Интернационализация на бессерверном сервере (AWS)

Я создаю бессерверное веб-приложение node.js на AWS (с использованием Serverless Framework) и пытаюсь реализовать интернационализацию на бэкэнде (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}。",
}

Таким образом, похоже, что все работает нормально без каких-либо проблем, но я что-то упускаю?


comment
@ user234461 Я знаю, что Stackoverflow - это английский сайт, но почему бы мне не задать вопрос об интернационализации? Многие компании в англоязычных странах предоставляют услуги на нескольких языках, и им также необходимо подумать об интернационализации.   -  person rhythm    schedule 26.04.2018
comment
Потому что AWS - это плохо   -  person user234461    schedule 27.04.2018


Ответы (1)


Мы делаем то же, что вы предлагаете в B) ... в основном у нас есть бэкэнд на AWS lambda и доступ к данным из Dynamodb.

Все наши переводы происходят во фронтенде. Единственное отличие: мы используем i18next (более конкретный response-i18next, но не имеет значения, если this или response-intl -> просто предлагает немного больше бэкэндов, кеширования, определения языка, ... https://www.i18next.com/).

Если вы хотите узнать больше или увидеть это в действии, проверьте https://locize.com (или попробуйте его прямо на https://www.locize.io/ 14d бесплатная пробная версия), в то время как приложение в настоящее время доступно только на английском языке все тексты поступают через загрузку xhr и применяются во время выполнения (i18n).

Если вам интересно, как мы используем serverless на locize.com, посмотрите следующие слайды из выступления, которое мы произнесли в прошлом году: https://blog.locize.com/2017-06-22-how-locize-leverages-serverless/

И последнее, но не менее важное ... если вы хотите получить максимальную отдачу от своих сообщений ICU и проверки, выделения синтаксиса, правильного преобразования множественного числа и машинного перевода, не разрушая icu dsl во время MT -> Просто попробуйте наш сервис ... поставляется с 14-дневной бесплатной пробной версией.

person jamuhl    schedule 28.04.2018