All files / scripts/article-template constants.ts

100% Statements 13/13
100% Branches 0/0
100% Functions 0/0
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278                                                21x                                       21x                                       21x                                       21x                 21x                                       21x                                       21x                                       21x                               21x                                         21x             21x                                         21x                                                                                     21x                                
/**
 * @module article-template/constants
 * @description Localisation lookup tables for article template rendering.
 * Contains breadcrumb, footer, tagline, locale, event calendar, and watch
 * section translations for all 14 supported languages.
 *
 * @author Hack23 AB
 * @license Apache-2.0
 */
 
import type { Language } from '../types/language.js';
import type { BreadcrumbLabels, FooterLabelSet } from '../types/content.js';
 
/** Type labels for article categories per language */
export interface TypeLabels {
  readonly prospective: string;
  readonly retrospective: string;
  readonly analysis: string;
  readonly breaking: string;
}
 
/**
 * Breadcrumb translations for all supported languages
 */
export const BREADCRUMB_TRANSLATIONS: Record<Language, BreadcrumbLabels> = {
  en: { home: 'Home', news: 'News' },
  sv: { home: 'Hem', news: 'Nyheter' },
  da: { home: 'Hjem', news: 'Nyheder' },
  no: { home: 'Hjem', news: 'Nyheter' },
  fi: { home: 'Etusivu', news: 'Uutiset' },
  de: { home: 'Startseite', news: 'Nachrichten' },
  fr: { home: 'Accueil', news: 'Actualités' },
  es: { home: 'Inicio', news: 'Noticias' },
  nl: { home: 'Home', news: 'Nieuws' },
  ar: { home: 'الرئيسية', news: 'أخبار' },
  he: { home: 'בית', news: 'חדשות' },
  ja: { home: 'ホーム', news: 'ニュース' },
  ko: { home: '홈', news: '뉴스' },
  zh: { home: '主页', news: '新闻' }
};
 
/**
 * Footer label translations for all 14 languages
 */
