## Summary - Adds file writing capability to Monaco editor in the file viewer - Implements writeFile API on the server for workspace files - Integrates save functionality into the file viewer UI with proper state management ## Bug Fixes (Review Feedback) - Fixed failed save discarding edits when switching files - now checks save result and only proceeds if successful - Fixed refresh overwriting dirty editor state - now prompts for confirmation before discarding edits - Fixed save button unable to save empty files - changed check from `if (content)` to `if (content !== undefined && content !== null)` - Added agent edit conflict detection - when agent edits file while user has unsaved changes, shows conflict dialog with Overwrite/Cancel options - Fixed dialog appearing behind unpinned sidebar - increased alert dialog z-index to z-100 ## Related Issues - Closes #251 --------- Co-authored-by: Jess Chadwick <jchadwick@gmail.com>
179 lines
12 KiB
TypeScript
179 lines
12 KiB
TypeScript
export const instanceMessages = {
|
||
"instanceTabs.new.title": "מופע חדש (Cmd/Ctrl+N)",
|
||
"instanceTabs.new.ariaLabel": "מופע חדש",
|
||
"instanceTabs.remote.title": "חיבור מרוחק",
|
||
"instanceTabs.remote.ariaLabel": "חיבור מרוחק",
|
||
|
||
"instanceInfo.title": "מידע על המופע",
|
||
"instanceInfo.labels.folder": "תיקייה",
|
||
"instanceInfo.labels.project": "פרויקט",
|
||
"instanceInfo.labels.versionControl": "בקרת גרסאות",
|
||
"instanceInfo.labels.opencodeVersion": "גרסת OpenCode",
|
||
"instanceInfo.labels.binaryPath": "נתיב קובץ בינארי",
|
||
"instanceInfo.labels.environmentVariables": "משתני סביבה ({count})",
|
||
"instanceInfo.loading": "טוען...",
|
||
"instanceInfo.server.title": "שרת",
|
||
"instanceInfo.server.port": "פורט:",
|
||
"instanceInfo.server.pid": "PID:",
|
||
"instanceInfo.server.status": "סטטוס:",
|
||
|
||
"instanceTab.status.permission": "ממתין לאישור",
|
||
"instanceTab.status.compacting": "מסכם",
|
||
"instanceTab.status.working": "עובד",
|
||
"instanceTab.status.idle": "מוכן",
|
||
"instanceTab.status.ariaLabel": "סטטוס מופע: {status}",
|
||
"instanceTab.actions.close.ariaLabel": "סגור מופע",
|
||
|
||
"instanceShell.leftPanel.sessionsTitle": "סשנים",
|
||
"instanceShell.leftPanel.instanceInfo": "מידע על המופע",
|
||
|
||
"instanceShell.leftDrawer.pin": "נעץ מגירה שמאלית",
|
||
"instanceShell.leftDrawer.unpin": "שחרר נעיצת מגירה שמאלית",
|
||
"instanceShell.leftDrawer.toggle.pinned": "המגירה השמאלית נעוצה",
|
||
"instanceShell.leftDrawer.toggle.open": "פתח מגירה שמאלית",
|
||
"instanceShell.leftDrawer.toggle.close": "סגור מגירה שמאלית",
|
||
|
||
"instanceShell.rightDrawer.pin": "נעץ מגירה ימנית",
|
||
"instanceShell.rightDrawer.unpin": "שחרר נעיצת מגירה ימנית",
|
||
"instanceShell.rightDrawer.toggle.pinned": "המגירה הימנית נעוצה",
|
||
"instanceShell.rightDrawer.toggle.open": "פתח מגירה ימנית",
|
||
"instanceShell.rightDrawer.toggle.close": "סגור מגירה ימנית",
|
||
|
||
"instanceShell.fullscreen.enter": "מסך מלא",
|
||
"instanceShell.fullscreen.exit": "יציאה ממסך מלא",
|
||
|
||
"instanceShell.metrics.usedLabel": "בשימוש",
|
||
"instanceShell.metrics.availableLabel": "זמין",
|
||
|
||
"instanceShell.commandPalette.openAriaLabel": "פתח לוח פקודות",
|
||
"instanceShell.commandPalette.button": "לוח פקודות",
|
||
|
||
"instanceShell.connection.ariaLabel": "חיבור {status}",
|
||
"instanceShell.connection.connected": "מחובר",
|
||
"instanceShell.connection.connecting": "מתחבר...",
|
||
"instanceShell.connection.disconnected": "מנותק",
|
||
"instanceShell.connection.unknown": "לא ידוע",
|
||
|
||
"instanceWelcome.shortcuts.newSession": "סשן חדש",
|
||
"instanceWelcome.empty.title": "אין סשנים קודמים",
|
||
"instanceWelcome.empty.description": "צור סשן חדש למטה כדי להתחיל",
|
||
"instanceWelcome.loading.title": "טוען סשנים",
|
||
"instanceWelcome.loading.description": "מאחזר את הסשנים הקודמים שלך...",
|
||
"instanceWelcome.resume.title": "המשך סשן",
|
||
"instanceWelcome.resume.subtitle.one": "סשן אחד זמין",
|
||
"instanceWelcome.resume.subtitle.other": "{count} סשנים זמינים",
|
||
"instanceWelcome.session.untitled": "סשן ללא שם",
|
||
"instanceWelcome.new.title": "התחל סשן חדש",
|
||
"instanceWelcome.new.subtitle": "ישתמש אוטומטית בסוכן/מודל האחרון שלך",
|
||
"instanceWelcome.new.createButton": "צור סשן",
|
||
"instanceWelcome.overlay.close": "סגור",
|
||
"instanceWelcome.actions.viewInstanceInfo": "צפה במידע על המופע",
|
||
"instanceWelcome.actions.renameTitle": "שנה שם סשן",
|
||
"instanceWelcome.actions.deleteTitle": "מחק סשן",
|
||
"instanceWelcome.hints.navigate": "ניווט",
|
||
"instanceWelcome.hints.jump": "קפיצה",
|
||
"instanceWelcome.hints.firstLast": "ראשון/אחרון",
|
||
"instanceWelcome.hints.resume": "המשך",
|
||
"instanceWelcome.hints.delete": "מחיקה",
|
||
"instanceWelcome.toasts.renameError": "לא ניתן לשנות שם הסשן",
|
||
|
||
"instanceDisconnected.title": "המופע התנתק",
|
||
"instanceDisconnected.folderFallback": "סביבת עבודה זו",
|
||
"instanceDisconnected.reasonFallback": "השרת הפסיק להגיב",
|
||
"instanceDisconnected.description": "לא ניתן עוד להגיע ל-{folder}. סגור את הלשונית כדי להמשיך לעבוד.",
|
||
"instanceDisconnected.details.title": "פרטים",
|
||
"instanceDisconnected.details.folderLabel": "תיקייה:",
|
||
"instanceDisconnected.actions.closeInstance": "סגור מופע",
|
||
|
||
"instanceShell.empty.title": "לא נבחר סשן",
|
||
"instanceShell.empty.description": "בחר סשן לצפייה בהודעות",
|
||
|
||
"instanceShell.rightPanel.title": "לוח סטטוס",
|
||
"instanceShell.rightPanel.tabs.changes": "שינויי סשן",
|
||
"instanceShell.rightPanel.tabs.gitChanges": "שינויי Git",
|
||
"instanceShell.rightPanel.tabs.files": "קבצים",
|
||
"instanceShell.rightPanel.tabs.status": "סטטוס",
|
||
"instanceShell.rightPanel.tabs.ariaLabel": "לשוניות לוח ימני",
|
||
"instanceShell.rightPanel.actions.refresh": "רענן",
|
||
"instanceShell.rightPanel.actions.save": "שמור (Ctrl+S)",
|
||
"instanceShell.rightPanel.actions.saveConfirm.message": "האם ברצונך לשמור את השינויים לפני המעבר?",
|
||
"instanceShell.rightPanel.actions.saveConfirm.confirmLabel": "שמור",
|
||
"instanceShell.rightPanel.actions.saveConfirm.cancelLabel": "בטל שינויים",
|
||
"instanceShell.rightPanel.actions.conflict.message": "הקובץ שונה על ידי הסוכן. לדרוס את שינויי הסוכן?",
|
||
"instanceShell.rightPanel.actions.conflict.confirmLabel": "דרוס",
|
||
"instanceShell.rightPanel.actions.conflict.cancelLabel": "בטל",
|
||
"instanceShell.rightPanel.actions.refreshDirty.message": "לקובץ יש שינויים שלא נשמרו. רענון יבטל את העריכות שלך. להמשיך?",
|
||
"instanceShell.rightPanel.actions.refreshDirty.confirmLabel": "רענן",
|
||
"instanceShell.rightPanel.actions.refreshDirty.cancelLabel": "בטל",
|
||
"instanceShell.rightPanel.toast.saveSuccess": "הקובץ נשמר בהצלחה",
|
||
"instanceShell.rightPanel.toast.saveError": "כשלון בשמירת הקובץ",
|
||
"instanceShell.rightPanel.sections.sessionChanges": "שינויי סשן",
|
||
"instanceShell.rightPanel.sections.sessionChanges.tooltip": "קבצים שהשתנו בסשן הנוכחי. מציג הוספות ומחיקות לכל קובץ.",
|
||
"instanceShell.rightPanel.sections.plan": "תוכנית",
|
||
"instanceShell.rightPanel.sections.plan.tooltip": "מפת הדרכים של הסוכן לסשן זה. עוקב אחר משימות, תת-משימות וסטטוס השלמתן.",
|
||
"instanceShell.rightPanel.sections.backgroundProcesses": "מעטפות רקע",
|
||
"instanceShell.rightPanel.sections.backgroundProcesses.tooltip": "תהליכים ממושכים שהופעלו על ידי הסוכן. ניתן לעקוב אחר פלטם, לעצור אותם או לסיים אותם.",
|
||
"instanceShell.rightPanel.sections.mcp": "שרתי MCP",
|
||
"instanceShell.rightPanel.sections.mcp.tooltip": "שרתי Model Context Protocol המרחיבים את יכולות הסוכן עם כלים ושירותים חיצוניים.",
|
||
"instanceShell.rightPanel.sections.lsp": "שרתי LSP",
|
||
"instanceShell.rightPanel.sections.lsp.tooltip": "שרתי Language Server Protocol המספקים בינת קוד, אבחון ותכונות ספציפיות לשפה.",
|
||
"instanceShell.rightPanel.sections.plugins": "תוספים",
|
||
"instanceShell.rightPanel.sections.plugins.tooltip": "תוספים המתאימים אישית את הממשק ואת התנהגות השרת, ומוסיפים תכונות מעבר ל-MCP ו-LSP.",
|
||
|
||
"instanceShell.sessionChanges.noSessionSelected": "בחר סשן לצפייה בשינויים.",
|
||
"instanceShell.sessionChanges.loading": "מאחזר שינויי סשן...",
|
||
"instanceShell.sessionChanges.empty": "אין שינויי סשן עדיין.",
|
||
"instanceShell.sessionChanges.filesChanged": "{count} קבצים שונו",
|
||
"instanceShell.sessionChanges.actions.show": "הצג שינויים",
|
||
|
||
"instanceShell.filesShell.fileListTitle": "רשימת קבצים",
|
||
"instanceShell.filesShell.mobileSelectorLabel": "בחר קובץ",
|
||
"instanceShell.filesShell.mobileSelectorEmpty": "בחר קובץ",
|
||
"instanceShell.filesShell.viewerTitle": "מציג שינויים",
|
||
"instanceShell.filesShell.viewerPlaceholder": "תצוגת שינויים מפורטת תתווסף בשלב הבא.",
|
||
"instanceShell.filesShell.viewerEmpty": "לא נבחר קובץ.",
|
||
"instanceShell.filesShell.hideFiles": "הסתר קבצים",
|
||
"instanceShell.filesShell.showFiles": "הצג קבצים",
|
||
"instanceShell.gitChanges.noSessionSelected": "בחר סשן לצפייה בשינויי Git.",
|
||
"instanceShell.gitChanges.loading": "טוען שינויי Git…",
|
||
"instanceShell.gitChanges.empty": "אין שינויי Git עדיין.",
|
||
"instanceShell.diff.hideUnchanged": "הסתר אזורים ללא שינוי",
|
||
"instanceShell.diff.showFull": "הצג קובץ מלא",
|
||
"instanceShell.diff.switchToSplit": "עבור לתצוגה מפוצלת",
|
||
"instanceShell.diff.switchToUnified": "עבור לתצוגה מאוחדת",
|
||
"instanceShell.diff.enableWordWrap": "הפעל גלישת מילים",
|
||
"instanceShell.diff.disableWordWrap": "כבה גלישת מילים",
|
||
"instanceShell.worktree.create": "+ צור worktree",
|
||
|
||
"instanceShell.plan.noSessionSelected": "בחר סשן לצפייה בתוכנית.",
|
||
"instanceShell.plan.empty": "עדיין לא תוכנן דבר.",
|
||
|
||
"instanceShell.backgroundProcesses.empty": "אין תהליכי רקע.",
|
||
"instanceShell.backgroundProcesses.status": "סטטוס: {status}",
|
||
"instanceShell.backgroundProcesses.output": "פלט: {sizeKb}KB",
|
||
"instanceShell.backgroundProcesses.actions.output": "פלט",
|
||
"instanceShell.backgroundProcesses.actions.stop": "עצור",
|
||
"instanceShell.backgroundProcesses.actions.terminate": "סיים",
|
||
|
||
"versionPill.appWithVersion": "אפליקציה {version}",
|
||
"versionPill.ui": "ממשק",
|
||
"versionPill.uiWithVersion": "ממשק {version}",
|
||
"versionPill.source": " ({source})",
|
||
|
||
"opencodeBinarySelector.title": "קובץ בינארי של OpenCode",
|
||
"opencodeBinarySelector.subtitle": "בחר איזה קובץ הרצה OpenCode ישתמש",
|
||
"opencodeBinarySelector.customPath.placeholder": "הזן נתיב לקובץ בינארי של opencode…",
|
||
"opencodeBinarySelector.actions.add": "הוסף",
|
||
"opencodeBinarySelector.actions.browse": "עיין אחר קובץ בינארי…",
|
||
"opencodeBinarySelector.actions.removeTitle": "הסר קובץ בינארי",
|
||
"opencodeBinarySelector.badge.systemPath": "השתמש בקובץ בינארי מנתיב המערכת",
|
||
"opencodeBinarySelector.status.checkingVersions": "בודק גרסאות…",
|
||
"opencodeBinarySelector.status.checking": "בודק…",
|
||
"opencodeBinarySelector.dialog.title": "בחר קובץ בינארי של OpenCode",
|
||
"opencodeBinarySelector.dialog.description": "עיין בקבצים החשופים על ידי שרת ה-CLI.",
|
||
"opencodeBinarySelector.validation.invalidBinary": "קובץ בינארי לא תקין של OpenCode",
|
||
"opencodeBinarySelector.validation.alreadyValidating": "כבר מאמת",
|
||
"opencodeBinarySelector.display.systemPath": "{name} (נתיב מערכת)",
|
||
"opencodeBinarySelector.versionLabel": "v{version}",
|
||
} as const
|