На моей работе мы создаем наши собственные библиотеки, которые мы можем разделить между проектами. Библиотеки - это пакеты npm, которые мы размещаем на нашем gitlab. Мы используем главным образом машинописный текст и веб-пакет для их объединения и использования.
Теперь я буду обозначать библиотеки как «библиотеку», а также любой проект, который их использует (будь то WEB или мобильный)«потребитель».
Проблема, которую мы пытаемся выяснить, заключается в том, как мы можем использовать интернационализацию в этих проектах (i18next в этом отношении).
Внутри одного пакета, если выинициализируйте i18next (i18next.init(...)
), вы можете вызвать его метод перевода и получить перевод. Поэтому мы подумали - мы могли бы включить i18next в нашу библиотеку, и он использовал бы инициализированный i18next и получить значение из файлов перевода.
В наших библиотеках мы устанавливаем i18next в качестве внешнего модуля, чтобы онне связывает его снова, когда мы его потребляем.
Я сделал пример и разместил его на github: https://github.com/leqwasd/i18nextIssuesInLibraries
Итак, проблема в том, что библиотека 1818 включена толькоОказавшись у потребителя, его экземпляр все еще является совершенно новым, когда библиотека пытается его использовать - i18next.t("key")
работает в Consumer
, но не работает в Library
Как я могу сделатьэто работает, так что моя библиотека использует экземпляр i18next основного потребительского проекта?