* feat: block schema * feat: improve code * feat: improve code * feat: improve code * feat: improve code * feat: styling for kanban * feat: improve code * feat: improve code * fix(client): auto collapse menu items when overflow * feat: improve code * fix: fieldNames prop for calendar * fix: improve code * feat: improve code * feat: improve code * feat: improve code * feat: improve code * feat: improve code * feat: improve code * feat: improve code * feat: improve code * fix: list the sub-table data source * fix: useFilterByTk * feat: improve code * feat: improve code * feat: improve code
38 lines
875 B
TypeScript
38 lines
875 B
TypeScript
import i18next from 'i18next';
|
|
import moment from 'moment';
|
|
import { initReactI18next } from 'react-i18next';
|
|
import { resources } from '../locale';
|
|
const log = require('debug')('i18next');
|
|
|
|
export const i18n = i18next.createInstance();
|
|
|
|
i18n.use(initReactI18next).init({
|
|
lng: localStorage.getItem('locale') || 'en-US',
|
|
// debug: true,
|
|
defaultNS: 'client',
|
|
// parseMissingKeyHandler: (key) => {
|
|
// console.log('parseMissingKeyHandler', `'${key}': '${key}',`);
|
|
// return key;
|
|
// },
|
|
// ns: ['client'],
|
|
resources,
|
|
});
|
|
|
|
const momentLngs = {
|
|
'en-US': 'en',
|
|
'zh-CN': 'zh-cn',
|
|
};
|
|
|
|
function setMomentLng(language) {
|
|
const lng = momentLngs[language || 'en-US'] || 'en';
|
|
log(lng);
|
|
moment.locale(lng);
|
|
}
|
|
|
|
setMomentLng(localStorage.getItem('locale'));
|
|
|
|
i18n.on('languageChanged', (lng) => {
|
|
localStorage.setItem('locale', lng);
|
|
setMomentLng(lng);
|
|
});
|