Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: locales xtraction #4

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

FrankJaskon
Copy link
Collaborator

@FrankJaskon FrankJaskon commented Jan 30, 2024

Добавил возможность извлекать переводы.

Сейчас реализована такая логика:

  1. Создаём locales/ru.json на уровне энтрипоинта.
  2. В компонентах, где используются переводы, добавляем на один уровень с src папку locales(можно пустую).
  3. В компонентах, в formatMessage, или FormattedMessage задаём id и defaultMessages.
  4. В энтрипоинте вызываем yarn extract-all. (добавил в postinstall, но он почему-то не отрабатывает, может я дурак).
  5. Скрипт генерирует для каждого компонента в энтрипоинте переводы, записывает их в [ComponentName]/locales/ru.json.
  6. В финале, из всех сгенерированных файлов собирается общий файл переводов на уровне энтрипоинта.

Сделал пока так, чтобы не добавлять провайдер к каждому компоненту, когда используем переводы.

@FrankJaskon FrankJaskon added the feature New feature or request label Jan 30, 2024
@FrankJaskon FrankJaskon self-assigned this Jan 30, 2024
@TorinAsakura TorinAsakura changed the title feat: add extraction of translations feat: locales xtraction Jan 30, 2024
Copy link
Collaborator

@Nelfimov Nelfimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. отличная работа!!
  2. замечания поправить
  3. надо будет это вынести в отдельный пакет. Можешь посмотреть как сделаны генераторы, потому что идея такая же - наш пакет добавляем в энтрипоинт, а он собирает переводы по страницам и фрагментам, если иное не указано в аргументах. Так же перевести скрипт на ts, тогда jsdoc не нужен. И в пакет необходимо добавить readme для пользования им

packageExtensions:
'@atls-ui-parts/text@*':
dependencies:
'@emotion/react': '*'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вот с этим надо разобраться - почему он требует эмоушн хотя в зависимостях все есть. Проверь еще в гиперионе пожалуйста

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"dependencies": {
    "csstype": "3.1.3"
  },
  "devDependencies": {
    "@emotion/styled": "11.11.0",
    "@types/react": "18.2.48",
    "@types/styled-system": "5.1.22",
    "react": "18.2.0",
    "styled-system": "5.1.5"
  },
  "peerDependencies": {
    "@emotion/styled": "11.11.0",
    "react": "18.2.0",
    "styled-system": "5.1.5"
  },
  "publishConfig": {
    "access": "public",
    "main": "dist/index.js",
    "typings": "dist/index.d.ts"
  }

Нам не нужно его явно в пирах получать?

@emotion/react вообще не фигурирует в зависимостях для текста в гипперионе

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тогда надо обязательно добавить.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

создай пожалуйста таску на это дело

@FrankJaskon
Copy link
Collaborator Author

@Nelfimov

Изменил логику касательно проверки папок locales, вынес в отдельный пакет по аналогии с генераторами.

Добавил редми и вынес аргументы.

Проверь, если всё ок, то, как я понимаю, нужно будет создать таску, пойти в hyperion, поправить зависимости text компонента и добавить туда генератор.

Пока сделал костыль с temporary - чтобы пройти проверки, для hyperion-а потом попереименовываю и уберу temporary.

Copy link
Collaborator

@Nelfimov Nelfimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Поставь пожалуйста таску в гиперионе на зависимости text
  2. Надо подумать как мы можем делать то же самое с shared - в дельте некоторые фрагменты лежат там. Либо мы их используем без локали и передаем их через пропсы в фрагментах, либо надо генератор и там запускать

@FrankJaskon
Copy link
Collaborator Author

@Nelfimov

  1. Поставь пожалуйста таску в гиперионе на зависимости text

Добавил atls/hyperion#538

  1. Надо подумать как мы можем делать то же самое с shared - в дельте некоторые фрагменты лежат там. Либо мы их используем без локали и передаем их через пропсы в фрагментах, либо надо генератор и там запускать

Да, я думал об этом. Пока, согласно нашей архитектуре, было бы логичней использовать пропсы. Т.к раньше уже часто были проблемы из-за того, что переводы не определены во всех энтрипоинтах.

Или, как вариант, можем сделать дефолтное поведение, что для каждого энтрипоинта будем идти в shared и генерировать переводы.

@Nelfimov
Copy link
Collaborator

Ок тогда размещай генератор в гиперионе, паблис, а затем возвращаемся сюда и с зависимостью в энтрипоинте еще раз тестируем.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants