I18N: Add Lingui core translation framework. (#41827)

* I18N: Add Core Lingui framework for translating the UI

* Make FieldSet accept ReactNode for the label, so it can be translated

* Translate a phrase in the User profile edit form

* Translate phrase

* run lingui compile before webpack builds

* init i18n more lazily

* i1n:compile in drone lint step

* wip for getting tests to work

* Use mock lingui/macros because its too hard to use the real macros in Jest...

* mock messages for tests

* use specific lingui version

* add comment for test helper

* we actually don't need the i18n setup in tests because we mock out <Trans />

* update package.json

* remove unneded imports

* revert back babel core version

* Create a I18nProvider wrapper
This commit is contained in:
Josh Hunt
2021-12-15 16:00:37 +00:00
committed by GitHub
parent 50c6c7a528
commit 4f6d08f14b
18 changed files with 636 additions and 104 deletions

View File

@@ -28,6 +28,14 @@ module.exports = {
'\\.svg': '<rootDir>/public/test/mocks/svg.ts',
'\\.css': '<rootDir>/public/test/mocks/style.ts',
'monaco-editor/esm/vs/editor/editor.api': '<rootDir>/public/test/mocks/monaco.ts',
// lingui-macro (for i18n) makes use of babel-macro, which we do not enable in tests, so we
// provide our own mock component
'@lingui/macro': '<rootDir>/public/test/mocks/linguiMacro.tsx',
// i18n messages.js files are auto-generated, and may not exist when the tests are ran.
// Because we mock out <Trans /> anyway, we can mock the messages also
'locales/\\w+/messages$': '<rootDir>/public/test/mocks/i18nMessages.ts',
},
watchPathIgnorePatterns: ['<rootDir>/node_modules/'],
};