All files / src i18n.ts

0% Statements 0/7
0% Branches 0/1
0% Functions 0/2
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83                                                                                                                                                                     
/*
 * Copyright 2019 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import i18n from 'i18next';
import Backend from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';
import { registerLocale, setDefaultLocale } from 'react-datepicker';
import cmn from 'date-fns/locale/zh-CN';
 
import moment from 'moment';
import 'moment/locale/zh-cn';
 
registerLocale('cmn', cmn);
 
function languageToMomentLocale(lang: string): string {
  switch (lang) {
    case 'cmn':
      return 'zh-cn';
  }
  return lang;
}
 
// From https://github.com/i18next/react-i18next/blob/master/example/react/src/i18n.js
i18n
  // load translation using xhr -> see /public/locales
  // learn more: https://github.com/i18next/i18next-xhr-backend
  .use(Backend)
  // detect user language
  // learn more: https://github.com/i18next/i18next-browser-languageDetector
  .use(LanguageDetector)
  // pass the i18n instance to react-i18next.
  .use(initReactI18next)
  // init i18next
  // for all options read: https://www.i18next.com/overview/configuration-options
  .init({
    fallbackLng: 'en',
    fallbackNS: 'Common',
    defaultNS: 'Common',
    // Load all namespaces on boot so users don't see an empty screen
    ns: [
      'Alerts',
      'AvailabilityRosterPage',
      'Common',
      'ContractsPage',
      'EditAvailabilityModal',
      'EditShiftModal',
      'EditShiftTemplateModal',
      'EmployeesPage',
      'Navigation',
      'NewTenantFormModal',
      'RestServiceClient',
      'RotationPage',
      'ServerSideException',
      'ShiftEvent',
      'ShiftRosterPage',
      'SpotsPage'
    ],
    debug: true,
    backend: {
      loadPath: '/assets/locales/{{lng}}/{{ns}}.json'
    },
    interpolation: {
      escapeValue: false, // not needed for react as it escapes by default
    }
  },() => {
    moment.locale(languageToMomentLocale(i18n.language));
    setDefaultLocale(i18n.language);
  });
 
export default i18n;