Commit graph

26 commits

Author SHA1 Message Date
Ahmad Bamieh
f1c854b9db
[i18n][system upgrade] Upgrade Intl Packages from v2 to v6 (#179506)
## Summary

Upgrading intl packages from v2 to v6

### Packages upgrade:

- [x] Add @formatJS packages
- [x] `react-intl` Upgraded
- [x] `intl-messageformat` Upgraded
- [x] `intl-format-cache` removed
- [x] `intl-relativeformat` removed
- [x] `intl-messageformat-parser` removed

### Todo list:
- [x] Refactor HTML tags
- [x] Refactor Upgrade tags
- [x] Refactor `kbn-i18n`
- [x] Refactor `kbn-i18n-react`
- [x] Refactor `FormattedRelative` to `FormattedRelativeTime`
- [x] Refactor polyfills
- [x] Refactor IntlShape types
- [x] Rewrite Providers
- [x] Rewrite tests using i18n
- [x] Removed current pseudolocale implementation (tracker:
https://github.com/elastic/kibana/issues/180244)
- [x] Fix jest tests using rendered `Provider`
- [x] Remove no longer valid i18n packages documentation (tracker:
https://github.com/elastic/kibana/issues/180259)

Closes https://github.com/elastic/kibana/issues/178968
Closes https://github.com/elastic/kibana/issues/38642


## Notes to code reviewers
For team other than the core team, please review your plugins code
changes by filtering files by codeowners.


### Test Snapshot updates
Most of the changes are refactors of renamed functions and changed ICU
syntax.

The main updates are snapshot changes where `FormattedMessage` is now
memoized so snapshots capturing the html tree needed to be updated to
use `<Memo(MemoizedFormattedMessage)` instead of `<FormattedMessage`


### ICU now supports HTML tags:
before:
```
<FormattedMessage
  defaultMessage="To buy a shoe, { link } and { cta }"
  values={{
    link: (
      <a class="external_link" target="_blank" href="https://www.shoe.com/">
        visit our website
      </a>
    ),
    cta: <strong class="important">eat a shoe</strong>,
  }}
/>
```
after:
```
<FormattedMessage
  defaultMessage="To buy a shoe, <a>visit our website</a> and <cta>eat a shoe</cta>"
  values={{
    a: msg => (
      <a class="external_link" target="_blank" href="https://www.shoe.com/">
        {msg}
      </a>
    ),
    cta: msg => <strong class="important">{msg}</strong>,
  }}
/>
```

### Escape character to prevent ICU parsing changed from double slashes
to single quotes:
before: `\\{escaped\\}`
after: `'{escaped}'`

### No need for Intl Shape
the new packages under formatJS are written in typescript and come with
types support out of the box so no need to set types when using i18n.

Renamed `InjectedIntlProps` with `WrappedComponentProps`.
Removed `prop-types` and `intlShape` in favor of `IntlShape`.

### FormattedRelative has been renamed to FormattedRelativeTime and its
API has changed significantly. See
[FormattedRelativeTime](https://formatjs.io/docs/react-intl/upgrade-guide-3x#formattedrelativetime)
for more details.

### All tags specified must have corresponding values and will throw
error if it's missing
All tags are now parsed and expected to be formatted properly (all
opened tags must be closed).

To skip this check you can use the `ignoreTag: true` property

```
i18n.translate('xpack.apm.agentConfig.captureJmxMetrics.description', {
      defaultMessage: 'This is not an HTML tag <JMX object name pattern>' +
      ignoreTag: true,
    }),
```

**When do I use ignore tags?**

If your message has HTML tags, it is preferred not to ignore the Tag to
have some string verification that the html tags you are adding are
properly formatted and closed.

If it the text between brackets is not an HTML tag and it is just a
fomat preference then using `ignoreTag` makes sense.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Tiago Costa <tiago.costa@elastic.co>
2024-06-02 16:50:33 +03:00
Tiago Costa
9d662b77be
chore(NA): splits types from code on @kbn/i18n (#119256)
* chore(NA): auto creation of the package.json for the new types pkg rule

* chore(NA): first alpha api extractor working version

* chore(NA): support kbn-analytics

* chore(NA): correctly read tsconfig files and deps from ts_config rule

* chore(NA): layed out pkg_npm_types tree artifact custom rule

* chore(NA): missing todos

* chore(NA): node modules link mapping

* chore(NA): fully working pkg_npm_types rule

* chore(NA): fix changes on new packages using elastic datemath pkgs

* docs(NA): remove todo

* docs(NA): last todo text correction

* chore(NA): removed commented lines

* fix(NA): include missing package version

* chore(NA): include license keys

* chore(NA): change mock types package into private

* chore(NA): disable validator on ts_project rule

* chore(NA): use the wrapper for ts_project

* commit using @elastic.co

* chore(NA): commit using @elastic.co

* chore(NA): split types from code on @kbn/i18n

* chore(NA): update yarn.lock file

* chore(NA): split @kbn/i18n and @kbn/i18n-react

* chore(NA): missing import fix

* chore(NA): fix jest project configs

* chore(NA): change imports on kbn i18n

* chore(NA): change imports on kbn i18n

* chore(NA): correct loader imports

* chore(NA): missnig i18nLoader export key

* chore(NA): fix type exports

* chore(NA): export type only

* chore(NA): export type only

* fix(NA): type exports

* chore(NA): missing @Kbn/i18n/react imports

* chore(NA): missing skip path for kbn-i18n-react

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
2021-11-24 17:18:03 +00:00
Ahmad Bamieh
d19510535a
[i18n] remove angular i18n and move the remains to monitoring plugin (#115003) 2021-10-15 12:09:19 +03:00
Varun Sharma
525f708f24 Update README.md with changes in I18n engine APIs (#47290) 2019-10-11 16:53:36 +01:00
Court Ewing
2d171c92f5 Fix path references into and out of x-pack/legacy 2019-06-20 13:34:48 -04:00
Ahmad Bamieh
55e36a04aa
[i18n] [docs] Update docs to encourage static i18n import (#37858)
* update documentation

* Update docs/development/plugin/development-plugin-localization.asciidoc

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/GUIDELINE.md

* Update packages/kbn-i18n/GUIDELINE.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/README.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>

* Update packages/kbn-i18n/README.md

Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>
2019-06-04 15:01:11 +03:00
Tim Roes
b099a617bb
Fix i18n documentation (#30818) 2019-02-12 14:29:46 +01:00
Court Ewing
2ce51a5be5 Update paths to ui, server, deprecation, plugin_discovery in src/legacy
This commit accompanies the four that precede it. Rather than squash
them altogether, the four previous commits all do nothing except move
files to help avoid conflicts.
2019-02-11 10:41:37 -05:00
Aleh Zasypkin
d05437703d
Introduce I18nService core service and I18nContext. (#29379) 2019-02-04 13:38:00 +01:00
pavel06081991
1d2da963e8 [i18n] Add locale for lang html attribute (#28923)
* add locale for lang html attribute

* remove unused variable

* update readme

* fix unit tests

* add links to standards

* fix unit test

* Fix typos
2019-01-21 13:51:43 +03:00
Maryia Lapata
76ae4e6923
Update examples (#27657) 2018-12-21 12:39:42 +03:00
Leanid Shutau
eefde19a7f
[I18n] Update locale data for IntlRelativeFormat and IntlMessageFormat (#26468)
* [I18n] Update locale data for IntlRelativeFormat and IntlMessageFormat

* Update locales

* Add default relative formats

* Fix en locale formats

* Update readme

* Make setFormats public

* Update snapshots

* Resolve comments

* Update locales list

* Update snapshots

* Add locale data for pseudo-locale
2018-12-18 13:25:16 +03:00
Leanid Shutau
0b480f03b5
[I18n] Fix wrong FormattedMessage example in readme (#27035) 2018-12-13 11:19:33 +03:00
Leanid Shutau
46a8ad4a53
[I18n] Register translations before plugins init (#26078)
* Register translations before plugins init

* Fix i18n engine initialization

* Fix translationPath$ RxJS pipeline

* Move translations registration to mixin

* Fix arrays concatenation

* Use prettier

* Fix translations relative paths

* Use globby instead of glob

* Update docs

* Move globby to dependencies

* Get rid of translation directories config

* Update globby patterns

* Search only for current locale translation files
2018-12-12 15:03:58 +03:00
Leanid Shutau
0b6e8af1c5
[I18n] Update I18n readme (#26631) 2018-12-05 10:36:05 +03:00
Maryia Lapata
28345e0099
[i18n] Update guideline (#25098)
* Update guideline

* Fix code review comments
2018-12-03 16:02:47 +03:00
Aleh Zasypkin
3427a08108 [docs] fix typos in the i18n and development docs. 2018-12-03 13:03:14 +01:00
Leanid Shutau
c800f8d592
[I18n] Support interpreting individual i18n-values as html or text-only (#26274)
* [I18n] Add attribute for interpreting i18n-values as html or text-only

* Switch over to html_ prefixed values solution

* Update readme
2018-11-30 17:48:46 +03:00
Leanid Shutau
26b01ddbb0
[Tools] Rename i18n context field to description field (#25105)
* [Tools] Rename React i18n context field to description field

* Rename context to description in all i18n use cases
2018-11-06 15:54:05 +03:00
Leanid Shutau
71d284469b
[Tools] Add "values" property validation (#22538)
* [Tools] Add "values" property validation

* Fix values validation

* Fix typo in values regex

* Fix whitespaces handling

* Fix curly braces in regex

* Fix missing/unused values differentiation

* Use intl-messageformat-parser for parsing values from defaultMessage
2018-10-25 14:09:23 +03:00
Leanid Shutau
14e4e1744c
[I18n] Add one-time binding to angularjs i18n (#23499)
* Add one-time binding to angularjs i18n

* Add watcher for values property

* Watch values field only if it is provided

* Fix ci
2018-10-10 15:46:53 +03:00
CJ Cenizal
ecaf26edd0
Add Vanilla JS example to kbn-i18n README (#23556)
Rename Node.js to Vanilla JS and give example of internationalizing a string constant.
2018-09-27 07:16:52 -07:00
Aliaksandr Yankouski
9f3e36b170
Set kibana locale in kibana.yml config (#21201)
* set kibana locale in kibana.yml config

* remove accept-language-parser

* remove unnecessary tests

* fix readme description, fix description for locale in kibana.yml

* add point, that i18n.locale option should have exact match

* update kbn/i18n README

* Update README.md

* use getUiTranslations in render_mixin, remove i18n_mixin

* move registering translation files to mixin function
2018-08-02 14:43:22 +03:00
Aliaksandr Yankouski
adc4185898
Split i18n engine to specific parts by tech and by env (#20513)
* split to packages in accordance to specific library

* split to packages depending on tech and environment

* make env modules names consistent

* remove intl polyfilling

* move laoder to root, i18n folder to core
2018-07-16 17:02:06 +03:00
Aliaksandr Yankouski
92774b7b09
Use injectI18n Higher-Order Component instead of I18nContext (#20542)
* add implementation of I18nContext, docs for injectI18n hoc

* remove i18nContext wrapper, add docs for react components as classes
2018-07-13 12:21:50 +03:00
Maxim Tolochko
f522b31ac9
Add draft implementation of I18n engine (#19555)
* Add draft implementation of I18n engine

* Add i18n loader

* kbn-i18n refactoring

* Fix react i18n context and update doc

* i18n engine refactoring

* Fix locales data loading and add more jsdoc comments

* Fix verify_translations task

* I18n tests refactoring

* Add build scripts to kbn-i18n package

* Fix some bugs

* Move uiI18nMixin into ui_i18n folder

* Add 'browser' field to kbn-i18n package.json

* Get rid of "showError" method

* Make i18n and i18nLoader a singleton object

* Add default locale as fallback if translation files were not registered

* Update yarn.lock

* kbn-i18n fix

* Add default formats

* Try to fix build

* Add more examples into kbn-i18n/README.md

* kbn-i18n fix

* Fix app_bootstrap tests

* Add links to issues in TODO comments
2018-06-28 12:38:39 +03:00
Renamed from src/ui/ui_i18n/README.md (Browse further)