Преглед изворни кода

feat(app): add Hebrew locale (#42475)

Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
opencode-agent[bot] пре 18 часа
родитељ
комит
979ac810af

+ 48 - 0
.opencode/glossary/he.md

@@ -0,0 +1,48 @@
+# he Glossary
+
+## Sources
+
+- Hebrew Academy approved IT terminology: https://terms.hebrew-academy.org.il/Millonim/ShowMillon?KodMillon=192
+- Firefox Hebrew localization corpus: https://github.com/mozilla-l10n/firefox-l10n/tree/main/he
+- KDE Hebrew localization team and corpus: https://l10n.kde.org/team-infos.php?teamcode=he
+- Community-maintained VS Code Hebrew language pack: https://github.com/AMAARETS/vscode-language-pack-he
+- Microsoft Hebrew developer documentation for Git terminology: https://learn.microsoft.com/he-il/power-platform/alm/tutorials/github-actions-deploy
+- W3C guidance for bidirectional text: https://www.w3.org/International/articles/strings-and-bidi/
+
+## Do Not Translate (Locale Additions)
+
+- `OpenCode` (preserve casing in prose and UI copy)
+- `API`, `MCP`, `LSP`, `OAuth`, `Git`, model names, and provider names
+- Commands, flags, keyboard shortcuts, file paths, URLs, identifiers, hashes, and code literals
+- Keep `commit` and `diff` when they name the exact Git artifact or operation
+
+## Preferred Terms
+
+| English / Context | Preferred     | Notes                                                                     |
+| ----------------- | ------------- | ------------------------------------------------------------------------- |
+| session           | `הפעלה`       | Use `שיחה` only when the source specifically means a chat or conversation |
+| workspace         | `סביבת עבודה` |                                                                           |
+| terminal          | `מסוף`        | Prefer the established Hebrew term over transliteration                   |
+| command           | `פקודה`       |                                                                           |
+| provider          | `ספק`         | Use `ספק מודלים` where the bare noun is ambiguous                         |
+| model             | `מודל`        |                                                                           |
+| API key           | `מפתח API`    | Keep the acronym in Latin letters                                         |
+| plugin            | `תוסף`        |                                                                           |
+| repository        | `מאגר`        | Use `מאגר Git` where context is ambiguous                                 |
+| branch            | `ענף`         |                                                                           |
+| context           | `הקשר`        | Use `חלון הקשר` for context window                                        |
+| tokens            | `אסימונים`    |                                                                           |
+
+## Guidance
+
+- Prefer natural modern Israeli Hebrew over word-for-word translation or obscure coined terms.
+- Use short action verbs for controls and translate complete phrases in context.
+- Keep recognized developer acronyms and exact Git vocabulary in Latin script instead of phonetic transliteration.
+- Treat embedded code, paths, commands, shortcuts, hashes, model IDs, and other Latin technical artifacts as LTR content inside the RTL interface.
+- Keep recurring concepts consistent and do not collapse session, chat, run, and launch into one Hebrew term.
+
+## Avoid
+
+- Avoid transliterations such as `טרמינל`, `פלאגין`, and `קומנד` when `מסוף`, `תוסף`, and `פקודה` are clear.
+- Avoid translating `commit` as `התחייבות`.
+- Avoid inventing Hebrew expansions for `API`, `MCP`, or `LSP`.

+ 2 - 1
packages/app/src/context/language.tsx

@@ -25,7 +25,7 @@ import {
 export type Locale = DesktopNativeLocale
 export type Direction = "ltr" | "rtl"
 
-const RTL_LOCALES: ReadonlySet<Locale> = new Set(["ar", "ur", "pa", "fa", "dv"])
+const RTL_LOCALES: ReadonlySet<Locale> = new Set(["ar", "he", "ur", "pa", "fa", "dv"])
 
 function localeDirection(locale: Locale): Direction {
   return RTL_LOCALES.has(locale) ? "rtl" : "ltr"
@@ -73,6 +73,7 @@ const loaders: Record<Exclude<Locale, "en">, () => Promise<Dictionary>> = {
   ru: () => merge(import("@/i18n/ru"), import("@opencode-ai/ui/i18n/ru")),
   uk: () => merge(import("@/i18n/uk"), import("@opencode-ai/ui/i18n/uk")),
   ar: () => merge(import("@/i18n/ar"), import("@opencode-ai/ui/i18n/ar")),
+  he: () => merge(import("@/i18n/he"), import("@opencode-ai/ui/i18n/he")),
   no: () => merge(import("@/i18n/no"), import("@opencode-ai/ui/i18n/no")),
   br: () => merge(import("@/i18n/br"), import("@opencode-ai/ui/i18n/br")),
   th: () => merge(import("@/i18n/th"), import("@opencode-ai/ui/i18n/th")),

+ 6 - 0
packages/app/src/i18n/desktop-native.test.ts

@@ -29,6 +29,7 @@ describe("desktop native translations", () => {
       "Українська",
       "Bosanski",
       "العربية",
+      "עברית",
       "Norsk",
       "Português (Brasil)",
       "ไทย",
@@ -133,6 +134,11 @@ describe("desktop native locale detection", () => {
     expect(detectDesktopNativeLocale(["nb-NO"])).toBe("no")
     expect(detectDesktopNativeLocale(["nn-NO"])).toBe("no")
   })
+
+  test("recognizes Hebrew language tags", () => {
+    expect(detectDesktopNativeLocale(["he"])).toBe("he")
+    expect(detectDesktopNativeLocale(["he-IL"])).toBe("he")
+  })
 })
 
 describe("desktop native ICU data", () => {

+ 3 - 0
packages/app/src/i18n/desktop-native.ts

@@ -13,6 +13,7 @@ export const DESKTOP_NATIVE_LOCALES = [
   "uk",
   "bs",
   "ar",
+  "he",
   "no",
   "br",
   "th",
@@ -80,6 +81,7 @@ export const DESKTOP_NATIVE_LABELS: Record<DesktopNativeLocale, string> = {
   uk: "Українська",
   bs: "Bosanski",
   ar: "العربية",
+  he: "עברית",
   no: "Norsk",
   br: "Português (Brasil)",
   th: "ไทย",
@@ -145,6 +147,7 @@ export const DESKTOP_NATIVE_LOCALE_TAGS: Record<DesktopNativeLocale, string> = {
   uk: "uk",
   bs: "bs",
   ar: "ar",
+  he: "he-IL",
   no: "nb-NO",
   br: "pt-BR",
   th: "th",

+ 1228 - 0
packages/app/src/i18n/he.ts

@@ -0,0 +1,1228 @@
+export const dict = {
+  "desktop.menu.app": "OpenCode",
+  "desktop.menu.file": "קובץ",
+  "desktop.menu.edit": "עריכה",
+  "desktop.menu.view": "תצוגה",
+  "desktop.menu.go": "מעבר",
+  "desktop.menu.window": "חלון",
+  "desktop.menu.help": "עזרה",
+  "desktop.menu.checkForUpdates": "בדוק אם יש עדכונים...",
+  "desktop.menu.settings": "הגדרות",
+  "desktop.menu.reloadWebview": "טען מחדש את Webview",
+  "desktop.menu.restart": "הפעל מחדש",
+  "desktop.menu.exportLogs": "ייצוא יומנים...",
+  "desktop.menu.newSession": "הפעלה חדשה",
+  "desktop.menu.openProject": "פתח פרויקט...",
+  "desktop.menu.newWindow": "חלון חדש",
+  "desktop.menu.closeWindow": "סגור חלון",
+  "desktop.menu.undo": "בטל",
+  "desktop.menu.redo": "בצע מחדש",
+  "desktop.menu.cut": "גזור",
+  "desktop.menu.copy": "העתק",
+  "desktop.menu.paste": "הדבק",
+  "desktop.menu.delete": "מחק",
+  "desktop.menu.selectAll": "בחר הכל",
+  "desktop.menu.toggleSidebar": "הצגה או הסתרה של סרגל הצד",
+  "desktop.menu.toggleTerminal": "הצגה או הסתרה של המסוף",
+  "desktop.menu.toggleFileTree": "הצגה או הסתרה של עץ הקבצים",
+  "desktop.menu.reload": "טען מחדש",
+  "desktop.menu.toggleDeveloperTools": "הצגה או הסתרה של כלי הפיתוח",
+  "desktop.menu.actualSize": "גודל בפועל",
+  "desktop.menu.zoomIn": "הגדלה",
+  "desktop.menu.zoomOut": "הקטנה",
+  "desktop.menu.toggleFullScreen": "מעבר למסך מלא",
+  "desktop.menu.back": "חזרה",
+  "desktop.menu.forward": "קדימה",
+  "desktop.menu.previousSession": "ההפעלה הקודמת",
+  "desktop.menu.nextSession": "ההפעלה הבאה",
+  "desktop.menu.previousProject": "פרויקט קודם",
+  "desktop.menu.nextProject": "הפרויקט הבא",
+  "desktop.menu.minimize": "מזער",
+  "desktop.menu.maximize": "הגדל",
+  "desktop.menu.documentation": "תיעוד OpenCode",
+  "desktop.menu.supportForum": "פורום תמיכה",
+  "desktop.menu.shareFeedback": "שתף משוב",
+  "desktop.menu.reportBug": "דווח על באג",
+  "desktop.menu.ariaLabel": "תפריט OpenCode",
+  "desktop.updater.dialog.checkFailed.message": "בדיקת העדכון נכשלה.",
+  "desktop.updater.dialog.checkFailed.title": "שגיאת עדכון",
+  "desktop.updater.dialog.upToDate.message": "אתה מעודכן.",
+  "desktop.updater.dialog.upToDate.title": "אין עדכונים",
+  "desktop.updater.dialog.ready.message": "הורד עדכון {{version}}. להפעיל מחדש עכשיו?",
+  "desktop.updater.dialog.ready.title": "עדכון מוכן",
+  "desktop.updater.dialog.restart": "הפעל מחדש",
+  "desktop.updater.dialog.later": "מאוחר יותר",
+  "desktop.recovery.action.relaunch": "הפעלה מחדש",
+  "desktop.recovery.action.exportLogs": "ייצוא יומנים",
+  "desktop.recovery.action.keepWaiting": "המשך להמתין",
+  "desktop.recovery.action.quit": "יציאה",
+  "desktop.recovery.loadFailed": "הטעינה של OpenCode נכשלה",
+  "desktop.recovery.terminated": "חלון OpenCode נסגר באופן בלתי צפוי",
+  "desktop.recovery.unresponsive": "OpenCode לא מגיב",
+  "desktop.recovery.unresponsive.detail": "אתה יכול להפעיל מחדש את האפליקציה, לפתוח את היומנים או להמשיך לחכות.",
+  "desktop.recovery.loadFailed.detail": "חלון: {{window}}\nURL: {{url}}\nשגיאה: {{code}} {{description}}",
+  "desktop.recovery.terminated.detail": "חלון: {{window}}\nסיבה: {{reason}}\nקוד: {{code}}",
+  "desktop.recovery.unknown": "<לא ידוע>",
+  "desktop.dialog.chooseFolder": "בחר תיקייה",
+  "desktop.dialog.chooseFile": "בחר קובץ",
+  "desktop.dialog.saveFile": "שמור קובץ",
+  "desktop.dialog.files": "קבצים",
+  "desktop.server.local": "שרת מקומי",
+  "desktop.wsl.error.windowsOnly": "WSL זמין רק ב-Windows",
+  "desktop.wsl.error.unavailable": "WSL אינו זמין",
+  "desktop.wsl.error.listInstalled": "הצגת הפצות WSL המותקנות נכשלה",
+  "desktop.wsl.error.listOnline": "הצגת הפצות WSL הזמינות להתקנה נכשלה",
+  "desktop.wsl.error.executeDistro": "לא ניתן להריץ פקודות בהפצה",
+  "desktop.wsl.error.installWsl": "התקנת WSL נכשלה",
+  "desktop.wsl.error.installDistro": "התקנת ההפצה נכשלה: {{distro}}",
+  "desktop.wsl.error.installOpencode": "התקנת OpenCode נכשלה",
+  "desktop.wsl.error.alreadyAdded": "{{distro}} כבר נוסף",
+  "desktop.wsl.error.opencodeMissing": "opencode אינו מותקן בהפצה זו",
+  "desktop.wsl.error.opencodeCannotRun": "opencode מותקן אך לא הצליח לפעול",
+  "desktop.wsl.error.opencodeNotInstalled": "OpenCode אינו מותקן ב-{{distro}}",
+  "desktop.wsl.error.updateVersion":
+    "עדכון OpenCode הסתיים אך {{distro}} עדיין מדווח על {{installed}}; צפוי {{expected}}",
+  "desktop.wsl.error.noVersion": "אין גרסה",
+  "desktop.wsl.error.serverExited": "שרת WSL יצא לאחר ההפעלה (קוד={{code}} אות={{signal}})",
+  "desktop.wsl.error.serverExitedBeforeHealthy":
+    "שרת WSL נסגר לפני שבדיקת התקינות הצליחה (קוד={{code}} אות={{signal}}){{output}}",
+  "desktop.wsl.error.healthTimeout":
+    "תם הזמן שהוקצב לבדיקת התקינות של שרת העזר עבור {{distro}} לאחר {{timeout}} אלפיות השנייה",
+  "desktop.wsl.error.commandTimeout": "תם הזמן הקצוב של {{command}} {{args}} לאחר {{timeout}}ms",
+  "desktop.wsl.error.failedPort": "לא ניתן להקצות יציאה",
+  "desktop.picker.error.notSelected": "לא נבחר קובץ",
+  "desktop.picker.error.sizeLimit": "הקבצים המצורפים שנבחרו חורגים ממגבלת ה-{{limit}} MB",
+  "command.category.suggested": "מוצע",
+  "command.category.view": "הצג",
+  "command.category.project": "פרויקט",
+  "command.category.provider": "ספק",
+  "command.category.server": "שרת",
+  "command.category.session": "הפעלה",
+  "command.category.theme": "ערכת נושא",
+  "command.category.language": "שפה",
+  "command.category.file": "קובץ",
+  "command.category.context": "הקשר",
+  "command.category.terminal": "מסוף",
+  "command.category.model": "מודל",
+  "command.category.mcp": "MCP",
+  "command.category.agent": "סוכן",
+  "command.category.permissions": "הרשאות",
+  "command.category.workspace": "סביבת עבודה",
+  "command.category.settings": "הגדרות",
+  "command.logs.export": "ייצוא יומנים",
+  "theme.scheme.system": "מערכת",
+  "theme.scheme.light": "בהיר",
+  "theme.scheme.dark": "כהה",
+  "command.sidebar.toggle": "הצגה או הסתרה של סרגל הצד",
+  "command.project.open": "פתיחת פרויקט",
+  "command.project.previous": "פרויקט קודם",
+  "command.project.next": "הפרויקט הבא",
+  "command.project.index": "עבור לפרויקט {{index}}",
+  "command.provider.connect": "התחבר לספק",
+  "command.server.switch": "החלף שרת",
+  "command.settings.open": "פתח את ההגדרות",
+  "command.session.previous": "ההפעלה הקודמת",
+  "command.session.next": "ההפעלה הבאה",
+  "command.session.previous.unseen": "הפעלה קודמת שלא נקראה",
+  "command.session.next.unseen": "ההפעלה הבאה שלא נקראה",
+  "command.session.archive": "העברה לארכיון",
+  "command.palette": "לוח פקודות",
+  "command.theme.cycle": "מעבר לערכת הנושא הבאה",
+  "command.theme.set": "השתמש בערכת הנושא: {{theme}}",
+  "command.theme.scheme.cycle": "מעבר לערכת הצבעים הבאה",
+  "command.theme.scheme.set": "השתמש בערכת צבעים: {{scheme}}",
+  "command.language.cycle": "מעבר לשפה הבאה",
+  "command.language.set": "השתמש בשפה: {{language}}",
+  "command.session.new": "הפעלה חדשה",
+  "command.file.open": "פתח את הקובץ",
+  "command.tab.close": "סגור כרטיסייה",
+  "command.tab.reopenClosed": "פתח מחדש את הכרטיסייה הסגורה",
+  "command.context.addSelection": "הוסף בחירה להקשר",
+  "command.context.addSelection.description": "הוסף שורות נבחרות מהקובץ הנוכחי",
+  "command.input.focus": "מיקוד בשדה הקלט",
+  "command.terminal.toggle": "הצגה או הסתרה של המסוף",
+  "command.fileTree.toggle": "הצגה או הסתרה של עץ הקבצים",
+  "command.review.toggle": "הצגה או הסתרה של הסקירה",
+  "command.terminal.new": "מסוף חדש",
+  "command.terminal.new.description": "צור כרטיסיית מסוף חדשה",
+  "command.steps.toggle": "הצגה או הסתרה של השלבים",
+  "command.steps.toggle.description": "הצג או הסתר שלבים עבור ההודעה הנוכחית",
+  "command.message.previous": "הודעה קודמת",
+  "command.message.previous.description": "עבור להודעת המשתמש הקודמת",
+  "command.message.next": "ההודעה הבאה",
+  "command.message.next.description": "עבור להודעת המשתמש הבאה",
+  "command.model.choose": "בחר מודל",
+  "command.model.choose.description": "בחר מודל אחר",
+  "command.mcp.toggle": "הפעלה או השבתה של MCPs",
+  "command.mcp.toggle.description": "הפעלה או השבתה של MCPs",
+  "command.agent.cycle": "מעבר לסוכן הבא",
+  "command.agent.cycle.description": "עבור לסוכן הבא",
+  "command.agent.cycle.reverse": "מעבר לסוכן הקודם",
+  "command.agent.cycle.reverse.description": "עבור לסוכן הקודם",
+  "command.model.variant.cycle": "מעבר לרמת החשיבה הבאה",
+  "command.model.variant.cycle.description": "עבור לרמת המאמץ הבאה",
+  "command.prompt.mode.shell": "מעטפת",
+  "command.prompt.mode.normal": "פרומפט",
+  "command.permissions.autoaccept.enable": "קבל הרשאות אוטומטית",
+  "command.permissions.autoaccept.disable": "הפסק לקבל הרשאות אוטומטית",
+  "command.workspace.toggle": "החלף בין סביבות עבודה",
+  "command.workspace.toggle.description": "הפעל או השבת סביבות עבודה מרובות בסרגל הצד",
+  "command.session.undo": "בטל",
+  "command.session.undo.description": "בטל את ההודעה האחרונה",
+  "command.session.redo": "בצע מחדש",
+  "command.session.redo.description": "בצע מחדש את ההודעה האחרונה שבוטלה",
+  "command.session.compact": "דחיסת ההפעלה",
+  "command.session.compact.description": "סכם את ההפעלה כדי להקטין את גודל ההקשר",
+  "command.session.fork": "יצירת הפעלה מהודעה",
+  "command.session.fork.description": "צור הפעלה חדשה מהודעה קודמת",
+  "command.session.share": "שתף הפעלה",
+  "command.session.share.description": "שתף את ההפעלה הזו והעתק את ה-URL ללוח",
+  "command.session.unshare": "בטל שיתוף הפעלה",
+  "command.session.unshare.description": "הפסק לשתף את ההפעלה הזו",
+  "command.session.export": "ייצוא ההפעלה",
+  "command.session.export.description": "ייצא את תמליל ההפעלה המלא כ-JSON",
+  "palette.search.placeholder": "חפש קבצים, פקודות והפעלות",
+  "palette.search.placeholder.home": "חיפוש פקודות והפעלות",
+  "palette.empty": "לא נמצאו תוצאות",
+  "palette.group.commands": "פקודות",
+  "palette.group.files": "קבצים",
+  "dialog.provider.search.placeholder": "חיפוש ספקים",
+  "dialog.provider.empty": "לא נמצאו ספקים",
+  "dialog.provider.group.popular": "פופולרי",
+  "dialog.provider.group.other": "אחר",
+  "dialog.provider.custom.label": "ספק תואם OpenAI מותאם אישית",
+  "dialog.provider.tag.recommended": "מומלץ",
+  "dialog.provider.opencode.note": "מבחר מודלים, בהם Claude, GPT, Gemini ועוד",
+  "dialog.provider.opencode.tagline": "מודלים אמינים שעברו אופטימיזציה",
+  "dialog.provider.opencodeGo.tagline": "מנוי בעלות נמוכה לכולם",
+  "dialog.provider.anthropic.note": "גישה ישירה למודלי Claude, כולל Pro ו-Max",
+  "dialog.provider.copilot.note": "מודלי AI לסיוע בכתיבת קוד באמצעות GitHub Copilot",
+  "dialog.provider.openai.note": "מודלי GPT למשימות AI כלליות, מהירות ומתקדמות",
+  "dialog.provider.google.note": "מודלי Gemini לתגובות מהירות ומובנות",
+  "dialog.provider.openrouter.note": "גש לכל המודלים הנתמכים מספק אחד",
+  "dialog.provider.vercel.note": "גישה אחידה למודלי AI עם ניתוב חכם",
+  "dialog.model.select.title": "בחר מודל",
+  "dialog.model.search.placeholder": "חפש מודלים",
+  "dialog.model.empty": "לא נמצאו מודלים",
+  "dialog.model.manage": "ניהול מודלים",
+  "dialog.model.manage.description": "התאם אישית אילו מודלים יופיעו בבורר המודלים.",
+  "dialog.model.manage.provider.toggle": "הצגה או הסתרה של כל מודלי {{provider}}",
+  "dialog.model.unpaid.freeModels.title": "מודלים חינם מסופקים על ידי OpenCode",
+  "dialog.model.unpaid.addMore.title": "הוסף עוד מודלים מספקים פופולריים",
+  "dialog.model.unpaid.viewMoreProviders": "הצגת יותר מ-70 ספקים נוספים",
+  "dialog.provider.viewAll": "הצג עוד ספקים",
+  "provider.connect.title": "חבר את {{provider}}",
+  "provider.connect.title.anthropicProMax": "התחבר עם Claude Pro/Max",
+  "provider.connect.selectMethod": "בחר שיטת התחברות עבור {{provider}}.",
+  "provider.connect.method.apiKey": "מפתח API",
+  "provider.connect.method.browser": "דפדפן",
+  "provider.connect.method.headless": "ללא ממשק גרפי",
+  "provider.connect.status.inProgress": "האישור מתבצע...",
+  "provider.connect.status.waiting": "ממתין לאישור...",
+  "provider.connect.status.failed": "ההרשאה נכשלה: {{error}}",
+  "provider.connect.apiKey.description":
+    "הזן את מפתח ה-API של {{provider}} כדי לחבר את החשבון ולהשתמש במודלים של {{provider}} ב-OpenCode.",
+  "provider.connect.apiKey.label": "מפתח API של {{provider}}",
+  "provider.connect.apiKey.placeholder": "מפתח API",
+  "provider.connect.apiKey.required": "יש צורך במפתח API",
+  "provider.connect.opencodeZen.line1": "OpenCode Zen מספק גישה למבחר מודלים אמינים שעברו אופטימיזציה עבור סוכני קוד.",
+  "provider.connect.opencodeZen.line2": "עם מפתח API יחיד תקבל גישה למודלים כגון Claude, GPT, Gemini, GLM ועוד.",
+  "provider.connect.opencodeZen.visit.prefix": "יש לעבור אל ",
+  "provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
+  "provider.connect.opencodeZen.visit.suffix": " כדי לקבל מפתח API.",
+  "provider.connect.oauth.code.visit.prefix": "יש לעבור אל ",
+  "provider.connect.oauth.code.visit.link": "הקישור הזה",
+  "provider.connect.oauth.code.visit.suffix":
+    "כדי לקבל קוד הרשאה, לחבר את החשבון ולהשתמש במודלים של {{provider}} ב-OpenCode.",
+  "provider.connect.oauth.code.label": "קוד הרשאה {{method}}",
+  "provider.connect.oauth.code.placeholder": "קוד הרשאה",
+  "provider.connect.oauth.code.required": "נדרש קוד הרשאה",
+  "provider.connect.oauth.code.invalid": "קוד הרשאה לא חוקי",
+  "provider.connect.oauth.auto.visit.prefix": "יש לעבור אל ",
+  "provider.connect.oauth.auto.visit.link": "הקישור הזה",
+  "provider.connect.oauth.auto.visit.suffix":
+    "והזן את הקוד למטה כדי לחבר את החשבון ולהשתמש במודלים של {{provider}} ב-OpenCode.",
+  "provider.connect.oauth.auto.confirmationCode": "קוד אישור",
+  "provider.connect.toast.connected.title": "{{provider}} מחובר",
+  "provider.connect.toast.connected.description": "המודלים של {{provider}} זמינים כעת לשימוש.",
+  "provider.custom.title": "ספק מותאם אישית",
+  "provider.custom.unavailable": "ספקים מותאמים אישית אינם זמינים בשרת זה",
+  "provider.custom.description.prefix": "הגדר ספק תואם OpenAI. ראה את",
+  "provider.custom.description.link": "מסמכי תצורת ספק",
+  "provider.custom.description.suffix": ".",
+  "provider.custom.field.providerID.label": "מזהה ספק",
+  "provider.custom.field.providerID.placeholder": "myprovider",
+  "provider.custom.field.providerID.description": "אותיות קטנות, מספרים, מקפים או קווים תחתונים",
+  "provider.custom.field.name.label": "שם תצוגה",
+  "provider.custom.field.name.placeholder": "ספק ה-AI שלי",
+  "provider.custom.field.baseURL.label": "כתובת URL בסיסית",
+  "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
+  "provider.custom.field.apiKey.label": "מפתח API",
+  "provider.custom.field.apiKey.placeholder": "מפתח API",
+  "provider.custom.field.apiKey.description": "לא חובה. אפשר להשאיר ריק אם האימות מנוהל באמצעות כותרות.",
+  "provider.custom.models.label": "מודלים",
+  "provider.custom.models.id.label": "ID",
+  "provider.custom.models.id.placeholder": "model-id",
+  "provider.custom.models.name.label": "שם",
+  "provider.custom.models.name.placeholder": "שם תצוגה",
+  "provider.custom.models.remove": "הסר את המודל",
+  "provider.custom.models.add": "הוסף מודל",
+  "provider.custom.headers.label": "כותרות (לא חובה)",
+  "provider.custom.headers.key.label": "כותרת",
+  "provider.custom.headers.key.placeholder": "Header-Name",
+  "provider.custom.headers.value.label": "ערך",
+  "provider.custom.headers.value.placeholder": "ערך",
+  "provider.custom.headers.remove": "הסר כותרת",
+  "provider.custom.headers.add": "הוסף כותרת",
+  "provider.custom.error.providerID.required": "נדרש מזהה ספק",
+  "provider.custom.error.providerID.format": "השתמש באותיות קטנות, מספרים, מקפים או קווים תחתונים",
+  "provider.custom.error.providerID.exists": "מזהה הספק הזה כבר קיים",
+  "provider.custom.error.name.required": "נדרש שם תצוגה",
+  "provider.custom.error.baseURL.required": "נדרשת כתובת URL בסיסית",
+  "provider.custom.error.baseURL.format": "חייב להתחיל עם http:// או https://",
+  "provider.custom.error.required": "חובה",
+  "provider.custom.error.duplicate": "כפילות",
+  "provider.disconnect.toast.disconnected.title": "{{provider}} מנותק",
+  "provider.disconnect.toast.disconnected.description": "המודלים של {{provider}} אינם זמינים עוד.",
+  "model.tag.free": "חינם",
+  "model.tag.latest": "העדכני ביותר",
+  "model.provider.anthropic": "Anthropic",
+  "model.provider.openai": "OpenAI",
+  "model.provider.google": "Google",
+  "model.provider.xai": "xAI",
+  "model.provider.meta": "Meta",
+  "model.input.text": "טקסט",
+  "model.input.image": "תמונה",
+  "model.input.audio": "אודיו",
+  "model.input.video": "וידאו",
+  "model.input.pdf": "PDF",
+  "model.tooltip.allows": "מאפשר: {{inputs}}",
+  "model.tooltip.context.label": "הקשר",
+  "model.tooltip.inputs": "סוגי קלט",
+  "model.tooltip.model": "מודל",
+  "model.tooltip.provider": "ספק",
+  "model.tooltip.reasoning": "חשיבה",
+  "model.tooltip.reasoning.allowed": "תומך בחשיבה",
+  "model.tooltip.reasoning.none": "ללא חשיבה",
+  "model.tooltip.context": "מגבלת הקשר {{limit}}",
+  "common.search.placeholder": "חפש",
+  "common.goBack": "נווט אחורה",
+  "common.goForward": "נווט קדימה",
+  "common.loading": "טוען",
+  "common.loading.ellipsis": "...",
+  "common.cancel": "בטל",
+  "common.clear": "נקה",
+  "common.open": "פתח",
+  "common.connect": "התחבר",
+  "common.disconnect": "התנתק",
+  "common.continue": "המשך",
+  "common.submit": "שלח",
+  "common.save": "שמור",
+  "common.saving": "שומר...",
+  "common.default": "ברירת מחדל",
+  "common.attachment": "קובץ מצורף",
+  "prompt.placeholder.shell": "הזן פקודת מעטפת... {{example}}",
+  "prompt.placeholder.normal": 'אפשר לשאול כל דבר... "{{example}}"',
+  "prompt.placeholder.simple": "אפשר לשאול כל דבר...",
+  "prompt.placeholder.summarizeComments": "סכם את התגובות…",
+  "prompt.placeholder.summarizeComment": "סכם את התגובה…",
+  "prompt.mode.shell": "מעטפת",
+  "prompt.mode.normal": "פרומפט",
+  "prompt.mode.shell.exit": "esc כדי לצאת",
+  "session.child.promptDisabled": "לא ניתן לשלוח פרומפט להפעלה של סוכן משנה.",
+  "session.child.backToParent": "חזרה להפעלה הראשית.",
+  "prompt.example.1": "תקן TODO בבסיס הקוד",
+  "prompt.example.2": "באילו טכנולוגיות הפרויקט הזה משתמש?",
+  "prompt.example.3": "תקן בדיקות שנכשלות",
+  "prompt.example.4": "הסבר כיצד פועל האימות",
+  "prompt.example.5": "מצא ותקן פרצות אבטחה",
+  "prompt.example.6": "הוסף בדיקות יחידה עבור שירות המשתמש",
+  "prompt.example.7": "שכתב את הפונקציה הזו כך שתהיה קריאה יותר",
+  "prompt.example.8": "מה משמעות השגיאה הזו?",
+  "prompt.example.9": "עזור לי לאתר את התקלה הזו",
+  "prompt.example.10": "צור תיעוד API",
+  "prompt.example.11": "בצע אופטימיזציה של שאילתות מסד הנתונים",
+  "prompt.example.12": "הוסף אימות קלט",
+  "prompt.example.13": "צור רכיב חדש עבור...",
+  "prompt.example.14": "כיצד אוכל לפרוס את הפרויקט הזה?",
+  "prompt.example.15": "עיין בקוד שלי לקבלת שיטות עבודה מומלצות",
+  "prompt.example.16": "הוסף טיפול בשגיאות לפונקציה זו",
+  "prompt.example.17": "הסבר את הביטוי הרגולרי הזה",
+  "prompt.example.18": "המר את זה ל-TypeScript",
+  "prompt.example.19": "הוסף רישום לוגים ברחבי בסיס הקוד",
+  "prompt.example.20": "אילו תלויות אינן מעודכנות?",
+  "prompt.example.21": "עזור לי לכתוב סקריפט העברה",
+  "prompt.example.22": "יישם מטמון עבור נקודת קצה זו",
+  "prompt.example.23": "הוסף עימוד לרשימה זו",
+  "prompt.example.24": "צור פקודת CLI עבור...",
+  "prompt.example.25": "איך משתני סביבה עובדים כאן?",
+  "prompt.popover.emptyResults": "אין תוצאות תואמות",
+  "prompt.popover.emptyCommands": "אין פקודות תואמות",
+  "prompt.dropzone.label": "שחרר כאן תמונות, קובצי PDF או קבצי טקסט",
+  "prompt.dropzone.file.label": "שחרור כדי לאזכר קובץ באמצעות @",
+  "prompt.slash.badge.custom": "מותאם אישית",
+  "prompt.slash.badge.skill": "מיומנות",
+  "prompt.slash.badge.mcp": "mcp",
+  "prompt.context.active": "פעיל",
+  "prompt.context.includeActiveFile": "כלול קובץ פעיל",
+  "prompt.context.removeActiveFile": "הסר קובץ פעיל מהקשר",
+  "prompt.context.removeFile": "הסר קובץ מהקשר",
+  "prompt.action.attachFile": "הוסף קבצים",
+  "prompt.menu.addImagesAndFiles": "הוסף קבצים ועוד",
+  "prompt.menu.imagesAndFiles": "תמונות וקבצים",
+  "prompt.menu.commands": "פקודות",
+  "prompt.menu.context": "הקשר",
+  "prompt.menu.shellCommand": "פקודת מעטפת",
+  "prompt.attachment.remove": "הסר את הקובץ המצורף",
+  "prompt.action.send": "שלח",
+  "prompt.action.stop": "עצור",
+  "prompt.toast.pasteUnsupported.title": "קובץ מצורף לא נתמך",
+  "prompt.toast.pasteUnsupported.description": "ניתן לצרף כאן רק תמונות, קובצי PDF או קבצי טקסט.",
+  "prompt.toast.attachmentDuplicate.title": "הקובץ הזה כבר הועלה",
+  "prompt.toast.modelAgentRequired.title": "בחר סוכן ומודל",
+  "prompt.toast.modelAgentRequired.description": "יש לבחור סוכן ומודל לפני שליחת פרומפט.",
+  "prompt.toast.worktreeCreateFailed.title": "יצירת סביבת העבודה נכשלה",
+  "prompt.toast.sessionCreateFailed.title": "יצירת ההפעלה נכשלה",
+  "prompt.toast.shellSendFailed.title": "שליחת פקודת המעטפת נכשלה",
+  "prompt.toast.commandSendFailed.title": "שליחת הפקודה נכשלה",
+  "prompt.toast.promptSendFailed.title": "שליחת הבקשה נכשלה",
+  "prompt.toast.promptSendFailed.description": "לא ניתן לאחזר את ההפעלה",
+  "dialog.mcp.title": "MCPs",
+  "dialog.mcp.description": "{{enabled}} מתוך {{total}} מופעלים",
+  "dialog.mcp.empty": "לא הוגדרו MCPs",
+  "dialog.lsp.empty": "LSPs שזוהו אוטומטית לפי סוגי הקבצים",
+  "dialog.plugins.empty": "תוספים מוגדרים ב-opencode.json",
+  "mcp.status.connected": "מחובר",
+  "mcp.status.failed": "נכשל",
+  "mcp.status.needs_auth": "נדרש אימות",
+  "mcp.status.disabled": "מושבת",
+  "mcp.auth.clickToAuthenticate": "לחץ כדי לאמת",
+  "dialog.fork.empty": "אין הודעות שמהן אפשר ליצור הפעלה",
+  "dialog.directory.search.placeholder": "חפש תיקיות",
+  "dialog.directory.empty": "לא נמצאו תיקיות",
+  "dialog.directory.action.selectFile": "בחר קובץ",
+  "dialog.directory.action.selectFolder": "בחר תיקייה",
+  "dialog.directory.root": "שורש",
+  "dialog.directory.parent": "תיקיית אב",
+  "dialog.directory.readError": "לא ניתן לקרוא את התיקייה הזו",
+  "app.server.unreachable": "לא ניתן היה להגיע ל-{{server}}",
+  "app.server.retrying": "מנסה שוב אוטומטית...",
+  "app.server.otherServers": "שרתים אחרים",
+  "dialog.server.title": "שרתים",
+  "dialog.server.description": "בחירת שרת OpenCode שאליו האפליקציה תתחבר.",
+  "dialog.server.search.placeholder": "חיפוש שרתים",
+  "dialog.server.empty": "עדיין אין שרתים",
+  "dialog.server.add.title": "הוסף שרת",
+  "dialog.server.add.url": "כתובת שרת",
+  "dialog.server.add.placeholder": "http://localhost:4096",
+  "dialog.server.add.error": "לא ניתן להתחבר לשרת",
+  "dialog.server.add.checking": "בודק...",
+  "dialog.server.add.button": "הוסף שרת",
+  "dialog.server.add.name": "שם שרת (אופציונלי)",
+  "dialog.server.add.namePlaceholder": "מארח מקומי",
+  "dialog.server.add.username": "שם משתמש (אופציונלי)",
+  "dialog.server.add.usernamePlaceholder": "שם משתמש",
+  "dialog.server.add.password": "סיסמה (אופציונלי)",
+  "dialog.server.add.passwordPlaceholder": "סיסמה",
+  "dialog.server.edit.title": "ערוך שרת",
+  "dialog.server.default.title": "שרת ברירת מחדל",
+  "dialog.server.default.description": "התחבר לשרת זה בעת הפעלת האפליקציה במקום להפעיל שרת מקומי. דורש הפעלה מחדש.",
+  "dialog.server.default.none": "לא נבחר שרת",
+  "dialog.server.default.set": "הגדר את השרת הנוכחי כברירת מחדל",
+  "dialog.server.default.clear": "נקה",
+  "dialog.server.action.remove": "הסר את השרת",
+  "dialog.server.menu.edit": "ערוך",
+  "dialog.server.menu.default": "הגדר כברירת מחדל",
+  "dialog.server.menu.defaultRemove": "הסר את ברירת המחדל",
+  "dialog.server.menu.delete": "מחק",
+  "dialog.server.current": "שרת נוכחי",
+  "dialog.server.status.default": "ברירת מחדל",
+  "wsl.server.add": "הוסף שרת WSL",
+  "wsl.server.addShort": "הוסף WSL",
+  "wsl.server.label": "WSL",
+  "wsl.server.menu.label": "שרת WSL",
+  "wsl.server.retryStart": "נסה להפעיל שוב",
+  "wsl.server.updating": "מעדכן...",
+  "wsl.onboarding.step.distro": "בחר בהפצה",
+  "wsl.onboarding.step.opencode": "OpenCode",
+  "wsl.onboarding.checkingRuntime": "בודק WSL...",
+  "wsl.onboarding.restartRequired": "Windows זקוק להפעלה מחדש כדי לסיים את התקנת WSL.",
+  "wsl.onboarding.ready": "WSL מוכן.",
+  "wsl.onboarding.required": "נדרש WSL כדי להמשיך.",
+  "wsl.onboarding.checkingDistros": "בודק הפצות...",
+  "wsl.onboarding.installingDistro": "מתקין את {{distro}}...",
+  "wsl.onboarding.checkingDistro": "בודק {{distro}}...",
+  "wsl.onboarding.listingDistros": "מציג הפצות...",
+  "wsl.onboarding.distroReady": "{{distro}} מוכן.",
+  "wsl.onboarding.distroNotInstalled": "{{distro}} עדיין לא מותקן.",
+  "wsl.onboarding.openDistroOnce": "פתח את {{distro}} פעם אחת כדי לסיים את ההגדרה.",
+  "wsl.onboarding.finishingDistro": "סיום ההגדרה עבור {{distro}}.",
+  "wsl.onboarding.pickDistro": "בחר הפצה או התקן אחת למטה.",
+  "wsl.onboarding.checkingOpencode": "בודק OpenCode...",
+  "wsl.onboarding.checkingOpencodeIn": "בודק OpenCode ב-{{distro}}...",
+  "wsl.onboarding.updatingOpencode": "מעדכן את OpenCode...",
+  "wsl.onboarding.updatingOpencodeIn": "מעדכן את OpenCode ב-{{distro}}...",
+  "wsl.onboarding.updateOpencodeIn": "עדכן את OpenCode ב-{{distro}}.",
+  "wsl.onboarding.updateOpencode": "עדכון OpenCode",
+  "wsl.onboarding.opencodeReadyIn": "OpenCode מוכן ב-{{distro}}.",
+  "wsl.onboarding.opencodeReady": "OpenCode מוכן.",
+  "wsl.onboarding.installOpencodeIn": "התקן את OpenCode ב-{{distro}}.",
+  "wsl.onboarding.installOpencode": "התקן את OpenCode",
+  "wsl.onboarding.chooseDistroFirst": "בחר תחילה הפצה.",
+  "wsl.onboarding.loadFailed": "טעינת מצב WSL נכשלה.",
+  "wsl.onboarding.loading": "טוען...",
+  "wsl.onboarding.installedDistros": "הפצות מותקנות",
+  "wsl.onboarding.checkAgain": "בדוק שוב",
+  "wsl.onboarding.distroStatus.ready": "מוכן",
+  "wsl.onboarding.distroStatus.checking": "בודק...",
+  "wsl.onboarding.distroStatus.opencodeMissing": "OpenCode לא מותקן",
+  "wsl.onboarding.distroStatus.missingTools": "bash ו-curl חסרים",
+  "wsl.onboarding.distroStatus.unsupported": "לא נתמך · השתמש ב-WSL 2",
+  "wsl.onboarding.needAnotherDistro": "צריך הפצה נוספת?",
+  "wsl.onboarding.needAnotherDistroHint": "התקנת הפצת Linux מהקטלוג של WSL",
+  "wsl.onboarding.wslNotInstalled.title": "WSL לא מותקן",
+  "wsl.onboarding.wslNotInstalled.description":
+    "WSL (מערכת משנה Windows עבור Linux) נדרשת לפני ש-OpenCode יוכל להוסיף שרת WSL",
+  "wsl.onboarding.wslUnavailable.title": "WSL לא זמין",
+  "wsl.onboarding.wslUnavailable.description": "OpenCode לא הצליח לאמת את WSL במחשב זה.",
+  "wsl.onboarding.installWsl": "התקן את WSL",
+  "wsl.onboarding.windowsRestartRequired": "הפעל מחדש את Windows כדי לסיים את התקנת WSL, ואז פתח מחדש את OpenCode.",
+  "wsl.onboarding.next": "הבא",
+  "wsl.onboarding.refresh": "רענן",
+  "wsl.onboarding.allDistrosAdded": "כל ההפצות המותקנות כבר נוספו.",
+  "wsl.onboarding.noDistros": "עדיין לא זוהו הפצות.",
+  "wsl.onboarding.install": "התקן",
+  "wsl.onboarding.installing": "מתקין...",
+  "wsl.onboarding.installDistro": "התקנת הפצה",
+  "wsl.onboarding.searchDistros": "חפש בהפצות",
+  "wsl.onboarding.wsl2Required": "נדרש WSL 2.",
+  "wsl.onboarding.toolsRequired": "בהפצה הזו נדרשים bash ו-curl.",
+  "wsl.onboarding.openTerminal": "פתח מסוף",
+  "wsl.onboarding.path": "נתיב: {{path}}",
+  "wsl.onboarding.notFound": "לא נמצא",
+  "wsl.onboarding.version": "גרסה: {{version}}",
+  "wsl.onboarding.unknown": "לא ידוע",
+  "wsl.onboarding.desktopVersion": "גרסת שולחן העבודה: {{version}}",
+  "wsl.onboarding.versionMismatch": "הגרסה המותקנת אינה תואמת את גרסת האפליקציה לשולחן העבודה.",
+  "wsl.onboarding.adding": "מוסיף...",
+  "help.tabs.toast.ariaLabel": "היכרות עם כרטיסיות. ארגן את העבודה וההפעלות הפעילות שלך עם כרטיסיות",
+  "help.tabs.toast.dismiss": "סגור מידע על כרטיסיות",
+  "help.tabs.title": "היכרות עם כרטיסיות",
+  "help.tabs.description": "ארגן את העבודה וההפעלות הפעילות שלך עם כרטיסיות",
+  "help.tabs.date": "14 ביולי",
+  "help.tabs.introduction": "OpenCode Desktop בנוי כעת סביב כרטיסיות.",
+  "help.tabs.sessions":
+    "התחל הפעלה חדשה בכרטיסייה, או פתח הפעלה קיימת מכל אחד מהפרויקטים שלך. פתח כרטיסייה חדשה כשאתה מתחיל משהו חדש, וסגור אותה כשתסיים.",
+  "help.tabs.organize":
+    "שמירה על מספר כרטיסיות פתוחות מקלה על ארגון ההפעלות הפעילות שלך. שנה את שמות הכרטיסיות למשהו בלתי נשכח אם אתה מתכנן לשמור אותן בסביבה.",
+  "help.tabs.home": "תמצא את כל ההפעלות והפרויקטים שלך במסך הבית החדש. בחירת הפעלה פותחת אותה בכרטיסייה.",
+  "help.tabs.persistence": "כאשר אתה פותח מחדש את האפליקציה, הכרטיסיות שלך עדיין פתוחות.",
+  "help.tabs.worktrees":
+    "העיצוב החדש עדיין אינו תומך בסביבות עבודה של Git, אך התמיכה תתווסף בקרוב. אם ברצונך להמשיך להשתמש בפריסה הקודמת, אפשר לעבור בין הפריסות בהגדרות. חשוב לזכור שהפריסה החדשה תהפוך לקבועה בעוד מספר שבועות.",
+  "server.row.noUsername": "ללא שם משתמש",
+  "dialog.project.edit.title": "ערוך פרויקט",
+  "dialog.project.edit.name": "שם",
+  "dialog.project.edit.icon": "סמל",
+  "dialog.project.edit.icon.alt": "סמל פרויקט",
+  "dialog.project.edit.icon.hint": "לחץ או גרור תמונה",
+  "dialog.project.edit.icon.recommended": "מומלץ: 128x128 פיקסלים",
+  "dialog.project.edit.color": "צבע",
+  "dialog.project.edit.color.select": "בחר צבע {{color}}",
+  "dialog.project.edit.worktree.startup": "סקריפט אתחול סביבת העבודה",
+  "dialog.project.edit.worktree.startup.description": "מופעל לאחר יצירת סביבת עבודה חדשה (worktree).",
+  "dialog.project.edit.worktree.startup.placeholder": "לדוגמה: bun install",
+  "dialog.releaseNotes.action.getStarted": "התחל",
+  "dialog.releaseNotes.action.next": "הבא",
+  "dialog.releaseNotes.action.hideFuture": "אל תציג אותם בעתיד",
+  "dialog.releaseNotes.media.alt": "תצוגה מקדימה של הגרסה",
+  "dialog.usageExceeded.dontShowAgain": "אל תראה שוב",
+  "context.breakdown.title": "פירוט הקשר",
+  "context.breakdown.note": 'פירוט משוער של אסימוני הקלט. "אחר" כולל הגדרות כלים ותקורה.',
+  "context.breakdown.system": "מערכת",
+  "context.breakdown.user": "משתמש",
+  "context.breakdown.assistant": "עוזר",
+  "context.breakdown.tool": "קריאות לכלים",
+  "context.breakdown.other": "אחר",
+  "context.systemPrompt.title": "פרומפט מערכת",
+  "context.rawMessages.title": "הודעות גולמיות",
+  "context.export.session": "ייצוא הפעלה",
+  "context.stats.session": "הפעלה",
+  "context.stats.messages": "הודעות",
+  "context.stats.provider": "ספק",
+  "context.stats.model": "מודל",
+  "context.stats.limit": "הגבלת הקשר",
+  "context.stats.totalTokens": "סך כל האסימונים",
+  "context.stats.usage": "שימוש",
+  "context.stats.inputTokens": "אסימוני קלט",
+  "context.stats.outputTokens": "אסימוני פלט",
+  "context.stats.reasoningTokens": "אסימוני חשיבה",
+  "context.stats.cacheTokens": "אסימוני מטמון (קריאה/כתיבה)",
+  "context.stats.userMessages": "הודעות משתמש",
+  "context.stats.assistantMessages": "הודעות עוזר",
+  "context.stats.totalCost": "עלות כוללת",
+  "context.stats.sessionCreated": "ההפעלה נוצרה",
+  "context.stats.lastActivity": "פעילות אחרונה",
+  "context.usage.tokens": "אסימונים",
+  "context.usage.usage": "שימוש",
+  "context.usage.cost": "עלות",
+  "context.usage.clickToView": "לחץ כדי להציג את ההקשר",
+  "context.usage.view": "הצג שימוש בהקשר",
+  "language.en": "אנגלית",
+  "language.zh": "简体中文",
+  "language.zht": "繁體中文",
+  "language.ko": "한국어",
+  "language.de": "Deutsch",
+  "language.es": "Español",
+  "language.fr": "Français",
+  "language.da": "Dansk",
+  "language.ja": "日本語",
+  "language.pl": "Polski",
+  "language.ru": "Русский",
+  "language.ar": "العربية",
+  "language.no": "Norsk",
+  "language.br": "Português (Brasil)",
+  "language.bs": "Bosanski",
+  "language.uk": "Українська",
+  "language.th": "ไทย",
+  "language.tr": "Türkçe",
+  "toast.language.title": "שפה",
+  "toast.language.description": "עבר ל-{{language}}",
+  "toast.theme.title": "ערכת הנושא התחלפה",
+  "toast.scheme.title": "ערכת צבעים",
+  "toast.workspace.enabled.title": "סביבות עבודה מופעלות",
+  "toast.workspace.enabled.description": "סביבות עבודה מרובות מוצגות כעת בסרגל הצד",
+  "toast.workspace.disabled.title": "סביבות עבודה מושבתות",
+  "toast.workspace.disabled.description": "רק עץ העבודה הראשי מוצג בסרגל הצד",
+  "toast.permissions.autoaccept.on.title": "קבלת הרשאות אוטומטית",
+  "toast.permissions.autoaccept.on.description": "בקשות הרשאה יאושרו אוטומטית",
+  "toast.permissions.autoaccept.off.title": "הקבלה האוטומטית של הרשאות הופסקה",
+  "toast.permissions.autoaccept.off.description": "בקשות הרשאה ידרשו אישור",
+  "toast.model.none.title": "לא נבחר מודל",
+  "toast.model.none.description": "חבר ספק כדי לסכם את ההפעלה הזו",
+  "toast.file.loadFailed.title": "טעינת הקובץ נכשלה",
+  "toast.file.listFailed.title": "רישום הקבצים נכשל",
+  "toast.context.noLineSelection.title": "אין בחירת שורה",
+  "toast.context.noLineSelection.description": "בחר תחילה טווח שורות בכרטיסיית קובץ.",
+  "toast.session.share.copyFailed.title": "ההעתקה של URL ללוח נכשלה",
+  "toast.session.share.success.title": "ההפעלה שותפה",
+  "toast.session.share.success.description": "הקישור לשיתוף הועתק ללוח!",
+  "toast.session.share.failed.title": "שיתוף ההפעלה נכשל",
+  "toast.session.share.failed.description": "אירעה שגיאה במהלך שיתוף ההפעלה",
+  "toast.session.unshare.success.title": "שיתוף ההפעלה בוטל",
+  "toast.session.unshare.success.description": "שיתוף ההפעלה בוטל בהצלחה!",
+  "toast.session.unshare.failed.title": "ביטול השיתוף של ההפעלה נכשל",
+  "toast.session.unshare.failed.description": "אירעה שגיאה בעת ביטול שיתוף ההפעלה",
+  "toast.session.export.success.title": "ההפעלה יוצאה",
+  "toast.session.export.success.description": "ההפעלה נשמרה בקובץ {{filename}}",
+  "toast.session.export.failed.title": "ייצוא ההפעלה נכשל",
+  "toast.session.export.failed.description": "אירעה שגיאה במהלך ייצוא ההפעלה",
+  "toast.session.listFailed.title": "טעינת הפעלות עבור {{project}} נכשלה",
+  "toast.project.reloadFailed.title": "הטעינה מחדש של {{project}} נכשלה",
+  "toast.update.title": "עדכון זמין",
+  "toast.update.description": "גרסה חדשה של OpenCode ({{version}}) זמינה כעת להתקנה.",
+  "toast.update.action.installRestart": "התקן והפעל מחדש",
+  "toast.update.action.notYet": "עדיין לא",
+  "error.page.title": "משהו השתבש",
+  "error.page.description": "אירעה שגיאה בעת טעינת האפליקציה.",
+  "error.page.description.localServerStartup": "אירעה שגיאה בעת הפעלת השרת המקומי.",
+  "error.page.details.label": "פרטי שגיאה",
+  "error.page.action.restart": "הפעל מחדש",
+  "error.page.action.report": "דווח על שגיאה",
+  "error.page.action.reported": "שגיאה דווחה",
+  "error.page.action.exportLogs": "ייצוא יומנים",
+  "error.page.action.checking": "בודק...",
+  "error.page.action.checkUpdates": "בדוק אם יש עדכונים",
+  "error.page.action.updateTo": "עדכון ל-{{version}}",
+  "error.page.circular": "[מעגלי]",
+  "error.page.report.prefix": "אנא דווח על שגיאה זו לצוות OpenCode",
+  "error.page.report.discord": "ב-Discord",
+  "error.page.version": "גרסה: {{version}}",
+  "error.dev.rootNotFound":
+    "רכיב השורש לא נמצא. שכחת להוסיף אותו ל-index.html שלך? או שאולי התכונה id נכתבה בצורה שגויה?",
+  "error.serverSync.connectFailed": "לא ניתן להתחבר לשרת. האם יש שרת שפועל ב-`{{url}}`?",
+  "error.serverSDK.noServerAvailable": "אין שרת זמין",
+  "error.serverSDK.serverNotAvailable": "השרת אינו זמין",
+  "error.childStore.persistedCacheCreateFailed": "יצירת המטמון המתמשך נכשלה",
+  "error.childStore.persistedProjectMetadataCreateFailed": "יצירת המטא-נתונים המתמשכים של הפרויקט נכשלה",
+  "error.childStore.persistedProjectIconCreateFailed": "יצירת סמל הפרויקט המתמשך נכשלה",
+  "error.childStore.storeCreateFailed": "יצירת מאגר הנתונים נכשלה",
+  "directory.error.invalidUrl": "ספרייה לא חוקית ב-URL.",
+  "error.chain.unknown": "שגיאה לא ידועה",
+  "error.server.invalidConfiguration": "תצורה לא חוקית",
+  "error.chain.causedBy": "נגרם על ידי:",
+  "error.chain.apiError": "שגיאת API",
+  "error.chain.status": "מצב: {{status}}",
+  "error.chain.retryable": "אפשר לנסות שוב: {{retryable}}",
+  "error.chain.responseBody": "גוף התגובה:\n{{body}}",
+  "error.chain.didYouMean": "האם התכוונת ל: {{suggestions}}",
+  "error.chain.modelNotFound": "המודל לא נמצא: {{provider}}/{{model}}",
+  "error.chain.checkConfig": "יש לבדוק את שמות הספק והמודל בהגדרות (opencode.json)",
+  "error.chain.mcpFailed": 'שרת MCP "{{name}}" נכשל. הערה, OpenCode אינו תומך עדיין באימות MCP.',
+  "error.chain.providerAuthFailed": "אימות הספק נכשל ({{provider}}): {{message}}",
+  "error.chain.providerInitFailed": 'אתחול הספק "{{provider}}" נכשל. בדוק אישורים ותצורה.',
+  "error.chain.configJsonInvalid": "קובץ התצורה ב-{{path}} אינו חוקי JSON(C)",
+  "error.chain.configJsonInvalidWithMessage": "קובץ התצורה ב-{{path}} אינו חוקי JSON(C): {{message}}",
+  "error.chain.configDirectoryTypo":
+    'הספרייה "{{dir}}" ב-{{path}} אינה חוקית. שנה את שם הספרייה ל-"{{suggestion}}" או הסר אותה. זוהי שגיאת הקלדה נפוצה.',
+  "error.chain.configFrontmatterError": "ניתוח ה-frontmatter ב-{{path}} נכשל:\n{{message}}",
+  "error.chain.configInvalid": "קובץ התצורה ב-{{path}} אינו חוקי",
+  "error.chain.configInvalidWithMessage": "קובץ התצורה ב-{{path}} אינו חוקי: {{message}}",
+  "notification.permission.title": "נדרש אישור",
+  "notification.permission.description": "{{sessionTitle}} ב-{{projectName}} זקוק להרשאה",
+  "notification.question.title": "שאלה",
+  "notification.question.description": "ל-{{sessionTitle}} ב-{{projectName}} יש שאלה",
+  "notification.action.goToSession": "מעבר להפעלה",
+  "notification.session.responseReady.title": "התגובה מוכנה",
+  "notification.session.error.title": "שגיאת הפעלה",
+  "notification.session.error.fallbackDescription": "אירעה שגיאה",
+  "home.recentProjects": "פרויקטים אחרונים",
+  "home.empty.title": "אין פרויקטים אחרונים",
+  "home.empty.description": "התחל על ידי פתיחת פרויקט מקומי",
+  "home.title": "דף הבית",
+  "home.projects": "פרויקטים",
+  "home.project.add": "הוסף פרויקט",
+  "home.recentlyClosed": "נסגרו לאחרונה",
+  "home.server.collapse": "כיווץ פרויקטים של שרת",
+  "home.server.expand": "הרחב פרויקטים של שרתים",
+  "home.sessions.search.placeholder": "חיפוש הפעלות",
+  "home.sessions.search.placeholder.scoped": "חיפוש הפעלות ב-{{scope}}",
+  "home.sessions.search.sessions": "הפעלות",
+  "home.sessions.search.noResults": "לא נמצאו הפעלות עבור {{query}}",
+  "home.sessions.empty": "שום דבר כאן עדיין",
+  "home.sessions.empty.description": "צור הפעלה כדי להתחיל",
+  "home.sessions.group.today": "היום",
+  "home.sessions.group.yesterday": "אתמול",
+  "home.sessions.group.older": "ישנות יותר",
+  "home.providerTip": "התחבר ל-75+ ספקים כדי להשתמש במודלים אחרים, כולל Claude, GPT, Gemini וכו'",
+  "session.tab.session": "הפעלה",
+  "session.tab.review": "סקירה",
+  "session.tab.context": "הקשר",
+  "session.tab.unknown": "הפעלה לא ידועה",
+  "session.panel.reviewAndFiles": "סקירה וקבצים",
+  "session.error.notFound": "לא ניתן למצוא את ההפעלה הזו",
+  "session.error.notFound.description": "כרטיסייה זו מצביעה על הפעלה שאינה קיימת עוד בשרת זה.",
+  "session.error.notFound.closeTab": "סגור כרטיסייה",
+  "session.background.moveTasks": "העבר את {{tasks}} לרקע",
+  "session.background.inBackground": "הפעלת {{tasks}} ברקע",
+  "session.background.combine": "{{first}} ו-{{second}}",
+  "session.background.shell.one": "{{count}} פקודת מעטפת",
+  "session.background.shell.other": "{{count}} פקודות מעטפת",
+  "session.background.subagent.one": "{{count}} סוכן משנה",
+  "session.background.subagent.other": "{{count}} סוכני משנה",
+  "command.session.background": "העבר לרקע",
+  "session.timeline.notice.finished": "ההרצה של {{actor}} הסתיימה",
+  "session.timeline.notice.failed": "ההרצה של {{actor}} נכשלה",
+  "session.timeline.notice.cancelled": "ההרצה של {{actor}} בוטלה",
+  "session.error.serverConnection": "לא מצליח להתחבר לשרת הזה",
+  "session.review.filesChanged": "קבצים שהשתנו: {{count}}",
+  "session.review.change.one": "שינוי",
+  "session.review.change.other": "שינויים",
+  "session.review.loadingChanges": "טוען שינויים...",
+  "session.review.empty": "אין עדיין שינויים בהפעלה זו",
+  "session.review.noVcs": "לא זוהתה מערכת בקרת גרסאות של Git, ולכן השינויים אינם מוצגים",
+  "session.review.noVcs.createGit.title": "צור מאגר Git",
+  "session.review.noVcs.createGit.description": "עקוב, סקור ובטל שינויים בפרויקט הזה",
+  "session.review.noVcs.createGit.actionLoading": "יוצר מאגר Git...",
+  "session.review.noVcs.createGit.action": "צור מאגר Git",
+  "session.review.noSnapshot": "המעקב אחר snapshots מושבת בהגדרות, ולכן שינויי ההפעלה אינם זמינים",
+  "session.review.noChanges": "אין שינויים",
+  "session.review.noUncommittedChanges": "אין עדיין שינויים שלא בוצע להם commit",
+  "session.review.noBranchChanges": "אין עדיין שינויים בענף",
+  "session.files.selectToOpen": "בחר קובץ לפתיחה",
+  "session.files.all": "כל הקבצים",
+  "session.files.empty": "אין קבצים",
+  "session.files.binaryContent": "קובץ בינארי (לא ניתן להציג תוכן)",
+  "session.messages.renderEarlier": "הצגת הודעות קודמות",
+  "session.messages.loadingEarlier": "טוען הודעות קודמות...",
+  "session.messages.loadEarlier": "טען הודעות קודמות",
+  "session.messages.loading": "טוען הודעות...",
+  "session.messages.jumpToLatest": "מעבר להודעה האחרונה",
+  "session.context.addToContext": "הוסף {{selection}} להקשר",
+  "session.todo.title": "משימות",
+  "session.todo.collapse": "כווץ",
+  "session.todo.expand": "הרחב",
+  "session.todo.progress": "{{done}} מתוך {{total}} משימות הושלמו",
+  "session.question.progress": "שאלה {{current}} מתוך {{total}}",
+  "session.question.minimize": "צמצם את השאלה",
+  "session.question.restore": "שחזר שאלה",
+  "session.question.pending.one": "{{count}} שאלה ממתינה",
+  "session.question.pending.other": "{{count}} שאלות ממתינות",
+  "session.followupDock.summary.one": "{{count}} הודעה בתור",
+  "session.followupDock.summary.other": "{{count}} הודעות בתור",
+  "session.followupDock.sendNow": "שלח עכשיו",
+  "session.followupDock.edit": "ערוך",
+  "session.followupDock.collapse": "כווץ הודעות בתור",
+  "session.followupDock.expand": "הרחב הודעות בתור",
+  "session.revertDock.summary.one": "{{count}} הודעה בוטלה",
+  "session.revertDock.summary.other": "{{count}} הודעות בוטלו",
+  "session.revertDock.collapse": "כווץ הודעות שהוחזרו לאחור",
+  "session.revertDock.expand": "הרחב הודעות שהוחזרו לאחור",
+  "session.revertDock.restore": "שחזר הודעה",
+  "session.new.title": "בנה כל דבר",
+  "session.new.project.new": "פרויקט חדש",
+  "session.new.project.search": "חיפוש פרויקטים",
+  "session.new.project.add": "הוסף פרויקט",
+  "session.new.worktree.main": "הענף הראשי",
+  "session.new.worktree.mainWithBranch": "הענף הראשי ({{branch}})",
+  "session.new.worktree.create": "יצירת סביבת עבודה חדשה",
+  "session.new.workspace.runIn": "הפעל את ההפעלה ב:",
+  "session.new.workspace.triggerLocal": "מקומי",
+  "session.new.workspace.local": "מאגר מקומי",
+  "session.new.workspace.existing": "סביבת עבודה…",
+  "session.new.git.none": "אין Git",
+  "session.new.lastModified": "שינוי אחרון",
+  "session.header.search.placeholder": "חפש את {{project}}",
+  "session.header.searchFiles": "חפש קבצים",
+  "session.header.openIn": "פתיחה באמצעות",
+  "session.header.open.action": "פתח את {{app}}",
+  "session.header.open.ariaLabel": "פתח ב-{{app}}",
+  "session.header.open.menu": "פתח אפשרויות",
+  "session.header.open.copyPath": "העתק נתיב",
+  "session.header.open.finder": "Finder",
+  "session.header.open.fileExplorer": "File Explorer",
+  "session.header.open.fileManager": "File Manager",
+  "session.header.reveal.finder": "הצגה ב-Finder",
+  "session.header.reveal.fileExplorer": "הצגה ב-File Explorer",
+  "session.header.reveal.containingFolder": "פתח את התיקיה המכילה",
+  "session.header.open.app.vscode": "VS Code",
+  "session.header.open.app.cursor": "Cursor",
+  "session.header.open.app.zed": "Zed",
+  "session.header.open.app.textmate": "TextMate",
+  "session.header.open.app.antigravity": "Antigravity",
+  "session.header.open.app.terminal": "מסוף",
+  "session.header.open.app.iterm2": "iTerm2",
+  "session.header.open.app.ghostty": "Ghostty",
+  "session.header.open.app.warp": "Warp",
+  "session.header.open.app.xcode": "Xcode",
+  "session.header.open.app.androidStudio": "Android Studio",
+  "session.header.open.app.powershell": "PowerShell",
+  "session.header.open.app.sublimeText": "Sublime Text",
+  "status.popover.trigger": "סטטוס",
+  "status.popover.ariaLabel": "תצורות שרת",
+  "status.popover.tab.servers": "שרתים",
+  "status.popover.tab.mcp": "MCP",
+  "status.popover.tab.lsp": "LSP",
+  "status.popover.tab.plugins": "תוספים",
+  "status.popover.action.manageServers": "ניהול שרתים",
+  "session.share.popover.title": "פרסם באינטרנט",
+  "session.share.popover.description.shared": "ההפעלה מפורסמת באינטרנט וזמינה לכל מי שיש לו את הקישור.",
+  "session.share.popover.description.unshared": "פרסום ההפעלה באינטרנט כך שתהיה זמינה לכל מי שיש לו את הקישור.",
+  "session.share.action.share": "שתף",
+  "session.share.action.publish": "פרסם",
+  "session.share.action.publishing": "מפרסם...",
+  "session.share.action.unpublish": "בטל את הפרסום",
+  "session.share.action.unpublishing": "מבטל את הפרסום...",
+  "session.share.action.view": "הצג",
+  "session.share.copy.copied": "הועתק",
+  "session.share.copy.copyLink": "העתק קישור",
+  "lsp.tooltip.none": "אין שרתי LSP",
+  "lsp.label.connected": "{{count}} LSP",
+  "prompt.loading": "טוען פרומפט...",
+  "terminal.loading": "טוען מסוף...",
+  "terminal.title": "מסוף",
+  "terminal.title.numbered": "מסוף {{number}}",
+  "terminal.close": "סגור את המסוף",
+  "terminal.connectionLost.title": "החיבור אבד",
+  "terminal.connectionLost.abnormalClose": "WebSocket נסגר בצורה לא תקינה: {{code}}",
+  "terminal.connectionLost.description": "החיבור למסוף נקטע. הדבר עשוי לקרות כשהשרת מופעל מחדש.",
+  "terminal.connectTicket.csrfError": "כרטיס ההתחברות של PTY נדחה בבדיקות המקור או CSRF. יש לבדוק את הגדרות CORS בשרת.",
+  "terminal.connectTicket.statusError": "כרטיס החיבור של PTY נכשל, סטטוס: {{status}}",
+  "titlebar.update": "עדכון",
+  "titlebar.updateVersion": "עדכון {{version}}",
+  "common.closeTab": "סגור כרטיסייה",
+  "common.dismiss": "סגור",
+  "common.moreCountSuffix": "(+{{count}} עוד)",
+  "common.requestFailed": "הבקשה נכשלה",
+  "common.moreOptions": "אפשרויות נוספות",
+  "common.learnMore": "למידע נוסף",
+  "common.rename": "שנה שם",
+  "common.export": "ייצוא",
+  "common.reset": "אפס",
+  "common.archive": "ארכיון",
+  "common.delete": "מחק",
+  "common.close": "סגור",
+  "common.edit": "ערוך",
+  "common.loadMore": "טען עוד",
+  "common.key.esc": "ESC",
+  "common.key.ctrl": "Ctrl",
+  "common.key.alt": "Alt",
+  "common.key.shift": "Shift",
+  "common.key.meta": "Meta",
+  "common.key.space": "Space",
+  "common.key.backspace": "Backspace",
+  "common.key.enter": "Enter",
+  "common.key.tab": "Tab",
+  "common.key.delete": "מחק",
+  "common.key.home": "Home",
+  "common.key.end": "End",
+  "common.key.pageUp": "Page Up",
+  "common.key.pageDown": "Page Down",
+  "common.key.insert": "Insert",
+  "common.unknown": "לא ידוע",
+  "common.time.justNow": "רק עכשיו",
+  "common.time.minutesAgo.short": "לפני {{count}}m",
+  "common.time.hoursAgo.short": "לפני {{count}}h",
+  "common.time.daysAgo.short": "לפני {{count}}d",
+  "sidebar.menu.toggle": "הצג או הסתר את התפריט",
+  "sidebar.nav.projectsAndSessions": "פרויקטים והפעלות",
+  "sidebar.settings": "הגדרות",
+  "sidebar.help": "עזרה",
+  "sidebar.workspaces.enable": "אפשר סביבות עבודה",
+  "sidebar.workspaces.disable": "השבת סביבות עבודה",
+  "sidebar.gettingStarted.title": "מתחילים",
+  "sidebar.gettingStarted.line1": "OpenCode כולל מודלים חינמיים כך שתוכל להתחיל מיד.",
+  "sidebar.gettingStarted.line2": "חבר ספק כלשהו כדי להשתמש במודלים נוספים, בהם Claude, GPT, Gemini ועוד.",
+  "sidebar.project.recentSessions": "הפעלות האחרונות",
+  "sidebar.project.viewAllSessions": "הצג את כל ההפעלות",
+  "sidebar.project.clearNotifications": "נקה התראות",
+  "sidebar.empty.title": "אין פרויקטים פתוחים",
+  "sidebar.empty.description": "פתח פרויקט כדי להתחיל",
+  "debugBar.ariaLabel": "אבחון ביצועי פיתוח",
+  "debugBar.na": "לא זמין",
+  "debugBar.nav.label": "NAV",
+  "debugBar.nav.tip": "מעבר המסלול האחרון שהושלם ונגע בדף הפעלה, מתחילת פעולת הנתב ועד לציור הראשון לאחר שהתייצב.",
+  "debugBar.fps.label": "FPS",
+  "debugBar.fps.tip": "ממוצע נע של פריימים לשנייה בחמש השניות האחרונות.",
+  "debugBar.frame.label": "FRAME",
+  "debugBar.frame.tip": "זמן הפריימים הגרוע ביותר ב-5 השניות האחרונות.",
+  "debugBar.jank.label": "JANK",
+  "debugBar.jank.tip": "פריימים מעל 32ms ב-5 השניות האחרונות.",
+  "debugBar.long.label": "LONG",
+  "debugBar.long.tip": "זמן חסימה ומספר משימות ארוכות בחמש השניות האחרונות. המשימה הארוכה ביותר: {{max}}.",
+  "debugBar.delay.label": "DELAY",
+  "debugBar.delay.tip": "עיכוב הקלט הגרוע ביותר שנצפה ב-5 השניות האחרונות.",
+  "debugBar.inp.label": "INP",
+  "debugBar.inp.tip": "משך אינטראקציה משוער ב-5 השניות האחרונות. זה דומה ל-INP, לא ה-Web Vitals הרשמי INP.",
+  "debugBar.cls.label": "CLS",
+  "debugBar.cls.tip": "שינוי פריסה מצטבר למשך חיי האפליקציה הנוכחיים.",
+  "debugBar.mem.label": "MEM",
+  "debugBar.mem.tipUnavailable": "זיכרון JS heap בשימוש לעומת המגבלה. זמין ב-Chromium בלבד.",
+  "debugBar.mem.tip": "זיכרון JS heap בשימוש לעומת המגבלה: {{used}} מתוך {{limit}}.",
+  "debugBar.focus.label": "FOCUS",
+  "debugBar.focus.tip": "כפה סגנונות מיקוד על כל האלמנטים האינטראקטיביים",
+  "debugBar.focus.on": "מופעל",
+  "debugBar.focus.off": "כבוי",
+  "debugBar.direction.label": "DIR",
+  "debugBar.direction.tip": "כפה את כיוון פריסת האפליקציה המלא מבלי לשנות את השפה שנבחרה",
+  "debugBar.direction.ltr": "LTR",
+  "debugBar.direction.rtl": "RTL",
+  "app.name.desktop": "OpenCode Desktop",
+  "settings.section.desktop": "שולחן עבודה",
+  "settings.section.server": "שרת",
+  "settings.tab.general": "כללי",
+  "settings.tab.preferences": "העדפות",
+  "settings.tab.shortcuts": "קיצורי דרך",
+  "settings.tab.notifications": "התראות",
+  "settings.tab.projects": "פרויקטים",
+  "settings.tab.extensions": "הרחבות",
+  "settings.preferences.description": "התאם אישית את ההעדפות, ערכת הנושא והתנהגות ברירת המחדל",
+  "settings.appearance.description": "התאם אישית עיצוב וגופנים",
+  "settings.notifications.description": "בחר מתי לקבל התראות ולשמוע צלילים",
+  "settings.shortcuts.description": "התאם אישית קיצורי דרך לפעולות נפוצות",
+  "settings.servers.description": "ניהול חיבורי שרתים",
+  "settings.projects.title": "פרויקטים",
+  "settings.projects.description": "נהל את הגדרות הפרויקט בשרת זה",
+  "settings.projects.empty": "לא נמצאו פרויקטים",
+  "settings.projects.server.all": "כל השרתים",
+  "settings.mcps.description": "ניהול שרתים וכלים של Model Context Protocol (MCP).",
+  "settings.extensions.description": "נהל הרחבות הזמינות בשרת זה",
+  "settings.extensions.tab.mcps": "MCPs",
+  "settings.extensions.tab.skills": "מיומנויות",
+  "settings.extensions.availableAll": "זמינות לכל הפרויקטים",
+  "settings.extensions.manageConfig": "נהל ב-opencode.json",
+  "settings.extensions.addSkills": "כיצד להוסיף מיומנויות",
+  "settings.desktop.section.wsl": "WSL",
+  "settings.desktop.wsl.title": "שילוב WSL",
+  "settings.desktop.wsl.description": "הפעל את שרת OpenCode בתוך WSL ב-Windows.",
+  "dialog.server.authenticate.title": "אימות",
+  "project.settings.general.description": "נהל את שם הפרויקט ומראהו",
+  "project.settings.scripts": "סקריפטים",
+  "project.settings.scripts.description": "הגדר סקריפטים עבור פרויקט זה",
+  "project.settings.extensions.description": "צפה בהרחבות הזמינות לפרויקט זה",
+  "project.settings.extensions.tab.lsps": "LSPs",
+  "project.settings.extensions.added": "נוספו לפרויקט הזה",
+  "project.settings.extensions.shared": "משותפות לכל הפרויקטים",
+  "project.settings.extensions.lsp.detected": "זוהו שרתי שפה",
+  "project.settings.extensions.lsp.description": "זוהו אוטומטית לפי סוגי הקבצים",
+  "project.settings.extensions.setupRequired": "נדרשת הגדרה",
+  "settings.general.section.appearance": "מראה",
+  "settings.general.section.general": "כללי",
+  "settings.general.section.advanced": "מתקדם",
+  "settings.general.section.notifications": "התראות שולחן עבודה",
+  "settings.general.section.updates": "עדכונים",
+  "settings.general.section.sounds": "אפקטים קוליים",
+  "settings.general.section.feed": "הזנה",
+  "settings.general.section.display": "תצוגה",
+  "settings.general.row.language.title": "שפה",
+  "settings.general.row.language.description": "שנה את שפת התצוגה עבור OpenCode",
+  "settings.general.row.shell.title": "מעטפת המסוף",
+  "settings.general.row.shell.description": "המעטפת המשמשת את המסוף ואת כלי הסוכן",
+  "settings.general.row.shell.autoDefault": "אוטומטי (ברירת מחדל)",
+  "settings.general.row.shell.terminalOnly": "מסוף בלבד",
+  "settings.general.row.appearance.title": "מראה",
+  "settings.general.row.appearance.description": "התאם אישית איך OpenCode נראה במכשיר שלך",
+  "settings.general.row.colorScheme.title": "ערכת צבעים",
+  "settings.general.row.colorScheme.description": "בחירה אם OpenCode ישתמש בערכת הצבעים של המערכת, הבהירה או הכהה",
+  "settings.general.row.theme.title": "ערכת נושא",
+  "settings.general.row.theme.description": "התאמת ערכת הנושא של OpenCode.",
+  "settings.general.row.font.title": "גופן קוד",
+  "settings.general.row.font.description": "התאם אישית את הגופן המשמש בלוקי קוד",
+  "settings.general.row.terminalFont.title": "גופן המסוף",
+  "settings.general.row.terminalFont.description": "התאם אישית את הגופן המשמש במסוף",
+  "settings.general.row.uiFont.title": "גופן ממשק משתמש",
+  "settings.general.row.uiFont.description": "התאם אישית את הגופן המשמש בכל הממשק",
+  "settings.general.row.followup.title": "התנהגות פרומפטים עוקבים",
+  "settings.general.row.followup.description": "בחירה אם פרומפטים עוקבים יכוונו מיד את הסוכן או ימתינו בתור",
+  "settings.general.row.followup.option.queue": "תור",
+  "settings.general.row.followup.option.steer": "כוון מיד",
+  "settings.general.row.showFileTree.title": "עץ קבצים",
+  "settings.general.row.showFileTree.description": "הצג את חלונית עץ הקבצים בהפעלות",
+  "settings.general.row.showNavigation.title": "בקרות ניווט",
+  "settings.general.row.showNavigation.description": "הצג את הלחצנים אחורה וקדימה בשורת הכותרת של שולחן העבודה",
+  "settings.general.row.showSearch.title": "לוח פקודות",
+  "settings.general.row.showSearch.description": "הצג את כפתור לוח החיפוש והפקודות בשורת הכותרת",
+  "settings.general.row.showTerminal.title": "מסוף",
+  "settings.general.row.showTerminal.description": "הצג את לחצן המסוף בשורת הכותרת של שולחן העבודה",
+  "settings.general.row.showStatus.title": "מצב השרת",
+  "settings.general.row.showStatus.description": "הצג את לחצן מצב השרת בשורת הכותרת",
+  "settings.general.row.mobileTitlebarBottom.title": "ניווט תחתון",
+  "settings.general.row.mobileTitlebarBottom.description": "מקם את שורת הכותרת וכרטיסיות ההפעלה בתחתית המסך בנייד",
+  "settings.general.row.showCustomAgents.title": "הצגת סוכן",
+  "settings.general.row.showCustomAgents.description":
+    "מעבר בין סוכנים בשדה הכתיבה. כשהאפשרות מוסתרת, ברירת המחדל היא הסוכן Build.",
+  "settings.general.row.reasoningSummaries.title": "הצג סיכומי נימוקים",
+  "settings.general.row.reasoningSummaries.description": "הצג סיכומי חשיבה של מודל בציר הזמן",
+  "settings.general.row.shellToolPartsExpanded.title": "הרחבת מקטעי כלי המעטפת",
+  "settings.general.row.shellToolPartsExpanded.description":
+    "הצג את מקטעי כלי המעטפת כשהם מורחבים כברירת מחדל בציר הזמן",
+  "settings.general.row.editToolPartsExpanded.title": "הרחבת מקטעי כלי העריכה",
+  "settings.general.row.editToolPartsExpanded.description":
+    "הצג חלקי כלי עריכה, כתיבה ותיקון מורחבים כברירת מחדל בציר הזמן",
+  "settings.general.row.newInterface.title": "פריסה חדשה",
+  "settings.general.row.newInterface.badge": "חדש",
+  "settings.general.row.newInterface.description": "השתמש בכרטיסיות החדשות ובפריסת הבית. מעבר בין פריסות לזמן מוגבל.",
+  "settings.general.row.newInterfaceNotice.title": "אתה משתמש כעת בפריסה חדשה",
+  "settings.general.row.newInterfaceNotice.description": "הפריסה הקודמת אינה זמינה יותר",
+  "settings.general.row.newInterfaceNotice.dismiss": "סגור",
+  "settings.general.row.pinchZoom.title": "שינוי גודל באמצעות צביטה",
+  "settings.general.row.pinchZoom.description": "מתן אפשרות לשינוי גודל באמצעות צביטה במשטח המגע או גלילה עם Ctrl",
+  "settings.general.row.wayland.title": "השתמש ב-Wayland מקורי",
+  "settings.general.row.wayland.description": "השבתת החזרה ל-X11 ב-Wayland. נדרשת הפעלה מחדש.",
+  "settings.general.row.wayland.tooltip": "ב-Linux עם צגי קצב רענון מעורבים, ה-Wayland המקורי יכול להיות יציב יותר.",
+  "settings.general.row.releaseNotes.title": "הערות שחרור",
+  "settings.general.row.releaseNotes.description": "הצגת חלונות 'מה חדש' לאחר עדכונים",
+  "settings.updates.row.startup.title": "בדוק אם יש עדכונים בעת ההפעלה",
+  "settings.updates.row.startup.description": "בדוק באופן אוטומטי אם יש עדכונים כאשר OpenCode מופעל",
+  "settings.updates.row.check.title": "בדוק אם יש עדכונים",
+  "settings.updates.row.check.description": "בדוק ידנית אם קיימים עדכונים והתקן אם זמין",
+  "settings.updates.action.checkNow": "בדוק עכשיו",
+  "settings.updates.action.checking": "בודק...",
+  "settings.updates.action.downloading": "מוריד...",
+  "settings.updates.action.installing": "מתקין...",
+  "settings.updates.toast.latest.title": "אתה מעודכן",
+  "settings.updates.toast.latest.description": "אתה מפעיל את הגרסה האחרונה של OpenCode.",
+  "sound.option.none": "אין",
+  "sound.option.alert01": "התראה 01",
+  "sound.option.alert02": "התראה 02",
+  "sound.option.alert03": "התראה 03",
+  "sound.option.alert04": "התראה 04",
+  "sound.option.alert05": "התראה 05",
+  "sound.option.alert06": "התראה 06",
+  "sound.option.alert07": "התראה 07",
+  "sound.option.alert08": "התראה 08",
+  "sound.option.alert09": "התראה 09",
+  "sound.option.alert10": "התראה 10",
+  "sound.option.bipbop01": "ביפ-בופ 01",
+  "sound.option.bipbop02": "ביפ-בופ 02",
+  "sound.option.bipbop03": "ביפ-בופ 03",
+  "sound.option.bipbop04": "ביפ-בופ 04",
+  "sound.option.bipbop05": "ביפ-בופ 05",
+  "sound.option.bipbop06": "ביפ-בופ 06",
+  "sound.option.bipbop07": "ביפ-בופ 07",
+  "sound.option.bipbop08": "ביפ-בופ 08",
+  "sound.option.bipbop09": "ביפ-בופ 09",
+  "sound.option.bipbop10": "ביפ-בופ 10",
+  "sound.option.staplebops01": "Staplebops 01",
+  "sound.option.staplebops02": "Staplebops 02",
+  "sound.option.staplebops03": "Staplebops 03",
+  "sound.option.staplebops04": "Staplebops 04",
+  "sound.option.staplebops05": "Staplebops 05",
+  "sound.option.staplebops06": "Staplebops 06",
+  "sound.option.staplebops07": "Staplebops 07",
+  "sound.option.nope01": "לא 01",
+  "sound.option.nope02": "לא 02",
+  "sound.option.nope03": "לא 03",
+  "sound.option.nope04": "לא 04",
+  "sound.option.nope05": "לא 05",
+  "sound.option.nope06": "לא 06",
+  "sound.option.nope07": "לא 07",
+  "sound.option.nope08": "לא 08",
+  "sound.option.nope09": "לא 09",
+  "sound.option.nope10": "לא 10",
+  "sound.option.nope11": "לא 11",
+  "sound.option.nope12": "לא 12",
+  "sound.option.yup01": "כן 01",
+  "sound.option.yup02": "כן 02",
+  "sound.option.yup03": "כן 03",
+  "sound.option.yup04": "כן 04",
+  "sound.option.yup05": "כן 05",
+  "sound.option.yup06": "כן 06",
+  "settings.general.notifications.agent.title": "סוכן",
+  "settings.general.notifications.agent.description": "הצגת התראת מערכת כשהסוכן מסיים או זקוק לתשומת לב",
+  "settings.general.notifications.permissions.title": "הרשאות",
+  "settings.general.notifications.permissions.description": "הצג הודעת מערכת כאשר נדרשת הרשאה",
+  "settings.general.notifications.errors.title": "שגיאות",
+  "settings.general.notifications.errors.description": "הצג הודעת מערכת כאשר מתרחשת שגיאה",
+  "settings.general.sounds.agent.title": "סוכן",
+  "settings.general.sounds.agent.description": "השמעת צליל כשהסוכן מסיים או זקוק לתשומת לב",
+  "settings.general.sounds.permissions.title": "הרשאות",
+  "settings.general.sounds.permissions.description": "הפעל צליל כאשר נדרשת הרשאה",
+  "settings.general.sounds.errors.title": "שגיאות",
+  "settings.general.sounds.errors.description": "השמע צליל כאשר מתרחשת שגיאה",
+  "settings.shortcuts.title": "קיצורי מקלדת",
+  "settings.shortcuts.reset.button": "אפס לברירות המחדל",
+  "settings.shortcuts.reset.toast.title": "קיצורי הדרך אופסו",
+  "settings.shortcuts.reset.toast.description": "קיצורי המקשים אופסו לברירות המחדל.",
+  "settings.shortcuts.conflict.title": "קיצור דרך כבר בשימוש",
+  "settings.shortcuts.conflict.description": "{{keybind}} כבר מוקצה ל-{{titles}}.",
+  "settings.shortcuts.unassigned": "לא הוקצה",
+  "settings.shortcuts.pressKeys": "הקש על מקשים",
+  "settings.shortcuts.search.placeholder": "חיפוש קיצורי דרך",
+  "settings.shortcuts.search.empty": "לא נמצאו קיצורי דרך",
+  "settings.shortcuts.group.general": "כללי",
+  "settings.shortcuts.group.session": "הפעלה",
+  "settings.shortcuts.group.navigation": "ניווט",
+  "settings.shortcuts.group.modelAndAgent": "מודל וסוכן",
+  "settings.shortcuts.group.terminal": "מסוף",
+  "settings.shortcuts.group.prompt": "פרומפט",
+  "settings.providers.title": "ספקים",
+  "settings.providers.description": "חבר ונהל ספקי מודלים",
+  "settings.providers.section.connected": "ספקים מחוברים",
+  "settings.providers.connected.empty": "אין ספקים מחוברים",
+  "settings.providers.connected.environmentDescription": "מחובר ממשתני הסביבה שלך",
+  "settings.providers.section.popular": "ספקים פופולריים",
+  "settings.providers.custom.description": "הוספת ספק תואם OpenAI באמצעות כתובת URL בסיסית.",
+  "settings.providers.tag.environment": "סביבה",
+  "settings.providers.tag.config": "הגדרות",
+  "settings.providers.tag.custom": "מותאם אישית",
+  "settings.providers.tag.other": "אחר",
+  "settings.models.title": "מודלים",
+  "settings.models.description": "בחר אילו מודלים יופיעו בבורר המודלים",
+  "settings.agents.title": "סוכנים",
+  "settings.agents.description": "הגדרות הסוכן יהיו ניתנות להגדרה כאן.",
+  "settings.commands.title": "פקודות",
+  "settings.commands.description": "הגדרות הפקודה יהיו ניתנות להגדרה כאן.",
+  "settings.mcp.title": "MCP",
+  "settings.mcp.description": "הגדרות MCP יהיו ניתנות להגדרה כאן.",
+  "settings.permissions.title": "הרשאות",
+  "settings.permissions.description": "שליטה באילו כלים השרת יכול להשתמש כברירת מחדל.",
+  "settings.permissions.section.tools": "כלים",
+  "settings.permissions.toast.updateFailed.title": "עדכון ההרשאות נכשל",
+  "settings.permissions.action.allow": "אפשר",
+  "settings.permissions.action.ask": "שאל",
+  "settings.permissions.action.deny": "דחה",
+  "settings.permissions.tool.read.title": "קרא",
+  "settings.permissions.tool.read.description": "קריאת קובץ (תואם לנתיב הקובץ)",
+  "settings.permissions.tool.edit.title": "ערוך",
+  "settings.permissions.tool.edit.description": "שנה קבצים, כולל עריכות, כתיבה ותיקונים",
+  "settings.permissions.tool.glob.title": "Glob",
+  "settings.permissions.tool.glob.description": "התאמת קבצים באמצעות תבניות glob",
+  "settings.permissions.tool.grep.title": "Grep",
+  "settings.permissions.tool.grep.description": "חפש את תוכן הקובץ באמצעות ביטויים רגולריים",
+  "settings.permissions.tool.list.title": "רשימה",
+  "settings.permissions.tool.list.description": "הצגת קבצים בתיקייה",
+  "settings.permissions.tool.bash.title": "Bash",
+  "settings.permissions.tool.bash.description": "הרצת פקודות מעטפת",
+  "settings.permissions.tool.task.title": "משימה",
+  "settings.permissions.tool.task.description": "הפעל סוכני משנה",
+  "settings.permissions.tool.skill.title": "מיומנות",
+  "settings.permissions.tool.skill.description": "טען מיומנות לפי שם",
+  "settings.permissions.tool.lsp.title": "LSP",
+  "settings.permissions.tool.lsp.description": "הפעל שאילתות שרת שפה",
+  "settings.permissions.tool.todowrite.title": "Todo Write",
+  "settings.permissions.tool.todowrite.description": "עדכן את רשימת המשימות",
+  "settings.permissions.tool.webfetch.title": "Web Fetch",
+  "settings.permissions.tool.webfetch.description": "אחזר תוכן מ-URL",
+  "settings.permissions.tool.websearch.title": "Web Search",
+  "settings.permissions.tool.websearch.description": "חפש באינטרנט",
+  "settings.permissions.tool.external_directory.title": "ספרייה חיצונית",
+  "settings.permissions.tool.external_directory.description": "גישה לקבצים מחוץ לספריית הפרויקט",
+  "settings.permissions.tool.doom_loop.title": "לולאה אינסופית",
+  "settings.permissions.tool.doom_loop.description": "זיהוי קריאות כלים חוזרות ונשנות עם קלט זהה",
+  "session.delete.failed.title": "מחיקת ההפעלה נכשלה",
+  "session.delete.title": "מחק הפעלה",
+  "session.delete.confirm": 'למחוק את ההפעלה "{{name}}"?',
+  "session.delete.button": "מחק הפעלה",
+  "workspace.new": "סביבת עבודה חדשה",
+  "common.viewAll": "הצג הכל",
+  "session.new.workspace.local.tooltip": "שימוש ב-checkout הנוכחי",
+  "session.new.workspace.new.tooltip": "יצירת checkout מבודד",
+  "session.new.workspace.fromBranch": "מ-{{branch}}",
+  "session.new.workspace.trigger.tooltip": "בחר היכן להפעיל את ההפעלה",
+  "session.new.workspace.search.placeholder": "חיפוש סביבות עבודה",
+  "settings.tab.workspaces": "סביבות עבודה",
+  "settings.workspaces.filter.all": "כל הפרויקטים",
+  "settings.workspaces.empty": "אין סביבות עבודה",
+  "settings.workspaces.count.one": "{{count}} סביבת עבודה",
+  "settings.workspaces.count.other": "{{count}} סביבות עבודה",
+  "settings.workspaces.sessions.one": "{{count}} הפעלה ב-{{project}}",
+  "settings.workspaces.sessions.other": "{{count}} הפעלות ב-{{project}}",
+  "settings.workspaces.lastActiveSession": "ההפעלה הפעילה האחרונה",
+  "settings.workspaces.deleteAll": "מחק את כל סביבות העבודה",
+  "settings.workspaces.deleteAll.confirm": "למחוק את כל {{count}} סביבות העבודה?",
+  "settings.workspaces.delete.warning":
+    "התיקייה והענף של סביבת העבודה יוסרו לצמיתות, כולל כל השינויים הלא ממוזגים המוצגים להלן.",
+  "settings.workspaces.deleteAll.warning":
+    "{{count}} סביבות העבודה שנבחרו ב-{{project}} יוסרו לצמיתות רק אם כולן נקיות, לא פעילות וללא הפעלות מקושרות.",
+  "settings.workspaces.delete.blocked.active": "לא ניתן למחוק את סביבת העבודה הפעילה.",
+  "settings.workspaces.delete.blocked.linked": "הפעלות מקושרות יישארו, אך ספריית העבודה שלהן תוסר לצמיתות.",
+  "settings.workspaces.default.title": "סביבת ברירת מחדל",
+  "settings.workspaces.default.description": "בחר היכן יתחילו הפעלות חדשות",
+  "settings.workspaces.default.lastUsed": "בשימוש אחרון לכל פרויקט",
+  "settings.workspaces.default.local": "ספרייה מקומית",
+  "settings.workspaces.default.new": "סביבת עבודה חדשה",
+  "workspace.move.title": "מעבר לסביבת עבודה",
+  "workspace.move.menu.title": "העברת ההפעלה אל",
+  "workspace.move.failed": "העברת ההפעלה נכשלה",
+  "workspace.lifecycle.creating": "יצירת סביבת עבודה",
+  "workspace.lifecycle.created": "סביבת העבודה נוצרה",
+  "workspace.lifecycle.starting": "מפעיל את ההפעלה",
+  "workspace.onboarding.title": "בידוד הפעלות עם סביבות עבודה",
+  "workspace.onboarding.description": "לכל הפעלה מוקצה עותק עבודה משלה, כך שאף אחת אינה מפריעה למאגר המקומי",
+  "workspace.lifecycle.moving": "מעביר לסביבת עבודה",
+  "workspace.lifecycle.set": "סביבת העבודה הוגדרה",
+  "session.summary.title": "פרטי ההפעלה",
+  "session.summary.noBranch": "אין ענף",
+  "session.summary.basedOn": "מבוסס על {{branch}}",
+  "workspace.type.local": "מקומי",
+  "workspace.type.sandbox": "ארגז חול",
+  "workspace.create.failed.title": "יצירת סביבת עבודה נכשלה",
+  "workspace.delete.failed.title": "מחיקת סביבת העבודה נכשלה",
+  "workspace.resetting.title": "איפוס סביבת עבודה",
+  "workspace.resetting.description": "זה עשוי לקחת דקה.",
+  "workspace.reset.failed.title": "איפוס סביבת העבודה נכשל",
+  "workspace.reset.success.title": "סביבת העבודה אופסה",
+  "workspace.reset.success.description": "סביבת העבודה תואמת כעת לענף ברירת המחדל.",
+  "workspace.error.stillPreparing": "סביבת העבודה עדיין בהכנות",
+  "workspace.status.checking": "מחפש שינויים שלא ממוזגים...",
+  "workspace.status.error": "לא ניתן לבדוק את מצב Git.",
+  "workspace.status.clean": "לא זוהו שינויים לא ממוזגים.",
+  "workspace.status.dirty": "שינויים שלא ממוזגים זוהו בסביבת עבודה זו.",
+  "workspace.delete.title": "מחק סביבת עבודה",
+  "workspace.delete.confirm": 'למחוק את סביבת העבודה "{{name}}"?',
+  "workspace.delete.button": "מחק סביבת עבודה",
+  "workspace.reset.title": "אפס את סביבת העבודה",
+  "workspace.reset.confirm": 'לאפס את סביבת העבודה "{{name}}"?',
+  "workspace.reset.button": "אפס את סביבת העבודה",
+  "workspace.reset.archived.none": "לא יישמרו לארכיון הפעלות פעילות.",
+  "workspace.reset.archived.one": "הפעלה אחת תועבר לארכיון.",
+  "workspace.reset.archived.many": "{{count}} הפעלות יועברו לארכיון.",
+  "workspace.reset.note": "פעולה זו תאפס את סביבת העבודה כך שתתאים לענף ברירת המחדל.",
+  "session.question.pending.two": "{{count}} שאלות ממתינות",
+  "session.followupDock.summary.two": "{{count}} הודעות בתור",
+  "session.revertDock.summary.two": "{{count}} הודעות בוטלו",
+  "settings.workspaces.count.two": "{{count}} סביבות עבודה",
+  "settings.workspaces.sessions.two": "{{count}} הפעלות ב-{{project}}",
+  "session.background.shell.two": "{{count}} פקודות מעטפת",
+  "session.background.subagent.two": "{{count}} סוכני משנה",
+}

+ 20 - 0
packages/desktop/src/renderer/i18n/he.ts

@@ -0,0 +1,20 @@
+export const dict = {
+  "desktop.menu.checkForUpdates": "בדוק אם יש עדכונים...",
+  "desktop.menu.reloadWebview": "טען מחדש את תצוגת האינטרנט",
+  "desktop.menu.restart": "הפעל מחדש",
+  "desktop.dialog.chooseFolder": "בחירת תיקייה",
+  "desktop.dialog.chooseFile": "בחירת קובץ",
+  "desktop.dialog.saveFile": "שמירת קובץ",
+  "desktop.updater.checkFailed.title": "בדיקת העדכונים נכשלה",
+  "desktop.updater.checkFailed.message": "לא ניתן לבדוק אם קיימים עדכונים",
+  "desktop.updater.none.title": "אין עדכון זמין",
+  "desktop.updater.none.message": "כבר מותקנת הגרסה העדכנית ביותר של OpenCode",
+  "desktop.updater.downloadFailed.title": "העדכון נכשל",
+  "desktop.updater.downloadFailed.message": "הורדת העדכון נכשלה",
+  "desktop.updater.downloaded.title": "העדכון הורד",
+  "desktop.updater.downloaded.prompt": "גרסה {{version}} של OpenCode הורדה. להתקין אותה ולהפעיל מחדש את היישום?",
+  "desktop.updater.installFailed.title": "העדכון נכשל",
+  "desktop.updater.installFailed.message": "התקנת העדכון נכשלה",
+  "desktop.error.dev.rootNotFound":
+    "רכיב השורש לא נמצא. האם שכחת להוסיף אותו ל-index.html, או שיש טעות בשם מאפיין ה-id?",
+}

+ 2 - 0
packages/desktop/src/renderer/i18n/index.ts

@@ -18,6 +18,7 @@ import { dict as desktopPl } from "./pl"
 import { dict as desktopRu } from "./ru"
 import { dict as desktopUk } from "./uk"
 import { dict as desktopAr } from "./ar"
+import { dict as desktopHe } from "./he"
 import { dict as desktopNo } from "./no"
 import { dict as desktopBr } from "./br"
 import { dict as desktopBs } from "./bs"
@@ -126,6 +127,7 @@ function build(locale: Locale): Dictionary {
   if (locale === "ru") return { ...base, ...i18n.flatten(desktopRu) }
   if (locale === "uk") return { ...base, ...i18n.flatten(desktopUk) }
   if (locale === "ar") return { ...base, ...i18n.flatten(desktopAr) }
+  if (locale === "he") return { ...base, ...i18n.flatten(desktopHe) }
   if (locale === "no") return { ...base, ...i18n.flatten(desktopNo) }
   if (locale === "br") return { ...base, ...i18n.flatten(desktopBr) }
   if (locale === "bs") return { ...base, ...i18n.flatten(desktopBs) }

+ 199 - 0
packages/ui/src/i18n/he.ts

@@ -0,0 +1,199 @@
+export const dict = {
+  "ui.sessionReview.title": "שינויים בהפעלה",
+  "ui.sessionReview.title.git": "שינויים ב-Git",
+  "ui.sessionReview.title.branch": "שינויים בענף",
+  "ui.sessionReview.title.lastTurn": "שינויים בתור האחרון",
+  "ui.sessionReview.diffStyle.unified": "מאוחד",
+  "ui.sessionReview.diffStyle.split": "מפוצל",
+  "ui.sessionReview.expandAll": "הרחב הכל",
+  "ui.sessionReview.collapseAll": "כווץ הכל",
+  "ui.sessionReview.change.added": "נוסף",
+  "ui.sessionReview.change.removed": "הוסר",
+  "ui.sessionReview.change.modified": "שונה",
+  "ui.sessionReview.image.loading": "טוען...",
+  "ui.sessionReview.image.placeholder": "תמונה",
+  "ui.sessionReview.largeDiff.title": "ה-diff גדול מדי להצגה",
+  "ui.sessionReview.largeDiff.meta": "המגבלה היא {{limit}} שורות שהשתנו. כעת יש {{current}} שורות שהשתנו.",
+  "ui.sessionReview.largeDiff.renderAnyway": "הצג בכל זאת",
+  "ui.sessionReviewV2.expandMode": "הרחבה או כיווץ של ה-diff",
+  "ui.sessionReviewV2.filterFiles": "סינון קבצים",
+  "ui.sessionReviewV2.toggleSidebar": "הצגה או הסתרה של עץ הקבצים",
+  "ui.sessionReviewV2.showAllLines": "הצג את כל השורות",
+  "ui.sessionReviewV2.hideNonDiffLines": "הסתרת שורות שאינן חלק מה-diff",
+  "ui.sessionReviewV2.unifiedDiff": "diff מאוחד",
+  "ui.sessionReviewV2.splitDiff": "diff מפוצל",
+  "ui.sessionReviewV2.previousFile": "הקובץ הקודם",
+  "ui.sessionReviewV2.nextFile": "הקובץ הבא",
+  "ui.sessionReviewV2.diffView": "תצוגת diff",
+  "ui.sessionReviewV2.empty.noGit.title": "אין שינויים במעקב",
+  "ui.sessionReviewV2.empty.noGit.description": "עקוב, סקור ובטל שינויים בפרויקט הזה",
+  "ui.sessionReviewV2.empty.noGit.action": "צור מאגר Git",
+  "ui.sessionReviewV2.empty.noGit.actionLoading": "יוצר מאגר Git...",
+  "ui.sessionReviewV2.empty.changes.title": "אין עדיין שינויים בקובץ",
+  "ui.sessionReviewV2.empty.changes.description": "שינויים בפרויקט יופיעו כאן",
+  "ui.sessionReview.openFile": "פתיחת קובץ",
+  "ui.sessionReview.selection.line": "שורה {{line}}",
+  "ui.sessionReview.selection.lines": "שורות {{start}}-{{end}}",
+  "ui.fileMedia.kind.image": "תמונה",
+  "ui.fileMedia.kind.audio": "אודיו",
+  "ui.fileMedia.state.removed": "הוסר קובץ {{kind}}.",
+  "ui.fileMedia.state.loading": "טוען {{kind}}...",
+  "ui.fileMedia.state.error": "לא ניתן לטעון {{kind}}.",
+  "ui.fileMedia.state.unavailable": "תצוגה מקדימה של {{kind}} אינה זמינה.",
+  "ui.fileMedia.binary.title": "קובץ בינארי",
+  "ui.fileMedia.binary.description.path": "{{path}} הוא קובץ בינארי.",
+  "ui.fileMedia.binary.description.default": "תוכן בינארי",
+  "ui.lineComment.label.prefix": "תגובה על ",
+  "ui.lineComment.label.suffix": "",
+  "ui.lineComment.editorLabel.prefix": "תגובה על ",
+  "ui.lineComment.editorLabel.suffix": "",
+  "ui.lineComment.placeholder": "הוסף תגובה",
+  "ui.lineComment.contextPlaceholder": "הוסף הקשר לשינוי זה",
+  "ui.lineComment.submit": "שלח תגובה",
+  "ui.lineComment.cancel": "בטל",
+  "ui.sessionTurn.steps.show": "הצג צעדים",
+  "ui.sessionTurn.steps.hide": "הסתר צעדים",
+  "ui.sessionTurn.summary.response": "תגובה",
+  "ui.sessionTurn.diff.showMore": "הצג שינויים נוספים ({{count}})",
+  "ui.sessionTurn.diffs.changed.one": "{{count}} קובץ השתנה",
+  "ui.sessionTurn.diffs.changed.other": "{{count}} קבצים השתנו",
+  "ui.sessionTurn.diffs.showAll": "הצג הכל",
+  "ui.sessionTurn.diffs.showLess": "הצג פחות",
+  "ui.sessionTurn.diffs.more": "+{{count}} קבצים נוספים",
+  "ui.sessionTurn.retry.retrying": "מנסה שוב",
+  "ui.sessionTurn.retry.inSeconds": "בעוד {{seconds}} שניות",
+  "ui.sessionTurn.retry.attempt": "ניסיון #{{attempt}}",
+  "ui.sessionTurn.retry.attemptLine": "{{line}} - ניסיון #{{attempt}}",
+  "ui.sessionTurn.retry.geminiHot": "העומס על Gemini גבוה מדי כרגע",
+  "ui.sessionTurn.error.freeUsageExceeded": "חריגה מהשימוש בחינם",
+  "ui.sessionTurn.error.addCredits": "הוסף קרדיטים",
+  "dialog.usageExceeded.freeTier.title": "הגעת למגבלה החינמית",
+  "dialog.usageExceeded.freeTier.description":
+    "הירשם ל-OpenCode Go לקבלת גישה אמינה למודלי הקוד הפתוח הטובים ביותר, החל מ-$5 לחודש.",
+  "dialog.usageExceeded.freeTier.actionLabel": "הירשם",
+  "dialog.usageExceeded.accountRateLimit.title": "הגעת למגבלת Go",
+  "dialog.usageExceeded.accountRateLimit.description":
+    "הגעת למגבלת השימוש. כדי להמשיך להשתמש במודל זה כעת, הפעל שימוש מהיתרה הזמינה שלך",
+  "dialog.usageExceeded.accountRateLimit.actionLabel": "פתח את ההגדרות",
+  "ui.sessionTurn.status.delegating": "מעביר את העבודה לסוכן אחר",
+  "ui.sessionTurn.status.planning": "תכנון השלבים הבאים",
+  "ui.sessionTurn.status.gatheringContext": "בודק את הפרויקט",
+  "ui.sessionTurn.status.gatheredContext": "בדיקת הפרויקט הסתיימה",
+  "ui.sessionTurn.status.searchingCodebase": "חיפוש בבסיס הקוד",
+  "ui.sessionTurn.status.searchingWeb": "חיפוש באינטרנט",
+  "ui.sessionTurn.status.makingEdits": "ביצוע עריכות",
+  "ui.sessionTurn.status.runningCommands": "הפעלת פקודות",
+  "ui.sessionTurn.status.thinking": "חושב",
+  "ui.sessionTurn.status.thinkingWithTopic": "חשיבה - {{topic}}",
+  "ui.sessionTurn.status.gatheringThoughts": "מגבש מחשבות",
+  "ui.sessionTurn.status.consideringNextSteps": "בוחן את הצעדים הבאים",
+  "ui.messagePart.diagnostic.error": "שגיאה",
+  "ui.messagePart.title.edit": "ערוך",
+  "ui.messagePart.title.write": "כתוב",
+  "ui.messagePart.option.typeOwnAnswer": "הקלד את התשובה שלך",
+  "ui.messagePart.review.title": "בדיקת התשובות",
+  "ui.messagePart.questions.dismissed": "השאלות נדחו",
+  "ui.messagePart.compaction": "ההפעלה נדחסה",
+  "ui.messagePart.context.read.one": "{{count}} קריאה",
+  "ui.messagePart.context.read.other": "{{count}} קריאות",
+  "ui.messagePart.context.search.one": "{{count}} חיפוש",
+  "ui.messagePart.context.search.other": "{{count}} חיפושים",
+  "ui.messagePart.context.list.one": "{{count}} הצגה",
+  "ui.messagePart.context.list.other": "{{count}} הצגות",
+  "ui.list.loading": "טוען",
+  "ui.list.empty": "אין תוצאות",
+  "ui.list.clearFilter": "נקה מסנן",
+  "ui.list.emptyWithFilter.prefix": "אין תוצאות עבור",
+  "ui.list.emptyWithFilter.suffix": "",
+  "ui.fileSearch.placeholder": "מצא",
+  "ui.fileSearch.previousMatch": "התוצאה הקודמת",
+  "ui.fileSearch.nextMatch": "התוצאה הבאה",
+  "ui.fileSearch.close": "סגור חיפוש",
+  "ui.messageNav.newMessage": "הודעה חדשה",
+  "ui.promptInput.noMatchingItems": "אין פריטים תואמים",
+  "ui.promptInput.commands": "פקודות",
+  "ui.promptInput.dropFiles": "שחרר קבצים לצירוף",
+  "ui.promptInput.removeAttachment": "הסר את הקובץ המצורף",
+  "ui.promptInput.label": "פרומפט",
+  "ui.promptInput.placeholder.shell": "הזן פקודת מעטפת...",
+  "ui.promptInput.placeholder.normal": "שאל כל דבר, {{slash}} עבור פקודות, {{at}} עבור הקשר...",
+  "ui.promptInput.add": "הוסף תמונות וקבצים",
+  "ui.promptInput.attachments": "תמונות וקבצים",
+  "ui.promptInput.context": "הקשר",
+  "ui.promptInput.shell": "פקודת מעטפת",
+  "ui.promptInput.chooseAgent": "בחר סוכן",
+  "ui.promptInput.chooseModel": "בחר מודל",
+  "ui.promptInput.chooseVariant": "בחר גרסה של מודל",
+  "ui.promptInput.send": "שלח",
+  "ui.promptInput.stop": "עצור",
+  "ui.tabs.close": "סגור כרטיסייה",
+  "ui.textField.copyToClipboard": "העתק ללוח",
+  "ui.textField.copyLink": "העתק קישור",
+  "ui.textField.copied": "הועתק",
+  "ui.imagePreview.alt": "תצוגה מקדימה של תמונה",
+  "ui.scrollView.ariaLabel": "תוכן שניתן לגלול",
+  "ui.tool.read": "קרא",
+  "ui.tool.loaded": "טעון",
+  "ui.tool.list": "רשימה",
+  "ui.tool.glob": "Glob",
+  "ui.tool.grep": "Grep",
+  "ui.tool.task": "משימה",
+  "ui.tool.webfetch": "Webfetch",
+  "ui.tool.websearch": "Web Search",
+  "ui.tool.websearch.provider": "{{provider}} Web Search",
+  "ui.tool.shell": "Shell",
+  "ui.tool.patch": "Patch",
+  "ui.tool.questions": "שאלות",
+  "ui.tool.questions.numbered": "שאלות {{number}}",
+  "ui.tool.agent": "סוכן {{type}}",
+  "ui.tool.agent.default": "סוכן",
+  "ui.tool.skill": "מיומנות",
+  "ui.basicTool.called": "בוצעה קריאה אל `{{tool}}`",
+  "ui.toolErrorCard.failed": "נכשל",
+  "ui.toolErrorCard.copyError": "שגיאת העתקה",
+  "ui.common.file.one": "קובץ",
+  "ui.common.file.other": "קבצים",
+  "ui.common.question.one": "שאלה",
+  "ui.common.question.other": "שאלות",
+  "ui.common.add": "הוסף",
+  "ui.common.clear": "נקה",
+  "ui.common.file": "קובץ",
+  "ui.common.back": "חזרה",
+  "ui.common.cancel": "בטל",
+  "ui.common.confirm": "אשר",
+  "ui.common.dismiss": "סגור",
+  "ui.common.close": "סגור",
+  "ui.common.next": "הבא",
+  "ui.common.submit": "שלח",
+  "ui.common.showMore": "הצג עוד",
+  "ui.permission.deny": "דחה",
+  "ui.permission.allowAlways": "אפשר תמיד",
+  "ui.permission.allowOnce": "אפשר פעם אחת",
+  "ui.message.expand": "הרחב את ההודעה",
+  "ui.message.collapse": "כווץ הודעה",
+  "ui.message.copy": "העתק",
+  "ui.message.copyMessage": "העתק הודעה",
+  "ui.message.forkMessage": "יצירת הפעלה חדשה מכאן",
+  "ui.message.revertMessage": "ביטול ההודעה",
+  "ui.message.copyResponse": "העתק את התגובה",
+  "ui.message.copied": "הועתק",
+  "ui.message.duration.seconds": "{{count}}s",
+  "ui.message.duration.minutesSeconds": "{{minutes}}m {{seconds}}s",
+  "ui.message.interrupted": "נקטע",
+  "ui.message.queued": "בתור",
+  "ui.message.attachment.alt": "קובץ מצורף",
+  "ui.patch.action.deleted": "נמחק",
+  "ui.patch.action.created": "נוצר",
+  "ui.patch.action.moved": "הועבר",
+  "ui.patch.action.patched": "עודכן",
+  "ui.question.subtitle.answered": "שאלות שנענו: {{count}}",
+  "ui.question.answer.none": "(אין תשובה)",
+  "ui.question.review.notAnswered": "(ללא תשובה)",
+  "ui.question.multiHint": "בחר את כל התשובות המתאימות",
+  "ui.question.singleHint": "בחר תשובה אחת",
+  "ui.question.custom.placeholder": "הקלד את תשובתך...",
+  "ui.sessionTurn.diffs.changed.two": "{{count}} קבצים השתנו",
+  "ui.messagePart.context.read.two": "{{count}} קריאות",
+  "ui.messagePart.context.search.two": "{{count}} חיפושים",
+  "ui.messagePart.context.list.two": "{{count}} הצגות",
+}

+ 6 - 0
script/translate-app.test.ts

@@ -75,10 +75,16 @@ describe("translate app", () => {
       "packages/ui/src/i18n/dv.ts",
       "packages/desktop/src/renderer/i18n/dv.ts",
     ])
+    expect(targetFiles("he")).toEqual([
+      "packages/app/src/i18n/he.ts",
+      "packages/ui/src/i18n/he.ts",
+      "packages/desktop/src/renderer/i18n/he.ts",
+    ])
   })
 
   test("maps product locale codes to their glossaries", () => {
     expect(glossaryFile("fr")).toBe(".opencode/glossary/fr.md")
+    expect(glossaryFile("he")).toBe(".opencode/glossary/he.md")
     expect(glossaryFile("zh")).toBe(".opencode/glossary/zh-cn.md")
     expect(glossaryFile("zht")).toBe(".opencode/glossary/zh-tw.md")
   })

+ 1 - 0
script/translate-app.ts

@@ -14,6 +14,7 @@ const locales = DESKTOP_NATIVE_LOCALES.filter((locale): locale is Locale => loca
 
 const languages = {
   ar: "Arabic",
+  he: "Hebrew",
   br: "Brazilian Portuguese",
   bs: "Bosnian",
   da: "Danish",