recogito-client-core/src/i18n/index.jsx

122 lines
3.3 KiB
JavaScript

import Polyglot from 'node-polyglot';
import TimeAgo from 'timeago-react';
import * as timeago from 'timeago.js';
import messages_ar from './messages_ar.json';
import messages_cs from './messages_cs.json';
import messages_de from './messages_de.json';
import messages_el from './messages_el.json';
import messages_es from './messages_es.json';
import messages_fi from './messages_fi.json';
import messages_fr from './messages_fr.json';
import messages_gl from './messages_gl.json';
import messages_hi from './messages_hi.json';
import messages_it from './messages_it.json';
import messages_ko from './messages_ko.json';
import messages_nl from './messages_nl.json';
import messages_pt from './messages_pt.json';
import messages_ru from './messages_ru.json';
import messages_sv from './messages_sv.json';
import messages_th from './messages_th.json';
import messages_tr from './messages_tr.json';
import messages_ur from './messages_ur.json';
const MESSAGES = {
ar: messages_ar,
cs: messages_cs,
de: messages_de,
el: messages_el,
es: messages_es,
fi: messages_fi,
fr: messages_fr,
gl: messages_gl,
hi: messages_hi,
it: messages_it,
ko: messages_ko,
nl: messages_nl,
pt: messages_pt,
ru: messages_ru,
sv: messages_sv,
th: messages_th,
tr: messages_tr,
ur: messages_ur
}
const i18n = new Polyglot({ allowMissing: true });
i18n.init = (lang, opt_messages) => {
i18n.clear();
if (lang) {
i18n.locale(lang);
i18n.extend(MESSAGES[lang]);
}
if (opt_messages)
i18n.extend(opt_messages);
}
/** Load and register TimeAgo locales **/
import ar from 'timeago.js/lib/lang/ar';
import cs from 'timeago.js/lib/lang/cs';
import de from 'timeago.js/lib/lang/de';
import el from 'timeago.js/lib/lang/el';
import es from 'timeago.js/lib/lang/es';
import fi from 'timeago.js/lib/lang/fi';
import fr from 'timeago.js/lib/lang/fr';
import gl from 'timeago.js/lib/lang/gl';
import hi from 'timeago.js/lib/lang/hi_IN';
import it from 'timeago.js/lib/lang/it';
import ko from 'timeago.js/lib/lang/ko';
import nl from 'timeago.js/lib/lang/nl';
import pt from 'timeago.js/lib/lang/pt_BR';
import ru from 'timeago.js/lib/lang/ru';
import sv from 'timeago.js/lib/lang/sv';
import th from 'timeago.js/lib/lang/th';
import tr from 'timeago.js/lib/lang/tr';
// import ur from 'timeago.js/lib/lang/ur'; // Not currently supported by TimeAgo
timeago.register('ar', ar);
timeago.register('cs', cs);
timeago.register('de', de);
timeago.register('el', el);
timeago.register('es', es);
timeago.register('fi', fi);
timeago.register('fr', fr);
timeago.register('gl', gl);
timeago.register('hi', hi);
timeago.register('it', it);
timeago.register('ko', ko);
timeago.register('nl', nl);
timeago.register('pt', pt);
timeago.register('ru', ru);
timeago.register('sv', sv);
timeago.register('th', th);
timeago.register('tr', tr);
/**
* Helper function that allows plugins to register their
* own additional I18N labels
*/
i18n.registerMessages = (lang, messages) => {
if (MESSAGES[lang])
MESSAGES[lang] = {...MESSAGES[lang], ...messages };
else
MESSAGES[lang] = messages;
}
export default i18n;
/**
* For convenience: exposes a pre-localized TimeAgo widget,
* for use in plugins
*/
export const LocalTimeAgo = props => {
return (
<TimeAgo
datetime={props.timestamp}
locale={i18n.locale()} />
)
}