export const FOOTER_LABELS: Record<Language, FooterLabelSet> = {
  en: { sourcesTitle: 'Sources and Data', dataSources: 'Data Sources', generatedBy: 'Generated by', generatedByValue: 'Automated News System using riksdag-regering-mcp', analysisTools: 'Analysis Tools', analysisToolsValue: 'AI-assisted journalism with human editorial oversight', backToNews: 'Back to News', skipToContent: 'Skip to main content', themeToDark: 'Switch to dark theme', themeToLight: 'Switch to light theme' },
  sv: { sourcesTitle: 'Källor och data', dataSources: 'Datakällor', generatedBy: 'Genererad av', generatedByValue: 'Automatiserat nyhetssystem med riksdag-regering-mcp', analysisTools: 'Analysverktyg', analysisToolsValue: 'AI-assisterad journalistik med mänsklig granskning', backToNews: 'Tillbaka till nyheter', skipToContent: 'Hoppa till huvudinnehåll', themeToDark: 'Byt till mörkt tema', themeToLight: 'Byt till ljust tema' },
  da: { sourcesTitle: 'Kilder og data', dataSources: 'Datakilder', generatedBy: 'Genereret af', generatedByValue: 'Automatiseret nyhedssystem med riksdag-regering-mcp', analysisTools: 'Analyseværktøjer', analysisToolsValue: 'AI-assisteret journalistik med redaktionel gennemgang', backToNews: 'Tilbage til nyheder', skipToContent: 'Gå til hovedindhold', themeToDark: 'Skift til mørkt tema', themeToLight: 'Skift til lyst tema' },
  no: { sourcesTitle: 'Kilder og data', dataSources: 'Datakilder', generatedBy: 'Generert av', generatedByValue: 'Automatisert nyhetssystem med riksdag-regering-mcp', analysisTools: 'Analyseverktøy', analysisToolsValue: 'AI-assistert journalistikk med redaksjonell gjennomgang', backToNews: 'Tilbake til nyheter', skipToContent: 'Hopp til hovedinnhold', themeToDark: 'Bytt til mørkt tema', themeToLight: 'Bytt til lyst tema' },
  fi: { sourcesTitle: 'Lähteet ja data', dataSources: 'Datalähteet', generatedBy: 'Luonut', generatedByValue: 'Automatisoitu uutisjärjestelmä riksdag-regering-mcp:llä', analysisTools: 'Analyysityökalut', analysisToolsValue: 'Tekoälyavusteinen journalismi toimituksellisella valvonnalla', backToNews: 'Takaisin uutisiin', skipToContent: 'Siirry pääsisältöön', themeToDark: 'Vaihda tummaan teemaan', themeToLight: 'Vaihda vaaleaan teemaan' },
  de: { sourcesTitle: 'Quellen und Daten', dataSources: 'Datenquellen', generatedBy: 'Erstellt von', generatedByValue: 'Automatisiertes Nachrichtensystem mit riksdag-regering-mcp', analysisTools: 'Analysewerkzeuge', analysisToolsValue: 'KI-gestützter Journalismus mit redaktioneller Aufsicht', backToNews: 'Zurück zu Nachrichten', skipToContent: 'Zum Hauptinhalt springen', themeToDark: 'Zum dunklen Design wechseln', themeToLight: 'Zum hellen Design wechseln' },
  fr: { sourcesTitle: 'Sources et données', dataSources: 'Sources de données', generatedBy: 'Généré par', generatedByValue: 'Système automatisé avec riksdag-regering-mcp', analysisTools: 'Outils d\'analyse', analysisToolsValue: 'Journalisme assisté par IA avec supervision rédactionnelle', backToNews: 'Retour aux actualités', skipToContent: 'Aller au contenu principal', themeToDark: 'Basculer vers le thème sombre', themeToLight: 'Basculer vers le thème clair' },
  es: { sourcesTitle: 'Fuentes y datos', dataSources: 'Fuentes de datos', generatedBy: 'Generado por', generatedByValue: 'Sistema automatizado con riksdag-regering-mcp', analysisTools: 'Herramientas de análisis', analysisToolsValue: 'Periodismo asistido por IA con supervisión editorial', backToNews: 'Volver a noticias', skipToContent: 'Saltar al contenido principal', themeToDark: 'Cambiar al tema oscuro', themeToLight: 'Cambiar al tema claro' },
  nl: { sourcesTitle: 'Bronnen en data', dataSources: 'Databronnen', generatedBy: 'Gegenereerd door', generatedByValue: 'Geautomatiseerd nieuwssysteem met riksdag-regering-mcp', analysisTools: 'Analysetools', analysisToolsValue: 'AI-ondersteunde journalistiek met redactioneel toezicht', backToNews: 'Terug naar nieuws', skipToContent: 'Ga naar hoofdinhoud', themeToDark: 'Schakel over naar donkere modus', themeToLight: 'Schakel over naar lichte modus' },
  ar: { sourcesTitle: 'المصادر والبيانات', dataSources: 'مصادر البيانات', generatedBy: 'تم إنشاؤه بواسطة', generatedByValue: 'نظام أخبار آلي مع riksdag-regering-mcp', analysisTools: 'أدوات التحليل', analysisToolsValue: 'صحافة بمساعدة الذكاء الاصطناعي مع إشراف تحريري', backToNews: 'العودة إلى الأخبار', skipToContent: 'الانتقال إلى المحتوى الرئيسي', themeToDark: 'التبديل إلى الوضع الداكن', themeToLight: 'التبديل إلى الوضع الفاتح' },
  he: { sourcesTitle: 'מקורות ונתונים', dataSources: 'מקורות נתונים', generatedBy: 'נוצר על ידי', generatedByValue: 'מערכת חדשות אוטומטית עם riksdag-regering-mcp', analysisTools: 'כלי ניתוח', analysisToolsValue: 'עיתונות בסיוע AI עם פיקוח עריכתי', backToNews: 'חזרה לחדשות', skipToContent: 'דלג לתוכן הראשי', themeToDark: 'עבור למצב כהה', themeToLight: 'עבור למצב בהיר' },
  ja: { sourcesTitle: 'ソースとデータ', dataSources: 'データソース', generatedBy: '生成者', generatedByValue: 'riksdag-regering-mcpによる自動ニュースシステム', analysisTools: '分析ツール', analysisToolsValue: 'AI支援ジャーナリズム(編集監督付き)', backToNews: 'ニュースに戻る', skipToContent: 'メインコンテンツへスキップ', themeToDark: 'ダークテーマに切り替え', themeToLight: 'ライトテーマに切り替え' },
  ko: { sourcesTitle: '출처 및 데이터', dataSources: '데이터 소스', generatedBy: '생성자', generatedByValue: 'riksdag-regering-mcp 자동 뉴스 시스템', analysisTools: '분석 도구', analysisToolsValue: '편집 감독이 있는 AI 지원 저널리즘', backToNews: '뉴스로 돌아가기', skipToContent: '메인 콘텐츠로 건너뛰기', themeToDark: '어두운 테마로 전환', themeToLight: '밝은 테마로 전환' },
  zh: { sourcesTitle: '来源和数据', dataSources: '数据来源', generatedBy: '生成者', generatedByValue: '使用riksdag-regering-mcp的自动新闻系统', analysisTools: '分析工具', analysisToolsValue: '人工编辑监督下的AI辅助新闻', backToNews: '返回新闻', skipToContent: '跳转到主要内容', themeToDark: '切换到深色主题', themeToLight: '切换到浅色主题' }
};
 
/**
 * Site tagline translations for all 14 languages
 */
