Fix docPickerBtn/audioPickerBtn i18n — add missing translation keys
Add doc_picker_btn/audio_picker_btn to i18n.php (en/no/uk/pl), add docPickerBtn to REDACT_I18N + TIMELINE_I18N and audioPickerBtn to TRANSCRIBE_I18N in tools.js. PHP-render picker labels in legal-analysis, translate, summarize, tool_form, and layout_footer using dbnToolsT(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,7 @@ const REDACT_I18N = {
|
||||
redactDownloadDocx: 'Download .docx',
|
||||
redactCopy: 'Copy',
|
||||
redactCopied: 'Copied!',
|
||||
docPickerBtn: 'Select from My Docs',
|
||||
},
|
||||
no: {
|
||||
redactEngine: 'Motor',
|
||||
@@ -111,6 +112,7 @@ const REDACT_I18N = {
|
||||
redactDownloadDocx: 'Last ned .docx',
|
||||
redactCopy: 'Kopier',
|
||||
redactCopied: 'Kopiert!',
|
||||
docPickerBtn: 'Velg fra Mine dokumenter',
|
||||
},
|
||||
uk: {
|
||||
redactEngine: 'Рушій',
|
||||
@@ -165,6 +167,7 @@ const REDACT_I18N = {
|
||||
redactDownloadDocx: 'Завантажити .docx',
|
||||
redactCopy: 'Копіювати',
|
||||
redactCopied: 'Скопійовано!',
|
||||
docPickerBtn: 'Вибрати з Моїх документів',
|
||||
},
|
||||
pl: {
|
||||
redactEngine: 'Silnik',
|
||||
@@ -219,6 +222,7 @@ const REDACT_I18N = {
|
||||
redactDownloadDocx: 'Pobierz .docx',
|
||||
redactCopy: 'Kopiuj',
|
||||
redactCopied: 'Skopiowano!',
|
||||
docPickerBtn: 'Wybierz z Moich dokumentów',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -263,6 +267,7 @@ const TIMELINE_I18N = {
|
||||
timelineNotesLabel: 'Context notes',
|
||||
timelineNotesPlaceholder: 'Add any clarifications to guide the AI — e.g. "All dates are 2024", "Focus on the mother\'s actions", "D refers to the defendant throughout".',
|
||||
timelineNotesHint: 'These notes are included in the prompt to help the model interpret ambiguous dates, actors, or abbreviations. Not stored.',
|
||||
docPickerBtn: 'Select from My Docs',
|
||||
},
|
||||
no: {
|
||||
timelineEngine: 'Motor',
|
||||
@@ -304,6 +309,7 @@ const TIMELINE_I18N = {
|
||||
timelineNotesLabel: 'Kontekstnotes',
|
||||
timelineNotesPlaceholder: 'Legg til avklaringer for å veilede AI-en — f.eks. "Alle datoer er 2024", "Fokuser på morens handlinger", "D refererer til saksøkte gjennom hele dokumentet".',
|
||||
timelineNotesHint: 'Disse notatene inkluderes i ledeteksten for å hjelpe modellen med å tolke uklare datoer, aktører eller forkortelser. Lagres ikke.',
|
||||
docPickerBtn: 'Velg fra Mine dokumenter',
|
||||
},
|
||||
uk: {
|
||||
timelineEngine: 'Рушій',
|
||||
@@ -345,6 +351,7 @@ const TIMELINE_I18N = {
|
||||
timelineNotesLabel: 'Контекстні нотатки',
|
||||
timelineNotesPlaceholder: 'Додайте пояснення для ШІ — напр. "Усі дати відносяться до 2024 року", "Зосередьтесь на діях матері", "D — відповідач по всьому документу".',
|
||||
timelineNotesHint: 'Ці нотатки включаються до запиту, щоб допомогти моделі інтерпретувати неоднозначні дати, учасників або скорочення. Не зберігаються.',
|
||||
docPickerBtn: 'Вибрати з Моїх документів',
|
||||
},
|
||||
pl: {
|
||||
timelineEngine: 'Silnik',
|
||||
@@ -386,6 +393,7 @@ const TIMELINE_I18N = {
|
||||
timelineNotesLabel: 'Notatki kontekstowe',
|
||||
timelineNotesPlaceholder: 'Dodaj wyjaśnienia dla AI — np. "Wszystkie daty dotyczą 2024", "Skup się na działaniach matki", "D odnosi się do pozwanego w całym dokumencie".',
|
||||
timelineNotesHint: 'Te notatki są dołączane do zapytania, aby pomóc modelowi interpretować niejednoznaczne daty, uczestników lub skróty. Nie są przechowywane.',
|
||||
docPickerBtn: 'Wybierz z Moich dokumentów',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -474,6 +482,7 @@ const TRANSCRIBE_I18N = {
|
||||
postModelMini: 'GPT-4o Mini',
|
||||
postModelFull: 'GPT-4o',
|
||||
postModelHint: 'Fixes errors, punctuation, and domain terms after transcription.',
|
||||
audioPickerBtn: 'Select from My Audio',
|
||||
},
|
||||
no: {
|
||||
transcribeLang: 'Språk i lydfil',
|
||||
@@ -528,6 +537,7 @@ const TRANSCRIBE_I18N = {
|
||||
postModelMini: 'GPT-4o Mini',
|
||||
postModelFull: 'GPT-4o',
|
||||
postModelHint: 'Retter feil, tegnsetting og fagtermer etter transkripsjon.',
|
||||
audioPickerBtn: 'Velg fra Mine lydfiler',
|
||||
},
|
||||
uk: {
|
||||
transcribeLang: 'Мова аудіо',
|
||||
@@ -582,6 +592,7 @@ const TRANSCRIBE_I18N = {
|
||||
postModelMini: 'GPT-4o Mini',
|
||||
postModelFull: 'GPT-4o',
|
||||
postModelHint: 'Виправляє помилки, пунктуацію та терміни після транскрипції.',
|
||||
audioPickerBtn: 'Вибрати з Мого аудіо',
|
||||
},
|
||||
pl: {
|
||||
transcribeLang: 'Język audio',
|
||||
@@ -636,6 +647,7 @@ const TRANSCRIBE_I18N = {
|
||||
postModelMini: 'GPT-4o Mini',
|
||||
postModelFull: 'GPT-4o',
|
||||
postModelHint: 'Poprawia błędy, interpunkcję i terminy po transkrypcji.',
|
||||
audioPickerBtn: 'Wybierz z Mojego audio',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -459,6 +459,10 @@ function dbnToolsTranslations(): array
|
||||
'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.',
|
||||
|
||||
'doc_picker_btn' => 'Select from My Docs',
|
||||
'audio_picker_btn' => 'Select from My Audio',
|
||||
'doc_picker_modal_title' => 'Select from My Docs',
|
||||
|
||||
// MCP setup page + tool detail pages
|
||||
'mcp_page_title' => 'MCP — Do Better Norge',
|
||||
'mcp_meta_desc' => 'Connect Claude, Cursor, and other AI tools to all 19 DBN legal preparation tools via MCP.',
|
||||
@@ -899,6 +903,10 @@ function dbnToolsTranslations(): array
|
||||
'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.',
|
||||
|
||||
'doc_picker_btn' => 'Velg fra Mine dokumenter',
|
||||
'audio_picker_btn' => 'Velg fra Mine lydfiler',
|
||||
'doc_picker_modal_title' => 'Velg fra Mine dokumenter',
|
||||
|
||||
// MCP setup page + tool detail pages
|
||||
'mcp_page_title' => 'MCP — Do Better Norge',
|
||||
'mcp_meta_desc' => 'Koble Claude, Cursor og andre AI-verktøy til alle 19 DBN juridiske forberedelsesverktøy via MCP.',
|
||||
@@ -1339,6 +1347,10 @@ function dbnToolsTranslations(): array
|
||||
'lt_same_lang_error' => 'Мова оригіналу та мова перекладу повинні бути різними.',
|
||||
'lt_disclaimer' => 'Це переклад за допомогою штучного інтелекту. Завжди перевіряйте з кваліфікованим юридичним перекладачем для офіційного використання.',
|
||||
|
||||
'doc_picker_btn' => 'Вибрати з Моїх документів',
|
||||
'audio_picker_btn' => 'Вибрати з Мого аудіо',
|
||||
'doc_picker_modal_title' => 'Вибрати з Моїх документів',
|
||||
|
||||
// MCP setup page + tool detail pages
|
||||
'mcp_page_title' => 'MCP — Do Better Norge',
|
||||
'mcp_meta_desc' => 'Підключіть Claude, Cursor та інші інструменти ШІ до всіх 19 юридичних підготовчих інструментів DBN через MCP.',
|
||||
@@ -1779,6 +1791,10 @@ function dbnToolsTranslations(): array
|
||||
'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.',
|
||||
|
||||
'doc_picker_btn' => 'Wybierz z Moich dokumentów',
|
||||
'audio_picker_btn' => 'Wybierz z Mojego audio',
|
||||
'doc_picker_modal_title' => 'Wybierz z Moich dokumentów',
|
||||
|
||||
// MCP setup page + tool detail pages
|
||||
'mcp_page_title' => 'MCP — Do Better Norge',
|
||||
'mcp_meta_desc' => 'Połącz Claude, Cursor i inne narzędzia AI z wszystkimi 19 narzędziami przygotowania prawnego DBN za pośrednictwem MCP.',
|
||||
|
||||
@@ -65,7 +65,7 @@ $_footerAddonI18n = [
|
||||
<div id="docPickerBackdrop" class="doc-picker-backdrop" hidden role="dialog" aria-modal="true" aria-labelledby="docPickerTitle">
|
||||
<div class="doc-picker-dialog">
|
||||
<div class="doc-picker-dialog__head">
|
||||
<h3 id="docPickerTitle">Select from My Docs</h3>
|
||||
<h3 id="docPickerTitle"><?= htmlspecialchars(dbnToolsT('doc_picker_modal_title', $uiLang)) ?></h3>
|
||||
<button class="doc-picker-dialog__close" aria-label="Close">×</button>
|
||||
</div>
|
||||
<input type="search" class="doc-picker-dialog__search" placeholder="Search documents…" aria-label="Search documents">
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
<div id="docPickerSection" class="doc-picker-section">
|
||||
<button type="button" id="docPickerBtn" class="doc-picker-btn" aria-haspopup="dialog">
|
||||
<svg class="doc-picker-btn__icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3 2h7l3 3v9H3V2z" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/><path d="M10 2v3h3" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/><path d="M5 7h6M5 9.5h4" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
<span>Select from My Docs</span>
|
||||
<span><?= htmlspecialchars(dbnToolsT('doc_picker_btn', $uiLang)) ?></span>
|
||||
</button>
|
||||
<div id="docPickerChips" class="doc-picker-chips" aria-label="Selected documents"></div>
|
||||
<input type="hidden" id="docPickerIds" name="doc_ids" value="">
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ $laI18n = [
|
||||
<div id="docPickerSection" class="doc-picker-section">
|
||||
<button type="button" id="docPickerBtn" class="doc-picker-btn" aria-haspopup="dialog">
|
||||
<svg class="doc-picker-btn__icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="2" y="1" width="9" height="12" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M5 5h5M5 8h3" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><rect x="7" y="9" width="6" height="5" rx="1" fill="white" stroke="currentColor" stroke-width="1.3"/><path d="M9 11h2M9 12.5h1" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>
|
||||
<span>Select from My Docs</span>
|
||||
<span><?= htmlspecialchars($laT('doc_picker_btn')) ?></span>
|
||||
</button>
|
||||
<div id="docPickerChips" class="doc-picker-chips" aria-label="Selected documents"></div>
|
||||
<input type="hidden" id="docPickerIds" name="doc_ids" value="">
|
||||
|
||||
+1
-1
@@ -90,7 +90,7 @@ require_once __DIR__ . '/includes/layout.php';
|
||||
<div id="docPickerSection" class="doc-picker-section">
|
||||
<button type="button" id="docPickerBtn" class="doc-picker-btn" aria-haspopup="dialog">
|
||||
<svg class="doc-picker-btn__icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="2" y="1" width="9" height="12" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M5 5h5M5 8h3" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><rect x="7" y="9" width="6" height="5" rx="1" fill="white" stroke="currentColor" stroke-width="1.3"/><path d="M9 11h2M9 12.5h1" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>
|
||||
<span>Select from My Docs</span>
|
||||
<span><?= htmlspecialchars(dbnToolsT('doc_picker_btn', $uiLang)) ?></span>
|
||||
</button>
|
||||
<div id="docPickerChips" class="doc-picker-chips" aria-label="Selected documents"></div>
|
||||
<input type="hidden" id="docPickerIds" name="doc_ids" value="">
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ $ltI18n = [
|
||||
<div id="docPickerSection" class="doc-picker-section">
|
||||
<button type="button" id="docPickerBtn" class="doc-picker-btn" aria-haspopup="dialog">
|
||||
<svg class="doc-picker-btn__icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="2" y="1" width="9" height="12" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M5 5h5M5 8h3" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><rect x="7" y="9" width="6" height="5" rx="1" fill="white" stroke="currentColor" stroke-width="1.3"/><path d="M9 11h2M9 12.5h1" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>
|
||||
<span>Select from My Docs</span>
|
||||
<span><?= htmlspecialchars($ltT('doc_picker_btn')) ?></span>
|
||||
</button>
|
||||
<div id="docPickerChips" class="doc-picker-chips" aria-label="Selected documents"></div>
|
||||
<input type="hidden" id="docPickerIds" name="doc_ids" value="">
|
||||
|
||||
Reference in New Issue
Block a user