time() + 60 * 60 * 24 * 180, 'path' => '/', 'secure' => dbnToolsIsHttps(), 'httponly' => false, 'samesite' => 'Lax', ]); } return $lang; } if (!empty($_SESSION['dbn_tools_lang'])) { return dbnToolsNormalizeUiLanguage($_SESSION['dbn_tools_lang']); } if (!empty($_COOKIE['dbn_tools_lang'])) { $lang = dbnToolsNormalizeUiLanguage($_COOKIE['dbn_tools_lang']); $_SESSION['dbn_tools_lang'] = $lang; return $lang; } return 'en'; } function dbnToolsLanguageName(string $language): string { return match (dbnToolsNormalizeUiLanguage($language)) { 'no' => 'Norwegian', 'uk' => 'Ukrainian', 'pl' => 'Polish', default => 'English', }; } function dbnToolsLanguageLabel(string $language): string { return match (dbnToolsNormalizeUiLanguage($language)) { 'no' => 'NO', 'uk' => 'UK', 'pl' => 'PL', default => 'EN', }; } function dbnToolsTranslations(): array { return [ 'en' => [ 'meta_title' => 'Do Better Norge - AI Legal Tools', 'brand_line' => 'Do Better Norge - tools.dobetternorge.no', 'suite_title' => 'Legal Tools', 'workspace_title' => 'Case Workbench', 'session_active' => 'Session active', 'health' => 'Health', 'sign_out' => 'Sign out', 'retention' => 'Session in memory - nothing stored by default', 'disclaimer' => 'Legal information and preparation support, not final legal advice. Pasted text and uploads are processed in memory by default.', 'manifesto_eyebrow' => 'Family rights - Norway - since 2019', 'manifesto_title' => 'They took her child in twelve minutes.', 'manifesto_sub' => 'Open a tool. Build a chronology, research the law, protect privacy, and prepare your next step with cited support.', 'stat_echr' => 'ECHR violations since 2015', 'stat_loss' => 'ECHR cases lost 2017-22', 'stat_tribunal' => 'tribunal decisions analysed', 'stat_pending' => 'pending Strasbourg cases', 'reasoning_eyebrow' => 'File - Evidence trail', 'reasoning_title' => 'Reasoning', 'waiting_title' => 'Waiting', 'waiting_text' => 'Run a tool to see interpretation, retrieval, confidence, uncertainty, and next step.', 'dashboard_eyebrow' => 'Approved tools suite', 'dashboard_title' => 'Choose a legal AI tool', 'dashboard_sub' => 'Built for families, advocates, and supporters preparing Norwegian family-rights and child-welfare cases.', 'open_tool' => 'Open tool', 'landing_kicker' => 'AI legal preparation for family-rights cases in Norway', 'landing_title' => 'Legal tools for families who need the record to make sense.', 'landing_sub' => 'Transcribe meetings, build timelines, analyze Barnevernet documents, research ECHR and Norwegian sources, and prepare cited advocacy briefs.', 'primary_access' => 'Continue with Do Better Norge / Google', 'secondary_access' => 'Sign in with Caveau account', 'member_note' => 'Use your Do Better Norge account. Google login is handled on the main site, then you return here securely.', 'email' => 'Email', 'password' => 'Password', 'sign_in' => 'Sign in', 'register' => 'Register free at dobetternorge.no', 'cause_title' => 'Evidence over outrage.', 'cause_text' => 'Every tool is designed around the same principle as the movement: document the facts, cite the law, and make the next practical step visible.', 'privacy_title' => 'Private by design', 'privacy_text' => 'Uploads are processed in memory by default. The app records only operational metadata such as tool name, latency, language, and anonymous session id.', 'source_title' => 'Sources stay visible', 'source_text' => 'Research tools keep citations, sections, source excerpts, and uncertainty notes next to the answer.', 'tools_title' => 'Launched tools', 'preview_back' => '← All tools', 'preview_what_it_does' => 'What it does', 'preview_get_access' => 'Get access', 'preview_ready_title' => 'Ready to use', 'preview_free_note' => 'Free for Do Better Norge members. Documents are processed in memory and never stored.', 'preview_other_tools' => 'Other tools', 'preview_join' => 'Not a member? Join Do Better Norge', 'preview_input_label' => 'Sample input', 'preview_output_label' => 'Sample output', 'enter_workbench' => 'Open Workbench', 'signed_in_as' => 'Signed in as', 'member_card_title' => 'Already a member?', 'member_card_note' => 'Sign in with your Do Better Norge account. Google login is handled on the main site.', 'register_card_title' => 'New to Do Better Norge?', 'register_card_note' => 'Free for families navigating Norwegian child-welfare cases.', 'register_google' => 'Register with Google', 'register_email' => 'Register with email', 'my_docs_title' => 'My Documents', 'my_docs_desc' => 'Reference documents you uploaded in the AI Chat are available here. Use them across tools or remove them when no longer needed.', 'my_docs_upload_cta' => 'Upload documents in AI Chat', 'my_docs_empty' => 'No documents uploaded yet. Upload PDFs, DOCX, or TXT files in the AI Chat sidebar.', 'my_docs_remove' => 'Remove', 'my_docs_source_ai' => 'AI Chat', 'my_docs_source_tools' => 'Tools', 'loading' => 'Loading…', 'pricing_title_meta' => 'Pricing — Do Better Norge tools', 'pricing_desc_meta' => 'Pricing for tools.dobetternorge.no: free tier, subscriptions, and credit top-ups. Build your own case with private RAG.', 'pricing_eyebrow' => 'Do Better Norge — tools', 'pricing_hero_title' => 'Build your own case. Use the full toolkit.', 'pricing_hero_sub' => '13 AI tools for child-welfare cases. Upload your own documents and let the tools work on your private case — not just generic law.', 'pricing_status_success' => 'Thank you! Your payment is confirmed. It may take a few seconds for your account to update.', 'pricing_status_canceled' => 'Checkout was cancelled. You can try again any time.', 'pricing_survey_title' => 'Earn 25 extra credits', 'pricing_survey_text' => 'Answer 5 short questions about what helps you most. No sales pitch — just research that helps us improve the tools.', 'pricing_survey_cta' => 'Take the survey', 'pricing_period_always' => 'always', 'pricing_period_mo' => '/ month', 'pricing_credits_mo' => 'credits / month', 'pricing_no_storage' => 'No case storage', 'pricing_seat_1' => '1 seat', 'pricing_seats_family' => '3 seats (family)', 'pricing_cap_suffix' => 'tools/hr', 'pricing_cap_per_seat' => 'tools/hr per seat', 'pricing_unlimited' => 'Unlimited', 'pricing_free_f1' => 'Access to all 13 tools', 'pricing_free_f2' => 'Questions, search, editing', 'pricing_free_f3' => 'Correspondence drafts', 'pricing_light_f1' => 'Everything in Free', 'pricing_light_f2' => 'Build your own case (My Case)', 'pricing_light_f3' => 'Private document RAG in all tools', 'pricing_light_f4' => 'OCR on uploaded PDFs', 'pricing_pro_f1' => 'Everything in Light', 'pricing_pro_f2' => 'Hybrid search (BM25 + vector) in your case', 'pricing_pro_f3' => 'Priority queue for uploads', 'pricing_pro_f4' => 'Timeline report on your case', 'pricing_proplus_f1' => 'Everything in Pro', 'pricing_proplus_f2' => 'Invite 2 family members or a lawyer', 'pricing_proplus_f3' => 'Shared case archive with audit log', 'pricing_proplus_f4' => 'Unlimited case reports', 'pricing_badge_popular' => 'Most popular', 'pricing_badge_family' => 'For families', 'pricing_cta_login' => 'Sign in to start', 'pricing_cta_current' => 'Your current plan', 'pricing_cta_available' => 'Available', 'pricing_cta_subscribe' => 'Sign in to subscribe', 'pricing_cta_choose' => 'Choose', 'pricing_topup_title' => 'Top up credits', 'pricing_topup_lead' => 'Need more credits this month? Buy a one-off pack — they never expire.', 'pricing_topup_s_note' => 'Quick boost', 'pricing_topup_m_note' => 'Best value', 'pricing_topup_l_note' => 'Heavy users', 'pricing_topup_buy' => 'Buy', 'pricing_login_first' => 'Sign in first', 'pricing_faq_title' => 'Frequently asked questions', 'pricing_faq1_q' => 'What is the difference between monthly credits and bonus credits?', 'pricing_faq1_a' => 'Monthly credits (from subscription or free tier) reset on the first of each month. Bonus credits (from the survey or top-ups) never expire and are used after monthly credits run out.', 'pricing_faq2_q' => 'What is My Case?', 'pricing_faq2_a' => 'My Case is your private document bank. Upload PDFs from your case; they are OCR-processed, analysed, and stored in your own secure corpus. All tools can then reference your own documents instead of just generic law.', 'pricing_faq3_q' => 'Where is my data stored?', 'pricing_faq3_a' => 'All within the EU: servers in Falkenstein (Germany) and Helsinki (Finland), AI services in West Europe and Norway East. We use Hetzner and Microsoft Azure for AI. Stripe processes payments through Ireland.', 'pricing_faq4_q' => 'Can I share an account with my lawyer?', 'pricing_faq4_a' => 'Yes — Pro+ Family includes 3 seats. You can invite a lawyer, co-parent, or other family member. Everyone sees the same documents, but who did what is logged.', 'pricing_faq5_q' => 'What happens if I cancel?', 'pricing_faq5_a' => 'You revert to the free tier. Your bonus credits are kept. Documents in My Case are retained for 90 days before deletion — giving you time to export or renew.', 'pricing_faq6_q' => 'Do you offer refunds?', 'pricing_faq6_a' => 'Yes, full refund within 7 days if you are not satisfied. Send us an email.', 'pricing_connecting' => 'Connecting…', 'pricing_error_retry' => 'Error — try again', 'pricing_error_checkout' => 'Could not start checkout.', 'pricing_credits_label' => 'credits', ], 'no' => [ 'meta_title' => 'Do Better Norge - juridiske AI-verktøy', 'brand_line' => 'Do Better Norge - tools.dobetternorge.no', 'suite_title' => 'Juridiske verktøy', 'workspace_title' => 'Saksarbeidsbenk', 'session_active' => 'Økt aktiv', 'health' => 'Helse', 'sign_out' => 'Logg ut', 'retention' => 'Økt i minnet - ingenting lagres som standard', 'disclaimer' => 'Juridisk informasjon og forberedelsesstøtte, ikke endelig juridisk rådgivning. Tekst og opplastinger behandles som standard i minnet.', 'manifesto_eyebrow' => 'Familierettigheter - Norge - siden 2019', 'manifesto_title' => 'De tok barnet hennes på tolv minutter.', 'manifesto_sub' => 'Åpne et verktøy. Bygg kronologi, undersøk loven, beskytt personvern og forbered neste steg med kilder.', 'stat_echr' => 'EMD-brudd siden 2015', 'stat_loss' => 'EMD-saker tapt 2017-22', 'stat_tribunal' => 'nemndsvedtak analysert', 'stat_pending' => 'saker venter i Strasbourg', 'reasoning_eyebrow' => 'Fil - evidensspor', 'reasoning_title' => 'Resonnement', 'waiting_title' => 'Venter', 'waiting_text' => 'Kjør et verktøy for å se tolkning, kilder, tillit, usikkerhet og neste steg.', 'dashboard_eyebrow' => 'Godkjent verktøypakke', 'dashboard_title' => 'Velg et juridisk AI-verktøy', 'dashboard_sub' => 'Laget for familier, støttespillere og advokater som forbereder norske familie- og barnevernssaker.', 'open_tool' => 'Åpne verktøy', 'landing_kicker' => 'Juridisk AI-forberedelse for familierettssaker i Norge', 'landing_title' => 'Juridiske verktøy for familier som trenger orden i saksbildet.', 'landing_sub' => 'Transkriber møter, bygg tidslinjer, analyser barnevernsdokumenter, undersøk EMD og norske kilder, og forbered kildebelagte prosesskriv.', 'primary_access' => 'Fortsett med Do Better Norge / Google', 'secondary_access' => 'Logg inn med Caveau-konto', 'member_note' => 'Bruk Do Better Norge-kontoen din. Google-pålogging skjer på hovedsiden, så kommer du trygt tilbake hit.', 'email' => 'E-post', 'password' => 'Passord', 'sign_in' => 'Logg inn', 'register' => 'Registrer deg gratis på dobetternorge.no', 'cause_title' => 'Bevis fremfor raseri.', 'cause_text' => 'Hvert verktøy følger samme prinsipp som bevegelsen: dokumenter fakta, vis lovgrunnlaget og gjør neste praktiske steg tydelig.', 'privacy_title' => 'Personvern først', 'privacy_text' => 'Opplastinger behandles som standard i minnet. Appen lagrer bare operasjonelle metadata som verktøy, tidsbruk, språk og anonym økt-id.', 'source_title' => 'Kildene er synlige', 'source_text' => 'Forskningsverktøyene holder sitater, paragrafer, kildeutdrag og usikkerhet ved siden av svaret.', 'tools_title' => 'Lanserte verktøy', 'preview_back' => '← Alle verktøy', 'preview_what_it_does' => 'Hva det gjør', 'preview_get_access' => 'Få tilgang', 'preview_ready_title' => 'Klar til å bruke', 'preview_free_note' => 'Gratis for Do Better Norge-medlemmer. Dokumenter behandles i minnet og lagres aldri.', 'preview_other_tools' => 'Andre verktøy', 'preview_join' => 'Ikke medlem? Bli med i Do Better Norge', 'preview_input_label' => 'Eksempel — inndata', 'preview_output_label' => 'Eksempel — utdata', 'enter_workbench' => 'Åpne arbeidsbenk', 'signed_in_as' => 'Innlogget som', 'member_card_title' => 'Allerede medlem?', 'member_card_note' => 'Logg inn med Do Better Norge-kontoen din. Google-pålogging skjer på hovedsiden.', 'register_card_title' => 'Ny bruker?', 'register_card_note' => 'Gratis for familier i norske barnevernssaker.', 'register_google' => 'Registrer med Google', 'register_email' => 'Registrer med e-post', 'my_docs_title' => 'Mine dokumenter', 'my_docs_desc' => 'Referansedokumenter du lastet opp i AI-chatten er tilgjengelige her. Bruk dem på tvers av verktøy eller slett dem når de ikke lenger trengs.', 'my_docs_upload_cta' => 'Last opp dokumenter i AI-chat', 'my_docs_empty' => 'Ingen dokumenter lastet opp ennå. Last opp PDF, DOCX eller TXT i AI-chattens sidepanel.', 'my_docs_remove' => 'Fjern', 'my_docs_source_ai' => 'AI-chat', 'my_docs_source_tools' => 'Verktøy', 'loading' => 'Laster…', 'pricing_title_meta' => 'Priser — Do Better Norge verktøy', 'pricing_desc_meta' => 'Priser for tools.dobetternorge.no: gratis tier, abonnementer og kreditt-topp-opp. Bygg din egen sak med privat RAG.', 'pricing_eyebrow' => 'Do Better Norge — verktøy', 'pricing_hero_title' => 'Bygg din egen sak. Bruk hele verktøyboksen.', 'pricing_hero_sub' => '13 AI-verktøy for barnevernssaker. Last opp dine egne dokumenter, og la verktøyene jobbe på din private sak — ikke bare generisk lov.', 'pricing_status_success' => 'Takk! Din betaling er bekreftet. Det kan ta noen sekunder før kontoen oppdateres.', 'pricing_status_canceled' => 'Kassen ble avbrutt. Du kan prøve igjen når som helst.', 'pricing_survey_title' => 'Tjen 25 ekstra kreditter', 'pricing_survey_text' => 'Svar på 5 korte spørsmål om hva som hjelper deg mest. Ingen salgspitch — bare research som hjelper oss å forbedre verktøyene.', 'pricing_survey_cta' => 'Ta undersøkelsen', 'pricing_period_always' => 'alltid', 'pricing_period_mo' => '/ måned', 'pricing_credits_mo' => 'kreditter / måned', 'pricing_no_storage' => 'Ingen sak-lagring', 'pricing_seat_1' => '1 plass', 'pricing_seats_family' => '3 plasser (familie)', 'pricing_cap_suffix' => 'verktøy/time', 'pricing_cap_per_seat' => 'verktøy/time per plass', 'pricing_unlimited' => 'Ubegrenset', 'pricing_free_f1' => 'Tilgang til alle 13 verktøy', 'pricing_free_f2' => 'Spørsmål, søk, redaksjon', 'pricing_free_f3' => 'Korrespondanse-utkast', 'pricing_light_f1' => 'Alt i Gratis', 'pricing_light_f2' => 'Bygg din egen sak (Min Sak)', 'pricing_light_f3' => 'Privat dokument-RAG i alle verktøy', 'pricing_light_f4' => 'OCR på opplastede PDF-er', 'pricing_pro_f1' => 'Alt i Light', 'pricing_pro_f2' => 'Hybrid søk (BM25 + vektor) i din sak', 'pricing_pro_f3' => 'Prioritert kø ved opplasting', 'pricing_pro_f4' => 'Tidslinje-rapport på saken din', 'pricing_proplus_f1' => 'Alt i Pro', 'pricing_proplus_f2' => 'Inviter 2 familiemedlemmer eller advokat', 'pricing_proplus_f3' => 'Delt sak-arkiv med revisjonslogg', 'pricing_proplus_f4' => 'Ubegrensede saksrapporter', 'pricing_badge_popular' => 'Mest populær', 'pricing_badge_family' => 'For familier', 'pricing_cta_login' => 'Logg inn for å starte', 'pricing_cta_current' => 'Din nåværende plan', 'pricing_cta_available' => 'Tilgjengelig', 'pricing_cta_subscribe' => 'Logg inn for å abonnere', 'pricing_cta_choose' => 'Velg', 'pricing_topup_title' => 'Topp opp kreditter', 'pricing_topup_lead' => 'Trenger du flere kreditter denne måneden? Kjøp en engangspakke — de utløper aldri.', 'pricing_topup_s_note' => 'Impulskjøp', 'pricing_topup_m_note' => 'Beste verdi', 'pricing_topup_l_note' => 'Tunge brukere', 'pricing_topup_buy' => 'Kjøp', 'pricing_login_first' => 'Logg inn først', 'pricing_faq_title' => 'Ofte stilte spørsmål', 'pricing_faq1_q' => 'Hva er forskjellen mellom månedlige kreditter og bonuskreditter?', 'pricing_faq1_a' => 'Månedlige kreditter (fra abonnement eller gratis tier) tilbakestilles første hver måned. Bonuskreditter (fra undersøkelsen eller topp-opp) utløper aldri og brukes etter de månedlige er oppbrukt.', 'pricing_faq2_q' => 'Hva er Min Sak?', 'pricing_faq2_a' => 'Min Sak er din private dokumentbank. Last opp PDF-er fra saken din, så blir de OCR-ert, analysert og lagret i din egen sikre korpus. Alle verktøyene kan deretter referere til dine egne dokumenter i stedet for bare generisk lov.', 'pricing_faq3_q' => 'Hvor er dataene mine lagret?', 'pricing_faq3_a' => 'Alt innenfor EU: servere i Falkenstein (Tyskland) og Helsinki (Finland), AI-tjenester i Vest-Europa og Norge Øst. Vi er hostet hos Hetzner og bruker Microsoft Azure for AI. Stripe behandler betalinger gjennom Irland.', 'pricing_faq4_q' => 'Kan jeg dele en konto med advokaten min?', 'pricing_faq4_a' => 'Ja — Pro+ Familie inkluderer 3 plasser. Du kan invitere advokat, samboer eller en annen familiemedlem. Alle ser de samme dokumentene, men hvem som gjorde hva blir logget.', 'pricing_faq5_q' => 'Hva skjer hvis jeg sier opp?', 'pricing_faq5_a' => 'Du faller tilbake til gratis-tier. Bonuskredittene dine beholdes. Dokumentene i Min Sak oppbevares i 90 dager før de slettes — så du har tid til å eksportere dem eller fornye.', 'pricing_faq6_q' => 'Tilbyr dere refusjon?', 'pricing_faq6_a' => 'Ja, full refusjon innen 7 dager hvis du ikke er fornøyd. Send oss en e-post.', 'pricing_connecting' => 'Kobler til...', 'pricing_error_retry' => 'Feil — prøv igjen', 'pricing_error_checkout' => 'Kunne ikke starte kassen.', 'pricing_credits_label' => 'kreditter', ], 'uk' => [ 'meta_title' => 'Do Better Norge - юридичні AI інструменти', 'brand_line' => 'Do Better Norge - tools.dobetternorge.no', 'suite_title' => 'Юридичні інструменти', 'workspace_title' => 'Робочий простір справи', 'session_active' => 'Сесія активна', 'health' => 'Стан', 'sign_out' => 'Вийти', 'retention' => 'Сесія в памʼяті - за замовчуванням нічого не зберігається', 'disclaimer' => 'Юридична інформація та підтримка підготовки, не остаточна юридична порада. Текст і файли за замовчуванням обробляються в памʼяті.', 'manifesto_eyebrow' => 'Права сімʼї - Норвегія - з 2019', 'manifesto_title' => 'Її дитину забрали за дванадцять хвилин.', 'manifesto_sub' => 'Відкрийте інструмент. Побудуйте хронологію, дослідіть право, захистіть приватність і підготуйте наступний крок з джерелами.', 'stat_echr' => 'порушень ЄСПЛ з 2015', 'stat_loss' => 'справ ЄСПЛ програно 2017-22', 'stat_tribunal' => 'рішень трибуналів проаналізовано', 'stat_pending' => 'справ очікують у Страсбурзі', 'reasoning_eyebrow' => 'Файл - слід доказів', 'reasoning_title' => 'Обґрунтування', 'waiting_title' => 'Очікування', 'waiting_text' => 'Запустіть інструмент, щоб побачити тлумачення, джерела, впевненість, невизначеність і наступний крок.', 'dashboard_eyebrow' => 'Схвалений набір інструментів', 'dashboard_title' => 'Оберіть юридичний AI інструмент', 'dashboard_sub' => 'Для сімей, представників і союзників, які готують справи про сімейні права та захист дітей у Норвегії.', 'open_tool' => 'Відкрити інструмент', 'landing_kicker' => 'AI підготовка для справ про сімейні права в Норвегії', 'landing_title' => 'Юридичні інструменти для сімей, яким потрібно впорядкувати матеріали справи.', 'landing_sub' => 'Транскрибуйте зустрічі, будуйте хронології, аналізуйте документи Barnevernet, досліджуйте ЄСПЛ і норвезькі джерела та готуйте аргументи з цитатами.', 'primary_access' => 'Продовжити через Do Better Norge / Google', 'secondary_access' => 'Увійти з обліковим записом Caveau', 'member_note' => 'Використайте свій обліковий запис Do Better Norge. Google-вхід відбувається на основному сайті, після чого ви безпечно повертаєтесь сюди.', 'email' => 'Email', 'password' => 'Пароль', 'sign_in' => 'Увійти', 'register' => 'Зареєструватися безкоштовно на dobetternorge.no', 'cause_title' => 'Докази важливіші за обурення.', 'cause_text' => 'Кожен інструмент побудований на тому самому принципі: задокументувати факти, процитувати право і зробити наступний практичний крок видимим.', 'privacy_title' => 'Приватність за задумом', 'privacy_text' => 'Файли за замовчуванням обробляються в памʼяті. Зберігаються лише технічні метадані: інструмент, затримка, мова та анонімний id сесії.', 'source_title' => 'Джерела залишаються видимими', 'source_text' => 'Дослідницькі інструменти показують цитати, розділи, уривки джерел і примітки про невизначеність поруч із відповіддю.', 'tools_title' => 'Запущені інструменти', 'preview_back' => '← Усі інструменти', 'preview_what_it_does' => 'Що робить', 'preview_get_access' => 'Отримати доступ', 'preview_ready_title' => 'Готові до використання', 'preview_free_note' => 'Безкоштовно для членів Do Better Norge. Документи обробляються в пам\'яті і ніколи не зберігаються.', 'preview_other_tools' => 'Інші інструменти', 'preview_join' => 'Не член? Приєднайтесь до Do Better Norge', 'preview_input_label' => 'Приклад — вхідні дані', 'preview_output_label' => 'Приклад — вихідні дані', 'enter_workbench' => 'Відкрити робочий простір', 'signed_in_as' => 'Увійшли як', 'member_card_title' => 'Вже є акаунт?', 'member_card_note' => 'Увійдіть через обліковий запис Do Better Norge. Google-вхід відбувається на основному сайті.', 'register_card_title' => 'Вперше на Do Better Norge?', 'register_card_note' => 'Безкоштовно для сімей у норвезьких справах із захисту дітей.', 'register_google' => 'Зареєструватися через Google', 'register_email' => 'Зареєструватися через email', 'my_docs_title' => 'Мої документи', 'my_docs_desc' => 'Довідкові документи, завантажені в AI-чаті, доступні тут.', 'my_docs_upload_cta' => 'Завантажити документи в AI-чаті', 'my_docs_empty' => 'Документів ще немає. Завантажте PDF, DOCX або TXT у бічній панелі AI-чату.', 'my_docs_remove' => 'Видалити', 'my_docs_source_ai' => 'AI-чат', 'my_docs_source_tools' => 'Інструменти', 'loading' => 'Завантаження…', 'pricing_title_meta' => 'Ціни — інструменти Do Better Norge', 'pricing_desc_meta' => 'Ціни на tools.dobetternorge.no: безкоштовний рівень, підписки та поповнення кредитів. Побудуйте свою власну справу з приватним RAG.', 'pricing_eyebrow' => 'Do Better Norge — інструменти', 'pricing_hero_title' => 'Побудуйте власну справу. Використовуйте весь набір інструментів.', 'pricing_hero_sub' => '13 AI-інструментів для справ із захисту дітей. Завантажте власні документи й дозвольте інструментам працювати з вашою приватною справою — не лише з загальним законодавством.', 'pricing_status_success' => 'Дякуємо! Ваш платіж підтверджено. Оновлення облікового запису може зайняти кілька секунд.', 'pricing_status_canceled' => 'Оплату скасовано. Ви можете спробувати ще раз у будь-який час.', 'pricing_survey_title' => 'Отримайте 25 додаткових кредитів', 'pricing_survey_text' => 'Дайте відповідь на 5 коротких запитань про те, що допомагає вам найбільше. Без реклами — лише дослідження, що допоможе нам покращити інструменти.', 'pricing_survey_cta' => 'Пройти опитування', 'pricing_period_always' => 'завжди', 'pricing_period_mo' => '/ місяць', 'pricing_credits_mo' => 'кредитів / місяць', 'pricing_no_storage' => 'Без зберігання справи', 'pricing_seat_1' => '1 місце', 'pricing_seats_family' => '3 місця (сім\'я)', 'pricing_cap_suffix' => 'інстр./год', 'pricing_cap_per_seat' => 'інстр./год на місце', 'pricing_unlimited' => 'Без обмежень', 'pricing_free_f1' => 'Доступ до всіх 13 інструментів', 'pricing_free_f2' => 'Запити, пошук, редагування', 'pricing_free_f3' => 'Чернетки кореспонденції', 'pricing_light_f1' => 'Все з Безкоштовного', 'pricing_light_f2' => 'Побудуйте власну справу (Моя справа)', 'pricing_light_f3' => 'Приватний RAG документів у всіх інструментах', 'pricing_light_f4' => 'OCR завантажених PDF', 'pricing_pro_f1' => 'Все з Light', 'pricing_pro_f2' => 'Гібридний пошук (BM25 + вектор) у вашій справі', 'pricing_pro_f3' => 'Пріоритетна черга завантаження', 'pricing_pro_f4' => 'Звіт-хронологія вашої справи', 'pricing_proplus_f1' => 'Все з Pro', 'pricing_proplus_f2' => 'Запросіть 2 членів сім\'ї або адвоката', 'pricing_proplus_f3' => 'Спільний архів справи з журналом аудиту', 'pricing_proplus_f4' => 'Необмежені звіти по справі', 'pricing_badge_popular' => 'Найпопулярніший', 'pricing_badge_family' => 'Для сімей', 'pricing_cta_login' => 'Увійти для початку', 'pricing_cta_current' => 'Ваш поточний план', 'pricing_cta_available' => 'Доступно', 'pricing_cta_subscribe' => 'Увійти для підписки', 'pricing_cta_choose' => 'Обрати', 'pricing_topup_title' => 'Поповнити кредити', 'pricing_topup_lead' => 'Потрібно більше кредитів цього місяця? Придбайте разовий пакет — вони ніколи не закінчуються.', 'pricing_topup_s_note' => 'Швидке поповнення', 'pricing_topup_m_note' => 'Найкраща цінність', 'pricing_topup_l_note' => 'Активні користувачі', 'pricing_topup_buy' => 'Купити', 'pricing_login_first' => 'Спочатку увійдіть', 'pricing_faq_title' => 'Поширені запитання', 'pricing_faq1_q' => 'У чому різниця між місячними кредитами та бонусними кредитами?', 'pricing_faq1_a' => 'Місячні кредити (з підписки або безкоштовного рівня) скидаються першого числа кожного місяця. Бонусні кредити (з опитування або поповнення) ніколи не закінчуються і використовуються після вичерпання місячних.', 'pricing_faq2_q' => 'Що таке Моя справа?', 'pricing_faq2_a' => 'Моя справа — ваш приватний банк документів. Завантажте PDF-файли зі своєї справи; вони пройдуть OCR-обробку, аналіз і будуть збережені у вашому власному захищеному корпусі. Усі інструменти зможуть посилатися на ваші власні документи замість загального законодавства.', 'pricing_faq3_q' => 'Де зберігаються мої дані?', 'pricing_faq3_a' => 'Все в межах ЄС: сервери у Фалькенштайні (Німеччина) та Гельсінкі (Фінляндія), AI-сервіси в Західній Європі та Норвегії Схід. Ми використовуємо Hetzner і Microsoft Azure для AI. Stripe обробляє платежі через Ірландію.', 'pricing_faq4_q' => 'Чи можу я поділитися обліковим записом зі своїм адвокатом?', 'pricing_faq4_a' => 'Так — Pro+ Сім\'я включає 3 місця. Ви можете запросити адвоката, другого з батьків або іншого члена сім\'ї. Всі бачать одні й ті самі документи, але хто що зробив — фіксується.', 'pricing_faq5_q' => 'Що станеться, якщо я скасую підписку?', 'pricing_faq5_a' => 'Ви повернетеся до безкоштовного рівня. Ваші бонусні кредити збережуться. Документи в Моїй справі зберігатимуться 90 днів перед видаленням — щоб ви мали час їх експортувати або поновити підписку.', 'pricing_faq6_q' => 'Чи є повернення коштів?', 'pricing_faq6_a' => 'Так, повне повернення протягом 7 днів, якщо ви незадоволені. Напишіть нам електронного листа.', 'pricing_connecting' => 'Підключення…', 'pricing_error_retry' => 'Помилка — спробуйте ще раз', 'pricing_error_checkout' => 'Не вдалося розпочати оплату.', 'pricing_credits_label' => 'кредитів', ], 'pl' => [ 'meta_title' => 'Do Better Norge - prawne narzędzia AI', 'brand_line' => 'Do Better Norge - tools.dobetternorge.no', 'suite_title' => 'Narzędzia prawne', 'workspace_title' => 'Panel pracy nad sprawą', 'session_active' => 'Sesja aktywna', 'health' => 'Stan', 'sign_out' => 'Wyloguj', 'retention' => 'Sesja w pamięci - domyślnie nic nie jest zapisywane', 'disclaimer' => 'Informacje prawne i wsparcie przygotowania, nie ostateczna porada prawna. Tekst i pliki są domyślnie przetwarzane w pamięci.', 'manifesto_eyebrow' => 'Prawa rodzinne - Norwegia - od 2019', 'manifesto_title' => 'Zabrali jej dziecko w dwanaście minut.', 'manifesto_sub' => 'Otwórz narzędzie. Zbuduj chronologię, zbadaj prawo, chroń prywatność i przygotuj kolejny krok z cytowanymi źródłami.', 'stat_echr' => 'naruszeń ETPC od 2015', 'stat_loss' => 'spraw ETPC przegranych 2017-22', 'stat_tribunal' => 'decyzji trybunałów przeanalizowano', 'stat_pending' => 'spraw oczekuje w Strasburgu', 'reasoning_eyebrow' => 'Plik - ślad dowodów', 'reasoning_title' => 'Uzasadnienie', 'waiting_title' => 'Oczekiwanie', 'waiting_text' => 'Uruchom narzędzie, aby zobaczyć interpretację, źródła, pewność, niepewność i następny krok.', 'dashboard_eyebrow' => 'Zatwierdzony pakiet narzędzi', 'dashboard_title' => 'Wybierz prawne narzędzie AI', 'dashboard_sub' => 'Dla rodzin, rzeczników i sojuszników przygotowujących norweskie sprawy rodzinne i dotyczące ochrony dzieci.', 'open_tool' => 'Otwórz narzędzie', 'landing_kicker' => 'Prawne przygotowanie AI dla spraw rodzinnych w Norwegii', 'landing_title' => 'Narzędzia prawne dla rodzin, które muszą uporządkować akta sprawy.', 'landing_sub' => 'Transkrybuj spotkania, buduj osie czasu, analizuj dokumenty Barnevernet, badaj ETPC i norweskie źródła oraz przygotowuj argumenty z cytatami.', 'primary_access' => 'Kontynuuj przez Do Better Norge / Google', 'secondary_access' => 'Zaloguj przez konto Caveau', 'member_note' => 'Użyj konta Do Better Norge. Logowanie Google odbywa się na głównej stronie, a potem bezpiecznie wracasz tutaj.', 'email' => 'Email', 'password' => 'Hasło', 'sign_in' => 'Zaloguj', 'register' => 'Zarejestruj się bezpłatnie na dobetternorge.no', 'cause_title' => 'Dowody ponad oburzenie.', 'cause_text' => 'Każde narzędzie opiera się na tej samej zasadzie: udokumentować fakty, przytoczyć prawo i pokazać następny praktyczny krok.', 'privacy_title' => 'Prywatność w projekcie', 'privacy_text' => 'Pliki są domyślnie przetwarzane w pamięci. Aplikacja zapisuje tylko metadane operacyjne, takie jak narzędzie, czas, język i anonimowy identyfikator sesji.', 'source_title' => 'Źródła pozostają widoczne', 'source_text' => 'Narzędzia badawcze pokazują cytaty, sekcje, fragmenty źródeł i notatki o niepewności obok odpowiedzi.', 'tools_title' => 'Uruchomione narzędzia', 'preview_back' => '← Wszystkie narzędzia', 'preview_what_it_does' => 'Co robi', 'preview_get_access' => 'Uzyskaj dostęp', 'preview_ready_title' => 'Gotowe do użycia', 'preview_free_note' => 'Bezpłatnie dla członków Do Better Norge. Dokumenty są przetwarzane w pamięci i nigdy nie są przechowywane.', 'preview_other_tools' => 'Inne narzędzia', 'preview_join' => 'Nie jesteś członkiem? Dołącz do Do Better Norge', 'preview_input_label' => 'Przykład — dane wejściowe', 'preview_output_label' => 'Przykład — dane wyjściowe', 'enter_workbench' => 'Otwórz panel pracy', 'signed_in_as' => 'Zalogowany jako', 'member_card_title' => 'Jesteś już członkiem?', 'member_card_note' => 'Zaloguj przez konto Do Better Norge. Logowanie Google odbywa się na głównej stronie.', 'register_card_title' => 'Nowy w Do Better Norge?', 'register_card_note' => 'Bezpłatnie dla rodzin w norweskich sprawach dotyczących ochrony dzieci.', 'register_google' => 'Zarejestruj przez Google', 'register_email' => 'Zarejestruj przez email', 'my_docs_title' => 'Moje dokumenty', 'my_docs_desc' => 'Dokumenty referencyjne przesłane w czacie AI są dostępne tutaj.', 'my_docs_upload_cta' => 'Prześlij dokumenty w czacie AI', 'my_docs_empty' => 'Brak dokumentów. Prześlij pliki PDF, DOCX lub TXT na pasku bocznym czatu AI.', 'my_docs_remove' => 'Usuń', 'my_docs_source_ai' => 'Czat AI', 'my_docs_source_tools' => 'Narzędzia', 'loading' => 'Ładowanie…', 'pricing_title_meta' => 'Cennik — narzędzia Do Better Norge', 'pricing_desc_meta' => 'Cennik tools.dobetternorge.no: bezpłatny poziom, subskrypcje i doładowania kredytów. Zbuduj własną sprawę z prywatnym RAG.', 'pricing_eyebrow' => 'Do Better Norge — narzędzia', 'pricing_hero_title' => 'Zbuduj własną sprawę. Korzystaj z pełnego zestawu narzędzi.', 'pricing_hero_sub' => '13 narzędzi AI dla spraw dotyczących ochrony dzieci. Prześlij własne dokumenty i pozwól narzędziom pracować na Twojej prywatnej sprawie — nie tylko na ogólnych przepisach.', 'pricing_status_success' => 'Dziękujemy! Twoja płatność została potwierdzona. Aktualizacja konta może potrwać kilka sekund.', 'pricing_status_canceled' => 'Płatność została anulowana. Możesz spróbować ponownie w dowolnym momencie.', 'pricing_survey_title' => 'Zdobądź 25 dodatkowych kredytów', 'pricing_survey_text' => 'Odpowiedz na 5 krótkich pytań o to, co najbardziej Ci pomaga. Żadnej reklamy — tylko badania, które pomagają nam ulepszać narzędzia.', 'pricing_survey_cta' => 'Wypełnij ankietę', 'pricing_period_always' => 'zawsze', 'pricing_period_mo' => '/ miesiąc', 'pricing_credits_mo' => 'kredytów / miesiąc', 'pricing_no_storage' => 'Brak przechowywania sprawy', 'pricing_seat_1' => '1 miejsce', 'pricing_seats_family' => '3 miejsca (rodzina)', 'pricing_cap_suffix' => 'narzędzi/godz', 'pricing_cap_per_seat' => 'narzędzi/godz na miejsce', 'pricing_unlimited' => 'Bez limitu', 'pricing_free_f1' => 'Dostęp do wszystkich 13 narzędzi', 'pricing_free_f2' => 'Pytania, wyszukiwanie, edycja', 'pricing_free_f3' => 'Szkice korespondencji', 'pricing_light_f1' => 'Wszystko z Bezpłatnego', 'pricing_light_f2' => 'Zbuduj własną sprawę (Moja sprawa)', 'pricing_light_f3' => 'Prywatny RAG dokumentów we wszystkich narzędziach', 'pricing_light_f4' => 'OCR przesłanych plików PDF', 'pricing_pro_f1' => 'Wszystko z Light', 'pricing_pro_f2' => 'Wyszukiwanie hybrydowe (BM25 + wektor) w Twojej sprawie', 'pricing_pro_f3' => 'Priorytetowa kolejka przesyłania', 'pricing_pro_f4' => 'Raport osi czasu Twojej sprawy', 'pricing_proplus_f1' => 'Wszystko z Pro', 'pricing_proplus_f2' => 'Zaproś 2 członków rodziny lub prawnika', 'pricing_proplus_f3' => 'Wspólne archiwum sprawy z dziennikiem audytu', 'pricing_proplus_f4' => 'Nieograniczone raporty dotyczące sprawy', 'pricing_badge_popular' => 'Najpopularniejszy', 'pricing_badge_family' => 'Dla rodzin', 'pricing_cta_login' => 'Zaloguj, aby zacząć', 'pricing_cta_current' => 'Twój obecny plan', 'pricing_cta_available' => 'Dostępne', 'pricing_cta_subscribe' => 'Zaloguj, aby subskrybować', 'pricing_cta_choose' => 'Wybierz', 'pricing_topup_title' => 'Doładuj kredyty', 'pricing_topup_lead' => 'Potrzebujesz więcej kredytów w tym miesiącu? Kup jednorazowy pakiet — nigdy nie wygasają.', 'pricing_topup_s_note' => 'Szybkie doładowanie', 'pricing_topup_m_note' => 'Najlepsza wartość', 'pricing_topup_l_note' => 'Intensywni użytkownicy', 'pricing_topup_buy' => 'Kup', 'pricing_login_first' => 'Najpierw się zaloguj', 'pricing_faq_title' => 'Często zadawane pytania', 'pricing_faq1_q' => 'Jaka jest różnica między miesięcznymi kredytami a kredytami bonusowymi?', 'pricing_faq1_a' => 'Miesięczne kredyty (z subskrypcji lub bezpłatnego poziomu) resetują się pierwszego dnia każdego miesiąca. Kredyty bonusowe (z ankiety lub doładowań) nigdy nie wygasają i są używane po wyczerpaniu miesięcznych.', 'pricing_faq2_q' => 'Co to jest Moja sprawa?', 'pricing_faq2_a' => 'Moja sprawa to Twój prywatny bank dokumentów. Prześlij pliki PDF ze swojej sprawy; zostaną one przetworzone przez OCR, przeanalizowane i zapisane w Twoim własnym bezpiecznym korpusie. Wszystkie narzędzia będą mogły odwoływać się do Twoich własnych dokumentów zamiast ogólnych przepisów.', 'pricing_faq3_q' => 'Gdzie przechowywane są moje dane?', 'pricing_faq3_a' => 'Wszystko w UE: serwery w Falkenstein (Niemcy) i Helsinkach (Finlandia), usługi AI w Europie Zachodniej i Norwegii Wschodniej. Korzystamy z Hetzner i Microsoft Azure dla AI. Stripe przetwarza płatności przez Irlandię.', 'pricing_faq4_q' => 'Czy mogę udostępnić konto swojemu prawnikowi?', 'pricing_faq4_a' => 'Tak — Pro+ Rodzina obejmuje 3 miejsca. Możesz zaprosić prawnika, drugiego rodzica lub innego członka rodziny. Wszyscy widzą te same dokumenty, ale kto co zrobił jest rejestrowane.', 'pricing_faq5_q' => 'Co się stanie, jeśli anuluję subskrypcję?', 'pricing_faq5_a' => 'Powrócisz do bezpłatnego poziomu. Twoje kredyty bonusowe zostaną zachowane. Dokumenty w Mojej sprawie będą przechowywane przez 90 dni przed usunięciem — masz czas na eksport lub odnowienie.', 'pricing_faq6_q' => 'Czy oferujecie zwroty?', 'pricing_faq6_a' => 'Tak, pełny zwrot w ciągu 7 dni, jeśli nie jesteś zadowolony. Wyślij nam e-mail.', 'pricing_connecting' => 'Łączenie…', 'pricing_error_retry' => 'Błąd — spróbuj ponownie', 'pricing_error_checkout' => 'Nie można uruchomić płatności.', 'pricing_credits_label' => 'kredytów', ], ]; } function dbnToolsT(string $key, ?string $language = null): string { $language = dbnToolsNormalizeUiLanguage($language ?? dbnToolsCurrentLanguage()); $all = dbnToolsTranslations(); return (string)($all[$language][$key] ?? $all['en'][$key] ?? $key); } function dbnToolsWorkbenchCopy(?string $language = null): array { $language = dbnToolsNormalizeUiLanguage($language ?? dbnToolsCurrentLanguage()); $copy = [ 'en' => [ 'title' => 'Case Workbench', 'label' => 'Case Workbench', 'sub' => 'Guided case flow', 'description' => 'Plan a case, map evidence, and open the right legal tools in sequence without storing documents.', 'badge' => 'Private session', 'kicker' => 'Guided preparation', 'hero_title' => 'One calm place to organise the next legal step.', 'hero_text' => 'Use this workbench to frame the case, decide which tool to open next, and keep a local evidence map while your documents stay in memory by default.', 'privacy_title' => 'Local notes only', 'privacy_text' => 'This page saves notes in browser sessionStorage. It does not upload files or call tool APIs.', 'clear_session' => 'Clear session', 'all_tools' => 'All tools', 'intake_title' => 'Case intake', 'evidence_title' => 'Evidence map', 'flow_title' => 'Recommended tool sequence', 'outputs_title' => 'Output checklist', 'role' => 'Who are you helping?', 'choose' => 'Choose...', 'role_parent' => 'Parent', 'role_family' => 'Family member', 'role_advocate' => 'Advocate or lawyer', 'role_supporter' => 'Supporter', 'case_type' => 'Case type', 'case_barnevernet' => 'Barnevernet / child welfare', 'case_custody' => 'Custody or residence', 'case_access' => 'Contact / samvær', 'case_echr' => 'ECHR / Strasbourg preparation', 'deadline' => 'Next deadline', 'language' => 'Working language', 'main_concern' => 'Main concern', 'main_concern_hint' => 'What decision, meeting, deadline, or document are you preparing for?', 'documents' => 'Documents', 'documents_hint' => 'List letters, decisions, reports, emails, or forms.', 'meetings' => 'Meetings and audio', 'meetings_hint' => 'List recordings, meeting notes, or conversations to transcribe.', 'dates' => 'Dates and deadlines', 'dates_hint' => 'List hearings, response deadlines, visits, decisions, and events.', 'claims' => 'Claims and facts', 'claims_hint' => 'List what the other side says, what you dispute, and what you can prove.', 'missing' => 'Missing proof', 'missing_hint' => 'List records, witnesses, messages, or sources still needed.', 'bring_redact' => 'Bring back: safe text you can share with helpers.', 'bring_transcribe' => 'Bring back: speaker notes, quotes, and follow-up issues.', 'bring_timeline' => 'Bring back: dated events and urgent deadlines.', 'bring_barnevernet' => 'Bring back: red flags, parties, and cited procedural issues.', 'bring_research' => 'Bring back: legal angles, source excerpts, and uncertainty notes.', 'bring_advocate' => 'Bring back: strongest brief sections and weak points.', 'bring_corpus' => 'Bring back: source titles, sections, and exact citation context.', 'open_tool' => 'Open tool', 'output_lawyer' => 'Lawyer handoff pack', 'output_barnevernet_response' => 'Barnevernet response preparation', 'output_meeting_prep' => 'Meeting preparation note', 'output_strasbourg' => 'Strasbourg / ECHR research prep', 'next_step' => 'Next practical step', 'next_step_hint' => 'Write the next action, owner, and deadline.', ], 'no' => [ 'title' => 'Saksarbeidsbenk', 'label' => 'Saksarbeidsbenk', 'sub' => 'Veiledet saksflyt', 'description' => 'Planlegg saken, kartlegg bevis og åpne riktig verktøy i riktig rekkefølge uten å lagre dokumenter.', 'badge' => 'Privat økt', 'kicker' => 'Veiledet forberedelse', 'hero_title' => 'Ett rolig sted for neste juridiske steg.', 'hero_text' => 'Bruk arbeidsbenken til å ramme inn saken, velge neste verktøy og holde et lokalt beviskart mens dokumenter behandles i minnet som standard.', 'privacy_title' => 'Kun lokale notater', 'privacy_text' => 'Denne siden lagrer notater i nettleserens sessionStorage. Den laster ikke opp filer og kaller ikke verktøy-API-er.', ], 'uk' => [ 'title' => 'Робочий простір справи', 'label' => 'Робочий простір справи', 'sub' => 'Керований шлях справи', 'description' => 'Плануйте справу, картуйте докази й відкривайте потрібні інструменти по черзі без збереження документів.', 'badge' => 'Приватна сесія', 'kicker' => 'Керована підготовка', 'hero_title' => 'Одне спокійне місце для наступного юридичного кроку.', 'hero_text' => 'Використовуйте цей простір, щоб описати справу, вибрати наступний інструмент і вести локальну карту доказів.', 'privacy_title' => 'Лише локальні нотатки', 'privacy_text' => 'Сторінка зберігає нотатки в sessionStorage браузера. Вона не завантажує файли і не викликає API інструментів.', ], 'pl' => [ 'title' => 'Panel pracy nad sprawą', 'label' => 'Panel pracy nad sprawą', 'sub' => 'Prowadzony tok sprawy', 'description' => 'Zaplanuj sprawę, uporządkuj dowody i otwieraj właściwe narzędzia po kolei bez zapisywania dokumentów.', 'badge' => 'Prywatna sesja', 'kicker' => 'Prowadzone przygotowanie', 'hero_title' => 'Jedno spokojne miejsce na kolejny krok prawny.', 'hero_text' => 'Użyj panelu, aby opisać sprawę, wybrać następne narzędzie i prowadzić lokalną mapę dowodów.', 'privacy_title' => 'Tylko lokalne notatki', 'privacy_text' => 'Strona zapisuje notatki w sessionStorage przeglądarki. Nie przesyła plików i nie wywołuje API narzędzi.', ], ]; return array_merge($copy['en'], $copy[$language] ?? []); } function dbnToolsWorkbenchMeta(?string $language = null): array { $copy = dbnToolsWorkbenchCopy($language); return [ 'label' => $copy['label'], 'sub' => $copy['sub'], 'description' => $copy['description'], 'badge' => $copy['badge'], 'url' => 'workbench.php', 'icon' => 'WB', ]; } function dbnToolsLaunchedTools(?string $language = null): array { $language = dbnToolsNormalizeUiLanguage($language ?? dbnToolsCurrentLanguage()); $copy = [ 'en' => [ 'transcribe' => ['Transcribe', 'Audio and meetings', 'Turn audio or video into text with speaker separation and legal vocabulary support.', 'Whisper / GPU'], 'timeline' => ['Timeline', 'Events and deadlines', 'Extract dates, hearings, Barnevernet milestones, and legal deadlines from notes or files.', 'Process-and-forget'], 'redact' => ['Redact', 'Privacy protection', 'Remove names, ID numbers, phone numbers, and addresses before sharing documents.', 'Deterministic first'], 'korrespond' => ['Korrespond', 'Draft & reply to authorities', 'Draft replies or new correspondence to NAV, Barnevernet, schools, Bufdir and other Norwegian authorities — Norwegian + your language, side-by-side, citations verified against the legal corpus.', 'Hard-RAG · Norsk + EN/PL/UK'], 'barnevernet' => ['BVJ Analyzer', 'Barnevernet documents', 'Analyze child-welfare documents from your perspective with procedural red flags and citations.', 'Document + RAG'], 'advocate' => ['Advocate', 'Partisan brief', 'Choose who you represent and generate a source-grounded brief for that position.', 'ECHR + Lovdata'], 'deep-research' => ['Deep Research', 'Agent + RAG', 'Expand a question into research angles, search legal slices, and synthesize a cited brief.', 'Family-legal'], 'discrepancy' => ['Discrepancy Finder', 'Document comparison', 'Upload two versions of a Barnevernet document and find contradictions, deleted facts, and new allegations.', 'Cross-document AI'], 'corpus' => ['Corpus', 'Legal knowledge base', 'Inspect indexed sources, corpus health, legal categories, and retrieval behavior.', '~220 K passages'], 'citations' => ['Citations', 'Citation graph', 'Browse the legal citation graph — what a statute cites, what cites it, and what implements or amends it.', 'Graph topology'], ], 'no' => [ 'transcribe' => ['Transkriber', 'Lyd og møter', 'Gjør lyd eller video om til tekst med talerinndeling og juridisk ordforråd.', 'Whisper / GPU'], 'timeline' => ['Tidslinje', 'Hendelser og frister', 'Hent ut datoer, møter, barnevernsmilepæler og juridiske frister fra notater eller filer.', 'Behandles og glemmes'], 'redact' => ['Sladder', 'Personvern', 'Fjern navn, ID-numre, telefonnumre og adresser før du deler dokumenter.', 'Deterministisk først'], 'korrespond' => ['Korrespond', 'Brev og svar til myndighetene', 'Skriv utkast til svar eller nytt brev til NAV, barnevernet, skolen, Bufdir og andre norske myndigheter — bokmål + ditt språk side om side, med verifiserte lovhenvisninger.', 'Hard-RAG · Norsk + EN/PL/UK'], 'barnevernet' => ['BVJ-analyse', 'Barnevernsdokumenter', 'Analyser barnevernsdokumenter fra ditt perspektiv med prosessuelle røde flagg og kilder.', 'Dokument + RAG'], 'advocate' => ['Advokatmodus', 'Partsinnlegg', 'Velg hvem du representerer og lag et kildebelagt innlegg for den posisjonen.', 'EMD + Lovdata'], 'deep-research' => ['Dyp research', 'Agent + RAG', 'Utvid et spørsmål til forskningsvinkler, søk juridiske kilder og lag et kildebelagt notat.', 'Familierett'], 'discrepancy' => ['Avviksfinner', 'Dokumentsammenligning', 'Last opp to versjoner av et barneverndokument og finn motsigelser, slettede fakta og nye påstander.', 'Kryssdokument AI'], 'corpus' => ['Korpus', 'Juridisk kunnskapsbase', 'Se indekserte kilder, korpushelse, juridiske kategorier og søkeoppsett.', '~220 K utdrag'], 'citations' => ['Siteringer', 'Siteringsgraf', 'Utforsk siteringsgrafen — hva et dokument siterer, hva som siterer det, og hva som implementerer det.', 'Grafstruktur'], ], 'uk' => [ 'transcribe' => ['Транскрипція', 'Аудіо та зустрічі', 'Перетворюйте аудіо або відео на текст із розділенням мовців і юридичною лексикою.', 'Whisper / GPU'], 'timeline' => ['Хронологія', 'Події та строки', 'Витягуйте дати, слухання, етапи Barnevernet і юридичні строки з нотаток або файлів.', 'Обробити і забути'], 'redact' => ['Редагування', 'Захист приватності', 'Видаляйте імена, ідентифікаційні номери, телефони та адреси перед поширенням документів.', 'Детермінований метод'], 'korrespond' => ['Korrespond', 'Листи і відповіді органам влади', 'Створюйте чернетки відповідей або нових листів до NAV, Barnevernet, школи, Bufdir та інших норвезьких органів — норвезькою + вашою мовою поряд, із перевіреними посиланнями на закон.', 'Hard-RAG · Norsk + EN/PL/UK'], 'barnevernet' => ['BVJ аналізатор', 'Документи Barnevernet', 'Аналізуйте документи захисту дітей з вашої позиції, з процесуальними ризиками та джерелами.', 'Документ + RAG'], 'advocate' => ['Адвокат', 'Позиційний бриф', 'Оберіть, кого представляєте, і створіть бриф із джерелами на підтримку цієї позиції.', 'ЄСПЛ + Lovdata'], 'deep-research' => ['Глибоке дослідження', 'Agent + RAG', 'Розгортає питання в дослідницькі напрями, шукає юридичні джерела та створює бриф.', 'Сімейне право'], 'discrepancy' => ['Пошук розбіжностей', 'Порівняння документів', 'Завантажте дві версії документа Barnevernet і знайдіть суперечності, видалені факти та нові твердження.', 'Міждокументний AI'], 'corpus' => ['Корпус', 'Юридична база знань', 'Переглядайте індексовані джерела, стан корпусу, категорії та поведінку пошуку.', '~220 тис. уривків'], 'citations' => ['Граф цитувань', 'Мережа посилань', 'Граф правових посилань — що цитує документ, хто цитує його, що його реалізує.', 'Граф-топологія'], ], 'pl' => [ 'transcribe' => ['Transkrypcja', 'Audio i spotkania', 'Zamień audio lub wideo na tekst z rozdzieleniem mówców i słownictwem prawnym.', 'Whisper / GPU'], 'timeline' => ['Oś czasu', 'Wydarzenia i terminy', 'Wyodrębniaj daty, rozprawy, etapy Barnevernet i terminy prawne z notatek lub plików.', 'Przetwórz i zapomnij'], 'redact' => ['Redakcja', 'Ochrona prywatności', 'Usuń imiona, numery identyfikacyjne, telefony i adresy przed udostępnieniem dokumentów.', 'Metoda deterministyczna'], 'korrespond' => ['Korrespond', 'Pisma i odpowiedzi do urzędów', 'Twórz projekty odpowiedzi lub nowych pism do NAV, Barnevernet, szkoły, Bufdir i innych norweskich organów — norweski + Twój język obok siebie, ze zweryfikowanymi odniesieniami do ustaw.', 'Hard-RAG · Norsk + EN/PL/UK'], 'barnevernet' => ['Analizator BVJ', 'Dokumenty Barnevernet', 'Analizuj dokumenty opieki nad dziećmi z Twojej perspektywy, z ryzykami proceduralnymi i źródłami.', 'Dokument + RAG'], 'advocate' => ['Adwokat', 'Stronniczy brief', 'Wybierz, kogo reprezentujesz, i wygeneruj brief oparty na źródłach dla tej pozycji.', 'ETPC + Lovdata'], 'deep-research' => ['Głębokie badanie', 'Agent + RAG', 'Rozwija pytanie w kierunki badawcze, przeszukuje źródła prawne i tworzy brief z cytatami.', 'Prawo rodzinne'], 'discrepancy' => ['Wyszukiwacz rozbieżności', 'Porównanie dokumentów', 'Prześlij dwie wersje dokumentu Barnevernet i znajdź sprzeczności, usunięte fakty i nowe zarzuty.', 'AI Między-dokumentowe'], 'corpus' => ['Korpus', 'Prawna baza wiedzy', 'Sprawdzaj indeksowane źródła, stan korpusu, kategorie prawne i działanie wyszukiwania.', '~220 tys. fragmentów'], 'citations' => ['Graf cytowań', 'Sieć cytowań', 'Przeglądaj sieć cytowań — co cytuje dokument, kto go cytuje i co go implementuje.', 'Topologia grafu'], ], ]; $selected = $copy[$language] ?? $copy['en']; $order = ['transcribe', 'timeline', 'redact', 'korrespond', 'barnevernet', 'advocate', 'deep-research', 'discrepancy', 'corpus', 'citations']; $icons = [ 'transcribe' => 'TR', 'timeline' => 'TL', 'redact' => 'RX', 'korrespond' => 'KOR', 'barnevernet' => 'BVJ', 'advocate' => 'ADV', 'deep-research' => 'DR', 'discrepancy' => 'DC', 'corpus' => 'KB', 'citations' => 'CIT', ]; $out = []; foreach ($order as $slug) { [$label, $sub, $description, $badge] = $selected[$slug]; $out[$slug] = [ 'label' => $label, 'sub' => $sub, 'description' => $description, 'badge' => $badge, 'url' => $slug . '.php', 'icon' => $icons[$slug], ]; } return $out; }