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

переключение локализации по куке #225

Merged
merged 12 commits into from
Aug 2, 2024

Conversation

prt0117
Copy link
Contributor

@prt0117 prt0117 commented Jun 27, 2024

No description provided.

@prt0117
Copy link
Contributor Author

prt0117 commented Jun 28, 2024

Также замечено, что сейчас при генерации фронта ресурсы в разных языковых директориях получают одинаковый анти-кеш хеш. Из-за этого для браузера, судя по всему, они выглядят одинаково и переключение языка не работает так, как требуется.
image

Но проблема с отсутствием анти-кеш хеша на файлах в папке /assets/i18n/ тоже существует паралелльно, судя по всему. ngx-translate/http-loader#25 и https://stackoverflow.com/questions/54840449/i18n-files-are-cached-in-production

@prt0117
Copy link
Contributor Author

prt0117 commented Jul 17, 2024

Также замечено, что сейчас при генерации фронта ресурсы в разных языковых директориях получают одинаковый анти-кеш хеш.

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

Но проблема с отсутствием анти-кеш хеша на файлах в папке /assets/i18n/ тоже существует паралелльно, судя по всему. ngx-translate/http-loader#25 и https://stackoverflow.com/questions/54840449/i18n-files-are-cached-in-production

Что касается файлов с локалью, то доработал, чтобы добавлялся хеш, как советовали на SO и в Гитхабе по ссылкам выше.

src/web/angular.json Show resolved Hide resolved
RUN node_modules/.bin/ng build --configuration en && mv dist/* /dist/
RUN cp ./src/environments/environment.prod.ts ./src/environments/environment.prod.ts.backup

RUN export RAND1=$(openssl rand -base64 12 | tr -dc A-Za-z0-9) && export RAND2=$(openssl rand -base64 12 | tr -dc A-Za-z0-9) \
Copy link
Contributor

Choose a reason for hiding this comment

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

Что то тут не то. Зачем нам хэш если мы при каждой отдельной локали должны подгружать только один файл. Т.е. переключились на русский подгрузили ru.json , переключились на английский подгрузили en.json тут проблем быть не должно

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Возможно, дело в том, что когда сейчас локаль переключается, фронт тянет в случае английского только en.json, а для русского и en.json, и ru.json.
Русская версия:
image
Английская:
image

Не знаю, с чем это связано.

Кстати, ещё вот такой баг сейчас есть #235 Возможно, как-то связано.

Copy link
Contributor

Choose a reason for hiding this comment

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

А этот баг #235 не из за того что переводы там забыли добавить?

Copy link
Contributor

Choose a reason for hiding this comment

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

Когда собираешь такое сообщение как раз появляется.
image

Copy link
Contributor

Choose a reason for hiding this comment

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

Кажется раньше я через qt linguist переводил. А ещё раньше google translate поддерживал .xlf можно было просто закинуть файл и от возвращал переведённый файл, но потом лавочку прикрыли, но возможно есть другие похожие сервисы которые так смогут.

Copy link
Contributor

Choose a reason for hiding this comment

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

То есть пропал target-language="en".

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

Copy link
Contributor

Choose a reason for hiding this comment

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

А теперь только source без target

target Это мы должны добавить либо через qt linguist либо через сервис какой то.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Давай это всё в отдельную задачу вынесем.

Создал задачку #238

Copy link
Contributor Author

Choose a reason for hiding this comment

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

А теперь только source без target

target Это мы должны добавить либо через qt linguist либо через сервис какой то.

что, поставить Qt Linguist? Или искать сторонний сервис?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

То есть пропал target-language="en".

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

у утилиты вот такие доступны ключи:

user@pc:~/svetit/src/web$ ./node_modules/.bin/ng extract-i18n --help
ng extract-i18n [project]

Extracts i18n messages from source code.

Arguments:
  project  The name of the project to build. Can be an application or a library.                      [string] [choices: "device-access", "device-access-e2e"]

Options:
      --help            Shows a help message for this command in the console.                                                                        [boolean]
  -c, --configuration   One or more named builder configurations as a comma-separated list as specified in the "configurations" section in angular.json.
                        The builder uses the named configurations to run the given target.
                        For more information, see https://angular.io/guide/workspace-config#alternate-build-configurations.                           [string]
      --browser-target  A browser builder target to extract i18n messages in the format of `project:target[:configuration]`. You can also pass in more than
                        one configuration name as a comma-separated list. Example: `project:target:production,staging`.                               [string]
      --format          Output format for the generated file.
                                         [string] [choices: "xmb", "xlf", "xlif", "xliff", "xlf2", "xliff2", "json", "arb", "legacy-migrate"] [default: "xlf"]
      --out-file        Name of the file to output.                                                                                                   [string]
      --output-path     Path where output will be placed.                                                                                             [string]
      --progress        Log progress to the console.                                                                                 [boolean] [default: true]

src/web/src/app/app.component.ts Show resolved Hide resolved
@lirik90
Copy link
Contributor

lirik90 commented Jul 30, 2024

Сделай ребейз пожалуйста.

@prt0117 prt0117 force-pushed the feature/165-remove_language_from_url branch from d72fd7d to ae65e22 Compare July 30, 2024 03:23
@prt0117
Copy link
Contributor Author

prt0117 commented Jul 30, 2024

Сделай ребейз пожалуйста.

Готово.

src/web/src/app/app.module.ts Outdated Show resolved Hide resolved
src/web/src/locale/messages.ru.xlf Outdated Show resolved Hide resolved
@lirik90 lirik90 merged commit f1b14a2 into develop Aug 2, 2024
@lirik90 lirik90 deleted the feature/165-remove_language_from_url branch August 2, 2024 09:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
2 participants