File size: 749 Bytes
05c5ed5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { getRequestConfig } from "next-intl/server";
import { safe } from "ts-safe";
import { getLocaleAction } from "./get-locale";
import deepmerge from "deepmerge";

let defaultMessages: any = undefined;

export default getRequestConfig(async () => {
  const locale = await getLocaleAction();

  if (!defaultMessages) {
    defaultMessages = (await import(`../../messages/en.json`)).default;
  }

  const messages = await safe(() => import(`../../messages/${locale}.json`))
    .map((m) => m.default)
    .orElse(defaultMessages);

  return {
    locale,
    messages:
      locale === "en" ? defaultMessages : deepmerge(defaultMessages, messages),
    getMessageFallback({ key, namespace }) {
      return `${namespace}.${key}`;
    },
  };
});