- i18n front-end (fr/en/de/es/it/pl/nl/ro/pt/cs/sv) via locales.js + data-i18n attrs - Sélecteur de langue avec drapeaux dans la topbar, persisté en localStorage - Mentions légales et FAQ générées dynamiquement par locale (buildLegal/buildFaq) - Section "Remerciements" : Geoapify, OSM, Leaflet, Metal Archives, HellBlazer - Admin : centre de commandes (crawler jobs, géocodeur, maintenance, live log tail 10s) - Admin : boutons reset-errors / requeue-all géocodeur avec confirmation - Admin : toutes les actions admin loguées dans crawl_log pour audit - Suppression anciens artefacts (worker, infra/, apps/api/src/index.js) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
476 lines
38 KiB
JavaScript
476 lines
38 KiB
JavaScript
/* locales.js — 11 langues pour Metal from Europe */
|
||
(function () {
|
||
"use strict";
|
||
|
||
const H = "font-size:14px;color:rgba(231,226,218,0.95)";
|
||
const T = "color:rgba(162,176,194,0.90)";
|
||
const A = "color:rgba(198,26,26,0.85);text-decoration:none";
|
||
|
||
function lk(href, text) {
|
||
return `<a href="${href}" target="_blank" rel="noopener noreferrer" style="${A}">${text}</a>`;
|
||
}
|
||
|
||
const L = {
|
||
contact: `<a href="mailto:contact@metalfrom.eu" style="${A}">contact@metalfrom.eu</a>`,
|
||
ma: lk("https://www.metal-archives.com/", "Metal Archives"),
|
||
geoapify: lk("https://www.geoapify.com/", "Geoapify"),
|
||
osm: lk("https://www.openstreetmap.org/", "OpenStreetMap"),
|
||
leaflet: lk("https://leafletjs.com/", "Leaflet"),
|
||
gc: lk("https://www.goatcounter.com/", "GoatCounter"),
|
||
};
|
||
|
||
function lb(title, content) {
|
||
return `<div><b style="${H}">${title}</b><br/><span style="${T}">${content}</span></div>`;
|
||
}
|
||
|
||
function faqBlock(q, a) {
|
||
return `<div><b style="${H}">${q}</b><br/><span style="${T}">${a}</span></div>`;
|
||
}
|
||
|
||
function buildLegal(d) {
|
||
const blocks = [
|
||
lb(d.ed_title,
|
||
`${d.ed_name}<br/>${d.ed_status}<br/>${d.ed_contact} ${L.contact}`),
|
||
lb(d.host_title, d.host_text),
|
||
lb(d.ip_title, d.ip_text.replace("__MA__", L.ma)),
|
||
lb(d.prv_title, d.prv_text.replace("__GC__", L.gc)),
|
||
lb(d.pub_title, d.pub_name),
|
||
lb(d.thanks_title,
|
||
`${d.thanks_intro}<br/>
|
||
• ${d.thanks_map} : ${L.osm} + ${L.leaflet}<br/>
|
||
• ${d.thanks_geo} : Powered by ${L.geoapify}<br/>
|
||
• ${d.thanks_data} : ${L.ma}<br/>
|
||
• ${d.thanks_hb}`),
|
||
];
|
||
return `<div style="display:flex;flex-direction:column;gap:16px;">${blocks.join("")}</div>`;
|
||
}
|
||
|
||
function buildFaq(d) {
|
||
const blocks = d.faq.map(([q, a]) => faqBlock(q, a));
|
||
return `<div style="display:flex;flex-direction:column;gap:14px;">${blocks.join("")}</div>`;
|
||
}
|
||
|
||
/* ================================================================
|
||
Données par langue
|
||
================================================================ */
|
||
const RAW = {
|
||
|
||
fr: {
|
||
search_placeholder: "Rechercher (nom, genre, ville, pays)…",
|
||
displayed: "affichés", total_bands: "total", localities: "localités", located: "localisés",
|
||
view_section: "Vue", reset_view: "Reset vue", heatmap_label: "Heatmap",
|
||
filters_section: "Filtres", without_coords_btn: "Sans coords",
|
||
country_label: "Pays", all_label: "Tous", status_label: "Statut",
|
||
genres_label: "Genres", subgenres_label: "Sous-genres", selection_label: "Sélection",
|
||
themes_label: "Thèmes", timeline_label: "Timeline (année de formation)",
|
||
sort_label: "Tri de la liste", sort_az: "A → Z", sort_status: "Par statut",
|
||
sort_genre: "Par genre", sort_country: "Par pays", sort_year: "Par année (récent → ancien)",
|
||
list_section: "Liste", legal_link: "Mentions légales", faq_link: "FAQ",
|
||
visits_label: "Visites", this_month_label: "Ce mois", options_btn: "Options", close_btn: "Fermer",
|
||
all_years_label: "toutes", year_data_missing: "données manquantes",
|
||
year_data_unavailable: "Données d’année indisponibles", results_label: "résultat(s)",
|
||
loading_text: "Chargement…", without_coords_modal: "Groupes sans coordonnées",
|
||
group_s: "groupe", group_p: "groupes", location_fallback: "Localisation",
|
||
legal_title: "Mentions légales", faq_title: "FAQ",
|
||
// legal
|
||
ed_title: "Éditeur du site", ed_name: "Auteur : Nico", ed_status: "Statut : particulier", ed_contact: "Contact :",
|
||
host_title: "Hébergeur", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - France",
|
||
ip_title: "Propriété intellectuelle",
|
||
ip_text: "Les contenus (textes, visuels, données agrégées) sont proposés à titre informatif. Les logos et noms de groupes restent la propriété de leurs auteurs. L’ensemble des données provient du site __MA__, avec l’autorisation des webmasters.",
|
||
prv_title: "Données personnelles",
|
||
prv_text: "Ce site ne collecte pas d’informations personnelles ni ne dépose de cookies de suivi. Des logs techniques peuvent être conservés par l’hébergeur. Le trafic est analysé via __GC__ (sans cookie).",
|
||
pub_title: "Responsable de publication", pub_name: "Nico",
|
||
thanks_title: "Remerciements",
|
||
thanks_intro: "Ce site repose sur des outils et services formidables :",
|
||
thanks_map: "Cartographie", thanks_geo: "Géocodage", thanks_data: "Données",
|
||
thanks_hb: "Remerciements spéciaux à HellBlazer (webmaster Metal Archives) pour l’autorisation de scraping.",
|
||
faq: [
|
||
["Q : D’où viennent les données ?", "R : Metal Archives + enrichissement géographique automatisé. Quelques corrections manuelles, mais c’est fastidieux."],
|
||
["Q : Puis-je corriger une erreur ?", "R : Oui, si elle concerne le site, contacte-moi via l’adresse dans les mentions légales. Pour les données, corrige directement sur Metal Archives."],
|
||
["Q : Pourquoi certains groupes ne sont pas visibles ?", "R : Il y a des erreurs inhérentes au géocodage automatique. La correction manuelle des localisations est fastidieuse."],
|
||
["Q : Je viens de créer mon groupe sur Metal Archives mais il n’apparaît pas.", "R : Aucune synchronisation automatique n’est implémentée pour l’instant."],
|
||
["Q : Est-ce que le site me traque ?", "R : Uniquement pour l’analyse de trafic via GoatCounter (sans cookie). Les adblockers bloquent ces appels sans problème."],
|
||
],
|
||
},
|
||
|
||
en: {
|
||
search_placeholder: "Search (name, genre, city, country)…",
|
||
displayed: "displayed", total_bands: "total", localities: "localities", located: "located",
|
||
view_section: "View", reset_view: "Reset view", heatmap_label: "Heatmap",
|
||
filters_section: "Filters", without_coords_btn: "Without coords",
|
||
country_label: "Country", all_label: "All", status_label: "Status",
|
||
genres_label: "Genres", subgenres_label: "Subgenres", selection_label: "Selection",
|
||
themes_label: "Themes", timeline_label: "Timeline (formation year)",
|
||
sort_label: "Sort list", sort_az: "A → Z", sort_status: "By status",
|
||
sort_genre: "By genre", sort_country: "By country", sort_year: "By year (recent → oldest)",
|
||
list_section: "List", legal_link: "Legal notice", faq_link: "FAQ",
|
||
visits_label: "Visits", this_month_label: "This month", options_btn: "Options", close_btn: "Close",
|
||
all_years_label: "all", year_data_missing: "data missing",
|
||
year_data_unavailable: "Year data unavailable", results_label: "result(s)",
|
||
loading_text: "Loading…", without_coords_modal: "Bands without coordinates",
|
||
group_s: "band", group_p: "bands", location_fallback: "Location",
|
||
legal_title: "Legal notice", faq_title: "FAQ",
|
||
ed_title: "Site Editor", ed_name: "Author: Nico", ed_status: "Status: individual", ed_contact: "Contact:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - France",
|
||
ip_title: "Intellectual Property",
|
||
ip_text: "Content (texts, visuals, aggregated data) is provided for informational purposes. Band logos and names remain the property of their authors. All data originates from __MA__, with the webmasters’ permission.",
|
||
prv_title: "Personal Data",
|
||
prv_text: "This site does not collect personal information or set tracking cookies. Technical logs may be kept by the hosting provider. Traffic is analyzed via __GC__ (cookie-free).",
|
||
pub_title: "Publication Manager", pub_name: "Nico",
|
||
thanks_title: "Acknowledgments",
|
||
thanks_intro: "This site relies on outstanding tools and services:",
|
||
thanks_map: "Mapping", thanks_geo: "Geocoding", thanks_data: "Data",
|
||
thanks_hb: "Special thanks to HellBlazer (Metal Archives webmaster) for granting scraping permission.",
|
||
faq: [
|
||
["Q: Where does the data come from?", "A: Metal Archives + automated geographic enrichment. Some manual corrections, but it’s tedious."],
|
||
["Q: Can I correct an error?", "A: Yes, for site issues contact me via the email in the legal notice. For data issues, correct directly on Metal Archives."],
|
||
["Q: Why are some bands not visible?", "A: Automatic geocoding has inherent errors. Manual correction of locations is tedious, so some data may be inaccurate."],
|
||
["Q: I just created my band on Metal Archives but it doesn’t appear.", "A: No automatic sync with Metal Archives is currently implemented."],
|
||
["Q: Does the site track me?", "A: Only for traffic analysis via GoatCounter (no cookies). Ad blockers block these requests without issue."],
|
||
],
|
||
},
|
||
|
||
de: {
|
||
search_placeholder: "Suchen (Name, Genre, Stadt, Land)…",
|
||
displayed: "angezeigt", total_bands: "gesamt", localities: "Orte", located: "geortet",
|
||
view_section: "Ansicht", reset_view: "Ansicht zurücksetzen", heatmap_label: "Heatmap",
|
||
filters_section: "Filter", without_coords_btn: "Ohne Koordinaten",
|
||
country_label: "Land", all_label: "Alle", status_label: "Status",
|
||
genres_label: "Genres", subgenres_label: "Subgenres", selection_label: "Auswahl",
|
||
themes_label: "Themen", timeline_label: "Zeitstrahl (Gründungsjahr)",
|
||
sort_label: "Liste sortieren", sort_az: "A → Z", sort_status: "Nach Status",
|
||
sort_genre: "Nach Genre", sort_country: "Nach Land", sort_year: "Nach Jahr (neueste → älteste)",
|
||
list_section: "Liste", legal_link: "Impressum", faq_link: "FAQ",
|
||
visits_label: "Besuche", this_month_label: "Diesen Monat", options_btn: "Optionen", close_btn: "Schließen",
|
||
all_years_label: "alle", year_data_missing: "Daten fehlen",
|
||
year_data_unavailable: "Jahresdaten nicht verfügbar", results_label: "Ergebnis(se)",
|
||
loading_text: "Laden…", without_coords_modal: "Bands ohne Koordinaten",
|
||
group_s: "Band", group_p: "Bands", location_fallback: "Standort",
|
||
legal_title: "Impressum", faq_title: "FAQ",
|
||
ed_title: "Websitebetreiber", ed_name: "Autor: Nico", ed_status: "Status: Privatperson", ed_contact: "Kontakt:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Frankreich",
|
||
ip_title: "Geistiges Eigentum",
|
||
ip_text: "Inhalte (Texte, Grafiken, aggregierte Daten) dienen informativen Zwecken. Band-Logos und Namen bleiben Eigentum ihrer Urheber. Alle Daten stammen von __MA__, mit Genehmigung der Webmaster.",
|
||
prv_title: "Datenschutz",
|
||
prv_text: "Diese Website erhebt keine personenbezogenen Daten und setzt keine Tracking-Cookies. Technische Logs können vom Hosting-Anbieter gespeichert werden. Der Datenverkehr wird über __GC__ analysiert (ohne Cookie).",
|
||
pub_title: "Verantwortlicher", pub_name: "Nico",
|
||
thanks_title: "Danksagungen",
|
||
thanks_intro: "Diese Website nutzt herausragende Tools und Dienste:",
|
||
thanks_map: "Kartierung", thanks_geo: "Geocodierung", thanks_data: "Daten",
|
||
thanks_hb: "Besonderen Dank an HellBlazer (Metal Archives Webmaster) für die Scraping-Genehmigung.",
|
||
faq: [
|
||
["F: Woher kommen die Daten?", "A: Metal Archives + automatische geografische Anreicherung. Einige manuelle Korrekturen, aber das ist mühsam."],
|
||
["F: Kann ich einen Fehler korrigieren?", "A: Ja, bei Website-Problemen kontaktiere mich über die im Impressum angegebene E-Mail. Bei Datenproblemen bitte direkt auf Metal Archives korrigieren."],
|
||
["F: Warum sind manche Bands nicht sichtbar?", "A: Das automatische Geocoding ist fehleranfällig. Die manuelle Korrektur von Standorten ist aufwändig."],
|
||
["F: Ich habe meine Band auf Metal Archives erstellt, aber sie erscheint nicht.", "A: Derzeit ist keine automatische Synchronisierung mit Metal Archives implementiert."],
|
||
["F: Trackt mich die Website?", "A: Nur für Verkehrsanalysen via GoatCounter (ohne Cookie). Werbeblocker blockieren diese Anfragen problemlos."],
|
||
],
|
||
},
|
||
|
||
es: {
|
||
search_placeholder: "Buscar (nombre, género, ciudad, país)…",
|
||
displayed: "mostrados", total_bands: "total", localities: "localidades", located: "localizados",
|
||
view_section: "Vista", reset_view: "Restablecer vista", heatmap_label: "Mapa de calor",
|
||
filters_section: "Filtros", without_coords_btn: "Sin coordenadas",
|
||
country_label: "País", all_label: "Todos", status_label: "Estado",
|
||
genres_label: "Géneros", subgenres_label: "Subgéneros", selection_label: "Selección",
|
||
themes_label: "Temas", timeline_label: "Línea de tiempo (año de formación)",
|
||
sort_label: "Ordenar lista", sort_az: "A → Z", sort_status: "Por estado",
|
||
sort_genre: "Por género", sort_country: "Por país", sort_year: "Por año (reciente → antiguo)",
|
||
list_section: "Lista", legal_link: "Aviso legal", faq_link: "FAQ",
|
||
visits_label: "Visitas", this_month_label: "Este mes", options_btn: "Opciones", close_btn: "Cerrar",
|
||
all_years_label: "todos", year_data_missing: "datos no disponibles",
|
||
year_data_unavailable: "Datos de año no disponibles", results_label: "resultado(s)",
|
||
loading_text: "Cargando…", without_coords_modal: "Grupos sin coordenadas",
|
||
group_s: "grupo", group_p: "grupos", location_fallback: "Ubicación",
|
||
legal_title: "Aviso legal", faq_title: "FAQ",
|
||
ed_title: "Editor del sitio", ed_name: "Autor: Nico", ed_status: "Condición: particular", ed_contact: "Contacto:",
|
||
host_title: "Alojamiento", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Francia",
|
||
ip_title: "Propiedad intelectual",
|
||
ip_text: "Los contenidos (textos, imágenes, datos agregados) se ofrecen con fines informativos. Los logotipos y nombres de grupos son propiedad de sus autores. Todos los datos provienen de __MA__, con permiso de los administradores.",
|
||
prv_title: "Datos personales",
|
||
prv_text: "Este sitio no recopila datos personales ni instala cookies de seguimiento. El proveedor de alojamiento puede conservar registros técnicos. El tráfico se analiza mediante __GC__ (sin cookies).",
|
||
pub_title: "Responsable de publicación", pub_name: "Nico",
|
||
thanks_title: "Agradecimientos",
|
||
thanks_intro: "Este sitio utiliza herramientas y servicios excepcionales:",
|
||
thanks_map: "Cartografía", thanks_geo: "Geocodificación", thanks_data: "Datos",
|
||
thanks_hb: "Agradecimiento especial a HellBlazer (webmaster de Metal Archives) por autorizar el scraping.",
|
||
faq: [
|
||
["P: ¿De dónde vienen los datos?", "R: Metal Archives + enriquecimiento geográfico automatizado. Algunas correcciones manuales, pero es tedioso."],
|
||
["P: ¿Puedo corregir un error?", "R: Sí, si es del sitio contáctame por el correo en el aviso legal. Para datos, corrígelo directamente en Metal Archives."],
|
||
["P: ¿Por qué algunos grupos no son visibles?", "R: El geocodificado automático tiene errores inherentes. La corrección manual de ubicaciones es tediosa."],
|
||
["P: Acabo de crear mi grupo en Metal Archives pero no aparece.", "R: Actualmente no hay sincronización automática con Metal Archives."],
|
||
["P: ¿El sitio me rastrea?", "R: Solo para análisis de tráfico via GoatCounter (sin cookies). Los bloqueadores de anuncios bloquean estas solicitudes sin problema."],
|
||
],
|
||
},
|
||
|
||
it: {
|
||
search_placeholder: "Cerca (nome, genere, città, paese)…",
|
||
displayed: "visualizzati", total_bands: "totale", localities: "località", located: "geolocalizzati",
|
||
view_section: "Vista", reset_view: "Reimposta vista", heatmap_label: "Mappa di calore",
|
||
filters_section: "Filtri", without_coords_btn: "Senza coordinate",
|
||
country_label: "Paese", all_label: "Tutti", status_label: "Stato",
|
||
genres_label: "Generi", subgenres_label: "Sottogeneri", selection_label: "Selezione",
|
||
themes_label: "Temi", timeline_label: "Timeline (anno di formazione)",
|
||
sort_label: "Ordina lista", sort_az: "A → Z", sort_status: "Per stato",
|
||
sort_genre: "Per genere", sort_country: "Per paese", sort_year: "Per anno (recente → antico)",
|
||
list_section: "Lista", legal_link: "Note legali", faq_link: "FAQ",
|
||
visits_label: "Visite", this_month_label: "Questo mese", options_btn: "Opzioni", close_btn: "Chiudi",
|
||
all_years_label: "tutti", year_data_missing: "dati mancanti",
|
||
year_data_unavailable: "Dati anno non disponibili", results_label: "risultato/i",
|
||
loading_text: "Caricamento…", without_coords_modal: "Band senza coordinate",
|
||
group_s: "band", group_p: "band", location_fallback: "Posizione",
|
||
legal_title: "Note legali", faq_title: "FAQ",
|
||
ed_title: "Editore del sito", ed_name: "Autore: Nico", ed_status: "Status: privato", ed_contact: "Contatto:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Francia",
|
||
ip_title: "Proprietà intellettuale",
|
||
ip_text: "I contenuti (testi, immagini, dati aggregati) sono forniti a scopo informativo. Loghi e nomi delle band rimangono di proprietà dei rispettivi autori. Tutti i dati provengono da __MA__, con il permesso dei webmaster.",
|
||
prv_title: "Dati personali",
|
||
prv_text: "Questo sito non raccoglie dati personali né installa cookie di tracciamento. Il fornitore di hosting può conservare log tecnici. Il traffico è analizzato tramite __GC__ (senza cookie).",
|
||
pub_title: "Responsabile della pubblicazione", pub_name: "Nico",
|
||
thanks_title: "Ringraziamenti",
|
||
thanks_intro: "Questo sito si basa su strumenti e servizi eccezionali:",
|
||
thanks_map: "Cartografia", thanks_geo: "Geocodifica", thanks_data: "Dati",
|
||
thanks_hb: "Un ringraziamento speciale a HellBlazer (webmaster di Metal Archives) per l’autorizzazione allo scraping.",
|
||
faq: [
|
||
["D: Da dove provengono i dati?", "R: Metal Archives + arricchimento geografico automatizzato. Alcune correzioni manuali, ma è laborioso."],
|
||
["D: Posso correggere un errore?", "R: Sì, per problemi del sito contattami tramite l’email nelle note legali. Per i dati, correggili direttamente su Metal Archives."],
|
||
["D: Perché alcune band non sono visibili?", "R: Il geocodifica automatico ha errori inerenti. La correzione manuale delle posizioni è laboriosa."],
|
||
["D: Ho appena creato la mia band su Metal Archives ma non appare.", "R: Al momento non è implementata la sincronizzazione automatica con Metal Archives."],
|
||
["D: Il sito mi traccia?", "R: Solo per l’analisi del traffico tramite GoatCounter (senza cookie). I blocchi degli annunci bloccano queste richieste senza problemi."],
|
||
],
|
||
},
|
||
|
||
pl: {
|
||
search_placeholder: "Szukaj (nazwa, gatunek, miasto, kraj)…",
|
||
displayed: "wyświetlono", total_bands: "łącznie", localities: "miejscowości", located: "zlokalizowano",
|
||
view_section: "Widok", reset_view: "Resetuj widok", heatmap_label: "Mapa cieplna",
|
||
filters_section: "Filtry", without_coords_btn: "Bez współrzędnych",
|
||
country_label: "Kraj", all_label: "Wszystkie", status_label: "Status",
|
||
genres_label: "Gatunki", subgenres_label: "Podgatunki", selection_label: "Wybór",
|
||
themes_label: "Tematy", timeline_label: "Oś czasu (rok założenia)",
|
||
sort_label: "Sortuj listę", sort_az: "A → Z", sort_status: "Według statusu",
|
||
sort_genre: "Według gatunku", sort_country: "Według kraju", sort_year: "Według roku (najnowsze → najstarsze)",
|
||
list_section: "Lista", legal_link: "Informacje prawne", faq_link: "FAQ",
|
||
visits_label: "Odwiedziny", this_month_label: "W tym miesiącu", options_btn: "Opcje", close_btn: "Zamknij",
|
||
all_years_label: "wszystkie", year_data_missing: "brak danych",
|
||
year_data_unavailable: "Dane roku niedostępne", results_label: "wynik(ów)",
|
||
loading_text: "Ładowanie…", without_coords_modal: "Zespóły bez współrzędnych",
|
||
group_s: "zespół", group_p: "zespóły", location_fallback: "Lokalizacja",
|
||
legal_title: "Informacje prawne", faq_title: "FAQ",
|
||
ed_title: "Wydawca serwisu", ed_name: "Autor: Nico", ed_status: "Status: osoba prywatna", ed_contact: "Kontakt:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Francja",
|
||
ip_title: "Własność intelektualna",
|
||
ip_text: "Treści (teksty, grafiki, zagregowane dane) są udostępniane w celach informacyjnych. Logo i nazwy zespołów pozostają własnością ich autorów. Wszystkie dane pochodzą z __MA__, za zgodą webmasterów.",
|
||
prv_title: "Dane osobowe",
|
||
prv_text: "Serwis nie zbiera danych osobowych ani nie instaluje plików cookie śledzenia. Dostawca hostingu może przechowywać logi techniczne. Ruch jest analizowany przez __GC__ (bez cookies).",
|
||
pub_title: "Redaktor odpowiedzialny", pub_name: "Nico",
|
||
thanks_title: "Podziękowania",
|
||
thanks_intro: "Serwis korzysta z doskonałych narzędzi i usług:",
|
||
thanks_map: "Kartografia", thanks_geo: "Geokodowanie", thanks_data: "Dane",
|
||
thanks_hb: "Szczególne podziękowania dla HellBlazera (webmaster Metal Archives) za udzielenie zgody na scraping.",
|
||
faq: [
|
||
["P: Skąd pochodzą dane?", "O: Metal Archives + zautomatyzowane wzbogacanie geograficzne. Kilka ręcznych poprawek, ale to żmdne."],
|
||
["P: Czy mogę poprawić błąd?", "O: Tak, jeśli dotyczy serwisu, skontaktuj się przez e-mail podany w informacjach prawnych. Dla danych, popraw bezpośrednio na Metal Archives."],
|
||
["P: Dlaczego niektóre zespóły nie są widoczne?", "O: Automatyczne geokodowanie ma nieodłączne błędy. Ręczna korekta lokalizacji jest żmdna."],
|
||
["P: Właśnie założyłem zespół na Metal Archives, ale nie jest widoczny.", "O: Automatyczna synchronizacja z Metal Archives nie jest obecnie zaimplementowana."],
|
||
["P: Czy serwis mnie śledzi?", "O: Tylko do analizy ruchu przez GoatCounter (bez cookies). Blokery reklam blokują te żądania bez problemu."],
|
||
],
|
||
},
|
||
|
||
nl: {
|
||
search_placeholder: "Zoeken (naam, genre, stad, land)…",
|
||
displayed: "weergegeven", total_bands: "totaal", localities: "locaties", located: "gelokaliseerd",
|
||
view_section: "Weergave", reset_view: "Weergave herstellen", heatmap_label: "Warmtekaart",
|
||
filters_section: "Filters", without_coords_btn: "Zonder coördinaten",
|
||
country_label: "Land", all_label: "Alle", status_label: "Status",
|
||
genres_label: "Genres", subgenres_label: "Subgenres", selection_label: "Selectie",
|
||
themes_label: "Thema’s", timeline_label: "Tijdlijn (oprichtingsjaar)",
|
||
sort_label: "Lijst sorteren", sort_az: "A → Z", sort_status: "Op status",
|
||
sort_genre: "Op genre", sort_country: "Op land", sort_year: "Op jaar (nieuwste → oudste)",
|
||
list_section: "Lijst", legal_link: "Juridische informatie", faq_link: "FAQ",
|
||
visits_label: "Bezoeken", this_month_label: "Deze maand", options_btn: "Opties", close_btn: "Sluiten",
|
||
all_years_label: "alle", year_data_missing: "gegevens ontbreken",
|
||
year_data_unavailable: "Jaargegevens niet beschikbaar", results_label: "resultaat/en",
|
||
loading_text: "Laden…", without_coords_modal: "Bands zonder coördinaten",
|
||
group_s: "band", group_p: "bands", location_fallback: "Locatie",
|
||
legal_title: "Juridische informatie", faq_title: "FAQ",
|
||
ed_title: "Sitebeheerder", ed_name: "Auteur: Nico", ed_status: "Status: particulier", ed_contact: "Contact:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Frankrijk",
|
||
ip_title: "Intellectueel eigendom",
|
||
ip_text: "Inhoud (teksten, afbeeldingen, geaggregeerde gegevens) wordt aangeboden voor informatieve doeleinden. Logo’s en bandnamen blijven eigendom van hun auteurs. Alle gegevens zijn afkomstig van __MA__, met toestemming van de webmasters.",
|
||
prv_title: "Persoonsgegevens",
|
||
prv_text: "Deze site verzamelt geen persoonlijke gegevens en plaatst geen trackingcookies. De hostingprovider kan technische logs bewaren. Verkeer wordt geanalyseerd via __GC__ (zonder cookies).",
|
||
pub_title: "Publicatieverantwoordelijke", pub_name: "Nico",
|
||
thanks_title: "Met dank aan",
|
||
thanks_intro: "Deze site maakt gebruik van uitstekende tools en diensten:",
|
||
thanks_map: "Cartografie", thanks_geo: "Geocodering", thanks_data: "Gegevens",
|
||
thanks_hb: "Speciale dank aan HellBlazer (webmaster Metal Archives) voor de toestemming tot scraping.",
|
||
faq: [
|
||
["V: Waar komen de gegevens vandaan?", "A: Metal Archives + geautomatiseerde geografische verrijking. Enkele handmatige correcties, maar dat is vervelend."],
|
||
["V: Kan ik een fout corrigeren?", "A: Ja, voor siteproblemen neem contact op via het e-mailadres in de juridische informatie. Voor dataproblemen, corrigeer direct op Metal Archives."],
|
||
["V: Waarom zijn sommige bands niet zichtbaar?", "A: Automatisch geocoderen heeft inherente fouten. Handmatige correctie van locaties is vervelend."],
|
||
["V: Ik heb mijn band net aangemaakt op Metal Archives maar hij verschijnt niet.", "A: Automatische synchronisatie met Metal Archives is momenteel niet geïmplementeerd."],
|
||
["V: Volgt de site mij?", "A: Alleen voor verkeersanalyse via GoatCounter (geen cookies). Adblockers blokkeren deze verzoeken zonder probleem."],
|
||
],
|
||
},
|
||
|
||
ro: {
|
||
search_placeholder: "Căutare (nume, gen, oraş, țară)…",
|
||
displayed: "afişate", total_bands: "total", localities: "localități", located: "localizate",
|
||
view_section: "Vedere", reset_view: "Resetare vedere", heatmap_label: "Hartă termică",
|
||
filters_section: "Filtre", without_coords_btn: "Fără coordonate",
|
||
country_label: "Ţară", all_label: "Toate", status_label: "Stare",
|
||
genres_label: "Genuri", subgenres_label: "Subgenuri", selection_label: "Selecție",
|
||
themes_label: "Teme", timeline_label: "Cronologie (an de formare)",
|
||
sort_label: "Sortare listă", sort_az: "A → Z", sort_status: "După stare",
|
||
sort_genre: "După gen", sort_country: "După țară", sort_year: "După an (recent → vechi)",
|
||
list_section: "Listă", legal_link: "Mențiuni legale", faq_link: "FAQ",
|
||
visits_label: "Vizite", this_month_label: "Luna aceasta", options_btn: "Opțiuni", close_btn: "Închide",
|
||
all_years_label: "toți", year_data_missing: "date lipsă",
|
||
year_data_unavailable: "Date de an indisponibile", results_label: "rezultat(e)",
|
||
loading_text: "Se încarcă…", without_coords_modal: "Trupe fără coordonate",
|
||
group_s: "trupă", group_p: "trupe", location_fallback: "Locație",
|
||
legal_title: "Mențiuni legale", faq_title: "FAQ",
|
||
ed_title: "Editorul site-ului", ed_name: "Autor: Nico", ed_status: "Statut: persoană fizică", ed_contact: "Contact:",
|
||
host_title: "Găzduire", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Franța",
|
||
ip_title: "Proprietate intelectuală",
|
||
ip_text: "Conținuturile (texte, imagini, date agregate) sunt oferite cu scop informativ. Logo-urile şi numele trupelor rămân proprietatea autorilor lor. Toate datele provin de la __MA__, cu permisiunea administratorilor.",
|
||
prv_title: "Date personale",
|
||
prv_text: "Acest site nu colectează date personale şi nu instalează cookie-uri de urmărire. Furnizorul de găzduire poate păstra jurnale tehnice. Traficul este analizat prin __GC__ (fără cookie-uri).",
|
||
pub_title: "Responsabil publicație", pub_name: "Nico",
|
||
thanks_title: "Mulțumiri",
|
||
thanks_intro: "Acest site se bazează pe instrumente şi servicii remarcabile:",
|
||
thanks_map: "Cartografiere", thanks_geo: "Geocodificare", thanks_data: "Date",
|
||
thanks_hb: "Mulțumiri speciale lui HellBlazer (webmaster Metal Archives) pentru permisiunea de scraping.",
|
||
faq: [
|
||
["Î: De unde provin datele?", "R: Metal Archives + îmbogățire geografică automatizată. Câteva corecții manuale, dar este obositor."],
|
||
["Î: Pot corecta o eroare?", "R: Da, dacă priveşte site-ul, contactați-mă prin e-mailul din mențiunile legale. Pentru date, corectare direct pe Metal Archives."],
|
||
["Î: De ce unele trupe nu sunt vizibile?", "R: Geocodificarea automată are erori inerente. Corectarea manuală a locațiilor este obositoare."],
|
||
["Î: Am creat trupa mea pe Metal Archives dar nu apare.", "R: Momentan nu există sincronizare automată cu Metal Archives."],
|
||
["Î: Mă urmăreşte site-ul?", "R: Doar pentru analiza traficului prin GoatCounter (fără cookie-uri). Blocatoarele de reclame blochează aceste solicitări fără probleme."],
|
||
],
|
||
},
|
||
|
||
pt: {
|
||
search_placeholder: "Pesquisar (nome, género, cidade, país)…",
|
||
displayed: "exibidos", total_bands: "total", localities: "localidades", located: "localizados",
|
||
view_section: "Vista", reset_view: "Repor vista", heatmap_label: "Mapa de calor",
|
||
filters_section: "Filtros", without_coords_btn: "Sem coordenadas",
|
||
country_label: "País", all_label: "Todos", status_label: "Estado",
|
||
genres_label: "Géneros", subgenres_label: "Subgéneros", selection_label: "Seleção",
|
||
themes_label: "Temas", timeline_label: "Linha do tempo (ano de formação)",
|
||
sort_label: "Ordenar lista", sort_az: "A → Z", sort_status: "Por estado",
|
||
sort_genre: "Por género", sort_country: "Por país", sort_year: "Por ano (recente → antigo)",
|
||
list_section: "Lista", legal_link: "Aviso legal", faq_link: "FAQ",
|
||
visits_label: "Visitas", this_month_label: "Este mês", options_btn: "Opções", close_btn: "Fechar",
|
||
all_years_label: "todos", year_data_missing: "dados em falta",
|
||
year_data_unavailable: "Dados de ano indisponíveis", results_label: "resultado(s)",
|
||
loading_text: "A carregar…", without_coords_modal: "Bandas sem coordenadas",
|
||
group_s: "banda", group_p: "bandas", location_fallback: "Localização",
|
||
legal_title: "Aviso legal", faq_title: "FAQ",
|
||
ed_title: "Editor do site", ed_name: "Autor: Nico", ed_status: "Estatuto: particular", ed_contact: "Contacto:",
|
||
host_title: "Alojamento", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - França",
|
||
ip_title: "Propriedade intelectual",
|
||
ip_text: "Os conteúdos (textos, imagens, dados agregados) são disponibilizados para fins informativos. Logótipos e nomes de bandas pertencem aos respetivos autores. Todos os dados provêm de __MA__, com autorização dos webmasters.",
|
||
prv_title: "Dados pessoais",
|
||
prv_text: "Este site não recolhe dados pessoais nem instala cookies de rastreamento. O fornecedor de alojamento pode conservar registos técnicos. O tráfego é analisado via __GC__ (sem cookies).",
|
||
pub_title: "Responsável pela publicação", pub_name: "Nico",
|
||
thanks_title: "Agradecimentos",
|
||
thanks_intro: "Este site baseia-se em ferramentas e serviços excelentes:",
|
||
thanks_map: "Cartografia", thanks_geo: "Geocodificação", thanks_data: "Dados",
|
||
thanks_hb: "Agradecimento especial ao HellBlazer (webmaster Metal Archives) pela autorização de scraping.",
|
||
faq: [
|
||
["P: De onde vêm os dados?", "R: Metal Archives + enriquecimento geográfico automatizado. Algumas correções manuais, mas é fastidioso."],
|
||
["P: Posso corrigir um erro?", "R: Sim, se for do site contacte-me pelo e-mail no aviso legal. Para dados, corrija diretamente no Metal Archives."],
|
||
["P: Porque é que alguns grupos não são visíveis?", "R: A geocodificação automática tem erros inerentes. A correção manual de localizações é fastidiosa."],
|
||
["P: Acabei de criar o meu grupo no Metal Archives mas não aparece.", "R: Atualmente não existe sincronização automática com o Metal Archives."],
|
||
["P: O site rastreia-me?", "R: Apenas para análise de tráfego via GoatCounter (sem cookies). Os bloqueadores de anúncios bloqueiam estes pedidos sem problema."],
|
||
],
|
||
},
|
||
|
||
cs: {
|
||
search_placeholder: "Hledat (název, žánr, město, země)…",
|
||
displayed: "zobrazeno", total_bands: "celkem", localities: "míst", located: "lokalizováno",
|
||
view_section: "Zobrazení", reset_view: "Obnovit zobrazení", heatmap_label: "Tepelná mapa",
|
||
filters_section: "Filtry", without_coords_btn: "Bez souřadnic",
|
||
country_label: "Země", all_label: "Vše", status_label: "Stav",
|
||
genres_label: "Žánry", subgenres_label: "Subžánry", selection_label: "Výběr",
|
||
themes_label: "Témata", timeline_label: "Časová osa (rok vzniku)",
|
||
sort_label: "Seřadit seznam", sort_az: "A → Z", sort_status: "Podle stavu",
|
||
sort_genre: "Podle žánru", sort_country: "Podle země", sort_year: "Podle roku (nejnovější → nejstarší)",
|
||
list_section: "Seznam", legal_link: "Právní informace", faq_link: "FAQ",
|
||
visits_label: "Návštěvy", this_month_label: "Tento měsíc", options_btn: "Možnosti", close_btn: "Zavřít",
|
||
all_years_label: "vše", year_data_missing: "chybějící data",
|
||
year_data_unavailable: "Data roku nedostupná", results_label: "výsledek/ků",
|
||
loading_text: "Načítání…", without_coords_modal: "Kapely bez souřadnic",
|
||
group_s: "kapela", group_p: "kapely", location_fallback: "Poloha",
|
||
legal_title: "Právní informace", faq_title: "FAQ",
|
||
ed_title: "Provozovatel webu", ed_name: "Autor: Nico", ed_status: "Stav: soukromá osoba", ed_contact: "Kontakt:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Francie",
|
||
ip_title: "Duševní vlastnictví",
|
||
ip_text: "Obsah (texty, obrázky, agregovaná data) je poskytován pro informační účely. Loga a názvy kapel zůstávají majetkem jejich autorů. Veškerá data pocházejí z __MA__, se souhlasem webmasterů.",
|
||
prv_title: "Osobní údaje",
|
||
prv_text: "Tento web neshromažďuje osobní údaje ani neinstaluje sledovací cookies. Poskytovatel hostingu může uchovávat technické záznamy. Provoz je analyzován prostřednictvím __GC__ (bez cookies).",
|
||
pub_title: "Odpovědný redaktor", pub_name: "Nico",
|
||
thanks_title: "Poděkování",
|
||
thanks_intro: "Tento web využívá vynikající nástroje a služby:",
|
||
thanks_map: "Kartografie", thanks_geo: "Geokódování", thanks_data: "Data",
|
||
thanks_hb: "Zvláštní poděkování HellBlazerovi (webmaster Metal Archives) za povolení scrapingu.",
|
||
faq: [
|
||
["O: Odkud pocházejí data?", "A: Metal Archives + automatické geografické obohacení. Několik manuálních oprav, ale je to únavné."],
|
||
["O: Mohu opravit chybu?", "A: Ano, pokud se týka webu, kontaktujte mě na e-mail v právních informacích. Pro data opravte přímo na Metal Archives."],
|
||
["O: Proč některé kapely nejsou viditelné?", "A: Automatické geokódování má inherentní chyby. Ruční oprava polohy je únavná."],
|
||
["O: Právě jsem vytvořil kapelu na Metal Archives, ale nezobrazuje se.", "A: Automatická synchronizace s Metal Archives momentálně není implementována."],
|
||
["O: Sleduje mě web?", "A: Pouze pro analýzu provozu přes GoatCounter (bez cookies). Blokátory reklam tyto požadavky bez problémů zablokují."],
|
||
],
|
||
},
|
||
|
||
sv: {
|
||
search_placeholder: "Sök (namn, genre, stad, land)…",
|
||
displayed: "visade", total_bands: "totalt", localities: "orter", located: "lokaliserade",
|
||
view_section: "Vy", reset_view: "Återställ vy", heatmap_label: "Värmekarta",
|
||
filters_section: "Filter", without_coords_btn: "Utan koordinater",
|
||
country_label: "Land", all_label: "Alla", status_label: "Status",
|
||
genres_label: "Genrer", subgenres_label: "Undergenrer", selection_label: "Val",
|
||
themes_label: "Teman", timeline_label: "Tidslinje (grundat år)",
|
||
sort_label: "Sortera lista", sort_az: "A → Z", sort_status: "Efter status",
|
||
sort_genre: "Efter genre", sort_country: "Efter land", sort_year: "Efter år (nyaste → äldsta)",
|
||
list_section: "Lista", legal_link: "Juridisk information", faq_link: "FAQ",
|
||
visits_label: "Besök", this_month_label: "Denna månad", options_btn: "Alternativ", close_btn: "Stäng",
|
||
all_years_label: "alla", year_data_missing: "data saknas",
|
||
year_data_unavailable: "Årsdata ej tillgänglig", results_label: "resultat",
|
||
loading_text: "Laddar…", without_coords_modal: "Band utan koordinater",
|
||
group_s: "band", group_p: "band", location_fallback: "Plats",
|
||
legal_title: "Juridisk information", faq_title: "FAQ",
|
||
ed_title: "Webbplatsredaktör", ed_name: "Författare: Nico", ed_status: "Status: privatperson", ed_contact: "Kontakt:",
|
||
host_title: "Hosting", host_text: "OVH SAS – 2 rue Kellermann - 59100 Roubaix - Frankrike",
|
||
ip_title: "Immateriell egendom",
|
||
ip_text: "Innehåll (texter, bilder, aggregerade data) tillhandahålls för informationsändamål. Bandlogotyper och namn förblir upphovsrättshavarnas egendom. All data härstämmar från __MA__, med webmasternas tillåtelse.",
|
||
prv_title: "Personuppgifter",
|
||
prv_text: "Denna webbplats samlar inte in personuppgifter eller installerar spårningscookies. Hostingleverantören kan spara tekniska loggar. Trafiken analyseras via __GC__ (utan cookies).",
|
||
pub_title: "Publiceringsansvarig", pub_name: "Nico",
|
||
thanks_title: "Tack till",
|
||
thanks_intro: "Denna webbplats förlitar sig på utmärkta verktyg och tjänster:",
|
||
thanks_map: "Kartografi", thanks_geo: "Geokodning", thanks_data: "Data",
|
||
thanks_hb: "Särskilt tack till HellBlazer (webmaster Metal Archives) för tillståndet att scrapa.",
|
||
faq: [
|
||
["F: Varifån kommer data?", "S: Metal Archives + automatisk geografisk berikning. Några manuella korrigeringar, men det är tråkigt."],
|
||
["F: Kan jag korrigera ett fel?", "S: Ja, för sidproblem, kontakta mig via e-postadressen i juridisk information. För dataproblem, korrigera direkt på Metal Archives."],
|
||
["F: Varför är vissa band inte synliga?", "S: Automatisk geokodning har inneboënde fel. Manuell korrigering av platser är tråkig."],
|
||
["F: Jag skapade just mitt band på Metal Archives men det visas inte.", "S: Ingen automatisk synkronisering med Metal Archives är för närvarande implementerad."],
|
||
["F: Spårar webbplatsen mig?", "S: Endast för trafikanalys via GoatCounter (inga cookies). Annonsblockerare blockerar dessa förfrågningar utan problem."],
|
||
],
|
||
},
|
||
|
||
};
|
||
|
||
/* Build LOCALES — add legal_html + faq_html to each entry */
|
||
window.LOCALES = {};
|
||
for (const [code, d] of Object.entries(RAW)) {
|
||
window.LOCALES[code] = Object.assign({}, d, {
|
||
legal_html: buildLegal(d),
|
||
faq_html: buildFaq(d),
|
||
});
|
||
}
|
||
})();
|