export const SITE_TAGLINE: Record<Language, string> = {
  en: 'Latest news and analysis from Sweden\'s Riksdag. AI-generated political intelligence based on OSINT/INTOP data covering parliament, government, and agencies with systematic transparency.',
  sv: 'Senaste nyheter och analyser från Sveriges riksdag. AI-genererad politisk underrättelsejournalistik baserad på OSINT/INTOP-data som bevakar riksdagen, regeringen och myndigheter med systematisk transparens.',
  da: 'Seneste nyheder og analyser fra Sveriges Riksdag. AI-genereret politisk efterretningsjournalistik baseret på OSINT/INTOP-data, der dækker parlament, regering og myndigheder med systematisk gennemsigtighed.',
  no: 'Siste nyheter og analyser fra Sveriges riksdag. AI-generert politisk etterretningsjournalistikk basert på OSINT/INTOP-data som dekker parlament, regjering og myndigheter med systematisk åpenhet.',
  fi: 'Uusimmat uutiset ja analyysit Ruotsin valtiopäiviltä. Tekoälyn tuottama poliittinen tiedustelujournalismi OSINT/INTOP-dataan perustuen, joka kattaa eduskunnan, hallituksen ja viranomaiset järjestelmällisellä läpinäkyvyydellä.',
  de: 'Aktuelle Nachrichten und Analysen aus dem schwedischen Riksdag. KI-generierter politischer Nachrichtendienst-Journalismus basierend auf OSINT/INTOP-Daten über Parlament, Regierung und Behörden mit systematischer Transparenz.',
  fr: 'Dernières nouvelles et analyses du Riksdag suédois. Journalisme de renseignement politique généré par IA basé sur des données OSINT/INTOP couvrant le parlement, le gouvernement et les agences avec une transparence systématique.',
  es: 'Últimas noticias y análisis del Riksdag sueco. Periodismo de inteligencia política generado por IA basado en datos OSINT/INTOP que cubre el parlamento, el gobierno y las agencias con transparencia sistemática.',
  nl: 'Laatste nieuws en analyses van de Zweedse Riksdag. AI-gegenereerde politieke inlichtingenjournalistiek gebaseerd op OSINT/INTOP-data over parlement, regering en instanties met systematische transparantie.',
  ar: 'أحدث الأخبار والتحليلات من البرلمان السويدي. صحافة استخبارات سياسية مولّدة بالذكاء الاصطناعي مبنية على بيانات OSINT/INTOP تغطي البرلمان والحكومة والوكالات بشفافية منهجية.',
  he: 'חדשות ניתוחים אחרונים מהריקסדאג השוודי. עיתונות מודיעין פוליטי מבוססת AI ונתוני OSINT/INTOP המכסה פרלמנט, ממשלה וסוכנויות עם שקיפות שיטתית.',
  ja: 'スウェーデン議会リクスダーグの最新ニュースと分析。OSINT/INTOPデータに基づくAI生成の政治インテリジェンスジャーナリズムで、議会、政府、機関を体系的な透明性で報道。',
  ko: '스웨덴 의회 릭스다그의 최신 뉴스와 분석. OSINT/INTOP 데이터 기반 AI 생성 정치 인텔리전스 저널리즘으로 의회, 정부, 기관을 체계적인 투명성으로 보도.',
  zh: '来自瑞典议会的最新新闻和分析。基于OSINT/INTOP数据的AI生成政治情报新闻,以系统性透明度报道议会、政府和机构。'
};
 
/**
 * OG locale map for all 14 languages
 */
export const OG_LOCALE_MAP: Record<Language, string> = {
  en: 'en_US', sv: 'sv_SE', da: 'da_DK', no: 'nb_NO', fi: 'fi_FI',
  de: 'de_DE', fr: 'fr_FR', es: 'es_ES', nl: 'nl_NL', ar: 'ar_SA',
  he: 'he_IL', ja: 'ja_JP', ko: 'ko_KR', zh: 'zh_CN'
};
 
/**
 * Article category type labels for all 14 languages
 */
