Add default cookie banner translations for fr, de, es
New banners now get French, German, and Spanish UI string translations seeded alongside English during creation. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -29,35 +29,133 @@ var defaultCategories = []struct {
|
||||
{"Uncategorised", "Cookies that have not been assigned to a category yet.", coredata.CookieCategoryKindUncategorised, 4},
|
||||
}
|
||||
|
||||
var defaultUIStrings = map[string]string{
|
||||
"banner_title": "Cookie Preferences",
|
||||
"banner_description": "We use cookies to improve your experience and analyze site traffic. {{privacy_policy_link}}",
|
||||
"button_accept_all": "Accept all",
|
||||
"button_reject_all": "Reject all",
|
||||
"button_customize": "Customize",
|
||||
"button_save": "Save preferences",
|
||||
"panel_title": "Customise Preferences",
|
||||
"panel_description": "Choose which cookie categories to allow. {{necessary_category}} cookies are always active as they are needed for the site to work.",
|
||||
"label_description": "Description: {{value}}",
|
||||
"label_duration": "Duration: {{value}}",
|
||||
"aria_close": "Close",
|
||||
"aria_show_details": "Show cookie details",
|
||||
"aria_hide_details": "Hide cookie details",
|
||||
"aria_cookie_settings": "Cookie settings",
|
||||
"privacy_policy_link_text": "Privacy Policy",
|
||||
"placeholder_text": "This content requires {{category}} cookies.",
|
||||
"placeholder_button": "Manage cookie preferences",
|
||||
"duration_year_one": "{{count}} year",
|
||||
"duration_year_other": "{{count}} years",
|
||||
"duration_month_one": "{{count}} month",
|
||||
"duration_month_other": "{{count}} months",
|
||||
"duration_week_one": "{{count}} week",
|
||||
"duration_week_other": "{{count}} weeks",
|
||||
"duration_day_one": "{{count}} day",
|
||||
"duration_day_other": "{{count}} days",
|
||||
"duration_hour_one": "{{count}} hour",
|
||||
"duration_hour_other": "{{count}} hours",
|
||||
"duration_minute_one": "{{count}} minute",
|
||||
"duration_minute_other": "{{count}} minutes",
|
||||
"duration_session": "session",
|
||||
var defaultUIStringsByLanguage = map[string]map[string]string{
|
||||
"en": {
|
||||
"banner_title": "Cookie Preferences",
|
||||
"banner_description": "We use cookies to improve your experience and analyze site traffic. {{privacy_policy_link}}",
|
||||
"button_accept_all": "Accept all",
|
||||
"button_reject_all": "Reject all",
|
||||
"button_customize": "Customize",
|
||||
"button_save": "Save preferences",
|
||||
"panel_title": "Customise Preferences",
|
||||
"panel_description": "Choose which cookie categories to allow. {{necessary_category}} cookies are always active as they are needed for the site to work.",
|
||||
"label_description": "Description: {{value}}",
|
||||
"label_duration": "Duration: {{value}}",
|
||||
"aria_close": "Close",
|
||||
"aria_show_details": "Show cookie details",
|
||||
"aria_hide_details": "Hide cookie details",
|
||||
"aria_cookie_settings": "Cookie settings",
|
||||
"privacy_policy_link_text": "Privacy Policy",
|
||||
"placeholder_text": "This content requires {{category}} cookies.",
|
||||
"placeholder_button": "Manage cookie preferences",
|
||||
"duration_year_one": "{{count}} year",
|
||||
"duration_year_other": "{{count}} years",
|
||||
"duration_month_one": "{{count}} month",
|
||||
"duration_month_other": "{{count}} months",
|
||||
"duration_week_one": "{{count}} week",
|
||||
"duration_week_other": "{{count}} weeks",
|
||||
"duration_day_one": "{{count}} day",
|
||||
"duration_day_other": "{{count}} days",
|
||||
"duration_hour_one": "{{count}} hour",
|
||||
"duration_hour_other": "{{count}} hours",
|
||||
"duration_minute_one": "{{count}} minute",
|
||||
"duration_minute_other": "{{count}} minutes",
|
||||
"duration_session": "session",
|
||||
},
|
||||
"fr": {
|
||||
"banner_title": "Préférences de cookies",
|
||||
"banner_description": "Nous utilisons des cookies pour améliorer votre expérience et analyser le trafic du site. {{privacy_policy_link}}",
|
||||
"button_accept_all": "Tout accepter",
|
||||
"button_reject_all": "Tout refuser",
|
||||
"button_customize": "Personnaliser",
|
||||
"button_save": "Enregistrer les préférences",
|
||||
"panel_title": "Personnaliser les préférences",
|
||||
"panel_description": "Choisissez les catégories de cookies à autoriser. Les cookies {{necessary_category}} sont toujours actifs car ils sont nécessaires au fonctionnement du site.",
|
||||
"label_description": "Description : {{value}}",
|
||||
"label_duration": "Durée : {{value}}",
|
||||
"aria_close": "Fermer",
|
||||
"aria_show_details": "Afficher les détails des cookies",
|
||||
"aria_hide_details": "Masquer les détails des cookies",
|
||||
"aria_cookie_settings": "Paramètres des cookies",
|
||||
"privacy_policy_link_text": "Politique de confidentialité",
|
||||
"placeholder_text": "Ce contenu nécessite les cookies {{category}}.",
|
||||
"placeholder_button": "Gérer les préférences de cookies",
|
||||
"duration_year_one": "{{count}} an",
|
||||
"duration_year_other": "{{count}} ans",
|
||||
"duration_month_one": "{{count}} mois",
|
||||
"duration_month_other": "{{count}} mois",
|
||||
"duration_week_one": "{{count}} semaine",
|
||||
"duration_week_other": "{{count}} semaines",
|
||||
"duration_day_one": "{{count}} jour",
|
||||
"duration_day_other": "{{count}} jours",
|
||||
"duration_hour_one": "{{count}} heure",
|
||||
"duration_hour_other": "{{count}} heures",
|
||||
"duration_minute_one": "{{count}} minute",
|
||||
"duration_minute_other": "{{count}} minutes",
|
||||
"duration_session": "session",
|
||||
},
|
||||
"de": {
|
||||
"banner_title": "Cookie-Einstellungen",
|
||||
"banner_description": "Wir verwenden Cookies, um Ihre Erfahrung zu verbessern und den Website-Verkehr zu analysieren. {{privacy_policy_link}}",
|
||||
"button_accept_all": "Alle akzeptieren",
|
||||
"button_reject_all": "Alle ablehnen",
|
||||
"button_customize": "Anpassen",
|
||||
"button_save": "Einstellungen speichern",
|
||||
"panel_title": "Einstellungen anpassen",
|
||||
"panel_description": "Wählen Sie, welche Cookie-Kategorien zugelassen werden sollen. {{necessary_category}}-Cookies sind immer aktiv, da sie für den Betrieb der Website erforderlich sind.",
|
||||
"label_description": "Beschreibung: {{value}}",
|
||||
"label_duration": "Dauer: {{value}}",
|
||||
"aria_close": "Schließen",
|
||||
"aria_show_details": "Cookie-Details anzeigen",
|
||||
"aria_hide_details": "Cookie-Details ausblenden",
|
||||
"aria_cookie_settings": "Cookie-Einstellungen",
|
||||
"privacy_policy_link_text": "Datenschutzrichtlinie",
|
||||
"placeholder_text": "Dieser Inhalt erfordert {{category}}-Cookies.",
|
||||
"placeholder_button": "Cookie-Einstellungen verwalten",
|
||||
"duration_year_one": "{{count}} Jahr",
|
||||
"duration_year_other": "{{count}} Jahre",
|
||||
"duration_month_one": "{{count}} Monat",
|
||||
"duration_month_other": "{{count}} Monate",
|
||||
"duration_week_one": "{{count}} Woche",
|
||||
"duration_week_other": "{{count}} Wochen",
|
||||
"duration_day_one": "{{count}} Tag",
|
||||
"duration_day_other": "{{count}} Tage",
|
||||
"duration_hour_one": "{{count}} Stunde",
|
||||
"duration_hour_other": "{{count}} Stunden",
|
||||
"duration_minute_one": "{{count}} Minute",
|
||||
"duration_minute_other": "{{count}} Minuten",
|
||||
"duration_session": "Sitzung",
|
||||
},
|
||||
"es": {
|
||||
"banner_title": "Preferencias de cookies",
|
||||
"banner_description": "Utilizamos cookies para mejorar su experiencia y analizar el tráfico del sitio. {{privacy_policy_link}}",
|
||||
"button_accept_all": "Aceptar todo",
|
||||
"button_reject_all": "Rechazar todo",
|
||||
"button_customize": "Personalizar",
|
||||
"button_save": "Guardar preferencias",
|
||||
"panel_title": "Personalizar preferencias",
|
||||
"panel_description": "Elija qué categorías de cookies permitir. Las cookies {{necessary_category}} siempre están activas ya que son necesarias para el funcionamiento del sitio.",
|
||||
"label_description": "Descripción: {{value}}",
|
||||
"label_duration": "Duración: {{value}}",
|
||||
"aria_close": "Cerrar",
|
||||
"aria_show_details": "Mostrar detalles de cookies",
|
||||
"aria_hide_details": "Ocultar detalles de cookies",
|
||||
"aria_cookie_settings": "Configuración de cookies",
|
||||
"privacy_policy_link_text": "Política de privacidad",
|
||||
"placeholder_text": "Este contenido requiere cookies de {{category}}.",
|
||||
"placeholder_button": "Gestionar preferencias de cookies",
|
||||
"duration_year_one": "{{count}} año",
|
||||
"duration_year_other": "{{count}} años",
|
||||
"duration_month_one": "{{count}} mes",
|
||||
"duration_month_other": "{{count}} meses",
|
||||
"duration_week_one": "{{count}} semana",
|
||||
"duration_week_other": "{{count}} semanas",
|
||||
"duration_day_one": "{{count}} día",
|
||||
"duration_day_other": "{{count}} días",
|
||||
"duration_hour_one": "{{count}} hora",
|
||||
"duration_hour_other": "{{count}} horas",
|
||||
"duration_minute_one": "{{count}} minuto",
|
||||
"duration_minute_other": "{{count}} minutos",
|
||||
"duration_session": "sesión",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -545,23 +545,25 @@ func (s *Service) CreateCookieBanner(
|
||||
}
|
||||
}
|
||||
|
||||
defaultTranslationsJSON, err := json.Marshal(defaultUIStrings)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot marshal default UI strings: %w", err)
|
||||
}
|
||||
for lang, uiStrings := range defaultUIStringsByLanguage {
|
||||
translationsJSON, err := json.Marshal(uiStrings)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot marshal default UI strings for %s: %w", lang, err)
|
||||
}
|
||||
|
||||
defaultTranslation := &coredata.CookieBannerTranslation{
|
||||
ID: gid.New(scope.GetTenantID(), coredata.CookieBannerTranslationEntityType),
|
||||
OrganizationID: banner.OrganizationID,
|
||||
CookieBannerID: banner.ID,
|
||||
Language: "en",
|
||||
Translations: defaultTranslationsJSON,
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
translation := &coredata.CookieBannerTranslation{
|
||||
ID: gid.New(scope.GetTenantID(), coredata.CookieBannerTranslationEntityType),
|
||||
OrganizationID: banner.OrganizationID,
|
||||
CookieBannerID: banner.ID,
|
||||
Language: lang,
|
||||
Translations: translationsJSON,
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
|
||||
if err := defaultTranslation.Insert(ctx, tx, scope); err != nil {
|
||||
return fmt.Errorf("cannot insert default translation: %w", err)
|
||||
if err := translation.Insert(ctx, tx, scope); err != nil {
|
||||
return fmt.Errorf("cannot insert default translation for %s: %w", lang, err)
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := s.ensureDraftVersionForBanner(ctx, tx, scope, banner.ID); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user