feat: Update i18n configuration and add support for additional languages

The code changes include:
- Updating the i18n configuration to export the `SUPPORTED_LANGUAGES` array.
- Refactoring the `getRequestConfig` function to accept a `locale` parameter.
- Simplifying the logic for determining the `locale` based on the `accept-language` header.
- Loading the appropriate messages file based on the `locale` parameter.

This commit improves the i18n functionality of the project and allows for easier addition of new languages.
This commit is contained in:
mauro-balades
2024-09-02 18:56:43 +02:00
parent 3c8cd2ffc2
commit 5779ea88ef
2 changed files with 6 additions and 31 deletions

View File

@@ -45,4 +45,4 @@ const nextConfig = (phase, { defaultConfig }) => {
};
};
module.exports = withNextIntl(nextConfig);
module.exports = {...withNextIntl(nextConfig), output: 'export'};

View File

@@ -1,35 +1,10 @@
import { getRequestConfig } from "next-intl/server";
import { headers } from "next/headers";
const SUPPORTED_LANGUAGES = ['en', 'de', 'ro'];
export const SUPPORTED_LANGUAGES = ['en', 'de', 'ro'];
export default getRequestConfig(async () => {
const headersList = headers();
const acceptLanguage = headersList.get("accept-language") || "en";
const [primaryLanguage] = acceptLanguage
.split(",")
.map((lang) => lang.split(";")[0])
.map((lang) => lang.toLowerCase());
const locale = SUPPORTED_LANGUAGES.includes(primaryLanguage) ? primaryLanguage : 'en';
try {
const messages = (await import(`../messages/${locale}.json`)).default;
return {
locale,
messages,
};
} catch (error) {
console.error(`Failed to load messages for locale: ${locale}`, error);
const fallbackMessages = (await import(`../messages/en.json`)).default;
return {
locale: "en",
messages: fallbackMessages,
};
}
export default getRequestConfig(async ({locale}) => {
const lang = SUPPORTED_LANGUAGES.includes(locale) ? locale : 'en';
const messages = await import(`../messages/${lang}.json`);
return {messages};
});