export const TYPE_LABELS: Record<Language, TypeLabels> = {
  en: { prospective: 'The Week Ahead', retrospective: 'Weekly Review', analysis: 'Analysis', breaking: 'Breaking News' },
  sv: { prospective: 'Veckan som kommer', retrospective: 'Veckans återblick', analysis: 'Analys', breaking: 'Senaste nytt' },
  da: { prospective: 'Ugen fremover', retrospective: 'Ugens tilbageblik', analysis: 'Analyse', breaking: 'Seneste nyt' },
  no: { prospective: 'Uka som kommer', retrospective: 'Ukens tilbakeblikk', analysis: 'Analyse', breaking: 'Siste nytt' },
  fi: { prospective: 'Tuleva viikko', retrospective: 'Viikon katsaus', analysis: 'Analyysi', breaking: 'Viimeisimmät' },
  de: { prospective: 'Woche voraus', retrospective: 'Wochenrückblick', analysis: 'Analyse', breaking: 'Eilmeldung' },
  fr: { prospective: 'Semaine à venir', retrospective: 'Revue de la semaine', analysis: 'Analyse', breaking: 'Dernière heure' },
  es: { prospective: 'Semana próxima', retrospective: 'Revisión semanal', analysis: 'Análisis', breaking: 'Última hora' },
  nl: { prospective: 'Week vooruit', retrospective: 'Weekoverzicht', analysis: 'Analyse', breaking: 'Laatste nieuws' },
  ar: { prospective: 'الأسبوع القادم', retrospective: 'مراجعة الأسبوع', analysis: 'تحليل', breaking: 'أخبار عاجلة' },
  he: { prospective: 'השבוע הקרוב', retrospective: 'סיכום שבועי', analysis: 'ניתוח', breaking: 'חדשות אחרונות' },
  ja: { prospective: '来週の展望', retrospective: '週間レビュー', analysis: '分析', breaking: '速報' },
  ko: { prospective: '다음 주 전망', retrospective: '주간 리뷰', analysis: '분석', breaking: '속보' },
  zh: { prospective: '下周展望', retrospective: '每周回顾', analysis: '分析', breaking: '突发新闻' }
};
 
/**
 * Event calendar section titles for all 14 languages
 */
export const EVENT_CALENDAR_TITLES: Record<Language, string> = {
  en: 'Event Calendar',
  sv: 'Veckans händelser',
  da: 'Ugens begivenheder',
  no: 'Ukens hendelser',
  fi: 'Viikon tapahtumat',
  de: 'Veranstaltungskalender',
  fr: 'Calendrier des événements',
  es: 'Calendario de eventos',
  nl: 'Evenementenkalender',
  ar: 'تقويم الأحداث',
  he: 'לוח אירועים',
  ja: 'イベントカレンダー',
  ko: '일정 캘린더',
  zh: '活动日历'
};
 
/**
 * Watch section titles for all 14 languages
 */
export const WATCH_SECTION_TITLES: Record<Language, string> = {
  en: 'What to Watch This Week',
  sv: 'Vad man ska följa denna vecka',
  da: 'Hvad man skal følge denne uge',
  no: 'Hva man bør følge denne uken',
  fi: 'Mitä seurata tällä viikolla',
  de: 'Worauf diese Woche zu achten ist',
  fr: 'À suivre cette semaine',
  es: 'Qué observar esta semana',
  nl: 'Wat te volgen deze week',
  ar: 'ما يجب متابعته هذا الأسبوع',
  he: 'מה לעקוב אחריו השבוע',
  ja: '今週の注目ポイント',
  ko: '이번 주 주목할 사항',
  zh: '本周关注要点'
};
 
/**
 * Locale map for Intl date formatting across all 14 languages
 */
export const LOCALE_MAP: Record<string, string> = {
  en: 'en-GB', sv: 'sv-SE', da: 'da-DK', no: 'no-NO', fi: 'fi-FI',
  de: 'de-DE', fr: 'fr-FR', es: 'es-ES', nl: 'nl-NL', ar: 'ar-SA',
  he: 'he-IL', ja: 'ja-JP', ko: 'ko-KR', zh: 'zh-CN'
};
 
/** Language display data for the article language switcher */
export interface LangDisplay {
  readonly flag: string;
  readonly name: string;
}
 
/**
 * Language display names with flag emojis for all 14 languages.
 * Used by the article language switcher nav.
 */
export const LANG_DISPLAY: Record<Language, LangDisplay> = {
  en: { flag: '🇬🇧', name: 'English' },
  sv: { flag: '🇸🇪', name: 'Svenska' },
  da: { flag: '🇩🇰', name: 'Dansk' },
  no: { flag: '🇳🇴', name: 'Norsk' },
  fi: { flag: '🇫🇮', name: 'Suomi' },
  de: { flag: '🇩🇪', name: 'Deutsch' },
  fr: { flag: '🇫🇷', name: 'Français' },
  es: { flag: '🇪🇸', name: 'Español' },
  nl: { flag: '🇳🇱', name: 'Nederlands' },
  ar: { flag: '🇸🇦', name: 'العربية' },
  he: { flag: '🇮🇱', name: 'עברית' },
  ja: { flag: '🇯🇵', name: '日本語' },
  ko: { flag: '🇰🇷', name: '한국어' },
  zh: { flag: '🇨🇳', name: '中文' }
};
 
/**
 * All 14 supported language codes in display order.
 * Single source of truth — derived from LANG_DISPLAY keys.
 */
export const ALL_LANG_CODES: readonly Language[] = Object.keys(LANG_DISPLAY) as Language[];
 
/**
 * Localized aria-label for the language switcher nav element.
 * Used on the `<nav>` wrapping article language links so screen readers
 * announce the landmark in the page's own language.
 */
