Merge pull request #1711 from Cihatata/i18n-support-client

feat: i18n support for client
This commit is contained in:
Alexander Holliday authored and GitHub committed 2025-02-08 18:25:36 -08:00
commit 36ce69d737
16 files changed
+683 -76

No files matched your search

+16
View File
@@ -1,4 +1,5 @@
import axios from "axios";
import i18next from 'i18next';
const BASE_URL = import.meta.env.VITE_APP_API_BASE_URL;
const FALLBACK_BASE_URL = "http://localhost:5000/api/v1";
import { clearAuthState } from "../Features/Auth/authSlice";
@@ -23,6 +24,21 @@ class NetworkService {
}
this.setBaseUrl(baseURL);
});
this.axiosInstance.interceptors.request.use(
(config) => {
const currentLanguage = i18next.language || 'en';
config.headers = {
...config.headers,
"Accept-Language": currentLanguage,
};
return config;
},
(error) => {
return Promise.reject(error);
}
);
this.axiosInstance.interceptors.response.use(
(response) => response,
(error) => {
+36
View File
@@ -0,0 +1,36 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
const primaryLanguage = 'gb';
const translations = import.meta.glob('../locales/*.json', { eager: true });
const resources = {};
Object.keys(translations).forEach((path) => {
const langCode = path.match(/\/([^/]+)\.json$/)[1];
resources[langCode] = {
translation: translations[path].default || translations[path]
};
});
const savedLanguage = localStorage.getItem("language") || primaryLanguage;
i18n
.use(initReactI18next)
.init({
resources,
lng: savedLanguage,
fallbackLng: primaryLanguage,
debug: import.meta.env.MODE === 'development',
ns: ['translation'],
defaultNS: 'translation',
interpolation: {
escapeValue: false,
},
});
i18n.on("languageChanged", (lng) => {
localStorage.setItem("language", lng);
});
export default i18n;