effd3289b4
New dedicated tool for translating Norwegian legal documents (Barnevernet letters, court decisions, correspondence) into the user's chosen language with legal-terminology annotations. - translate.php: new tool page with source/target language selectors, 4-way UI lang switcher, file upload, doc picker, streaming results - api/translate.php: NDJSON streaming endpoint; Azure GPT-4o-mini with legal-aware prompt that preserves Norwegian statute refs verbatim and annotates terms with no target-language equivalent; 2-credit cost - assets/js/translate.js: form handler, NDJSON stream reader, copy button - assets/css/tools.css: .lt-* styles for translation result + annotations - includes/i18n.php: 22 lt_* keys × 4 languages; translate entry in nav - includes/FreeTier.php: translate → 2 credits - includes/CaseResults.php + case-result.php: translate in eligible tools, toolLabel, toolIcon, deriveTitle, rendering block, rerun map Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1854 lines
145 KiB
PHP
1854 lines
145 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
|
||
function dbnToolsSupportedLanguages(): array
|
||
{
|
||
return ['en', 'no', 'uk', 'pl'];
|
||
}
|
||
|
||
function dbnToolsNormalizeUiLanguage(mixed $language): string
|
||
{
|
||
$language = strtolower(trim((string)$language));
|
||
if ($language === 'nb') {
|
||
return 'no';
|
||
}
|
||
return in_array($language, dbnToolsSupportedLanguages(), true) ? $language : 'en';
|
||
}
|
||
|
||
function dbnToolsCurrentLanguage(): string
|
||
{
|
||
if (isset($_GET['lang'])) {
|
||
$lang = dbnToolsNormalizeUiLanguage($_GET['lang']);
|
||
$_SESSION['dbn_tools_lang'] = $lang;
|
||
if (!headers_sent()) {
|
||
setcookie('dbn_tools_lang', $lang, [
|
||
'expires' => 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',
|
||
'hero_kicker' => 'AI Legal Tools · Norway · Free for members',
|
||
'stat_passages_indexed' => 'Legal passages indexed',
|
||
'explore_tools' => 'Explore tools ↓',
|
||
'tools_section_title' => 'Built for families navigating a complex system.',
|
||
'tools_section_sub' => 'Seven purpose-built AI tools — from audio transcription to deep legal research. Every tool processes your documents in memory and discards them when you\'re done.',
|
||
'learn_more' => 'Learn more →',
|
||
'pricing_nav_link' => 'Pricing →',
|
||
'why_ours_trust_link' => 'Why our tools give different answers than ChatGPT →',
|
||
'footer_tagline' => 'AI legal tools for families navigating Norwegian child-welfare cases.',
|
||
'footer_privacy_note' => 'Your documents are processed in memory and discarded when your session ends. Nothing is stored or retained.',
|
||
'footer_legal_lib' => 'Legal library',
|
||
'footer_report' => 'Report an issue',
|
||
'footer_about_caveau' => 'About CaveauAI',
|
||
'footer_disclaimer' => 'AI output is for advocacy support only — not legal advice. Always verify with a licensed Norwegian lawyer.',
|
||
'why_ours_strip_eyebrow' => 'Not ChatGPT. Not guesswork.',
|
||
'why_ours_strip_title' => 'Why our tools give you fundamentally different answers.',
|
||
'why_ours_strip_sub' => 'We search 220,000+ verified Norwegian legal passages on every query and cite what we find. General AI answers from memory.',
|
||
'why_ours_strip_p1' => 'Searches the actual law — not its training memory',
|
||
'why_ours_strip_p2' => 'Cites the exact passage found, every time',
|
||
'why_ours_strip_p3' => 'Fine-tuned on Norwegian child welfare law',
|
||
'why_ours_strip_cta' => 'Full explainer — how it works →',
|
||
'pricing_strip_eyebrow' => 'Plans & pricing',
|
||
'pricing_strip_title' => 'Start free. Upgrade when you need your own case.',
|
||
'pricing_strip_sub' => '30 free credits every month. Paid plans unlock private case storage — upload your documents and every tool references them.',
|
||
'pricing_strip_cta' => 'See all plans & pricing →',
|
||
// ── Nav + account + dashboard i18n (added 2026-05-23) ──────────
|
||
'nav_tools' => 'Tools',
|
||
'nav_dashboard' => 'Dashboard',
|
||
'nav_account' => 'Account',
|
||
'nav_login' => 'Log in',
|
||
'nav_logout' => 'Log out',
|
||
'credits_available' => 'Available credits',
|
||
'credits_monthly' => 'monthly',
|
||
'credits_bonus' => 'bonus',
|
||
'details_link' => 'Details',
|
||
'my_case' => 'My case',
|
||
'build_your_case' => 'Build your own case',
|
||
'upload_documents' => 'Upload documents',
|
||
'upgrade_from_plus' => 'Available from Plus NOK 129/month',
|
||
'my_corpus' => 'My corpus',
|
||
'open_corpus' => 'Open corpus',
|
||
'account_title' => 'Account',
|
||
'account_credits' => 'Credits & plan',
|
||
'account_profile' => 'Profile',
|
||
'account_team' => 'Team',
|
||
'account_usage' => 'Usage',
|
||
'renewal_date' => 'Next renewal',
|
||
'trial_active_label' => 'Trial active',
|
||
'trial_days_left' => 'days left',
|
||
'earn_credits_eyebrow'=> 'Earn 25 extra credits',
|
||
'survey_cta_text' => 'Answer 5 short questions — no sales pitch, just research.',
|
||
'survey_btn' => 'Take the survey',
|
||
'login_method_sso' => 'Google SSO',
|
||
'login_method_email' => 'Email & password',
|
||
'team_single_sso' => 'Single-user account (SSO)',
|
||
'usage_credits_used' => 'Credits used this month',
|
||
'usage_storage_used' => 'Storage used',
|
||
'usage_log_coming' => 'Detailed activity log coming soon',
|
||
'account_not_auth' => 'You must be logged in to view your account.',
|
||
// ── Corpus dashboard pages ────────────────────────────
|
||
'dash_nav_overview' => 'Overview',
|
||
'dash_nav_documents' => 'Documents',
|
||
'dash_nav_upload' => 'Upload',
|
||
'dash_nav_ask' => 'Ask',
|
||
'dash_nav_settings' => 'Settings',
|
||
'dash_page_subtitle' => 'My corpus',
|
||
'dash_title_overview' => 'My corpus',
|
||
'dash_lead_overview' => 'Private legal knowledge base. Upload, organise, ask — all kept to your account.',
|
||
'dash_title_docs' => 'Documents',
|
||
'dash_lead_docs' => 'All documents in your private corpus. Click to open, or select multiple for bulk actions.',
|
||
'dash_title_upload' => 'Upload documents',
|
||
'dash_lead_upload' => 'Upload PDF, DOCX, or TXT — or paste text or a URL. Content is chunked, embedded and indexed in your private corpus.',
|
||
'dash_title_chat' => 'Ask the corpus',
|
||
'dash_lead_chat' => 'Ask legal questions. Answers stream with citations from your corpus and the shared Do Better Norge package.',
|
||
'dash_title_settings' => 'Settings',
|
||
'dash_lead_settings' => 'Settings for your private corpus.',
|
||
'dash_title_document' => 'Document',
|
||
'dash_section_account' => 'Account',
|
||
'dash_label_client_id' => 'Client ID',
|
||
'dash_label_corpus_id' => 'Corpus ID',
|
||
'dash_label_user_id' => 'User ID',
|
||
'dash_section_rag' => 'RAG pipeline',
|
||
'dash_section_privacy' => 'Privacy',
|
||
'dash_privacy_p1' => 'Everything you upload or save here is kept to your account. Other users cannot see or search your documents. The shared package family-legal (~220 K passages of Norwegian law and case law) is shared and used to enrich answers with authoritative sources, but you own everything you add.',
|
||
'dash_privacy_p2a' => 'Delete individual documents from',
|
||
'dash_privacy_p2b' => 'To delete the whole account, contact support.',
|
||
'dash_upload_source' => 'Choose source',
|
||
'dash_upload_file_btn' => 'File',
|
||
'dash_upload_text_btn' => 'Paste text',
|
||
'dash_upload_drop_strong' => 'Drop file here, or click to browse',
|
||
'dash_upload_drop_small' => 'PDF · DOCX · TXT · max 8 MB · automatic OCR for scanned PDFs',
|
||
'dash_upload_title_lbl' => 'Title',
|
||
'dash_upload_title_ph' => 'Auto from filename if empty',
|
||
'dash_upload_category_lbl'=> 'Category',
|
||
'dash_upload_category_ph' => 'e.g. family law, child welfare',
|
||
'dash_upload_tags_lbl' => 'Tags',
|
||
'dash_upload_lang_lbl' => 'Language',
|
||
'dash_upload_content_lbl' => 'Content',
|
||
'dash_upload_content_ph' => 'Paste text here — at least 30 characters',
|
||
'dash_upload_note_title_ph'=> 'Give the note a title',
|
||
'dash_upload_url_ph' => 'https://lovdata.no/dokument/…',
|
||
'dash_upload_url_title_ph'=> 'Empty = uses URL',
|
||
'dash_upload_url_note' => 'URLs run in the background — check «Documents» for status.',
|
||
'dash_upload_btn_file' => 'Upload and index',
|
||
'dash_upload_btn_text' => 'Save to corpus',
|
||
'dash_upload_btn_url' => 'Fetch and index',
|
||
'dash_chat_disclaimer' => '⚖ Legal information and preparation support — not definitive legal advice. Always confirm with a lawyer.',
|
||
'dash_chat_placeholder' => 'e.g. «What does § 4-12 say about placement without consent?»',
|
||
'dash_filter_q_ph' => 'Search titles or tags…',
|
||
'dash_filter_all_status' => 'All statuses',
|
||
'dash_delete_selected' => 'Delete selected',
|
||
'dash_upload_btn_short' => '+ Upload',
|
||
'dash_prev' => '← Previous',
|
||
'dash_next' => 'Next →',
|
||
'js_locale' => 'en-GB',
|
||
'js_status_ready' => 'Ready',
|
||
'js_status_pending' => 'Pending',
|
||
'js_status_processing' => 'Processing',
|
||
'js_status_error' => 'Error',
|
||
'js_th_title' => 'Title',
|
||
'js_th_status' => 'Status',
|
||
'js_th_chunks' => 'Passages',
|
||
'js_th_added' => 'Added',
|
||
'js_th_category' => 'Category',
|
||
'js_loading' => 'Loading…',
|
||
'js_loading_docs' => 'Loading documents…',
|
||
'js_empty_docs' => 'No documents yet.',
|
||
'js_empty_docs_link' => 'Upload your first',
|
||
'js_empty_filter' => 'No results for selected filter.',
|
||
'js_error_loading' => 'Could not load: ',
|
||
'js_kpi_docs' => 'Documents',
|
||
'js_kpi_chunks' => 'Passages indexed',
|
||
'js_kpi_ready' => 'Ready',
|
||
'js_kpi_last' => 'Last upload',
|
||
'js_kpi_of_quota' => 'of quota',
|
||
'js_kpi_searchable' => 'searchable pieces',
|
||
'js_kpi_of_total' => 'of total',
|
||
'js_kpi_date_label' => 'date',
|
||
'js_get_started' => 'Get started',
|
||
'js_see_all' => 'See all →',
|
||
'js_recent_activity' => 'Recent activity',
|
||
'js_upload_docs_btn' => '📥 Upload documents',
|
||
'js_ask_btn' => '💬 Ask a legal question',
|
||
'js_browse_btn' => '📚 Browse corpus',
|
||
'js_pager_showing' => 'Showing {from}–{to} of {total}',
|
||
'js_delete_selected' => 'Delete selected',
|
||
'js_delete_n_selected' => 'Delete selected ({n})',
|
||
'js_delete_docs_confirm'=> 'Delete {n} documents? This cannot be undone.',
|
||
'js_prev' => '← Previous',
|
||
'js_next' => 'Next →',
|
||
'js_filter_all_status' => 'All statuses',
|
||
'js_filter_placeholder'=> 'Search titles or tags…',
|
||
'js_chat_thinking' => 'thinking…',
|
||
'js_chat_save' => '💾 Save to corpus',
|
||
'js_chat_copy' => '📋 Copy',
|
||
'js_chat_copied' => '✓ Copied',
|
||
'js_chat_passages_meta'=> '{n} passages',
|
||
'js_chat_save_unavail' => 'Save dialog unavailable.',
|
||
'js_tab_preview' => 'Preview',
|
||
'js_tab_chunks' => 'Passages',
|
||
'js_tab_related' => 'Related',
|
||
'js_tab_edit' => 'Edit',
|
||
'js_words' => 'words',
|
||
'js_passages_label' => 'passages',
|
||
'js_added_at' => 'added',
|
||
'js_tags_label' => 'Tags:',
|
||
'js_source_url_label' => 'Original source ↗',
|
||
'js_back' => '← Back',
|
||
'js_delete_btn' => 'Delete',
|
||
'js_save_changes' => 'Save changes',
|
||
'js_saving' => 'Saving…',
|
||
'js_saved_at' => 'Saved {time}',
|
||
'js_delete_doc_confirm'=> 'Delete this document permanently?',
|
||
'js_loading_related' => 'Loading related authorities from the graph…',
|
||
'js_no_citations' => 'No known citations in the graph database yet.',
|
||
'js_graph_unavailable' => 'Graph database is not available right now.',
|
||
'js_no_chunks' => 'No passages indexed yet.',
|
||
'js_content_empty' => '(empty)',
|
||
'js_doc_not_found' => 'Document not found',
|
||
'js_missing_doc_id' => 'Missing document ID.',
|
||
'js_upload_select_file'=> 'Select a file first.',
|
||
'js_upload_indexing' => 'Uploading and indexing…',
|
||
'js_upload_saving' => 'Indexing…',
|
||
'js_upload_queuing' => 'Queuing URL for fetching…',
|
||
'js_upload_drop_hint' => 'Drop file here, or click to browse',
|
||
'js_upload_indexed' => '✅ Indexed! {n} passages added.',
|
||
'js_upload_open_doc' => 'Open document',
|
||
'js_upload_queued' => '📥 Queued.',
|
||
'js_upload_follow_docs'=> 'Follow progress in Documents',
|
||
'js_upload_bg_done' => '✅ Background job done. {n} passages indexed.',
|
||
'js_field_title' => 'Title',
|
||
'js_field_category' => 'Category',
|
||
'js_field_tags' => 'Tags (comma-separated)',
|
||
'js_field_lang' => 'Language',
|
||
'js_field_author' => 'Author',
|
||
|
||
// ── Legal Analysis tool ───────────────────────────────────────────
|
||
'la_doc_type_label' => 'Document type',
|
||
'la_doc_type_auto' => 'Auto-detect',
|
||
'la_doc_type_other' => 'Other',
|
||
'la_engine_hint' => 'Engine: dbn-legal-agent-v3 (Norwegian legal fine-tune on GPU). Each issue answered separately; ~30-60s per issue, up to 5 issues per run.',
|
||
'la_input_label' => 'Pasted text',
|
||
'la_input_hint' => '(optional if file or doc selected)',
|
||
'la_input_placeholder' => 'Paste a case note, court decision, vedtak, letter, or any legal document text. You can also upload a file or select from My Docs above — at least one source is required.',
|
||
'la_run_button' => 'Run legal analysis',
|
||
'la_run_button_busy' => 'Running…',
|
||
'la_ready_title' => 'Ready',
|
||
'la_ready_intro' => 'Upload a document or paste text — the tool will extract up to 5 distinct legal issues, then ask the Norwegian-law fine-tune to answer each one with citations.',
|
||
'la_ready_pipeline' => 'Pass 1 uses Azure GPT-4o-mini to spot issues. Pass 2 calls the dbn-legal-agent-v3 fine-tune on ocelot for each one. Pass 3 synthesises the overall picture. A typical run takes 2-5 minutes.',
|
||
'la_pipeline_pass1' => 'Pass 1',
|
||
'la_pipeline_pass2' => 'Pass 2',
|
||
'la_pipeline_pass3' => 'Pass 3',
|
||
'la_pass1_extracting' => 'Extracting legal issues from your document…',
|
||
'la_pass1_found' => 'Found {n} legal issue(s)',
|
||
'la_pass2_asking' => 'Asking dbn-legal-agent-v3 about each issue…',
|
||
'la_pass2_answered' => 'Specialist answered {n} issue(s)',
|
||
'la_pass3_synthesis' => 'Synthesis complete',
|
||
'la_waiting' => 'Waiting…',
|
||
'la_searching_corpus' => 'Searching legal corpus…',
|
||
'la_asking_finetune' => 'Asking dbn-legal-agent-v3…',
|
||
'la_overall' => 'Overall assessment',
|
||
'la_next_steps' => 'Next steps',
|
||
'la_answer_header' => 'Answer',
|
||
'la_legal_basis' => 'Legal basis:',
|
||
'la_extracting_status' => 'Identifying distinct legal issues…',
|
||
'la_synthesising_status' => 'Synthesising overall assessment…',
|
||
'la_extracting_files' => 'Extracting text from {n} file(s)…',
|
||
'la_need_input' => 'Paste text, upload a file, or select a document before running.',
|
||
'la_error_prefix' => 'Error:',
|
||
'la_server_returned' => 'Server returned',
|
||
'la_empty_issues' => 'No discrete legal issues were identified.',
|
||
|
||
'la_addon_button' => '⚖️🇳🇴 Run deep legal analysis on this text',
|
||
'la_addon_button_busy' => 'Running deep legal analysis…',
|
||
'la_addon_section' => 'Deep Legal Analysis',
|
||
|
||
'lt_source_label' => 'Source language',
|
||
'lt_target_label' => 'Translate to',
|
||
'lt_doc_type_label' => 'Document type',
|
||
'lt_run_button' => 'Translate document',
|
||
'lt_run_button_busy' => 'Translating…',
|
||
'lt_input_label' => 'Paste text to translate',
|
||
'lt_input_hint' => '(optional if uploading files)',
|
||
'lt_input_placeholder' => 'Paste Norwegian legal text here…',
|
||
'lt_translating_status' => 'Translating…',
|
||
'lt_ready_title' => 'Ready to translate',
|
||
'lt_ready_intro' => 'Upload a PDF, DOCX or TXT, or paste text below.',
|
||
'lt_result_title' => 'Translation',
|
||
'lt_annotations_title' => 'Legal term notes',
|
||
'lt_copy_button' => 'Copy translation',
|
||
'lt_copy_done' => 'Copied!',
|
||
'lt_need_input' => 'Please paste text or upload a file.',
|
||
'lt_error_prefix' => 'Error',
|
||
'lt_server_returned' => 'Server returned',
|
||
'lt_extracting_files' => 'Extracting text from {n} file(s)…',
|
||
'lt_engine_hint' => 'Engine: Azure GPT-4o · Legal documents are processed in memory and never stored.',
|
||
'lt_same_lang_error' => 'Source and target languages must be different.',
|
||
'lt_disclaimer' => 'This is an AI-assisted translation. Always verify with a qualified legal interpreter for official use.',
|
||
],
|
||
'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',
|
||
'hero_kicker' => 'Juridiske AI-verktøy · Norge · Gratis for medlemmer',
|
||
'stat_passages_indexed' => 'juridiske tekstutdrag indeksert',
|
||
'explore_tools' => 'Utforsk verktøy ↓',
|
||
'tools_section_title' => 'Laget for familier som navigerer i et komplekst system.',
|
||
'tools_section_sub' => 'Syv spesialbygde AI-verktøy — fra lydtranskripsjon til dyp juridisk forskning. Hvert verktøy behandler dokumentene dine i minnet og sletter dem når du er ferdig.',
|
||
'learn_more' => 'Les mer →',
|
||
'pricing_nav_link' => 'Priser →',
|
||
'why_ours_trust_link' => 'Hvorfor verktøyene våre gir andre svar enn ChatGPT →',
|
||
'footer_tagline' => 'Juridiske AI-verktøy for familier i norske barnevernssaker.',
|
||
'footer_privacy_note' => 'Dokumentene dine behandles i minnet og slettes når økten avsluttes. Ingenting lagres.',
|
||
'footer_legal_lib' => 'Juridisk bibliotek',
|
||
'footer_report' => 'Rapporter et problem',
|
||
'footer_about_caveau' => 'Om CaveauAI',
|
||
'footer_disclaimer' => 'KI-resultater er kun til støtte for saksforberedelse — ikke juridisk rådgivning. Bekreft alltid med en norsk advokat.',
|
||
'why_ours_strip_eyebrow' => 'Ikke ChatGPT. Ikke gjetning.',
|
||
'why_ours_strip_title' => 'Hvorfor verktøyene våre gir deg grunnleggende andre svar.',
|
||
'why_ours_strip_sub' => 'Vi søker i 220 000+ verifiserte norske juridiske tekstutdrag ved hvert spørsmål og siterer det vi finner. Generell KI svarer fra hukommelsen.',
|
||
'why_ours_strip_p1' => 'Søker i faktisk lovverk — ikke treningshukommelsen',
|
||
'why_ours_strip_p2' => 'Siterer det eksakte utdraget funnet, hver gang',
|
||
'why_ours_strip_p3' => 'Finjustert på norsk barnevernrett',
|
||
'why_ours_strip_cta' => 'Full forklaring — slik fungerer det →',
|
||
'pricing_strip_eyebrow' => 'Planer og priser',
|
||
'pricing_strip_title' => 'Start gratis. Oppgrader når du trenger din egen sak.',
|
||
'pricing_strip_sub' => '30 gratis kreditter hver måned. Betalte planer låser opp privat sakslager — last opp dokumentene og alle verktøy refererer til dem.',
|
||
'pricing_strip_cta' => 'Se alle planer og priser →',
|
||
// ── Nav + account + dashboard i18n ──────────────────────────────
|
||
'nav_tools' => 'Verktøy',
|
||
'nav_dashboard' => 'Oversikt',
|
||
'nav_account' => 'Konto',
|
||
'nav_login' => 'Logg inn',
|
||
'nav_logout' => 'Logg ut',
|
||
'credits_available' => 'Tilgjengelige kreditter',
|
||
'credits_monthly' => 'månedlige',
|
||
'credits_bonus' => 'bonus',
|
||
'details_link' => 'Detaljer',
|
||
'my_case' => 'Min sak',
|
||
'build_your_case' => 'Bygg din egen sak',
|
||
'upload_documents' => 'Last opp dokumenter',
|
||
'upgrade_from_plus' => 'Tilgjengelig fra Plus 129 kr/mnd',
|
||
'my_corpus' => 'Min korpus',
|
||
'open_corpus' => 'Åpne korpus',
|
||
'account_title' => 'Konto',
|
||
'account_credits' => 'Kreditter og plan',
|
||
'account_profile' => 'Profil',
|
||
'account_team' => 'Team',
|
||
'account_usage' => 'Bruk',
|
||
'renewal_date' => 'Neste fornyelse',
|
||
'trial_active_label' => 'Prøveperiode aktiv',
|
||
'trial_days_left' => 'dager igjen',
|
||
'earn_credits_eyebrow'=> 'Tjen 25 ekstra kreditter',
|
||
'survey_cta_text' => 'Svar på 5 korte spørsmål — ingen salgspitch, bare research.',
|
||
'survey_btn' => 'Ta undersøkelsen',
|
||
'login_method_sso' => 'Google SSO',
|
||
'login_method_email' => 'E-post og passord',
|
||
'team_single_sso' => 'Enkeltbrukerkonto (SSO)',
|
||
'usage_credits_used' => 'Kreditter brukt denne måneden',
|
||
'usage_storage_used' => 'Lagring brukt',
|
||
'usage_log_coming' => 'Detaljert aktivitetslogg kommer snart',
|
||
'account_not_auth' => 'Du må være innlogget for å se kontoen din.',
|
||
'dash_nav_overview' => 'Oversikt',
|
||
'dash_nav_documents' => 'Dokumenter',
|
||
'dash_nav_upload' => 'Last opp',
|
||
'dash_nav_ask' => 'Spør',
|
||
'dash_nav_settings' => 'Innstillinger',
|
||
'dash_page_subtitle' => 'Min korpus',
|
||
'dash_title_overview' => 'Min korpus',
|
||
'dash_lead_overview' => 'Privat juridisk kunnskapsbase. Last opp, organiser, spør — alt holdes til din konto.',
|
||
'dash_title_docs' => 'Dokumenter',
|
||
'dash_lead_docs' => 'Alle dokumenter i din private korpus. Klikk for å åpne, eller velg flere for bulk-handlinger.',
|
||
'dash_title_upload' => 'Last opp dokumenter',
|
||
'dash_lead_upload' => 'Last opp PDF, DOCX, eller TXT — eller lim inn tekst eller en URL. Innholdet chunkes, embedes og indekseres i din private korpus.',
|
||
'dash_title_chat' => 'Spør korpuset',
|
||
'dash_lead_chat' => 'Still juridiske spørsmål. Svar streames med kildehenvisninger til ditt eget korpus og delt Do Better Norge-pakke.',
|
||
'dash_title_settings' => 'Innstillinger',
|
||
'dash_lead_settings' => 'Innstillinger for ditt private korpus.',
|
||
'dash_title_document' => 'Dokument',
|
||
'dash_section_account' => 'Konto',
|
||
'dash_label_client_id' => 'Klient-ID',
|
||
'dash_label_corpus_id' => 'Korpus-ID',
|
||
'dash_label_user_id' => 'Bruker-ID',
|
||
'dash_section_rag' => 'RAG-pipeline',
|
||
'dash_section_privacy' => 'Personvern',
|
||
'dash_privacy_p1' => 'Alt du laster opp eller lagrer her holdes til din konto. Andre brukere kan ikke se eller søke i dine dokumenter. Felles-pakken family-legal (~220K passasjer av norsk lovverk og rettspraksis) er delt og brukes for å berike svar med autoritative kilder, men du eier alt du selv legger inn.',
|
||
'dash_privacy_p2a' => 'Slett enkelt-dokumenter fra',
|
||
'dash_privacy_p2b' => 'Trenger du å slette hele kontoen, kontakt support.',
|
||
'dash_upload_source' => 'Velg kilde',
|
||
'dash_upload_file_btn' => 'Fil',
|
||
'dash_upload_text_btn' => 'Lim inn tekst',
|
||
'dash_upload_drop_strong' => 'Slipp filen her, eller klikk for å bla',
|
||
'dash_upload_drop_small' => 'PDF · DOCX · TXT · maks 8 MB · automatisk OCR for skannede PDF-er',
|
||
'dash_upload_title_lbl' => 'Tittel',
|
||
'dash_upload_title_ph' => 'Auto fra filnavn om tom',
|
||
'dash_upload_category_lbl'=> 'Kategori',
|
||
'dash_upload_category_ph' => 'f.eks. barnevern, familierett',
|
||
'dash_upload_tags_lbl' => 'Tagger',
|
||
'dash_upload_lang_lbl' => 'Språk',
|
||
'dash_upload_content_lbl' => 'Innhold',
|
||
'dash_upload_content_ph' => 'Lim inn tekst her — minst 30 tegn',
|
||
'dash_upload_note_title_ph'=> 'Gi notatet en tittel',
|
||
'dash_upload_url_ph' => 'https://lovdata.no/dokument/…',
|
||
'dash_upload_url_title_ph'=> 'Tom = bruker URL',
|
||
'dash_upload_url_note' => 'URLer kjøres i bakgrunnen — sjekk «Dokumenter» for status.',
|
||
'dash_upload_btn_file' => 'Last opp og indekser',
|
||
'dash_upload_btn_text' => 'Lagre i korpus',
|
||
'dash_upload_btn_url' => 'Hent og indekser',
|
||
'dash_chat_disclaimer' => '⚖ Juridisk informasjon og forberedelsesstøtte — ikke endelig juridisk rådgivning. Bekreft alltid med advokat.',
|
||
'dash_chat_placeholder' => 'f.eks. «Hva sier barnevernloven § 4-12 om plassering uten samtykke?»',
|
||
'dash_filter_q_ph' => 'Søk i titler eller tagger…',
|
||
'dash_filter_all_status' => 'Alle statuser',
|
||
'dash_delete_selected' => 'Slett valgte',
|
||
'dash_upload_btn_short' => '+ Last opp',
|
||
'dash_prev' => '← Forrige',
|
||
'dash_next' => 'Neste →',
|
||
'js_locale' => 'nb-NO',
|
||
'js_status_ready' => 'Klar',
|
||
'js_status_pending' => 'Venter',
|
||
'js_status_processing' => 'Behandler',
|
||
'js_status_error' => 'Feil',
|
||
'js_th_title' => 'Tittel',
|
||
'js_th_status' => 'Status',
|
||
'js_th_chunks' => 'Passasjer',
|
||
'js_th_added' => 'Lagt til',
|
||
'js_th_category' => 'Kategori',
|
||
'js_loading' => 'Laster…',
|
||
'js_loading_docs' => 'Laster dokumenter…',
|
||
'js_empty_docs' => 'Ingen dokumenter ennå.',
|
||
'js_empty_docs_link' => 'Last opp ditt første',
|
||
'js_empty_filter' => 'Ingen treff for valgt filter.',
|
||
'js_error_loading' => 'Kunne ikke laste: ',
|
||
'js_kpi_docs' => 'Dokumenter',
|
||
'js_kpi_chunks' => 'Passasjer indeksert',
|
||
'js_kpi_ready' => 'Klare',
|
||
'js_kpi_last' => 'Siste opplasting',
|
||
'js_kpi_of_quota' => 'av kvote',
|
||
'js_kpi_searchable' => 'søkbare biter',
|
||
'js_kpi_of_total' => 'av totalt',
|
||
'js_kpi_date_label' => 'dato',
|
||
'js_get_started' => 'Kom i gang',
|
||
'js_see_all' => 'Se alle →',
|
||
'js_recent_activity' => 'Nylig aktivitet',
|
||
'js_upload_docs_btn' => '📥 Last opp dokumenter',
|
||
'js_ask_btn' => '💬 Still et juridisk spørsmål',
|
||
'js_browse_btn' => '📚 Bla gjennom korpus',
|
||
'js_pager_showing' => 'Viser {from}–{to} av {total}',
|
||
'js_delete_selected' => 'Slett valgte',
|
||
'js_delete_n_selected' => 'Slett valgte ({n})',
|
||
'js_delete_docs_confirm'=> 'Slette {n} dokumenter? Dette kan ikke angres.',
|
||
'js_prev' => '← Forrige',
|
||
'js_next' => 'Neste →',
|
||
'js_filter_all_status' => 'Alle statuser',
|
||
'js_filter_placeholder'=> 'Søk i titler eller tagger…',
|
||
'js_chat_thinking' => 'tenker…',
|
||
'js_chat_save' => '💾 Lagre i korpus',
|
||
'js_chat_copy' => '📋 Kopier',
|
||
'js_chat_copied' => '✓ Kopiert',
|
||
'js_chat_passages_meta'=> '{n} passasjer',
|
||
'js_chat_save_unavail' => 'Lagre-dialog ikke tilgjengelig.',
|
||
'js_tab_preview' => 'Forhåndsvisning',
|
||
'js_tab_chunks' => 'Passasjer',
|
||
'js_tab_related' => 'Relatert',
|
||
'js_tab_edit' => 'Rediger',
|
||
'js_words' => 'ord',
|
||
'js_passages_label' => 'passasjer',
|
||
'js_added_at' => 'lagt til',
|
||
'js_tags_label' => 'Tagger:',
|
||
'js_source_url_label' => 'Original kilde ↗',
|
||
'js_back' => '← Tilbake',
|
||
'js_delete_btn' => 'Slett',
|
||
'js_save_changes' => 'Lagre endringer',
|
||
'js_saving' => 'Lagrer…',
|
||
'js_saved_at' => 'Lagret {time}',
|
||
'js_delete_doc_confirm'=> 'Slette dette dokumentet permanent?',
|
||
'js_loading_related' => 'Laster relaterte autoriteter fra graphen…',
|
||
'js_no_citations' => 'Dokumentet har ingen kjente siteringer i graf-databasen ennå.',
|
||
'js_graph_unavailable' => 'Graf-databasen er ikke tilgjengelig akkurat nå.',
|
||
'js_no_chunks' => 'Ingen passasjer indeksert ennå.',
|
||
'js_content_empty' => '(tom)',
|
||
'js_doc_not_found' => 'Dokument ikke funnet',
|
||
'js_missing_doc_id' => 'Mangler dokument-id.',
|
||
'js_upload_select_file'=> 'Velg en fil først.',
|
||
'js_upload_indexing' => 'Laster opp og indekserer…',
|
||
'js_upload_saving' => 'Indekserer…',
|
||
'js_upload_queuing' => 'Køer URL for henting…',
|
||
'js_upload_drop_hint' => 'Slipp filen her, eller klikk for å bla',
|
||
'js_upload_indexed' => '✅ Indeksert! {n} passasjer lagt til.',
|
||
'js_upload_open_doc' => 'Åpne dokument',
|
||
'js_upload_queued' => '📥 Lagt i kø.',
|
||
'js_upload_follow_docs'=> 'Følg fremdriften i Dokumenter',
|
||
'js_upload_bg_done' => '✅ Bakgrunnsjobb ferdig. {n} passasjer indeksert.',
|
||
'js_field_title' => 'Tittel',
|
||
'js_field_category' => 'Kategori',
|
||
'js_field_tags' => 'Tagger (komma-separert)',
|
||
'js_field_lang' => 'Språk',
|
||
'js_field_author' => 'Forfatter',
|
||
|
||
// ── Juridisk analyse ──────────────────────────────────────────────
|
||
'la_doc_type_label' => 'Dokumenttype',
|
||
'la_doc_type_auto' => 'Auto-oppdaging',
|
||
'la_doc_type_other' => 'Annet',
|
||
'la_engine_hint' => 'Motor: dbn-legal-agent-v3 (norsk juridisk fine-tune på GPU). Hvert spørsmål besvares hver for seg; ~30-60s per spørsmål, opp til 5 spørsmål per kjøring.',
|
||
'la_input_label' => 'Limt inn tekst',
|
||
'la_input_hint' => '(valgfritt hvis fil eller dokument er valgt)',
|
||
'la_input_placeholder' => 'Lim inn et saksnotat, rettsavgjørelse, vedtak, brev eller annen juridisk dokumenttekst. Du kan også laste opp en fil eller velge fra Mine dokumenter ovenfor — minst én kilde kreves.',
|
||
'la_run_button' => 'Kjør juridisk analyse',
|
||
'la_run_button_busy' => 'Kjører…',
|
||
'la_ready_title' => 'Klar',
|
||
'la_ready_intro' => 'Last opp et dokument eller lim inn tekst — verktøyet henter ut opptil 5 distinkte juridiske spørsmål og lar den norske fine-tunen svare på hvert enkelt med kilder.',
|
||
'la_ready_pipeline' => 'Pass 1 bruker Azure GPT-4o-mini for å identifisere spørsmål. Pass 2 kaller dbn-legal-agent-v3 fine-tunen på ocelot for hvert spørsmål. Pass 3 sammenfatter helhetsbildet. En typisk kjøring tar 2-5 minutter.',
|
||
'la_pipeline_pass1' => 'Pass 1',
|
||
'la_pipeline_pass2' => 'Pass 2',
|
||
'la_pipeline_pass3' => 'Pass 3',
|
||
'la_pass1_extracting' => 'Henter ut juridiske spørsmål fra dokumentet…',
|
||
'la_pass1_found' => 'Fant {n} juridisk(e) spørsmål',
|
||
'la_pass2_asking' => 'Spør dbn-legal-agent-v3 om hvert spørsmål…',
|
||
'la_pass2_answered' => 'Spesialisten besvarte {n} spørsmål',
|
||
'la_pass3_synthesis' => 'Syntese fullført',
|
||
'la_waiting' => 'Venter…',
|
||
'la_searching_corpus' => 'Søker i juridisk korpus…',
|
||
'la_asking_finetune' => 'Spør dbn-legal-agent-v3…',
|
||
'la_overall' => 'Helhetsvurdering',
|
||
'la_next_steps' => 'Neste skritt',
|
||
'la_answer_header' => 'Svar',
|
||
'la_legal_basis' => 'Lovgrunnlag:',
|
||
'la_extracting_status' => 'Identifiserer distinkte juridiske spørsmål…',
|
||
'la_synthesising_status' => 'Sammenfatter helhetsvurdering…',
|
||
'la_extracting_files' => 'Henter ut tekst fra {n} fil(er)…',
|
||
'la_need_input' => 'Lim inn tekst, last opp en fil eller velg et dokument før du kjører.',
|
||
'la_error_prefix' => 'Feil:',
|
||
'la_server_returned' => 'Server svarte',
|
||
'la_empty_issues' => 'Ingen distinkte juridiske spørsmål ble identifisert.',
|
||
|
||
'la_addon_button' => '⚖️🇳🇴 Kjør dyp juridisk analyse på denne teksten',
|
||
'la_addon_button_busy' => 'Kjører dyp juridisk analyse…',
|
||
'la_addon_section' => 'Dyp juridisk analyse',
|
||
|
||
'lt_source_label' => 'Kildespråk',
|
||
'lt_target_label' => 'Oversett til',
|
||
'lt_doc_type_label' => 'Dokumenttype',
|
||
'lt_run_button' => 'Oversett dokument',
|
||
'lt_run_button_busy' => 'Oversetter…',
|
||
'lt_input_label' => 'Lim inn tekst som skal oversettes',
|
||
'lt_input_hint' => '(valgfritt ved filopplasting)',
|
||
'lt_input_placeholder' => 'Lim inn norsk juridisk tekst her…',
|
||
'lt_translating_status' => 'Oversetter…',
|
||
'lt_ready_title' => 'Klar til å oversette',
|
||
'lt_ready_intro' => 'Last opp PDF, DOCX eller TXT, eller lim inn tekst nedenfor.',
|
||
'lt_result_title' => 'Oversettelse',
|
||
'lt_annotations_title' => 'Juridiske termer',
|
||
'lt_copy_button' => 'Kopier oversettelse',
|
||
'lt_copy_done' => 'Kopiert!',
|
||
'lt_need_input' => 'Lim inn tekst eller last opp en fil.',
|
||
'lt_error_prefix' => 'Feil',
|
||
'lt_server_returned' => 'Serveren svarte',
|
||
'lt_extracting_files' => 'Henter tekst fra {n} fil(er)…',
|
||
'lt_engine_hint' => 'Motor: Azure GPT-4o · Juridiske dokumenter behandles i minnet og lagres aldri.',
|
||
'lt_same_lang_error' => 'Kilde- og målspråk må være forskjellige.',
|
||
'lt_disclaimer' => 'Dette er en AI-assistert oversettelse. Verifiser alltid med en kvalifisert juridisk tolk til offisielt bruk.',
|
||
],
|
||
'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' => 'кредитів',
|
||
'hero_kicker' => 'Правові AI-інструменти · Норвегія · Безкоштовно для членів',
|
||
'stat_passages_indexed' => 'правових уривків проіндексовано',
|
||
'explore_tools' => 'Дослідити інструменти ↓',
|
||
'tools_section_title' => 'Створено для сімей, що долають складну систему.',
|
||
'tools_section_sub' => 'Сім спеціально розроблених AI-інструментів — від транскрипції аудіо до глибоких правових досліджень. Кожен інструмент обробляє ваші документи в пам\'яті та відкидає їх після завершення.',
|
||
'learn_more' => 'Дізнатися більше →',
|
||
'pricing_nav_link' => 'Ціни →',
|
||
'why_ours_trust_link' => 'Чому наші інструменти дають інші відповіді, ніж ChatGPT →',
|
||
'footer_tagline' => 'Правові AI-інструменти для сімей у норвезьких справах про захист дітей.',
|
||
'footer_privacy_note' => 'Ваші документи обробляються в пам\'яті та видаляються після завершення сеансу. Нічого не зберігається.',
|
||
'footer_legal_lib' => 'Правова бібліотека',
|
||
'footer_report' => 'Повідомити про проблему',
|
||
'footer_about_caveau' => 'Про CaveauAI',
|
||
'footer_disclaimer' => 'Вихідні дані AI призначені лише для підтримки підготовки справи — не для юридичних порад. Завжди перевіряйте у ліцензованого норвезького юриста.',
|
||
'why_ours_strip_eyebrow' => 'Не ChatGPT. Не здогадки.',
|
||
'why_ours_strip_title' => 'Чому наші інструменти дають вам принципово інші відповіді.',
|
||
'why_ours_strip_sub' => 'Ми шукаємо в 220 000+ перевірених норвезьких правових уривках при кожному запиті та цитуємо те, що знаходимо. Загальний AI відповідає з пам\'яті.',
|
||
'why_ours_strip_p1' => 'Шукає в реальному праві — не в пам\'яті навчання',
|
||
'why_ours_strip_p2' => 'Цитує точний знайдений уривок, щоразу',
|
||
'why_ours_strip_p3' => 'Дотренований на норвезькому праві захисту дітей',
|
||
'why_ours_strip_cta' => 'Повне пояснення — як це працює →',
|
||
'pricing_strip_eyebrow' => 'Плани та ціни',
|
||
'pricing_strip_title' => 'Починайте безкоштовно. Оновлюйтеся, коли потрібна власна справа.',
|
||
'pricing_strip_sub' => '30 безкоштовних кредитів щомісяця. Платні плани відкривають приватне сховище справи — завантажте документи, і кожен інструмент посилається на них.',
|
||
'pricing_strip_cta' => 'Переглянути всі плани та ціни →',
|
||
// ── Nav + account + dashboard i18n ──────────────────────────────
|
||
'nav_tools' => 'Інструменти',
|
||
'nav_dashboard' => 'Огляд',
|
||
'nav_account' => 'Обліковий запис',
|
||
'nav_login' => 'Увійти',
|
||
'nav_logout' => 'Вийти',
|
||
'credits_available' => 'Доступні кредити',
|
||
'credits_monthly' => 'щомісячні',
|
||
'credits_bonus' => 'бонусні',
|
||
'details_link' => 'Деталі',
|
||
'my_case' => 'Моя справа',
|
||
'build_your_case' => 'Побудуйте власну справу',
|
||
'upload_documents' => 'Завантажити документи',
|
||
'upgrade_from_plus' => 'Доступно з Plus NOK 129/місяць',
|
||
'my_corpus' => 'Мій корпус',
|
||
'open_corpus' => 'Відкрити корпус',
|
||
'account_title' => 'Обліковий запис',
|
||
'account_credits' => 'Кредити та план',
|
||
'account_profile' => 'Профіль',
|
||
'account_team' => 'Команда',
|
||
'account_usage' => 'Використання',
|
||
'renewal_date' => 'Наступне оновлення',
|
||
'trial_active_label' => 'Пробний період активний',
|
||
'trial_days_left' => 'днів залишилось',
|
||
'earn_credits_eyebrow'=> 'Заробіть 25 додаткових кредитів',
|
||
'survey_cta_text' => 'Дайте відповідь на 5 коротких запитань — без реклами, лише дослідження.',
|
||
'survey_btn' => 'Пройти опитування',
|
||
'login_method_sso' => 'Google SSO',
|
||
'login_method_email' => 'Email та пароль',
|
||
'team_single_sso' => 'Одноосібний обліковий запис (SSO)',
|
||
'usage_credits_used' => 'Кредити використано цього місяця',
|
||
'usage_storage_used' => 'Використано сховища',
|
||
'usage_log_coming' => 'Детальний журнал активності незабаром',
|
||
'account_not_auth' => 'Увійдіть, щоб переглянути свій обліковий запис.',
|
||
'dash_nav_overview' => 'Огляд',
|
||
'dash_nav_documents' => 'Документи',
|
||
'dash_nav_upload' => 'Завантажити',
|
||
'dash_nav_ask' => 'Запитати',
|
||
'dash_nav_settings' => 'Налаштування',
|
||
'dash_page_subtitle' => 'Мій корпус',
|
||
'dash_title_overview' => 'Мій корпус',
|
||
'dash_lead_overview' => 'Приватна юридична база знань. Завантажуйте, організовуйте, запитуйте — все зберігається на вашому рахунку.',
|
||
'dash_title_docs' => 'Документи',
|
||
'dash_lead_docs' => 'Усі документи у вашому приватному корпусі. Натисніть, щоб відкрити, або виберіть кілька для групових дій.',
|
||
'dash_title_upload' => 'Завантажити документи',
|
||
'dash_lead_upload' => 'Завантажте PDF, DOCX або TXT — або вставте текст чи URL. Вміст розбивається на частини, векторизується та індексується у вашому приватному корпусі.',
|
||
'dash_title_chat' => 'Запитати корпус',
|
||
'dash_lead_chat' => 'Ставте юридичні запитання. Відповіді виводяться потоком з посиланнями на ваш корпус та спільний пакет Do Better Norge.',
|
||
'dash_title_settings' => 'Налаштування',
|
||
'dash_lead_settings' => 'Налаштування вашого приватного корпусу.',
|
||
'dash_title_document' => 'Документ',
|
||
'dash_section_account' => 'Обліковий запис',
|
||
'dash_label_client_id' => 'ID клієнта',
|
||
'dash_label_corpus_id' => 'ID корпусу',
|
||
'dash_label_user_id' => 'ID користувача',
|
||
'dash_section_rag' => 'RAG-конвеєр',
|
||
'dash_section_privacy' => 'Конфіденційність',
|
||
'dash_privacy_p1' => 'Все, що ви завантажуєте або зберігаєте тут, належить вашому рахунку. Інші користувачі не можуть бачити або шукати у ваших документах. Спільний пакет family-legal (~220 тис. уривків норвезького законодавства) є спільним і використовується для збагачення відповідей авторитетними джерелами, але ви є власником всього, що ви самі додаєте.',
|
||
'dash_privacy_p2a' => 'Видаляйте окремі документи з',
|
||
'dash_privacy_p2b' => 'Щоб видалити весь обліковий запис, зверніться до підтримки.',
|
||
'dash_upload_source' => 'Виберіть джерело',
|
||
'dash_upload_file_btn' => 'Файл',
|
||
'dash_upload_text_btn' => 'Вставити текст',
|
||
'dash_upload_drop_strong' => 'Перетягніть файл сюди або натисніть для перегляду',
|
||
'dash_upload_drop_small' => 'PDF · DOCX · TXT · макс. 8 МБ · автоматичний OCR для сканованих PDF',
|
||
'dash_upload_title_lbl' => 'Назва',
|
||
'dash_upload_title_ph' => 'Авто з імені файлу, якщо порожньо',
|
||
'dash_upload_category_lbl'=> 'Категорія',
|
||
'dash_upload_category_ph' => 'напр. сімейне право, захист дітей',
|
||
'dash_upload_tags_lbl' => 'Теги',
|
||
'dash_upload_lang_lbl' => 'Мова',
|
||
'dash_upload_content_lbl' => 'Зміст',
|
||
'dash_upload_content_ph' => 'Вставте текст тут — мінімум 30 символів',
|
||
'dash_upload_note_title_ph'=> 'Дайте нотатці назву',
|
||
'dash_upload_url_ph' => 'https://lovdata.no/dokument/…',
|
||
'dash_upload_url_title_ph'=> 'Порожньо = використовує URL',
|
||
'dash_upload_url_note' => 'URL обробляються у фоні — перевіряйте «Документи» для статусу.',
|
||
'dash_upload_btn_file' => 'Завантажити та індексувати',
|
||
'dash_upload_btn_text' => 'Зберегти в корпус',
|
||
'dash_upload_btn_url' => 'Отримати та індексувати',
|
||
'dash_chat_disclaimer' => '⚖ Юридична інформація та підтримка підготовки — не остаточна юридична порада. Завжди підтверджуйте з адвокатом.',
|
||
'dash_chat_placeholder' => 'напр. «Що говорить § 4-12 про розміщення без згоди?»',
|
||
'dash_filter_q_ph' => 'Пошук у назвах або тегах…',
|
||
'dash_filter_all_status' => 'Всі статуси',
|
||
'dash_delete_selected' => 'Видалити вибрані',
|
||
'dash_upload_btn_short' => '+ Завантажити',
|
||
'dash_prev' => '← Попередня',
|
||
'dash_next' => 'Наступна →',
|
||
'js_locale' => 'uk-UA',
|
||
'js_status_ready' => 'Готово',
|
||
'js_status_pending' => 'Очікує',
|
||
'js_status_processing' => 'Обробляється',
|
||
'js_status_error' => 'Помилка',
|
||
'js_th_title' => 'Назва',
|
||
'js_th_status' => 'Статус',
|
||
'js_th_chunks' => 'Уривки',
|
||
'js_th_added' => 'Додано',
|
||
'js_th_category' => 'Категорія',
|
||
'js_loading' => 'Завантаження…',
|
||
'js_loading_docs' => 'Завантаження документів…',
|
||
'js_empty_docs' => 'Документів ще немає.',
|
||
'js_empty_docs_link' => 'Завантажте перший',
|
||
'js_empty_filter' => 'Немає результатів для вибраного фільтра.',
|
||
'js_error_loading' => 'Не вдалося завантажити: ',
|
||
'js_kpi_docs' => 'Документи',
|
||
'js_kpi_chunks' => 'Уривки індексовано',
|
||
'js_kpi_ready' => 'Готово',
|
||
'js_kpi_last' => 'Останнє завантаження',
|
||
'js_kpi_of_quota' => 'з квоти',
|
||
'js_kpi_searchable' => 'пошукових частин',
|
||
'js_kpi_of_total' => 'із загальної кількості',
|
||
'js_kpi_date_label' => 'дата',
|
||
'js_get_started' => 'Почати',
|
||
'js_see_all' => 'Переглянути все →',
|
||
'js_recent_activity' => 'Остання активність',
|
||
'js_upload_docs_btn' => '📥 Завантажити документи',
|
||
'js_ask_btn' => '💬 Поставити юридичне запитання',
|
||
'js_browse_btn' => '📚 Переглянути корпус',
|
||
'js_pager_showing' => 'Показано {from}–{to} з {total}',
|
||
'js_delete_selected' => 'Видалити вибрані',
|
||
'js_delete_n_selected' => 'Видалити вибрані ({n})',
|
||
'js_delete_docs_confirm'=> 'Видалити {n} документи? Це не можна скасувати.',
|
||
'js_prev' => '← Попередня',
|
||
'js_next' => 'Наступна →',
|
||
'js_filter_all_status' => 'Всі статуси',
|
||
'js_filter_placeholder'=> 'Пошук у назвах або тегах…',
|
||
'js_chat_thinking' => 'думаю…',
|
||
'js_chat_save' => '💾 Зберегти в корпус',
|
||
'js_chat_copy' => '📋 Копіювати',
|
||
'js_chat_copied' => '✓ Скопійовано',
|
||
'js_chat_passages_meta'=> '{n} уривків',
|
||
'js_chat_save_unavail' => 'Діалог збереження недоступний.',
|
||
'js_tab_preview' => 'Попередній перегляд',
|
||
'js_tab_chunks' => 'Уривки',
|
||
'js_tab_related' => "Пов'язані",
|
||
'js_tab_edit' => 'Редагувати',
|
||
'js_words' => 'слів',
|
||
'js_passages_label' => 'уривків',
|
||
'js_added_at' => 'додано',
|
||
'js_tags_label' => 'Теги:',
|
||
'js_source_url_label' => 'Оригінальне джерело ↗',
|
||
'js_back' => '← Назад',
|
||
'js_delete_btn' => 'Видалити',
|
||
'js_save_changes' => 'Зберегти зміни',
|
||
'js_saving' => 'Збереження…',
|
||
'js_saved_at' => 'Збережено {time}',
|
||
'js_delete_doc_confirm'=> 'Видалити цей документ назавжди?',
|
||
'js_loading_related' => 'Завантаження пов\'язаних авторитетів з графу…',
|
||
'js_no_citations' => 'Відомих цитувань у базі графів поки немає.',
|
||
'js_graph_unavailable' => 'База графів зараз недоступна.',
|
||
'js_no_chunks' => 'Уривки ще не індексовано.',
|
||
'js_content_empty' => '(порожньо)',
|
||
'js_doc_not_found' => 'Документ не знайдено',
|
||
'js_missing_doc_id' => 'Відсутній ідентифікатор документа.',
|
||
'js_upload_select_file'=> 'Спочатку виберіть файл.',
|
||
'js_upload_indexing' => 'Завантаження та індексування…',
|
||
'js_upload_saving' => 'Індексування…',
|
||
'js_upload_queuing' => 'Додавання URL у чергу…',
|
||
'js_upload_drop_hint' => 'Перетягніть файл сюди або натисніть для перегляду',
|
||
'js_upload_indexed' => '✅ Індексовано! {n} уривків додано.',
|
||
'js_upload_open_doc' => 'Відкрити документ',
|
||
'js_upload_queued' => '📥 Додано до черги.',
|
||
'js_upload_follow_docs'=> 'Стежте за прогресом у Документах',
|
||
'js_upload_bg_done' => '✅ Фонове завдання виконано. {n} уривків індексовано.',
|
||
'js_field_title' => 'Назва',
|
||
'js_field_category' => 'Категорія',
|
||
'js_field_tags' => 'Теги (через кому)',
|
||
'js_field_lang' => 'Мова',
|
||
'js_field_author' => 'Автор',
|
||
|
||
// ── Юридичний аналіз ──────────────────────────────────────────────
|
||
'la_doc_type_label' => 'Тип документа',
|
||
'la_doc_type_auto' => 'Авто-визначення',
|
||
'la_doc_type_other' => 'Інше',
|
||
'la_engine_hint' => 'Модель: dbn-legal-agent-v3 (норвезька юридична fine-tune на GPU). Кожне питання обробляється окремо; ~30-60с на питання, до 5 питань за запуск.',
|
||
'la_input_label' => 'Вставлений текст',
|
||
'la_input_hint' => '(необов’язково, якщо вибрано файл або документ)',
|
||
'la_input_placeholder' => 'Вставте судову нотатку, рішення суду, vedtak, лист або будь-який юридичний текст. Можна також завантажити файл або вибрати з Моїх документів вище — потрібне принаймні одне джерело.',
|
||
'la_run_button' => 'Запустити юридичний аналіз',
|
||
'la_run_button_busy' => 'Виконання…',
|
||
'la_ready_title' => 'Готово',
|
||
'la_ready_intro' => 'Завантажте документ або вставте текст — інструмент виявить до 5 окремих юридичних питань і попросить норвезьку fine-tune відповісти на кожне з цитатами.',
|
||
'la_ready_pipeline' => 'Прохід 1 використовує Azure GPT-4o-mini для виявлення питань. Прохід 2 викликає dbn-legal-agent-v3 для кожного. Прохід 3 синтезує загальну картину. Типовий запуск триває 2-5 хвилин.',
|
||
'la_pipeline_pass1' => 'Прохід 1',
|
||
'la_pipeline_pass2' => 'Прохід 2',
|
||
'la_pipeline_pass3' => 'Прохід 3',
|
||
'la_pass1_extracting' => 'Виявлення юридичних питань у документі…',
|
||
'la_pass1_found' => 'Знайдено {n} юридичне(их) питання',
|
||
'la_pass2_asking' => 'Запит до dbn-legal-agent-v3 для кожного питання…',
|
||
'la_pass2_answered' => 'Спеціаліст відповів на {n} питання',
|
||
'la_pass3_synthesis' => 'Синтез завершено',
|
||
'la_waiting' => 'Очікування…',
|
||
'la_searching_corpus' => 'Пошук у юридичному корпусі…',
|
||
'la_asking_finetune' => 'Запит до dbn-legal-agent-v3…',
|
||
'la_overall' => 'Загальна оцінка',
|
||
'la_next_steps' => 'Наступні кроки',
|
||
'la_answer_header' => 'Відповідь',
|
||
'la_legal_basis' => 'Правова підстава:',
|
||
'la_extracting_status' => 'Виявлення окремих юридичних питань…',
|
||
'la_synthesising_status' => 'Синтез загальної оцінки…',
|
||
'la_extracting_files' => 'Виділення тексту з {n} файл(ів)…',
|
||
'la_need_input' => 'Вставте текст, завантажте файл або виберіть документ перед запуском.',
|
||
'la_error_prefix' => 'Помилка:',
|
||
'la_server_returned' => 'Сервер повернув',
|
||
'la_empty_issues' => 'Окремих юридичних питань не виявлено.',
|
||
|
||
'la_addon_button' => '⚖️🇳🇴 Запустити глибокий юридичний аналіз цього тексту',
|
||
'la_addon_button_busy' => 'Виконується глибокий юридичний аналіз…',
|
||
'la_addon_section' => 'Глибокий юридичний аналіз',
|
||
|
||
'lt_source_label' => 'Мова оригіналу',
|
||
'lt_target_label' => 'Перекласти на',
|
||
'lt_doc_type_label' => 'Тип документу',
|
||
'lt_run_button' => 'Перекласти документ',
|
||
'lt_run_button_busy' => 'Перекладаю…',
|
||
'lt_input_label' => 'Вставте текст для перекладу',
|
||
'lt_input_hint' => '(необов\'язково при завантаженні)',
|
||
'lt_input_placeholder' => 'Вставте норвезький юридичний текст тут…',
|
||
'lt_translating_status' => 'Перекладаю…',
|
||
'lt_ready_title' => 'Готовий до перекладу',
|
||
'lt_ready_intro' => 'Завантажте PDF, DOCX або TXT, або вставте текст нижче.',
|
||
'lt_result_title' => 'Переклад',
|
||
'lt_annotations_title' => 'Юридичні терміни',
|
||
'lt_copy_button' => 'Копіювати переклад',
|
||
'lt_copy_done' => 'Скопійовано!',
|
||
'lt_need_input' => 'Будь ласка, вставте текст або завантажте файл.',
|
||
'lt_error_prefix' => 'Помилка',
|
||
'lt_server_returned' => 'Сервер повернув',
|
||
'lt_extracting_files' => 'Витягую текст з {n} файл(ів)…',
|
||
'lt_engine_hint' => 'Механізм: Azure GPT-4o · Юридичні документи обробляються в пам\'яті та не зберігаються.',
|
||
'lt_same_lang_error' => 'Мова оригіналу та мова перекладу повинні бути різними.',
|
||
'lt_disclaimer' => 'Це переклад за допомогою штучного інтелекту. Завжди перевіряйте з кваліфікованим юридичним перекладачем для офіційного використання.',
|
||
],
|
||
'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',
|
||
'hero_kicker' => 'Prawne narzędzia AI · Norwegia · Bezpłatnie dla członków',
|
||
'stat_passages_indexed' => 'przepisów prawnych zindeksowanych',
|
||
'explore_tools' => 'Przeglądaj narzędzia ↓',
|
||
'tools_section_title' => 'Stworzone dla rodzin poruszających się w skomplikowanym systemie.',
|
||
'tools_section_sub' => 'Siedem dedykowanych narzędzi AI — od transkrypcji audio po dogłębne badania prawne. Każde narzędzie przetwarza Twoje dokumenty w pamięci i usuwa je po zakończeniu.',
|
||
'learn_more' => 'Dowiedz się więcej →',
|
||
'pricing_nav_link' => 'Cennik →',
|
||
'why_ours_trust_link' => 'Dlaczego nasze narzędzia dają inne odpowiedzi niż ChatGPT →',
|
||
'footer_tagline' => 'Prawne narzędzia AI dla rodzin w norweskich sprawach dotyczących ochrony dzieci.',
|
||
'footer_privacy_note' => 'Twoje dokumenty są przetwarzane w pamięci i usuwane po zakończeniu sesji. Nic nie jest przechowywane.',
|
||
'footer_legal_lib' => 'Biblioteka prawna',
|
||
'footer_report' => 'Zgłoś problem',
|
||
'footer_about_caveau' => 'O CaveauAI',
|
||
'footer_disclaimer' => 'Wyniki AI służą wyłącznie jako wsparcie w przygotowaniu sprawy — nie jako porada prawna. Zawsze weryfikuj z licencjonowanym norweskim prawnikiem.',
|
||
'why_ours_strip_eyebrow' => 'Nie ChatGPT. Nie zgadywanie.',
|
||
'why_ours_strip_title' => 'Dlaczego nasze narzędzia dają ci zasadniczo inne odpowiedzi.',
|
||
'why_ours_strip_sub' => 'Przeszukujemy 220 000+ zweryfikowanych norweskich przepisów prawnych przy każdym zapytaniu i cytujemy to, co znajdziemy. Ogólna AI odpowiada z pamięci.',
|
||
'why_ours_strip_p1' => 'Przeszukuje rzeczywiste prawo — nie pamięć treningową',
|
||
'why_ours_strip_p2' => 'Cytuje dokładny znaleziony przepis, za każdym razem',
|
||
'why_ours_strip_p3' => 'Dostrojony na norweskim prawie ochrony dzieci',
|
||
'why_ours_strip_cta' => 'Pełne wyjaśnienie — jak to działa →',
|
||
'pricing_strip_eyebrow' => 'Plany i cennik',
|
||
'pricing_strip_title' => 'Zacznij bezpłatnie. Rozszerz, gdy potrzebujesz własnej sprawy.',
|
||
'pricing_strip_sub' => '30 bezpłatnych kredytów miesięcznie. Płatne plany odblokują prywatne przechowywanie sprawy — prześlij dokumenty, a każde narzędzie do nich się odwoła.',
|
||
'pricing_strip_cta' => 'Zobacz wszystkie plany i cennik →',
|
||
// ── Nav + account + dashboard i18n ──────────────────────────────
|
||
'nav_tools' => 'Narzędzia',
|
||
'nav_dashboard' => 'Przegląd',
|
||
'nav_account' => 'Konto',
|
||
'nav_login' => 'Zaloguj',
|
||
'nav_logout' => 'Wyloguj',
|
||
'credits_available' => 'Dostępne kredyty',
|
||
'credits_monthly' => 'miesięczne',
|
||
'credits_bonus' => 'bonusowe',
|
||
'details_link' => 'Szczegóły',
|
||
'my_case' => 'Moja sprawa',
|
||
'build_your_case' => 'Zbuduj własną sprawę',
|
||
'upload_documents' => 'Prześlij dokumenty',
|
||
'upgrade_from_plus' => 'Dostępne od Plus NOK 129/miesiąc',
|
||
'my_corpus' => 'Mój korpus',
|
||
'open_corpus' => 'Otwórz korpus',
|
||
'account_title' => 'Konto',
|
||
'account_credits' => 'Kredyty i plan',
|
||
'account_profile' => 'Profil',
|
||
'account_team' => 'Zespół',
|
||
'account_usage' => 'Użycie',
|
||
'renewal_date' => 'Następne odnowienie',
|
||
'trial_active_label' => 'Okres próbny aktywny',
|
||
'trial_days_left' => 'dni pozostało',
|
||
'earn_credits_eyebrow'=> 'Zdobądź 25 dodatkowych kredytów',
|
||
'survey_cta_text' => 'Odpowiedz na 5 krótkich pytań — bez reklam, tylko badania.',
|
||
'survey_btn' => 'Wypełnij ankietę',
|
||
'login_method_sso' => 'Google SSO',
|
||
'login_method_email' => 'Email i hasło',
|
||
'team_single_sso' => 'Konto jednoosobowe (SSO)',
|
||
'usage_credits_used' => 'Kredyty użyte w tym miesiącu',
|
||
'usage_storage_used' => 'Użyte miejsce',
|
||
'usage_log_coming' => 'Szczegółowy dziennik aktywności wkrótce',
|
||
'account_not_auth' => 'Musisz być zalogowany, aby zobaczyć swoje konto.',
|
||
'dash_nav_overview' => 'Przegląd',
|
||
'dash_nav_documents' => 'Dokumenty',
|
||
'dash_nav_upload' => 'Prześlij',
|
||
'dash_nav_ask' => 'Zapytaj',
|
||
'dash_nav_settings' => 'Ustawienia',
|
||
'dash_page_subtitle' => 'Mój korpus',
|
||
'dash_title_overview' => 'Mój korpus',
|
||
'dash_lead_overview' => 'Prywatna baza wiedzy prawnej. Przesyłaj, organizuj, pytaj — wszystko przypisane do Twojego konta.',
|
||
'dash_title_docs' => 'Dokumenty',
|
||
'dash_lead_docs' => 'Wszystkie dokumenty w Twoim prywatnym korpusie. Kliknij, aby otworzyć, lub zaznacz kilka do operacji zbiorczych.',
|
||
'dash_title_upload' => 'Prześlij dokumenty',
|
||
'dash_lead_upload' => 'Prześlij PDF, DOCX lub TXT — albo wklej tekst lub URL. Treść jest dzielona na fragmenty, wektoryzowana i indeksowana w Twoim prywatnym korpusie.',
|
||
'dash_title_chat' => 'Zapytaj korpus',
|
||
'dash_lead_chat' => 'Zadawaj pytania prawne. Odpowiedzi są strumieniowane z cytatami z Twojego korpusu i wspólnego pakietu Do Better Norge.',
|
||
'dash_title_settings' => 'Ustawienia',
|
||
'dash_lead_settings' => 'Ustawienia Twojego prywatnego korpusu.',
|
||
'dash_title_document' => 'Dokument',
|
||
'dash_section_account' => 'Konto',
|
||
'dash_label_client_id' => 'ID klienta',
|
||
'dash_label_corpus_id' => 'ID korpusu',
|
||
'dash_label_user_id' => 'ID użytkownika',
|
||
'dash_section_rag' => 'RAG pipeline',
|
||
'dash_section_privacy' => 'Prywatność',
|
||
'dash_privacy_p1' => 'Wszystko, co przesyłasz lub zapisujesz tutaj, jest przypisane do Twojego konta. Inni użytkownicy nie mogą widzieć ani przeszukiwać Twoich dokumentów. Wspólny pakiet family-legal (~220 tys. fragmentów norweskiego prawa) jest współdzielony i używany do wzbogacania odpowiedzi autorytatywnymi źródłami, ale jesteś właścicielem wszystkiego, co sam dodajesz.',
|
||
'dash_privacy_p2a' => 'Usuwaj pojedyncze dokumenty z',
|
||
'dash_privacy_p2b' => 'Aby usunąć całe konto, skontaktuj się z pomocą techniczną.',
|
||
'dash_upload_source' => 'Wybierz źródło',
|
||
'dash_upload_file_btn' => 'Plik',
|
||
'dash_upload_text_btn' => 'Wklej tekst',
|
||
'dash_upload_drop_strong' => 'Upuść plik tutaj lub kliknij, aby przeglądać',
|
||
'dash_upload_drop_small' => 'PDF · DOCX · TXT · maks. 8 MB · automatyczny OCR dla skanowanych PDF',
|
||
'dash_upload_title_lbl' => 'Tytuł',
|
||
'dash_upload_title_ph' => 'Automatycznie z nazwy pliku, jeśli puste',
|
||
'dash_upload_category_lbl'=> 'Kategoria',
|
||
'dash_upload_category_ph' => 'np. prawo rodzinne, opieka nad dziećmi',
|
||
'dash_upload_tags_lbl' => 'Tagi',
|
||
'dash_upload_lang_lbl' => 'Język',
|
||
'dash_upload_content_lbl' => 'Treść',
|
||
'dash_upload_content_ph' => 'Wklej tekst tutaj — co najmniej 30 znaków',
|
||
'dash_upload_note_title_ph'=> 'Nadaj notatce tytuł',
|
||
'dash_upload_url_ph' => 'https://lovdata.no/dokument/…',
|
||
'dash_upload_url_title_ph'=> 'Puste = używa URL',
|
||
'dash_upload_url_note' => 'URL są przetwarzane w tle — sprawdź «Dokumenty», aby zobaczyć status.',
|
||
'dash_upload_btn_file' => 'Prześlij i indeksuj',
|
||
'dash_upload_btn_text' => 'Zapisz do korpusu',
|
||
'dash_upload_btn_url' => 'Pobierz i indeksuj',
|
||
'dash_chat_disclaimer' => '⚖ Informacje prawne i wsparcie przygotowania — nie ostateczna porada prawna. Zawsze potwierdzaj z prawnikiem.',
|
||
'dash_chat_placeholder' => 'np. «Co mówi § 4-12 o umieszczeniu bez zgody?»',
|
||
'dash_filter_q_ph' => 'Szukaj w tytułach lub tagach…',
|
||
'dash_filter_all_status' => 'Wszystkie statusy',
|
||
'dash_delete_selected' => 'Usuń zaznaczone',
|
||
'dash_upload_btn_short' => '+ Prześlij',
|
||
'dash_prev' => '← Poprzednia',
|
||
'dash_next' => 'Następna →',
|
||
'js_locale' => 'pl-PL',
|
||
'js_status_ready' => 'Gotowy',
|
||
'js_status_pending' => 'Oczekuje',
|
||
'js_status_processing' => 'Przetwarzanie',
|
||
'js_status_error' => 'Błąd',
|
||
'js_th_title' => 'Tytuł',
|
||
'js_th_status' => 'Status',
|
||
'js_th_chunks' => 'Fragmenty',
|
||
'js_th_added' => 'Dodano',
|
||
'js_th_category' => 'Kategoria',
|
||
'js_loading' => 'Ładowanie…',
|
||
'js_loading_docs' => 'Ładowanie dokumentów…',
|
||
'js_empty_docs' => 'Brak dokumentów.',
|
||
'js_empty_docs_link' => 'Prześlij pierwszy',
|
||
'js_empty_filter' => 'Brak wyników dla wybranego filtru.',
|
||
'js_error_loading' => 'Nie można załadować: ',
|
||
'js_kpi_docs' => 'Dokumenty',
|
||
'js_kpi_chunks' => 'Fragmenty indeksowane',
|
||
'js_kpi_ready' => 'Gotowe',
|
||
'js_kpi_last' => 'Ostatnie przesłanie',
|
||
'js_kpi_of_quota' => 'z limitu',
|
||
'js_kpi_searchable' => 'przeszukiwalnych fragmentów',
|
||
'js_kpi_of_total' => 'z łącznej liczby',
|
||
'js_kpi_date_label' => 'data',
|
||
'js_get_started' => 'Zacznij',
|
||
'js_see_all' => 'Zobacz wszystkie →',
|
||
'js_recent_activity' => 'Ostatnia aktywność',
|
||
'js_upload_docs_btn' => '📥 Prześlij dokumenty',
|
||
'js_ask_btn' => '💬 Zadaj pytanie prawne',
|
||
'js_browse_btn' => '📚 Przeglądaj korpus',
|
||
'js_pager_showing' => 'Wyświetlono {from}–{to} z {total}',
|
||
'js_delete_selected' => 'Usuń zaznaczone',
|
||
'js_delete_n_selected' => 'Usuń zaznaczone ({n})',
|
||
'js_delete_docs_confirm'=> 'Usunąć {n} dokumenty? Tego nie można cofnąć.',
|
||
'js_prev' => '← Poprzednia',
|
||
'js_next' => 'Następna →',
|
||
'js_filter_all_status' => 'Wszystkie statusy',
|
||
'js_filter_placeholder'=> 'Szukaj w tytułach lub tagach…',
|
||
'js_chat_thinking' => 'myślę…',
|
||
'js_chat_save' => '💾 Zapisz do korpusu',
|
||
'js_chat_copy' => '📋 Kopiuj',
|
||
'js_chat_copied' => '✓ Skopiowano',
|
||
'js_chat_passages_meta'=> '{n} fragmentów',
|
||
'js_chat_save_unavail' => 'Okno zapisywania niedostępne.',
|
||
'js_tab_preview' => 'Podgląd',
|
||
'js_tab_chunks' => 'Fragmenty',
|
||
'js_tab_related' => 'Powiązane',
|
||
'js_tab_edit' => 'Edytuj',
|
||
'js_words' => 'słów',
|
||
'js_passages_label' => 'fragmentów',
|
||
'js_added_at' => 'dodano',
|
||
'js_tags_label' => 'Tagi:',
|
||
'js_source_url_label' => 'Oryginalne źródło ↗',
|
||
'js_back' => '← Wstecz',
|
||
'js_delete_btn' => 'Usuń',
|
||
'js_save_changes' => 'Zapisz zmiany',
|
||
'js_saving' => 'Zapisywanie…',
|
||
'js_saved_at' => 'Zapisano {time}',
|
||
'js_delete_doc_confirm'=> 'Trwale usunąć ten dokument?',
|
||
'js_loading_related' => 'Ładowanie powiązanych źródeł z grafu…',
|
||
'js_no_citations' => 'Brak znanych cytowań w bazie grafów.',
|
||
'js_graph_unavailable' => 'Baza grafów jest teraz niedostępna.',
|
||
'js_no_chunks' => 'Brak indeksowanych fragmentów.',
|
||
'js_content_empty' => '(puste)',
|
||
'js_doc_not_found' => 'Dokument nie znaleziony',
|
||
'js_missing_doc_id' => 'Brakujący identyfikator dokumentu.',
|
||
'js_upload_select_file'=> 'Najpierw wybierz plik.',
|
||
'js_upload_indexing' => 'Przesyłanie i indeksowanie…',
|
||
'js_upload_saving' => 'Indeksowanie…',
|
||
'js_upload_queuing' => 'Dodawanie URL do kolejki…',
|
||
'js_upload_drop_hint' => 'Upuść plik tutaj lub kliknij, aby przeglądać',
|
||
'js_upload_indexed' => '✅ Indeksowano! {n} fragmentów dodano.',
|
||
'js_upload_open_doc' => 'Otwórz dokument',
|
||
'js_upload_queued' => '📥 Dodano do kolejki.',
|
||
'js_upload_follow_docs'=> 'Śledź postęp w Dokumentach',
|
||
'js_upload_bg_done' => '✅ Zadanie w tle ukończone. {n} fragmentów indeksowano.',
|
||
'js_field_title' => 'Tytuł',
|
||
'js_field_category' => 'Kategoria',
|
||
'js_field_tags' => 'Tagi (oddzielone przecinkami)',
|
||
'js_field_lang' => 'Język',
|
||
'js_field_author' => 'Autor',
|
||
|
||
// ── Analiza prawna ────────────────────────────────────────────────
|
||
'la_doc_type_label' => 'Typ dokumentu',
|
||
'la_doc_type_auto' => 'Auto-wykrywanie',
|
||
'la_doc_type_other' => 'Inny',
|
||
'la_engine_hint' => 'Silnik: dbn-legal-agent-v3 (norweski prawny fine-tune na GPU). Każda kwestia odpowiadana osobno; ~30-60s na kwestię, do 5 kwestii na uruchomienie.',
|
||
'la_input_label' => 'Wklejony tekst',
|
||
'la_input_hint' => '(opcjonalne, jeśli wybrano plik lub dokument)',
|
||
'la_input_placeholder' => 'Wklej notatkę sprawy, orzeczenie sądu, vedtak, list lub dowolny tekst prawny. Możesz też przesłać plik lub wybrać z Moich dokumentów powyżej — wymagane jest co najmniej jedno źródło.',
|
||
'la_run_button' => 'Uruchom analizę prawną',
|
||
'la_run_button_busy' => 'Uruchamianie…',
|
||
'la_ready_title' => 'Gotowe',
|
||
'la_ready_intro' => 'Prześlij dokument lub wklej tekst — narzędzie wyodrębni do 5 odrębnych kwestii prawnych i poprosi norweski fine-tune o odpowiedź na każdą z cytatami.',
|
||
'la_ready_pipeline' => 'Przebieg 1 używa Azure GPT-4o-mini do wykrycia kwestii. Przebieg 2 wywołuje dbn-legal-agent-v3 dla każdej. Przebieg 3 syntetyzuje obraz całości. Typowe uruchomienie trwa 2-5 minut.',
|
||
'la_pipeline_pass1' => 'Przebieg 1',
|
||
'la_pipeline_pass2' => 'Przebieg 2',
|
||
'la_pipeline_pass3' => 'Przebieg 3',
|
||
'la_pass1_extracting' => 'Wyodrębnianie kwestii prawnych z dokumentu…',
|
||
'la_pass1_found' => 'Znaleziono {n} kwestii prawnych',
|
||
'la_pass2_asking' => 'Pytanie dbn-legal-agent-v3 o każdą kwestię…',
|
||
'la_pass2_answered' => 'Specjalista odpowiedział na {n} kwestii',
|
||
'la_pass3_synthesis' => 'Synteza zakończona',
|
||
'la_waiting' => 'Oczekiwanie…',
|
||
'la_searching_corpus' => 'Przeszukiwanie korpusu prawnego…',
|
||
'la_asking_finetune' => 'Pytanie dbn-legal-agent-v3…',
|
||
'la_overall' => 'Ocena całościowa',
|
||
'la_next_steps' => 'Następne kroki',
|
||
'la_answer_header' => 'Odpowiedź',
|
||
'la_legal_basis' => 'Podstawa prawna:',
|
||
'la_extracting_status' => 'Identyfikowanie odrębnych kwestii prawnych…',
|
||
'la_synthesising_status' => 'Syntetyzowanie oceny całościowej…',
|
||
'la_extracting_files' => 'Wyodrębnianie tekstu z {n} plik(ów)…',
|
||
'la_need_input' => 'Wklej tekst, prześlij plik lub wybierz dokument przed uruchomieniem.',
|
||
'la_error_prefix' => 'Błąd:',
|
||
'la_server_returned' => 'Serwer zwrócił',
|
||
'la_empty_issues' => 'Nie zidentyfikowano odrębnych kwestii prawnych.',
|
||
|
||
'la_addon_button' => '⚖️🇳🇴 Uruchom głęboką analizę prawną tego tekstu',
|
||
'la_addon_button_busy' => 'Trwa głęboka analiza prawna…',
|
||
'la_addon_section' => 'Głęboka analiza prawna',
|
||
|
||
'lt_source_label' => 'Język źródłowy',
|
||
'lt_target_label' => 'Przetłumacz na',
|
||
'lt_doc_type_label' => 'Typ dokumentu',
|
||
'lt_run_button' => 'Przetłumacz dokument',
|
||
'lt_run_button_busy' => 'Tłumaczę…',
|
||
'lt_input_label' => 'Wklej tekst do tłumaczenia',
|
||
'lt_input_hint' => '(opcjonalne przy wgrywaniu pliku)',
|
||
'lt_input_placeholder' => 'Wklej tu norweski tekst prawny…',
|
||
'lt_translating_status' => 'Tłumaczę…',
|
||
'lt_ready_title' => 'Gotowy do tłumaczenia',
|
||
'lt_ready_intro' => 'Prześlij PDF, DOCX lub TXT, lub wklej tekst poniżej.',
|
||
'lt_result_title' => 'Tłumaczenie',
|
||
'lt_annotations_title' => 'Terminy prawne',
|
||
'lt_copy_button' => 'Skopiuj tłumaczenie',
|
||
'lt_copy_done' => 'Skopiowano!',
|
||
'lt_need_input' => 'Wklej tekst lub prześlij plik.',
|
||
'lt_error_prefix' => 'Błąd',
|
||
'lt_server_returned' => 'Serwer zwrócił',
|
||
'lt_extracting_files' => 'Wyodrębniam tekst z {n} plik(ów)…',
|
||
'lt_engine_hint' => 'Silnik: Azure GPT-4o · Dokumenty prawne są przetwarzane w pamięci i nigdy nie zapisywane.',
|
||
'lt_same_lang_error' => 'Języki źródłowy i docelowy muszą być różne.',
|
||
'lt_disclaimer' => 'To jest tłumaczenie wspomagane AI. Zawsze weryfikuj z wykwalifikowanym tłumaczem prawnym do oficjalnego użytku.',
|
||
],
|
||
];
|
||
}
|
||
|
||
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'],
|
||
'summarize' => ['Summarize', 'Document summary', 'Extract key facts, dates, parties, and legal references from any document — with optional legal corpus enrichment.', 'Process-and-forget'],
|
||
'legal-analysis' => ['Legal Analysis', 'Deep Norwegian-law Q&A', 'Extract distinct legal issues from a document and answer each with the dbn-legal-agent-v3 fine-tune — citations from barnevernsloven, EMK, and Høyesterett.', 'Fine-tune · Norsk'],
|
||
'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'],
|
||
'translate' => ['Translate', 'Legal translation', 'Translate Barnevernet letters and legal documents into your language with legal-terminology annotations.', 'Azure · GPT-4o'],
|
||
],
|
||
'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'],
|
||
'summarize' => ['Sammendrag', 'Dokumentsammendrag', 'Hent ut nøkkelfakta, datoer, parter og juridiske referanser fra et dokument — med valgfri korpusberikelse.', 'Behandles og glemmes'],
|
||
'legal-analysis' => ['Juridisk analyse', 'Dyp norsk-rett Q&A', 'Hent ut distinkte juridiske spørsmål fra et dokument og få svar fra dbn-legal-agent-v3 fine-tunen — kilder fra barnevernsloven, EMK og Høyesterett.', 'Fine-tune · Norsk'],
|
||
'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'],
|
||
'translate' => ['Oversett', 'Juridisk oversettelse', 'Oversett Barnevernet-brev og juridiske dokumenter til ditt språk med juridisk terminologi.', 'Azure · GPT-4o'],
|
||
],
|
||
'uk' => [
|
||
'transcribe' => ['Транскрипція', 'Аудіо та зустрічі', 'Перетворюйте аудіо або відео на текст із розділенням мовців і юридичною лексикою.', 'Whisper / GPU'],
|
||
'timeline' => ['Хронологія', 'Події та строки', 'Витягуйте дати, слухання, етапи Barnevernet і юридичні строки з нотаток або файлів.', 'Обробити і забути'],
|
||
'redact' => ['Редагування', 'Захист приватності', 'Видаляйте імена, ідентифікаційні номери, телефони та адреси перед поширенням документів.', 'Детермінований метод'],
|
||
'summarize' => ['Резюме', 'Резюме документа', 'Витягуйте ключові факти, дати, сторони та юридичні посилання — з можливістю збагачення корпусом.', 'Обробити і забути'],
|
||
'legal-analysis' => ['Юридичний аналіз', 'Глибокий аналіз норвезького права', 'Витягніть юридичні питання з документа та отримайте відповіді від моделі dbn-legal-agent-v3 — з цитатами з barnevernsloven, ЄКПЛ і Verховного суду Норвегії.', 'Fine-tune · Norsk'],
|
||
'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' => ['Граф цитувань', 'Мережа посилань', 'Граф правових посилань — що цитує документ, хто цитує його, що його реалізує.', 'Граф-топологія'],
|
||
'translate' => ['Перекласти', 'Юридичний переклад', 'Перекладайте листи Barnevernet та юридичні документи на свою мову з юридичними термінами.', 'Azure · GPT-4o'],
|
||
],
|
||
'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'],
|
||
'summarize' => ['Streszczenie', 'Streszczenie dokumentu', 'Wyodrębniaj kluczowe fakty, daty, strony i odniesienia prawne — z opcjonalnym wzbogaceniem korpusem.', 'Przetwórz i zapomnij'],
|
||
'legal-analysis' => ['Analiza prawna', 'Głęboka analiza prawa norweskiego', 'Wyodrębnij odrębne kwestie prawne z dokumentu i uzyskaj odpowiedzi od modelu dbn-legal-agent-v3 — z cytatami z barnevernsloven, EKPC i norweskiego Sądu Najwyższego.', 'Fine-tune · Norsk'],
|
||
'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'],
|
||
'translate' => ['Tłumacz', 'Tłumaczenie prawne', 'Tłumacz listy Barnevernet i dokumenty prawne na swój język z adnotacjami terminologicznymi.', 'Azure · GPT-4o'],
|
||
],
|
||
];
|
||
|
||
$selected = $copy[$language] ?? $copy['en'];
|
||
$order = ['transcribe', 'timeline', 'redact', 'summarize', 'legal-analysis', 'korrespond', 'barnevernet', 'advocate', 'deep-research', 'discrepancy', 'corpus', 'citations', 'translate'];
|
||
$icons = [
|
||
'transcribe' => 'TR',
|
||
'timeline' => 'TL',
|
||
'redact' => 'RX',
|
||
'summarize' => 'SZ',
|
||
'legal-analysis' => 'LA',
|
||
'korrespond' => 'KOR',
|
||
'barnevernet' => 'BVJ',
|
||
'advocate' => 'ADV',
|
||
'deep-research' => 'DR',
|
||
'discrepancy' => 'DC',
|
||
'corpus' => 'KB',
|
||
'citations' => 'CIT',
|
||
'translate' => 'TX',
|
||
];
|
||
$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;
|
||
}
|