1"use strict"; 2/** Site-wide EN/BG â nav, footer, hub heroes, homepage panels. Requires grigsi-ui-lang.js + grigsi-site-i18n-strings.js */ 3(function (global) { 4 var STORAGE_KEY = "grigsi-site-ui-lang"; 5 var LEGACY_KEYS = [ 6 "grigsi-ui-lang", 7 "grigsi-air-check-ui-lang", 8 "grigsi-transcribe-ui-lang", 9 "grigsi-illustrate-ui-lang", 10 ]; 11 12 function stringsFor(lang) { 13 var pack = global.GriGsiSiteI18nStrings || {}; 14 return pack[lang === "bg" ? "bg" : "en"] || pack.en || {}; 15 } 16 17 function t(lang, key) { 18 var s = stringsFor(lang); 19 return Object.prototype.hasOwnProperty.call(s, key) ? s[key] : null; 20 } 21 22 function migrateLegacyLang() { 23 if (!global.GriGsiUiLang) return; 24 try { 25 var cur = global.localStorage.getItem(STORAGE_KEY); 26 if (cur === "bg" || cur === "en") return; 27 } catch (_) {} 28 for (var i = 0; i < LEGACY_KEYS.length; i++) { 29 try { 30 var v = global.localStorage.getItem(LEGACY_KEYS[i]); 31 if (v === "bg" || v === "en") { 32 global.GriGsiUiLang.save(STORAGE_KEY, v); 33 return; 34 } 35 } catch (_) {} 36 } 37 } 38 39 function applyAttr(el, attr, lang, key) { 40 var val = t(lang, key); 41 if (val == null) return; 42 el.setAttribute(attr, val); 43 } 44 45 function applyDataI18n(lang) { 46 global.document.querySelectorAll("[data-i18n]").forEach(function (el) { 47 if (el.classList.contains("grigsi-lang-btn")) return; 48 var val = t(lang, el.getAttribute("data-i18n")); 49 if (val != null) el.textContent = val; 50 }); 51 global.document.querySelectorAll("[data-i18n-html]").forEach(function (el) { 52 var val = t(lang, el.getAttribute("data-i18n-html")); 53 if (val != null) el.innerHTML = val; 54 }); 55 global.document.querySelectorAll("[data-i18n-aria]").forEach(function (el) { 56 applyAttr(el, "aria-label", lang, el.getAttribute("data-i18n-aria")); 57 }); 58 global.document.querySelectorAll("[data-i18n-placeholder]").forEach(function (el) { 59 var val = t(lang, el.getAttribute("data-i18n-placeholder")); 60 if (val != null) el.placeholder = val; 61 }); 62 global.document.querySelectorAll("[data-i18n-title]").forEach(function (el) { 63 applyAttr(el, "title", lang, el.getAttribute("data-i18n-title")); 64 }); 65 } 66 67 /** [selector, key, mode?] mode: html | placeholder | aria-label */ 68 var PAGE_SELECTORS = { 69 "/": [ 70 [".purple-bar-hero", "home.hero"], 71 [".purple-bar-lead", "home.lead"], 72 [".purple-bar-inner > .purple-bar-body:not(.purple-bar-bridge)", "home.body"], 73 [".purple-bar-bridge", "home.bridge"], 74 ["#home-connect-heading", "home.section.connect"], 75 [ 76 ".home-connect-panel--sendi .home-connect-panel__eyebrow", 77 "home.sendi.eyebrow", 78 ], 79 [".home-connect-panel--sendi .home-connect-panel__title", "home.sendi.title"], 80 [".home-connect-panel--sendi .home-connect-panel__lead", "home.sendi.lead"], 81 [".home-connect-panel--sendi .home-connect-panel__cta", "home.sendi.cta"], 82 [ 83 ".home-connect-panel--names .home-connect-panel__eyebrow", 84 "home.labels.eyebrow", 85 ], 86 [".home-connect-panel--names .home-connect-panel__title", "home.labels.title"], 87 [".home-connect-panel--names .home-connect-panel__lead", "home.labels.lead"], 88 [ 89 ".home-connect-panel--names .home-connect-panel__cta--primary", 90 "home.labels.cta", 91 ], 92 [ 93 ".home-connect-panel--names .home-connect-panel__actions .home-connect-panel__cta:not(.home-connect-panel__cta--primary)", 94 "home.labels.sync", 95 ], 96 [".home-connect-panel--names .home-connect-panel__privacy", "home.labels.privacy"], 97 [".home-connect-panel--find .home-connect-panel__eyebrow", "home.find.eyebrow"], 98 [".home-connect-panel--find .home-connect-panel__title", "home.find.title"], 99 [".home-connect-panel--find .home-connect-panel__lead", "home.find.lead"], 100 [".home-connect-panel--find .home-connect-panel__cta", "home.find.cta"], 101 ["#home-data-heading", "home.section.data"], 102 [ 103 ".home-connect-panel--open-data .home-connect-panel__eyebrow", 104 "home.data.macro.eyebrow", 105 ], 106 [ 107 ".home-connect-panel--open-data .home-connect-panel__title-text", 108 "home.data.macro.title", 109 ], 110 [".home-connect-panel--open-data .home-connect-panel__lead", "home.data.macro.lead"], 111 [".home-connect-panel--open-data .home-connect-panel__cta", "home.data.macro.cta"], 112 [ 113 ".home-connect-panel--official-data .home-connect-panel__eyebrow", 114 "home.data.bg.eyebrow", 115 ], 116 [ 117 ".home-connect-panel--official-data .home-connect-panel__title-text", 118 "home.data.bg.title", 119 ], 120 [".home-connect-panel--official-data .home-connect-panel__lead", "home.data.bg.lead"], 121 [".home-connect-panel--official-data .home-connect-panel__cta", "home.data.bg.cta"], 122 ["#home-production-heading", "home.section.production"], 123 [ 124 ".home-connect-panel--air-check .home-connect-panel__eyebrow", 125 "home.prod.air.eyebrow", 126 ], 127 [".home-connect-panel--air-check .home-connect-panel__title-text", "home.prod.air.title"], 128 [".home-connect-panel--air-check .home-connect-panel__lead", "home.prod.air.lead"], 129 [".home-connect-panel--air-check .home-connect-panel__cta", "home.prod.air.cta"], 130 [ 131 ".home-connect-panel--fresh-now .home-connect-panel__eyebrow", 132 "home.prod.fn.eyebrow", 133 ], 134 [".home-connect-panel--fresh-now .home-connect-panel__title-text", "home.prod.fn.title"], 135 [".home-connect-panel--fresh-now .home-connect-panel__lead", "home.prod.fn.lead"], 136 [".home-connect-panel--fresh-now .home-connect-panel__cta", "home.prod.fn.cta"], 137 [".home-connect-panel--fresh-now .home-connect-panel__soft", "home.prod.fn.soft"], 138 [ 139 ".home-connect-panel--trusted-sources .home-connect-panel__eyebrow", 140 "home.prod.trustedSources.eyebrow", 141 ], 142 [ 143 ".home-connect-panel--trusted-sources .home-connect-panel__title-text", 144 "home.prod.trustedSources.title", 145 ], 146 [".home-connect-panel--trusted-sources .home-connect-panel__lead", "home.prod.trustedSources.lead"], 147 [".home-connect-panel--trusted-sources .home-connect-panel__cta", "home.prod.trustedSources.cta"], 148 [".home-connect-panel--trusted-sources .home-connect-panel__soft", "home.prod.trustedSources.soft"], 149 [ 150 ".home-connect-panel--easy-show .home-connect-panel__eyebrow", 151 "home.prod.easy.eyebrow", 152 ], 153 [".home-connect-panel--easy-show .home-connect-panel__title-text", "home.prod.easy.title"], 154 [".home-connect-panel--easy-show .home-connect-panel__lead", "home.prod.easy.lead"], 155 [".home-connect-panel--easy-show .home-connect-panel__cta", "home.prod.easy.cta"], 156 [".home-connect-panel--easy-show .home-connect-panel__soft", "home.prod.easy.soft"], 157 [ 158 ".home-connect-panel--show-maker .home-connect-panel__eyebrow", 159 "home.prod.show.eyebrow", 160 ], 161 [".home-connect-panel--show-maker .home-connect-panel__title-text", "home.prod.show.title"], 162 [".home-connect-panel--show-maker .home-connect-panel__lead", "home.prod.show.lead"], 163 [".home-connect-panel--show-maker .home-connect-panel__cta", "home.prod.show.cta"], 164 [".home-connect-panel--show-maker .home-connect-panel__soft", "home.prod.show.setup"], 165 [ 166 ".home-connect-panel--edit .home-connect-panel__eyebrow", 167 "home.prod.edit.eyebrow", 168 ], 169 [".home-connect-panel--edit .home-connect-panel__title-text", "home.prod.edit.title"], 170 [".home-connect-panel--edit .home-connect-panel__lead", "home.prod.edit.lead"], 171 [".home-connect-panel--edit .home-connect-panel__cta", "home.prod.edit.cta"], 172 [".home-connect-panel--edit .home-connect-panel__soft", "home.prod.edit.soft"], 173 [ 174 ".home-connect-panel--meet .home-connect-panel__eyebrow", 175 "home.prod.meet.eyebrow", 176 ], 177 [".home-connect-panel--meet .home-connect-panel__title-text", "home.prod.meet.title"], 178 [".home-connect-panel--meet .home-connect-panel__lead", "home.prod.meet.lead"], 179 [".home-connect-panel--meet .home-connect-panel__cta", "home.prod.meet.cta"], 180 [".home-connect-panel--meet .home-connect-panel__soft", "home.prod.meet.soft"], 181 [ 182 ".home-connect-panel--conference .home-connect-panel__eyebrow", 183 "home.prod.conf.eyebrow", 184 ], 185 [".home-connect-panel--conference .home-connect-panel__title-text", "home.prod.conf.title"], 186 [".home-connect-panel--conference .home-connect-panel__lead", "home.prod.conf.lead"], 187 [".home-connect-panel--conference .home-connect-panel__cta", "home.prod.conf.cta"], 188 [".home-connect-panel--conference .home-connect-panel__soft", "home.prod.conf.soft"], 189 [ 190 ".home-connect-panel--cloud-floor .home-connect-panel__eyebrow", 191 "home.prod.floor.eyebrow", 192 ], 193 [".home-connect-panel--cloud-floor .home-connect-panel__title-text", "home.prod.floor.title"], 194 [".home-connect-panel--cloud-floor .home-connect-panel__lead", "home.prod.floor.lead"], 195 [".home-connect-panel--cloud-floor .home-connect-panel__cta", "home.prod.floor.cta"], 196 [".home-connect-panel--cloud-floor .home-connect-panel__soft", "home.prod.floor.soft"], 197 [ 198 ".home-connect-panel--graphics .home-connect-panel__eyebrow", 199 "home.prod.gx.eyebrow", 200 ], 201 [".home-connect-panel--graphics .home-connect-panel__title-text", "home.prod.gx.title"], 202 [".home-connect-panel--graphics .home-connect-panel__lead", "home.prod.gx.lead"], 203 [".home-connect-panel--graphics .home-connect-panel__cta", "home.prod.gx.cta"], 204 [".home-connect-panel--graphics .home-connect-panel__soft", "home.prod.gx.soft"], 205 [ 206 ".home-connect-panel--illustrate .home-connect-panel__eyebrow", 207 "home.prod.cut.eyebrow", 208 ], 209 [".home-connect-panel--illustrate .home-connect-panel__title-text", "home.prod.cut.title"], 210 [".home-connect-panel--illustrate .home-connect-panel__lead", "home.prod.cut.lead"], 211 [".home-connect-panel--illustrate .home-connect-panel__cta", "home.prod.cut.cta"], 212 [ 213 ".home-connect-panel--illustrate .home-connect-panel__soft", 214 "home.prod.cut.display", 215 ], 216 [".home-connect-panel--avp .home-connect-panel__eyebrow", "home.prod.avp.eyebrow"], 217 [".home-connect-panel--avp .home-connect-panel__title-text", "home.prod.avp.title"], 218 [".home-connect-panel--avp .home-connect-panel__lead", "home.prod.avp.lead"], 219 [".home-connect-panel--avp .home-connect-panel__cta", "home.prod.avp.cta"], 220 [ 221 ".home-connect-panel--transcribe .home-connect-panel__eyebrow", 222 "home.prod.tx.eyebrow", 223 ], 224 [".home-connect-panel--transcribe .home-connect-panel__title-text", "home.prod.tx.title"], 225 [".home-connect-panel--transcribe .home-connect-panel__lead", "home.prod.tx.lead"], 226 [".home-connect-panel--transcribe .home-connect-panel__cta", "home.prod.tx.cta"], 227 [ 228 ".home-connect-panel--rundown .home-connect-panel__eyebrow", 229 "home.prod.rd.eyebrow", 230 ], 231 [".home-connect-panel--rundown .home-connect-panel__title-text", "home.prod.rd.title"], 232 [".home-connect-panel--rundown .home-connect-panel__lead", "home.prod.rd.lead"], 233 [".home-connect-panel--rundown .home-connect-panel__cta", "home.prod.rd.cta"], 234 [".home-connect-panel--rundown .home-connect-panel__soft", "home.prod.rd.setup"], 235 ["#home-money-heading", "home.section.money"], 236 [".home-money-title .home-money-title-text", "home.money.title"], 237 [".home-money-lead", "home.money.lead"], 238 [".home-money-cta", "home.money.cta"],
239 ["#home-extensions-heading", "home.ext.title"], 240 [".home-extensions-title-text", "home.ext.title"], 241 [".home-extensions-lead", "home.ext.lead"], 242 [".home-extensions-cta", "home.ext.cta"], 243 ["#home-trust-heading", "home.section.trust"], 244 [ 245 ".home-connect-panel--trust-check .home-connect-panel__eyebrow", 246 "home.trust.check.eyebrow", 247 ], 248 [ 249 ".home-connect-panel--trust-check .home-connect-panel__title-text", 250 "home.trust.check.title", 251 ], 252 [".home-connect-panel--trust-check .home-connect-panel__lead", "home.trust.check.lead"], 253 [".home-connect-panel--trust-check .home-connect-panel__cta", "home.trust.check.cta"], 254 [ 255 ".home-connect-panel--trust-index .home-connect-panel__eyebrow", 256 "home.trust.index.eyebrow", 257 ], 258 [ 259 ".home-connect-panel--trust-index .home-connect-panel__title-text", 260 "home.trust.index.title", 261 ], 262 [".home-connect-panel--trust-index .home-connect-panel__lead", "home.trust.index.lead"], 263 [".home-connect-panel--trust-index .home-connect-panel__cta", "home.trust.index.cta"], 264 [ 265 ".home-connect-panel--similarity .home-connect-panel__eyebrow", 266 "home.trust.sim.eyebrow", 267 ], 268 [".home-connect-panel--similarity .home-connect-panel__title-text", "home.trust.sim.title"], 269 [".home-connect-panel--similarity .home-connect-panel__lead", "home.trust.sim.lead"], 270 [".home-connect-panel--similarity .home-connect-panel__cta", "home.trust.sim.cta"], 271 [".home-connect-panel--learn .home-connect-panel__eyebrow", "home.trust.learn.eyebrow"], 272 [".home-connect-panel--learn .home-connect-panel__title-text", "home.trust.learn.title"], 273 [".home-connect-panel--learn .home-connect-panel__lead", "home.trust.learn.lead"], 274 [".home-connect-panel--learn .home-connect-panel__cta", "home.trust.learn.cta"], 275 [".home-connect-panel--noise .home-connect-panel__eyebrow", "home.trust.noise.eyebrow"], 276 [".home-connect-panel--noise .home-connect-panel__title-text", "home.trust.noise.title"], 277 [".home-connect-panel--noise .home-connect-panel__lead", "home.trust.noise.lead"], 278 [".home-connect-panel--noise .home-connect-panel__cta", "home.trust.noise.cta"], 279 ["#home-protect-heading", "home.section.protect"], 280 [ 281 ".home-connect-panel--key-file .home-connect-panel__eyebrow", 282 "home.protect.key.eyebrow", 283 ], 284 [".home-connect-panel--key-file .home-connect-panel__title-text", "home.protect.key.title"], 285 [".home-connect-panel--key-file .home-connect-panel__lead", "home.protect.key.lead"], 286 [".home-connect-panel--key-file .home-connect-panel__cta", "home.protect.key.cta"], 287 [ 288 ".home-connect-panel--lock-file .home-connect-panel__eyebrow", 289 "home.protect.lock.eyebrow", 290 ], 291 [".home-connect-panel--lock-file .home-connect-panel__title-text", "home.protect.lock.title"], 292 [".home-connect-panel--lock-file .home-connect-panel__lead", "home.protect.lock.lead"], 293 [".home-connect-panel--lock-file .home-connect-panel__cta", "home.protect.lock.cta"], 294 [ 295 ".home-connect-panel--proof .home-connect-panel__eyebrow", 296 "home.protect.proof.eyebrow", 297 ], 298 [".home-connect-panel--proof .home-connect-panel__title-text", "home.protect.proof.title"], 299 [".home-connect-panel--proof .home-connect-panel__lead", "home.protect.proof.lead"], 300 [".home-connect-panel--proof .home-connect-panel__cta", "home.protect.proof.cta"], 301 [".home-connect-panel--card .home-connect-panel__eyebrow", "home.protect.card.eyebrow"], 302 [".home-connect-panel--card .home-connect-panel__title-text", "home.protect.card.title"], 303 [".home-connect-panel--card .home-connect-panel__lead", "home.protect.card.lead"], 304 [".home-connect-panel--card .home-connect-panel__cta", "home.protect.card.cta"], 305 ["#home-together-heading", "home.section.together"], 306 [".home-connect-panel--polls .home-connect-panel__eyebrow", "home.together.polls.eyebrow"], 307 [".home-connect-panel--polls .home-connect-panel__title-text", "home.together.polls.title"], 308 [".home-connect-panel--polls .home-connect-panel__lead", "home.together.polls.lead"], 309 [".home-connect-panel--polls .home-connect-panel__cta", "home.together.polls.cta"], 310 [ 311 ".home-connect-panel--surveys .home-connect-panel__eyebrow", 312 "home.together.surveys.eyebrow", 313 ], 314 [".home-connect-panel--surveys .home-connect-panel__title-text", "home.together.surveys.title"], 315 [".home-connect-panel--surveys .home-connect-panel__lead", "home.together.surveys.lead"], 316 [".home-connect-panel--surveys .home-connect-panel__cta", "home.together.surveys.cta"], 317 [".home-connect-panel--votes .home-connect-panel__eyebrow", "home.together.votes.eyebrow"], 318 [".home-connect-panel--votes .home-connect-panel__title-text", "home.together.votes.title"], 319 [".home-connect-panel--votes .home-connect-panel__lead", "home.together.votes.lead"], 320 [".home-connect-panel--votes .home-connect-panel__cta", "home.together.votes.cta"], 321 ["#home-build-heading", "home.section.build"], 322 [".home-connect-panel--api .home-connect-panel__eyebrow", "home.build.api.eyebrow"], 323 [".home-connect-panel--api .home-connect-panel__title-text", "home.build.api.title"], 324 [".home-connect-panel--api .home-connect-panel__lead", "home.build.api.lead"], 325 [".home-connect-panel--api .home-connect-panel__cta", "home.build.api.cta"], 326 [ 327 ".home-connect-panel--translator .home-connect-panel__eyebrow", 328 "home.build.trans.eyebrow", 329 ], 330 [".home-connect-panel--translator .home-connect-panel__title-text", "home.build.trans.title"], 331 [".home-connect-panel--translator .home-connect-panel__lead", "home.build.trans.lead"], 332 [".home-connect-panel--translator .home-connect-panel__cta", "home.build.trans.cta"], 333 [".home-connect-panel--reach .home-connect-panel__eyebrow", "home.build.reach.eyebrow"], 334 [".home-connect-panel--reach .home-connect-panel__title-text", "home.build.reach.title"], 335 [".home-connect-panel--reach .home-connect-panel__lead", "home.build.reach.lead"], 336 [".home-connect-panel--reach .home-connect-panel__cta", "home.build.reach.cta"], 337 [".home-connect-panel--sendi .home-connect-panel__soft", "common.localSoftware"], 338 [".home-connect-panel--find .home-connect-panel__soft", "common.localSoftware"], 339 [".home-connect-panel--air-check .home-connect-panel__soft", "common.localSoftware"], 340 [".home-connect-panel--avp .home-connect-panel__soft", "common.localSoftware"], 341 [".home-connect-panel--lock-file .home-connect-panel__soft", "common.localSoftware"], 342 [".home-connect-panel--card .home-connect-panel__soft", "common.localSoftware"], 343 ["#home-who-am-i-heading", "home.who.title"], 344 [".home-who-am-i-lead", "home.who.lead"], 345 [".home-who-am-i-card > p:nth-of-type(2)", "home.who.p1"], 346 [".home-who-am-i-pivot", "home.who.pivot"], 347 [".home-who-am-i-card > p:nth-of-type(4)", "home.who.p2"], 348 [".home-who-am-i-card > p:nth-of-type(5)", "home.who.p3"], 349 [".home-who-am-i-ideas", "home.who.ideas"], 350 [".home-who-am-i-card > p:nth-of-type(7)", "home.who.p4"], 351 [".home-who-am-i-thesis", "home.who.thesis"], 352 [".home-who-am-i-outro p:nth-child(1)", "home.who.out1"], 353 [".home-who-am-i-outro p:nth-child(2)", "home.who.out2"], 354 [".home-who-am-i-outro p:nth-child(3)", "home.who.out3Html", "html"], 355 ["#contact .hx-contact__invite", "home.story.contactTitle"], 356 ["#contact input[name='name']", "home.story.contactName", "placeholder"], 357 ["#contact input[name='email']", "home.story.contactEmail", "placeholder"], 358 ["#contact textarea[name='message']", "home.story.contactMessage", "placeholder"], 359 ["#contact .btn-primary", "home.story.contactSend"], 360 ["#store-modal-title", "store.title"], 361 ["#store-modal p", "store.lead"], 362 ["#store-modal-close", "store.close"], 363 ["#store-modal [data-store-soon='edge']", "store.soon"], 364 ["#store-modal [data-store-soon='safari']", "store.soon"], 365 ], 366 "/tools.html": [ 367 [".hero-title-single", "page.tools.title"], 368 [".hero-subtitle-bottom", "page.tools.lead"], 369 ], 370 "/solutions.html": [ 371 [".hero-title-single", "page.solutions.title"], 372 [".hero-subtitle-bottom", "page.solutions.lead"], 373 ], 374 "/services.html": [ 375 [".hero-title-single", "page.services.title"], 376 [".hero-subtitle-bottom", "page.services.lead"], 377 ], 378 "/pricing.html": [ 379 [".hero-title-single", "page.pricing.title"], 380 [".hero-subtitle-bottom", "page.pricing.lead"], 381 ], 382 "/payment.html": [ 383 [".hero-title-single", "page.payment.title"], 384 [".hero-subtitle-bottom", "page.payment.lead"], 385 ], 386 "/downloads": [ 387 [".page h1", "downloads.title"], 388 [".page .lead", "downloads.lead"], 389 ["#ext h2", "downloads.extTitle"], 390 ["#ext .ext-note", "downloads.extLead"], 391 ["#gi h2", "downloads.spaceTitle"], 392 [".page > .note", "downloads.note"], 393 ], 394 "/about.html": [ 395 [".hero-title-single", "page.about.title"], 396 [".hero-subtitle-bottom", "page.about.lead"], 397 ], 398 "/faq.html": [ 399 [".hero-title-single", "page.faq.h1"], 400 [".hero-subtitle-bottom", "page.faq.subtitle"], 401 [".faq-item:nth-child(1) .faq-q", "faq.q1"], 402 [".faq-item:nth-child(1) .faq-a", "faq.a1", "html"], 403 [".faq-item:nth-child(2) .faq-q", "faq.q2"], 404 [".faq-item:nth-child(2) .faq-a", "faq.a2", "html"], 405 [".faq-item:nth-child(3) .faq-q", "faq.q3"], 406 [".faq-item:nth-child(3) .faq-a", "faq.a3", "html"], 407 [".faq-item:nth-child(4) .faq-q", "faq.q4"], 408 [".faq-item:nth-child(4) .faq-a", "faq.a4", "html"], 409 [".faq-item:nth-child(5) .faq-q", "faq.q5"], 410 [".faq-item:nth-child(5) .faq-a", "faq.a5", "html"], 411 [".faq-item:nth-child(6) .faq-q", "faq.q6"], 412 [".faq-item:nth-child(6) .faq-a", "faq.a6", "html"], 413 [".faq-item:nth-child(7) .faq-q", "faq.q7"], 414 [".faq-item:nth-child(7) .faq-a", "faq.a7", "html"], 415 [".faq-item:nth-child(8) .faq-q", "faq.q8"], 416 [".faq-item:nth-child(8) .faq-a", "faq.a8", "html"], 417 [".faq-item:nth-child(9) .faq-q", "faq.q9"],
418 [".faq-item:nth-child(9) .faq-a", "faq.a9", "html"], 419 [".faq-item:nth-child(10) .faq-q", "faq.q10"], 420 [".faq-item:nth-child(10) .faq-a", "faq.a10", "html"], 421 [".faq-item:nth-child(11) .faq-q", "faq.q11"], 422 [".faq-item:nth-child(11) .faq-a", "faq.a11", "html"], 423 [".faq-item:nth-child(12) .faq-q", "faq.q12"], 424 [".faq-item:nth-child(12) .faq-a", "faq.a12", "html"], 425 [".faq-item:nth-child(13) .faq-q", "faq.q13"], 426 [".faq-item:nth-child(13) .faq-a", "faq.a13", "html"], 427 [".faq-item:nth-child(14) .faq-q", "faq.q14"], 428 [".faq-item:nth-child(14) .faq-a", "faq.a14", "html"], 429 [".hub-cta-row a[href='/']", "page.faq.cta.home"], 430 [".hub-cta-row a[href='/solutions.html']", "page.faq.cta.solutions"], 431 ["#contact h2", "contact.title"], 432 ["#contact select.contact-select option[value='']", "contact.topic"], 433 ["#contact select.contact-select option[value='partnership']", "contact.topic.partnership"], 434 ["#contact select.contact-select option[value='feedback']", "contact.topic.feedback"], 435 ["#contact select.contact-select option[value='bug']", "contact.topic.bug"], 436 ["#contact select.contact-select option[value='media']", "contact.topic.media"], 437 ["#contact select.contact-select option[value='investment']", "contact.topic.investment"], 438 ["#contact select.contact-select option[value='other']", "contact.topic.other"], 439 ["#contact input[name='name']", "contact.name", "placeholder"], 440 ["#contact textarea[name='message']", "contact.message", "placeholder"], 441 [".contact-message-hint", "contact.hint"], 442 [".meeting-checkbox span:last-child", "contact.meeting"], 443 ["label[for='meeting-date']", "contact.meetingWhen"], 444 ["#contact .btn-primary", "contact.send"], 445 ], 446 "/how.html": [[ ".hero-title-single", "page.how.title" ]], 447 "/privacy.html": [[ ".hero-title-single", "page.privacy.title" ]], 448 }; 449 450 function pagePath() { 451 try { 452 var p = global.location.pathname || "/"; 453 if (p.endsWith("/index.html")) p = p.slice(0, -"/index.html".length) + "/"; 454 if (p !== "/" && p.endsWith("/")) p = p.slice(0, -1); 455 return p || "/"; 456 } catch (_) { 457 return "/"; 458 } 459 } 460 461 function applyPageSelectors(lang) { 462 var path = pagePath(); 463 var rows = PAGE_SELECTORS[path]; 464 if (!rows) return; 465 rows.forEach(function (row) { 466 var sel = row[0]; 467 var key = row[1]; 468 var mode = row[2] || "text"; 469 var val = t(lang, key); 470 if (val == null) return; 471 global.document.querySelectorAll(sel).forEach(function (el) { 472 if (mode === "html") el.innerHTML = val; 473 else if (mode === "placeholder") el.placeholder = val; 474 else if (mode === "aria-label") el.setAttribute("aria-label", val); 475 else el.textContent = val; 476 }); 477 }); 478 } 479 480 function applyDocumentLang(lang) { 481 global.document.documentElement.lang = lang === "bg" ? "bg" : "en"; 482 } 483 484 function applyMeta(lang) { 485 var path = pagePath(); 486 if (path === "/") { 487 var hero = t(lang, "home.hero"); 488 if (hero) { 489 global.document.title = "GriGsi â " + hero; 490 var desc = global.document.querySelector('meta[name="description"]'); 491 if (desc) { 492 var body = t(lang, "home.body"); 493 var bridge = t(lang, "home.bridge"); 494 var parts = [hero]; 495 if (body) parts.push(body.replace(/\.$/, "")); 496 if (bridge) parts.push(bridge.replace(/\.$/, "")); 497 desc.setAttribute("content", parts.join(". ") + "."); 498 } 499 } 500 } else if (path === "/downloads") { 501 var dlTitle = t(lang, "downloads.title"); 502 if (dlTitle) global.document.title = dlTitle; 503 } else if (path === "/payment.html") { 504 var payTitle = t(lang, "page.payment.title"); 505 if (payTitle) global.document.title = payTitle + " â GriGsi"; 506 } else if (path === "/official-data-hub") { 507 var ofdhTitle = t(lang, "ofdh.metaTitle"); 508 if (ofdhTitle) global.document.title = ofdhTitle; 509 var ofdhDesc = t(lang, "ofdh.metaDesc"); 510 var ofdhMeta = global.document.querySelector('meta[name="description"]'); 511 if (ofdhDesc && ofdhMeta) ofdhMeta.setAttribute("content", ofdhDesc); 512 } 513 } 514 515 var langController = null; 516 517 function syncLangButtons(lang) { 518 var bgBtn = global.document.getElementById("grigsi-lang-bg"); 519 var enBtn = global.document.getElementById("grigsi-lang-en"); 520 if (bgBtn) { 521 bgBtn.textContent = "ÐÐ";
522 bgBtn.classList.toggle("is-on", lang === "bg"); 523 } 524 if (enBtn) { 525 enBtn.textContent = "EN"; 526 enBtn.classList.toggle("is-on", lang === "en"); 527 } 528 } 529 530 function applyLang(lang) { 531 lang = lang === "bg" ? "bg" : "en"; 532 applyDocumentLang(lang); 533 applyDataI18n(lang); 534 applyPageSelectors(lang); 535 applyMeta(lang); 536 syncLangButtons(lang); 537 if (langController && typeof langController.sync === "function") { 538 langController.sync(lang); 539 } 540 try { 541 global.localStorage.setItem(STORAGE_KEY, lang); 542 } catch (_) {} 543 try { 544 global.dispatchEvent(new CustomEvent("grigsi-site-lang", { detail: { lang: lang } })); 545 } catch (_) {} 546 } 547 548 function boot() { 549 migrateLegacyLang(); 550 if (!global.GriGsiUiLang) { 551 applyLang("en"); 552 return; 553 } 554 langController = global.GriGsiUiLang.wireButtons("grigsi-lang-bg", "grigsi-lang-en", STORAGE_KEY, applyLang); 555 } 556 557 if (global.document.readyState === "loading") { 558 global.document.addEventListener("DOMContentLoaded", boot); 559 } else { 560 boot(); 561 } 562 563 global.GriGsiSiteI18n = { 564 t: t, 565 apply: applyLang, 566 storageKey: STORAGE_KEY, 567 }; 568})(typeof window !== "undefined" ? window : globalThis);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.