forked from Archives/Athou_commafeed
replace old client with new client from commafeed-ui repository
This commit is contained in:
56
commafeed-client/src/i18n.ts
Normal file
56
commafeed-client/src/i18n.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { i18n, Messages } from "@lingui/core"
|
||||
import { useAppSelector } from "app/store"
|
||||
import dayjs from "dayjs"
|
||||
import "dayjs/locale/en"
|
||||
import "dayjs/locale/fr"
|
||||
import { en, fr } from "make-plural"
|
||||
import { useEffect } from "react"
|
||||
import { messages as enMessages } from "./locales/en/messages"
|
||||
import { messages as frMessages } from "./locales/fr/messages"
|
||||
|
||||
interface Locale {
|
||||
key: string
|
||||
label: string
|
||||
messages: Messages
|
||||
plurals?: (n: number | string, ord?: boolean) => string
|
||||
}
|
||||
|
||||
// add an object to the array to add a new locale
|
||||
// don't forget to also add it to the 'locales' array in .linguirc
|
||||
export const locales: Locale[] = [
|
||||
{
|
||||
key: "en",
|
||||
label: "English",
|
||||
messages: enMessages,
|
||||
plurals: en,
|
||||
},
|
||||
{
|
||||
key: "fr",
|
||||
label: "Français",
|
||||
messages: frMessages,
|
||||
plurals: fr,
|
||||
},
|
||||
]
|
||||
|
||||
locales.forEach(l => {
|
||||
i18n.loadLocaleData({
|
||||
[l.key]: {
|
||||
plurals: l.plurals,
|
||||
},
|
||||
})
|
||||
i18n.load({
|
||||
[l.key]: l.messages,
|
||||
})
|
||||
})
|
||||
|
||||
function activateLocale(locale: string) {
|
||||
i18n.activate(locale)
|
||||
dayjs.locale(locale)
|
||||
}
|
||||
|
||||
export const useI18n = () => {
|
||||
const locale = useAppSelector(state => state.user.settings?.language)
|
||||
useEffect(() => {
|
||||
activateLocale(locale ?? "en")
|
||||
}, [locale])
|
||||
}
|
||||
Reference in New Issue
Block a user