Модуль Babel-core не работает с Lingui
Я новичок в концепции локализации моего реагирующего приложения. После некоторых онлайн-исследований кажется, что jsLingui - лучшая библиотека для использования и реализации перевода в моем приложении React. После уроков из https://lingui.js.org/tutorials/react.html все выглядит довольно просто. но когда я запускаю команду
$ lingui extract, я получаю ошибку:
module.js: 557 throw err; Ошибка: не удается найти модуль "babel-core" в Function.Module._resolveFilename (module.js:555:15) в Function.Module._load (module.js:482:25) .....
Я попытался переустановить babel-core, и он показывает установленное. Даже когда я проверяю свою файловую систему, я вижу папку как node_modules/babel-core . Я также проверил свой package.json и вижу "babel-core": "^6.26.3" как часть моих devDependencies. Пожалуйста, любые идеи вокруг этого будут полезны.
Кроме насущного вопроса, у меня также есть несколько других вопросов;
1) В документации я не уверен, где хранить созданный файл.babelrc. Я надеюсь, что это должно быть в моей папке Babel-Core.
2) Когда я читал в библиотеке jslingui, я обнаружил, что они все еще работают над чем-то, что поможет сделать отдельные переводы постранично. Я не знаю, выполнена ли эта задача или все еще находится в стадии разработки, потому что она мне действительно интересна, так как мое приложение очень большое и загрузка всего перевода может стать реальной проблемой.
3) Что если у меня есть текст в одной части моего приложения, который точно такой же, как в другой части моего приложения, возможно ли написать его в одном разделе и вызвать идентификатор в другой части, чтобы вернуть мне информацию? или это выходит за рамки библиотеки.
4) Я создаю социальную платформу, поэтому у меня есть информация, поступающая из БД, которую я не знаю по содержанию, поэтому такая информация не может быть переведена с помощью jslingui, как она есть. Я хотел бы представить перевод этой информации (аналогично тому, что происходит в Facebook). Я знаю, что для этой задачи нужен серьезный искусственный интеллект в области обработки естественного языка и машинного обучения. Пожалуйста, любая хорошая библиотека, которую я могу использовать, чтобы помочь моему приложению переводить только части данных, предоставленных ему (определенно информация, поступающая из БД)??. Я пробовал поискать в Google по этому вопросу, но ничего конкретного не получил (примечание: я не хочу переводчик Google, потому что он поможет перевести всю страницу + имена и т. Д.), Что может испортить пользовательский опыт моего приложения.
jslingui
Спасибо
1 ответ
Я попытался переустановить babel-core, и он показывает установленное. Даже когда я проверяю свою файловую систему, я вижу папку как node_modules/babel-core . Я также проверил свой package.json и вижу "babel-core": "^6.26.3" как часть моих devDependencies. Пожалуйста, любые идеи вокруг этого будут полезны.
Если вы установили @lingui/cli
глобально, пожалуйста, удалите его и переустановите локально. Если вы используете Babel 7 (ваши плагины / пресеты начинаются с @babel/
), то вам нужно установить babel-core@^7.0.0-bridge.0
а также @babel/core
, Оба локально как devDependencies. В некоторых случаях также помогло старое доброе выключить и снова включить: rm -rf node_modules
и переустановить все...
1) В документации я не уверен, где хранить созданный файл.babelrc. Я надеюсь, что это должно быть в моей папке Babel-Core.
Вы должны держать его в корне своего хранилища (рядом с package.json
) если у вас нет особых потребностей.
2) Когда я читал в библиотеке jslingui, я обнаружил, что они все еще работают над чем-то, что поможет сделать отдельные переводы постранично. Я не знаю, выполнена ли эта задача или все еще находится в стадии разработки
Это все еще в стадии разработки. Однако, это немного по-другому - это помогает вам создавать отдельные файлы сообщений, но не автоматически. Это то, что нам нужно решить в следующих версиях.
3) Что если у меня есть текст в одной части моего приложения, который точно такой же, как в другой части моего приложения, можно ли написать его в одном разделе и вызвать идентификатор в другой части, чтобы вернуть мне информацию?
У вас есть два варианта. Либо вы используете сгенерированные идентификаторы сообщений:
// App.js
<Trans>Hello World</Trans>
// Component.js uses the same message
<Trans>Hello World</Trans>
В этом случае вам нужно только перевести Hello World
один раз, потому что сообщения группируются при сборе из исходных файлов.
Другой вариант заключается в том, что вы используете пользовательские идентификаторы:
// App.js - define message
<Trans id="msg.hello">Hello World</Trans>
// Component.js - use message
<Trans id="msg.hello" />
4) Я создаю социальную платформу, поэтому у меня есть информация, поступающая из БД, которую я не знаю по содержанию, поэтому такая информация не может быть переведена с помощью jslingui, как она есть....
Я не могу рекомендовать какой-либо подход здесь, но, похоже, вам нужно использовать машинный перевод. Либо Google Translate, либо лучше, если вам удастся найти его. Я думаю, что это будет либо некачественным, либо дорогим, потому что, как вы сказали, это не тривиальная задача.