How translations work

There are three places in frontend code that relate to translation/i18n. They are

  1. The app shell, in locale.ts. This sets up i18next and react-i18next.

  2. The OpenMRS Component Decorator, in which getLifecycle/getAsyncLifecycle wraps root components. This provides the connection between the i18next "backend" (still on the client side, despite the name) and the microfrontend it wraps.

  3. The microfrontend, which uses the `t` function or `<Trans>` component to produce rendered content.