export const LANG_SWITCHER_ARIA_LABELS: Record<Language, string> = {
  en: 'Language versions',
  sv: 'Språkversioner',
  da: 'Sprogversioner',
  no: 'Språkversjoner',
  fi: 'Kieliversiot',
  de: 'Sprachversionen',
  fr: 'Versions linguistiques',
  es: 'Versiones de idioma',
  nl: 'Taalversies',
  ar: 'إصدارات اللغة',
  he: 'גרסאות שפה',
  ja: '言語バージョン',
  ko: '언어 버전',
  zh: '语言版本'
};
 
/**
 * Localized aria-label text for language grid links in the footer.
 * Matches the pattern used in index.html (e.g. "Switch to English", "Byt till Svenska").
 */
export const LANG_ARIA_LABELS: Record<Language, string> = {
  en: 'Switch to English',
  sv: 'Byt till Svenska',
  da: 'Skift til Dansk',
  no: 'Bytt til Norsk',
  fi: 'Vaihda Suomeksi',
  de: 'Wechseln zu Deutsch',
  fr: 'Passer au Français',
  es: 'Cambiar a Español',
  nl: 'Schakel naar Nederlands',
  ar: 'التبديل إلى العربية',
  he: 'עבור לעברית',
  ja: '日本語に切り替え',
  ko: '한국어로 전환',
  zh: '切换到中文'
};
 
/**
 * Site footer section heading translations for all 14 languages
 */
