Перевод для некомпонентов. (Я уже посмотрел на Intl)

#reactjs #react-redux #internationalization

Вопрос:

Есть ли в структуре приложений что-то, что поддерживает прямую трансляцию данных (ПРИМЕЧАНИЕ: я не хочу, чтобы Intl React, так как он предназначен для локализации данных до их визуализации). Мне нужно локализовать данные, присутствующие в состоянии, и обновить состояние переведенными данными.

Intl React предназначен для использования с компонентами, и мне требуется перевод данных, присутствующих вне компонентов. Я не хочу использовать модуль createIntl, так как для этого требуется ручное предоставление локали и сообщений.

Это код, с которым я имею дело. Он присутствует вне компонента.

 export function func () {
   client.get (url, {}).then (
      response => {
          // handle error
    }).then(data => {
        // This is where i want to translate the data based on the locale i am in
        // so that the data this translated data is present in the state
      }
// error-handling, more code ...
}
 

Ответ №1:

Вы можете использовать i18next для перевода данных в обычный js.

Основной Пример:

 import i18next from 'i18next';
i18next.init({
  lng: 'en', // if you're using a language detector, do not define the lng option
  debug: true,
  resources: {
    en: {
      translation: {
        "key": "hello world"
      }
    }
  }
});
// initialized and ready to go!
// i18next is already initialized, because the translation resources where passed via init function
document.getElementById('output').innerHTML = i18next.t('key');
 

Кстати, почему бы не перевести данные на стороне сервера? Вы можете столкнуться с некоторыми подобными случаями export excel , которые также могут потребовать перевода.