46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import i18n from 'i18next';
|
|
import { initReactI18next } from 'react-i18next';
|
|
import Backend from 'i18next-http-backend';
|
|
import { getBestPossibleUserLocale } from './utils';
|
|
|
|
export const setupI18n = async () => {
|
|
await i18n
|
|
// i18next-http-backend
|
|
// loads translations from your server
|
|
// https://github.com/i18next/i18next-http-backend,
|
|
.use(Backend)
|
|
// pass the i18n instance to react-i18next.
|
|
.use(initReactI18next)
|
|
// init i18next
|
|
// for all options read: https://www.i18next.com/overview/configuration-options
|
|
.init({
|
|
returnEmptyString: false,
|
|
fallbackLng: 'en',
|
|
lng: getBestPossibleUserLocale(),
|
|
interpolation: {
|
|
escapeValue: false, // not needed for react as it escapes by default
|
|
},
|
|
react: {
|
|
useSuspense: false,
|
|
transKeepBasicHtmlNodesFor: [
|
|
'div',
|
|
'strong',
|
|
'h2',
|
|
'span',
|
|
'code',
|
|
'p',
|
|
'br',
|
|
],
|
|
},
|
|
load: 'languageOnly',
|
|
});
|
|
|
|
i18n.services.formatter.add('dateTime', (value, lng) => {
|
|
return new Date(value / 1000).toLocaleDateString(lng, {
|
|
year: 'numeric',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
});
|
|
});
|
|
};
|