Отсутствует сообщение: "app.homepage.title" для локали: "оно", с использованием сообщения по умолчанию в качестве резервного - PullRequest
0 голосов
/ 21 ноября 2018

На моей веб-странице настроено react-intl, и я подтвердил, что моя intl опора содержит следующее:

{
    locale: 'it',
    messages: {
        it: {
            app.homepage.title: 'Casa'
        }
    }
}

Да. Я получаю сообщение об ошибке:

[React Intl] Missing message: "app.homepage.title" for locale: "it", using default message as fallback.

Я не уверен, что делаю не так.Я использую intl следующим образом:

const title = intl.formatMessage({
  id: "app.homepage.title",
  defaultMessage: "Home"
});

Импорт сообщений

Я загружаю сообщения из локально json файла, например, так:

import Italian from "app/translations/it.json";
import locale_en from "react-intl/locale-data/en";
import locale_it from "react-intl/locale-data/it";

addLocaleData([...locale_en, ...locale_it]);

const loadTranslation = () => {
  const urlParams = new URLSearchParams(window.location.search);
  const locale = urlParams.has("locale")
    ? urlParams.get("locale")
    : navigator.language;
  const messages = {
    it: Italian,
    en: null
  };

  return { locale, messages };
};

const { locale, messages } = loadTranslation();

...

<IntlProvider locale={locale} messages={messages}>
    <Provider store={store}>
      <App />
    </Provider>
</IntlProvider>

Мой файл перевода содержит следующее:

{
  "app.signup": "Iscriviti",
  "app.login": "Accesso",
  "app.homepage.title": "Casa"
}

1 Ответ

0 голосов
/ 21 ноября 2018

Хорошо, так что я понял это.Мне нужно изменить функцию loadTranslations следующим образом:

const loadTranslation = () => {
  const urlParams = new URLSearchParams(window.location.search);
  const locale = urlParams.has("locale")
    ? urlParams.get("locale")
    : navigator.language;
  const messages = {
    it: Italian,
    en: null
  };

  return { locale, messages: messages[locale] };
};
...