2020-07-04 21:39:30 +12:00
|
|
|
import React, { Fragment } from 'react';
|
|
|
|
|
import get from 'lodash/get';
|
|
|
|
|
import dictionaries from './dictionaries';
|
|
|
|
|
import { titleCase } from '../util/helpers';
|
|
|
|
|
|
|
|
|
|
const PARAMS_REG_EXP = '%{(.*?)}';
|
|
|
|
|
const paramsRegExp = new RegExp(PARAMS_REG_EXP, 'g');
|
|
|
|
|
|
2020-07-07 20:52:09 +12:00
|
|
|
const i18n = (path, params = {}, transform) => {
|
2020-07-05 20:58:39 +12:00
|
|
|
const dictionary = dictionaries[window.language || 'en'] || dictionaries.en;
|
2020-07-04 21:39:30 +12:00
|
|
|
|
2020-07-05 20:58:39 +12:00
|
|
|
let value = get((dictionary), path, '');
|
2020-07-04 21:39:30 +12:00
|
|
|
value = value.replace(
|
|
|
|
|
paramsRegExp,
|
|
|
|
|
(replaceText, key) => params.hasOwnProperty(key) ? params[key] : '',
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
switch (transform) {
|
|
|
|
|
case 'upper':
|
|
|
|
|
value = value.toUpperCase();
|
|
|
|
|
break;
|
|
|
|
|
case 'lower':
|
|
|
|
|
value = value.toLowerCase();
|
|
|
|
|
break;
|
|
|
|
|
case 'title':
|
|
|
|
|
value = titleCase(value);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
};
|
|
|
|
|
|
2020-07-07 20:52:09 +12:00
|
|
|
const I18n = ({ path, transform, children, ...params }) => (
|
2020-07-05 20:58:39 +12:00
|
|
|
<Fragment>
|
2020-07-07 20:52:09 +12:00
|
|
|
{i18n(path, params, transform)}
|
2020-07-05 20:58:39 +12:00
|
|
|
{children}
|
|
|
|
|
</Fragment>
|
|
|
|
|
);
|
2020-07-04 21:39:30 +12:00
|
|
|
|
|
|
|
|
export default {
|
2020-07-07 20:52:09 +12:00
|
|
|
I18n,
|
|
|
|
|
i18n,
|
2020-07-04 21:39:30 +12:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export {
|
2020-07-07 20:52:09 +12:00
|
|
|
I18n,
|
|
|
|
|
i18n,
|
2020-07-04 21:39:30 +12:00
|
|
|
};
|