192 lines
5.3 KiB
TypeScript
192 lines
5.3 KiB
TypeScript
/**
|
|
* Mock-Daten für Übersetzungen
|
|
* Diese können später durch einen echten CMS-Adapter ersetzt werden
|
|
*/
|
|
|
|
export interface Translation {
|
|
key: string;
|
|
value: string;
|
|
namespace?: string;
|
|
}
|
|
|
|
export interface TranslationsData {
|
|
locale: string;
|
|
translations: Translation[];
|
|
}
|
|
|
|
/**
|
|
* Mock-Übersetzungen für Deutsch (de)
|
|
*/
|
|
export const mockTranslationsDe: TranslationsData = {
|
|
locale: "de",
|
|
translations: [
|
|
// Login Modal
|
|
{ key: "login.title", value: "Anmelden", namespace: "auth" },
|
|
{ key: "login.email", value: "E-Mail", namespace: "auth" },
|
|
{ key: "login.password", value: "Passwort", namespace: "auth" },
|
|
{ key: "login.submit", value: "Anmelden", namespace: "auth" },
|
|
{ key: "login.loading", value: "Wird geladen...", namespace: "auth" },
|
|
{
|
|
key: "login.error",
|
|
value: "Login fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "login.noAccount",
|
|
value: "Noch kein Konto?",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "login.registerNow",
|
|
value: "Jetzt registrieren",
|
|
namespace: "auth",
|
|
},
|
|
// Register Modal
|
|
{ key: "register.title", value: "Registrieren", namespace: "auth" },
|
|
{ key: "register.name", value: "Name", namespace: "auth" },
|
|
{ key: "register.email", value: "E-Mail", namespace: "auth" },
|
|
{ key: "register.password", value: "Passwort", namespace: "auth" },
|
|
{
|
|
key: "register.confirmPassword",
|
|
value: "Passwort bestätigen",
|
|
namespace: "auth",
|
|
},
|
|
{ key: "register.submit", value: "Registrieren", namespace: "auth" },
|
|
{
|
|
key: "register.loading",
|
|
value: "Wird geladen...",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.error",
|
|
value: "Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.passwordMismatch",
|
|
value: "Passwörter stimmen nicht überein",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.passwordTooShort",
|
|
value: "Passwort muss mindestens 6 Zeichen lang sein",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.hasAccount",
|
|
value: "Bereits ein Konto?",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.loginNow",
|
|
value: "Jetzt anmelden",
|
|
namespace: "auth",
|
|
},
|
|
// Navigation
|
|
{ key: "nav.login", value: "Anmelden", namespace: "common" },
|
|
{ key: "nav.register", value: "Registrieren", namespace: "common" },
|
|
{ key: "nav.logout", value: "Abmelden", namespace: "common" },
|
|
{ key: "nav.greeting", value: "Hallo, {name}", namespace: "common" },
|
|
],
|
|
};
|
|
|
|
/**
|
|
* Mock-Übersetzungen für Englisch (en)
|
|
*/
|
|
export const mockTranslationsEn: TranslationsData = {
|
|
locale: "en",
|
|
translations: [
|
|
// Login Modal
|
|
{ key: "login.title", value: "Sign In", namespace: "auth" },
|
|
{ key: "login.email", value: "Email", namespace: "auth" },
|
|
{ key: "login.password", value: "Password", namespace: "auth" },
|
|
{ key: "login.submit", value: "Sign In", namespace: "auth" },
|
|
{ key: "login.loading", value: "Loading...", namespace: "auth" },
|
|
{
|
|
key: "login.error",
|
|
value: "Login failed. Please try again.",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "login.noAccount",
|
|
value: "Don't have an account?",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "login.registerNow",
|
|
value: "Register now",
|
|
namespace: "auth",
|
|
},
|
|
// Register Modal
|
|
{ key: "register.title", value: "Register", namespace: "auth" },
|
|
{ key: "register.name", value: "Name", namespace: "auth" },
|
|
{ key: "register.email", value: "Email", namespace: "auth" },
|
|
{ key: "register.password", value: "Password", namespace: "auth" },
|
|
{
|
|
key: "register.confirmPassword",
|
|
value: "Confirm Password",
|
|
namespace: "auth",
|
|
},
|
|
{ key: "register.submit", value: "Register", namespace: "auth" },
|
|
{
|
|
key: "register.loading",
|
|
value: "Loading...",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.error",
|
|
value: "Registration failed. Please try again.",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.passwordMismatch",
|
|
value: "Passwords do not match",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.passwordTooShort",
|
|
value: "Password must be at least 6 characters long",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.hasAccount",
|
|
value: "Already have an account?",
|
|
namespace: "auth",
|
|
},
|
|
{
|
|
key: "register.loginNow",
|
|
value: "Sign in now",
|
|
namespace: "auth",
|
|
},
|
|
// Navigation
|
|
{ key: "nav.login", value: "Sign In", namespace: "common" },
|
|
{ key: "nav.register", value: "Register", namespace: "common" },
|
|
{ key: "nav.logout", value: "Logout", namespace: "common" },
|
|
{ key: "nav.greeting", value: "Hello, {name}", namespace: "common" },
|
|
],
|
|
};
|
|
|
|
/**
|
|
* Gibt Übersetzungen für eine bestimmte Locale zurück
|
|
*/
|
|
export function getTranslations(
|
|
locale: string = "de",
|
|
namespace?: string
|
|
): TranslationsData {
|
|
const translations =
|
|
locale === "en" ? mockTranslationsEn : mockTranslationsDe;
|
|
|
|
// Filter nach Namespace, falls angegeben
|
|
if (namespace) {
|
|
return {
|
|
locale: translations.locale,
|
|
translations: translations.translations.filter(
|
|
(t) => t.namespace === namespace
|
|
),
|
|
};
|
|
}
|
|
|
|
return translations;
|
|
}
|
|
|