casdoor/web/src/i18n.js

175 lines
3.9 KiB
JavaScript
Raw Normal View History

2022-02-13 23:39:27 +08:00
// Copyright 2021 The Casdoor Authors. All Rights Reserved.
//
// 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.
2021-09-14 01:22:13 +08:00
import i18n from "i18next";
import en from "./locales/en/data.json";
import zh from "./locales/zh/data.json";
import es from "./locales/es/data.json";
import fr from "./locales/fr/data.json";
import de from "./locales/de/data.json";
import id from "./locales/id/data.json";
import ja from "./locales/ja/data.json";
import ko from "./locales/ko/data.json";
import ru from "./locales/ru/data.json";
import vi from "./locales/vi/data.json";
import pt from "./locales/pt/data.json";
import it from "./locales/it/data.json";
import ms from "./locales/ms/data.json";
import tr from "./locales/tr/data.json";
import ar from "./locales/ar/data.json";
import he from "./locales/he/data.json";
import nl from "./locales/nl/data.json";
import pl from "./locales/pl/data.json";
import fi from "./locales/fi/data.json";
import sv from "./locales/sv/data.json";
import uk from "./locales/uk/data.json";
import kk from "./locales/kk/data.json";
import fa from "./locales/fa/data.json";
2021-09-14 01:22:13 +08:00
import * as Conf from "./Conf";
import {initReactI18next} from "react-i18next";
const resources = {
en: en,
zh: zh,
es: es,
fr: fr,
de: de,
id: id,
ja: ja,
ko: ko,
ru: ru,
vi: vi,
pt: pt,
it: it,
ms: ms,
tr: tr,
ar: ar,
he: he,
nl: nl,
pl: pl,
fi: fi,
sv: sv,
uk: uk,
kk: kk,
fa: fa,
};
2021-09-14 01:22:13 +08:00
function initLanguage() {
let language = localStorage.getItem("language");
2022-08-13 11:23:16 +08:00
if (language === undefined || language === null || language === "") {
2021-09-14 01:22:13 +08:00
if (Conf.ForceLanguage !== "") {
language = Conf.ForceLanguage;
} else {
const userLanguage = navigator.language;
2021-09-14 01:22:13 +08:00
switch (userLanguage) {
2023-02-18 17:35:36 +08:00
case "en":
language = "en";
break;
case "en-US":
language = "en";
break;
case "zh-CN":
language = "zh";
break;
case "zh":
language = "zh";
break;
2023-02-18 17:35:36 +08:00
case "es":
language = "es";
break;
case "fr":
language = "fr";
break;
case "de":
language = "de";
break;
2023-03-19 19:56:56 +08:00
case "id":
language = "id";
break;
2023-02-18 17:35:36 +08:00
case "ja":
language = "ja";
break;
case "ko":
language = "ko";
break;
case "ru":
language = "ru";
break;
2023-04-15 14:16:49 +08:00
case "vi":
language = "vi";
break;
case "pt":
language = "pt";
break;
case "it":
language = "it";
break;
case "ms":
language = "ms";
break;
case "tr":
language = "tr";
break;
case "ar":
language = "ar";
break;
case "he":
language = "he";
break;
2023-09-02 18:49:43 +08:00
case "nl":
language = "nl";
break;
case "pl":
language = "pl";
break;
case "fi":
language = "fi";
break;
2023-09-02 18:49:43 +08:00
case "sv":
language = "sv";
break;
case "uk":
language = "uk";
break;
case "kk":
language = "kk";
break;
case "fa":
language = "fa";
break;
default:
language = Conf.DefaultLanguage;
2021-09-14 01:22:13 +08:00
}
}
}
return language;
}
i18n.use(initReactI18next).init({
lng: initLanguage(),
resources: resources,
keySeparator: false,
interpolation: {
escapeValue: true,
},
// debug: true,
saveMissing: true,
});
2021-09-14 01:22:13 +08:00
export default i18n;