mirror of
https://github.com/spliit-app/spliit.git
synced 2026-03-03 11:36:12 +01:00
Use deepmerge function from existing dependency
This commit is contained in:
29
src/i18n.ts
29
src/i18n.ts
@@ -1,19 +1,7 @@
|
|||||||
|
import deepmerge from 'deepmerge'
|
||||||
import { getRequestConfig } from 'next-intl/server'
|
import { getRequestConfig } from 'next-intl/server'
|
||||||
import { getUserLocale } from './lib/locale'
|
import { getUserLocale } from './lib/locale'
|
||||||
|
|
||||||
function mergeDeep<T>(target: T, source: Partial<T>): T {
|
|
||||||
for (const key in source) {
|
|
||||||
const value = (source as any)[key]
|
|
||||||
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
||||||
;(target as any)[key] = mergeDeep((target as any)[key] || {}, value)
|
|
||||||
} else {
|
|
||||||
;(target as any)[key] = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return target
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export const localeLabels = {
|
export const localeLabels = {
|
||||||
'en-US': 'English',
|
'en-US': 'English',
|
||||||
fi: 'Suomi',
|
fi: 'Suomi',
|
||||||
@@ -44,15 +32,20 @@ export const defaultLocale: Locale = 'en-US'
|
|||||||
|
|
||||||
export default getRequestConfig(async () => {
|
export default getRequestConfig(async () => {
|
||||||
const locale = await getUserLocale()
|
const locale = await getUserLocale()
|
||||||
|
|
||||||
const defaultMessages = (await import('../messages/en-US.json')).default
|
|
||||||
const localeMessages = (await import(`../messages/${locale}.json`)).default
|
const localeMessages = (await import(`../messages/${locale}.json`)).default
|
||||||
|
|
||||||
const messages = mergeDeep(structuredClone(defaultMessages), localeMessages)
|
let messages: any
|
||||||
|
if (locale === defaultLocale) {
|
||||||
|
messages = localeMessages
|
||||||
|
} else {
|
||||||
|
messages = deepmerge(
|
||||||
|
(await import(`../messages/${defaultLocale}.json`)).default,
|
||||||
|
localeMessages,
|
||||||
|
) as any
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
locale,
|
locale,
|
||||||
messages,
|
messages,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user