Модуль ядра Babel не работает с Lingui - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в концепции локализации моего реагирующего приложения.После некоторых онлайн-исследований кажется, что 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 Ответ

0 голосов
/ 18 октября 2018

Я попытался переустановить ядро ​​babel, и оно показывает установленное.Даже когда я проверяю свою файловую систему, я вижу папку как 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, я обнаружил, что они все еще работают над чем-то, что поможет сделать отдельные переводы постранично.Я не знаю, завершена ли эта задача или находится в стадии разработки

Она все еще находится в стадии разработки 1026 *.Однако это немного по-другому - это помогает вам создавать отдельные файлы сообщений, но не автоматически.Это то, что нам нужно решить в следующих версиях.

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, либо лучше, если вам удастся найти его.Полагаю, это будет либо некачественно, либо дорого, потому что, как вы сказали, это не тривиальная задача.

...