exports.id=398,exports.ids=[398],exports.modules={13353:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>j});var d=c(78157),e=c(31768),f=c(20188),g=c(32890),h=c(56362),i=c(75349);function j({children:a}){let b=(0,e.useMemo)(()=>(0,i.O4)("dark",!0),[]);return(0,d.jsx)(h.A,{options:{key:"d3ro-mui",enableCssLayer:!0},children:(0,d.jsxs)(f.default,{theme:b,children:[(0,d.jsx)(g.Ay,{}),a]})})}},15005:(a,b,c)=>{"use strict";c.d(b,{$:()=>g,c:()=>f});var d=c(24347);let e=null;function f(){if(e)return e;let a=process.env.NEXT_PUBLIC_SUPABASE_URL??"https://placeholder.supabase.co",b=process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY??"placeholder-anon-key";return e=(0,d.createBrowserClient)(a,b)}function g(){return!!(process.env.NEXT_PUBLIC_SUPABASE_URL&&process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY)}},26694:(a,b,c)=>{"use strict";c.d(b,{I18nProvider:()=>g});var d=c(78157),e=c(83380);let f={load:()=>null,save:a=>{}};function g({children:a}){return(0,d.jsx)(e.CY,{storage:f,children:a})}},27647:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(25459).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\workspace\\voice\\apps\\web\\src\\components\\providers\\theme-provider.tsx","ThemeProvider")},28355:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,58671,23)),Promise.resolve().then(c.t.bind(c,56542,23)),Promise.resolve().then(c.t.bind(c,88248,23)),Promise.resolve().then(c.t.bind(c,49743,23)),Promise.resolve().then(c.t.bind(c,96231,23)),Promise.resolve().then(c.t.bind(c,10959,23)),Promise.resolve().then(c.t.bind(c,72041,23)),Promise.resolve().then(c.t.bind(c,95094,23)),Promise.resolve().then(c.t.bind(c,67487,23))},42065:(a,b,c)=>{Promise.resolve().then(c.bind(c,82244)),Promise.resolve().then(c.bind(c,26694)),Promise.resolve().then(c.bind(c,13353))},42427:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,48365,23)),Promise.resolve().then(c.t.bind(c,64596,23)),Promise.resolve().then(c.t.bind(c,56186,23)),Promise.resolve().then(c.t.bind(c,67805,23)),Promise.resolve().then(c.t.bind(c,27561,23)),Promise.resolve().then(c.t.bind(c,47569,23)),Promise.resolve().then(c.t.bind(c,42747,23)),Promise.resolve().then(c.t.bind(c,56676,23)),Promise.resolve().then(c.bind(c,97225))},47570:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5939),e=c(27647),f=c(90724),g=c(80478);let h={title:"D3RO Voice",description:"로컬+클라우드 하이브리드 AI 음성 어시스턴트",icons:{icon:"/favicon.ico"}};function i({children:a}){return(0,d.jsx)("html",{lang:"ko",children:(0,d.jsx)("body",{children:(0,d.jsx)(e.ThemeProvider,{children:(0,d.jsx)(f.I18nProvider,{children:(0,d.jsx)(g.AuthProvider,{children:a})})})})})}},51793:(a,b,c)=>{Promise.resolve().then(c.bind(c,80478)),Promise.resolve().then(c.bind(c,90724)),Promise.resolve().then(c.bind(c,27647))},75349:(a,b,c)=>{"use strict";c.d(b,{HG:()=>j,O4:()=>n,fz:()=>k,kR:()=>i,nH:()=>h,nt:()=>g,sM:()=>f});var d=c(94063);let e={dark:{bg:{app:"#19191b",card:"#242427",cardHover:"#2a2a2d",elevated:"#2e2e32",input:"#1e1e21",sidebar:"#1e1f21",inset:"#1b1c1e",chassis:"#242528",crtBezel:"#1a1a1c",crtGlass:"#050605"},text:{primary:"#ffffff",secondary:"#8e8e93",label:"#7c7c82",disabled:"#4a4a4e",engraving:"#1a1a1c",inactive:"#77797c",dimLabel:"#5c2615",muted:"#3a3b3f",hover:"#aaaaaa"},border:{subtle:"rgba(255,255,255,0.04)",default:"rgba(255,255,255,0.08)",strong:"rgba(255,255,255,0.12)"},shadow:{card:"0 8px 30px rgba(0,0,0,0.3)",buttonBase:"0 2px 0 rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.06)",chassis:"0 60px 100px -20px rgba(0,0,0,0.8), 0 12px 0 #111111, 0 13px 4px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.15), inset 0 -1px 2px rgba(0,0,0,0.4)",inset:"inset 0 2px 6px rgba(0,0,0,0.6), 0 1px 1px rgba(255,255,255,0.05)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.9), inset 0 0 0 1px #000, 0 1px 1px rgba(255,255,255,0.1)",buttonRaised:"0 3px 6px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.1), inset 0 -1px 2px rgba(0,0,0,0.2)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.8), inset 0 0 0 1px #000",screenGlow:"inset 0 0 20px rgba(0,0,0,0.8)",tooltip:"0 8px 24px rgba(0,0,0,0.4)"},accent:{main:"#f25b29",dim:"rgba(242,91,41,0.15)",glow:"rgba(242,91,41,0.6)",light:"#ff7a4d",dark:"#c44a22",crtPhosphor:"#f25b29",crtPhosphorDim:"#c44a22"}},light:{bg:{app:"#f5f5f7",card:"#ffffff",cardHover:"#f7f7f9",elevated:"#f0f0f2",input:"#ffffff",sidebar:"#eeeef0",inset:"#e8e8ea",chassis:"#e2e2e5",crtBezel:"#d5d5d8",crtGlass:"#f0f0f2"},text:{primary:"#1a1a1c",secondary:"#6e6e73",label:"#8e8e93",disabled:"#c7c7cc",engraving:"#d0d0d3",inactive:"#8e8e93",dimLabel:"#b07040",muted:"#b0b0b4",hover:"#555555"},border:{subtle:"rgba(0,0,0,0.06)",default:"rgba(0,0,0,0.10)",strong:"rgba(0,0,0,0.16)"},shadow:{card:"0 4px 20px rgba(0,0,0,0.06)",buttonBase:"0 2px 0 rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.8)",chassis:"0 40px 80px -20px rgba(0,0,0,0.08), 0 12px 0 #d5d5d8, 0 13px 4px rgba(0,0,0,0.06), inset 0 1px 1px rgba(255,255,255,0.8), inset 0 -1px 2px rgba(0,0,0,0.04)",inset:"inset 0 2px 6px rgba(0,0,0,0.08), 0 1px 1px rgba(255,255,255,0.6)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.12), inset 0 0 0 1px rgba(0,0,0,0.06), 0 1px 1px rgba(255,255,255,0.8)",buttonRaised:"0 3px 6px rgba(0,0,0,0.08), inset 0 1px 1px rgba(255,255,255,0.8), inset 0 -1px 2px rgba(0,0,0,0.04)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.12), inset 0 0 0 1px rgba(0,0,0,0.06)",screenGlow:"inset 0 0 20px rgba(0,0,0,0.06)",tooltip:"0 8px 24px rgba(0,0,0,0.08)"},accent:{main:"#f25b29",dim:"rgba(242,91,41,0.15)",glow:"rgba(242,91,41,0.6)",light:"#ff7a4d",dark:"#c44a22",crtPhosphor:"#f25b29",crtPhosphorDim:"#c44a22"}},nord:{bg:{app:"#2e3440",card:"#3b4252",cardHover:"#434c5e",elevated:"#3b4252",input:"#3b4252",sidebar:"#2e3440",inset:"#2e3440",chassis:"#3b4252",crtBezel:"#2e3440",crtGlass:"#242831"},text:{primary:"#eceff4",secondary:"#d8dee9",label:"#adb5c7",disabled:"#4c566a",engraving:"#2e3440",inactive:"#7b88a1",dimLabel:"#5e81ac",muted:"#434c5e",hover:"#e5e9f0"},border:{subtle:"rgba(216,222,233,0.06)",default:"rgba(216,222,233,0.10)",strong:"rgba(216,222,233,0.16)"},shadow:{card:"0 8px 30px rgba(0,0,0,0.35)",buttonBase:"0 2px 0 rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.06)",chassis:"0 60px 100px -20px rgba(0,0,0,0.8), 0 12px 0 #242831, 0 13px 4px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.1), inset 0 -1px 2px rgba(0,0,0,0.4)",inset:"inset 0 2px 6px rgba(0,0,0,0.5), 0 1px 1px rgba(255,255,255,0.04)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.8), inset 0 0 0 1px #242831, 0 1px 1px rgba(255,255,255,0.08)",buttonRaised:"0 3px 6px rgba(0,0,0,0.35), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 -1px 2px rgba(0,0,0,0.2)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.7), inset 0 0 0 1px #242831",screenGlow:"inset 0 0 20px rgba(0,0,0,0.6)",tooltip:"0 8px 24px rgba(0,0,0,0.4)"},accent:{main:"#88c0d0",dim:"rgba(136,192,208,0.15)",glow:"rgba(136,192,208,0.6)",light:"#a3d0de",dark:"#6aacbe",crtPhosphor:"#88c0d0",crtPhosphorDim:"#5e9daf"}},solarized:{bg:{app:"#002b36",card:"#073642",cardHover:"#0d4250",elevated:"#073642",input:"#073642",sidebar:"#002b36",inset:"#001f28",chassis:"#073642",crtBezel:"#002b36",crtGlass:"#001f28"},text:{primary:"#eee8d5",secondary:"#93a1a1",label:"#839496",disabled:"#586e75",engraving:"#002b36",inactive:"#657b83",dimLabel:"#7a6c2e",muted:"#073642",hover:"#b2c0bf"},border:{subtle:"rgba(131,148,150,0.08)",default:"rgba(131,148,150,0.13)",strong:"rgba(131,148,150,0.20)"},shadow:{card:"0 8px 30px rgba(0,0,0,0.4)",buttonBase:"0 2px 0 rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.05)",chassis:"0 60px 100px -20px rgba(0,0,0,0.8), 0 12px 0 #001f28, 0 13px 4px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 -1px 2px rgba(0,0,0,0.4)",inset:"inset 0 2px 6px rgba(0,0,0,0.6), 0 1px 1px rgba(255,255,255,0.04)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.9), inset 0 0 0 1px #001f28, 0 1px 1px rgba(255,255,255,0.06)",buttonRaised:"0 3px 6px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.06), inset 0 -1px 2px rgba(0,0,0,0.2)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.8), inset 0 0 0 1px #001f28",screenGlow:"inset 0 0 20px rgba(0,0,0,0.7)",tooltip:"0 8px 24px rgba(0,0,0,0.4)"},accent:{main:"#b58900",dim:"rgba(181,137,0,0.15)",glow:"rgba(181,137,0,0.6)",light:"#d4a017",dark:"#8a6800",crtPhosphor:"#b58900",crtPhosphorDim:"#8a6800"}},catppuccin:{bg:{app:"#1e1e2e",card:"#313244",cardHover:"#3a3a54",elevated:"#313244",input:"#181825",sidebar:"#181825",inset:"#11111b",chassis:"#313244",crtBezel:"#1e1e2e",crtGlass:"#11111b"},text:{primary:"#cdd6f4",secondary:"#bac2de",label:"#a6adc8",disabled:"#585b70",engraving:"#11111b",inactive:"#7f849c",dimLabel:"#585b70",muted:"#313244",hover:"#e6e9f8"},border:{subtle:"rgba(205,214,244,0.04)",default:"rgba(205,214,244,0.08)",strong:"rgba(205,214,244,0.14)"},shadow:{card:"0 8px 30px rgba(0,0,0,0.4)",buttonBase:"0 2px 0 rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.05)",chassis:"0 60px 100px -20px rgba(0,0,0,0.8), 0 12px 0 #11111b, 0 13px 4px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 -1px 2px rgba(0,0,0,0.4)",inset:"inset 0 2px 6px rgba(0,0,0,0.6), 0 1px 1px rgba(255,255,255,0.04)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.9), inset 0 0 0 1px #11111b, 0 1px 1px rgba(255,255,255,0.06)",buttonRaised:"0 3px 6px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.06), inset 0 -1px 2px rgba(0,0,0,0.2)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.8), inset 0 0 0 1px #11111b",screenGlow:"inset 0 0 20px rgba(0,0,0,0.7)",tooltip:"0 8px 24px rgba(0,0,0,0.4)"},accent:{main:"#cba6f7",dim:"rgba(203,166,247,0.15)",glow:"rgba(203,166,247,0.6)",light:"#dfc0ff",dark:"#a67fd4",crtPhosphor:"#cba6f7",crtPhosphorDim:"#a67fd4"}},dracula:{bg:{app:"#282a36",card:"#44475a",cardHover:"#4f5266",elevated:"#383a4a",input:"#383a4a",sidebar:"#21222c",inset:"#21222c",chassis:"#44475a",crtBezel:"#282a36",crtGlass:"#1e2029"},text:{primary:"#f8f8f2",secondary:"#a9b0d0",label:"#8891b5",disabled:"#6272a4",engraving:"#21222c",inactive:"#6272a4",dimLabel:"#6272a4",muted:"#44475a",hover:"#ffffff"},border:{subtle:"rgba(248,248,242,0.04)",default:"rgba(248,248,242,0.08)",strong:"rgba(248,248,242,0.14)"},shadow:{card:"0 8px 30px rgba(0,0,0,0.4)",buttonBase:"0 2px 0 rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06)",chassis:"0 60px 100px -20px rgba(0,0,0,0.8), 0 12px 0 #1e2029, 0 13px 4px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.1), inset 0 -1px 2px rgba(0,0,0,0.4)",inset:"inset 0 2px 6px rgba(0,0,0,0.6), 0 1px 1px rgba(255,255,255,0.04)",insetDeep:"inset 0 4px 12px rgba(0,0,0,0.9), inset 0 0 0 1px #1e2029, 0 1px 1px rgba(255,255,255,0.08)",buttonRaised:"0 3px 6px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 -1px 2px rgba(0,0,0,0.2)",buttonPressed:"inset 0 2px 6px rgba(0,0,0,0.8), inset 0 0 0 1px #1e2029",screenGlow:"inset 0 0 20px rgba(0,0,0,0.7)",tooltip:"0 8px 24px rgba(0,0,0,0.4)"},accent:{main:"#bd93f9",dim:"rgba(189,147,249,0.15)",glow:"rgba(189,147,249,0.6)",light:"#d4b8ff",dark:"#9a70e0",crtPhosphor:"#bd93f9",crtPhosphorDim:"#9a70e0"}}},f={bg:{app:"var(--d3-bg-app)",card:"var(--d3-bg-card)",cardHover:"var(--d3-bg-cardHover)",elevated:"var(--d3-bg-elevated)",input:"var(--d3-bg-input)",sidebar:"var(--d3-bg-sidebar)",inset:"var(--d3-bg-inset)",chassis:"var(--d3-bg-chassis)",crtBezel:"var(--d3-bg-crtBezel)",crtGlass:"var(--d3-bg-crtGlass)"},accent:{amber:"var(--d3-accent-main)",amberDim:"var(--d3-accent-dim)",amberGlow:"var(--d3-accent-glow)"},tag:{purple:"#b854f5",purpleBg:"rgba(184, 84, 245, 0.12)",orange:"#f59e0b",orangeBg:"rgba(245, 158, 11, 0.12)",red:"#ef4444",redBg:"rgba(239, 68, 68, 0.12)",green:"#22c55e",greenBg:"rgba(34, 197, 94, 0.12)",blue:"#3b82f6",blueBg:"rgba(59, 130, 246, 0.12)",greenGlow:"rgba(34, 197, 94, 0.6)",redGlow:"rgba(239, 68, 68, 0.6)",orangeGlow:"rgba(245, 158, 11, 0.6)"},text:{primary:"var(--d3-text-primary)",secondary:"var(--d3-text-secondary)",label:"var(--d3-text-label)",disabled:"var(--d3-text-disabled)",engraving:"var(--d3-text-engraving)",inactive:"var(--d3-text-inactive)",dimLabel:"var(--d3-text-dimLabel)",muted:"var(--d3-text-muted)",hover:"var(--d3-text-hover)"},border:{subtle:"var(--d3-border-subtle)",default:"var(--d3-border-default)",strong:"var(--d3-border-strong)"},crt:{phosphor:"var(--d3-accent-crtPhosphor)",phosphorDim:"var(--d3-accent-crtPhosphorDim)",scanline:"rgba(0, 0, 0, 0.15)",bg:"var(--d3-bg-chassis)"},led:{off:"#111111"}},g='ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace',h={hero:{size:"42px",weight:300,spacing:"-2px",line:1},title:{size:"28px",weight:300,spacing:"-1px",line:1.2},value:{size:"20px",weight:400,spacing:"0.02em",line:1},heading:{size:"16px",weight:600,spacing:"0.02em",line:1.4},body:{size:"14px",weight:400,spacing:"0.01em",line:1.5},compact:{size:"13px",weight:400,spacing:"0.01em",line:1.5},small:{size:"12px",weight:600,spacing:"0.03em",line:1.4},meta:{size:"11px",weight:600,spacing:"0.05em",line:1.3},label:{size:"10px",weight:700,spacing:"2px",line:1.2},engrave:{size:"9px",weight:700,spacing:"1.5px",line:1},micro:{size:"8px",weight:700,spacing:"1.5px",line:1},nano:{size:"7px",weight:700,spacing:"0.5px",line:1}};function i(a){let b=h[a];return{fontSize:b.size,fontWeight:b.weight,letterSpacing:b.spacing,lineHeight:b.line}}let j={chassis:"var(--d3-shadow-chassis)",card:"var(--d3-shadow-card)",inset:"var(--d3-shadow-inset)",insetDeep:"var(--d3-shadow-insetDeep)",buttonRaised:"var(--d3-shadow-buttonRaised)",buttonPressed:"var(--d3-shadow-buttonPressed)",buttonActive:"var(--d3-shadow-buttonPressed)",dialog:"var(--d3-shadow-card)",tooltip:"var(--d3-shadow-tooltip)",screenGlow:"var(--d3-shadow-screenGlow)"},k={outer:"24px",card:"22px",inner:"12px",button:"8px",small:"6px",xs:"4px",pill:"999px"};function l(a){let b="light"===a?"light":"dark",c=e[a],g=function(a){let b=e[a];return{"--d3-bg-app":b.bg.app,"--d3-bg-card":b.bg.card,"--d3-bg-cardHover":b.bg.cardHover,"--d3-bg-elevated":b.bg.elevated,"--d3-bg-input":b.bg.input,"--d3-bg-sidebar":b.bg.sidebar,"--d3-bg-inset":b.bg.inset,"--d3-bg-chassis":b.bg.chassis,"--d3-bg-crtBezel":b.bg.crtBezel,"--d3-bg-crtGlass":b.bg.crtGlass,"--d3-text-primary":b.text.primary,"--d3-text-secondary":b.text.secondary,"--d3-text-label":b.text.label,"--d3-text-disabled":b.text.disabled,"--d3-text-engraving":b.text.engraving,"--d3-text-inactive":b.text.inactive,"--d3-text-dimLabel":b.text.dimLabel,"--d3-text-muted":b.text.muted,"--d3-text-hover":b.text.hover,"--d3-border-subtle":b.border.subtle,"--d3-border-default":b.border.default,"--d3-border-strong":b.border.strong,"--d3-shadow-card":b.shadow.card,"--d3-shadow-buttonBase":b.shadow.buttonBase,"--d3-shadow-chassis":b.shadow.chassis,"--d3-shadow-inset":b.shadow.inset,"--d3-shadow-insetDeep":b.shadow.insetDeep,"--d3-shadow-buttonRaised":b.shadow.buttonRaised,"--d3-shadow-buttonPressed":b.shadow.buttonPressed,"--d3-shadow-screenGlow":b.shadow.screenGlow,"--d3-shadow-tooltip":b.shadow.tooltip,"--d3-accent-main":b.accent.main,"--d3-accent-dim":b.accent.dim,"--d3-accent-glow":b.accent.glow,"--d3-accent-light":b.accent.light,"--d3-accent-dark":b.accent.dark,"--d3-accent-crtPhosphor":b.accent.crtPhosphor,"--d3-accent-crtPhosphorDim":b.accent.crtPhosphorDim}}(a),h=c.accent.main,i=c.accent.dim,j=c.accent.light,k=c.accent.dark;return(0,d.A)({palette:{mode:b,primary:{main:h,light:j,dark:k,contrastText:"#fff"},secondary:{main:f.tag.purple,light:"#d084ff",dark:"#8a3cc4"},error:{main:f.tag.red},warning:{main:f.tag.orange},success:{main:f.tag.green},background:{default:c.bg.app,paper:c.bg.card},text:{primary:c.text.primary,secondary:c.text.secondary,disabled:c.text.disabled},divider:c.border.default},typography:{fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif',h4:{fontWeight:700,fontSize:"22px",lineHeight:1.3},h5:{fontWeight:700,fontSize:"18px",lineHeight:1.4},h6:{fontWeight:600,fontSize:"14px",lineHeight:1.5},subtitle1:{fontWeight:500,fontSize:"18px",lineHeight:1.4},body1:{fontSize:"14px",lineHeight:1.5},body2:{fontSize:"12px",lineHeight:1.4},button:{textTransform:"none",fontWeight:600,fontSize:"14px"},caption:{fontSize:"11px",fontWeight:600,letterSpacing:"0.1em",textTransform:"uppercase",color:c.text.label},overline:{fontSize:"11px",fontWeight:600,letterSpacing:"0.1em",textTransform:"uppercase",lineHeight:1.2}},shape:{borderRadius:22},components:{MuiCssBaseline:{styleOverrides:{":root":g,body:{backgroundColor:c.bg.app,color:c.text.primary}}},MuiButton:{defaultProps:{disableElevation:!0},styleOverrides:{root:{textTransform:"none",fontWeight:600,borderRadius:10,padding:"10px 20px",transition:"transform 0.05s linear, box-shadow 0.05s linear",boxShadow:c.shadow.buttonBase,"&:active":{transform:"translateY(2px)",boxShadow:"var(--d3-shadow-buttonPressed)"}},containedPrimary:{color:"#fff","&:hover":{backgroundColor:k}},outlined:{borderColor:c.border.strong,color:c.text.primary,"&:hover":{borderColor:h,color:h}},containedSecondary:{backgroundColor:c.bg.elevated,color:c.text.primary,"&:hover":{backgroundColor:"dark"===b?"#353539":"#e5e5e7"}}}},MuiCard:{defaultProps:{elevation:0},styleOverrides:{root:{backgroundColor:c.bg.card,borderRadius:22,borderTop:`1px solid ${c.border.subtle}`,boxShadow:c.shadow.card,transition:"background-color 0.2s ease","&:hover":{backgroundColor:c.bg.cardHover}}}},MuiChip:{styleOverrides:{root:{borderRadius:999,fontWeight:700,fontSize:"11px",letterSpacing:"0.1em",textTransform:"uppercase",height:24},colorPrimary:{backgroundColor:i,color:h},colorSecondary:{backgroundColor:f.tag.purpleBg,color:f.tag.purple},colorSuccess:{backgroundColor:f.tag.greenBg,color:f.tag.green},colorError:{backgroundColor:f.tag.redBg,color:f.tag.red},colorWarning:{backgroundColor:f.tag.orangeBg,color:f.tag.orange}}},MuiDrawer:{styleOverrides:{paper:{width:240,backgroundColor:c.bg.app,borderRight:`1px solid ${c.border.subtle}`}}},MuiListItemButton:{styleOverrides:{root:{borderRadius:10,marginLeft:8,marginRight:8,"&.Mui-selected":{backgroundColor:i,color:h,fontWeight:600,"&:hover":{backgroundColor:i}}}}},MuiDialog:{styleOverrides:{paper:{backgroundColor:c.bg.card,borderRadius:22,border:`1px solid ${c.border.subtle}`,boxShadow:"var(--d3-shadow-card)"}}},MuiTextField:{defaultProps:{size:"small",variant:"outlined"},styleOverrides:{root:{"& .MuiOutlinedInput-root":{backgroundColor:c.bg.input,borderRadius:10,color:c.text.primary,"& fieldset":{borderColor:c.border.default},"&:hover fieldset":{borderColor:c.border.strong},"&.Mui-focused fieldset":{borderColor:h}}}}},MuiSelect:{styleOverrides:{select:{color:c.text.primary},icon:{color:c.text.secondary}}},MuiInputLabel:{styleOverrides:{root:{color:c.text.secondary,"&.Mui-focused":{color:h}}}},MuiFormControlLabel:{styleOverrides:{label:{color:c.text.primary,fontSize:"14px"}}},MuiSwitch:{styleOverrides:{switchBase:{"&.Mui-checked":{color:h},"&.Mui-checked + .MuiSwitch-track":{backgroundColor:h}},track:{backgroundColor:c.text.disabled}}},MuiMenuItem:{styleOverrides:{root:{color:c.text.primary,"&.Mui-selected":{backgroundColor:i}}}},MuiTooltip:{defaultProps:{arrow:!0},styleOverrides:{tooltip:{backgroundColor:c.bg.elevated,color:c.text.primary,fontSize:"12px",borderRadius:8,border:`1px solid ${c.border.subtle}`}}},MuiTabs:{styleOverrides:{indicator:{backgroundColor:h}}},MuiTab:{styleOverrides:{root:{textTransform:"none",fontWeight:500,fontSize:"14px","&.Mui-selected":{color:h,fontWeight:600}}}}}})}let m={dark:l("dark"),light:l("light"),nord:l("nord"),solarized:l("solarized"),catppuccin:l("catppuccin"),dracula:l("dracula")};function n(a,b=!0){return"auto"===a?b?m.dark:m.light:m[a]??m.dark}m.dark,m.light},80478:(a,b,c)=>{"use strict";c.d(b,{AuthProvider:()=>e});var d=c(25459);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\workspace\\voice\\apps\\web\\src\\components\\providers\\auth-provider.tsx","AuthProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useAuth() from the server but useAuth is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\workspace\\voice\\apps\\web\\src\\components\\providers\\auth-provider.tsx","useAuth")},82244:(a,b,c)=>{"use strict";c.d(b,{A:()=>h,AuthProvider:()=>g});var d=c(78157),e=c(31768);c(15005);let f=(0,e.createContext)({session:null,user:null,loading:!0});function g({children:a}){let[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0);return(0,d.jsx)(f.Provider,{value:{session:b,user:b?.user??null,loading:g},children:a})}function h(){return(0,e.useContext)(f)}},83380:(a,b,c)=>{"use strict";c.d(b,{CY:()=>t,s9:()=>u});var d=c(78157),e=c(31768);let f=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"로컬 AI 음성 어시스턴트","nav.dashboard":"대시보드","nav.history":"히스토리","nav.dictionary":"사전","nav.commands":"명령어","nav.settings":"설정","nav.meetings":"회의","nav.record":"녹음","nav.logout":"로그아웃","login.subtitle":"AI 음성 어시스턴트","login.google":"Google로 계속하기","login.github":"GitHub로 계속하기","login.terms":"계속 진행하면 이용약관 및 개인정보 처리방침에 동의합니다.","dashboard.sessionOverview":"세션 개요","dashboard.systemStatus":"시스템 상태","dashboard.sessionsToday":"오늘 세션","dashboard.pressToRecord":"{{key}}를 눌러 녹음 시작","dashboard.hotkeyNotSet":"핫키 미설정","dashboard.words":"단어","dashboard.total":"전체","dashboard.streak":"연속","dashboard.days":"일","dashboard.recording":"녹음","dashboard.sessions":"세션","dashboard.today":"오늘","dashboard.recentTranscriptions":"최근 전사","dashboard.noHistory":"히스토리 없음 — 핫키를 눌러 녹음을 시작하세요","dashboard.copy":"복사","dashboard.entries":"{{count}}건","dashboard.stat":"통계","dashboard.sys":"시스템","history.title":"전사 기록","history.search":"검색...","history.entries":"{{count}}건","history.loading":"로딩...","history.noResults":"검색 결과 없음","history.noHistory":"히스토리 없음 — 녹음을 시작하세요","history.count":"{{count}}건","dictionary.title":"커스텀 사전","dictionary.words":"{{count}}개","dictionary.add":"추가","dictionary.search":"검색...","dictionary.loading":"로딩...","dictionary.noResults":"검색 결과 없음","dictionary.noWords":"단어 없음 — STT 정확도 향상을 위해 커스텀 단어를 추가하세요","dictionary.used":"{{count}}회 사용","dictionary.editTitle":"단어 편집","dictionary.addTitle":"단어 추가","dictionary.word":"단어","dictionary.pronunciation":"발음 (선택)","commands.title":"LLM 명령어","commands.count":"{{count}}개","commands.add":"추가","commands.activeCommand":"활성 명령어","commands.none":"없음","commands.loading":"로딩...","commands.noCommands":"명령어 없음 — 추가를 클릭하여 생성","commands.editTitle":"명령어 편집","commands.addTitle":"명령어 추가","commands.name":"이름","commands.description":"설명","commands.promptTemplate":"프롬프트 템플릿","commands.promptHelp":"{{text}}는 전사된 텍스트로 치환됩니다","commands.defaultPrompt":"{{text}}를 다듬어주세요.","settings.title":"설정","settings.tabs.general":"일반","settings.tabs.audio":"오디오","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"정보","settings.shortcuts":"단축키","settings.dictation":"받아쓰기","settings.dictation.desc":"누른 상태에서 말하기. 키를 놓으면 전사가 시작됩니다.","settings.agent":"Agent 모드","settings.agent.descWithKey":"{{key}}를 두 번 클릭하면 Agent 모드에 진입합니다.","settings.agent.descNoKey":"받아쓰기 핫키를 먼저 설정하세요.","settings.oneTouch":"원터치 모드","settings.oneTouch.desc":"눌러서 시작, 다시 눌러서 중지. 별도 단축키가 필요합니다.","settings.caption":"실시간 자막","settings.caption.desc":"핫키로 자막 모드를 토글합니다. 마이크 입력을 실시간 전사합니다.","settings.captionAudio":"자막 오디오 소스","settings.captionSource":"오디오 소스","settings.captionSource.mic":"마이크만","settings.captionSource.system":"시스템 오디오만 (데스크톱 소리)","settings.captionSource.both":"마이크 + 시스템 오디오","settings.key":"키","settings.notSet":"미설정","settings.enabled":"활성화됨","settings.disabled":"비활성화","settings.interface":"인터페이스","settings.theme":"테마","settings.theme.system":"시스템","settings.theme.light":"라이트","settings.theme.dark":"다크","settings.language":"언어","settings.appBehavior":"앱 동작","settings.closeToTray":"트레이로 최소화","settings.autoLaunch":"시스템 시작 시 자동 실행","settings.autoInsert":"전사 후 자동 텍스트 삽입","settings.soundEffects":"효과음","settings.microphone":"마이크","settings.inputDevice":"입력 장치","settings.deviceDefault":"(기본)","settings.textInsert":"텍스트 삽입","settings.insertMethod":"삽입 방식","settings.insertClipboard":"클립보드 (Ctrl+V)","settings.insertKeyboard":"키보드 타이핑","settings.whisperModel":"Whisper 모델","settings.model.tiny":"tiny (39 MB, 가장 빠름)","settings.model.base":"base (74 MB, 균형)","settings.model.small":"small (244 MB, 양호)","settings.model.medium":"medium (769 MB, 우수)","settings.model.large":"large-v3 (1.5 GB, 최고)","settings.sttLanguage":"인식 언어","settings.sttLang.auto":"자동 감지","settings.ollamaServer":"Ollama 서버","settings.ollamaUrl":"Ollama 서버 URL","settings.ollamaHint":"Ollama가 실행 중이면 자동으로 연결됩니다. 모델은 Ollama에서 직접 pull하세요 (예: ollama pull qwen3:4b).","settings.llmModel":"LLM 모델","settings.postProcess":"음성 후처리","settings.defaultAction":"기본 후처리 명령어","settings.action.none":"없음 (원본 텍스트 그대로)","settings.action.refine":"다듬기 (문법+자연스러움)","settings.action.translate":"번역","settings.action.summarize":"요약","settings.action.grammar":"문법 교정","settings.action.custom":"커스텀 프롬프트","settings.actionHint":"핫키로 녹음 후 전사된 텍스트에 선택한 LLM 후처리가 적용됩니다. Ollama가 연결되어 있을 때만 동작합니다.","settings.about.version":"버전","settings.about.techStack":"기술 스택","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"음성 엔진","settings.about.voiceEngineValue":"STT: faster-whisper (로컬) / LLM: Ollama (로컬)","settings.about.description":"Speakly 리버스엔지니어링 노하우 기반 로컬 AI 음성 어시스턴트. 클라우드 의존성 없이 완전 로컬로 동작합니다.","settings.about.restartOnboarding":"초기 설정 안내 다시 보기","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama가 실행되지 않고 있어요","status.nudge.desc":"LLM 후처리(번역, 요약 등)를 사용하려면 Ollama가 필요합니다.","status.nudge.guide":"설치 안내 보기 →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"타이핑 없이, 음성으로. 로컬 AI 음성 어시스턴트입니다.","onboarding.welcome.start":"시작하기","onboarding.mic.title":"마이크 설정","onboarding.mic.desc":"사용할 마이크를 선택하세요. 나중에 설정에서 변경할 수 있습니다.","onboarding.hotkey.title":"단축키 설정","onboarding.hotkey.desc":"받아쓰기 단축키를 설정하세요. 키를 누르고 있는 동안 녹음됩니다.","onboarding.hotkey.notSet":"단축키가 설정되지 않았습니다","onboarding.hotkey.change":"단축키 변경","onboarding.hotkey.set":"단축키 설정","onboarding.ollama.title":"Ollama 설치 (선택)","onboarding.ollama.desc":"번역, 요약 등 LLM 후처리를 사용하려면 Ollama가 필요합니다. 음성 받아쓰기 자체는 Ollama 없이도 동작합니다.","onboarding.ollama.download":"Ollama 다운로드","onboarding.ollama.modelHint":"설치 후 터미널에서 모델을 다운로드하세요","onboarding.done.title":"설정 완료!","onboarding.done.descWithKey":"{{key}} 키를 누르고 말하면 음성이 텍스트로 변환됩니다.","onboarding.done.descNoKey":"설정에서 단축키를 지정하면 음성 받아쓰기를 시작할 수 있습니다.","onboarding.done.start":"시작하기","onboarding.back":"뒤로","onboarding.next":"다음","hotkey.title":"단축키 설정","hotkey.dictationTitle":"받아쓰기 단축키 설정","hotkey.oneTouchTitle":"원터치 모드 단축키 설정","hotkey.captionTitle":"실시간 자막 단축키 설정","hotkey.prompt":"키 조합을 눌러주세요...","hotkey.ready":"✓ {{keys}} — 저장을 눌러주세요","hotkey.noKey":"키를 입력해주세요","hotkey.reserved":"{{keys}}은 시스템 예약 단축키입니다","hotkey.current":"현재: {{keys}}","hotkey.hint":"조합키(예: Ctrl+Shift+Q) 또는 단일키(예: F5)를 입력하세요","hotkey.reset":"다시 입력","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"STEP 1 — Ollama 설치","ollama.step1.desc":"Ollama는 로컬에서 LLM을 실행하는 무료 도구입니다.","ollama.step2.title":"STEP 2 — 모델 다운로드","ollama.step2.desc":"터미널에서 원하는 모델을 pull하세요. 한국어에 추천:","ollama.step2.alt":"또는 더 큰 모델: ollama pull qwen3:8b (더 정확, 더 느림)","ollama.step3.title":"STEP 3 — 자동 연결","ollama.step3.desc":"Ollama가 실행되면 D3RO-VOICE가 자동으로 감지합니다. 하단 상태 바의 LED가 빨간색에서 초록색으로 바뀌면 준비 완료!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"취소","common.save":"저장","common.delete":"삭제","common.add":"추가","common.edit":"편집","common.close":"닫기","common.confirm":"확인","common.loading":"로딩...","common.copy":"복사","common.test":"테스트","common.stop":"중지","memo.tags":"태그","memo.addTag":"태그 추가","memo.removeTag":"태그 제거","memo.tagPlaceholder":"태그 입력 후 Enter","memo.noTags":"태그 없음","memo.export":"마크다운 내보내기","memo.exportSuccess":"내보내기 완료","memo.filterByTag":"태그로 필터","memo.allTags":"전체 태그","memo.clearFilter":"필터 해제","voiceCommand.title":"음성 명령어","voiceCommand.enabled":"음성 키워드 인식","voiceCommand.enabledDesc":"전사 시작 시 키워드를 감지하여 명령어를 자동 선택합니다.","voiceCommand.keywords":"키워드","voiceCommand.keywordPlaceholder":"키워드 입력 후 Enter","voiceCommand.noKeywords":"키워드 없음","voiceCommand.matchMode":"매칭 모드","voiceCommand.matchMode.prefix":"앞부분 일치","voiceCommand.matchMode.suffix":"뒷부분 일치","voiceCommand.matchMode.contains":"포함","chain.title":"LLM 체인","chain.count":"{{count}}개","chain.add":"체인 추가","chain.editTitle":"체인 편집","chain.addTitle":"체인 추가","chain.name":"체인 이름","chain.steps":"단계","chain.addStep":"단계 추가","chain.removeStep":"제거","chain.inputSource":"입력 소스","chain.inputSource.original":"원본 텍스트","chain.inputSource.previous":"이전 단계 결과","chain.selectInstruction":"명령어 선택","chain.execute":"실행","chain.executing":"실행 중...","chain.noChains":"체인 없음 — 여러 명령어를 순차 실행하는 파이프라인을 만들어 보세요","chain.step":"{{n}}단계","chain.progress":"{{current}}/{{total}} 단계 처리 중","context.title":"화면 컨텍스트","context.enabled":"스크린 컨텍스트","context.enabledDesc":"녹음 시작 시 활성 앱과 선택된 텍스트를 캡처하여 LLM에 전달합니다.","dashboard.caption":"실시간 자막","dashboard.captionStart":"자막 시작","dashboard.captionStop":"자막 종료","dashboard.captionActive":"자막 활성","settings.voiceCommands":"음성 명령어","settings.voiceCommands.desc":"전사된 텍스트에서 키워드를 감지하여 명령어를 자동 선택합니다.","settings.screenContext":"화면 컨텍스트","settings.screenContext.desc":"녹음 시 활성 앱 정보와 선택된 텍스트를 LLM에 함께 전달합니다.","date.today":"오늘","date.yesterday":"어제","license.title":"라이선스","license.currentTier":"현재 등급","license.free":"FREE","license.pro":"PRO","license.proPlus":"PRO+","license.activate":"라이선스 활성화","license.deactivate":"비활성화","license.keyPlaceholder":"라이선스 키 입력...","license.activating":"활성화 중...","license.activated":"활성화 완료","license.activateError":"활성화 실패: {{message}}","license.deactivated":"비활성화 완료","license.machineId":"기기 ID","license.activatedAt":"활성화 일시","license.manageLicense":"라이선스 관리","license.upgrade":"업그레이드","license.upgradeTitle":"Pro로 업그레이드","license.upgradeDesc":"모든 기능을 잠금 해제하세요","license.quotaUsed":"{{used}}/{{limit}} 사용","license.quotaUnlimited":"무제한","license.tierComparison":"등급 비교","license.dailyUsage":"일일 사용량","license.feature.dictation":"받아쓰기","license.feature.llm_process":"LLM 처리","license.feature.live_caption":"실시간 자막","license.feature.screen_context":"화면 컨텍스트","license.feature.voice_command":"음성 명령어","license.feature.llm_chain":"LLM 체인","license.feature.voice_memo":"음성 메모","license.feature.history_unlimited":"무제한 히스토리","license.feature.history_export":"히스토리 내보내기","license.feature.custom_instruction_create":"커스텀 명령어 생성","license.feature.file_transcription":"파일 전사","license.feature.voice_conversation":"음성 대화","license.feature.dictation_template":"받아쓰기 템플릿","license.feature.meeting_summary":"회의 요약","license.feature.local_rag":"로컬 RAG","license.feature.os_automation":"OS 자동화","license.feature.llmProcess":"LLM 처리","license.feature.liveCaption":"실시간 자막","license.feature.screenContext":"화면 컨텍스트","license.feature.voiceCommand":"음성 명령어","license.feature.llmChain":"LLM 체인","license.feature.voiceMemo":"음성 메모","license.feature.historyUnlimited":"무제한 히스토리","license.feature.historyExport":"히스토리 내보내기","license.feature.customInstruction":"커스텀 명령어 생성","license.feature.fileTranscription":"파일 전사","license.feature.voiceConversation":"음성 대화","license.feature.dictationTemplate":"받아쓰기 템플릿","license.feature.meetingSummary":"회의 요약","license.feature.localRag":"로컬 RAG","license.feature.osAutomation":"OS 자동화","license.pro.required":"PRO 필요","license.proPlus.required":"PRO+ 필요","license.included":"포함","license.notIncluded":"미포함","license.keyLabel":"라이선스 키","license.quotaExceeded.title":"오늘의 {{feature}}을(를) 모두 사용했습니다","license.quotaExceeded.desc":"Pro로 업그레이드하면 무제한으로 사용할 수 있습니다","license.tierRequired.title":"{{feature}}은(는) {{tier}} 기능입니다","license.tierRequired.desc":"{{tier}}로 업그레이드하여 잠금을 해제하세요","license.tryTomorrow":"내일 다시 사용하기","license.learnMore":"알아보기","license.upgradeBenefits":"업그레이드 혜택","license.benefit.unlimitedDictation":"무제한 받아쓰기","license.benefit.unlimitedLLM":"무제한 AI 다듬기","license.benefit.liveCaption":"실시간 자막","license.benefit.unlimitedHistory":"히스토리 무제한 보존","license.usageToday":"오늘 사용량","license.perDay":"회/일","license.unlimited":"무제한","license.locked":"잠금","license.nav":"라이선스","fileTranscription.title":"파일 전사","fileTranscription.dropZone":"오디오/비디오 파일을 여기에 드래그하세요","fileTranscription.dropZoneHint":"MP3, WAV, M4A, MP4, MKV, WEBM 지원","fileTranscription.converting":"변환 중...","fileTranscription.processing":"전사 중...","fileTranscription.progress":"청크 {{current}} / {{total}}","fileTranscription.complete":"전사 완료","fileTranscription.copyAll":"전체 복사","fileTranscription.cancel":"취소","fileTranscription.retry":"다시 시도","fileTranscription.error.invalidFormat":"지원하지 않는 파일 형식입니다","fileTranscription.error.unknown":"알 수 없는 오류","meetingSummary.title":"회의록 요약","meetingSummary.generating":"요약 생성 중...","meetingSummary.summary":"요약","meetingSummary.decisions":"핵심 결정사항","meetingSummary.actionItems":"할 일 목록","meetingSummary.exportMarkdown":"마크다운 내보내기","meetingSummary.noSummary":"요약이 없습니다","meetingSummary.generate":"요약 생성","template.title":"딕테이션 템플릿","template.create":"새 템플릿","template.edit":"템플릿 편집","template.delete":"삭제","template.name":"템플릿 이름","template.description":"설명","template.fields":"필드","template.addField":"필드 추가","template.fieldName":"필드명","template.fieldLabel":"라벨","template.fieldPrompt":"음성 안내","template.outputFormat":"출력 포맷","template.startSession":"시작","template.cancelSession":"세션 취소","template.empty":"템플릿이 없습니다","nav.conversation":"대화","conversation.title":"음성 대화","conversation.idle":"대기","conversation.listening":"듣는 중","conversation.thinking":"생각 중","conversation.speaking":"말하는 중","conversation.empty":"D3RO에게 말을 걸어보세요","conversation.emptyHint":"마이크 버튼을 누르거나 텍스트를 입력하세요","conversation.inputPlaceholder":"메시지 입력...","conversation.end":"종료","conversation.clearHistory":"대화 초기화","nav.knowledge":"지식 베이스","rag.title":"지식 베이스","rag.addDocument":"문서 추가","rag.documents":"문서","rag.noDocuments":"문서가 없습니다","rag.chunks":"청크","rag.indexed":"인덱싱 완료","rag.pending":"대기 중","rag.indexing":"인덱싱 중","rag.reindex":"재인덱싱","rag.askQuestion":"질문하기","rag.queryPlaceholder":"문서에 대해 질문하세요...","rag.searching":"검색 중...","rag.sources":"참조 문서","rag.adding":"추가 중...","rag.parsing":"문서 분석 중...","voiceAction.title":"음성 액션","voiceAction.execute":"실행","voiceAction.presets":"프리셋 명령","voiceAction.history":"실행 이력","voiceAction.noHistory":"실행 이력이 없습니다","voiceAction.blocked":"차단됨 (위험 명령)","voiceAction.executed":"실행됨","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"한국어","settings.sttLang.en":"English","settings.sttLang.ja":"日本語","settings.sttLang.zh":"中文","template.outputHelperText":"{{필드명}} 형식으로 플레이스홀더를 사용하세요","nav.meeting":"회의","meeting.title":"회의 모드","meeting.newMeeting":"새 회의","meeting.startRecording":"녹음 시작","meeting.stopRecording":"녹음 종료","meeting.recording":"녹음 중","meeting.processing":"회의록 생성 중...","meeting.completed":"완료","meeting.error":"오류","meeting.elapsed":"경과 시간","meeting.memoPlaceholder":"메모 입력 (Enter로 추가)","meeting.memoAdded":"메모 추가됨","meeting.noSessions":"회의 녹음이 없습니다","meeting.noSessionsDesc":"새 회의 버튼을 눌러 녹음을 시작하세요","meeting.summary":"요약","meeting.decisions":"결정사항","meeting.actionItems":"할 일","meeting.timeline":"타임라인","meeting.transcript":"원문 전사","meeting.memos":"메모","meeting.exportPdf":"PDF 내보내기","meeting.exportMarkdown":"마크다운 내보내기","meeting.delete":"삭제","meeting.deleteConfirm":"이 회의록을 삭제하시겠습니까?","meeting.backToList":"목록으로","meeting.notificationTitle":"회의록 준비 완료","meeting.notificationBody":"회의록이 생성되었습니다. 클릭하여 확인하세요.","meeting.sessions":"{{count}}건","meeting.duration":"{{minutes}}분","meeting.editTitle":"제목 편집","meeting.untitled":"무제 회의","meeting.processingStep.merging":"전사 텍스트 합산 중...","meeting.processingStep.generating":"LLM 회의록 생성 중...","meeting.processingStep.parsing":"회의록 파싱 중...","meeting.processingStep.saving":"저장 중...","meeting.processingStep.notifying":"완료 알림 중...","meeting.transcriptTab":"전사","meeting.addDocument":"문서 추가","meeting.selectTemplate":"템플릿 선택","meeting.generate":"생성","meeting.generating":"문서 생성 중...","meeting.editMode":"편집","meeting.previewMode":"미리보기","meeting.modified":"수정됨","meeting.originalText":"원본 보기","meeting.editedText":"수정본 보기","meeting.exportDocx":"DOCX 내보내기","meeting.exportTxt":"TXT 내보내기","meeting.exportFormat":"내보내기","meeting.customPrompt":"커스텀 프롬프트","meeting.templateName":"템플릿 이름","meeting.templatePrompt":"AI 프롬프트","meeting.templateSave":"템플릿 저장","meeting.documentDeleted":"문서가 삭제되었습니다","meeting.autoSaved":"자동 저장됨","meeting.minutesTemplate":"회의록","meeting.reportTemplate":"보고서","meeting.ideaNoteTemplate":"아이디어 노트","meeting.customTemplate":"커스텀","meeting.downloadTranscript":"전사 다운로드","meeting.polish":"AI 다듬기","meeting.polishing":"AI가 전사를 다듬는 중...","meeting.polished":"AI 다듬기 완료","meeting.mindmapTemplate":"마인드맵","meeting.chat":"AI 채팅","meeting.chatPlaceholder":"회의 내용에 대해 질문하세요...","meeting.chatSend":"전송","meeting.chatClear":"대화 초기화","meeting.copyToClipboard":"클립보드 복사","meeting.copied":"복사됨","meeting.chatCollapse":"채팅 접기","meeting.chatExpand":"채팅 펼치기","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI 다듬기에 실패했습니다","meeting.viewDetailError":"회의 상세 정보를 불러오지 못했습니다","meeting.startRecordingError":"녹음을 시작하지 못했습니다","meeting.diarize":"화자 구분","meeting.diarizing":"화자를 구분하는 중...","meeting.diarizeComplete":"화자 구분 완료","meeting.speaker":"화자","settings.hfToken":"HuggingFace 토큰","settings.hfTokenHint":"화자 구분을 위해 HuggingFace 토큰이 필요합니다","settings.diarization":"화자 구분","settings.diarizationHint":"녹음 종료 후 화자를 자동으로 구분합니다"}'),g=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Local AI Voice Assistant","nav.dashboard":"Dashboard","nav.history":"History","nav.dictionary":"Dictionary","nav.commands":"Commands","nav.settings":"Settings","dashboard.sessionOverview":"Session Overview","dashboard.systemStatus":"System Status","dashboard.sessionsToday":"Today\'s Sessions","dashboard.pressToRecord":"Press {{key}} to start recording","dashboard.hotkeyNotSet":"Hotkey not set","dashboard.words":"Words","dashboard.total":"Total","dashboard.streak":"Streak","dashboard.days":"days","dashboard.recording":"Recording","dashboard.sessions":"Sessions","dashboard.today":"Today","dashboard.recentTranscriptions":"Recent Transcriptions","dashboard.noHistory":"No history — press your hotkey to start recording","dashboard.copy":"Copy","dashboard.entries":"{{count}} entries","dashboard.stat":"Stats","dashboard.sys":"System","history.title":"Transcription History","history.search":"Search...","history.entries":"{{count}} entries","history.loading":"Loading...","history.noResults":"No results found","history.noHistory":"No history — start recording","history.count":"{{count}} entries","dictionary.title":"Custom Dictionary","dictionary.words":"{{count}} words","dictionary.add":"Add","dictionary.search":"Search...","dictionary.loading":"Loading...","dictionary.noResults":"No results found","dictionary.noWords":"No words — add custom words to improve STT accuracy","dictionary.used":"Used {{count}} times","dictionary.editTitle":"Edit Word","dictionary.addTitle":"Add Word","dictionary.word":"Word","dictionary.pronunciation":"Pronunciation (optional)","commands.title":"LLM Commands","commands.count":"{{count}} commands","commands.add":"Add","commands.activeCommand":"Active Command","commands.none":"None","commands.loading":"Loading...","commands.noCommands":"No commands — click Add to create one","commands.editTitle":"Edit Command","commands.addTitle":"Add Command","commands.name":"Name","commands.description":"Description","commands.promptTemplate":"Prompt Template","commands.promptHelp":"{{text}} will be replaced with the transcribed text","commands.defaultPrompt":"Please refine the following: {{text}}","settings.title":"Settings","settings.tabs.general":"General","settings.tabs.audio":"Audio","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"About","settings.shortcuts":"Shortcuts","settings.dictation":"Dictation","settings.dictation.desc":"Hold to speak. Transcription begins when you release the key.","settings.agent":"Agent Mode","settings.agent.descWithKey":"Double-press {{key}} to enter Agent mode.","settings.agent.descNoKey":"Set a dictation hotkey first.","settings.oneTouch":"One-Touch Mode","settings.oneTouch.desc":"Press to start, press again to stop. Requires a separate shortcut.","settings.caption":"Live Caption","settings.caption.desc":"Toggle live caption mode with hotkey. Transcribes microphone input in real-time.","settings.captionAudio":"Caption Audio Source","settings.captionSource":"Audio Source","settings.captionSource.mic":"Microphone only","settings.captionSource.system":"System audio only (desktop sound)","settings.captionSource.both":"Microphone + System audio","settings.key":"Key","settings.notSet":"Not set","settings.enabled":"Enabled","settings.disabled":"Disabled","settings.interface":"Interface","settings.theme":"Theme","settings.theme.system":"System","settings.theme.light":"Light","settings.theme.dark":"Dark","settings.language":"Language","settings.appBehavior":"App Behavior","settings.closeToTray":"Minimize to tray on close","settings.autoLaunch":"Launch at system startup","settings.autoInsert":"Auto-insert text after transcription","settings.soundEffects":"Sound Effects","settings.microphone":"Microphone","settings.inputDevice":"Input Device","settings.deviceDefault":"(Default)","settings.textInsert":"Text Insertion","settings.insertMethod":"Insert Method","settings.insertClipboard":"Clipboard (Ctrl+V)","settings.insertKeyboard":"Keyboard Typing","settings.whisperModel":"Whisper Model","settings.model.tiny":"tiny (39 MB, fastest)","settings.model.base":"base (74 MB, balanced)","settings.model.small":"small (244 MB, good)","settings.model.medium":"medium (769 MB, great)","settings.model.large":"large-v3 (1.5 GB, best)","settings.sttLanguage":"Recognition Language","settings.sttLang.auto":"Auto-detect","settings.ollamaServer":"Ollama Server","settings.ollamaUrl":"Ollama Server URL","settings.ollamaHint":"Connects automatically when Ollama is running. Pull models directly in Ollama (e.g. ollama pull qwen3:4b).","settings.llmModel":"LLM Model","settings.postProcess":"Voice Post-Processing","settings.defaultAction":"Default Post-Processing Command","settings.action.none":"None (raw transcription)","settings.action.refine":"Refine (grammar + fluency)","settings.action.translate":"Translate","settings.action.summarize":"Summarize","settings.action.grammar":"Grammar Correction","settings.action.custom":"Custom Prompt","settings.actionHint":"The selected LLM post-processing will be applied to your transcription after recording. Only works when Ollama is connected.","settings.about.version":"Version","settings.about.techStack":"Tech Stack","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Voice Engine","settings.about.voiceEngineValue":"STT: faster-whisper (local) / LLM: Ollama (local)","settings.about.description":"A fully local AI voice assistant built on Speakly reverse-engineering insights. Runs entirely offline with no cloud dependencies.","settings.about.restartOnboarding":"Restart Setup Wizard","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama is not running","status.nudge.desc":"Ollama is required for LLM post-processing (translation, summarization, etc.).","status.nudge.guide":"View setup guide →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"No typing needed — just speak. Your local AI voice assistant.","onboarding.welcome.start":"Get Started","onboarding.mic.title":"Microphone Setup","onboarding.mic.desc":"Choose a microphone to use. You can change this later in Settings.","onboarding.hotkey.title":"Shortcut Setup","onboarding.hotkey.desc":"Set your dictation shortcut. Hold the key while speaking to record.","onboarding.hotkey.notSet":"No shortcut set","onboarding.hotkey.change":"Change Shortcut","onboarding.hotkey.set":"Set Shortcut","onboarding.ollama.title":"Install Ollama (Optional)","onboarding.ollama.desc":"Ollama is required for LLM post-processing like translation and summarization. Voice dictation works without it.","onboarding.ollama.download":"Download Ollama","onboarding.ollama.modelHint":"After installation, download a model from your terminal","onboarding.done.title":"You\'re all set!","onboarding.done.descWithKey":"Hold {{key}} and speak — your voice will be converted to text.","onboarding.done.descNoKey":"Set a shortcut in Settings to start voice dictation.","onboarding.done.start":"Start Using","onboarding.back":"Back","onboarding.next":"Next","hotkey.title":"Set Shortcut","hotkey.dictationTitle":"Set Dictation Shortcut","hotkey.oneTouchTitle":"Set One-Touch Mode Shortcut","hotkey.captionTitle":"Set Live Caption Shortcut","hotkey.prompt":"Press a key combination...","hotkey.ready":"✓ {{keys}} — press Save to confirm","hotkey.noKey":"Please press a key","hotkey.reserved":"{{keys}} is a reserved system shortcut","hotkey.current":"Current: {{keys}}","hotkey.hint":"Enter a combination (e.g. Ctrl+Shift+Q) or a single key (e.g. F5)","hotkey.reset":"Clear","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"STEP 1 — Install Ollama","ollama.step1.desc":"Ollama is a free tool for running LLMs locally.","ollama.step2.title":"STEP 2 — Download a Model","ollama.step2.desc":"Pull a model from your terminal. Recommended:","ollama.step2.alt":"Or a larger model: ollama pull qwen3:8b (more accurate, slower)","ollama.step3.title":"STEP 3 — Auto-Connect","ollama.step3.desc":"Once Ollama is running, D3RO-VOICE will detect it automatically. When the status bar LED turns from red to green, you\'re ready!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"Cancel","common.save":"Save","common.delete":"Delete","common.add":"Add","common.edit":"Edit","common.close":"Close","common.confirm":"Confirm","common.loading":"Loading...","common.copy":"Copy","common.test":"Test","common.stop":"Stop","memo.tags":"Tags","memo.addTag":"Add Tag","memo.removeTag":"Remove Tag","memo.tagPlaceholder":"Type a tag and press Enter","memo.noTags":"No tags","memo.export":"Export as Markdown","memo.exportSuccess":"Export complete","memo.filterByTag":"Filter by tag","memo.allTags":"All Tags","memo.clearFilter":"Clear filter","voiceCommand.title":"Voice Commands","voiceCommand.enabled":"Voice Keyword Recognition","voiceCommand.enabledDesc":"Detects keywords at the start of transcription to auto-select commands.","voiceCommand.keywords":"Keywords","voiceCommand.keywordPlaceholder":"Type keyword and press Enter","voiceCommand.noKeywords":"No keywords","voiceCommand.matchMode":"Match Mode","voiceCommand.matchMode.prefix":"Starts with","voiceCommand.matchMode.suffix":"Ends with","voiceCommand.matchMode.contains":"Contains","chain.title":"LLM Chains","chain.count":"{{count}} chains","chain.add":"Add Chain","chain.editTitle":"Edit Chain","chain.addTitle":"Add Chain","chain.name":"Chain Name","chain.steps":"Steps","chain.addStep":"Add Step","chain.removeStep":"Remove","chain.inputSource":"Input Source","chain.inputSource.original":"Original Text","chain.inputSource.previous":"Previous Step Result","chain.selectInstruction":"Select Command","chain.execute":"Execute","chain.executing":"Executing...","chain.noChains":"No chains — create a pipeline to run multiple commands in sequence","chain.step":"Step {{n}}","chain.progress":"Processing step {{current}}/{{total}}","context.title":"Screen Context","context.enabled":"Screen Context","context.enabledDesc":"Captures active app and selected text when recording starts, and sends it to the LLM.","dashboard.caption":"Live Caption","dashboard.captionStart":"Start Caption","dashboard.captionStop":"Stop Caption","dashboard.captionActive":"Caption Active","settings.voiceCommands":"Voice Commands","settings.voiceCommands.desc":"Detects keywords in transcription to auto-select commands.","settings.screenContext":"Screen Context","settings.screenContext.desc":"Sends active app info and selected text to the LLM during recording.","date.today":"Today","date.yesterday":"Yesterday","license.title":"License","license.currentTier":"Current Tier","license.free":"FREE","license.pro":"PRO","license.proPlus":"PRO+","license.activate":"Activate License","license.deactivate":"Deactivate","license.keyPlaceholder":"Enter license key...","license.activating":"Activating...","license.activated":"Activated","license.activateError":"Activation failed: {{message}}","license.deactivated":"Deactivated","license.machineId":"Machine ID","license.activatedAt":"Activated At","license.manageLicense":"Manage License","license.upgrade":"Upgrade","license.upgradeTitle":"Upgrade to Pro","license.upgradeDesc":"Unlock all features","license.quotaUsed":"{{used}}/{{limit}} used","license.quotaUnlimited":"Unlimited","license.tierComparison":"Tier Comparison","license.dailyUsage":"Daily Usage","license.feature.dictation":"Dictation","license.feature.llm_process":"LLM Processing","license.feature.live_caption":"Live Caption","license.feature.screen_context":"Screen Context","license.feature.voice_command":"Voice Commands","license.feature.llm_chain":"LLM Chain","license.feature.voice_memo":"Voice Memo","license.feature.history_unlimited":"Unlimited History","license.feature.history_export":"History Export","license.feature.custom_instruction_create":"Custom Instruction","license.feature.file_transcription":"File Transcription","license.feature.voice_conversation":"Voice Conversation","license.feature.dictation_template":"Dictation Template","license.feature.meeting_summary":"Meeting Summary","license.feature.local_rag":"Local RAG","license.feature.os_automation":"OS Automation","license.feature.llmProcess":"LLM Processing","license.feature.liveCaption":"Live Caption","license.feature.screenContext":"Screen Context","license.feature.voiceCommand":"Voice Commands","license.feature.llmChain":"LLM Chain","license.feature.voiceMemo":"Voice Memo","license.feature.historyUnlimited":"Unlimited History","license.feature.historyExport":"History Export","license.feature.customInstruction":"Custom Instruction","license.feature.fileTranscription":"File Transcription","license.feature.voiceConversation":"Voice Conversation","license.feature.dictationTemplate":"Dictation Template","license.feature.meetingSummary":"Meeting Summary","license.feature.localRag":"Local RAG","license.feature.osAutomation":"OS Automation","license.pro.required":"PRO Required","license.proPlus.required":"PRO+ Required","license.included":"Included","license.notIncluded":"Not included","license.keyLabel":"License Key","license.quotaExceeded.title":"You\'ve used all your daily {{feature}}","license.quotaExceeded.desc":"Upgrade to Pro for unlimited usage","license.tierRequired.title":"{{feature}} is a {{tier}} feature","license.tierRequired.desc":"Upgrade to {{tier}} to unlock","license.tryTomorrow":"Try again tomorrow","license.learnMore":"Learn more","license.upgradeBenefits":"Upgrade Benefits","license.benefit.unlimitedDictation":"Unlimited dictation","license.benefit.unlimitedLLM":"Unlimited AI polish","license.benefit.liveCaption":"Live captions","license.benefit.unlimitedHistory":"Unlimited history retention","license.usageToday":"Usage today","license.perDay":"/day","license.unlimited":"Unlimited","license.locked":"Locked","license.nav":"License","fileTranscription.title":"File Transcription","fileTranscription.dropZone":"Drop audio/video file here","fileTranscription.dropZoneHint":"Supports MP3, WAV, M4A, MP4, MKV, WEBM","fileTranscription.converting":"Converting...","fileTranscription.processing":"Transcribing...","fileTranscription.progress":"Chunk {{current}} / {{total}}","fileTranscription.complete":"Transcription complete","fileTranscription.copyAll":"Copy All","fileTranscription.cancel":"Cancel","fileTranscription.retry":"Retry","fileTranscription.error.invalidFormat":"Unsupported file format","fileTranscription.error.unknown":"Unknown error","meetingSummary.title":"Meeting Summary","meetingSummary.generating":"Generating summary...","meetingSummary.summary":"Summary","meetingSummary.decisions":"Key Decisions","meetingSummary.actionItems":"Action Items","meetingSummary.exportMarkdown":"Export as Markdown","meetingSummary.noSummary":"No summary available","meetingSummary.generate":"Generate Summary","template.title":"Dictation Templates","template.create":"New Template","template.edit":"Edit Template","template.delete":"Delete","template.name":"Template Name","template.description":"Description","template.fields":"Fields","template.addField":"Add Field","template.fieldName":"Field Name","template.fieldLabel":"Label","template.fieldPrompt":"Voice Prompt","template.outputFormat":"Output Format","template.startSession":"Start","template.cancelSession":"Cancel Session","template.empty":"No templates","nav.conversation":"Talk","conversation.title":"Voice Conversation","conversation.idle":"Idle","conversation.listening":"Listening","conversation.thinking":"Thinking","conversation.speaking":"Speaking","conversation.empty":"Talk to D3RO","conversation.emptyHint":"Press the mic button or type a message","conversation.inputPlaceholder":"Type a message...","conversation.end":"End","conversation.clearHistory":"Clear history","nav.knowledge":"Knowledge","rag.title":"Knowledge Base","rag.addDocument":"Add Document","rag.documents":"Documents","rag.noDocuments":"No documents","rag.chunks":"chunks","rag.indexed":"Indexed","rag.pending":"Pending","rag.indexing":"Indexing","rag.reindex":"Reindex","rag.askQuestion":"Ask a Question","rag.queryPlaceholder":"Ask about your documents...","rag.searching":"Searching...","rag.sources":"Sources","rag.adding":"Adding...","rag.parsing":"Parsing document...","voiceAction.title":"Voice Actions","voiceAction.execute":"Execute","voiceAction.presets":"Preset Commands","voiceAction.history":"Action History","voiceAction.noHistory":"No action history","voiceAction.blocked":"Blocked (unsafe)","voiceAction.executed":"Executed","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"한국어 (Korean)","settings.sttLang.en":"English","settings.sttLang.ja":"日本語 (Japanese)","settings.sttLang.zh":"中文 (Chinese)","template.outputHelperText":"Use {{fieldName}} for placeholders","nav.meeting":"Meeting","meeting.title":"Meeting Mode","meeting.newMeeting":"New Meeting","meeting.startRecording":"Start Recording","meeting.stopRecording":"Stop Recording","meeting.recording":"Recording","meeting.processing":"Generating minutes...","meeting.completed":"Completed","meeting.error":"Error","meeting.elapsed":"Elapsed","meeting.memoPlaceholder":"Type a memo (Enter to add)","meeting.memoAdded":"Memo added","meeting.noSessions":"No meeting recordings","meeting.noSessionsDesc":"Press New Meeting to start recording","meeting.summary":"Summary","meeting.decisions":"Decisions","meeting.actionItems":"Action Items","meeting.timeline":"Timeline","meeting.transcript":"Raw Transcript","meeting.memos":"Memos","meeting.exportPdf":"Export PDF","meeting.exportMarkdown":"Export Markdown","meeting.delete":"Delete","meeting.deleteConfirm":"Delete this meeting record?","meeting.backToList":"Back to List","meeting.notificationTitle":"Minutes Ready","meeting.notificationBody":"Meeting minutes have been generated.","meeting.sessions":"{{count}} sessions","meeting.duration":"{{minutes}} min","meeting.editTitle":"Edit Title","meeting.untitled":"Untitled Meeting","meeting.processingStep.merging":"Merging transcript...","meeting.processingStep.generating":"Generating minutes with LLM...","meeting.processingStep.parsing":"Parsing minutes...","meeting.processingStep.saving":"Saving...","meeting.processingStep.notifying":"Sending notification...","meeting.transcriptTab":"Transcript","meeting.addDocument":"Add Document","meeting.selectTemplate":"Select Template","meeting.generate":"Generate","meeting.generating":"Generating document...","meeting.editMode":"Edit","meeting.previewMode":"Preview","meeting.modified":"Modified","meeting.originalText":"Original","meeting.editedText":"Edited","meeting.exportDocx":"Export DOCX","meeting.exportTxt":"Export TXT","meeting.exportFormat":"Export","meeting.customPrompt":"Custom Prompt","meeting.templateName":"Template Name","meeting.templatePrompt":"AI Prompt","meeting.templateSave":"Save Template","meeting.documentDeleted":"Document deleted","meeting.autoSaved":"Auto-saved","meeting.minutesTemplate":"Meeting Minutes","meeting.reportTemplate":"Report","meeting.ideaNoteTemplate":"Idea Note","meeting.customTemplate":"Custom","meeting.downloadTranscript":"Download Transcript","meeting.polish":"AI Polish","meeting.polishing":"AI is polishing transcript...","meeting.polished":"AI Polish complete","meeting.mindmapTemplate":"Mind Map","meeting.chat":"AI Chat","meeting.chatPlaceholder":"Ask about the meeting...","meeting.chatSend":"Send","meeting.chatClear":"Clear Chat","meeting.copyToClipboard":"Copy to Clipboard","meeting.copied":"Copied","meeting.chatCollapse":"Collapse Chat","meeting.chatExpand":"Expand Chat","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI polishing failed","meeting.viewDetailError":"Failed to load meeting details","meeting.startRecordingError":"Failed to start recording","meeting.diarize":"Diarize","meeting.diarizing":"Identifying speakers...","meeting.diarizeComplete":"Diarization complete","meeting.speaker":"Speaker","settings.hfToken":"HuggingFace Token","settings.hfTokenHint":"A HuggingFace token is required for speaker diarization","settings.diarization":"Speaker Diarization","settings.diarizationHint":"Automatically identify speakers after recording ends"}'),h=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"ローカルAI音声アシスタント","nav.dashboard":"ダッシュボード","nav.history":"履歴","nav.dictionary":"辞書","nav.commands":"コマンド","nav.settings":"設定","dashboard.sessionOverview":"セッション概要","dashboard.systemStatus":"システム状態","dashboard.sessionsToday":"本日のセッション","dashboard.pressToRecord":"{{key}} を押して録音開始","dashboard.hotkeyNotSet":"ホットキー未設定","dashboard.words":"単語","dashboard.total":"合計","dashboard.streak":"連続","dashboard.days":"日","dashboard.recording":"録音","dashboard.sessions":"セッション","dashboard.today":"今日","dashboard.recentTranscriptions":"最近の文字起こし","dashboard.noHistory":"履歴なし — ホットキーを押して録音を開始してください","dashboard.copy":"コピー","dashboard.entries":"{{count}}件","dashboard.stat":"統計","dashboard.sys":"システム","history.title":"文字起こし履歴","history.search":"検索...","history.entries":"{{count}}件","history.loading":"読み込み中...","history.noResults":"検索結果なし","history.noHistory":"履歴なし — 録音を開始してください","history.count":"{{count}}件","dictionary.title":"カスタム辞書","dictionary.words":"{{count}}語","dictionary.add":"追加","dictionary.search":"検索...","dictionary.loading":"読み込み中...","dictionary.noResults":"検索結果なし","dictionary.noWords":"単語なし — STTの精度向上のためカスタム単語を追加してください","dictionary.used":"{{count}}回使用","dictionary.editTitle":"単語を編集","dictionary.addTitle":"単語を追加","dictionary.word":"単語","dictionary.pronunciation":"読み仮名 (任意)","commands.title":"LLMコマンド","commands.count":"{{count}}個","commands.add":"追加","commands.activeCommand":"アクティブコマンド","commands.none":"なし","commands.loading":"読み込み中...","commands.noCommands":"コマンドなし — 追加をクリックして作成","commands.editTitle":"コマンドを編集","commands.addTitle":"コマンドを追加","commands.name":"名前","commands.description":"説明","commands.promptTemplate":"プロンプトテンプレート","commands.promptHelp":"{{text}} は文字起こしされたテキストに置換されます","commands.defaultPrompt":"{{text}} を整えてください。","settings.title":"設定","settings.tabs.general":"一般","settings.tabs.audio":"オーディオ","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"情報","settings.shortcuts":"ショートカット","settings.dictation":"ディクテーション","settings.dictation.desc":"押しながら話します。キーを離すと文字起こしが始まります。","settings.agent":"エージェントモード","settings.agent.descWithKey":"{{key}} を2回クリックするとエージェントモードに入ります。","settings.agent.descNoKey":"先にディクテーションホットキーを設定してください。","settings.oneTouch":"ワンタッチモード","settings.oneTouch.desc":"押して開始、もう一度押して停止。別のショートカットが必要です。","settings.key":"キー","settings.notSet":"未設定","settings.enabled":"有効","settings.disabled":"無効","settings.interface":"インターフェース","settings.theme":"テーマ","settings.theme.system":"システム","settings.theme.light":"ライト","settings.theme.dark":"ダーク","settings.language":"言語","settings.appBehavior":"アプリの動作","settings.closeToTray":"トレイに最小化","settings.autoLaunch":"システム起動時に自動起動","settings.autoInsert":"文字起こし後に自動テキスト挿入","settings.soundEffects":"効果音","settings.microphone":"マイク","settings.inputDevice":"入力デバイス","settings.deviceDefault":"(デフォルト)","settings.textInsert":"テキスト挿入","settings.insertMethod":"挿入方式","settings.insertClipboard":"クリップボード (Ctrl+V)","settings.insertKeyboard":"キーボード入力","settings.whisperModel":"Whisperモデル","settings.model.tiny":"tiny (39 MB, 最速)","settings.model.base":"base (74 MB, バランス)","settings.model.small":"small (244 MB, 良好)","settings.model.medium":"medium (769 MB, 高精度)","settings.model.large":"large-v3 (1.5 GB, 最高)","settings.sttLanguage":"認識言語","settings.sttLang.auto":"自動検出","settings.ollamaServer":"Ollamaサーバー","settings.ollamaUrl":"OllamaサーバーURL","settings.ollamaHint":"Ollamaが起動していれば自動的に接続されます。モデルはOllamaから直接pullしてください(例: ollama pull qwen3:4b)。","settings.postProcess":"音声後処理","settings.defaultAction":"デフォルト後処理コマンド","settings.action.none":"なし (元のテキストをそのまま)","settings.action.refine":"整形 (文法+自然さ)","settings.action.translate":"翻訳","settings.action.summarize":"要約","settings.action.grammar":"文法修正","settings.action.custom":"カスタムプロンプト","settings.actionHint":"ホットキーで録音後、文字起こしされたテキストに選択したLLM後処理が適用されます。Ollamaが接続されている場合のみ動作します。","settings.about.version":"バージョン","settings.about.techStack":"技術スタック","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"音声エンジン","settings.about.voiceEngineValue":"STT: faster-whisper (ローカル) / LLM: Ollama (ローカル)","settings.about.description":"Speaklyリバースエンジニアリングのノウハウをもとに構築したローカルAI音声アシスタント。クラウドに依存せず完全ローカルで動作します。","settings.about.restartOnboarding":"初期設定ガイドをもう一度見る","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollamaが起動していません","status.nudge.desc":"LLM後処理(翻訳、要約など)を使用するにはOllamaが必要です。","status.nudge.guide":"インストールガイドを見る →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"タイピング不要、音声で。ローカルAI音声アシスタントです。","onboarding.welcome.start":"始める","onboarding.mic.title":"マイク設定","onboarding.mic.desc":"使用するマイクを選択してください。後で設定から変更できます。","onboarding.hotkey.title":"ショートカット設定","onboarding.hotkey.desc":"ディクテーションショートカットを設定してください。キーを押している間、録音されます。","onboarding.hotkey.notSet":"ショートカットが設定されていません","onboarding.hotkey.change":"ショートカットを変更","onboarding.hotkey.set":"ショートカットを設定","onboarding.ollama.title":"Ollamaのインストール (任意)","onboarding.ollama.desc":"翻訳、要約などのLLM後処理を使用するにはOllamaが必要です。音声ディクテーション自体はOllamaなしでも動作します。","onboarding.ollama.download":"Ollamaをダウンロード","onboarding.ollama.modelHint":"インストール後、ターミナルでモデルをダウンロードしてください","onboarding.done.title":"設定完了!","onboarding.done.descWithKey":"{{key}} キーを押しながら話すと、音声がテキストに変換されます。","onboarding.done.descNoKey":"設定でショートカットを指定すると、音声ディクテーションを開始できます。","onboarding.done.start":"始める","onboarding.back":"戻る","onboarding.next":"次へ","hotkey.title":"ショートカット設定","hotkey.dictationTitle":"ディクテーションショートカットの設定","hotkey.oneTouchTitle":"ワンタッチモードショートカットの設定","hotkey.prompt":"キーの組み合わせを押してください...","hotkey.ready":"✓ {{keys}} — 保存を押してください","hotkey.noKey":"キーを入力してください","hotkey.reserved":"{{keys}} はシステム予約のショートカットです","hotkey.current":"現在: {{keys}}","hotkey.hint":"組み合わせキー(例: Ctrl+Shift+Q)または単一キー(例: F5)を入力してください","hotkey.reset":"再入力","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"STEP 1 — Ollamaのインストール","ollama.step1.desc":"OllamaはローカルでLLMを実行するための無料ツールです。","ollama.step2.title":"STEP 2 — モデルのダウンロード","ollama.step2.desc":"ターミナルで希望のモデルをpullしてください。日本語におすすめ:","ollama.step2.alt":"または大きいモデル: ollama pull qwen3:8b (より正確、より遅い)","ollama.step3.title":"STEP 3 — 自動接続","ollama.step3.desc":"Ollamaが起動するとD3RO-VOICEが自動的に検出します。下部ステータスバーのLEDが赤から緑に変われば準備完了!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"キャンセル","common.save":"保存","common.delete":"削除","common.add":"追加","common.edit":"編集","common.close":"閉じる","common.confirm":"確認","common.loading":"読み込み中...","common.copy":"コピー","common.test":"テスト","common.stop":"停止","date.today":"今日","date.yesterday":"昨日","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"한국語","settings.sttLang.en":"English","settings.sttLang.ja":"日本語","settings.sttLang.zh":"中文","template.outputHelperText":"{{フィールド名}} でプレースホルダーを使用","nav.meeting":"ミーティング","meeting.title":"ミーティングモード","meeting.newMeeting":"新規ミーティング","meeting.startRecording":"録音開始","meeting.stopRecording":"録音停止","meeting.recording":"録音中","meeting.processing":"議事録を生成中...","meeting.completed":"完了","meeting.error":"エラー","meeting.elapsed":"経過時間","meeting.memoPlaceholder":"メモを入力(Enterで追加)","meeting.memoAdded":"メモを追加しました","meeting.noSessions":"ミーティングの録音がありません","meeting.noSessionsDesc":"「新規ミーティング」を押して録音を開始してください","meeting.summary":"要約","meeting.decisions":"決定事項","meeting.actionItems":"アクションアイテム","meeting.timeline":"タイムライン","meeting.transcript":"生のトランスクリプト","meeting.memos":"メモ","meeting.exportPdf":"PDFエクスポート","meeting.exportMarkdown":"Markdownエクスポート","meeting.delete":"削除","meeting.deleteConfirm":"このミーティング記録を削除しますか?","meeting.backToList":"一覧に戻る","meeting.notificationTitle":"議事録が完成しました","meeting.notificationBody":"ミーティングの議事録が生成されました。","meeting.sessions":"{{count}} セッション","meeting.duration":"{{minutes}} 分","meeting.editTitle":"タイトルを編集","meeting.untitled":"無題のミーティング","meeting.processingStep.merging":"トランスクリプトをマージ中...","meeting.processingStep.generating":"LLMで議事録を生成中...","meeting.processingStep.parsing":"議事録を解析中...","meeting.processingStep.saving":"保存中...","meeting.processingStep.notifying":"通知を送信中...","meeting.transcriptTab":"文字起こし","meeting.addDocument":"ドキュメント追加","meeting.selectTemplate":"テンプレートを選択","meeting.generate":"生成","meeting.generating":"ドキュメントを生成中...","meeting.editMode":"編集","meeting.previewMode":"プレビュー","meeting.modified":"編集済み","meeting.originalText":"原文","meeting.editedText":"編集版","meeting.exportDocx":"DOCXエクスポート","meeting.exportTxt":"TXTエクスポート","meeting.exportFormat":"エクスポート","meeting.customPrompt":"カスタムプロンプト","meeting.templateName":"テンプレート名","meeting.templatePrompt":"AIプロンプト","meeting.templateSave":"テンプレートを保存","meeting.documentDeleted":"ドキュメントが削除されました","meeting.autoSaved":"自動保存済み","meeting.minutesTemplate":"議事録","meeting.reportTemplate":"レポート","meeting.ideaNoteTemplate":"アイデアノート","meeting.customTemplate":"カスタム","meeting.downloadTranscript":"文字起こしをダウンロード","meeting.polish":"AI で整える","meeting.polishing":"AI が文字起こしを整えています...","meeting.polished":"AI 整形完了","meeting.mindmapTemplate":"マインドマップ","meeting.chat":"AI チャット","meeting.chatPlaceholder":"会議について質問してください...","meeting.chatSend":"送信","meeting.chatClear":"チャットをクリア","meeting.copyToClipboard":"クリップボードにコピー","meeting.copied":"コピーしました","meeting.chatCollapse":"チャットを折り畳む","meeting.chatExpand":"チャットを展開","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI磨き上げに失敗しました","meeting.viewDetailError":"会議の詳細を読み込めませんでした","meeting.startRecordingError":"録音を開始できませんでした","meeting.diarize":"話者分離","meeting.diarizing":"話者を識別中...","meeting.diarizeComplete":"話者分離完了","meeting.speaker":"話者","settings.hfToken":"HuggingFaceトークン","settings.hfTokenHint":"話者分離にはHuggingFaceトークンが必要です","settings.diarization":"話者分離","settings.diarizationHint":"録音終了後に自動的に話者を識別します"}'),i=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"本地AI语音助手","nav.dashboard":"仪表板","nav.history":"历史记录","nav.dictionary":"词典","nav.commands":"命令","nav.settings":"设置","dashboard.sessionOverview":"会话概览","dashboard.systemStatus":"系统状态","dashboard.sessionsToday":"今日会话","dashboard.pressToRecord":"按下 {{key}} 开始录音","dashboard.hotkeyNotSet":"未设置热键","dashboard.words":"词数","dashboard.total":"总计","dashboard.streak":"连续","dashboard.days":"天","dashboard.recording":"录音","dashboard.sessions":"会话","dashboard.today":"今天","dashboard.recentTranscriptions":"最近转录","dashboard.noHistory":"暂无历史记录 — 按下热键开始录音","dashboard.copy":"复制","dashboard.entries":"{{count}}条","dashboard.stat":"统计","dashboard.sys":"系统","history.title":"转录历史","history.search":"搜索...","history.entries":"{{count}}条","history.loading":"加载中...","history.noResults":"无搜索结果","history.noHistory":"暂无历史记录 — 请开始录音","history.count":"{{count}}条","dictionary.title":"自定义词典","dictionary.words":"{{count}}个词","dictionary.add":"添加","dictionary.search":"搜索...","dictionary.loading":"加载中...","dictionary.noResults":"无搜索结果","dictionary.noWords":"暂无词条 — 添加自定义词汇以提高STT识别精度","dictionary.used":"已使用{{count}}次","dictionary.editTitle":"编辑词条","dictionary.addTitle":"添加词条","dictionary.word":"词汇","dictionary.pronunciation":"发音(可选)","commands.title":"LLM命令","commands.count":"{{count}}个","commands.add":"添加","commands.activeCommand":"当前命令","commands.none":"无","commands.loading":"加载中...","commands.noCommands":"暂无命令 — 点击添加以创建","commands.editTitle":"编辑命令","commands.addTitle":"添加命令","commands.name":"名称","commands.description":"描述","commands.promptTemplate":"提示词模板","commands.promptHelp":"{{text}} 将被替换为转录的文本","commands.defaultPrompt":"请润色以下内容:{{text}}","settings.title":"设置","settings.tabs.general":"通用","settings.tabs.audio":"音频","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"关于","settings.shortcuts":"快捷键","settings.dictation":"听写","settings.dictation.desc":"按住键开始说话,松开键后开始转录。","settings.agent":"Agent模式","settings.agent.descWithKey":"双击 {{key}} 进入Agent模式。","settings.agent.descNoKey":"请先设置听写热键。","settings.oneTouch":"一触即发模式","settings.oneTouch.desc":"按下开始,再次按下停止。需要单独的快捷键。","settings.key":"键","settings.notSet":"未设置","settings.enabled":"已启用","settings.disabled":"已禁用","settings.interface":"界面","settings.theme":"主题","settings.theme.system":"跟随系统","settings.theme.light":"浅色","settings.theme.dark":"深色","settings.language":"语言","settings.appBehavior":"应用行为","settings.closeToTray":"最小化到托盘","settings.autoLaunch":"开机自动启动","settings.autoInsert":"转录后自动插入文本","settings.soundEffects":"音效","settings.microphone":"麦克风","settings.inputDevice":"输入设备","settings.deviceDefault":"(默认)","settings.textInsert":"文本插入","settings.insertMethod":"插入方式","settings.insertClipboard":"剪贴板(Ctrl+V)","settings.insertKeyboard":"键盘输入","settings.whisperModel":"Whisper模型","settings.model.tiny":"tiny(39 MB,最快)","settings.model.base":"base(74 MB,均衡)","settings.model.small":"small(244 MB,良好)","settings.model.medium":"medium(769 MB,优秀)","settings.model.large":"large-v3(1.5 GB,最佳)","settings.sttLanguage":"识别语言","settings.sttLang.auto":"自动检测","settings.ollamaServer":"Ollama服务器","settings.ollamaUrl":"Ollama服务器URL","settings.ollamaHint":"Ollama运行时将自动连接。请直接在Ollama中pull模型(例如:ollama pull qwen3:4b)。","settings.postProcess":"语音后处理","settings.defaultAction":"默认后处理命令","settings.action.none":"无(保留原始文本)","settings.action.refine":"润色(语法+自然度)","settings.action.translate":"翻译","settings.action.summarize":"摘要","settings.action.grammar":"语法校正","settings.action.custom":"自定义提示词","settings.actionHint":"通过热键录音后,所选LLM后处理将应用于转录文本。仅在Ollama连接时有效。","settings.about.version":"版本","settings.about.techStack":"技术栈","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"语音引擎","settings.about.voiceEngineValue":"STT: faster-whisper(本地)/ LLM: Ollama(本地)","settings.about.description":"基于Speakly逆向工程经验构建的本地AI语音助手,无需依赖云端,完全在本地运行。","settings.about.restartOnboarding":"重新查看初始设置引导","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama未运行","status.nudge.desc":"使用LLM后处理(翻译、摘要等)需要Ollama。","status.nudge.guide":"查看安装指南 →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"无需打字,用声音操作。本地AI语音助手。","onboarding.welcome.start":"开始","onboarding.mic.title":"麦克风设置","onboarding.mic.desc":"选择要使用的麦克风,之后可在设置中更改。","onboarding.hotkey.title":"快捷键设置","onboarding.hotkey.desc":"设置听写快捷键,按住该键时进行录音。","onboarding.hotkey.notSet":"尚未设置快捷键","onboarding.hotkey.change":"更改快捷键","onboarding.hotkey.set":"设置快捷键","onboarding.ollama.title":"安装Ollama(可选)","onboarding.ollama.desc":"使用翻译、摘要等LLM后处理功能需要Ollama。语音听写本身无需Ollama即可使用。","onboarding.ollama.download":"下载Ollama","onboarding.ollama.modelHint":"安装后在终端中下载模型","onboarding.done.title":"设置完成!","onboarding.done.descWithKey":"按住 {{key}} 键说话,语音即可转换为文本。","onboarding.done.descNoKey":"在设置中指定快捷键后即可开始语音听写。","onboarding.done.start":"开始","onboarding.back":"返回","onboarding.next":"下一步","hotkey.title":"快捷键设置","hotkey.dictationTitle":"设置听写快捷键","hotkey.oneTouchTitle":"设置一触即发模式快捷键","hotkey.prompt":"请按下按键组合...","hotkey.ready":"✓ {{keys}} — 请点击保存","hotkey.noKey":"请输入按键","hotkey.reserved":"{{keys}} 是系统保留快捷键","hotkey.current":"当前: {{keys}}","hotkey.hint":"请输入组合键(例如:Ctrl+Shift+Q)或单个键(例如:F5)","hotkey.reset":"重新输入","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"STEP 1 — 安装Ollama","ollama.step1.desc":"Ollama是一款在本地运行LLM的免费工具。","ollama.step2.title":"STEP 2 — 下载模型","ollama.step2.desc":"在终端中pull所需模型。推荐中文模型:","ollama.step2.alt":"或更大的模型:ollama pull qwen3:8b(更精准,更慢)","ollama.step3.title":"STEP 3 — 自动连接","ollama.step3.desc":"Ollama启动后,D3RO-VOICE将自动检测。底部状态栏的LED从红色变为绿色即表示准备就绪!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"取消","common.save":"保存","common.delete":"删除","common.add":"添加","common.edit":"编辑","common.close":"关闭","common.confirm":"确认","common.loading":"加载中...","common.copy":"复制","common.test":"测试","common.stop":"停止","date.today":"今天","date.yesterday":"昨天","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"韩语","settings.sttLang.en":"English","settings.sttLang.ja":"日语","settings.sttLang.zh":"中文","template.outputHelperText":"使用 {{字段名}} 作为占位符","nav.meeting":"会议","meeting.title":"会议模式","meeting.newMeeting":"新建会议","meeting.startRecording":"开始录音","meeting.stopRecording":"停止录音","meeting.recording":"录音中","meeting.processing":"正在生成会议纪要...","meeting.completed":"已完成","meeting.error":"错误","meeting.elapsed":"已用时","meeting.memoPlaceholder":"输入备忘(Enter 添加)","meeting.memoAdded":"备忘已添加","meeting.noSessions":"暂无会议录音","meeting.noSessionsDesc":"点击「新建会议」开始录音","meeting.summary":"摘要","meeting.decisions":"决议","meeting.actionItems":"待办事项","meeting.timeline":"时间轴","meeting.transcript":"原始转录","meeting.memos":"备忘","meeting.exportPdf":"导出 PDF","meeting.exportMarkdown":"导出 Markdown","meeting.delete":"删除","meeting.deleteConfirm":"删除此会议记录?","meeting.backToList":"返回列表","meeting.notificationTitle":"会议纪要已就绪","meeting.notificationBody":"会议纪要已生成。","meeting.sessions":"{{count}} 场会议","meeting.duration":"{{minutes}} 分钟","meeting.editTitle":"编辑标题","meeting.untitled":"无标题会议","meeting.processingStep.merging":"正在合并转录...","meeting.processingStep.generating":"正在用 LLM 生成会议纪要...","meeting.processingStep.parsing":"正在解析会议纪要...","meeting.processingStep.saving":"正在保存...","meeting.processingStep.notifying":"正在发送通知...","meeting.transcriptTab":"转录","meeting.addDocument":"添加文档","meeting.selectTemplate":"选择模板","meeting.generate":"生成","meeting.generating":"正在生成文档...","meeting.editMode":"编辑","meeting.previewMode":"预览","meeting.modified":"已修改","meeting.originalText":"原文","meeting.editedText":"编辑版","meeting.exportDocx":"导出 DOCX","meeting.exportTxt":"导出 TXT","meeting.exportFormat":"导出","meeting.customPrompt":"自定义提示","meeting.templateName":"模板名称","meeting.templatePrompt":"AI 提示","meeting.templateSave":"保存模板","meeting.documentDeleted":"文档已删除","meeting.autoSaved":"已自动保存","meeting.minutesTemplate":"会议记录","meeting.reportTemplate":"报告","meeting.ideaNoteTemplate":"创意笔记","meeting.customTemplate":"自定义","meeting.downloadTranscript":"下载转录","meeting.polish":"AI 润色","meeting.polishing":"AI 正在润色转录...","meeting.polished":"AI 润色完成","meeting.mindmapTemplate":"思维导图","meeting.chat":"AI 聊天","meeting.chatPlaceholder":"询问关于会议的内容...","meeting.chatSend":"发送","meeting.chatClear":"清空聊天","meeting.copyToClipboard":"复制到剪贴板","meeting.copied":"已复制","meeting.chatCollapse":"收起聊天","meeting.chatExpand":"展开聊天","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI润色失败","meeting.viewDetailError":"无法加载会议详情","meeting.startRecordingError":"无法开始录音","meeting.diarize":"说话人分离","meeting.diarizing":"正在识别说话人...","meeting.diarizeComplete":"说话人分离完成","meeting.speaker":"说话人","settings.hfToken":"HuggingFace令牌","settings.hfTokenHint":"说话人分离需要HuggingFace令牌","settings.diarization":"说话人分离","settings.diarizationHint":"录音结束后自动识别说话人"}'),j=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"本地AI語音助手","nav.dashboard":"儀表板","nav.history":"歷史記錄","nav.dictionary":"辭典","nav.commands":"指令","nav.settings":"設定","dashboard.sessionOverview":"工作階段總覽","dashboard.systemStatus":"系統狀態","dashboard.sessionsToday":"今日工作階段","dashboard.pressToRecord":"按下 {{key}} 開始錄音","dashboard.hotkeyNotSet":"尚未設定熱鍵","dashboard.words":"字數","dashboard.total":"總計","dashboard.streak":"連續","dashboard.days":"天","dashboard.recording":"錄音","dashboard.sessions":"工作階段","dashboard.today":"今天","dashboard.recentTranscriptions":"最近轉錄","dashboard.noHistory":"尚無歷史記錄 — 按下熱鍵開始錄音","dashboard.copy":"複製","dashboard.entries":"{{count}}筆","dashboard.stat":"統計","dashboard.sys":"系統","history.title":"轉錄歷史","history.search":"搜尋...","history.entries":"{{count}}筆","history.loading":"載入中...","history.noResults":"無搜尋結果","history.noHistory":"尚無歷史記錄 — 請開始錄音","history.count":"{{count}}筆","dictionary.title":"自訂辭典","dictionary.words":"{{count}}個詞","dictionary.add":"新增","dictionary.search":"搜尋...","dictionary.loading":"載入中...","dictionary.noResults":"無搜尋結果","dictionary.noWords":"尚無詞條 — 新增自訂詞彙以提高STT識別精度","dictionary.used":"已使用{{count}}次","dictionary.editTitle":"編輯詞條","dictionary.addTitle":"新增詞條","dictionary.word":"詞彙","dictionary.pronunciation":"發音(選填)","commands.title":"LLM指令","commands.count":"{{count}}個","commands.add":"新增","commands.activeCommand":"目前指令","commands.none":"無","commands.loading":"載入中...","commands.noCommands":"尚無指令 — 點擊新增以建立","commands.editTitle":"編輯指令","commands.addTitle":"新增指令","commands.name":"名稱","commands.description":"說明","commands.promptTemplate":"提示詞範本","commands.promptHelp":"{{text}} 將被替換為轉錄的文字","commands.defaultPrompt":"請潤飾以下內容:{{text}}","settings.title":"設定","settings.tabs.general":"一般","settings.tabs.audio":"音訊","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"關於","settings.shortcuts":"快速鍵","settings.dictation":"聽寫","settings.dictation.desc":"按住鍵開始說話,放開鍵後開始轉錄。","settings.agent":"Agent模式","settings.agent.descWithKey":"連按兩下 {{key}} 進入Agent模式。","settings.agent.descNoKey":"請先設定聽寫熱鍵。","settings.oneTouch":"一鍵模式","settings.oneTouch.desc":"按下開始,再次按下停止。需要獨立的快速鍵。","settings.key":"按鍵","settings.notSet":"未設定","settings.enabled":"已啟用","settings.disabled":"已停用","settings.interface":"介面","settings.theme":"主題","settings.theme.system":"跟隨系統","settings.theme.light":"淺色","settings.theme.dark":"深色","settings.language":"語言","settings.appBehavior":"應用程式行為","settings.closeToTray":"最小化至系統匣","settings.autoLaunch":"開機時自動啟動","settings.autoInsert":"轉錄後自動插入文字","settings.soundEffects":"音效","settings.microphone":"麥克風","settings.inputDevice":"輸入裝置","settings.deviceDefault":"(預設)","settings.textInsert":"文字插入","settings.insertMethod":"插入方式","settings.insertClipboard":"剪貼簿(Ctrl+V)","settings.insertKeyboard":"鍵盤輸入","settings.whisperModel":"Whisper模型","settings.model.tiny":"tiny(39 MB,最快)","settings.model.base":"base(74 MB,均衡)","settings.model.small":"small(244 MB,良好)","settings.model.medium":"medium(769 MB,優秀)","settings.model.large":"large-v3(1.5 GB,最佳)","settings.sttLanguage":"識別語言","settings.sttLang.auto":"自動偵測","settings.ollamaServer":"Ollama伺服器","settings.ollamaUrl":"Ollama伺服器URL","settings.ollamaHint":"Ollama執行時將自動連線。請直接在Ollama中pull模型(例如:ollama pull qwen3:4b)。","settings.postProcess":"語音後處理","settings.defaultAction":"預設後處理指令","settings.action.none":"無(保留原始文字)","settings.action.refine":"潤飾(語法+流暢度)","settings.action.translate":"翻譯","settings.action.summarize":"摘要","settings.action.grammar":"語法校正","settings.action.custom":"自訂提示詞","settings.actionHint":"透過熱鍵錄音後,所選LLM後處理將套用至轉錄文字。僅在Ollama連線時有效。","settings.about.version":"版本","settings.about.techStack":"技術堆疊","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"語音引擎","settings.about.voiceEngineValue":"STT: faster-whisper(本地)/ LLM: Ollama(本地)","settings.about.description":"基於Speakly逆向工程經驗打造的本地AI語音助手,無需依賴雲端,完全在本地端執行。","settings.about.restartOnboarding":"重新檢視初始設定引導","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama尚未執行","status.nudge.desc":"使用LLM後處理(翻譯、摘要等)需要Ollama。","status.nudge.guide":"查看安裝指南 →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"無需打字,用聲音操作。本地AI語音助手。","onboarding.welcome.start":"開始","onboarding.mic.title":"麥克風設定","onboarding.mic.desc":"選擇要使用的麥克風,之後可在設定中更改。","onboarding.hotkey.title":"快速鍵設定","onboarding.hotkey.desc":"設定聽寫快速鍵,按住該鍵時進行錄音。","onboarding.hotkey.notSet":"尚未設定快速鍵","onboarding.hotkey.change":"變更快速鍵","onboarding.hotkey.set":"設定快速鍵","onboarding.ollama.title":"安裝Ollama(選填)","onboarding.ollama.desc":"使用翻譯、摘要等LLM後處理功能需要Ollama。語音聽寫本身無需Ollama即可使用。","onboarding.ollama.download":"下載Ollama","onboarding.ollama.modelHint":"安裝後在終端機中下載模型","onboarding.done.title":"設定完成!","onboarding.done.descWithKey":"按住 {{key}} 鍵說話,語音即可轉換為文字。","onboarding.done.descNoKey":"在設定中指定快速鍵後即可開始語音聽寫。","onboarding.done.start":"開始","onboarding.back":"返回","onboarding.next":"下一步","hotkey.title":"快速鍵設定","hotkey.dictationTitle":"設定聽寫快速鍵","hotkey.oneTouchTitle":"設定一鍵模式快速鍵","hotkey.prompt":"請按下按鍵組合...","hotkey.ready":"✓ {{keys}} — 請點擊儲存","hotkey.noKey":"請輸入按鍵","hotkey.reserved":"{{keys}} 是系統保留快速鍵","hotkey.current":"目前: {{keys}}","hotkey.hint":"請輸入組合鍵(例如:Ctrl+Shift+Q)或單一鍵(例如:F5)","hotkey.reset":"重新輸入","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"STEP 1 — 安裝Ollama","ollama.step1.desc":"Ollama是一款在本地端執行LLM的免費工具。","ollama.step2.title":"STEP 2 — 下載模型","ollama.step2.desc":"在終端機中pull所需模型。推薦繁體中文模型:","ollama.step2.alt":"或更大的模型:ollama pull qwen3:8b(更精準,速度較慢)","ollama.step3.title":"STEP 3 — 自動連線","ollama.step3.desc":"Ollama啟動後,D3RO-VOICE將自動偵測。底部狀態列的LED從紅色變為綠色即表示準備就緒!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"取消","common.save":"儲存","common.delete":"刪除","common.add":"新增","common.edit":"編輯","common.close":"關閉","common.confirm":"確認","common.loading":"載入中...","common.copy":"複製","common.test":"測試","common.stop":"停止","date.today":"今天","date.yesterday":"昨天","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"韓語","settings.sttLang.en":"English","settings.sttLang.ja":"日語","settings.sttLang.zh":"中文","template.outputHelperText":"使用 {{欄位名稱}} 作為佔位符","nav.meeting":"會議","meeting.title":"會議模式","meeting.newMeeting":"新增會議","meeting.startRecording":"開始錄音","meeting.stopRecording":"停止錄音","meeting.recording":"錄音中","meeting.processing":"正在產生會議記錄...","meeting.completed":"已完成","meeting.error":"錯誤","meeting.elapsed":"已用時","meeting.memoPlaceholder":"輸入備忘(Enter 新增)","meeting.memoAdded":"備忘已新增","meeting.noSessions":"暫無會議錄音","meeting.noSessionsDesc":"點擊「新增會議」開始錄音","meeting.summary":"摘要","meeting.decisions":"決議","meeting.actionItems":"待辦事項","meeting.timeline":"時間軸","meeting.transcript":"原始逐字稿","meeting.memos":"備忘","meeting.exportPdf":"匯出 PDF","meeting.exportMarkdown":"匯出 Markdown","meeting.delete":"刪除","meeting.deleteConfirm":"刪除此會議記錄?","meeting.backToList":"返回列表","meeting.notificationTitle":"會議記錄已就緒","meeting.notificationBody":"會議記錄已產生。","meeting.sessions":"{{count}} 場會議","meeting.duration":"{{minutes}} 分鐘","meeting.editTitle":"編輯標題","meeting.untitled":"無標題會議","meeting.processingStep.merging":"正在合併逐字稿...","meeting.processingStep.generating":"正在以 LLM 產生會議記錄...","meeting.processingStep.parsing":"正在解析會議記錄...","meeting.processingStep.saving":"正在儲存...","meeting.processingStep.notifying":"正在發送通知...","meeting.transcriptTab":"轉錄","meeting.addDocument":"新增文件","meeting.selectTemplate":"選擇範本","meeting.generate":"生成","meeting.generating":"正在生成文件...","meeting.editMode":"編輯","meeting.previewMode":"預覽","meeting.modified":"已修改","meeting.originalText":"原文","meeting.editedText":"編輯版","meeting.exportDocx":"匯出 DOCX","meeting.exportTxt":"匯出 TXT","meeting.exportFormat":"匯出","meeting.customPrompt":"自訂提示","meeting.templateName":"範本名稱","meeting.templatePrompt":"AI 提示","meeting.templateSave":"儲存範本","meeting.documentDeleted":"文件已刪除","meeting.autoSaved":"已自動儲存","meeting.minutesTemplate":"會議記錄","meeting.reportTemplate":"報告","meeting.ideaNoteTemplate":"創意筆記","meeting.customTemplate":"自訂","meeting.downloadTranscript":"下載轉錄","meeting.polish":"AI 潤飾","meeting.polishing":"AI 正在潤飾轉錄...","meeting.polished":"AI 潤飾完成","meeting.mindmapTemplate":"心智圖","meeting.chat":"AI 聊天","meeting.chatPlaceholder":"詢問有關會議的內容...","meeting.chatSend":"傳送","meeting.chatClear":"清空聊天","meeting.copyToClipboard":"複製到剪貼簿","meeting.copied":"已複製","meeting.chatCollapse":"收起聊天","meeting.chatExpand":"展開聊天","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI潤色失敗","meeting.viewDetailError":"無法載入會議詳情","meeting.startRecordingError":"無法開始錄音","meeting.diarize":"說話人分離","meeting.diarizing":"正在識別說話人...","meeting.diarizeComplete":"說話人分離完成","meeting.speaker":"說話人","settings.hfToken":"HuggingFace 令牌","settings.hfTokenHint":"說話人分離需要HuggingFace令牌","settings.diarization":"說話人分離","settings.diarizationHint":"錄音結束後自動識別說話人"}'),k=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Asistente de voz con IA local","nav.dashboard":"Panel","nav.history":"Historial","nav.dictionary":"Diccionario","nav.commands":"Comandos","nav.settings":"Ajustes","dashboard.sessionOverview":"Resumen de sesi\xf3n","dashboard.systemStatus":"Estado del sistema","dashboard.sessionsToday":"Sesiones hoy","dashboard.pressToRecord":"Pulsa {{key}} para empezar a grabar","dashboard.hotkeyNotSet":"Atajo no configurado","dashboard.words":"palabras","dashboard.total":"total","dashboard.streak":"racha","dashboard.days":"d\xedas","dashboard.recording":"grabando","dashboard.sessions":"sesiones","dashboard.today":"hoy","dashboard.recentTranscriptions":"Transcripciones recientes","dashboard.noHistory":"Sin historial — pulsa el atajo para empezar a grabar","dashboard.copy":"Copiar","dashboard.entries":"{{count}} entradas","dashboard.stat":"estad\xedsticas","dashboard.sys":"sistema","history.title":"Historial de transcripciones","history.search":"Buscar...","history.entries":"{{count}} entradas","history.loading":"Cargando...","history.noResults":"Sin resultados","history.noHistory":"Sin historial — empieza a grabar","history.count":"{{count}} entradas","dictionary.title":"Diccionario personalizado","dictionary.words":"{{count}} palabras","dictionary.add":"A\xf1adir","dictionary.search":"Buscar...","dictionary.loading":"Cargando...","dictionary.noResults":"Sin resultados","dictionary.noWords":"Sin palabras — a\xf1ade palabras personalizadas para mejorar la precisi\xf3n del STT","dictionary.used":"usado {{count}} veces","dictionary.editTitle":"Editar palabra","dictionary.addTitle":"A\xf1adir palabra","dictionary.word":"Palabra","dictionary.pronunciation":"Pronunciaci\xf3n (opcional)","commands.title":"Comandos LLM","commands.count":"{{count}} comandos","commands.add":"A\xf1adir","commands.activeCommand":"Comando activo","commands.none":"Ninguno","commands.loading":"Cargando...","commands.noCommands":"Sin comandos — haz clic en a\xf1adir para crear uno","commands.editTitle":"Editar comando","commands.addTitle":"A\xf1adir comando","commands.name":"Nombre","commands.description":"Descripci\xf3n","commands.promptTemplate":"Plantilla de prompt","commands.promptHelp":"{{text}} se reemplazar\xe1 por el texto transcrito","commands.defaultPrompt":"Por favor, mejora {{text}}.","settings.title":"Ajustes","settings.tabs.general":"General","settings.tabs.audio":"Audio","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"Acerca de","settings.shortcuts":"Atajos","settings.dictation":"Dictado","settings.dictation.desc":"Mant\xe9n pulsado para hablar. Al soltar, comienza la transcripci\xf3n.","settings.agent":"Modo agente","settings.agent.descWithKey":"Haz doble clic en {{key}} para entrar en el modo agente.","settings.agent.descNoKey":"Primero configura el atajo de dictado.","settings.oneTouch":"Modo un toque","settings.oneTouch.desc":"Pulsa para iniciar, pulsa de nuevo para detener. Requiere un atajo independiente.","settings.key":"Tecla","settings.notSet":"No configurado","settings.enabled":"Activado","settings.disabled":"Desactivado","settings.interface":"Interfaz","settings.theme":"Tema","settings.theme.system":"Sistema","settings.theme.light":"Claro","settings.theme.dark":"Oscuro","settings.language":"Idioma","settings.appBehavior":"Comportamiento de la app","settings.closeToTray":"Minimizar a la bandeja","settings.autoLaunch":"Iniciar con el sistema","settings.autoInsert":"Insertar texto autom\xe1ticamente tras transcripci\xf3n","settings.soundEffects":"Efectos de sonido","settings.microphone":"Micr\xf3fono","settings.inputDevice":"Dispositivo de entrada","settings.deviceDefault":"(predeterminado)","settings.textInsert":"Inserci\xf3n de texto","settings.insertMethod":"M\xe9todo de inserci\xf3n","settings.insertClipboard":"Portapapeles (Ctrl+V)","settings.insertKeyboard":"Escritura con teclado","settings.whisperModel":"Modelo Whisper","settings.model.tiny":"tiny (39 MB, m\xe1s r\xe1pido)","settings.model.base":"base (74 MB, equilibrado)","settings.model.small":"small (244 MB, bueno)","settings.model.medium":"medium (769 MB, muy bueno)","settings.model.large":"large-v3 (1.5 GB, mejor)","settings.sttLanguage":"Idioma de reconocimiento","settings.sttLang.auto":"Detecci\xf3n autom\xe1tica","settings.ollamaServer":"Servidor Ollama","settings.ollamaUrl":"URL del servidor Ollama","settings.ollamaHint":"D3RO Voice se conecta autom\xe1ticamente cuando Ollama est\xe1 en ejecuci\xf3n. Descarga modelos directamente desde Ollama (ej: ollama pull qwen3:4b).","settings.postProcess":"Postprocesado de voz","settings.defaultAction":"Acci\xf3n de postprocesado predeterminada","settings.action.none":"Ninguna (texto original sin cambios)","settings.action.refine":"Refinar (gram\xe1tica + naturalidad)","settings.action.translate":"Traducir","settings.action.summarize":"Resumir","settings.action.grammar":"Correcci\xf3n gramatical","settings.action.custom":"Prompt personalizado","settings.actionHint":"El postprocesado LLM seleccionado se aplica al texto transcrito tras grabar con el atajo. Solo funciona cuando Ollama est\xe1 conectado.","settings.about.version":"Versi\xf3n","settings.about.techStack":"Stack tecnol\xf3gico","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Motor de voz","settings.about.voiceEngineValue":"STT: faster-whisper (local) / LLM: Ollama (local)","settings.about.description":"Asistente de voz con IA completamente local, basado en ingenier\xeda inversa de Speakly. Funciona sin dependencias en la nube.","settings.about.restartOnboarding":"Ver gu\xeda de configuraci\xf3n inicial de nuevo","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama no est\xe1 en ejecuci\xf3n","status.nudge.desc":"Se necesita Ollama para el postprocesado LLM (traducci\xf3n, resumen, etc.).","status.nudge.guide":"Ver gu\xeda de instalaci\xf3n →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Sin escribir, con voz. Tu asistente de voz con IA local.","onboarding.welcome.start":"Comenzar","onboarding.mic.title":"Configurar micr\xf3fono","onboarding.mic.desc":"Selecciona el micr\xf3fono que quieres usar. Puedes cambiarlo m\xe1s tarde en los ajustes.","onboarding.hotkey.title":"Configurar atajo","onboarding.hotkey.desc":"Configura el atajo de dictado. Se grabar\xe1 mientras mantengas la tecla pulsada.","onboarding.hotkey.notSet":"No se ha configurado ning\xfan atajo","onboarding.hotkey.change":"Cambiar atajo","onboarding.hotkey.set":"Configurar atajo","onboarding.ollama.title":"Instalar Ollama (opcional)","onboarding.ollama.desc":"Se necesita Ollama para el postprocesado LLM como traducci\xf3n o resumen. El dictado de voz funciona sin Ollama.","onboarding.ollama.download":"Descargar Ollama","onboarding.ollama.modelHint":"Tras instalar, descarga un modelo desde la terminal","onboarding.done.title":"\xa1Configuraci\xf3n completa!","onboarding.done.descWithKey":"Mant\xe9n pulsado {{key}} y habla para convertir tu voz en texto.","onboarding.done.descNoKey":"Configura un atajo en los ajustes para empezar a dictar.","onboarding.done.start":"Comenzar","onboarding.back":"Atr\xe1s","onboarding.next":"Siguiente","hotkey.title":"Configurar atajo","hotkey.dictationTitle":"Configurar atajo de dictado","hotkey.oneTouchTitle":"Configurar atajo de modo un toque","hotkey.prompt":"Pulsa una combinaci\xf3n de teclas...","hotkey.ready":"✓ {{keys}} — pulsa guardar","hotkey.noKey":"Por favor, introduce una tecla","hotkey.reserved":"{{keys}} es un atajo reservado por el sistema","hotkey.current":"Actual: {{keys}}","hotkey.hint":"Introduce una combinaci\xf3n (ej: Ctrl+Shift+Q) o una tecla sola (ej: F5)","hotkey.reset":"Volver a introducir","ollama.title":"GU\xcdA DE CONFIGURACI\xd3N DE OLLAMA","ollama.step1.title":"PASO 1 — Instalar Ollama","ollama.step1.desc":"Ollama es una herramienta gratuita para ejecutar LLMs de forma local.","ollama.step2.title":"PASO 2 — Descargar un modelo","ollama.step2.desc":"Ejecuta el siguiente comando en la terminal para descargar el modelo recomendado:","ollama.step2.alt":"O un modelo m\xe1s grande: ollama pull qwen3:8b (m\xe1s preciso, m\xe1s lento)","ollama.step3.title":"PASO 3 — Conexi\xf3n autom\xe1tica","ollama.step3.desc":"D3RO-VOICE detecta autom\xe1ticamente cuando Ollama est\xe1 en ejecuci\xf3n. Cuando el LED de la barra de estado pase de rojo a verde, \xa1estar\xe1 listo!","service.sttEngine":"MOTOR STT","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"ATAJO DE TECLADO","service.audioInput":"ENTRADA DE AUDIO","service.ready":"LISTO","service.connected":"CONECTADO","service.offline":"OFFLINE","service.active":"ACTIVO","service.standby":"EN ESPERA","common.cancel":"Cancelar","common.save":"Guardar","common.delete":"Eliminar","common.add":"A\xf1adir","common.edit":"Editar","common.close":"Cerrar","common.confirm":"Confirmar","common.loading":"Cargando...","common.copy":"Copiar","common.test":"Probar","common.stop":"Detener","date.today":"Hoy","date.yesterday":"Ayer","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Coreano","settings.sttLang.en":"Ingl\xe9s","settings.sttLang.ja":"Japon\xe9s","settings.sttLang.zh":"Chino","template.outputHelperText":"Use {{nombreCampo}} para marcadores de posici\xf3n","nav.meeting":"Reuni\xf3n","meeting.title":"Modo Reuni\xf3n","meeting.newMeeting":"Nueva Reuni\xf3n","meeting.startRecording":"Iniciar Grabaci\xf3n","meeting.stopRecording":"Detener Grabaci\xf3n","meeting.recording":"Grabando","meeting.processing":"Generando actas...","meeting.completed":"Completado","meeting.error":"Error","meeting.elapsed":"Tiempo transcurrido","meeting.memoPlaceholder":"Escribe un memo (Enter para a\xf1adir)","meeting.memoAdded":"Memo a\xf1adido","meeting.noSessions":"Sin grabaciones de reuniones","meeting.noSessionsDesc":"Pulsa Nueva Reuni\xf3n para empezar a grabar","meeting.summary":"Resumen","meeting.decisions":"Decisiones","meeting.actionItems":"Tareas","meeting.timeline":"L\xednea de tiempo","meeting.transcript":"Transcripci\xf3n bruta","meeting.memos":"Memos","meeting.exportPdf":"Exportar PDF","meeting.exportMarkdown":"Exportar Markdown","meeting.delete":"Eliminar","meeting.deleteConfirm":"\xbfEliminar este registro de reuni\xf3n?","meeting.backToList":"Volver a la lista","meeting.notificationTitle":"Actas listas","meeting.notificationBody":"Las actas de la reuni\xf3n han sido generadas.","meeting.sessions":"{{count}} sesiones","meeting.duration":"{{minutes}} min","meeting.editTitle":"Editar t\xedtulo","meeting.untitled":"Reuni\xf3n sin t\xedtulo","meeting.processingStep.merging":"Fusionando transcripci\xf3n...","meeting.processingStep.generating":"Generando actas con LLM...","meeting.processingStep.parsing":"Analizando actas...","meeting.processingStep.saving":"Guardando...","meeting.processingStep.notifying":"Enviando notificaci\xf3n...","meeting.transcriptTab":"Transcripci\xf3n","meeting.addDocument":"Agregar documento","meeting.selectTemplate":"Seleccionar plantilla","meeting.generate":"Generar","meeting.generating":"Generando documento...","meeting.editMode":"Editar","meeting.previewMode":"Vista previa","meeting.modified":"Modificado","meeting.originalText":"Original","meeting.editedText":"Editado","meeting.exportDocx":"Exportar DOCX","meeting.exportTxt":"Exportar TXT","meeting.exportFormat":"Exportar","meeting.customPrompt":"Prompt personalizado","meeting.templateName":"Nombre de plantilla","meeting.templatePrompt":"Prompt de IA","meeting.templateSave":"Guardar plantilla","meeting.documentDeleted":"Documento eliminado","meeting.autoSaved":"Guardado autom\xe1ticamente","meeting.minutesTemplate":"Actas de reuni\xf3n","meeting.reportTemplate":"Informe","meeting.ideaNoteTemplate":"Nota de ideas","meeting.customTemplate":"Personalizado","meeting.downloadTranscript":"Descargar transcripci\xf3n","meeting.polish":"Pulir con IA","meeting.polishing":"IA puliendo transcripci\xf3n...","meeting.polished":"Pulido con IA completado","meeting.mindmapTemplate":"Mapa mental","meeting.chat":"Chat IA","meeting.chatPlaceholder":"Pregunta sobre la reuni\xf3n...","meeting.chatSend":"Enviar","meeting.chatClear":"Limpiar chat","meeting.copyToClipboard":"Copiar al portapapeles","meeting.copied":"Copiado","meeting.chatCollapse":"Contraer chat","meeting.chatExpand":"Expandir chat","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"Error al pulir con IA","meeting.viewDetailError":"Error al cargar detalles de la reuni\xf3n","meeting.startRecordingError":"Error al iniciar la grabaci\xf3n","meeting.diarize":"Identificar hablantes","meeting.diarizing":"Identificando hablantes...","meeting.diarizeComplete":"Identificaci\xf3n completada","meeting.speaker":"Hablante","settings.hfToken":"Token de HuggingFace","settings.hfTokenHint":"Se necesita un token de HuggingFace para identificar hablantes","settings.diarization":"Identificaci\xf3n de hablantes","settings.diarizationHint":"Identifica autom\xe1ticamente los hablantes al finalizar la grabaci\xf3n"}'),l=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Assistant vocal IA local","nav.dashboard":"Tableau de bord","nav.history":"Historique","nav.dictionary":"Dictionnaire","nav.commands":"Commandes","nav.settings":"Param\xe8tres","dashboard.sessionOverview":"Aper\xe7u de session","dashboard.systemStatus":"\xc9tat du syst\xe8me","dashboard.sessionsToday":"Sessions aujourd\'hui","dashboard.pressToRecord":"Appuyez sur {{key}} pour commencer l\'enregistrement","dashboard.hotkeyNotSet":"Raccourci non configur\xe9","dashboard.words":"mots","dashboard.total":"total","dashboard.streak":"s\xe9rie","dashboard.days":"jours","dashboard.recording":"enregistrement","dashboard.sessions":"sessions","dashboard.today":"aujourd\'hui","dashboard.recentTranscriptions":"Transcriptions r\xe9centes","dashboard.noHistory":"Aucun historique — appuyez sur le raccourci pour commencer \xe0 enregistrer","dashboard.copy":"Copier","dashboard.entries":"{{count}} entr\xe9es","dashboard.stat":"statistiques","dashboard.sys":"syst\xe8me","history.title":"Historique des transcriptions","history.search":"Rechercher...","history.entries":"{{count}} entr\xe9es","history.loading":"Chargement...","history.noResults":"Aucun r\xe9sultat","history.noHistory":"Aucun historique — commencez \xe0 enregistrer","history.count":"{{count}} entr\xe9es","dictionary.title":"Dictionnaire personnalis\xe9","dictionary.words":"{{count}} mots","dictionary.add":"Ajouter","dictionary.search":"Rechercher...","dictionary.loading":"Chargement...","dictionary.noResults":"Aucun r\xe9sultat","dictionary.noWords":"Aucun mot — ajoutez des mots personnalis\xe9s pour am\xe9liorer la pr\xe9cision du STT","dictionary.used":"utilis\xe9 {{count}} fois","dictionary.editTitle":"Modifier le mot","dictionary.addTitle":"Ajouter un mot","dictionary.word":"Mot","dictionary.pronunciation":"Prononciation (facultatif)","commands.title":"Commandes LLM","commands.count":"{{count}} commandes","commands.add":"Ajouter","commands.activeCommand":"Commande active","commands.none":"Aucune","commands.loading":"Chargement...","commands.noCommands":"Aucune commande — cliquez sur ajouter pour en cr\xe9er une","commands.editTitle":"Modifier la commande","commands.addTitle":"Ajouter une commande","commands.name":"Nom","commands.description":"Description","commands.promptTemplate":"Mod\xe8le de prompt","commands.promptHelp":"{{text}} sera remplac\xe9 par le texte transcrit","commands.defaultPrompt":"Veuillez am\xe9liorer {{text}}.","settings.title":"Param\xe8tres","settings.tabs.general":"G\xe9n\xe9ral","settings.tabs.audio":"Audio","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"\xc0 propos","settings.shortcuts":"Raccourcis","settings.dictation":"Dict\xe9e","settings.dictation.desc":"Maintenez enfonc\xe9 pour parler. La transcription d\xe9marre au rel\xe2chement.","settings.agent":"Mode agent","settings.agent.descWithKey":"Double-cliquez sur {{key}} pour entrer en mode agent.","settings.agent.descNoKey":"Configurez d\'abord le raccourci de dict\xe9e.","settings.oneTouch":"Mode une touche","settings.oneTouch.desc":"Appuyez pour d\xe9marrer, appuyez \xe0 nouveau pour arr\xeater. N\xe9cessite un raccourci distinct.","settings.key":"Touche","settings.notSet":"Non configur\xe9","settings.enabled":"Activ\xe9","settings.disabled":"D\xe9sactiv\xe9","settings.interface":"Interface","settings.theme":"Th\xe8me","settings.theme.system":"Syst\xe8me","settings.theme.light":"Clair","settings.theme.dark":"Sombre","settings.language":"Langue","settings.appBehavior":"Comportement de l\'application","settings.closeToTray":"R\xe9duire dans la barre syst\xe8me","settings.autoLaunch":"Lancer au d\xe9marrage du syst\xe8me","settings.autoInsert":"Ins\xe9rer le texte automatiquement apr\xe8s la transcription","settings.soundEffects":"Effets sonores","settings.microphone":"Microphone","settings.inputDevice":"P\xe9riph\xe9rique d\'entr\xe9e","settings.deviceDefault":"(par d\xe9faut)","settings.textInsert":"Insertion de texte","settings.insertMethod":"M\xe9thode d\'insertion","settings.insertClipboard":"Presse-papiers (Ctrl+V)","settings.insertKeyboard":"Frappe au clavier","settings.whisperModel":"Mod\xe8le Whisper","settings.model.tiny":"tiny (39 Mo, le plus rapide)","settings.model.base":"base (74 Mo, \xe9quilibr\xe9)","settings.model.small":"small (244 Mo, bon)","settings.model.medium":"medium (769 Mo, tr\xe8s bon)","settings.model.large":"large-v3 (1,5 Go, meilleur)","settings.sttLanguage":"Langue de reconnaissance","settings.sttLang.auto":"D\xe9tection automatique","settings.ollamaServer":"Serveur Ollama","settings.ollamaUrl":"URL du serveur Ollama","settings.ollamaHint":"D3RO Voice se connecte automatiquement quand Ollama est en cours d\'ex\xe9cution. T\xe9l\xe9chargez les mod\xe8les directement depuis Ollama (ex : ollama pull qwen3:4b).","settings.postProcess":"Post-traitement vocal","settings.defaultAction":"Action de post-traitement par d\xe9faut","settings.action.none":"Aucune (texte original inchang\xe9)","settings.action.refine":"Affiner (grammaire + naturel)","settings.action.translate":"Traduire","settings.action.summarize":"R\xe9sumer","settings.action.grammar":"Correction grammaticale","settings.action.custom":"Prompt personnalis\xe9","settings.actionHint":"Le post-traitement LLM s\xe9lectionn\xe9 est appliqu\xe9 au texte transcrit apr\xe8s l\'enregistrement avec le raccourci. Ne fonctionne que lorsque Ollama est connect\xe9.","settings.about.version":"Version","settings.about.techStack":"Stack technologique","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Moteur vocal","settings.about.voiceEngineValue":"STT : faster-whisper (local) / LLM : Ollama (local)","settings.about.description":"Assistant vocal IA enti\xe8rement local, bas\xe9 sur l\'ing\xe9nierie inverse de Speakly. Fonctionne sans d\xe9pendance au cloud.","settings.about.restartOnboarding":"Revoir le guide de configuration initiale","status.ollama":"OLLAMA","status.offline":"HORS LIGNE","status.nudge.title":"Ollama n\'est pas en cours d\'ex\xe9cution","status.nudge.desc":"Ollama est n\xe9cessaire pour le post-traitement LLM (traduction, r\xe9sum\xe9, etc.).","status.nudge.guide":"Voir le guide d\'installation →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Sans taper, par la voix. Votre assistant vocal IA local.","onboarding.welcome.start":"Commencer","onboarding.mic.title":"Configuration du microphone","onboarding.mic.desc":"S\xe9lectionnez le microphone que vous souhaitez utiliser. Vous pourrez le modifier plus tard dans les param\xe8tres.","onboarding.hotkey.title":"Configuration du raccourci","onboarding.hotkey.desc":"Configurez le raccourci de dict\xe9e. L\'enregistrement dure tant que vous maintenez la touche enfonc\xe9e.","onboarding.hotkey.notSet":"Aucun raccourci configur\xe9","onboarding.hotkey.change":"Modifier le raccourci","onboarding.hotkey.set":"Configurer le raccourci","onboarding.ollama.title":"Installer Ollama (facultatif)","onboarding.ollama.desc":"Ollama est n\xe9cessaire pour le post-traitement LLM comme la traduction ou le r\xe9sum\xe9. La dict\xe9e vocale fonctionne sans Ollama.","onboarding.ollama.download":"T\xe9l\xe9charger Ollama","onboarding.ollama.modelHint":"Apr\xe8s l\'installation, t\xe9l\xe9chargez un mod\xe8le depuis le terminal","onboarding.done.title":"Configuration termin\xe9e !","onboarding.done.descWithKey":"Maintenez {{key}} enfonc\xe9 et parlez pour convertir votre voix en texte.","onboarding.done.descNoKey":"Configurez un raccourci dans les param\xe8tres pour commencer la dict\xe9e.","onboarding.done.start":"Commencer","onboarding.back":"Retour","onboarding.next":"Suivant","hotkey.title":"Configurer le raccourci","hotkey.dictationTitle":"Configurer le raccourci de dict\xe9e","hotkey.oneTouchTitle":"Configurer le raccourci du mode une touche","hotkey.prompt":"Appuyez sur une combinaison de touches...","hotkey.ready":"✓ {{keys}} — appuyez sur enregistrer","hotkey.noKey":"Veuillez saisir une touche","hotkey.reserved":"{{keys}} est un raccourci r\xe9serv\xe9 par le syst\xe8me","hotkey.current":"Actuel : {{keys}}","hotkey.hint":"Saisissez une combinaison (ex : Ctrl+Shift+Q) ou une touche seule (ex : F5)","hotkey.reset":"Ressaisir","ollama.title":"GUIDE DE CONFIGURATION OLLAMA","ollama.step1.title":"\xc9TAPE 1 — Installer Ollama","ollama.step1.desc":"Ollama est un outil gratuit pour ex\xe9cuter des LLM en local.","ollama.step2.title":"\xc9TAPE 2 — T\xe9l\xe9charger un mod\xe8le","ollama.step2.desc":"Ex\xe9cutez la commande suivante dans le terminal pour t\xe9l\xe9charger le mod\xe8le recommand\xe9 :","ollama.step2.alt":"Ou un mod\xe8le plus grand : ollama pull qwen3:8b (plus pr\xe9cis, plus lent)","ollama.step3.title":"\xc9TAPE 3 — Connexion automatique","ollama.step3.desc":"D3RO-VOICE d\xe9tecte automatiquement quand Ollama est en cours d\'ex\xe9cution. Quand la LED de la barre d\'\xe9tat passe du rouge au vert, c\'est pr\xeat !","service.sttEngine":"MOTEUR STT","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"RACCOURCI CLAVIER","service.audioInput":"ENTR\xc9E AUDIO","service.ready":"PR\xcaT","service.connected":"CONNECT\xc9","service.offline":"HORS LIGNE","service.active":"ACTIF","service.standby":"EN VEILLE","common.cancel":"Annuler","common.save":"Enregistrer","common.delete":"Supprimer","common.add":"Ajouter","common.edit":"Modifier","common.close":"Fermer","common.confirm":"Confirmer","common.loading":"Chargement...","common.copy":"Copier","common.test":"Tester","common.stop":"Arr\xeater","date.today":"Aujourd\'hui","date.yesterday":"Hier","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Cor\xe9en","settings.sttLang.en":"Anglais","settings.sttLang.ja":"Japonais","settings.sttLang.zh":"Chinois","template.outputHelperText":"Utilisez {{nomChamp}} pour les espaces r\xe9serv\xe9s","nav.meeting":"R\xe9union","meeting.title":"Mode R\xe9union","meeting.newMeeting":"Nouvelle R\xe9union","meeting.startRecording":"D\xe9marrer l\'enregistrement","meeting.stopRecording":"Arr\xeater l\'enregistrement","meeting.recording":"Enregistrement en cours","meeting.processing":"G\xe9n\xe9ration du compte-rendu...","meeting.completed":"Termin\xe9","meeting.error":"Erreur","meeting.elapsed":"Temps \xe9coul\xe9","meeting.memoPlaceholder":"Saisir un m\xe9mo (Entr\xe9e pour ajouter)","meeting.memoAdded":"M\xe9mo ajout\xe9","meeting.noSessions":"Aucun enregistrement de r\xe9union","meeting.noSessionsDesc":"Appuyez sur Nouvelle R\xe9union pour commencer l\'enregistrement","meeting.summary":"R\xe9sum\xe9","meeting.decisions":"D\xe9cisions","meeting.actionItems":"Actions \xe0 mener","meeting.timeline":"Chronologie","meeting.transcript":"Transcription brute","meeting.memos":"M\xe9mos","meeting.exportPdf":"Exporter en PDF","meeting.exportMarkdown":"Exporter en Markdown","meeting.delete":"Supprimer","meeting.deleteConfirm":"Supprimer cet enregistrement de r\xe9union ?","meeting.backToList":"Retour \xe0 la liste","meeting.notificationTitle":"Compte-rendu pr\xeat","meeting.notificationBody":"Le compte-rendu de la r\xe9union a \xe9t\xe9 g\xe9n\xe9r\xe9.","meeting.sessions":"{{count}} s\xe9ances","meeting.duration":"{{minutes}} min","meeting.editTitle":"Modifier le titre","meeting.untitled":"R\xe9union sans titre","meeting.processingStep.merging":"Fusion de la transcription...","meeting.processingStep.generating":"G\xe9n\xe9ration du compte-rendu avec LLM...","meeting.processingStep.parsing":"Analyse du compte-rendu...","meeting.processingStep.saving":"Enregistrement...","meeting.processingStep.notifying":"Envoi de la notification...","meeting.transcriptTab":"Transcription","meeting.addDocument":"Ajouter un document","meeting.selectTemplate":"Choisir un mod\xe8le","meeting.generate":"G\xe9n\xe9rer","meeting.generating":"G\xe9n\xe9ration du document...","meeting.editMode":"\xc9diter","meeting.previewMode":"Aper\xe7u","meeting.modified":"Modifi\xe9","meeting.originalText":"Original","meeting.editedText":"\xc9dit\xe9","meeting.exportDocx":"Exporter DOCX","meeting.exportTxt":"Exporter TXT","meeting.exportFormat":"Exporter","meeting.customPrompt":"Invite personnalis\xe9e","meeting.templateName":"Nom du mod\xe8le","meeting.templatePrompt":"Invite IA","meeting.templateSave":"Sauvegarder le mod\xe8le","meeting.documentDeleted":"Document supprim\xe9","meeting.autoSaved":"Sauvegarde automatique","meeting.minutesTemplate":"Compte-rendu","meeting.reportTemplate":"Rapport","meeting.ideaNoteTemplate":"Note d\'id\xe9es","meeting.customTemplate":"Personnalis\xe9","meeting.downloadTranscript":"T\xe9l\xe9charger la transcription","meeting.polish":"Peaufiner avec IA","meeting.polishing":"L\'IA peaufine la transcription...","meeting.polished":"Peaufinement IA termin\xe9","meeting.mindmapTemplate":"Carte mentale","meeting.chat":"Chat IA","meeting.chatPlaceholder":"Posez une question sur la r\xe9union...","meeting.chatSend":"Envoyer","meeting.chatClear":"Effacer le chat","meeting.copyToClipboard":"Copier dans le presse-papiers","meeting.copied":"Copi\xe9","meeting.chatCollapse":"R\xe9duire le chat","meeting.chatExpand":"Agrandir le chat","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"Echec du polish IA","meeting.viewDetailError":"Impossible de charger les d\xe9tails de la r\xe9union","meeting.startRecordingError":"Impossible de d\xe9marrer l\'enregistrement","meeting.diarize":"Identifier les locuteurs","meeting.diarizing":"Identification des locuteurs...","meeting.diarizeComplete":"Identification termin\xe9e","meeting.speaker":"Locuteur","settings.hfToken":"Token HuggingFace","settings.hfTokenHint":"Un token HuggingFace est requis pour l\'identification des locuteurs","settings.diarization":"Identification des locuteurs","settings.diarizationHint":"Identifier automatiquement les locuteurs apr\xe8s l\'enregistrement"}'),m=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Lokaler KI-Sprachassistent","nav.dashboard":"Dashboard","nav.history":"Verlauf","nav.dictionary":"W\xf6rterbuch","nav.commands":"Befehle","nav.settings":"Einstellungen","dashboard.sessionOverview":"Sitzungs\xfcbersicht","dashboard.systemStatus":"Systemstatus","dashboard.sessionsToday":"Sitzungen heute","dashboard.pressToRecord":"Dr\xfccke {{key}}, um die Aufnahme zu starten","dashboard.hotkeyNotSet":"Tastenk\xfcrzel nicht festgelegt","dashboard.words":"W\xf6rter","dashboard.total":"gesamt","dashboard.streak":"Serie","dashboard.days":"Tage","dashboard.recording":"Aufnahme","dashboard.sessions":"Sitzungen","dashboard.today":"heute","dashboard.recentTranscriptions":"Letzte Transkriptionen","dashboard.noHistory":"Kein Verlauf — dr\xfccke das Tastenk\xfcrzel, um die Aufnahme zu starten","dashboard.copy":"Kopieren","dashboard.entries":"{{count}} Eintr\xe4ge","dashboard.stat":"Statistiken","dashboard.sys":"System","history.title":"Transkriptionsverlauf","history.search":"Suchen...","history.entries":"{{count}} Eintr\xe4ge","history.loading":"Laden...","history.noResults":"Keine Ergebnisse","history.noHistory":"Kein Verlauf — starte eine Aufnahme","history.count":"{{count}} Eintr\xe4ge","dictionary.title":"Benutzerw\xf6rterbuch","dictionary.words":"{{count}} W\xf6rter","dictionary.add":"Hinzuf\xfcgen","dictionary.search":"Suchen...","dictionary.loading":"Laden...","dictionary.noResults":"Keine Ergebnisse","dictionary.noWords":"Keine W\xf6rter — f\xfcge benutzerdefinierte W\xf6rter hinzu, um die STT-Genauigkeit zu verbessern","dictionary.used":"{{count}} Mal verwendet","dictionary.editTitle":"Wort bearbeiten","dictionary.addTitle":"Wort hinzuf\xfcgen","dictionary.word":"Wort","dictionary.pronunciation":"Aussprache (optional)","commands.title":"LLM-Befehle","commands.count":"{{count}} Befehle","commands.add":"Hinzuf\xfcgen","commands.activeCommand":"Aktiver Befehl","commands.none":"Keiner","commands.loading":"Laden...","commands.noCommands":"Keine Befehle — klicke auf Hinzuf\xfcgen, um einen zu erstellen","commands.editTitle":"Befehl bearbeiten","commands.addTitle":"Befehl hinzuf\xfcgen","commands.name":"Name","commands.description":"Beschreibung","commands.promptTemplate":"Prompt-Vorlage","commands.promptHelp":"{{text}} wird durch den transkribierten Text ersetzt","commands.defaultPrompt":"Bitte verbessere {{text}}.","settings.title":"Einstellungen","settings.tabs.general":"Allgemein","settings.tabs.audio":"Audio","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"\xdcber","settings.shortcuts":"Tastenk\xfcrzel","settings.dictation":"Diktat","settings.dictation.desc":"Gedr\xfcckt halten zum Sprechen. Die Transkription beginnt beim Loslassen.","settings.agent":"Agentenmodus","settings.agent.descWithKey":"Doppelklick auf {{key}}, um den Agentenmodus aufzurufen.","settings.agent.descNoKey":"Lege zuerst das Diktat-Tastenk\xfcrzel fest.","settings.oneTouch":"Ein-Tasten-Modus","settings.oneTouch.desc":"Dr\xfccken zum Starten, erneut dr\xfccken zum Beenden. Erfordert ein eigenes Tastenk\xfcrzel.","settings.key":"Taste","settings.notSet":"Nicht festgelegt","settings.enabled":"Aktiviert","settings.disabled":"Deaktiviert","settings.interface":"Oberfl\xe4che","settings.theme":"Design","settings.theme.system":"System","settings.theme.light":"Hell","settings.theme.dark":"Dunkel","settings.language":"Sprache","settings.appBehavior":"App-Verhalten","settings.closeToTray":"In Systembereich minimieren","settings.autoLaunch":"Beim Systemstart automatisch starten","settings.autoInsert":"Text nach der Transkription automatisch einf\xfcgen","settings.soundEffects":"Soundeffekte","settings.microphone":"Mikrofon","settings.inputDevice":"Eingabeger\xe4t","settings.deviceDefault":"(Standard)","settings.textInsert":"Texteinf\xfcgung","settings.insertMethod":"Einf\xfcgemethode","settings.insertClipboard":"Zwischenablage (Ctrl+V)","settings.insertKeyboard":"Tastatureingabe","settings.whisperModel":"Whisper-Modell","settings.model.tiny":"tiny (39 MB, am schnellsten)","settings.model.base":"base (74 MB, ausgewogen)","settings.model.small":"small (244 MB, gut)","settings.model.medium":"medium (769 MB, sehr gut)","settings.model.large":"large-v3 (1,5 GB, beste Qualit\xe4t)","settings.sttLanguage":"Erkennungssprache","settings.sttLang.auto":"Automatische Erkennung","settings.ollamaServer":"Ollama-Server","settings.ollamaUrl":"Ollama-Server-URL","settings.ollamaHint":"D3RO Voice verbindet sich automatisch, wenn Ollama l\xe4uft. Lade Modelle direkt \xfcber Ollama herunter (z. B.: ollama pull qwen3:4b).","settings.postProcess":"Sprachnachbearbeitung","settings.defaultAction":"Standard-Nachbearbeitungsaktion","settings.action.none":"Keine (Originaltext unver\xe4ndert)","settings.action.refine":"Verfeinern (Grammatik + Nat\xfcrlichkeit)","settings.action.translate":"\xdcbersetzen","settings.action.summarize":"Zusammenfassen","settings.action.grammar":"Grammatikkorrektur","settings.action.custom":"Benutzerdefinierter Prompt","settings.actionHint":"Die gew\xe4hlte LLM-Nachbearbeitung wird auf den transkribierten Text angewendet, nachdem mit dem Tastenk\xfcrzel aufgenommen wurde. Funktioniert nur, wenn Ollama verbunden ist.","settings.about.version":"Version","settings.about.techStack":"Tech-Stack","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Sprach-Engine","settings.about.voiceEngineValue":"STT: faster-whisper (lokal) / LLM: Ollama (lokal)","settings.about.description":"Vollst\xe4ndig lokaler KI-Sprachassistent, basierend auf Reverse Engineering von Speakly. Funktioniert ohne Cloud-Abh\xe4ngigkeiten.","settings.about.restartOnboarding":"Einrichtungsanleitung erneut anzeigen","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama l\xe4uft nicht","status.nudge.desc":"Ollama wird f\xfcr die LLM-Nachbearbeitung (\xdcbersetzung, Zusammenfassung usw.) ben\xf6tigt.","status.nudge.guide":"Installationsanleitung anzeigen →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Ohne Tippen, per Sprache. Dein lokaler KI-Sprachassistent.","onboarding.welcome.start":"Loslegen","onboarding.mic.title":"Mikrofon einrichten","onboarding.mic.desc":"W\xe4hle das Mikrofon aus, das du verwenden m\xf6chtest. Du kannst es sp\xe4ter in den Einstellungen \xe4ndern.","onboarding.hotkey.title":"Tastenk\xfcrzel einrichten","onboarding.hotkey.desc":"Lege das Diktat-Tastenk\xfcrzel fest. Die Aufnahme l\xe4uft, solange du die Taste gedr\xfcckt h\xe4ltst.","onboarding.hotkey.notSet":"Kein Tastenk\xfcrzel festgelegt","onboarding.hotkey.change":"Tastenk\xfcrzel \xe4ndern","onboarding.hotkey.set":"Tastenk\xfcrzel festlegen","onboarding.ollama.title":"Ollama installieren (optional)","onboarding.ollama.desc":"Ollama wird f\xfcr die LLM-Nachbearbeitung wie \xdcbersetzung oder Zusammenfassung ben\xf6tigt. Die Sprachdiktierung funktioniert ohne Ollama.","onboarding.ollama.download":"Ollama herunterladen","onboarding.ollama.modelHint":"Lade nach der Installation ein Modell \xfcber das Terminal herunter","onboarding.done.title":"Einrichtung abgeschlossen!","onboarding.done.descWithKey":"Halte {{key}} gedr\xfcckt und sprich, um deine Stimme in Text umzuwandeln.","onboarding.done.descNoKey":"Lege in den Einstellungen ein Tastenk\xfcrzel fest, um mit der Spracheingabe zu beginnen.","onboarding.done.start":"Loslegen","onboarding.back":"Zur\xfcck","onboarding.next":"Weiter","hotkey.title":"Tastenk\xfcrzel einrichten","hotkey.dictationTitle":"Diktat-Tastenk\xfcrzel einrichten","hotkey.oneTouchTitle":"Tastenk\xfcrzel f\xfcr Ein-Tasten-Modus einrichten","hotkey.prompt":"Dr\xfccke eine Tastenkombination...","hotkey.ready":"✓ {{keys}} — dr\xfccke Speichern","hotkey.noKey":"Bitte gib eine Taste ein","hotkey.reserved":"{{keys}} ist ein vom System reserviertes Tastenk\xfcrzel","hotkey.current":"Aktuell: {{keys}}","hotkey.hint":"Gib eine Kombination (z. B. Ctrl+Shift+Q) oder eine einzelne Taste (z. B. F5) ein","hotkey.reset":"Erneut eingeben","ollama.title":"OLLAMA EINRICHTUNGSANLEITUNG","ollama.step1.title":"SCHRITT 1 — Ollama installieren","ollama.step1.desc":"Ollama ist ein kostenloses Tool zum lokalen Ausf\xfchren von LLMs.","ollama.step2.title":"SCHRITT 2 — Modell herunterladen","ollama.step2.desc":"F\xfchre den folgenden Befehl im Terminal aus, um das empfohlene Modell herunterzuladen:","ollama.step2.alt":"Oder ein gr\xf6\xdferes Modell: ollama pull qwen3:8b (genauer, langsamer)","ollama.step3.title":"SCHRITT 3 — Automatische Verbindung","ollama.step3.desc":"D3RO-VOICE erkennt automatisch, wenn Ollama l\xe4uft. Wenn die LED in der Statusleiste von Rot auf Gr\xfcn wechselt, ist alles bereit!","service.sttEngine":"STT-ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"TASTENK\xdcRZEL","service.audioInput":"AUDIOEINGABE","service.ready":"BEREIT","service.connected":"VERBUNDEN","service.offline":"OFFLINE","service.active":"AKTIV","service.standby":"BEREITSCHAFT","common.cancel":"Abbrechen","common.save":"Speichern","common.delete":"L\xf6schen","common.add":"Hinzuf\xfcgen","common.edit":"Bearbeiten","common.close":"Schlie\xdfen","common.confirm":"Best\xe4tigen","common.loading":"Laden...","common.copy":"Kopieren","common.test":"Testen","common.stop":"Stoppen","date.today":"Heute","date.yesterday":"Gestern","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Koreanisch","settings.sttLang.en":"Englisch","settings.sttLang.ja":"Japanisch","settings.sttLang.zh":"Chinesisch","template.outputHelperText":"Verwenden Sie {{Feldname}} f\xfcr Platzhalter","nav.meeting":"Meeting","meeting.title":"Meeting-Modus","meeting.newMeeting":"Neues Meeting","meeting.startRecording":"Aufnahme starten","meeting.stopRecording":"Aufnahme beenden","meeting.recording":"Aufnahme l\xe4uft","meeting.processing":"Protokoll wird erstellt...","meeting.completed":"Abgeschlossen","meeting.error":"Fehler","meeting.elapsed":"Vergangen","meeting.memoPlaceholder":"Memo eingeben (Enter zum Hinzuf\xfcgen)","meeting.memoAdded":"Memo hinzugef\xfcgt","meeting.noSessions":"Keine Meeting-Aufnahmen","meeting.noSessionsDesc":"Dr\xfccke \xabNeues Meeting\xbb, um die Aufnahme zu starten","meeting.summary":"Zusammenfassung","meeting.decisions":"Beschl\xfcsse","meeting.actionItems":"Aufgaben","meeting.timeline":"Zeitlinie","meeting.transcript":"Rohtranskript","meeting.memos":"Memos","meeting.exportPdf":"Als PDF exportieren","meeting.exportMarkdown":"Als Markdown exportieren","meeting.delete":"L\xf6schen","meeting.deleteConfirm":"Diesen Meeting-Eintrag l\xf6schen?","meeting.backToList":"Zur\xfcck zur Liste","meeting.notificationTitle":"Protokoll fertig","meeting.notificationBody":"Das Meeting-Protokoll wurde erstellt.","meeting.sessions":"{{count}} Sitzungen","meeting.duration":"{{minutes}} Min.","meeting.editTitle":"Titel bearbeiten","meeting.untitled":"Meeting ohne Titel","meeting.processingStep.merging":"Transkript zusammenf\xfchren...","meeting.processingStep.generating":"Protokoll mit LLM erstellen...","meeting.processingStep.parsing":"Protokoll analysieren...","meeting.processingStep.saving":"Speichern...","meeting.processingStep.notifying":"Benachrichtigung senden...","meeting.transcriptTab":"Transkript","meeting.addDocument":"Dokument hinzuf\xfcgen","meeting.selectTemplate":"Vorlage ausw\xe4hlen","meeting.generate":"Generieren","meeting.generating":"Dokument wird generiert...","meeting.editMode":"Bearbeiten","meeting.previewMode":"Vorschau","meeting.modified":"Ge\xe4ndert","meeting.originalText":"Original","meeting.editedText":"Bearbeitet","meeting.exportDocx":"DOCX exportieren","meeting.exportTxt":"TXT exportieren","meeting.exportFormat":"Exportieren","meeting.customPrompt":"Benutzerdefinierter Prompt","meeting.templateName":"Vorlagenname","meeting.templatePrompt":"KI-Prompt","meeting.templateSave":"Vorlage speichern","meeting.documentDeleted":"Dokument gel\xf6scht","meeting.autoSaved":"Automatisch gespeichert","meeting.minutesTemplate":"Besprechungsprotokoll","meeting.reportTemplate":"Bericht","meeting.ideaNoteTemplate":"Ideennotiz","meeting.customTemplate":"Benutzerdefiniert","meeting.downloadTranscript":"Transkript herunterladen","meeting.polish":"KI Gl\xe4tten","meeting.polishing":"KI gl\xe4ttet Transkript...","meeting.polished":"KI Gl\xe4ttung abgeschlossen","meeting.mindmapTemplate":"Mindmap","meeting.chat":"KI-Chat","meeting.chatPlaceholder":"Fragen Sie zum Meeting...","meeting.chatSend":"Senden","meeting.chatClear":"Chat l\xf6schen","meeting.copyToClipboard":"In Zwischenablage kopieren","meeting.copied":"Kopiert","meeting.chatCollapse":"Chat einklappen","meeting.chatExpand":"Chat ausklappen","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"KI-Polierung fehlgeschlagen","meeting.viewDetailError":"Meeting-Details konnten nicht geladen werden","meeting.startRecordingError":"Aufnahme konnte nicht gestartet werden","meeting.diarize":"Sprecher trennen","meeting.diarizing":"Sprecher werden identifiziert...","meeting.diarizeComplete":"Sprechertrennung abgeschlossen","meeting.speaker":"Sprecher","settings.hfToken":"HuggingFace Token","settings.hfTokenHint":"Ein HuggingFace Token wird f\xfcr die Sprechertrennung ben\xf6tigt","settings.diarization":"Sprechertrennung","settings.diarizationHint":"Sprecher werden nach der Aufnahme automatisch identifiziert"}'),n=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Assistente de voz com IA local","nav.dashboard":"Painel","nav.history":"Hist\xf3rico","nav.dictionary":"Dicion\xe1rio","nav.commands":"Comandos","nav.settings":"Configura\xe7\xf5es","dashboard.sessionOverview":"Vis\xe3o geral da sess\xe3o","dashboard.systemStatus":"Status do sistema","dashboard.sessionsToday":"Sess\xf5es hoje","dashboard.pressToRecord":"Pressione {{key}} para iniciar a grava\xe7\xe3o","dashboard.hotkeyNotSet":"Atalho n\xe3o configurado","dashboard.words":"palavras","dashboard.total":"total","dashboard.streak":"sequ\xeancia","dashboard.days":"dias","dashboard.recording":"gravando","dashboard.sessions":"sess\xf5es","dashboard.today":"hoje","dashboard.recentTranscriptions":"Transcri\xe7\xf5es recentes","dashboard.noHistory":"Sem hist\xf3rico — pressione o atalho para come\xe7ar a gravar","dashboard.copy":"Copiar","dashboard.entries":"{{count}} entradas","dashboard.stat":"estat\xedsticas","dashboard.sys":"sistema","history.title":"Hist\xf3rico de transcri\xe7\xf5es","history.search":"Pesquisar...","history.entries":"{{count}} entradas","history.loading":"Carregando...","history.noResults":"Sem resultados","history.noHistory":"Sem hist\xf3rico — comece a gravar","history.count":"{{count}} entradas","dictionary.title":"Dicion\xe1rio personalizado","dictionary.words":"{{count}} palavras","dictionary.add":"Adicionar","dictionary.search":"Pesquisar...","dictionary.loading":"Carregando...","dictionary.noResults":"Sem resultados","dictionary.noWords":"Sem palavras — adicione palavras personalizadas para melhorar a precis\xe3o do STT","dictionary.used":"usado {{count}} vezes","dictionary.editTitle":"Editar palavra","dictionary.addTitle":"Adicionar palavra","dictionary.word":"Palavra","dictionary.pronunciation":"Pron\xfancia (opcional)","commands.title":"Comandos LLM","commands.count":"{{count}} comandos","commands.add":"Adicionar","commands.activeCommand":"Comando ativo","commands.none":"Nenhum","commands.loading":"Carregando...","commands.noCommands":"Sem comandos — clique em adicionar para criar um","commands.editTitle":"Editar comando","commands.addTitle":"Adicionar comando","commands.name":"Nome","commands.description":"Descri\xe7\xe3o","commands.promptTemplate":"Modelo de prompt","commands.promptHelp":"{{text}} ser\xe1 substitu\xeddo pelo texto transcrito","commands.defaultPrompt":"Por favor, melhore {{text}}.","settings.title":"Configura\xe7\xf5es","settings.tabs.general":"Geral","settings.tabs.audio":"\xc1udio","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"Sobre","settings.shortcuts":"Atalhos","settings.dictation":"Ditado","settings.dictation.desc":"Mantenha pressionado para falar. A transcri\xe7\xe3o come\xe7a ao soltar.","settings.agent":"Modo agente","settings.agent.descWithKey":"Clique duas vezes em {{key}} para entrar no modo agente.","settings.agent.descNoKey":"Configure primeiro o atalho de ditado.","settings.oneTouch":"Modo de um toque","settings.oneTouch.desc":"Pressione para iniciar, pressione novamente para parar. Requer um atalho separado.","settings.key":"Tecla","settings.notSet":"N\xe3o configurado","settings.enabled":"Ativado","settings.disabled":"Desativado","settings.interface":"Interface","settings.theme":"Tema","settings.theme.system":"Sistema","settings.theme.light":"Claro","settings.theme.dark":"Escuro","settings.language":"Idioma","settings.appBehavior":"Comportamento do aplicativo","settings.closeToTray":"Minimizar para a bandeja","settings.autoLaunch":"Iniciar com o sistema","settings.autoInsert":"Inserir texto automaticamente ap\xf3s a transcri\xe7\xe3o","settings.soundEffects":"Efeitos sonoros","settings.microphone":"Microfone","settings.inputDevice":"Dispositivo de entrada","settings.deviceDefault":"(padr\xe3o)","settings.textInsert":"Inser\xe7\xe3o de texto","settings.insertMethod":"M\xe9todo de inser\xe7\xe3o","settings.insertClipboard":"\xc1rea de transfer\xeancia (Ctrl+V)","settings.insertKeyboard":"Digita\xe7\xe3o pelo teclado","settings.whisperModel":"Modelo Whisper","settings.model.tiny":"tiny (39 MB, mais r\xe1pido)","settings.model.base":"base (74 MB, equilibrado)","settings.model.small":"small (244 MB, bom)","settings.model.medium":"medium (769 MB, muito bom)","settings.model.large":"large-v3 (1,5 GB, melhor)","settings.sttLanguage":"Idioma de reconhecimento","settings.sttLang.auto":"Detec\xe7\xe3o autom\xe1tica","settings.ollamaServer":"Servidor Ollama","settings.ollamaUrl":"URL do servidor Ollama","settings.ollamaHint":"D3RO Voice conecta-se automaticamente quando o Ollama est\xe1 em execu\xe7\xe3o. Baixe modelos diretamente pelo Ollama (ex: ollama pull qwen3:4b).","settings.postProcess":"P\xf3s-processamento de voz","settings.defaultAction":"A\xe7\xe3o de p\xf3s-processamento padr\xe3o","settings.action.none":"Nenhuma (texto original sem altera\xe7\xf5es)","settings.action.refine":"Refinar (gram\xe1tica + naturalidade)","settings.action.translate":"Traduzir","settings.action.summarize":"Resumir","settings.action.grammar":"Corre\xe7\xe3o gramatical","settings.action.custom":"Prompt personalizado","settings.actionHint":"O p\xf3s-processamento LLM selecionado \xe9 aplicado ao texto transcrito ap\xf3s gravar com o atalho. S\xf3 funciona quando o Ollama est\xe1 conectado.","settings.about.version":"Vers\xe3o","settings.about.techStack":"Stack tecnol\xf3gico","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Motor de voz","settings.about.voiceEngineValue":"STT: faster-whisper (local) / LLM: Ollama (local)","settings.about.description":"Assistente de voz com IA totalmente local, baseado em engenharia reversa do Speakly. Funciona sem depend\xeancias de nuvem.","settings.about.restartOnboarding":"Ver guia de configura\xe7\xe3o inicial novamente","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama n\xe3o est\xe1 em execu\xe7\xe3o","status.nudge.desc":"O Ollama \xe9 necess\xe1rio para o p\xf3s-processamento LLM (tradu\xe7\xe3o, resumo, etc.).","status.nudge.guide":"Ver guia de instala\xe7\xe3o →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Sem digitar, por voz. Seu assistente de voz com IA local.","onboarding.welcome.start":"Come\xe7ar","onboarding.mic.title":"Configurar microfone","onboarding.mic.desc":"Selecione o microfone que deseja usar. Voc\xea pode alter\xe1-lo depois nas configura\xe7\xf5es.","onboarding.hotkey.title":"Configurar atalho","onboarding.hotkey.desc":"Configure o atalho de ditado. A grava\xe7\xe3o continua enquanto voc\xea mantiver a tecla pressionada.","onboarding.hotkey.notSet":"Nenhum atalho configurado","onboarding.hotkey.change":"Alterar atalho","onboarding.hotkey.set":"Configurar atalho","onboarding.ollama.title":"Instalar Ollama (opcional)","onboarding.ollama.desc":"O Ollama \xe9 necess\xe1rio para p\xf3s-processamento LLM como tradu\xe7\xe3o ou resumo. O ditado de voz funciona sem o Ollama.","onboarding.ollama.download":"Baixar Ollama","onboarding.ollama.modelHint":"Ap\xf3s instalar, baixe um modelo pelo terminal","onboarding.done.title":"Configura\xe7\xe3o conclu\xedda!","onboarding.done.descWithKey":"Mantenha {{key}} pressionado e fale para converter sua voz em texto.","onboarding.done.descNoKey":"Configure um atalho nas configura\xe7\xf5es para come\xe7ar a ditar.","onboarding.done.start":"Come\xe7ar","onboarding.back":"Voltar","onboarding.next":"Pr\xf3ximo","hotkey.title":"Configurar atalho","hotkey.dictationTitle":"Configurar atalho de ditado","hotkey.oneTouchTitle":"Configurar atalho do modo de um toque","hotkey.prompt":"Pressione uma combina\xe7\xe3o de teclas...","hotkey.ready":"✓ {{keys}} — pressione salvar","hotkey.noKey":"Por favor, insira uma tecla","hotkey.reserved":"{{keys}} \xe9 um atalho reservado pelo sistema","hotkey.current":"Atual: {{keys}}","hotkey.hint":"Insira uma combina\xe7\xe3o (ex: Ctrl+Shift+Q) ou uma tecla \xfanica (ex: F5)","hotkey.reset":"Inserir novamente","ollama.title":"GUIA DE CONFIGURA\xc7\xc3O DO OLLAMA","ollama.step1.title":"PASSO 1 — Instalar o Ollama","ollama.step1.desc":"O Ollama \xe9 uma ferramenta gratuita para executar LLMs localmente.","ollama.step2.title":"PASSO 2 — Baixar um modelo","ollama.step2.desc":"Execute o seguinte comando no terminal para baixar o modelo recomendado:","ollama.step2.alt":"Ou um modelo maior: ollama pull qwen3:8b (mais preciso, mais lento)","ollama.step3.title":"PASSO 3 — Conex\xe3o autom\xe1tica","ollama.step3.desc":"D3RO-VOICE detecta automaticamente quando o Ollama est\xe1 em execu\xe7\xe3o. Quando o LED da barra de status mudar de vermelho para verde, est\xe1 pronto!","service.sttEngine":"MOTOR STT","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"ATALHO DE TECLADO","service.audioInput":"ENTRADA DE \xc1UDIO","service.ready":"PRONTO","service.connected":"CONECTADO","service.offline":"OFFLINE","service.active":"ATIVO","service.standby":"EM ESPERA","common.cancel":"Cancelar","common.save":"Salvar","common.delete":"Excluir","common.add":"Adicionar","common.edit":"Editar","common.close":"Fechar","common.confirm":"Confirmar","common.loading":"Carregando...","common.copy":"Copiar","common.test":"Testar","common.stop":"Parar","date.today":"Hoje","date.yesterday":"Ontem","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Coreano","settings.sttLang.en":"Ingl\xeas","settings.sttLang.ja":"Japon\xeas","settings.sttLang.zh":"Chin\xeas","template.outputHelperText":"Use {{nomeCampo}} para marcadores de posi\xe7\xe3o","nav.meeting":"Reuni\xe3o","meeting.title":"Modo Reuni\xe3o","meeting.newMeeting":"Nova Reuni\xe3o","meeting.startRecording":"Iniciar Grava\xe7\xe3o","meeting.stopRecording":"Parar Grava\xe7\xe3o","meeting.recording":"Gravando","meeting.processing":"Gerando ata...","meeting.completed":"Conclu\xeddo","meeting.error":"Erro","meeting.elapsed":"Tempo decorrido","meeting.memoPlaceholder":"Digite um memo (Enter para adicionar)","meeting.memoAdded":"Memo adicionado","meeting.noSessions":"Nenhuma grava\xe7\xe3o de reuni\xe3o","meeting.noSessionsDesc":"Pressione Nova Reuni\xe3o para come\xe7ar a gravar","meeting.summary":"Resumo","meeting.decisions":"Decis\xf5es","meeting.actionItems":"Itens de a\xe7\xe3o","meeting.timeline":"Linha do tempo","meeting.transcript":"Transcri\xe7\xe3o bruta","meeting.memos":"Memos","meeting.exportPdf":"Exportar PDF","meeting.exportMarkdown":"Exportar Markdown","meeting.delete":"Excluir","meeting.deleteConfirm":"Excluir este registro de reuni\xe3o?","meeting.backToList":"Voltar \xe0 lista","meeting.notificationTitle":"Ata pronta","meeting.notificationBody":"A ata da reuni\xe3o foi gerada.","meeting.sessions":"{{count}} sess\xf5es","meeting.duration":"{{minutes}} min","meeting.editTitle":"Editar t\xedtulo","meeting.untitled":"Reuni\xe3o sem t\xedtulo","meeting.processingStep.merging":"Mesclando transcri\xe7\xe3o...","meeting.processingStep.generating":"Gerando ata com LLM...","meeting.processingStep.parsing":"Analisando ata...","meeting.processingStep.saving":"Salvando...","meeting.processingStep.notifying":"Enviando notifica\xe7\xe3o...","meeting.transcriptTab":"Transcri\xe7\xe3o","meeting.addDocument":"Adicionar documento","meeting.selectTemplate":"Selecionar modelo","meeting.generate":"Gerar","meeting.generating":"Gerando documento...","meeting.editMode":"Editar","meeting.previewMode":"Visualizar","meeting.modified":"Modificado","meeting.originalText":"Original","meeting.editedText":"Editado","meeting.exportDocx":"Exportar DOCX","meeting.exportTxt":"Exportar TXT","meeting.exportFormat":"Exportar","meeting.customPrompt":"Prompt personalizado","meeting.templateName":"Nome do modelo","meeting.templatePrompt":"Prompt de IA","meeting.templateSave":"Salvar modelo","meeting.documentDeleted":"Documento exclu\xeddo","meeting.autoSaved":"Salvo automaticamente","meeting.minutesTemplate":"Ata de reuni\xe3o","meeting.reportTemplate":"Relat\xf3rio","meeting.ideaNoteTemplate":"Nota de ideias","meeting.customTemplate":"Personalizado","meeting.downloadTranscript":"Baixar transcri\xe7\xe3o","meeting.polish":"Polir com IA","meeting.polishing":"IA est\xe1 polindo a transcri\xe7\xe3o...","meeting.polished":"Polimento IA conclu\xeddo","meeting.mindmapTemplate":"Mapa mental","meeting.chat":"Chat IA","meeting.chatPlaceholder":"Pergunte sobre a reuni\xe3o...","meeting.chatSend":"Enviar","meeting.chatClear":"Limpar chat","meeting.copyToClipboard":"Copiar para \xe1rea de transfer\xeancia","meeting.copied":"Copiado","meeting.chatCollapse":"Recolher chat","meeting.chatExpand":"Expandir chat","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"Falha no polimento de IA","meeting.viewDetailError":"Falha ao carregar detalhes da reuni\xe3o","meeting.startRecordingError":"Falha ao iniciar grava\xe7\xe3o","meeting.diarize":"Identificar oradores","meeting.diarizing":"Identificando oradores...","meeting.diarizeComplete":"Identifica\xe7\xe3o conclu\xedda","meeting.speaker":"Orador","settings.hfToken":"Token do HuggingFace","settings.hfTokenHint":"Um token do HuggingFace \xe9 necess\xe1rio para identificar oradores","settings.diarization":"Identifica\xe7\xe3o de oradores","settings.diarizationHint":"Identifica automaticamente os oradores ap\xf3s o t\xe9rmino da grava\xe7\xe3o"}'),o=JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Локальный голосовой ИИ-ассистент","nav.dashboard":"Панель","nav.history":"История","nav.dictionary":"Словарь","nav.commands":"Команды","nav.settings":"Настройки","dashboard.sessionOverview":"Обзор сессий","dashboard.systemStatus":"Состояние системы","dashboard.sessionsToday":"Сессий сегодня","dashboard.pressToRecord":"Нажмите {{key}} для начала записи","dashboard.hotkeyNotSet":"Горячая клавиша не задана","dashboard.words":"Слова","dashboard.total":"Всего","dashboard.streak":"Серия","dashboard.days":"дн.","dashboard.recording":"Запись","dashboard.sessions":"Сессии","dashboard.today":"Сегодня","dashboard.recentTranscriptions":"Последние транскрипции","dashboard.noHistory":"История пуста — нажмите горячую клавишу для начала записи","dashboard.copy":"Копировать","dashboard.entries":"{{count}} записей","dashboard.stat":"Статистика","dashboard.sys":"Система","history.title":"История транскрипций","history.search":"Поиск...","history.entries":"{{count}} записей","history.loading":"Загрузка...","history.noResults":"Результаты не найдены","history.noHistory":"История пуста — начните запись","history.count":"{{count}} записей","dictionary.title":"Пользовательский словарь","dictionary.words":"{{count}} слов","dictionary.add":"Добавить","dictionary.search":"Поиск...","dictionary.loading":"Загрузка...","dictionary.noResults":"Результаты не найдены","dictionary.noWords":"Слов нет — добавьте собственные слова для улучшения точности STT","dictionary.used":"Использовано {{count}} раз","dictionary.editTitle":"Редактировать слово","dictionary.addTitle":"Добавить слово","dictionary.word":"Слово","dictionary.pronunciation":"Произношение (необязательно)","commands.title":"Команды LLM","commands.count":"{{count}} шт.","commands.add":"Добавить","commands.activeCommand":"Активная команда","commands.none":"Нет","commands.loading":"Загрузка...","commands.noCommands":"Команд нет — нажмите \xabДобавить\xbb для создания","commands.editTitle":"Редактировать команду","commands.addTitle":"Добавить команду","commands.name":"Название","commands.description":"Описание","commands.promptTemplate":"Шаблон промпта","commands.promptHelp":"{{text}} будет заменено на транскрибированный текст","commands.defaultPrompt":"Пожалуйста, улучшите {{text}}.","settings.title":"Настройки","settings.tabs.general":"Общие","settings.tabs.audio":"Аудио","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"О программе","settings.shortcuts":"Горячие клавиши","settings.dictation":"Диктовка","settings.dictation.desc":"Говорите, удерживая клавишу. Отпустите для начала транскрипции.","settings.agent":"Режим агента","settings.agent.descWithKey":"Дважды нажмите {{key}} для перехода в режим агента.","settings.agent.descNoKey":"Сначала задайте горячую клавишу диктовки.","settings.oneTouch":"Режим одного нажатия","settings.oneTouch.desc":"Нажмите для начала, нажмите снова для остановки. Требуется отдельная горячая клавиша.","settings.key":"Клавиша","settings.notSet":"Не задано","settings.enabled":"Включено","settings.disabled":"Выключено","settings.interface":"Интерфейс","settings.theme":"Тема","settings.theme.system":"Системная","settings.theme.light":"Светлая","settings.theme.dark":"Тёмная","settings.language":"Язык","settings.appBehavior":"Поведение приложения","settings.closeToTray":"Сворачивать в трей","settings.autoLaunch":"Автозапуск при старте системы","settings.autoInsert":"Автоматически вставлять текст после транскрипции","settings.soundEffects":"Звуковые эффекты","settings.microphone":"Микрофон","settings.inputDevice":"Устройство ввода","settings.deviceDefault":"(По умолчанию)","settings.textInsert":"Вставка текста","settings.insertMethod":"Метод вставки","settings.insertClipboard":"Буфер обмена (Ctrl+V)","settings.insertKeyboard":"Эмуляция клавиатуры","settings.whisperModel":"Модель Whisper","settings.model.tiny":"tiny (39 МБ, самая быстрая)","settings.model.base":"base (74 МБ, баланс)","settings.model.small":"small (244 МБ, хорошая)","settings.model.medium":"medium (769 МБ, отличная)","settings.model.large":"large-v3 (1.5 ГБ, лучшая)","settings.sttLanguage":"Язык распознавания","settings.sttLang.auto":"Автоопределение","settings.ollamaServer":"Сервер Ollama","settings.ollamaUrl":"URL сервера Ollama","settings.ollamaHint":"Если Ollama запущена, подключение произойдёт автоматически. Загружайте модели напрямую через Ollama (например: ollama pull qwen3:4b).","settings.postProcess":"Постобработка речи","settings.defaultAction":"Команда постобработки по умолчанию","settings.action.none":"Нет (оригинальный текст)","settings.action.refine":"Улучшить (грамматика + естественность)","settings.action.translate":"Перевести","settings.action.summarize":"Резюмировать","settings.action.grammar":"Исправить грамматику","settings.action.custom":"Пользовательский промпт","settings.actionHint":"После записи и транскрипции к тексту будет применена выбранная постобработка LLM. Работает только при подключённом Ollama.","settings.about.version":"Версия","settings.about.techStack":"Технический стек","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Голосовой движок","settings.about.voiceEngineValue":"STT: faster-whisper (локально) / LLM: Ollama (локально)","settings.about.description":"Локальный голосовой ИИ-ассистент, основанный на методах обратной разработки Speakly. Работает полностью локально без зависимости от облачных сервисов.","settings.about.restartOnboarding":"Показать начальную настройку снова","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama не запущена","status.nudge.desc":"Для постобработки LLM (перевод, резюмирование и т.д.) требуется Ollama.","status.nudge.guide":"Смотреть инструкцию по установке →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Без набора текста — только голос. Локальный голосовой ИИ-ассистент.","onboarding.welcome.start":"Начать","onboarding.mic.title":"Настройка микрофона","onboarding.mic.desc":"Выберите микрофон. Его можно изменить позже в настройках.","onboarding.hotkey.title":"Настройка горячей клавиши","onboarding.hotkey.desc":"Задайте горячую клавишу для диктовки. Удерживайте её для записи.","onboarding.hotkey.notSet":"Горячая клавиша не задана","onboarding.hotkey.change":"Изменить горячую клавишу","onboarding.hotkey.set":"Задать горячую клавишу","onboarding.ollama.title":"Установка Ollama (необязательно)","onboarding.ollama.desc":"Для постобработки LLM (перевод, резюмирование и т.д.) требуется Ollama. Голосовая диктовка работает и без неё.","onboarding.ollama.download":"Скачать Ollama","onboarding.ollama.modelHint":"После установки загрузите модель через терминал","onboarding.done.title":"Настройка завершена!","onboarding.done.descWithKey":"Удерживайте {{key}} и говорите — речь будет преобразована в текст.","onboarding.done.descNoKey":"Задайте горячую клавишу в настройках, чтобы начать голосовую диктовку.","onboarding.done.start":"Начать","onboarding.back":"Назад","onboarding.next":"Далее","hotkey.title":"Настройка горячей клавиши","hotkey.dictationTitle":"Задать горячую клавишу диктовки","hotkey.oneTouchTitle":"Задать горячую клавишу режима одного нажатия","hotkey.prompt":"Нажмите сочетание клавиш...","hotkey.ready":"✓ {{keys}} — нажмите \xabСохранить\xbb","hotkey.noKey":"Введите клавишу","hotkey.reserved":"{{keys}} является зарезервированным сочетанием системы","hotkey.current":"Текущее: {{keys}}","hotkey.hint":"Введите сочетание клавиш (например: Ctrl+Shift+Q) или одну клавишу (например: F5)","hotkey.reset":"Ввести снова","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"ШАГ 1 — Установка Ollama","ollama.step1.desc":"Ollama — бесплатный инструмент для локального запуска LLM.","ollama.step2.title":"ШАГ 2 — Загрузка модели","ollama.step2.desc":"Загрузите нужную модель через терминал. Рекомендуется:","ollama.step2.alt":"Или более крупная модель: ollama pull qwen3:8b (точнее, медленнее)","ollama.step3.title":"ШАГ 3 — Автоподключение","ollama.step3.desc":"При запуске Ollama D3RO-VOICE обнаружит её автоматически. Когда индикатор LED на нижней панели сменится с красного на зелёный — готово!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"Отмена","common.save":"Сохранить","common.delete":"Удалить","common.add":"Добавить","common.edit":"Изменить","common.close":"Закрыть","common.confirm":"Подтвердить","common.loading":"Загрузка...","common.copy":"Копировать","common.test":"Тест","common.stop":"Стоп","date.today":"Сегодня","date.yesterday":"Вчера","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Корейский","settings.sttLang.en":"Английский","settings.sttLang.ja":"Японский","settings.sttLang.zh":"Китайский","template.outputHelperText":"Используйте {{имяПоля}} для заполнителей","nav.meeting":"Совещание","meeting.title":"Режим совещания","meeting.newMeeting":"Новое совещание","meeting.startRecording":"Начать запись","meeting.stopRecording":"Остановить запись","meeting.recording":"Запись","meeting.processing":"Создание протокола...","meeting.completed":"Завершено","meeting.error":"Ошибка","meeting.elapsed":"Прошло","meeting.memoPlaceholder":"Введите заметку (Enter для добавления)","meeting.memoAdded":"Заметка добавлена","meeting.noSessions":"Нет записей совещаний","meeting.noSessionsDesc":"Нажмите \xabНовое совещание\xbb, чтобы начать запись","meeting.summary":"Сводка","meeting.decisions":"Решения","meeting.actionItems":"Задачи","meeting.timeline":"Хронология","meeting.transcript":"Исходная расшифровка","meeting.memos":"Заметки","meeting.exportPdf":"Экспорт в PDF","meeting.exportMarkdown":"Экспорт в Markdown","meeting.delete":"Удалить","meeting.deleteConfirm":"Удалить эту запись совещания?","meeting.backToList":"Вернуться к списку","meeting.notificationTitle":"Протокол готов","meeting.notificationBody":"Протокол совещания сформирован.","meeting.sessions":"{{count}} сессий","meeting.duration":"{{minutes}} мин","meeting.editTitle":"Изменить название","meeting.untitled":"Совещание без названия","meeting.processingStep.merging":"Объединение расшифровки...","meeting.processingStep.generating":"Создание протокола с помощью LLM...","meeting.processingStep.parsing":"Разбор протокола...","meeting.processingStep.saving":"Сохранение...","meeting.processingStep.notifying":"Отправка уведомления...","meeting.transcriptTab":"Транскрипция","meeting.addDocument":"Добавить документ","meeting.selectTemplate":"Выбрать шаблон","meeting.generate":"Создать","meeting.generating":"Создание документа...","meeting.editMode":"Редактировать","meeting.previewMode":"Предпросмотр","meeting.modified":"Изменено","meeting.originalText":"Оригинал","meeting.editedText":"Отредактировано","meeting.exportDocx":"Экспорт DOCX","meeting.exportTxt":"Экспорт TXT","meeting.exportFormat":"Экспорт","meeting.customPrompt":"Пользовательский запрос","meeting.templateName":"Название шаблона","meeting.templatePrompt":"ИИ-запрос","meeting.templateSave":"Сохранить шаблон","meeting.documentDeleted":"Документ удалён","meeting.autoSaved":"Автосохранение","meeting.minutesTemplate":"Протокол встречи","meeting.reportTemplate":"Отчёт","meeting.ideaNoteTemplate":"Заметка с идеями","meeting.customTemplate":"Пользовательский","meeting.downloadTranscript":"Скачать транскрипцию","meeting.polish":"Улучшить с ИИ","meeting.polishing":"ИИ улучшает транскрипцию...","meeting.polished":"Улучшение ИИ завершено","meeting.mindmapTemplate":"Карта мыслей","meeting.chat":"ИИ Чат","meeting.chatPlaceholder":"Задайте вопрос о встрече...","meeting.chatSend":"Отправить","meeting.chatClear":"Очистить чат","meeting.copyToClipboard":"Копировать в буфер обмена","meeting.copied":"Скопировано","meeting.chatCollapse":"Свернуть чат","meeting.chatExpand":"Развернуть чат","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"Ошибка ИИ-полировки","meeting.viewDetailError":"Не удалось загрузить детали встречи","meeting.startRecordingError":"Не удалось начать запись","meeting.diarize":"Определить говорящих","meeting.diarizing":"Определение говорящих...","meeting.diarizeComplete":"Определение завершено","meeting.speaker":"Говорящий","settings.hfToken":"Токен HuggingFace","settings.hfTokenHint":"Токен HuggingFace необходим для определения говорящих","settings.diarization":"Диаризация","settings.diarizationHint":"Автоматически определять говорящих после завершения записи"}'),p={ko:f,en:g,ja:h,zh:i,"zh-TW":j,es:k,fr:l,de:m,pt:n,ru:o,vi:JSON.parse('{"app.name":"D3RO Voice","app.tagline":"Trợ l\xfd giọng n\xf3i AI cục bộ","nav.dashboard":"Bảng điều khiển","nav.history":"Lịch sử","nav.dictionary":"Từ điển","nav.commands":"Lệnh","nav.settings":"C\xe0i đặt","dashboard.sessionOverview":"Tổng quan phi\xean","dashboard.systemStatus":"Trạng th\xe1i hệ thống","dashboard.sessionsToday":"Phi\xean h\xf4m nay","dashboard.pressToRecord":"Nhấn {{key}} để bắt đầu ghi \xe2m","dashboard.hotkeyNotSet":"Chưa đặt ph\xedm tắt","dashboard.words":"Từ","dashboard.total":"Tổng","dashboard.streak":"Chuỗi","dashboard.days":"ng\xe0y","dashboard.recording":"Đang ghi","dashboard.sessions":"Phi\xean","dashboard.today":"H\xf4m nay","dashboard.recentTranscriptions":"Phi\xean \xe2m gần đ\xe2y","dashboard.noHistory":"Chưa c\xf3 lịch sử — nhấn ph\xedm tắt để bắt đầu ghi \xe2m","dashboard.copy":"Sao ch\xe9p","dashboard.entries":"{{count}} mục","dashboard.stat":"Thống k\xea","dashboard.sys":"Hệ thống","history.title":"Lịch sử phi\xean \xe2m","history.search":"T\xecm kiếm...","history.entries":"{{count}} mục","history.loading":"Đang tải...","history.noResults":"Kh\xf4ng t\xecm thấy kết quả","history.noHistory":"Chưa c\xf3 lịch sử — h\xe3y bắt đầu ghi \xe2m","history.count":"{{count}} mục","dictionary.title":"Từ điển t\xf9y chỉnh","dictionary.words":"{{count}} từ","dictionary.add":"Th\xeam","dictionary.search":"T\xecm kiếm...","dictionary.loading":"Đang tải...","dictionary.noResults":"Kh\xf4ng t\xecm thấy kết quả","dictionary.noWords":"Chưa c\xf3 từ — th\xeam từ t\xf9y chỉnh để cải thiện độ ch\xednh x\xe1c STT","dictionary.used":"Đ\xe3 d\xf9ng {{count}} lần","dictionary.editTitle":"Chỉnh sửa từ","dictionary.addTitle":"Th\xeam từ","dictionary.word":"Từ","dictionary.pronunciation":"Ph\xe1t \xe2m (t\xf9y chọn)","commands.title":"Lệnh LLM","commands.count":"{{count}} lệnh","commands.add":"Th\xeam","commands.activeCommand":"Lệnh đang hoạt động","commands.none":"Kh\xf4ng c\xf3","commands.loading":"Đang tải...","commands.noCommands":"Chưa c\xf3 lệnh — nhấn Th\xeam để tạo","commands.editTitle":"Chỉnh sửa lệnh","commands.addTitle":"Th\xeam lệnh","commands.name":"T\xean","commands.description":"M\xf4 tả","commands.promptTemplate":"Mẫu prompt","commands.promptHelp":"{{text}} sẽ được thay thế bằng văn bản phi\xean \xe2m","commands.defaultPrompt":"Vui l\xf2ng cải thiện {{text}}.","settings.title":"C\xe0i đặt","settings.tabs.general":"Chung","settings.tabs.audio":"\xc2m thanh","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"Giới thiệu","settings.shortcuts":"Ph\xedm tắt","settings.dictation":"Ch\xednh tả","settings.dictation.desc":"Giữ ph\xedm v\xe0 n\xf3i. Thả ph\xedm để bắt đầu phi\xean \xe2m.","settings.agent":"Chế độ Agent","settings.agent.descWithKey":"Nhấn đ\xfap {{key}} để v\xe0o chế độ Agent.","settings.agent.descNoKey":"Vui l\xf2ng đặt ph\xedm tắt ch\xednh tả trước.","settings.oneTouch":"Chế độ một chạm","settings.oneTouch.desc":"Nhấn để bắt đầu, nhấn lại để dừng. Cần ph\xedm tắt ri\xeang.","settings.key":"Ph\xedm","settings.notSet":"Chưa đặt","settings.enabled":"Đ\xe3 bật","settings.disabled":"Đ\xe3 tắt","settings.interface":"Giao diện","settings.theme":"Giao diện","settings.theme.system":"Hệ thống","settings.theme.light":"S\xe1ng","settings.theme.dark":"Tối","settings.language":"Ng\xf4n ngữ","settings.appBehavior":"H\xe0nh vi ứng dụng","settings.closeToTray":"Thu nhỏ xuống khay hệ thống","settings.autoLaunch":"Tự động khởi động c\xf9ng hệ thống","settings.autoInsert":"Tự động ch\xe8n văn bản sau khi phi\xean \xe2m","settings.soundEffects":"Hiệu ứng \xe2m thanh","settings.microphone":"Micr\xf4","settings.inputDevice":"Thiết bị đầu v\xe0o","settings.deviceDefault":"(Mặc định)","settings.textInsert":"Ch\xe8n văn bản","settings.insertMethod":"Phương thức ch\xe8n","settings.insertClipboard":"Bộ nhớ tạm (Ctrl+V)","settings.insertKeyboard":"Giả lập b\xe0n ph\xedm","settings.whisperModel":"M\xf4 h\xecnh Whisper","settings.model.tiny":"tiny (39 MB, nhanh nhất)","settings.model.base":"base (74 MB, c\xe2n bằng)","settings.model.small":"small (244 MB, tốt)","settings.model.medium":"medium (769 MB, xuất sắc)","settings.model.large":"large-v3 (1.5 GB, tốt nhất)","settings.sttLanguage":"Ng\xf4n ngữ nhận dạng","settings.sttLang.auto":"Tự động ph\xe1t hiện","settings.ollamaServer":"M\xe1y chủ Ollama","settings.ollamaUrl":"URL m\xe1y chủ Ollama","settings.ollamaHint":"Nếu Ollama đang chạy, kết nối sẽ tự động. Tải m\xf4 h\xecnh trực tiếp từ Ollama (v\xed dụ: ollama pull qwen3:4b).","settings.postProcess":"Hậu xử l\xfd giọng n\xf3i","settings.defaultAction":"Lệnh hậu xử l\xfd mặc định","settings.action.none":"Kh\xf4ng c\xf3 (văn bản gốc)","settings.action.refine":"Cải thiện (ngữ ph\xe1p + tự nhi\xean)","settings.action.translate":"Dịch","settings.action.summarize":"T\xf3m tắt","settings.action.grammar":"Sửa ngữ ph\xe1p","settings.action.custom":"Prompt t\xf9y chỉnh","settings.actionHint":"Hậu xử l\xfd LLM đ\xe3 chọn sẽ được \xe1p dụng cho văn bản phi\xean \xe2m sau khi ghi \xe2m. Chỉ hoạt động khi Ollama được kết nối.","settings.about.version":"Phi\xean bản","settings.about.techStack":"Ngăn xếp c\xf4ng nghệ","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"Bộ m\xe1y giọng n\xf3i","settings.about.voiceEngineValue":"STT: faster-whisper (cục bộ) / LLM: Ollama (cục bộ)","settings.about.description":"Trợ l\xfd giọng n\xf3i AI cục bộ dựa tr\xean kỹ thuật dịch ngược Speakly. Hoạt động ho\xe0n to\xe0n cục bộ, kh\xf4ng phụ thuộc v\xe0o dịch vụ đ\xe1m m\xe2y.","settings.about.restartOnboarding":"Xem lại hướng dẫn c\xe0i đặt ban đầu","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama chưa chạy","status.nudge.desc":"Cần Ollama để sử dụng hậu xử l\xfd LLM (dịch, t\xf3m tắt, v.v.).","status.nudge.guide":"Xem hướng dẫn c\xe0i đặt →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"Kh\xf4ng cần g\xf5 ph\xedm — chỉ cần n\xf3i. Trợ l\xfd giọng n\xf3i AI cục bộ.","onboarding.welcome.start":"Bắt đầu","onboarding.mic.title":"C\xe0i đặt micr\xf4","onboarding.mic.desc":"Chọn micr\xf4 bạn muốn d\xf9ng. C\xf3 thể thay đổi sau trong c\xe0i đặt.","onboarding.hotkey.title":"C\xe0i đặt ph\xedm tắt","onboarding.hotkey.desc":"Đặt ph\xedm tắt ch\xednh tả. Giữ ph\xedm trong khi ghi \xe2m.","onboarding.hotkey.notSet":"Ph\xedm tắt chưa được đặt","onboarding.hotkey.change":"Thay đổi ph\xedm tắt","onboarding.hotkey.set":"Đặt ph\xedm tắt","onboarding.ollama.title":"C\xe0i đặt Ollama (t\xf9y chọn)","onboarding.ollama.desc":"Cần Ollama để sử dụng hậu xử l\xfd LLM (dịch, t\xf3m tắt, v.v.). Ch\xednh tả giọng n\xf3i vẫn hoạt động m\xe0 kh\xf4ng cần Ollama.","onboarding.ollama.download":"Tải Ollama","onboarding.ollama.modelHint":"Sau khi c\xe0i đặt, tải m\xf4 h\xecnh qua terminal","onboarding.done.title":"Thiết lập ho\xe0n tất!","onboarding.done.descWithKey":"Giữ ph\xedm {{key}} v\xe0 n\xf3i — giọng n\xf3i sẽ được chuyển th\xe0nh văn bản.","onboarding.done.descNoKey":"Đặt ph\xedm tắt trong c\xe0i đặt để bắt đầu ch\xednh tả giọng n\xf3i.","onboarding.done.start":"Bắt đầu","onboarding.back":"Quay lại","onboarding.next":"Tiếp theo","hotkey.title":"C\xe0i đặt ph\xedm tắt","hotkey.dictationTitle":"Đặt ph\xedm tắt ch\xednh tả","hotkey.oneTouchTitle":"Đặt ph\xedm tắt chế độ một chạm","hotkey.prompt":"Nhấn tổ hợp ph\xedm...","hotkey.ready":"✓ {{keys}} — h\xe3y nhấn Lưu","hotkey.noKey":"Vui l\xf2ng nhập ph\xedm","hotkey.reserved":"{{keys}} l\xe0 ph\xedm tắt hệ thống được d\xe0nh ri\xeang","hotkey.current":"Hiện tại: {{keys}}","hotkey.hint":"Nhập tổ hợp ph\xedm (v\xed dụ: Ctrl+Shift+Q) hoặc ph\xedm đơn (v\xed dụ: F5)","hotkey.reset":"Nhập lại","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"BƯỚC 1 — C\xe0i đặt Ollama","ollama.step1.desc":"Ollama l\xe0 c\xf4ng cụ miễn ph\xed để chạy LLM cục bộ.","ollama.step2.title":"BƯỚC 2 — Tải m\xf4 h\xecnh","ollama.step2.desc":"Tải m\xf4 h\xecnh bạn muốn qua terminal. Khuyến nghị:","ollama.step2.alt":"Hoặc m\xf4 h\xecnh lớn hơn: ollama pull qwen3:8b (ch\xednh x\xe1c hơn, chậm hơn)","ollama.step3.title":"BƯỚC 3 — Tự động kết nối","ollama.step3.desc":"Khi Ollama chạy, D3RO-VOICE sẽ tự động ph\xe1t hiện. Khi đ\xe8n LED tr\xean thanh trạng th\xe1i chuyển từ đỏ sang xanh — đ\xe3 sẵn s\xe0ng!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"Hủy","common.save":"Lưu","common.delete":"X\xf3a","common.add":"Th\xeam","common.edit":"Chỉnh sửa","common.close":"Đ\xf3ng","common.confirm":"X\xe1c nhận","common.loading":"Đang tải...","common.copy":"Sao ch\xe9p","common.test":"Kiểm tra","common.stop":"Dừng","date.today":"H\xf4m nay","date.yesterday":"H\xf4m qua","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"Tiếng H\xe0n","settings.sttLang.en":"Tiếng Anh","settings.sttLang.ja":"Tiếng Nhật","settings.sttLang.zh":"Tiếng Trung","template.outputHelperText":"Sử dụng {{t\xeanTrường}} cho tr\xecnh giữ chỗ","nav.meeting":"Cuộc họp","meeting.title":"Chế độ Cuộc họp","meeting.newMeeting":"Cuộc họp mới","meeting.startRecording":"Bắt đầu ghi \xe2m","meeting.stopRecording":"Dừng ghi \xe2m","meeting.recording":"Đang ghi \xe2m","meeting.processing":"Đang tạo bi\xean bản...","meeting.completed":"Ho\xe0n th\xe0nh","meeting.error":"Lỗi","meeting.elapsed":"Thời gian đ\xe3 qua","meeting.memoPlaceholder":"Nhập ghi ch\xfa (Enter để th\xeam)","meeting.memoAdded":"Đ\xe3 th\xeam ghi ch\xfa","meeting.noSessions":"Kh\xf4ng c\xf3 bản ghi cuộc họp","meeting.noSessionsDesc":"Nhấn \xabCuộc họp mới\xbb để bắt đầu ghi \xe2m","meeting.summary":"T\xf3m tắt","meeting.decisions":"Quyết định","meeting.actionItems":"H\xe0nh động cần thực hiện","meeting.timeline":"D\xf2ng thời gian","meeting.transcript":"Bản ghi th\xf4","meeting.memos":"Ghi ch\xfa","meeting.exportPdf":"Xuất PDF","meeting.exportMarkdown":"Xuất Markdown","meeting.delete":"X\xf3a","meeting.deleteConfirm":"X\xf3a bản ghi cuộc họp n\xe0y?","meeting.backToList":"Quay lại danh s\xe1ch","meeting.notificationTitle":"Bi\xean bản đ\xe3 sẵn s\xe0ng","meeting.notificationBody":"Bi\xean bản cuộc họp đ\xe3 được tạo.","meeting.sessions":"{{count}} phi\xean","meeting.duration":"{{minutes}} ph\xfat","meeting.editTitle":"Chỉnh sửa ti\xeau đề","meeting.untitled":"Cuộc họp kh\xf4ng c\xf3 ti\xeau đề","meeting.processingStep.merging":"Đang gh\xe9p bản ghi...","meeting.processingStep.generating":"Đang tạo bi\xean bản với LLM...","meeting.processingStep.parsing":"Đang ph\xe2n t\xedch bi\xean bản...","meeting.processingStep.saving":"Đang lưu...","meeting.processingStep.notifying":"Đang gửi th\xf4ng b\xe1o...","meeting.transcriptTab":"Bản ghi","meeting.addDocument":"Th\xeam t\xe0i liệu","meeting.selectTemplate":"Chọn mẫu","meeting.generate":"Tạo","meeting.generating":"Đang tạo t\xe0i liệu...","meeting.editMode":"Chỉnh sửa","meeting.previewMode":"Xem trước","meeting.modified":"Đ\xe3 chỉnh sửa","meeting.originalText":"Bản gốc","meeting.editedText":"Đ\xe3 chỉnh sửa","meeting.exportDocx":"Xuất DOCX","meeting.exportTxt":"Xuất TXT","meeting.exportFormat":"Xuất","meeting.customPrompt":"Lệnh t\xf9y chỉnh","meeting.templateName":"T\xean mẫu","meeting.templatePrompt":"Lệnh AI","meeting.templateSave":"Lưu mẫu","meeting.documentDeleted":"Đ\xe3 x\xf3a t\xe0i liệu","meeting.autoSaved":"Đ\xe3 lưu tự động","meeting.minutesTemplate":"Bi\xean bản họp","meeting.reportTemplate":"B\xe1o c\xe1o","meeting.ideaNoteTemplate":"Ghi ch\xfa \xfd tưởng","meeting.customTemplate":"T\xf9y chỉnh","meeting.downloadTranscript":"Tải bản ghi","meeting.polish":"Tinh chỉnh bằng AI","meeting.polishing":"AI đang tinh chỉnh bản ghi...","meeting.polished":"Tinh chỉnh AI ho\xe0n tất","meeting.mindmapTemplate":"Sơ đồ tư duy","meeting.chat":"Chat AI","meeting.chatPlaceholder":"Hỏi về cuộc họp...","meeting.chatSend":"Gửi","meeting.chatClear":"X\xf3a chat","meeting.copyToClipboard":"Sao ch\xe9p v\xe0o bộ nhớ tạm","meeting.copied":"Đ\xe3 sao ch\xe9p","meeting.chatCollapse":"Thu gọn chat","meeting.chatExpand":"Mở rộng chat","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI đ\xe1nh b\xf3ng thất bại","meeting.viewDetailError":"Kh\xf4ng thể tải chi tiết cuộc họp","meeting.startRecordingError":"Kh\xf4ng thể bắt đầu ghi \xe2m","meeting.diarize":"Ph\xe2n t\xe1ch người n\xf3i","meeting.diarizing":"Đang nhận dạng người n\xf3i...","meeting.diarizeComplete":"Ph\xe2n t\xe1ch người n\xf3i ho\xe0n tất","meeting.speaker":"Người n\xf3i","settings.hfToken":"Token HuggingFace","settings.hfTokenHint":"Cần token HuggingFace để ph\xe2n t\xe1ch người n\xf3i","settings.diarization":"Ph\xe2n t\xe1ch người n\xf3i","settings.diarizationHint":"Tự động nhận dạng người n\xf3i sau khi ghi \xe2m kết th\xfac"}'),th:JSON.parse('{"app.name":"D3RO Voice","app.tagline":"ผู้ช่วยเสียง AI ในเครื่อง","nav.dashboard":"แดชบอร์ด","nav.history":"ประวัติ","nav.dictionary":"พจนานุกรม","nav.commands":"คำสั่ง","nav.settings":"การตั้งค่า","dashboard.sessionOverview":"ภาพรวมเซสชัน","dashboard.systemStatus":"สถานะระบบ","dashboard.sessionsToday":"เซสชันวันนี้","dashboard.pressToRecord":"กด {{key}} เพื่อเริ่มบันทึก","dashboard.hotkeyNotSet":"ยังไม่ได้ตั้งค่าปุ่มลัด","dashboard.words":"คำ","dashboard.total":"ทั้งหมด","dashboard.streak":"ต่อเนื่อง","dashboard.days":"วัน","dashboard.recording":"กำลังบันทึก","dashboard.sessions":"เซสชัน","dashboard.today":"วันนี้","dashboard.recentTranscriptions":"การถอดความล่าสุด","dashboard.noHistory":"ไม่มีประวัติ — กดปุ่มลัดเพื่อเริ่มบันทึก","dashboard.copy":"คัดลอก","dashboard.entries":"{{count}} รายการ","dashboard.stat":"สถิติ","dashboard.sys":"ระบบ","history.title":"ประวัติการถอดความ","history.search":"ค้นหา...","history.entries":"{{count}} รายการ","history.loading":"กำลังโหลด...","history.noResults":"ไม่พบผลลัพธ์","history.noHistory":"ไม่มีประวัติ — เริ่มบันทึกเสียง","history.count":"{{count}} รายการ","dictionary.title":"พจนานุกรมที่กำหนดเอง","dictionary.words":"{{count}} คำ","dictionary.add":"เพิ่ม","dictionary.search":"ค้นหา...","dictionary.loading":"กำลังโหลด...","dictionary.noResults":"ไม่พบผลลัพธ์","dictionary.noWords":"ไม่มีคำ — เพิ่มคำที่กำหนดเองเพื่อเพิ่มความแม่นยำของ STT","dictionary.used":"ใช้แล้ว {{count}} ครั้ง","dictionary.editTitle":"แก้ไขคำ","dictionary.addTitle":"เพิ่มคำ","dictionary.word":"คำ","dictionary.pronunciation":"การออกเสียง (ไม่บังคับ)","commands.title":"คำสั่ง LLM","commands.count":"{{count}} รายการ","commands.add":"เพิ่ม","commands.activeCommand":"คำสั่งที่ใช้งานอยู่","commands.none":"ไม่มี","commands.loading":"กำลังโหลด...","commands.noCommands":"ไม่มีคำสั่ง — คลิกเพิ่มเพื่อสร้าง","commands.editTitle":"แก้ไขคำสั่ง","commands.addTitle":"เพิ่มคำสั่ง","commands.name":"ชื่อ","commands.description":"คำอธิบาย","commands.promptTemplate":"เทมเพลตพรอมต์","commands.promptHelp":"{{text}} จะถูกแทนที่ด้วยข้อความที่ถอดความ","commands.defaultPrompt":"กรุณาปรับปรุง {{text}}","settings.title":"การตั้งค่า","settings.tabs.general":"ทั่วไป","settings.tabs.audio":"เสียง","settings.tabs.stt":"STT","settings.tabs.llm":"LLM","settings.tabs.about":"เกี่ยวกับ","settings.shortcuts":"ปุ่มลัด","settings.dictation":"การบอกเล่า","settings.dictation.desc":"กดค้างไว้แล้วพูด เมื่อปล่อยจะเริ่มถอดความ","settings.agent":"โหมด Agent","settings.agent.descWithKey":"กด {{key}} สองครั้งเพื่อเข้าสู่โหมด Agent","settings.agent.descNoKey":"กรุณาตั้งค่าปุ่มลัดการบอกเล่าก่อน","settings.oneTouch":"โหมดสัมผัสเดียว","settings.oneTouch.desc":"กดเพื่อเริ่ม กดอีกครั้งเพื่อหยุด ต้องใช้ปุ่มลัดแยกต่างหาก","settings.key":"ปุ่ม","settings.notSet":"ยังไม่ได้ตั้งค่า","settings.enabled":"เปิดใช้งาน","settings.disabled":"ปิดใช้งาน","settings.interface":"อินเทอร์เฟซ","settings.theme":"ธีม","settings.theme.system":"ระบบ","settings.theme.light":"สว่าง","settings.theme.dark":"มืด","settings.language":"ภาษา","settings.appBehavior":"พฤติกรรมแอป","settings.closeToTray":"ย่อลงถาดระบบ","settings.autoLaunch":"เปิดอัตโนมัติเมื่อเริ่มระบบ","settings.autoInsert":"แทรกข้อความอัตโนมัติหลังถอดความ","settings.soundEffects":"เอฟเฟกต์เสียง","settings.microphone":"ไมโครโฟน","settings.inputDevice":"อุปกรณ์อินพุต","settings.deviceDefault":"(ค่าเริ่มต้น)","settings.textInsert":"การแทรกข้อความ","settings.insertMethod":"วิธีการแทรก","settings.insertClipboard":"คลิปบอร์ด (Ctrl+V)","settings.insertKeyboard":"จำลองการพิมพ์","settings.whisperModel":"โมเดล Whisper","settings.model.tiny":"tiny (39 MB, เร็วที่สุด)","settings.model.base":"base (74 MB, สมดุล)","settings.model.small":"small (244 MB, ดี)","settings.model.medium":"medium (769 MB, ดีเยี่ยม)","settings.model.large":"large-v3 (1.5 GB, ดีที่สุด)","settings.sttLanguage":"ภาษาที่รู้จัก","settings.sttLang.auto":"ตรวจจับอัตโนมัติ","settings.ollamaServer":"เซิร์ฟเวอร์ Ollama","settings.ollamaUrl":"URL เซิร์ฟเวอร์ Ollama","settings.ollamaHint":"หาก Ollama กำลังทำงาน จะเชื่อมต่ออัตโนมัติ ดาวน์โหลดโมเดลโดยตรงจาก Ollama (เช่น: ollama pull qwen3:4b)","settings.postProcess":"การประมวลผลเสียงหลังการบันทึก","settings.defaultAction":"คำสั่งประมวลผลเริ่มต้น","settings.action.none":"ไม่มี (ข้อความต้นฉบับ)","settings.action.refine":"ปรับปรุง (ไวยากรณ์ + ความเป็นธรรมชาติ)","settings.action.translate":"แปล","settings.action.summarize":"สรุป","settings.action.grammar":"แก้ไขไวยากรณ์","settings.action.custom":"พรอมต์ที่กำหนดเอง","settings.actionHint":"การประมวลผล LLM ที่เลือกจะถูกนำไปใช้กับข้อความที่ถอดความหลังจากบันทึก ทำงานเฉพาะเมื่อเชื่อมต่อ Ollama","settings.about.version":"เวอร์ชัน","settings.about.techStack":"เทคโนโลยีที่ใช้","settings.about.techStackValue":"Electron + React 19 + MUI 7 + TypeScript","settings.about.voiceEngine":"เอนจิ้นเสียง","settings.about.voiceEngineValue":"STT: faster-whisper (ในเครื่อง) / LLM: Ollama (ในเครื่อง)","settings.about.description":"ผู้ช่วยเสียง AI ในเครื่องที่พัฒนาจากความรู้การวิศวกรรมย้อนกลับ Speakly ทำงานได้อย่างสมบูรณ์ในเครื่องโดยไม่พึ่งพาบริการคลาวด์","settings.about.restartOnboarding":"ดูคู่มือการตั้งค่าเริ่มต้นอีกครั้ง","status.ollama":"OLLAMA","status.offline":"OFFLINE","status.nudge.title":"Ollama ยังไม่ได้ทำงาน","status.nudge.desc":"ต้องใช้ Ollama สำหรับการประมวลผล LLM (แปล สรุป ฯลฯ)","status.nudge.guide":"ดูคำแนะนำการติดตั้ง →","onboarding.welcome.title":"D3RO-VOICE","onboarding.welcome.desc":"ไม่ต้องพิมพ์ — แค่พูด ผู้ช่วยเสียง AI ในเครื่อง","onboarding.welcome.start":"เริ่มต้น","onboarding.mic.title":"การตั้งค่าไมโครโฟน","onboarding.mic.desc":"เลือกไมโครโฟนที่ต้องการใช้ สามารถเปลี่ยนได้ในการตั้งค่า","onboarding.hotkey.title":"การตั้งค่าปุ่มลัด","onboarding.hotkey.desc":"ตั้งค่าปุ่มลัดสำหรับการบอกเล่า กดค้างไว้ขณะบันทึก","onboarding.hotkey.notSet":"ยังไม่ได้ตั้งค่าปุ่มลัด","onboarding.hotkey.change":"เปลี่ยนปุ่มลัด","onboarding.hotkey.set":"ตั้งค่าปุ่มลัด","onboarding.ollama.title":"ติดตั้ง Ollama (ไม่บังคับ)","onboarding.ollama.desc":"ต้องใช้ Ollama สำหรับการประมวลผล LLM (แปล สรุป ฯลฯ) การบอกเล่าเสียงทำงานได้โดยไม่มี Ollama","onboarding.ollama.download":"ดาวน์โหลด Ollama","onboarding.ollama.modelHint":"หลังติดตั้ง ดาวน์โหลดโมเดลผ่านเทอร์มินัล","onboarding.done.title":"ตั้งค่าเสร็จสมบูรณ์!","onboarding.done.descWithKey":"กด {{key}} ค้างไว้แล้วพูด — เสียงจะถูกแปลงเป็นข้อความ","onboarding.done.descNoKey":"ตั้งค่าปุ่มลัดในการตั้งค่าเพื่อเริ่มการบอกเล่าเสียง","onboarding.done.start":"เริ่มต้น","onboarding.back":"ย้อนกลับ","onboarding.next":"ถัดไป","hotkey.title":"การตั้งค่าปุ่มลัด","hotkey.dictationTitle":"ตั้งค่าปุ่มลัดการบอกเล่า","hotkey.oneTouchTitle":"ตั้งค่าปุ่มลัดโหมดสัมผัสเดียว","hotkey.prompt":"กดปุ่มที่ต้องการ...","hotkey.ready":"✓ {{keys}} — กดบันทึก","hotkey.noKey":"กรุณากรอกปุ่ม","hotkey.reserved":"{{keys}} เป็นปุ่มลัดที่ระบบสงวนไว้","hotkey.current":"ปัจจุบัน: {{keys}}","hotkey.hint":"กรอกปุ่มลัด (เช่น: Ctrl+Shift+Q) หรือปุ่มเดี่ยว (เช่น: F5)","hotkey.reset":"กรอกใหม่","ollama.title":"OLLAMA SETUP GUIDE","ollama.step1.title":"ขั้นตอนที่ 1 — ติดตั้ง Ollama","ollama.step1.desc":"Ollama เป็นเครื่องมือฟรีสำหรับรัน LLM ในเครื่อง","ollama.step2.title":"ขั้นตอนที่ 2 — ดาวน์โหลดโมเดล","ollama.step2.desc":"ดาวน์โหลดโมเดลที่ต้องการผ่านเทอร์มินัล แนะนำ:","ollama.step2.alt":"หรือโมเดลที่ใหญ่กว่า: ollama pull qwen3:8b (แม่นยำกว่า ช้ากว่า)","ollama.step3.title":"ขั้นตอนที่ 3 — เชื่อมต่ออัตโนมัติ","ollama.step3.desc":"เมื่อ Ollama ทำงาน D3RO-VOICE จะตรวจพบโดยอัตโนมัติ เมื่อไฟ LED บนแถบสถานะเปลี่ยนจากสีแดงเป็นสีเขียว — พร้อมใช้งาน!","service.sttEngine":"STT ENGINE","service.ollamaLlm":"OLLAMA LLM","service.hotkeyHook":"HOTKEY HOOK","service.audioInput":"AUDIO INPUT","service.ready":"READY","service.connected":"CONNECTED","service.offline":"OFFLINE","service.active":"ACTIVE","service.standby":"STANDBY","common.cancel":"ยกเลิก","common.save":"บันทึก","common.delete":"ลบ","common.add":"เพิ่ม","common.edit":"แก้ไข","common.close":"ปิด","common.confirm":"ยืนยัน","common.loading":"กำลังโหลด...","common.copy":"คัดลอก","common.test":"ทดสอบ","common.stop":"หยุด","date.today":"วันนี้","date.yesterday":"เมื่อวาน","settings.theme.nord":"Nord","settings.theme.solarized":"Solarized","settings.theme.catppuccin":"Catppuccin","settings.theme.dracula":"Dracula","settings.sttLang.ko":"เกาหลี","settings.sttLang.en":"อังกฤษ","settings.sttLang.ja":"ญี่ปุ่น","settings.sttLang.zh":"จีน","template.outputHelperText":"ใช้ {{ชื่อฟิลด์}} สำหรับตัวยึดตำแหน่ง","nav.meeting":"การประชุม","meeting.title":"โหมดการประชุม","meeting.newMeeting":"การประชุมใหม่","meeting.startRecording":"เริ่มบันทึก","meeting.stopRecording":"หยุดบันทึก","meeting.recording":"กำลังบันทึก","meeting.processing":"กำลังสร้างรายงานการประชุม...","meeting.completed":"เสร็จสิ้น","meeting.error":"ข้อผิดพลาด","meeting.elapsed":"เวลาที่ผ่านไป","meeting.memoPlaceholder":"พิมพ์บันทึก (Enter เพื่อเพิ่ม)","meeting.memoAdded":"เพิ่มบันทึกแล้ว","meeting.noSessions":"ไม่มีการบันทึกการประชุม","meeting.noSessionsDesc":"กด \xabการประชุมใหม่\xbb เพื่อเริ่มบันทึก","meeting.summary":"สรุป","meeting.decisions":"การตัดสินใจ","meeting.actionItems":"รายการดำเนินการ","meeting.timeline":"ไทม์ไลน์","meeting.transcript":"ถอดความดิบ","meeting.memos":"บันทึก","meeting.exportPdf":"ส่งออก PDF","meeting.exportMarkdown":"ส่งออก Markdown","meeting.delete":"ลบ","meeting.deleteConfirm":"ลบรายงานการประชุมนี้?","meeting.backToList":"กลับไปยังรายการ","meeting.notificationTitle":"รายงานการประชุมพร้อมแล้ว","meeting.notificationBody":"สร้างรายงานการประชุมเสร็จแล้ว","meeting.sessions":"{{count}} เซสชัน","meeting.duration":"{{minutes}} นาที","meeting.editTitle":"แก้ไขชื่อ","meeting.untitled":"การประชุมที่ไม่มีชื่อ","meeting.processingStep.merging":"กำลังรวมการถอดความ...","meeting.processingStep.generating":"กำลังสร้างรายงานด้วย LLM...","meeting.processingStep.parsing":"กำลังวิเคราะห์รายงาน...","meeting.processingStep.saving":"กำลังบันทึก...","meeting.processingStep.notifying":"กำลังส่งการแจ้งเตือน...","meeting.transcriptTab":"การถอดความ","meeting.addDocument":"เพิ่มเอกสาร","meeting.selectTemplate":"เลือกแม่แบบ","meeting.generate":"สร้าง","meeting.generating":"กำลังสร้างเอกสาร...","meeting.editMode":"แก้ไข","meeting.previewMode":"ดูตัวอย่าง","meeting.modified":"แก้ไขแล้ว","meeting.originalText":"ต้นฉบับ","meeting.editedText":"แก้ไขแล้ว","meeting.exportDocx":"ส่งออก DOCX","meeting.exportTxt":"ส่งออก TXT","meeting.exportFormat":"ส่งออก","meeting.customPrompt":"พรอมต์กำหนดเอง","meeting.templateName":"ชื่อแม่แบบ","meeting.templatePrompt":"พรอมต์ AI","meeting.templateSave":"บันทึกแม่แบบ","meeting.documentDeleted":"ลบเอกสารแล้ว","meeting.autoSaved":"บันทึกอัตโนมัติ","meeting.minutesTemplate":"รายงานการประชุม","meeting.reportTemplate":"รายงาน","meeting.ideaNoteTemplate":"บันทึกไอเดีย","meeting.customTemplate":"กำหนดเอง","meeting.downloadTranscript":"ดาวน์โหลดการถอดความ","meeting.polish":"ปรับแต่งด้วย AI","meeting.polishing":"AI กำลังปรับแต่งการถอดความ...","meeting.polished":"ปรับแต่งด้วย AI เสร็จสิ้น","meeting.mindmapTemplate":"แผนที่ความคิด","meeting.chat":"แชท AI","meeting.chatPlaceholder":"ถามเกี่ยวกับการประชุม...","meeting.chatSend":"ส่ง","meeting.chatClear":"ล้างแชท","meeting.copyToClipboard":"คัดลอกไปยังคลิปบอร์ด","meeting.copied":"คัดลอกแล้ว","meeting.chatCollapse":"ยุบแชท","meeting.chatExpand":"ขยายแชท","meeting.exportMd":"Markdown (.md)","meeting.exportPdfFmt":"PDF (.pdf)","meeting.polishFailed":"AI ปรับแต่งล้มเหลว","meeting.viewDetailError":"ไม่สามารถโหลดรายละเอียดการประชุมได้","meeting.startRecordingError":"ไม่สามารถเริ่มการบันทึกได้","meeting.diarize":"แยกผู้พูด","meeting.diarizing":"กำลังระบุผู้พูด...","meeting.diarizeComplete":"แยกผู้พูดเสร็จสิ้น","meeting.speaker":"ผู้พูด","settings.hfToken":"โทเค็น HuggingFace","settings.hfTokenHint":"ต้องใช้โทเค็น HuggingFace สำหรับการแยกผู้พูด","settings.diarization":"การแยกผู้พูด","settings.diarizationHint":"ระบุผู้พูดโดยอัตโนมัติหลังจากการบันทึกสิ้นสุด"}')};function q(a){return({zh:"zh-CN","zh-TW":"zh-TW"})[a]??a}let r=(0,e.createContext)(null),s={load:()=>null,save:()=>{}};function t({initialLocale:a="ko",storage:b=s,children:c}){let[h,i]=(0,e.useState)(a),j=(0,e.useCallback)(a=>{i(a),b.save(a)},[b]),k=(0,e.useMemo)(()=>{let a=p[h]??f,b=(b,c)=>(function(a,b,c){let d=b[a]??g[a]??f[a]??a;if(c)for(let[a,b]of Object.entries(c))d=d.replaceAll(`{{${a}}}`,String(b));return d})(b,a,c);return{locale:h,t:b,setLocale:j,formatDate:function(a){let b=q(a);return(a,c)=>{let d="number"==typeof a?new Date(a):a;return new Intl.DateTimeFormat(b,c).format(d)}}(h),formatNumber:function(a){let b=q(a);return(a,c)=>new Intl.NumberFormat(b,c).format(a)}(h),formatRelativeDate:a=>{let c=new Date(a);c.setHours(0,0,0,0);let d=new Date;d.setHours(0,0,0,0);let e=new Date(d);if(e.setDate(e.getDate()-1),c.getTime()===d.getTime())return b("date.today");if(c.getTime()===e.getTime())return b("date.yesterday");let f=q(h);return new Intl.DateTimeFormat(f,{month:"short",day:"numeric"}).format(c).toUpperCase()},formatTime:function(a){let b=q(a);return a=>new Intl.DateTimeFormat(b,{hour:"2-digit",minute:"2-digit"}).format(new Date(a))}(h)}},[h,j]);return(0,d.jsx)(r.Provider,{value:k,children:c})}function u(){let a=(0,e.useContext)(r);if(!a)throw Error("useI18n must be used within ");return a}},90724:(a,b,c)=>{"use strict";c.d(b,{I18nProvider:()=>d});let d=(0,c(25459).registerClientReference)(function(){throw Error("Attempted to call I18nProvider() from the server but I18nProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\workspace\\voice\\apps\\web\\src\\components\\providers\\i18n-provider.tsx","I18nProvider")}};