PageSourceSearch

https://grigsi.com/js/home-v1-i18n.js?v=1

js grigsi.com collected 2026-09-24 14:44:53 UTC 35,481 bytes, 546 lines download raw bytes

1/* GriGsi Check (/check/) — i18n dictionary + language switching. */
2(function () {
3  'use strict';
4
5  var EN = {
6    'meta.title': 'GriGsi — The trust layer for the AI-powered world',
7    'skip': 'Skip to interactive demo',
8    'nav.trust': 'Trust',
9    'nav.proof': 'Proof',
10    'nav.space': 'Space',
11    'nav.intelligence': 'Intelligence',
12    'cta.check': 'Check something',
13    'cta.build': 'Build with GriGsi',
14    'hero.title': 'The trust layer for the AI-powered world.',
15    'hero.subhead': 'When anything can be generated, trust must be understood.',
16    'hero.lead': 'GriGsi helps you understand what is real, what can be trusted, what is uncertain and what can be proven.',
17    'cta.tools': 'See all tools',
18    'hero.hint': 'Choose something you want to understand, verify or prove.',
19    'flow.choose': 'Choose',
20    'flow.input': 'Input',
21    'flow.analyze': 'Analyze',
22    'flow.understand': 'Understand',
23    'demo.label': 'Check now',
24    'demo.title': 'Paste a message or link',
25    'demo.help': 'Stop. Check. Then act. One field — text, link, or both. We auto-detect signals and the domain, plus related GriGsi checks (Trust, Noise, Dig, Proof…). Nothing sensitive is uploaded unless needed.',
26    'demo.shareHint': 'Also works from the extension, desktop app, and phone Share.',
27    'demo.inputLabel': 'What should we check',
28    'demo.safety': 'Do not paste passwords, PINs, or card data. If there is a link, we use only the domain.',
29    'demo.analyze': 'Check',
30    'demo.reset': 'Clear',
31    'demo.verdictNone': 'No signals marked',
32    'demo.verdictWarn': 'Some signals found — be careful',
33    'demo.verdictHigh': 'Multiple signals found — high risk',
34    'demo.verdictText': 'Check carefully before you continue.',
35    'demo.verdictTextNone': 'No red flags detected in this text, but always check carefully before you continue.',
36    'demo.verdictTextWarn': 'A few warning signs appeared. Read them below and verify independently before you act.',
37    'demo.verdictTextHigh': 'This has strong signs of a scam. Do not send money or share codes — verify through an official channel first.',
38    'demo.moneyTitle': '01 · Financial scams',
39    'demo.shopTitle': '02 · Online shopping',
40    'demo.adviceTitle': 'What to do',
41    'demo.adviceNone': 'No specific red flags matched — still verify the sender and domain independently.',
42    'demo.externalTitle': 'External reports (automatic)',
43    'demo.domainLine': 'Domain: —',
44    'demo.domainLabel': 'Domain:',
45    'demo.extLoading': 'Loading summary from ScamAdviser / VirusTotal…',
46    'demo.scamadviser': 'Original ScamAdviser',
47    'demo.virustotal': 'Original VirusTotal',
48    'demo.extHint': 'We show a short summary here in GriGsi. The full report stays with the source.',
49    'demo.happenedTitle': 'If you already paid or shared data',
50    'demo.happened1': 'Stop contact. Do not send more money. Keep the messages.',
51    'demo.happened2': 'Call the bank on the official number. Ask to block the card and review transactions.',
52    'demo.happened3': 'From a clean device, change passwords and turn on extra sign-in protection.',
53    'demo.happened4': 'Report to the police and, for financial cases, to the financial supervision authority.',
54    'demo.happenedWarn': 'Warning: "recovery for a fee" is often a second scam.',
55    'demo.omniTitle': 'From GriGsi — related checks',
56    'demo.omniHint': 'We run Trust, Dig, Noise, Proof and other tools that make sense for this selection. The decision stays with you.',
57    'demo.omniLoading': 'Searching GriGsi…',
58    'demo.disclaimer': 'Educational check. If there is real risk, contact your bank and the competent authorities.',
59    'demo.errorEmpty': 'Paste something to check first.',
60    'demo.fromShare': 'Filled in automatically from Share.',
61    'demo.statusAnalyzing': 'Analyzing…',
62    'demo.statusDone': 'Check complete.',
63    'ai.loading': 'GriGsi AI is analyzing…',
64    'ai.checkedTitle': 'What I checked',
65    'ai.unavailable': 'The AI explanation is not available right now — see the detailed check below.',
66    'problem.kicker': 'The problem',
67    'problem.title': 'The internet is becoming harder to trust.',
68    'chip.images': 'Images',
69    'chip.voices': 'Voices',
70    'chip.videos': 'Videos',
71    'chip.documents': 'Documents',
72    'chip.identities': 'Identities',
73    'chip.ai': 'AI decisions',
74    'problem.line': 'Almost anything can now be generated.',
75    'problem.q': 'So what can you actually trust?',
76    'answer.kicker': 'The GriGsi answer',
77    'answer.title': 'Understand. Verify. Prove.',
78    'answer.copy': 'GriGsi provides a connected system for moving from uncertainty to understanding — not three unrelated products.',
79    'pillar.trust.h': 'Can I trust this?',
80    'pillar.trust.p': 'GriGsi analyzes signals, context, origin and risk to help people understand what can be trusted and why.',
81    'ex.links': 'links',
82    'ex.websites': 'websites',
83    'ex.information': 'information',
84    'ex.identities': 'identities',
85    'ex.digital': 'digital content',
86    'ex.ai': 'AI outputs',
87    'pillar.trust.cta': 'Explore Trust',
88    'pillar.proof.h': 'Can it be proven?',
89    'pillar.proof.p': 'GriGsi helps people understand origin, evidence, authenticity and digital history.',
90    'ex.provenance': 'content provenance',
91    'ex.authorship': 'authorship',
92    'ex.evidence': 'evidence',
93    'ex.verification': 'verification',
94    'ex.records': 'digital records',
95    'pillar.proof.cta': 'Explore Proof',
96    'pillar.space.h': 'Connect without giving away everything.',
97    'pillar.space.p': 'Create temporary, privacy-first spaces for communication and collaboration.',
98    'pillar.space.quote': 'Connect. Do what you need to do. Leave no unnecessary permanent connection behind.',
99    'pillar.space.cta': 'Explore Space',
100    'how.kicker': 'How it works',
101    'how.title': 'From uncertainty to understanding.',
102    'how.s1': 'Bring something',
103    'how.s1.a': 'A link',
104    'how.s1.b': 'A file',
105    'how.s1.c': 'An image',
106    'how.s1.d': 'A document',
107    'how.s1.e': 'An identity',
108    'how.s1.f': 'A claim',
109    'how.s1.g': 'An AI output',
110    'how.s2': 'GriGsi analyzes it',
111    'how.s2.a': 'Signals',
112    'how.s2.b': 'Origin',
113    'how.s2.c': 'Context',
114    'how.s2.d': 'Evidence',
115    'how.s2.e': 'Risk',
116    'how.s3': 'Understand the result',
117    'how.s3.a': 'What can be trusted',
118    'how.s3.b': 'What is uncertain',
119    'how.s3.c': 'What can be proven',
120    'how.s3.d': 'Why the system reached the conclusion',
121    'how.note': 'The result is explainable.',
122    'diff.kicker': 'Differentiator',
123    'diff.title': 'A score is not an explanation.',
124    'diff.generic': 'Generic system',
125    'diff.score': 'Trust score',
126    'diff.g1': 'No context.',
127    'diff.g2': 'No reasoning.',
128    'diff.g3': 'No explanation.',
129    'diff.why': 'Why?',
130    'diff.origin': 'Origin',
131    'diff.originV': 'Verified from a primary source.',
132    'diff.evidence': 'Evidence',
133    'diff.evidenceV': '4 independent signals.',
134    'diff.risk': 'Risk',
135    'diff.riskV': 'No major risk indicators detected.',
136    'diff.context': 'Context',
137    'diff.contextV': 'Consistent with available information.',
138    'diff.conf': 'Confidence',
139    'diff.confV': 'High.',
140    'diff.foot': 'GriGsi does not just give answers. It shows the reasoning behind them.',
141    'eco.kicker': 'Ecosystem',
142    'eco.title': 'One trust layer. Many ways to understand the world.',
143    'eco.trust.h': 'Verification',
144    'eco.trust.p': 'Verification, safety and reliability — Trust Check and community signals.',
145    'eco.proof.h': 'Provenance',
146    'eco.proof.p': 'Origin, evidence and authenticity for digital records.',
147    'eco.space.h': 'Private connection',
148    'eco.space.p': 'Privacy-first communication and interaction.',
149    'eco.intel.h': 'Analysis',
150    'eco.intel.p': 'Similarity, analysis and data intelligence.',
151    'eco.cta': 'Explore the full ecosystem',
152    'future.kicker': 'Looking ahead',
153    'future.title': 'Built for the world that comes next.',
154    'future.1': 'AI agents',
155    'future.2': 'synthetic media',
156    'future.3': 'digital provenance',
157    'future.4': 'cybersecurity',
158    'future.5': 'privacy-first interaction',
159    'future.6': 'identity signals',
160    'future.7': 'evidence systems',
161    'future.8': 'data intelligence',
162    'future.copy': 'As the digital world becomes more powerful, it also becomes harder to verify.',
163    'future.note': 'GriGsi is designed for that future.',
164    'privacy.kicker': 'Privacy',
165    'privacy.title': 'Trust should not require surrendering your privacy.',
166    'privacy.1': 'Data minimization',
167    'privacy.2': 'User control',
168    'privacy.3': 'Transparency',
169    'privacy.4': 'Explainability',
170    'privacy.5': 'Privacy-first design',
171    'privacy.key': 'The more you know, the less you should need to expose.',
172    'final.title': 'What do you want to understand, verify or prove?',
173    'final.copy': 'The future will not have less information. It will have more uncertainty. GriGsi helps make sense of it.',
174    'footer.privacy': 'Privacy',
175    'footer.how': 'How it works',
176    'footer.api': 'API',
177    'footer.eco': 'Ecosystem',
178    'footer.home': 'Main home',
179    'footer.tools': 'All tools',
180    'logo.aria': 'GriGsi home',
181    'nav.primary': 'Primary',
182    'lang.group': 'Language',
183    'menu.open': 'Open menu',
184    'nav.mobile': 'Mobile',
185    'flow.aria': 'Product flow',
186    'problem.chips': 'What can be generated',
187    'diff.scoreAria': '87 out of 100',
188    'footer.nav': 'Footer',
189    'demo.placeholder': 'Paste an SMS, email, chat, listing and/or link — all in one field.',
190    'signal.money.urgency': 'Pressure to act immediately or a countdown / threat.',
191    'signal.money.urgency.advice': 'Real institutions rarely demand instant action — slow down and verify separately.',
192    'signal.money.paymentMethod': 'Asks for payment by wire transfer, crypto, or gift cards.',
193    'signal.money.paymentMethod.advice': 'Never send money through a channel that cannot be traced or refunded.',
194    'signal.money.sensitiveCode': 'Asks for your PIN, CVV, or a one-time code (OTP).',
195    'signal.money.sensitiveCode.advice': 'No bank or GriGsi will ever ask for your PIN or one-time code.',
196    'signal.money.tooGood': 'Promises a prize, inheritance, or return that is unusually large.',
197    'signal.money.tooGood.advice': 'If it sounds too good to be true, it almost always is.',
198    'signal.money.accountVerify': 'Asks you to "verify" or "unlock" your account via a link.',
199    'signal.money.accountVerify.advice': 'Type the official address yourself instead of clicking the link.',
200    'signal.money.advanceFee': 'Asks for a small fee first to release a larger sum.',
201    'signal.money.advanceFee.advice': 'Legitimate payouts never require you to pay first.',
202    'signal.shop.hugeDiscount': 'Extreme discount or clearance price far below market value.',
203    'signal.shop.hugeDiscount.advice': 'Compare the price with the official store before paying.',
204    'signal.shop.noBuyerProtection': 'Only accepts bank transfer or crypto — no card or platform protection.',
205    'signal.shop.noBuyerProtection.advice': 'Prefer payment methods that let you dispute or reverse a charge.',
206    'signal.shop.lookalikeDomain': "The link's domain imitates a known brand.",
207    'signal.shop.lookalikeDomain.advice': 'Check the exact spelling of the domain before you trust it.',
208    'signal.shop.fakeUrgency': 'Claims only a few items are left or the offer ends in minutes.',
209    'signal.shop.fakeUrgency.advice': 'Manufactured urgency is a classic pressure tactic — take your time.',
210    'signal.shop.moveOffPlatform': 'Asks you to continue the payment outside the marketplace.',
211    'signal.shop.moveOffPlatform.advice': 'Moving off-platform removes any buyer protection you had.',
212    'signal.shop.unexpectedFee': 'Asks for an extra customs or delivery fee to release your package.',
213    'signal.shop.unexpectedFee.advice': "A courier will not ask you to pay a stranger's bank account for release.",
214    'omni.trust.tool': 'TRUST',
215    'omni.trust.title': 'Trust Check',
216    'omni.trust.summary': 'Verify this link or claim in more depth.',
217    'omni.trust.cta': 'Open Trust Check',
218    'omni.proof.tool': 'PROOF',
219    'omni.proof.title': 'Proof',
220    'omni.proof.summary': 'Check the origin and authenticity of the content.',
221    'omni.proof.cta': 'Open Proof',
222    'omni.noise.tool': 'NOISE',
223    'omni.noise.title': 'Noise analyzer',
224    'omni.noise.summary': 'Analyze the text itself for manipulation patterns.',
225    'omni.noise.cta': 'Open Noise analyzer',
226    'omni.intel.tool': 'INTELLIGENCE',
227    'omni.intel.title': 'Similarity',
228    'omni.intel.summary': 'Compare against known content and patterns.',
229    'omni.intel.cta': 'Open Similarity'
230  };
231
232  var BG = {
233    'meta.title': 'GriGsi — Пластът на доверие за света на изкуствения интелект',
234    'skip': 'Прескочи към интерактивната демонстрация',
235    'nav.trust': 'Доверие',
236    'nav.proof': 'Доказателство',
237    'nav.space': 'Пространство',
238    'nav.intelligence': 'Интелигентност',
239    'cta.check': 'Провери нещо',
240    'cta.build': 'Изгради с GriGsi',
241    'hero.title': 'Пластът на доверие за света на изкуствения интелект.',
242    'hero.subhead': 'Когато всичко може да бъде генерирано, доверието трябва да бъде разбрано.',
243    'hero.lead': 'GriGsi помага да разбереш кое е истинско, на какво може да се вярва, кое е несигурно и кое може да бъде докаÐ
243·Ð°Ð½Ð¾.',
244    'cta.tools': 'Виж всички инструменти',
245    'hero.hint': 'Избери нещо, което искаш да разбереш, провериш или докажеш.',
246    'flow.choose': 'Избери',
247    'flow.input': 'Въведи',
248    'flow.analyze': 'Анализ',
249    'flow.understand': 'Разбери',
250    'demo.label': 'Провери сега',
251    'demo.title': 'Постави съобщение или линк',
252    'demo.help': 'Спри. Провери. После действай. Едно поле — текст, линк или и двете. Автоматично разпознаваме признаци и домейна, плюс свързани проверки на GriGsi (Доверие, Шум, Проверка, Доказателство…). Нищо чувствително не се качва, освен ако не е необходимо.',
253    'demo.shareHint': 'Работи и от разширението, настолното приложение и споделяне от телефона.',
254    'demo.inputLabel': 'Какво да проверим',
255    'demo.safety': 'Не поставяй пароли, ПИН кодове или данни на карта. Ако има линк, използваме само домейна.',
256    'demo.analyze': 'Провери',
257    'demo.reset': 'Изчисти',
258    'demo.verdictNone': 'Няма отбелязани признаци',
259    'demo.verdictWarn': 'Открити са признаци — внимавай',
260    'demo.verdictHigh': 'Открити са множество признаци — висок риск',
261    'demo.verdictText': 'Провери внимателно, преди да продължиш.',
262    'demo.verdictTextNone': 'В текста не са открити тревожни признаци, но винаги проверявай внимателно, преди да продължиш.',
263    'demo.verdictTextWarn': 'Появиха се няколко предупредителни признака. Прочети ги по-долу и провери независимо, преди да действаш.',
264    'demo.verdictTextHigh': 'Това има силни признаци на измама. Не изпращай пари и не споделяй кодове — първо провери през официален канал.',
265    'demo.moneyTitle': '01 · Финансови измами',
266    'demo.shopTitle': '02 · Онлайн пазаруване',
267    'demo.adviceTitle': 'Какво да направиш',
268    'demo.adviceNone': 'Не съвпаднаха конкретни признаци — все пак провери подателя и домейна независимо.',
269    'demo.externalTitle': 'Външни проверки',
270    'demo.domainLine': 'Домейн: —',
271    'demo.domainLabel': 'Домейн:',
272    'demo.extLoading': 'Зареждане на резюме от ScamAdviser / VirusTotal…',
273    'demo.scamadviser': 'Оригинал в ScamAdviser',
274    'demo.virustotal': 'Оригинал в VirusTotal',
275    'demo.extHint': 'Тук показваме кратко резюме в GriGsi. Пълният доклад остава при източника.',
276    'demo.happenedTitle': 'Ако вече си платил/а или споделил/а данни',
277    'demo.happened1': 'Спри контакта. Не изпращай повече пари. Запази съобщенията.',
278    'demo.happened2': 'Обади се на банката на официалния номер. Поискай да блокират картата и провери транзакциите.',
279    'demo.happened3': 'От чисто устройство смени паролите и включи допълнителна защита при вход.',
280    'demo.happened4': 'Подай сигнал в полицията, а при финансови случаи — и до Комисията за финансов надзор.',
281    'demo.happenedWarn': 'Внимание: „възстановяване срещу такса“ често е втора измама.',
282    'demo.omniTitle': 'От GriGsi — свързани проверки',
283    'demo.omniHint': 'Пускаме Доверие, Проверка, Шум, Доказателство и други инструменти, които имат смисъл за случая. Решението остава твое.',
284    'demo.omniLoading': 'Търсене в GriGsi…',
285    'demo.disclaimer': 'Образователна проверка. При реален риск се свържи с банката си и компетентните органи.',
286    'demo.errorEmpty': 'Постави нещо за проверка първо.',
287    'demo.fromShare': 'Попълнено автоматично от споделяне.',
288    'demo.statusAnalyzing': 'Анализиране…',
289    'demo.statusDone': 'Проверката приключи.',
290    'ai.loading': 'GriGsi AI анализира…',
291    'ai.checkedTitle': 'Какво проверих',
292    'ai.unavailable': 'AI обяснението временно не е налично — виж подробната проверка по-долу.',
293    'problem.kicker': 'Проблемът',
294    'problem.title': 'На интернет става все по-трудно да се вярва.',
295    'chip.images': 'Изображения',
296    'chip.voices': 'Гласове',
297    'chip.videos': 'Видеа',
298    'chip.documents': 'Документи',
299    'chip.identities': 'Самоличности',
300    'chip.ai': 'Решения на ИИ',
301    'problem.line': 'Почти всичко вече може да бъде генерирано.',
302    'problem.q': 'Тогава на какво наистина можеш да вярваш?',
303    'answer.kicker': 'Отговорът на GriGsi',
304    'answer.title': 'Разбери. Провери. Докажи.',
305    'answer.copy': 'GriGsi предлага свързана система за преминаване от несигурност към разбиране — не три несвързани продукта.',
306    'pillar.trust.h': 'Мога ли да се доверя на това?',
307    'pillar.trust.p': 'GriGsi анализира признаци, контекст, произход и риск, за да помогне да разбереш на какво може да се вярва и защо.',
308    'ex.links': 'линкове',
309    'ex.websites': 'уебсайтове',
310    'ex.information': 'информация',
311    'ex.identities': 'самоличности',
312    'ex.digital': 'дигитално съдържание',
313    'ex.ai': 'резултати от ИИ',
314    'pillar.trust.cta': 'Разгледай Доверие',
315    'pillar.proof.h': 'Може ли да бъде доказано?',
316    'pillar.proof.p': 'GriGsi помага да разбереш произход, доказателства, автентичност и дигитална история.',
317    'ex.provenance': 'произход на съдържанието',
318    'ex.authorship': 'авторство',
319    'ex.evidence': 'доказателства',
320    'ex.verification': 'верификация',
321    'ex.records': 'дигитални записи',
322    'pillar.proof.cta': 'Разгледай Доказателство',
323    'pillar.space.h': 'Свържи се, без да разкриваш всичко.',
324    'pillar.space.p': 'Създавай временни пространства с приоритет върху поверителността за общуване и сътрудничество.',
325    'pillar.space.quote': 'Свържи се. Направи каквото трябва. Не оставяй излишна трайна връзка след себе си.',
326    'pillar.space.cta': 'Разгледай Пространство',
327    'how.kicker': 'Как работи',
328    'how.title': 'От несигурност към разбиране.',
329    'how.s1': 'Донеси нещо',
330    'how.s1.a': 'Линк',
331    'how.s1.b': 'Файл',
332    'how.s1.c': 'Изображение',
333    'how.s1.d': 'Документ',
334    'how.s1.e': 'Самоличност',
335    'how.s1.f': 'Твърдение',
336    'how.s1.g': 'Резултат от ИИ',
337    'how.s2': 'GriGsi го анализира',
338    'how.s2.a': 'Признаци',
339    'how.s2.b': 'Произход',
340    'how.s2.c': 'Контекст',
341    'how.s2.d': 'Доказателства',
342    'how.s2.e': 'Риск',
343    'how.s3': 'Разбери резултата',
344    'how.s3.a': 'На какво може да се вярва',
345    'how.s3.b': 'Кое е несигурно',
346    'how.s3.c': 'Кое може да бъде доказано',
347    'how.s3.d': 'Защо системата стигна до този извод',
348    'how.note': 'Резултатът е обясним.',
349    'diff.kicker': 'Разлика',
350    'diff.title': 'Оценката не е обяснение.',
351    'diff.generic': 'Обикновена система',
352    'diff.score': 'Оценка на доверие',
353    'diff.g1': 'Без контекст.',
354    'diff.g2': 'Без обосновка.',
355    'diff.g3': 'Без обяснение.',
356    'diff.why': 'Защо?',
357    'diff.origin': 'Произход',
358    'diff.originV': 'Потвърдено от първичен източник.',
359    'diff.evidence': 'Доказателства',
360    'diff.evidenceV': '4 независими признака.',
361    'diff.risk': 'Риск',
362    'diff.riskV': 'Не са открити сериозни рискови индикатори.',
363    'diff.context': 'Контекст',
364    'diff.contextV': 'Съответства на наличната информация.',
365    'diff.conf': 'Увереност',
366    'diff.confV': 'Висока.',
367    'diff.foot': 'GriGsi не просто дава отговори. Той показва разсъжденията зад тях.',
368    'eco.kicker': 'Екосистема',
369    'eco.title': 'Един пласт на доверие. Много начини да разбереш света.',
370    'eco.trust.h': 'Верификация',
371    'eco.trust.p': 'Верификация, сигурност и надеждност — Проверка на доверие и сигнали от общността.',
372    'eco.proof.h': 'Произход',
373    'eco.proof.p': 'Произход, доказателства и автентичност за дигитални записи.',
374    'eco.space.h': 'Лична връзка',
375    'eco.space.p': 'Общуване и взаимодействие с приоритет върху поверителността.',
376    'eco.intel.h': 'Анализ',
377    'eco.intel.p': 'Сходство, анализ и разбор на данни.',
378    'eco.cta': 'Разгледай цялата екосистема',
379    'future.kicker': 'Поглед напред',
380    'future.title': 'Създадено за света, който идва.',
381    'future.1': 'ИИ агенти',
382    'future.2': 'синтетично съдържание',
383    'future.3': 'дигитален произход',
384    'future.4': 'киберсигурност',
385    'future.5': 'взаимодействие с приоритет на поверителността',
386    'future.6': 'сигнали за самоличност',
387    'future.7': 'системи за доказателства',
388    'future.8': 'разбор на данни',
389    'future.copy': 'Колкото по-мощен става дигиталният свят, толкова по-трудно е да се проверява.',
390    'future.note': 'GriGsi е създаден за това бъдеще.',
391    'privacy.kicker': 'Поверителност',
392    'privacy.title': 'Доверието не трябва да изисква да се откажеш от поверителността си.',
393    'privacy.1': 'Минимизиране на данните',
394    'privacy.2': 'Контрол за потребителя',
395    'privacy.3': 'Прозрачност',
396    'privacy.4': 'Обяснимост',
397    'privacy.5': 'Дизайн с приоритет на поверителността',
398    'privacy.key': 'Колкото повече знаеш, толкова по-малко трябва да разкриваш.',
399    'final.title': 'Какво искаш да разбереш, провериш или докажеш?',
400    'final.copy': 'Бъдещето няма да има по-малко информация. Ще има повече несигурност. GriGsi помага да й се намери смисъл.',
401    'footer.privacy': 'Поверителност',
402    'footer.how': 'Как работи',
403    'footer.api': 'API',
404    'footer.eco': 'Екосистема',
405    'footer.home': 'Начална страница',
406    'footer.tools': 'Всички инструменти',
407    'logo.aria': 'GriGsi начало',
408    'nav.primary': 'Основно меню',
409    'lang.group': 'Език',
410    'menu.open': 'Отвори менюто',
411    'nav.mobile': 'Мобилно меню',
412    'flow.aria': 'Поток на продукта',
413    'problem.chips': 'Кое може да бъде генерирано',
414    'diff.scoreAria': '87 от 100',
415    'footer.nav': 'Долно меню',
416    'demo.placeholder': 'Постави SMS, имейл, чат, обява и/или линк — всичко в едно поле.',
417    'signal.money.urgency': 'Натиск да действаш незабавно или обратно броене / заплаха.',
418    'signal.money.urgency.advice': 'Истинските институции рядко изискват незабавно действие — забави темпото и провери отделно.',
419    'signal.money.paymentMethod': 'Иска плащане чрез банков превод, крипто или подаръчни карти.',
420    'signal.money.paymentMethod.advice': 'Никога не изпращай пари по начин, който не може да бъде проследен или възстановен.',
421    'signal.money.sensitiveCode': 'Иска твоя ПИН, CVV или еднократен код (OTP).',
422    'signal.money.sensitiveCode.advice': 'Нито банката, нито GriGsi ще поискат ПИН или еднократен код.',
423    'signal.money.tooGood': 'Обещава печалба, наследство или доходност, необичайно голяма.',
424    'signal.money.tooGood.advice': 'Ако звучи прекалено добре, за да е истина, обикновено не е.',
425    'signal.money.accountVerify': 'Иска да „потвърдиш“ или „отключиш“ акаунта си през линк.',
426    'signal.money.accountVerify.advice': 'Въведи официалния адрес сам/а, вместо да натискаш линка.',
427    'signal.money.advanceFee': 'Иска малка такса първо, за да „освободи“ по-голяма сума.',
428    'signal.money.advanceFee.advice': 'Истинските изплащания никога не изискват първо ти да платиш.',
429    'signal.shop.hugeDiscount': 'Крайно намаление или разпродажна цена, далеч под пазарната стойност.',
430    'signal.shop.hugeDiscount.advice': 'Сравни цената с официалния магазин, преди да платиш.',
431    'signal.shop.noBuyerProtection': 'Приема само банков превод или крипто — без защита от карта или платформа.',
432    'signal.shop.noBuyerProtection.advice': 'Предпочитай начини на плащане, при които можеш да оспориш или върнеш сумата.',
433    'signal.shop.lookalikeDomain': 'Домейнът на линка имитира позната марка.',
434    'signal.shop.lookalikeDomain.advice': 'Провери точния изговор на домейна, преди да му се довериш.',
435    'signal.shop.fakeUrgency': 'Твърди, че остават малко бройки или офертата изтича след минути.',
436    'signal.shop.fakeUrgency.advice': 'Изкуствено създадената спешност е класическа тактика за натиск — не бързай.',
437    'signal.shop.moveOffPlatform': 'Иска да продължиш плащането извън платформата.',
438    'signal.shop.moveOffPlatform.advice': 'Излизането извън платформата премахва защитата, която си имал/а като купувач.',
439    'signal.shop.unexpectedFee': 'Иска допълнителна митническа такса или такса за доставка, за да „освободи“ пратката.',
440    'signal.shop.unexpectedFee.advice': 'Куриерска фирма няма да поиска да платиш по чужда лична сметка за освобождаване.',
441    'omni.trust.tool': 'ДОВЕРИЕ',
442    'omni.trust.title': 'Проверка на доверие',
443    'omni.trust.summary': 'Провери този линк или твърдение по-задълбочено.',
444    'omni.trust.cta': 'Отвори Проверка на доверие',
445    'omni.proof.tool': 'ДОКАЗАТЕЛСТВО',
446    'omni.proof.title': 'Доказателство',
447    'omni.proof.summary': 'Провери произхода и автентичността на съдържанието.',
448    'omni.proof.cta': 'Отвори Доказателство',
449    'omni.noise.tool': 'ШУМ',
450    'omni.noise.title': 'Анализатор на шум',
451    'omni.noise.summary': 'Анализирай самия текст за манипулативни модели.',
452    'omni.noise.cta': 'Отвори Анализатор на шум',
453    'omni.intel.tool': 'ИНТЕЛИГЕНТНОСТ',
454    'omni.intel.title': 'Сходство',
455    'omni.intel.summary': 'Сравни с познато съдържание и модели.',
456    'omni.intel.cta': 'Отвори Сходство'
457  };
458
459  var DICTS = { en: EN, bg: BG };
460  var STORAGE_KEY = 'grigsi_lang';
461
462  function detectDefault() {
463    try {
464      var saved = window.localStorage.getItem(STORAGE_KEY);
465      if (saved === 'bg' || saved === 'en') return saved;
466    } catch (e) { /* localStorage unavailable */ }
467    return (navigator.language || '').toLowerCase().indexOf('bg') === 0 ? 'bg' : 'en';
468  }
469
470  var current = detectDefault();
471
472  function t(key) {
473    var dict = DICTS[current] || EN;
474    return Object.prototype.hasOwnProperty.call(dict, key) ? dict[key] : (EN[key] || key);
475  }
476
477  function applyToDom() {
478    document.documentElement.setAttribute('lang', current);
479
480    var nodes = document.querySelectorAll('[data-i18n]');
481    for (var i = 0; i < nodes.length; i++) {
482      nodes[i].textContent = t(nodes[i].getAttribute('data-i18n'));
483    }
484
485    var ariaNodes = document.querySelectorAll('[data-i18n-aria]');
486    for (var j = 0; j < ariaNodes.length; j++) {
487      ariaNodes[j].setAttribute('aria-label', t(ariaNodes[j].getAttribute('data-i18n-aria')));
488    }
489
490    var placeholderNodes = document.querySelectorAll('[data-i18n-placeholder]');
491    for (var k = 0; k < placeholderNodes.length; k++) {
492      placeholderNodes[k].setAttribute('placeholder', t(placeholderNodes[k].getAttribute('data-i18n-placeholder')));
493    }
494
495    var bgBtn = document.getElementById('hv1-lang-bg');
496    var enBtn = document.getElementById('hv1-lang-en');
497    if (bgBtn && enBtn) {
498      bgBtn.classList.toggle('is-on', current === 'bg');
499      bgBtn.setAttribute('aria-pressed', current === 'bg' ? 'true' : 'false');
500      enBtn.classList.toggle('is-on', current === 'en');
501      enBtn.setAttribute('aria-pressed', current === 'en' ? 'true' : 'false');
502    }
503
504    var drawerBtns = document.querySelectorAll('[data-hv1-lang]');
505    for (var d = 0; d < drawerBtns.length; d++) {
506      var btn = drawerBtns[d];
507      var isOn = btn.getAttribute('data-hv1-lang') === current;
508      btn.classList.toggle('is-on', isOn);
509      btn.setAttribute('aria-pressed', isOn ? 'true' : 'false');
510    }
511  }
512
513  function setLang(lang) {
514    if (lang !== 'bg' && lang !== 'en') return;
515    current = lang;
516    try { window.localStorage.setItem(STORAGE_KEY, lang); } catch (e) { /* ignore */ }
517    applyToDom();
518    document.dispatchEvent(new CustomEvent('hv1:langchange', { detail: { lang: lang } }));
519  }
520
521  function wireButtons() {
522    var bgBtn = document.getElementById('hv1-lang-bg');
523    var enBtn = document.getElementById('hv1-lang-en');
524    if (bgBtn) bgBtn.addEventListener('click', function () { setLang('bg'); });
525    if (enBtn) enBtn.addEventListener('click', function () { setLang('en'); });
526
527    var drawerBtns = document.querySelectorAll('[data-hv1-lang]');
528    for (var i = 0; i < drawerBtns.length; i++) {
529      (function (btn) {
530        btn.addEventListener('click', function () {
531          setLang(btn.getAttribute('data-hv1-lang'));
532        });
533      })(drawerBtns[i]);
534    }
535  }
536
537  window.HV1_I18N = {
538    t: t,
539    setLang: setLang,
540    getLang: function () { return current; },
541    apply: applyToDom
542  };
543
544  wireButtons();
545  applyToDom();
546})();

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.