2022-02-13 23:39:27 +08:00
|
|
|
// Copyright 2021 The Casdoor Authors. All Rights Reserved.
|
2021-02-19 23:23:59 +08:00
|
|
|
//
|
|
|
|
// 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";
|
2024-02-23 23:38:15 +08:00
|
|
|
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";
|
2022-10-12 13:52:02 +02:00
|
|
|
import {initReactI18next} from "react-i18next";
|
2024-02-23 23:38:15 +08:00
|
|
|
|
|
|
|
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-02-19 23:23:59 +08:00
|
|
|
|
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 {
|
2022-08-08 23:35:24 +08:00
|
|
|
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;
|
2022-07-10 15:45:55 +08:00
|
|
|
case "zh-CN":
|
|
|
|
language = "zh";
|
|
|
|
break;
|
|
|
|
case "zh":
|
|
|
|
language = "zh";
|
|
|
|
break;
|
2023-02-18 17:35:36 +08:00
|
|
|
case "es":
|
|
|
|
language = "es";
|
2022-07-10 15:45:55 +08:00
|
|
|
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;
|
2022-07-10 15:45:55 +08:00
|
|
|
case "ko":
|
|
|
|
language = "ko";
|
|
|
|
break;
|
|
|
|
case "ru":
|
|
|
|
language = "ru";
|
|
|
|
break;
|
2023-04-15 14:16:49 +08:00
|
|
|
case "vi":
|
|
|
|
language = "vi";
|
2022-07-10 15:45:55 +08:00
|
|
|
break;
|
2023-05-19 05:57:44 -03:00
|
|
|
case "pt":
|
|
|
|
language = "pt";
|
|
|
|
break;
|
2023-07-30 20:45:47 +08:00
|
|
|
case "it":
|
|
|
|
language = "it";
|
|
|
|
break;
|
|
|
|
case "ms":
|
|
|
|
language = "ms";
|
|
|
|
break;
|
|
|
|
case "tr":
|
|
|
|
language = "tr";
|
|
|
|
break;
|
2023-08-16 15:54:34 +08:00
|
|
|
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;
|
2023-08-16 15:54:34 +08:00
|
|
|
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;
|
2022-07-10 15:45:55 +08:00
|
|
|
default:
|
|
|
|
language = Conf.DefaultLanguage;
|
2021-09-14 01:22:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return language;
|
|
|
|
}
|
|
|
|
|
2024-02-23 23:38:15 +08:00
|
|
|
i18n.use(initReactI18next).init({
|
|
|
|
lng: initLanguage(),
|
|
|
|
|
|
|
|
resources: resources,
|
2021-02-19 23:23:59 +08:00
|
|
|
|
2024-02-23 23:38:15 +08:00
|
|
|
keySeparator: false,
|
2021-02-19 23:23:59 +08:00
|
|
|
|
2024-02-23 23:38:15 +08:00
|
|
|
interpolation: {
|
|
|
|
escapeValue: true,
|
|
|
|
},
|
|
|
|
// debug: true,
|
|
|
|
saveMissing: true,
|
|
|
|
});
|
2021-02-19 23:23:59 +08:00
|
|
|
|
2021-09-14 01:22:13 +08:00
|
|
|
export default i18n;
|