export const SITE_FOOTER_LABELS: Record<Language, {
  readonly about: string;
  readonly aboutText: string;
  readonly quickLinks: string;
  readonly home: string;
  readonly news: string;
  readonly ciaplatform: string;
  readonly companyLinkedin: string;
  readonly publicIsms: string;
  readonly securityPolicy: string;
  readonly privacyPolicy: string;
  readonly contactUs: string;
  readonly builtBy: string;
  readonly builtByText: string;
  readonly languages: string;
  readonly dashboard: string;
  readonly location: string;
  readonly statMPs: string;
  readonly statRiskRules: string;
  readonly statLanguages: string;
  readonly statHistoricalData: string;
  readonly disclaimer: string;
  readonly disclaimerLink: string;
}> = {
  en: { about: 'About Riksdagsmonitor', aboutText: 'Live intelligence platform for Swedish Parliament monitoring using CIA OSINT capabilities.', quickLinks: 'Quick Links', home: 'Home', news: 'News', ciaplatform: 'CIA Platform', companyLinkedin: 'Company LinkedIn', publicIsms: 'Public ISMS', securityPolicy: 'Security Policy', privacyPolicy: 'Privacy Policy', contactUs: 'Contact Us', builtBy: 'Built by Hack23 AB', builtByText: 'Swedish cybersecurity consultancy specializing in political transparency and open-source intelligence.', languages: 'Languages', dashboard: 'Dashboard', location: 'Gothenburg, Sweden', statMPs: '<strong>349 MPs</strong> tracked', statRiskRules: '<strong>45 risk rules</strong> active', statLanguages: '<strong>14 languages</strong> supported', statHistoricalData: '<strong>50+ years</strong> historical data', disclaimer: 'Ongoing improvements \u2014 please', disclaimerLink: 'report any issues on GitHub' },
  sv: { about: 'Om Riksdagsmonitor', aboutText: 'Plattform för övervakning av Sveriges riksdag med CIA OSINT-kapacitet.', quickLinks: 'Snabblänkar', home: 'Hem', news: 'Nyheter', ciaplatform: 'CIA-plattformen', companyLinkedin: 'Företagets LinkedIn', publicIsms: 'Publik ISMS', securityPolicy: 'Säkerhetspolicy', privacyPolicy: 'Integritetspolicy', contactUs: 'Kontakta oss', builtBy: 'Byggd av Hack23 AB', builtByText: 'Svenskt cybersäkerhetsföretag specialiserat på politisk transparens och öppen källkodsintelligens.', languages: 'Språk', dashboard: 'Instrumentpanel', location: 'Göteborg, Sverige', statMPs: '<strong>349 ledamöter</strong> övervakade', statRiskRules: '<strong>45 riskregler</strong> aktiva', statLanguages: '<strong>14 språk</strong> stöds', statHistoricalData: '<strong>50+ år</strong> historisk data', disclaimer: 'P\u00e5g\u00e5ende f\u00f6rb\u00e4ttringar \u2014 v\u00e4nligen', disclaimerLink: 'rapportera eventuella problem p\u00e5 GitHub' },
  da: { about: 'Om Riksdagsmonitor', aboutText: 'Platform til overvågning af det svenske parlament med CIA OSINT-kapacitet.', quickLinks: 'Hurtige links', home: 'Hjem', news: 'Nyheder', ciaplatform: 'CIA-platformen', companyLinkedin: 'Virksomhedens LinkedIn', publicIsms: 'Offentlig ISMS', securityPolicy: 'Sikkerhedspolitik', privacyPolicy: 'Privatlivspolitik', contactUs: 'Kontakt os', builtBy: 'Bygget af Hack23 AB', builtByText: 'Svensk cybersikkerhedskonsulentfirma specialiseret i politisk gennemsigtighed.', languages: 'Sprog', dashboard: 'Dashboard', location: 'Göteborg, Sverige', statMPs: '<strong>349 medlemmer</strong> overvåget', statRiskRules: '<strong>45 risikoregler</strong> aktive', statLanguages: '<strong>14 sprog</strong> understøttet', statHistoricalData: '<strong>50+ år</strong> historiske data', disclaimer: 'L\u00f8bende forbedringer \u2014 venligst', disclaimerLink: 'rapporter eventuelle problemer p\u00e5 GitHub' },
  no: { about: 'Om Riksdagsmonitor', aboutText: 'Plattform for overvåking av det svenske parlamentet med CIA OSINT-kapasitet.', quickLinks: 'Hurtiglenker', home: 'Hjem', news: 'Nyheter', ciaplatform: 'CIA-plattformen', companyLinkedin: 'Selskapets LinkedIn', publicIsms: 'Offentlig ISMS', securityPolicy: 'Sikkerhetspolicy', privacyPolicy: 'Personvernpolicy', contactUs: 'Kontakt oss', builtBy: 'Bygget av Hack23 AB', builtByText: 'Svensk cybersikkerhetskonsulentfirma spesialisert på politisk åpenhet.', languages: 'Språk', dashboard: 'Dashbord', location: 'Göteborg, Sverige', statMPs: '<strong>349 representanter</strong> fulgt', statRiskRules: '<strong>45 risikoregler</strong> aktive', statLanguages: '<strong>14 språk</strong> støttes', statHistoricalData: '<strong>50+ år</strong> med historiske data', disclaimer: 'P\u00e5g\u00e5ende forbedringer \u2014 vennligst', disclaimerLink: 'rapporter eventuelle problemer p\u00e5 GitHub' },
  fi: { about: 'Tietoa Riksdagsmonitorista', aboutText: 'Ruotsin valtiopäivien seurantaalusta CIA OSINT -kyvyillä.', quickLinks: 'Pikalinkit', home: 'Etusivu', news: 'Uutiset', ciaplatform: 'CIA Platform', companyLinkedin: 'Yrityksen LinkedIn', publicIsms: 'Julkinen ISMS', securityPolicy: 'Tietoturvakäytäntö', privacyPolicy: 'Tietosuojakäytäntö', contactUs: 'Ota yhteyttä', builtBy: 'Tekijä: Hack23 AB', builtByText: 'Ruotsalainen kyberturvallisuuskonsultointi erikoistunut poliittiseen läpinäkyvyyteen.', languages: 'Kielet', dashboard: 'Koontinäyttö', location: 'Göteborg, Ruotsi', statMPs: '<strong>349 kansanedustajaa</strong> seurannassa', statRiskRules: '<strong>45 riskisääntöä</strong> aktiivisena', statLanguages: '<strong>14 kieltä</strong> tuettuna', statHistoricalData: '<strong>Yli 50 vuotta</strong> historiallista dataa', disclaimer: 'Jatkuvia parannuksia \u2014 ole hyv\u00e4 ja', disclaimerLink: 'ilmoita mahdollisista ongelmista GitHubissa' },
  de: { about: 'Über Riksdagsmonitor', aboutText: 'Plattform zur Überwachung des schwedischen Parlaments mit CIA OSINT-Fähigkeiten.', quickLinks: 'Schnelllinks', home: 'Startseite', news: 'Nachrichten', ciaplatform: 'CIA-Plattform', companyLinkedin: 'Unternehmens-LinkedIn', publicIsms: 'Öffentliches ISMS', securityPolicy: 'Sicherheitsrichtlinie', privacyPolicy: 'Datenschutzrichtlinie', contactUs: 'Kontakt', builtBy: 'Erstellt von Hack23 AB', builtByText: 'Schwedische Cybersicherheitsberatung für politische Transparenz.', languages: 'Sprachen', dashboard: 'Dashboard', location: 'Göteborg, Schweden', statMPs: '<strong>349 Abgeordnete</strong> überwacht', statRiskRules: '<strong>45 Risikoregeln</strong> aktiv', statLanguages: '<strong>14 Sprachen</strong> unterstützt', statHistoricalData: '<strong>50+ Jahre</strong> historische Daten', disclaimer: 'Laufende Verbesserungen \u2014 bitte', disclaimerLink: 'melden Sie Probleme auf GitHub' },
  fr: { about: 'À propos de Riksdagsmonitor', aboutText: 'Plateforme de surveillance du Parlement suédois avec capacités CIA OSINT.', quickLinks: 'Liens rapides', home: 'Accueil', news: 'Actualités', ciaplatform: 'CIA Platform', companyLinkedin: "LinkedIn de l'entreprise", publicIsms: 'ISMS public', securityPolicy: 'Politique de sécurité', privacyPolicy: 'Politique de confidentialité', contactUs: 'Nous contacter', builtBy: 'Créé par Hack23 AB', builtByText: 'Conseil suédois en cybersécurité spécialisé dans la transparence politique.', languages: 'Langues', dashboard: 'Tableau de bord', location: 'Göteborg, Suède', statMPs: '<strong>349 députés</strong> suivis', statRiskRules: '<strong>45 règles de risque</strong> actives', statLanguages: '<strong>14 langues</strong> prises en charge', statHistoricalData: '<strong>50+ ans</strong> de données historiques', disclaimer: 'Am\u00e9liorations en cours \u2014 veuillez', disclaimerLink: 'signaler tout probl\u00e8me sur GitHub' },
  es: { about: 'Acerca de Riksdagsmonitor', aboutText: 'Plataforma de monitoreo del Parlamento sueco con capacidades CIA OSINT.', quickLinks: 'Enlaces rápidos', home: 'Inicio', news: 'Noticias', ciaplatform: 'Plataforma CIA', companyLinkedin: 'LinkedIn de la empresa', publicIsms: 'ISMS público', securityPolicy: 'Política de seguridad', privacyPolicy: 'Política de privacidad', contactUs: 'Contáctenos', builtBy: 'Creado por Hack23 AB', builtByText: 'Consultoría sueca de ciberseguridad especializada en transparencia política.', languages: 'Idiomas', dashboard: 'Panel', location: 'Gotemburgo, Suecia', statMPs: '<strong>349 diputados</strong> rastreados', statRiskRules: '<strong>45 reglas de riesgo</strong> activas', statLanguages: '<strong>14 idiomas</strong> admitidos', statHistoricalData: '<strong>Más de 50 años</strong> de datos históricos', disclaimer: 'Mejoras en curso \u2014 por favor', disclaimerLink: 'reporte cualquier problema en GitHub' },
  nl: { about: 'Over Riksdagsmonitor', aboutText: 'Platform voor monitoring van het Zweedse parlement met CIA OSINT-capaciteiten.', quickLinks: 'Snelkoppelingen', home: 'Start', news: 'Nieuws', ciaplatform: 'CIA Platform', companyLinkedin: 'Bedrijfs-LinkedIn', publicIsms: 'Openbaar ISMS', securityPolicy: 'Beveiligingsbeleid', privacyPolicy: 'Privacybeleid', contactUs: 'Contact opnemen', builtBy: 'Gebouwd door Hack23 AB', builtByText: 'Zweeds cybersecurity-adviesbureau gespecialiseerd in politieke transparantie.', languages: 'Talen', dashboard: 'Dashboard', location: 'Göteborg, Zweden', statMPs: '<strong>349 parlementariërs</strong> gevolgd', statRiskRules: '<strong>45 risicoregels</strong> actief', statLanguages: '<strong>14 talen</strong> ondersteund', statHistoricalData: '<strong>50+ jaar</strong> historische data', disclaimer: 'Doorlopende verbeteringen \u2014 gelieve', disclaimerLink: 'eventuele problemen te melden op GitHub' },
  ar: { about: 'حول Riksdagsmonitor', aboutText: 'منصة لمراقبة البرلمان السويدي باستخدام قدرات CIA OSINT.', quickLinks: 'روابط سريعة', home: 'الرئيسية', news: 'الأخبار', ciaplatform: 'منصة CIA', companyLinkedin: 'لينكدإن الشركة', publicIsms: 'ISMS العام', securityPolicy: 'سياسة الأمن', privacyPolicy: 'سياسة الخصوصية', contactUs: 'تواصل معنا', builtBy: 'بواسطة Hack23 AB', builtByText: 'شركة استشارات أمن سيبراني سويدية متخصصة في الشفافية السياسية.', languages: 'اللغات', dashboard: 'لوحة التحكم', location: 'غوتنبرغ، السويد', statMPs: 'تتبّع <strong>349 نائباً</strong>', statRiskRules: '<strong>45 قاعدة مخاطر</strong> نشطة', statLanguages: 'دعم <strong>14 لغة</strong>', statHistoricalData: 'بيانات تاريخية لأكثر من <strong>50 عاماً</strong>', disclaimer: '\u062a\u062d\u0633\u064a\u0646\u0627\u062a \u0645\u0633\u062a\u0645\u0631\u0629 \u2014 \u064a\u0631\u062c\u0649', disclaimerLink: '\u0627\u0644\u0625\u0628\u0644\u0627\u063a \u0639\u0646 \u0623\u064a \u0645\u0634\u0627\u0643\u0644 \u0639\u0644\u0649 GitHub' },
  he: { about: 'אודות Riksdagsmonitor', aboutText: 'פלטפורמה לניטור הפרלמנט השוודי עם יכולות CIA OSINT.', quickLinks: 'קישורים מהירים', home: 'בית', news: 'חדשות', ciaplatform: 'פלטפורמת CIA', companyLinkedin: 'לינקדאין החברה', publicIsms: 'ISMS ציבורי', securityPolicy: 'מדיניות אבטחה', privacyPolicy: 'מדיניות פרטיות', contactUs: 'צור קשר', builtBy: 'נבנה על ידי Hack23 AB', builtByText: 'חברת ייעוץ אבטחת סייבר שוודית המתמחה בשקיפות פוליטית.', languages: 'שפות', dashboard: 'לוח מחוונים', location: 'גטבורג, שוודיה', statMPs: '<strong>349 חברי פרלמנט</strong> במעקב', statRiskRules: '<strong>45 כללי סיכון</strong> פעילים', statLanguages: '<strong>14 שפות</strong> נתמכות', statHistoricalData: '<strong>50+ שנים</strong> של נתונים היסטוריים', disclaimer: '\u05e9\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05de\u05ea\u05de\u05e9\u05db\u05d9\u05dd \u2014 \u05e0\u05d0', disclaimerLink: '\u05dc\u05d3\u05d5\u05d5\u05d7 \u05e2\u05dc \u05d1\u05e2\u05d9\u05d5\u05ea \u05d1-GitHub' },
  ja: { about: 'Riksdagsmonitorについて', aboutText: 'CIA OSINT機能によるスウェーデン議会監視プラットフォーム。', quickLinks: 'クイックリンク', home: 'ホーム', news: 'ニュース', ciaplatform: 'CIA プラットフォーム', companyLinkedin: '企業LinkedIn', publicIsms: '公開ISMS', securityPolicy: 'セキュリティポリシー', privacyPolicy: 'プライバシーポリシー', contactUs: 'お問い合わせ', builtBy: 'Hack23 AB 製', builtByText: '政治的透明性を専門とするスウェーデンのサイバーセキュリティコンサルタント。', languages: '言語', dashboard: 'ダッシュボード', location: 'ヨーテボリ(スウェーデン)', statMPs: '<strong>349名の議員</strong>を追跡', statRiskRules: '<strong>45のリスクルール</strong>を運用', statLanguages: '<strong>14言語</strong>をサポート', statHistoricalData: '<strong>50年以上</strong>の履歴データ', disclaimer: '\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u884c\u3063\u3066\u3044\u307e\u3059 \u2014', disclaimerLink: '\u554f\u984c\u304c\u3042\u308c\u3070GitHub\u3067\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044' },
  ko: { about: 'Riksdagsmonitor 소개', aboutText: 'CIA OSINT 기능을 활용한 스웨덴 의회 모니터링 플랫폼.', quickLinks: '빠른 링크', home: '홈', news: '뉴스', ciaplatform: 'CIA 플랫폼', companyLinkedin: '회사 LinkedIn', publicIsms: '공개 ISMS', securityPolicy: '보안 정책', privacyPolicy: '개인정보 보호정책', contactUs: '문의하기', builtBy: 'Hack23 AB 제작', builtByText: '정치적 투명성을 전문으로 하는 스웨덴 사이버 보안 컨설팅.', languages: '언어', dashboard: '대시보드', location: '스웨덴 예테보리', statMPs: '<strong>349명 의원</strong> 추적', statRiskRules: '<strong>45개 위험 규칙</strong> 운영', statLanguages: '<strong>14개 언어</strong> 지원', statHistoricalData: '<strong>50년+</strong> 역사 데이터', disclaimer: '\uc9c0\uc18d\uc801\uc73c\ub85c \uac1c\uc120 \uc911\uc785\ub2c8\ub2e4 \u2014', disclaimerLink: '\ubb38\uc81c\uac00 \uc788\uc73c\uba74 GitHub\uc5d0 \ubcf4\uace0\ud574\uc8fc\uc138\uc694' },
  zh: { about: '关于Riksdagsmonitor', aboutText: '利用CIA OSINT能力监测瑞典议会的平台。', quickLinks: '快速链接', home: '首页', news: '新闻', ciaplatform: 'CIA 平台', companyLinkedin: '公司 LinkedIn', publicIsms: '公开 ISMS', securityPolicy: '安全政策', privacyPolicy: '隐私政策', contactUs: '联系我们', builtBy: 'Hack23 AB 构建', builtByText: '专注于政治透明度的瑞典网络安全咨询公司。', languages: '语言', dashboard: '仪表板', location: '瑞典哥德堡', statMPs: '已追踪 <strong>349 名议员</strong>', statRiskRules: '已启用 <strong>45 条风险规则</strong>', statLanguages: '支持 <strong>14 种语言</strong>', statHistoricalData: '覆盖 <strong>50+ 年</strong>历史数据', disclaimer: '\u6301\u7eed\u6539\u8fdb\u4e2d\u2014\u2014\u8bf7', disclaimerLink: '\u5728 GitHub \u4e0a\u62a5\u544a\u4efb\u4f55\u95ee\u9898' }
};