diff --git a/FEATURES.md b/FEATURES.md
index a7cf5459..fb6e2f3e 100644
--- a/FEATURES.md
+++ b/FEATURES.md
@@ -98,7 +98,7 @@
## Internationalization
-15 languages: English · Français · 日本語 · Español · Italiano · Danish · Deutsch · Nederlands · Português · Русский · Türkçe · 한국어 · Polski · Latviešu · 简体中文 · Українська
+17 languages: Česky · Dansk · Deutsch · English · Español · Français · Italiano · Latviešu · Nederlands · Polski · Português · Türkçe · Русский · Українська · 한국어 · 日本語 · 简体中文
Automatic browser detection with persistent preference. Configurable locale URL prefix via `NEXT_PUBLIC_LOCALE_PREFIX`.
diff --git a/components/providers/intl-provider.tsx b/components/providers/intl-provider.tsx
index 8f4598e7..60193c61 100644
--- a/components/providers/intl-provider.tsx
+++ b/components/providers/intl-provider.tsx
@@ -4,13 +4,14 @@ import { useEffect, useState } from 'react';
import { NextIntlClientProvider } from 'next-intl';
import { useLocaleStore } from '@/stores/locale-store';
import csMessages from '@/locales/cs/common.json';
+import daMessages from '@/locales/da/common.json';
+import deMessages from '@/locales/de/common.json';
import enMessages from '@/locales/en/common.json';
+import esMessages from '@/locales/es/common.json';
import frMessages from '@/locales/fr/common.json';
+import itMessages from '@/locales/it/common.json';
import jaMessages from '@/locales/ja/common.json';
import koMessages from '@/locales/ko/common.json';
-import esMessages from '@/locales/es/common.json';
-import itMessages from '@/locales/it/common.json';
-import deMessages from '@/locales/de/common.json';
import lvMessages from '@/locales/lv/common.json';
import nlMessages from '@/locales/nl/common.json';
import plMessages from '@/locales/pl/common.json';
@@ -19,18 +20,18 @@ import ruMessages from '@/locales/ru/common.json';
import trMessages from '@/locales/tr/common.json';
import ukMessages from '@/locales/uk/common.json';
import zhMessages from '@/locales/zh/common.json';
-import daMessages from '@/locales/da/common.json';
// Pre-loaded translations (loaded at build time, not runtime)
const ALL_MESSAGES = {
cs: csMessages,
+ da: daMessages,
+ de: deMessages,
en: enMessages,
+ es: esMessages,
fr: frMessages,
+ it: itMessages,
ja: jaMessages,
ko: koMessages,
- es: esMessages,
- it: itMessages,
- de: deMessages,
lv: lvMessages,
nl: nlMessages,
pl: plMessages,
@@ -39,7 +40,6 @@ const ALL_MESSAGES = {
tr: trMessages,
uk: ukMessages,
zh: zhMessages,
- da: daMessages
};
interface IntlProviderProps {
diff --git a/components/ui/flag-icons.tsx b/components/ui/flag-icons.tsx
index 417bf1f6..75790cda 100644
--- a/components/ui/flag-icons.tsx
+++ b/components/ui/flag-icons.tsx
@@ -201,25 +201,27 @@ export function FlagCS(props: FlagProps) {
);
}
-/** Danish flag - Red with a white cross */
-export function FlagDA(props: FlagProps) {
+/** Denmark – Red with a white Nordic cross */
+export function FlagDK(props: FlagProps) {
return (
);
}
/** Map locale codes to flag components */
export const flagComponents: Record ReactElement> = {
+ cs: FlagCS,
+ da: FlagDK,
+ de: FlagDE,
en: FlagGB,
+ es: FlagES,
fr: FlagFR,
+ it: FlagIT,
ja: FlagJP,
ko: FlagKR,
- es: FlagES,
- it: FlagIT,
- de: FlagDE,
lv: FlagLV,
nl: FlagNL,
pl: FlagPL,
@@ -228,6 +230,4 @@ export const flagComponents: Record ReactElement>
tr: FlagTR,
uk: FlagUA,
zh: FlagCN,
- cs: FlagCS,
- da: FlagDA
};
diff --git a/components/ui/language-switcher.tsx b/components/ui/language-switcher.tsx
index 912d571a..c0b197d6 100644
--- a/components/ui/language-switcher.tsx
+++ b/components/ui/language-switcher.tsx
@@ -9,21 +9,21 @@ import { flagComponents } from './flag-icons';
const languages = [
{ value: 'cs', label: 'Česky' },
- { value: 'en', label: 'English' },
- { value: 'fr', label: 'Français' },
- { value: 'ja', label: '日本語' },
- { value: 'ko', label: '한국어' },
{ value: 'da', label: 'Dansk' },
{ value: 'de', label: 'Deutsch' },
+ { value: 'en', label: 'English' },
{ value: 'es', label: 'Español' },
+ { value: 'fr', label: 'Français' },
{ value: 'it', label: 'Italiano' },
{ value: 'lv', label: 'Latviešu' },
{ value: 'nl', label: 'Nederlands' },
{ value: 'pl', label: 'Polski' },
{ value: 'pt', label: 'Português' },
- { value: 'ru', label: 'Русский' },
{ value: 'tr', label: 'Türkçe' },
+ { value: 'ru', label: 'Русский' },
{ value: 'uk', label: 'Українська' },
+ { value: 'ko', label: '한국어' },
+ { value: 'ja', label: '日本語' },
{ value: 'zh', label: '简体中文' },
];
diff --git a/i18n/request.ts b/i18n/request.ts
index 2fe7fa26..24ad0008 100644
--- a/i18n/request.ts
+++ b/i18n/request.ts
@@ -14,18 +14,18 @@ export default getRequestConfig(async ({ requestLocale }) => {
case 'cs':
messages = (await import('../locales/cs/common.json')).default;
break;
- case 'fr':
- messages = (await import('../locales/fr/common.json')).default;
- break;
case 'da':
messages = (await import('../locales/da/common.json')).default;
- break;
+ break;
case 'de':
messages = (await import('../locales/de/common.json')).default;
break;
case 'es':
messages = (await import('../locales/es/common.json')).default;
break;
+ case 'fr':
+ messages = (await import('../locales/fr/common.json')).default;
+ break;
case 'it':
messages = (await import('../locales/it/common.json')).default;
break;
diff --git a/i18n/routing.ts b/i18n/routing.ts
index fae1da1f..8bea497e 100644
--- a/i18n/routing.ts
+++ b/i18n/routing.ts
@@ -13,7 +13,7 @@ const localePrefix = (process.env.NEXT_PUBLIC_LOCALE_PREFIX ?? 'never') as
| 'as-needed';
export const routing = defineRouting({
- locales: ['cs', 'en', 'fr', 'da', 'de', 'es', 'it', 'ja', 'ko', 'lv', 'nl', 'pl', 'pt', 'ru', 'tr', 'uk', 'zh'],
+ locales: ['cs', 'da', 'de', 'en', 'es', 'fr', 'it', 'ja', 'ko', 'lv', 'nl', 'pl', 'pt', 'ru', 'tr', 'uk', 'zh'],
defaultLocale: 'en',
localePrefix
});