@tengerly/cookie-consent
Version:
A lightweight, customizable cookie consent solution for Next.js and modern web frameworks with comprehensive multi-language support
161 lines (147 loc) • 6.6 kB
JavaScript
/**
* Cookie Consent Translations
* Comprehensive multi-language support for @tengerly/cookie-consent
*
* @version 1.0.0
* @author Tengerly
*/
export const translations = {
// English
en: {
title: 'Cookie Settings',
message: 'This website uses cookies to provide you with the best possible experience. We respect your privacy and give you full control over your data.',
acceptAll: 'Accept All',
acceptSome: 'Customize',
reject: 'Essential Only',
continue: 'Continue without consent',
save: 'Save Settings',
close: 'Close',
functionalTitle: 'Functional Cookies',
functionalDesc: 'Necessary for the proper functioning of the site (language, theme). Always enabled.',
analyticsTitle: 'Analytics Cookies',
analyticsDesc: 'Help us understand how visitors interact with our website.'
},
// French
fr: {
title: 'Paramètres des cookies',
message: 'Ce site utilise des cookies pour vous offrir la meilleure expérience possible. Nous respectons votre vie privée et vous donnons le contrôle total sur vos données.',
acceptAll: 'Tout accepter',
acceptSome: 'Personnaliser',
reject: 'Essentiels uniquement',
continue: 'Continuer sans consentement',
save: 'Sauvegarder',
close: 'Fermer',
functionalTitle: 'Cookies Fonctionnels',
functionalDesc: 'Nécessaires pour le bon fonctionnement du site (langue, thème). Toujours activés.',
analyticsTitle: 'Cookies Analytiques',
analyticsDesc: 'Nous aident à comprendre comment les visiteurs interagissent avec notre site web.'
},
// German
de: {
title: 'Cookie-Einstellungen',
message: 'Diese Website verwendet Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Wir respektieren Ihre Privatsphäre und geben Ihnen die volle Kontrolle über Ihre Daten.',
acceptAll: 'Alle akzeptieren',
acceptSome: 'Anpassen',
reject: 'Nur notwendige',
continue: 'Ohne Zustimmung fortfahren',
save: 'Speichern',
close: 'Schließen',
functionalTitle: 'Funktionale Cookies',
functionalDesc: 'Notwendig für das ordnungsgemäße Funktionieren der Website (Sprache, Theme). Immer aktiviert.',
analyticsTitle: 'Analytische Cookies',
analyticsDesc: 'Helfen uns zu verstehen, wie Besucher mit unserer Website interagieren.'
},
// Spanish
es: {
title: 'Configuración de Cookies',
message: 'Este sitio web utiliza cookies para brindarle la mejor experiencia posible. Respetamos su privacidad y le damos control total sobre sus datos.',
acceptAll: 'Aceptar todo',
acceptSome: 'Personalizar',
reject: 'Solo esenciales',
continue: 'Continuar sin consentimiento',
save: 'Guardar configuración',
close: 'Cerrar',
functionalTitle: 'Cookies Funcionales',
functionalDesc: 'Necesarias para el funcionamiento adecuado del sitio (idioma, tema). Siempre habilitadas.',
analyticsTitle: 'Cookies Analíticas',
analyticsDesc: 'Nos ayudan a entender cómo los visitantes interactúan con nuestro sitio web.'
},
// Italian
it: {
title: 'Impostazioni Cookie',
message: 'Questo sito web utilizza i cookie per fornirvi la migliore esperienza possibile. Rispettiamo la vostra privacy e vi diamo il pieno controllo sui vostri dati.',
acceptAll: 'Accetta tutto',
acceptSome: 'Personalizza',
reject: 'Solo essenziali',
continue: 'Continua senza consenso',
save: 'Salva impostazioni',
close: 'Chiudi',
functionalTitle: 'Cookie Funzionali',
functionalDesc: 'Necessari per il corretto funzionamento del sito (lingua, tema). Sempre abilitati.',
analyticsTitle: 'Cookie Analitici',
analyticsDesc: 'Ci aiutano a capire come i visitatori interagiscono con il nostro sito web.'
},
// Dutch
nl: {
title: 'Cookie-instellingen',
message: 'Deze website gebruikt cookies om u de best mogelijke ervaring te bieden. We respecteren uw privacy en geven u volledige controle over uw gegevens.',
acceptAll: 'Alles accepteren',
acceptSome: 'Aanpassen',
reject: 'Alleen essentieel',
continue: 'Doorgaan zonder toestemming',
save: 'Instellingen opslaan',
close: 'Sluiten',
functionalTitle: 'Functionele Cookies',
functionalDesc: 'Noodzakelijk voor de goede werking van de site (taal, thema). Altijd ingeschakeld.',
analyticsTitle: 'Analytische Cookies',
analyticsDesc: 'Helpen ons begrijpen hoe bezoekers omgaan met onze website.'
},
// Portuguese
pt: {
title: 'Configurações de Cookies',
message: 'Este site utiliza cookies para lhe proporcionar a melhor experiência possível. Respeitamos a sua privacidade e damos-lhe controlo total sobre os seus dados.',
acceptAll: 'Aceitar tudo',
acceptSome: 'Personalizar',
reject: 'Apenas essenciais',
continue: 'Continuar sem consentimento',
save: 'Guardar configurações',
close: 'Fechar',
functionalTitle: 'Cookies Funcionais',
functionalDesc: 'Necessários para o funcionamento adequado do site (idioma, tema). Sempre ativados.',
analyticsTitle: 'Cookies Analíticos',
analyticsDesc: 'Ajudam-nos a perceber como os visitantes interagem com o nosso site.'
}
};
/**
* Detects the user's preferred language from browser settings
* @returns {string} Language code (e.g., 'en', 'fr', 'de')
*/
export function detectLanguage() {
// Get browser language
const browserLang = navigator.language || navigator.languages?.[0] || 'en';
// Extract language code (e.g., 'en-US' -> 'en')
const langCode = browserLang.split('-')[0].toLowerCase();
// Check if we have translations for this language
if (translations[langCode]) {
return langCode;
}
// Fallback to English
return 'en';
}
/**
* Gets translations for a specific language
* @param {string} language - Language code
* @returns {object} Translation object
*/
export function getTranslations(language = 'en') {
return translations[language] || translations['en'];
}
/**
* Gets available language codes
* @returns {string[]} Array of available language codes
*/
export function getAvailableLanguages() {
return Object.keys(translations);
}
// Default export
export default translations;