- Remove @lobehub/i18n-cli package and .i18nrc.js config - Delete locales/default/ directory (translation source) - Change DEFAULT_LOCALE and fallbackLng to ja-JP - Reorder LOCALES array with Japanese first - Simplify language selector to horizontal solid button style
82 lines
2.6 KiB
TypeScript
82 lines
2.6 KiB
TypeScript
import i18next from "i18next";
|
|
import { initReactI18next } from "react-i18next";
|
|
import LanguageDetector from "i18next-browser-languagedetector";
|
|
|
|
// Import locale files statically
|
|
import commonZHCN from "./locales/zh-CN/common.json";
|
|
import domainZHCN from "./locales/zh-CN/domain.json";
|
|
import settingsZHCN from "./locales/zh-CN/settings.json";
|
|
import errorsZHCN from "./locales/zh-CN/errors.json";
|
|
import appZHCN from "./locales/zh-CN/app.json";
|
|
import deployZHCN from "./locales/zh-CN/deploy.json";
|
|
import fileZHCN from "./locales/zh-CN/file.json";
|
|
import versionZHCN from "./locales/zh-CN/version.json";
|
|
import commonJAJP from "./locales/ja-JP/common.json";
|
|
import domainJAJP from "./locales/ja-JP/domain.json";
|
|
import settingsJAJP from "./locales/ja-JP/settings.json";
|
|
import errorsJAJP from "./locales/ja-JP/errors.json";
|
|
import appJAJP from "./locales/ja-JP/app.json";
|
|
import deployJAJP from "./locales/ja-JP/deploy.json";
|
|
import fileJAJP from "./locales/ja-JP/file.json";
|
|
import versionJAJP from "./locales/ja-JP/version.json";
|
|
import commonENUS from "./locales/en-US/common.json";
|
|
import domainENUS from "./locales/en-US/domain.json";
|
|
import settingsENUS from "./locales/en-US/settings.json";
|
|
import errorsENUS from "./locales/en-US/errors.json";
|
|
import appENUS from "./locales/en-US/app.json";
|
|
import deployENUS from "./locales/en-US/deploy.json";
|
|
import fileENUS from "./locales/en-US/file.json";
|
|
import versionENUS from "./locales/en-US/version.json";
|
|
// Define resources with namespaces
|
|
const resources = {
|
|
"zh-CN": {
|
|
common: commonZHCN,
|
|
domain: domainZHCN,
|
|
settings: settingsZHCN,
|
|
errors: errorsZHCN,
|
|
app: appZHCN,
|
|
deploy: deployZHCN,
|
|
file: fileZHCN,
|
|
version: versionZHCN,
|
|
},
|
|
"ja-JP": {
|
|
common: commonJAJP,
|
|
domain: domainJAJP,
|
|
settings: settingsJAJP,
|
|
errors: errorsJAJP,
|
|
app: appJAJP,
|
|
deploy: deployJAJP,
|
|
file: fileJAJP,
|
|
version: versionJAJP,
|
|
},
|
|
"en-US": {
|
|
common: commonENUS,
|
|
domain: domainENUS,
|
|
settings: settingsENUS,
|
|
errors: errorsENUS,
|
|
app: appENUS,
|
|
deploy: deployENUS,
|
|
file: fileENUS,
|
|
version: versionENUS,
|
|
},
|
|
};
|
|
|
|
// Configure and initialize i18next
|
|
i18next
|
|
.use(LanguageDetector)
|
|
.use(initReactI18next)
|
|
.init({
|
|
resources,
|
|
fallbackLng: "ja-JP",
|
|
ns: ["common", "domain", "settings", "errors", "app", "deploy", "file", "version"],
|
|
interpolation: {
|
|
escapeValue: false, // React already handles escaping
|
|
},
|
|
detection: {
|
|
order: ["localStorage", "navigator"],
|
|
caches: ["localStorage"],
|
|
lookupLocalStorage: "i18nextLng",
|
|
},
|
|
});
|
|
|
|
export default i18next; |