Skip to content

Commit

Permalink
[Chore] refactor dynamic require (#1971)
Browse files Browse the repository at this point in the history
  • Loading branch information
igorDykhta committed Sep 12, 2022
1 parent 8878cff commit b70c35c
Showing 1 changed file with 26 additions and 13 deletions.
39 changes: 26 additions & 13 deletions src/localization/src/messages.ts
Expand Up @@ -19,11 +19,22 @@
// THE SOFTWARE.

import en from './translations/en';
import {LOCALE_CODES} from './locales';
import fi from './translations/fi';
import pt from './translations/pt';
import es from './translations/es';
import ca from './translations/ca';
import cn from './translations/cn';
import ja from './translations/ja';
import ru from './translations/ru';

// Flat messages since react-intl does not seem to support nested structures
// Adapted from https://medium.com/siren-apparel-press/internationalization-and-localization-of-sirenapparel-eu-sirenapparel-us-and-sirenapparel-asia-ddee266066a2
export const flattenMessages = (nestedMessages, prefix = '') => {
export const flattenMessages = (
nestedMessages,
prefix = ''
): {
[key: string]: string;
} => {
return Object.keys(nestedMessages).reduce((messages, key) => {
const value = nestedMessages[key];
const prefixedKey = prefix ? `${prefix}.${key}` : key;
Expand All @@ -39,16 +50,18 @@ export const flattenMessages = (nestedMessages, prefix = '') => {
const enFlat = flattenMessages(en);

export const messages: {
[key: string]: string;
} = Object.keys(LOCALE_CODES).reduce(
(acc, key) => ({
...acc,
[key]:
key === 'en'
? enFlat
: {...enFlat, ...flattenMessages(require(`./translations/${key}`).default)}
}),
{}
);
[key: string]: {
[key: string]: string;
};
} = {};

messages['en'] = enFlat;
messages['fi'] = {...enFlat, ...flattenMessages(fi)};
messages['pt'] = {...enFlat, ...flattenMessages(pt)};
messages['es'] = {...enFlat, ...flattenMessages(es)};
messages['ca'] = {...enFlat, ...flattenMessages(ca)};
messages['cn'] = {...enFlat, ...flattenMessages(cn)};
messages['ja'] = {...enFlat, ...flattenMessages(ja)};
messages['ru'] = {...enFlat, ...flattenMessages(ru)};

export default messages;

0 comments on commit b70c35c

Please sign in to comment.