fix: localize external notes drawer copy

This commit is contained in:
Frank Song
2026-05-25 08:46:48 +08:00
parent 4132085e0c
commit d2e4dfabb4
3 changed files with 149 additions and 101 deletions
+4 -1
View File
@@ -3,6 +3,10 @@
## [Unreleased]
### Fixed
- Third-party notes drawer copy now uses localized strings in the supported non-English locale bundles instead of reusing the English defaults.
## [v0.51.132] — 2026-05-24 — Release DD (stage-batch14 — 4-PR replayed-context + interrupted-response + shutdown affordance + passkey opt-in)
### Added
@@ -27,7 +31,6 @@
- CHANGELOG entries added for PR #2685 and PR #2824 (both originally missing despite functional code changes)
- Deferred to follow-up: per-turn cumulative live-tool-prompt token cap (#2685 only added per-call cap; aggregate across many tool calls is a separate refactor).
- **i18n parity**: 7 new shutdown-affordance keys added across all 11 non-en locales (it, ja, ru, es, de, zh, zh-Hant, pt, ko, fr, tr) so locale parity tests pass on first run.
## [v0.51.131] — 2026-05-24 — Release DC (stage-batch13 — 6-PR notes-drawer + context-parity + PWA-swipe + locale polish)
### Added
+111 -100
View File
@@ -2379,17 +2379,17 @@ const LOCALES = {
memory_saved: 'Memoria salvata',
my_notes: 'Le Mie Note',
user_profile: 'Profilo Utente',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Note di terze parti',
external_notes_empty: 'Nessuna fonte MCP di note o conoscenza è ancora visibile. Configura Joplin, Obsidian, Notion, llm-wiki o un altro server di note per mostrarlo qui.',
external_notes_auto_recall_hint: 'Il richiamo automatico della sessione non cambia; questo pannello mostra solo fonti configurate e strumenti di lettura/ricerca disponibili.',
external_notes_no_tools: 'Nessuno strumento di lettura/ricerca è attualmente visibile per questa fonte.',
external_notes_tool_count: (count) => `${count} strument${Number(count)===1?'o':'i'} per note disponibile${Number(count)===1?'':'i'}`,
external_notes_configured_hint: 'I nomi degli strumenti sono attesi da questa fonte configurata; gli schemi live appariranno quando il runtime WebUI li esporrà.',
external_notes_recent_ai: 'Usate di recente dallAI',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Richiamo automatico',
external_notes_search_placeholder: 'Cerca note…',
external_notes_search_empty: 'Cerca in una fonte di note configurata per visualizzare anteprime qui.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Ancora nessuna nota.',
@@ -3655,17 +3655,17 @@ const LOCALES = {
memory_saved: 'メモリを保存しました',
my_notes: 'マイノート',
user_profile: 'ユーザープロファイル',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'サードパーティのノート',
external_notes_empty: 'ノートまたはナレッジ用の MCP ソースはまだ表示されていません。JoplinObsidianNotionllm-wiki、または別のノートサーバーを設定するとここに表示されます。',
external_notes_auto_recall_hint: '自動セッションリコールは変更されません。このドロワーには、設定済みソースと利用可能な読み取り/検索ツールだけが表示されます。',
external_notes_no_tools: 'このソースで利用できる読み取り/検索ツールは現在表示されていません。',
external_notes_tool_count: (count) => `${count} 個のノートツールが利用可能`,
external_notes_configured_hint: 'この設定済みソースからツール名が想定されています。WebUI ランタイムが公開するとライブスキーマが表示されます。',
external_notes_recent_ai: 'AI が最近使用',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: '自動リコール',
external_notes_search_placeholder: 'ノートを検索…',
external_notes_search_empty: '設定済みのノートソースを検索すると、ここにプレビューが表示されます。',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'まだノートはありません。',
@@ -4664,17 +4664,17 @@ const LOCALES = {
memory_saved: 'Память сохранена',
my_notes: 'Мои заметки',
user_profile: 'Пользовательский профиль',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Сторонние заметки',
external_notes_empty: 'Источники заметок или знаний MCP пока не видны. Настройте Joplin, Obsidian, Notion, llm-wiki или другой сервер заметок, чтобы он появился здесь.',
external_notes_auto_recall_hint: 'Автоматический вызов контекста сеанса не меняется; эта панель показывает только настроенные источники и доступные инструменты чтения/поиска.',
external_notes_no_tools: 'Для этого источника сейчас не видно инструментов чтения/поиска.',
external_notes_tool_count: (count) => `Доступно инструментов заметок: ${count}`,
external_notes_configured_hint: 'От этого настроенного источника ожидаются имена инструментов; живые схемы появятся, когда WebUI runtime их предоставит.',
external_notes_recent_ai: 'Недавно использовано AI',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Автоматический вызов',
external_notes_search_placeholder: 'Искать заметки…',
external_notes_search_empty: 'Выполните поиск по настроенному источнику заметок, чтобы увидеть предпросмотр здесь.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Пока нет заметок.',
@@ -5892,17 +5892,17 @@ const LOCALES = {
memory_saved: 'Memory saved',
my_notes: 'My Notes',
user_profile: 'User Profile',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Notas de terceros',
external_notes_empty: 'Aún no hay fuentes MCP de notas o conocimiento visibles. Configura Joplin, Obsidian, Notion, llm-wiki u otro servidor de notas para mostrarlo aquí.',
external_notes_auto_recall_hint: 'El recuerdo automático de la sesión no cambia; este panel solo muestra fuentes configuradas y herramientas de lectura/búsqueda disponibles.',
external_notes_no_tools: 'No hay herramientas de lectura/búsqueda visibles actualmente para esta fuente.',
external_notes_tool_count: (count) => `${count} herramienta${Number(count)===1?'':'s'} de notas disponible${Number(count)===1?'':'s'}`,
external_notes_configured_hint: 'Se esperan nombres de herramientas de esta fuente configurada; los esquemas en vivo aparecerán cuando el runtime de WebUI los exponga.',
external_notes_recent_ai: 'Usado recientemente por la IA',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Recuerdo automático',
external_notes_search_placeholder: 'Buscar notas…',
external_notes_search_empty: 'Busca en una fuente de notas configurada para previsualizar notas aquí.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'No notes yet.',
@@ -7292,17 +7292,17 @@ const LOCALES = {
memory_saved: 'Notiz gespeichert.',
my_notes: 'Meine Notizen',
user_profile: 'Benutzerprofil',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Notizen von Drittanbietern',
external_notes_empty: 'Noch sind keine MCP-Quellen für Notizen oder Wissen sichtbar. Konfiguriere Joplin, Obsidian, Notion, llm-wiki oder einen anderen Notizen-Server, um ihn hier anzuzeigen.',
external_notes_auto_recall_hint: 'Der automatische Sitzungsabruf bleibt unverändert; diese Leiste zeigt nur konfigurierte Quellen und verfügbare Lese-/Suchwerkzeuge.',
external_notes_no_tools: 'Für diese Quelle sind derzeit keine Lese-/Suchwerkzeuge sichtbar.',
external_notes_tool_count: (count) => `${count} Notizwerkzeug${Number(count)===1?'':'e'} verfügbar`,
external_notes_configured_hint: 'Werkzeugnamen werden von dieser konfigurierten Quelle erwartet; Live-Schemas erscheinen, wenn die WebUI-Laufzeit sie bereitstellt.',
external_notes_recent_ai: 'Zuletzt von der KI verwendet',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Automatischer Abruf',
external_notes_search_placeholder: 'Notizen suchen…',
external_notes_search_empty: 'Durchsuche eine konfigurierte Notizenquelle, um hier eine Vorschau zu sehen.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Noch keine Notizen.',
@@ -8306,17 +8306,17 @@ const LOCALES = {
memory_saved: '记忆已保存',
my_notes: '我的备注',
user_profile: '用户画像',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: '第三方笔记',
external_notes_empty: '还没有可见的笔记或知识 MCP 来源。配置 JoplinObsidianNotionllm-wiki 或其他笔记服务器后会显示在这里。',
external_notes_auto_recall_hint: '自动会话召回保持不变;这个抽屉只显示已配置的来源和可用的读取/搜索工具。',
external_notes_no_tools: '此来源当前没有可见的读取/搜索工具。',
external_notes_tool_count: (count) => `${count} 个笔记工具可用`,
external_notes_configured_hint: '此已配置来源应提供工具名称;当 WebUI 运行时暴露实时 schema 后会显示在这里。',
external_notes_recent_ai: 'AI 最近使用',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: '自动召回',
external_notes_search_placeholder: '搜索笔记…',
external_notes_search_empty: '搜索已配置的笔记来源后,可在这里预览笔记。',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: '暂无备注。',
@@ -9525,6 +9525,17 @@ const LOCALES = {
no_profile_yet: '\u5c1a\u7121\u8a2d\u5b9a\u6a94\u3002',
agent_soul: '智能體靈魂',
no_soul_yet: '尚無靈魂定義。',
external_notes_sources: '第三方筆記',
external_notes_empty: '尚未看到任何筆記或知識 MCP 來源。設定 Joplin、Obsidian、Notion、llm-wiki 或其他筆記伺服器後,會顯示在這裡。',
external_notes_auto_recall_hint: '自動會話召回維持不變;這個抽屜只顯示已設定的來源,以及可用的讀取/搜尋工具。',
external_notes_no_tools: '此來源目前沒有可見的讀取/搜尋工具。',
external_notes_tool_count: (count) => `${count} 個筆記工具可用`,
external_notes_configured_hint: '此已設定來源應提供工具名稱;當 WebUI 執行階段提供即時 schema 時會顯示在這裡。',
external_notes_recent_ai: 'AI 最近使用',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: '自動召回',
external_notes_search_placeholder: '搜尋筆記…',
external_notes_search_empty: '搜尋已設定的筆記來源後,可在這裡預覽筆記。',
not_available: '\u7121',
profile_active: '\u555f\u7528\u4e2d',
profile_api_key_placeholder: 'API \u91d1\u9470\uff08\u9078\u586b\uff09',
@@ -10874,17 +10885,17 @@ const LOCALES = {
memory_saved: 'Memória salva',
my_notes: 'Minhas Notas',
user_profile: 'Perfil do Usuário',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Notas de terceiros',
external_notes_empty: 'Nenhuma fonte MCP de notas ou conhecimento está visível ainda. Configure Joplin, Obsidian, Notion, llm-wiki ou outro servidor de notas para listá-lo aqui.',
external_notes_auto_recall_hint: 'A recuperação automática da sessão não muda; esta gaveta mostra apenas fontes configuradas e ferramentas de leitura/pesquisa disponíveis.',
external_notes_no_tools: 'Nenhuma ferramenta de leitura/pesquisa está visível para esta fonte no momento.',
external_notes_tool_count: (count) => `${count} ferramenta${Number(count)===1?'':'s'} de notas ${Number(count)===1?'disponível':'disponíveis'}`,
external_notes_configured_hint: 'Nomes de ferramentas são esperados desta fonte configurada; esquemas ao vivo aparecerão quando o runtime do WebUI os expuser.',
external_notes_recent_ai: 'Usado recentemente pela IA',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Recuperação automática',
external_notes_search_placeholder: 'Pesquisar notas…',
external_notes_search_empty: 'Pesquise em uma fonte de notas configurada para pré-visualizar notas aqui.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Nenhuma nota ainda.',
@@ -12054,17 +12065,17 @@ const LOCALES = {
memory_saved: 'Memory saved',
my_notes: 'My Notes',
user_profile: 'User Profile',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: '타사 노트',
external_notes_empty: '아직 표시되는 노트 또는 지식 MCP 소스가 없습니다. Joplin, Obsidian, Notion, llm-wiki 또는 다른 노트 서버를 설정하면 여기에 표시됩니다.',
external_notes_auto_recall_hint: '자동 세션 리콜은 변경되지 않습니다. 이 드로어는 설정된 소스와 사용 가능한 읽기/검색 도구만 보여줍니다.',
external_notes_no_tools: '이 소스에 대해 현재 표시되는 읽기/검색 도구가 없습니다.',
external_notes_tool_count: (count) => `${count}개의 노트 도구 사용 가능`,
external_notes_configured_hint: '이 설정된 소스에서 도구 이름이 제공될 것으로 예상됩니다. WebUI 런타임이 노출하면 실시간 스키마가 표시됩니다.',
external_notes_recent_ai: 'AI가 최근 사용',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: '자동 리콜',
external_notes_search_placeholder: '노트 검색…',
external_notes_search_empty: '설정된 노트 소스를 검색하면 여기에 노트 미리보기가 표시됩니다.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'No notes yet.',
@@ -13245,17 +13256,17 @@ const LOCALES = {
memory_saved: 'Mémoire sauvegardée',
my_notes: 'Mes notes',
user_profile: 'Profil utilisateur',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Notes tierces',
external_notes_empty: 'Aucune source MCP de notes ou de connaissances nest encore visible. Configurez Joplin, Obsidian, Notion, llm-wiki ou un autre serveur de notes pour lafficher ici.',
external_notes_auto_recall_hint: 'Le rappel automatique de session reste inchangé ; ce tiroir affiche seulement les sources configurées et les outils de lecture/recherche disponibles.',
external_notes_no_tools: 'Aucun outil de lecture/recherche nest actuellement visible pour cette source.',
external_notes_tool_count: (count) => `${count} outil${Number(count)===1?'':'s'} de notes disponible${Number(count)===1?'':'s'}`,
external_notes_configured_hint: 'Des noms doutils sont attendus depuis cette source configurée ; les schémas live apparaîtront quand le runtime WebUI les exposera.',
external_notes_recent_ai: 'Utilisé récemment par lIA',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Rappel automatique',
external_notes_search_placeholder: 'Rechercher des notes…',
external_notes_search_empty: 'Recherchez dans une source de notes configurée pour prévisualiser les notes ici.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Aucune note pour l\'instant.',
@@ -14529,17 +14540,17 @@ const LOCALES = {
memory_saved: 'Bellek kaydedildi',
my_notes: 'Notlarım',
user_profile: 'Kullanıcı Profili',
external_notes_sources: 'Third-party notes',
external_notes_empty: 'No note or knowledge MCP sources are visible yet. Configure Joplin, Obsidian, Notion, llm-wiki, or another notes server to list it here.',
external_notes_auto_recall_hint: 'Automatic session recall is unchanged; this drawer only shows configured sources and available read/search tools.',
external_notes_no_tools: 'No read/search tools are currently visible for this source.',
external_notes_tool_count: (count) => `${count} note tool${Number(count)===1?'':'s'} available`,
external_notes_configured_hint: 'Tool names are expected from this configured source; live schemas will appear when the WebUI runtime exposes them.',
external_notes_recent_ai: 'Recently used by AI',
external_notes_sources: 'Üçüncü taraf notlar',
external_notes_empty: 'Henüz görünür not veya bilgi MCP kaynağı yok. Burada listelemek için Joplin, Obsidian, Notion, llm-wiki veya başka bir not sunucusu yapılandırın.',
external_notes_auto_recall_hint: 'Otomatik oturum hatırlama değişmedi; bu çekmece yalnızca yapılandırılmış kaynakları ve kullanılabilir okuma/arama araçlarını gösterir.',
external_notes_no_tools: 'Bu kaynak için şu anda görünür okuma/arama aracı yok.',
external_notes_tool_count: (count) => `${count} not aracı kullanılabilir`,
external_notes_configured_hint: 'Bu yapılandırılmış kaynaktan araç adları beklenir; WebUI runtime bunları sunduğunda canlı şemalar görünecek.',
external_notes_recent_ai: 'AI tarafından yakın zamanda kullanıldı',
external_notes_auto: 'auto',
external_notes_recent_ai_reason: 'Automatic recall',
external_notes_search_placeholder: 'Search notes…',
external_notes_search_empty: 'Search a configured notes source to preview notes here.',
external_notes_recent_ai_reason: 'Otomatik hatırlama',
external_notes_search_placeholder: 'Notlarda ara…',
external_notes_search_empty: 'Notları burada önizlemek için yapılandırılmış bir not kaynağında arama yapın.',
source_active: 'active',
source_configured: 'configured',
no_notes_yet: 'Henüz not yok.',
+34
View File
@@ -190,6 +190,40 @@ def test_external_notes_menu_item_is_default_off_from_memory_payload():
assert "if (s.key === 'external_notes' && !_memoryData.external_notes_enabled) continue;" in panels
def test_external_notes_drawer_copy_is_localized_outside_english():
from pathlib import Path
i18n = Path("static/i18n.js").read_text(encoding="utf-8")
assert i18n.count("external_notes_sources: 'Third-party notes'") == 1
assert i18n.count("external_notes_recent_ai: 'Recently used by AI'") == 1
assert i18n.count("external_notes_recent_ai_reason: 'Automatic recall'") == 1
assert i18n.count("external_notes_search_placeholder: 'Search notes…'") == 1
locale_sources = [
(" en: {", " it: {", "external_notes_sources: 'Third-party notes'"),
(" it: {", " ja: {", "external_notes_sources: 'Note di terze parti'"),
(" ja: {", " ru: {", "external_notes_sources: 'サードパーティのノート'"),
(" ru: {", " es: {", "external_notes_sources: 'Сторонние заметки'"),
(" es: {", " de: {", "external_notes_sources: 'Notas de terceros'"),
(" de: {", " zh: {", "external_notes_sources: 'Notizen von Drittanbietern'"),
(" zh: {", " 'zh-Hant': {", "external_notes_sources: '第三方笔记'"),
(" 'zh-Hant': {", " pt: {", "external_notes_sources: '第三方筆記'"),
(" pt: {", " ko: {", "external_notes_sources: 'Notas de terceiros'"),
(" ko: {", " fr: {", "external_notes_sources: '타사 노트'"),
(" fr: {", " tr: {", "external_notes_sources: 'Notes tierces'"),
]
for start_marker, end_marker, expected in locale_sources:
start = i18n.index(start_marker)
end = i18n.index(end_marker, start)
assert expected in i18n[start:end]
tr_start = i18n.index(" tr: {")
tr_block = i18n[tr_start:]
assert "external_notes_sources: 'Üçüncü taraf notlar'" in tr_block
assert "external_notes_sources: 'Third-party notes'" not in tr_block
def test_external_notes_search_button_matches_minimal_dark_controls():
from pathlib import Path