Лайфрей.Language.get(«ключ») больше не работает на Javascript с Liferay 7.3

#liferay

Вопрос:

У меня был liferay 7.0, когда вы открываете ispect ( Ctrl Shift I), затем переходите в консоль и пишите

для английского языка

Лайфрей.Language.get(«войти»);

«Войти»

немецкий язык

Лайфрей.Language.get(«войти»);

«Anmelden»

Но теперь , когда я перешел на Liferay 7.4, я получаю

для английского языка

Лайфрей.Language.get(«войти»);

«войти»

немецкий язык

Лайфрей.Language.get(«войти»)

«войти»

введите описание изображения здесь

Об этой проблеме было сообщено https://issues.liferay.com/browse/LPS-123191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

https://help.liferay.com/hc/en-us/articles/4403607020813-Liferay-Language-get-method-is-no-longer-working-with-string-variables-as-of-DXP-7-3

Комментарии:

1. Пожалуйста, обратите внимание

Ответ №1:

Из одного из комментариев в билетах, которые вы сами связали:

Эта опция была исключена в соответствии с LPS-113569 и больше недоступна. Вы можете получить дополнительную информацию в запросе на вытягивание, в котором такая функциональность не рекомендуется:

Лайфрей.Language.get заменен языковым фильтром, и мы также хотим удалить зависимость AUI, поэтому в этом изменении мы переносим Liferay.Язык.получите функцию для интерфейса-js-web.

Обратите внимание, что перенесенная версия ограничена простым возвратом ключа: она не сохраняет сомнительное резервное поведение старой реализации, которая использовала устаревший синхронный запрос к серверу для извлечения значения, что вызвало бы предупреждение консоли и, скорее всего, в конечном итоге вернет ключ в любом случае (если только соответствующее значение не оказалось в ядре); короче говоря, старая реализация только оклеила реальную проблему (сбой фильтра для выполнения его фактической работы).

Одна из связанных проблем связана с обновлением документации, чего еще не произошло.

Отредактируйте, следуя вашему комментарию:

Документация, на которую вы ссылаетесь в своем комментарии, выглядит как еще не обновленная документация.

В общем, я подтвердил ваше утверждение (которое, кстати, не было вопросом).: Действительно, функция, которую вы использовали, становилась все менее и менее полезной (так как она была хороша только для нескольких переводов из ядра, никогда из какого-либо модуля, и извлекала их убивающим производительность способом. Невозможно расширить его, чтобы получить ключи всех модулей и сделать это эффективно, поэтому вам следует использовать любую технику, которую используют библиотеки, используемые вами для перевода вашего интерфейса)

В случае, если вы создаете свой пользовательский интерфейс с помощью JSP, это было бы так <liferay-ui:message key="your-key-of-choice"/> . В других случаях вы знаете, что используете, и у этой платформы определенно есть средства для обеспечения локализации.

Комментарии:

1. извините, я не получил вашего ответа! Ты имеешь в виду, что мне нужно подождать ? Я тоже нашел этого дока github.com/liferay/liferay-docs/blob/master/en/developer/…

2. Спасибо за ваш четкий ответ, я использую angular и freemarker, но в некоторых областях это просто javascript, я постараюсь найти способ избежать использования javascript

3. ну, есть также способы локализации javascript (и в любом случае angular не так уж далек от javascript).

4. можете ли вы предоставить мне хороший способ локализации ?

5. Я не угловатый парень, прости. На самом деле, я не такой уж и сторонний парень… это был бы отдельный вопрос, такой как «как я могу локализоваться в angular?» — но на него, вероятно, хорошо ответят уже в документации angular

Ответ №2:

да, это правда, это больше не работает , как сказал Олаф Кок , вам нужно реализовать новый способ локализации javascript, для этого есть инструмент npm @clavis/translation-transformer

Комментарии:

1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.

2. да, изначальная проблема была решена в Жизни, но не для сообщества . help.liferay.com/hc/en-us/articles/… решение, о котором я упоминал ранее, заключается в > > skypack.dev/view/@clavis/translation-transformer