@x18n/ui 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.mjs +7 -4
  2. package/dist/nitro.json +1 -1
  3. package/dist/public/200.html +1 -1
  4. package/dist/public/404.html +1 -1
  5. package/dist/public/_nuxt/{SGqoyjTw.js → 0cXQUs3T.js} +1 -1
  6. package/dist/public/_nuxt/{B-pOeIed.js → BJFGPxOj.js} +1 -1
  7. package/dist/public/_nuxt/{BQFxnUqO.js → BR2xHYez.js} +1 -1
  8. package/dist/public/_nuxt/{C67ZD0uD.js → BSomwWYk.js} +1 -1
  9. package/dist/public/_nuxt/{C-7DUGFU.js → BWdW6dXs.js} +1 -1
  10. package/dist/public/_nuxt/Bkjpr8TV.js +1 -0
  11. package/dist/public/_nuxt/{BEQcjiBv.js → BqPdh3b3.js} +1 -1
  12. package/dist/public/_nuxt/{02DyCwxD.js → BtGb9LkL.js} +1 -1
  13. package/dist/public/_nuxt/{Ze5G054N.js → C059D2ly.js} +1 -1
  14. package/dist/public/_nuxt/{CJr8eCPg.js → CGD9uLl4.js} +1 -1
  15. package/dist/public/_nuxt/{DBxHLmxb.js → CU-cHgDp.js} +1 -1
  16. package/dist/public/_nuxt/CcXhso-T.js +1 -0
  17. package/dist/public/_nuxt/{B95Xo308.js → Cnqs6S_B.js} +1 -1
  18. package/dist/public/_nuxt/Cr_IeTC5.js +1 -0
  19. package/dist/public/_nuxt/{Cbqdjx_Y.js → D3lsgOGg.js} +1 -1
  20. package/dist/public/_nuxt/{BQbZdzYt.js → D4W_YgBv.js} +1 -1
  21. package/dist/public/_nuxt/{CZm1hx3M.js → D5tpRc1q.js} +1 -1
  22. package/dist/public/_nuxt/Dc1J86T9.js +1 -0
  23. package/dist/public/_nuxt/{Bqlbbq4u.js → DsqCc3fC.js} +1 -1
  24. package/dist/public/_nuxt/{Vq2dNnuk.js → Eg7r6GmC.js} +1 -1
  25. package/dist/public/_nuxt/{BWmypMON.js → JMXpOiMg.js} +1 -1
  26. package/dist/public/_nuxt/{n6pi28wD.js → Q_pa0PYz.js} +4 -4
  27. package/dist/public/_nuxt/builds/latest.json +1 -1
  28. package/dist/public/_nuxt/builds/meta/235d93ab-29e8-4de8-b81b-d46616104d4c.json +1 -0
  29. package/dist/public/_nuxt/{BLH-zAnn.js → eVN_U-F6.js} +1 -1
  30. package/dist/public/_nuxt/entry.ByHxb6Pl.css +1 -0
  31. package/dist/public/_nuxt/{CgfzuETb.js → z56wu47o.js} +1 -1
  32. package/dist/public/index.html +1 -1
  33. package/package.json +4 -4
  34. package/dist/public/_nuxt/BZwyJa72.js +0 -1
  35. package/dist/public/_nuxt/CEb7njzd.js +0 -1
  36. package/dist/public/_nuxt/D3K1nMHN.js +0 -1
  37. package/dist/public/_nuxt/D7-xsrqe.js +0 -1
  38. package/dist/public/_nuxt/builds/meta/33bfcf49-6c29-4ff2-8a7c-2676280e43b0.json +0 -1
  39. package/dist/public/_nuxt/entry.D2md-EYL.css +0 -1
package/dist/index.mjs CHANGED
@@ -2,11 +2,11 @@ import { fileURLToPath } from "node:url";
2
2
  import { defineDevframe, defineRpcFunction } from "devframe";
3
3
  import { toJsonSchema } from "@valibot/to-json-schema";
4
4
  import { extractItems, findCandidates, toPlanFile } from "@x18n/builtins/extractors";
5
- import { X18nError, createLineIndex, parseMessageBatch, placeholderProblems, renderPrompt, toWireDiagnostic } from "@x18n/core";
5
+ import { createLineIndex, errors, parseMessageBatch, placeholderProblems, renderPrompt, toWireDiagnostic } from "@x18n/core";
6
6
  import * as v from "valibot";
7
7
  //#region package.json
8
8
  var name = "@x18n/ui";
9
- var version = "0.0.7";
9
+ var version = "0.0.8";
10
10
  var description = "x18n UI as a devframe: dev server, static report, in-browser workspace and VS Code panel";
11
11
  var homepage = "https://github.com/x18n-dev/x18n#readme";
12
12
  //#endregion
@@ -154,7 +154,10 @@ const AgentDeleteSchema = v.object({
154
154
  /** The named project, or the only one. */
155
155
  function pickProject(projects, name) {
156
156
  const found = name === void 0 ? projects.length === 1 ? projects[0] : void 0 : projects.find((p) => p.name === name);
157
- if (!found) throw new X18nError("X18N0003", name === void 0 ? `pass a project (${projects.map((p) => p.name).join(", ")})` : `"${name}" (${projects.map((p) => p.name).join(", ")})`);
157
+ if (!found) throw errors.X18N0003({
158
+ name,
159
+ available: projects.map((p) => p.name)
160
+ });
158
161
  return found;
159
162
  }
160
163
  function percent(coverage) {
@@ -454,7 +457,7 @@ function registerAgentTools(ctx, projects) {
454
457
  });
455
458
  tool("get", "read", "One key: its value in every locale with file and line, locales where it is missing, usages in code with a few lines of context, and diagnostics. Check a key with it before creating or renaming one.", KeyQuerySchema, (query) => {
456
459
  const detail = keyDetail(pick(query.project), query.key);
457
- if (!detail) throw new X18nError("X18N4006", `"${query.key}"; find keys with x18n_keys`);
460
+ if (!detail) throw errors.X18N4006({ key: query.key });
458
461
  return detail;
459
462
  });
460
463
  tool("usages", "read", "Usages in code, paged: of one `key` (usages with a computed key under a prefix of it are marked `possible`), of one file (`path`), or all. Each usage has file, line, column and a code snippet.", AgentUsagesSchema, (query) => {
package/dist/nitro.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "date": "2026-10-21T04:41:59.742Z",
2
+ "date": "2026-10-21T07:27:51.124Z",
3
3
  "preset": "static",
4
4
  "framework": {
5
5
  "name": "nuxt",
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"/_nuxt/n6pi28wD.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="/_nuxt/entry.D2md-EYL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/n6pi28wD.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bw3sjlsE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4dwYDex.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bqlbbq4u.js"><script type="module" src="/_nuxt/n6pi28wD.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.B3F8lAkA.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DWpOVjuS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CQOvHI-h.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BO-H0E44.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChIAts7W.js"><link rel="icon" href="./logo.svg" type="image/svg+xml"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"33bfcf49-6c29-4ff2-8a7c-2676280e43b0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792557719683,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"/_nuxt/Q_pa0PYz.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="/_nuxt/entry.ByHxb6Pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Q_pa0PYz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bw3sjlsE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4dwYDex.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsqCc3fC.js"><script type="module" src="/_nuxt/Q_pa0PYz.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.B3F8lAkA.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DWpOVjuS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CQOvHI-h.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BO-H0E44.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChIAts7W.js"><link rel="icon" href="./logo.svg" type="image/svg+xml"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"235d93ab-29e8-4de8-b81b-d46616104d4c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792567671041,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"/_nuxt/n6pi28wD.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="/_nuxt/entry.D2md-EYL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/n6pi28wD.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bw3sjlsE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4dwYDex.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bqlbbq4u.js"><script type="module" src="/_nuxt/n6pi28wD.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.B3F8lAkA.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DWpOVjuS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CQOvHI-h.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BO-H0E44.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChIAts7W.js"><link rel="icon" href="./logo.svg" type="image/svg+xml"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"33bfcf49-6c29-4ff2-8a7c-2676280e43b0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792557719684,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"/_nuxt/Q_pa0PYz.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="/_nuxt/entry.ByHxb6Pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Q_pa0PYz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bw3sjlsE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4dwYDex.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsqCc3fC.js"><script type="module" src="/_nuxt/Q_pa0PYz.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.B3F8lAkA.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DWpOVjuS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CQOvHI-h.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BO-H0E44.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ChIAts7W.js"><link rel="icon" href="./logo.svg" type="image/svg+xml"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"235d93ab-29e8-4de8-b81b-d46616104d4c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792567671042,false]</script></body></html>
@@ -1 +1 @@
1
- import{Ct as e,Et as t,H as n,L as r,M as i,_ as a,c as o,d as s,it as c,l,m as u,r as d,s as f,u as p}from"./B4prFwj0.js";import{S as m,c as h,t as g}from"./Bqlbbq4u.js";var _=f(()=>!!(g.value?.capabilities.openInEditor&&h.value));function v(e,t=1,n=1){_.value&&g.value.openInEditor({project:h.value,path:e,line:t,column:n})}var y=[{match:/\.vue$/,name:`vue`,icon:`i-catppuccin:vue`},{match:/\.svelte$/,name:`svelte`,icon:`i-catppuccin:svelte`},{match:/\.astro$/,name:`astro`,icon:`i-catppuccin:astro`},{match:/\.tsx$/,name:`tsx`,icon:`i-catppuccin:typescript-react`},{match:/\.jsx$/,name:`jsx`,icon:`i-catppuccin:javascript-react`},{match:/\.d\.[cm]?ts$/,name:`dts`,icon:`i-catppuccin:typescript-def`},{match:/\.(?:test|spec)\.[cm]?[jt]sx?$/,name:`test`,icon:`i-catppuccin:typescript-test`},{match:/\.[cm]?ts$/,name:`ts`,icon:`i-catppuccin:typescript`},{match:/\.[cm]?js$/,name:`js`,icon:`i-catppuccin:javascript`},{match:/\.json[5c]?$/,name:`json`,icon:`i-catppuccin:json`},{match:/\.ya?ml$/,name:`yaml`,icon:`i-catppuccin:yaml`},{match:/\.toml$/,name:`toml`,icon:`i-catppuccin:toml`},{match:/\.md$/,name:`markdown`,icon:`i-catppuccin:markdown`},{match:/\.html?$/,name:`html`,icon:`i-catppuccin:html`},{match:/\.php$/,name:`php`,icon:`i-catppuccin:php`},{match:/\.rb$/,name:`ruby`,icon:`i-catppuccin:ruby`},{match:/\.(?:xml|xliff|xlf)$/,name:`xml`,icon:`i-catppuccin:xml`},{match:/\.properties$/,name:`properties`,icon:`i-catppuccin:properties`},{match:/\.(?:po|pot|strings|arb|txt)$/,name:`text`,icon:`i-catppuccin:text`}];function b(e){return y.find(t=>t.match.test(e))??{name:`file`,icon:`i-catppuccin:file`}}var x=[`title`],S=a({__name:`FileIcon`,props:{path:{}},setup(t){let n=t,r=f(()=>b(n.path));return(t,n)=>(i(),s(`span`,{class:e([`icon-catppuccin shrink-0`,r.value.icon]),title:r.value.name,"aria-hidden":`true`},null,10,x))}}),C={class:`truncate`},w={class:`color-faint`},T={class:`color-base`},E={key:0,class:`color-faint`},D=a({__name:`FilePath`,props:{path:{},line:{},column:{},icon:{type:Boolean,default:!0}},setup(a){let h=f(()=>{let e=a.path.lastIndexOf(`/`)+1;return{dir:a.path.slice(0,e),base:a.path.slice(e)}});function g(e){e.preventDefault(),e.stopPropagation(),v(a.path,a.line,a.column)}return(f,v)=>(i(),l(r(c(_)?`button`:`span`),{type:c(_)?`button`:void 0,class:e([`inline-flex min-w-0 max-w-full items-center gap-1.5 font-mono text-xs`,c(_)&&`focus-ring cursor-pointer text-left hover:underline`]),title:c(_)?`${c(m)(`detail.openInEditor`)}: ${a.path}`:a.path,onClick:v[0]||=e=>c(_)&&g(e)},{default:n(()=>[a.icon?(i(),l(S,{key:0,path:a.path},null,8,[`path`])):p(``,!0),o(`span`,C,[o(`span`,w,t(h.value.dir),1),o(`span`,T,t(h.value.base),1),a.line===void 0?p(``,!0):(i(),s(`span`,E,[u(`:`+t(a.line),1),a.column===void 0?p(``,!0):(i(),s(d,{key:0},[u(`:`+t(a.column),1)],64))]))])]),_:1},8,[`type`,`class`,`title`]))}});export{_ as n,v as r,D as t};
1
+ import{Ct as e,Et as t,H as n,L as r,M as i,_ as a,c as o,d as s,it as c,l,m as u,r as d,s as f,u as p}from"./B4prFwj0.js";import{S as m,c as h,t as g}from"./DsqCc3fC.js";var _=f(()=>!!(g.value?.capabilities.openInEditor&&h.value));function v(e,t=1,n=1){_.value&&g.value.openInEditor({project:h.value,path:e,line:t,column:n})}var y=[{match:/\.vue$/,name:`vue`,icon:`i-catppuccin:vue`},{match:/\.svelte$/,name:`svelte`,icon:`i-catppuccin:svelte`},{match:/\.astro$/,name:`astro`,icon:`i-catppuccin:astro`},{match:/\.tsx$/,name:`tsx`,icon:`i-catppuccin:typescript-react`},{match:/\.jsx$/,name:`jsx`,icon:`i-catppuccin:javascript-react`},{match:/\.d\.[cm]?ts$/,name:`dts`,icon:`i-catppuccin:typescript-def`},{match:/\.(?:test|spec)\.[cm]?[jt]sx?$/,name:`test`,icon:`i-catppuccin:typescript-test`},{match:/\.[cm]?ts$/,name:`ts`,icon:`i-catppuccin:typescript`},{match:/\.[cm]?js$/,name:`js`,icon:`i-catppuccin:javascript`},{match:/\.json[5c]?$/,name:`json`,icon:`i-catppuccin:json`},{match:/\.ya?ml$/,name:`yaml`,icon:`i-catppuccin:yaml`},{match:/\.toml$/,name:`toml`,icon:`i-catppuccin:toml`},{match:/\.md$/,name:`markdown`,icon:`i-catppuccin:markdown`},{match:/\.html?$/,name:`html`,icon:`i-catppuccin:html`},{match:/\.php$/,name:`php`,icon:`i-catppuccin:php`},{match:/\.rb$/,name:`ruby`,icon:`i-catppuccin:ruby`},{match:/\.(?:xml|xliff|xlf)$/,name:`xml`,icon:`i-catppuccin:xml`},{match:/\.properties$/,name:`properties`,icon:`i-catppuccin:properties`},{match:/\.(?:po|pot|strings|arb|txt)$/,name:`text`,icon:`i-catppuccin:text`}];function b(e){return y.find(t=>t.match.test(e))??{name:`file`,icon:`i-catppuccin:file`}}var x=[`title`],S=a({__name:`FileIcon`,props:{path:{}},setup(t){let n=t,r=f(()=>b(n.path));return(t,n)=>(i(),s(`span`,{class:e([`icon-catppuccin shrink-0`,r.value.icon]),title:r.value.name,"aria-hidden":`true`},null,10,x))}}),C={class:`truncate`},w={class:`color-faint`},T={class:`color-base`},E={key:0,class:`color-faint`},D=a({__name:`FilePath`,props:{path:{},line:{},column:{},icon:{type:Boolean,default:!0}},setup(a){let h=f(()=>{let e=a.path.lastIndexOf(`/`)+1;return{dir:a.path.slice(0,e),base:a.path.slice(e)}});function g(e){e.preventDefault(),e.stopPropagation(),v(a.path,a.line,a.column)}return(f,v)=>(i(),l(r(c(_)?`button`:`span`),{type:c(_)?`button`:void 0,class:e([`inline-flex min-w-0 max-w-full items-center gap-1.5 font-mono text-xs`,c(_)&&`focus-ring cursor-pointer text-left hover:underline`]),title:c(_)?`${c(m)(`detail.openInEditor`)}: ${a.path}`:a.path,onClick:v[0]||=e=>c(_)&&g(e)},{default:n(()=>[a.icon?(i(),l(S,{key:0,path:a.path},null,8,[`path`])):p(``,!0),o(`span`,C,[o(`span`,w,t(h.value.dir),1),o(`span`,T,t(h.value.base),1),a.line===void 0?p(``,!0):(i(),s(`span`,E,[u(`:`+t(a.line),1),a.column===void 0?p(``,!0):(i(),s(d,{key:0},[u(`:`+t(a.column),1)],64))]))])]),_:1},8,[`type`,`class`,`title`]))}});export{_ as n,v as r,D as t};
@@ -1 +1 @@
1
- import{Ct as e,Et as t,F as n,H as r,M as i,P as a,Q as o,Tt as s,_ as c,c as l,d as u,h as d,it as f,l as p,m,r as h,s as g,u as _}from"./B4prFwj0.js";import{C as v,S as y,a as b,l as x,n as S,t as C,v as w,y as T}from"./Bqlbbq4u.js";import{i as E,n as D}from"#entry";import{t as O}from"./ztSLDBsK.js";import{t as k}from"./DQNu8teu.js";import{n as A,r as j,t as M}from"./BWmypMON.js";import{t as N}from"./BZwyJa72.js";import{t as P}from"./02DyCwxD.js";var F={class:`inline-flex items-center gap-1 font-mono text-xs color-muted`},I={key:0,class:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`},L={class:`flex items-center gap-1.5 font-mono`},R=c({__name:`ChangedValues`,props:{project:{},keyName:{},locales:{}},setup(e){let s=e,c=g(()=>s.locales??b.value.map(e=>e.code)),v=o();async function x(){v.value=await C.value?.key(s.project,s.keyName)}return(e,o)=>(i(),p(j,{label:f(y)(`history.locales`,{count:c.value.length}),align:`left`,onShow:x},{trigger:r(()=>[n(e.$slots,`default`,{},()=>[l(`span`,F,[c.value.length===1?(i(),u(h,{key:0},[d(D,{code:c.value[0]},null,8,[`code`]),m(t(c.value[0]),1)],64)):(i(),u(h,{key:1},[m(t(f(y)(`history.locales`,{count:c.value.length})),1)],64))])])]),default:r(()=>[v.value?(i(),u(`div`,I,[(i(!0),u(h,null,a(c.value,e=>(i(),u(h,{key:e},[l(`span`,L,[d(D,{code:e},null,8,[`code`]),m(t(e),1)]),d(N,{value:v.value.messages.find(t=>t.locale===e)?.value,placeholders:v.value.messages.find(t=>t.locale===e)?.placeholders??[]},null,8,[`value`,`placeholders`])],64))),128))])):_(``,!0)]),_:3},8,[`label`]))}}),z={class:`flex flex-col gap-1 px-4 py-3`},B={class:`font-mono text-2xl tabular-nums`},V={class:`label`},H=c({__name:`UiStat`,props:{label:{},value:{}},setup(e){return(n,r)=>(i(),u(`div`,z,[l(`span`,B,t(e.value.toLocaleString(f(v))),1),l(`span`,V,t(e.label),1)]))}}),U={class:`grid grid-cols-2 border-b border-base md:grid-cols-4`},W={class:`flex items-center gap-2 font-mono`},G={key:0,class:`badge`},K=[`title`],q={class:`text-xs color-muted tabular-nums`},J={key:0,class:`color-warn`},Y={class:`flex w-12 shrink-0 justify-center`},X={class:`grid md:grid-cols-2`},Z={class:`font-mono text-xs color-error tabular-nums`},Q={class:`font-mono text-xs color-warn tabular-nums`},$={key:0,class:`px-4 py-3 color-muted`},ee={class:`flex-auto font-mono text-xs`},te={class:`font-mono tabular-nums`},ne={class:`flex flex-wrap gap-1 px-4 py-3`},re={key:0,class:`color-muted`},ie={class:`flex flex-wrap gap-1 px-4 py-3`},ae={key:0,class:`color-muted`},oe=[`aria-expanded`,`onClick`],se=[`title`],ce={key:0,class:`border-t border-base`},le={class:`truncate font-mono text-xs`},ue={key:0,class:`py-1.5 pl-10 pr-4 text-xs color-muted`},de=c({__name:`index`,setup(n){function c(e){return e.total===0?0:e.outdated/e.total*100}let v=o(new Set);function C(e,t){return t===0!==v.value.has(e.revision??`local`)}function j(e){let t=e.revision??`local`,n=new Set(v.value);n.delete(t)||n.add(t),v.value=n}let N=g(()=>(S.value?.locales??[]).filter(e=>e.code!==S.value?.sourceLocale)),F=g(()=>N.value.filter(e=>e.missing+e.empty+e.outdated>0)),I=g(()=>S.value&&[{label:y(`overview.keys`),value:S.value.keys,to:`/keys`},{label:y(`overview.resources`),value:S.value.resources,to:`/project`},{label:y(`overview.usages`),value:S.value.usages,to:`/usages`},{label:y(`overview.locales`),value:S.value.locales.length,to:`/keys`}]);return(n,o)=>f(S)?(i(),p(O,{key:0},{default:r(()=>[l(`div`,U,[(i(!0),u(h,null,a(I.value,e=>(i(),p(f(E),{key:e.label,to:e.to,class:`focus-ring border-r border-base transition-colors last:border-r-0 hover:bg-hover`},{default:r(()=>[d(H,{label:e.label,value:e.value},null,8,[`label`,`value`])]),_:2},1032,[`to`]))),128))]),d(k,{index:`01`,title:f(y)(`overview.coverage`)},{aside:r(()=>[o[0]||=l(`span`,{class:`flex-auto`},null,-1),N.value.length?(i(),p(A,{key:0,text:f(M)((F.value.length?F.value:N.value).map(e=>({locale:e.code,stale:e.outdated>0}))),label:f(y)(`prompt.copyAll`),hint:f(y)(`prompt.allHint`)},null,8,[`text`,`label`,`hint`])):_(``,!0)]),default:r(()=>[(i(!0),u(h,null,a(f(b),n=>(i(),u(`div`,{key:n.code,class:`flex items-center border-b border-base transition-colors last:border-b-0 hover:bg-hover`},[d(f(E),{to:`/locales/${encodeURIComponent(n.code)}`,class:`focus-ring grid flex-auto grid-cols-[7rem_1fr_4.5rem_14rem] items-center gap-4 py-2 pl-4`},{default:r(()=>[l(`span`,W,[d(D,{code:n.code},null,8,[`code`]),m(` `+t(n.code)+` `,1),n.code===f(S).sourceLocale?(i(),u(`span`,G,t(f(y)(`overview.source`)),1)):_(``,!0)]),l(`span`,{class:`h-1.5 flex border border-strong`,title:f(T)(n.code)},[l(`span`,{class:`h-full bg-inverse`,style:s({width:`${Math.max(0,n.percent-c(n))}%`})},null,4),l(`span`,{class:`h-full bg-[var(--x-warn)]`,style:s({width:`${c(n)}%`})},null,4)],8,K),l(`span`,{class:e([`text-right font-mono tabular-nums`,n.percent>=100&&`color-ok`])},t(f(w)(n.percent)),3),l(`span`,q,[m(t(f(y)(`overview.missing`,{missing:n.missing,empty:n.empty}))+` `,1),n.outdated?(i(),u(`span`,J,`· `+t(f(y)(`overview.outdated`,{count:n.outdated})),1)):_(``,!0)])]),_:2},1032,[`to`]),l(`span`,Y,[n.code===f(S).sourceLocale?_(``,!0):(i(),p(A,{key:0,text:f(M)([{locale:n.code,stale:n.outdated>0}]),label:n.outdated?f(y)(`prompt.copyStale`):f(y)(`prompt.copy`),hint:n.outdated?f(y)(`prompt.staleHint`):f(y)(`prompt.hint`)},null,8,[`text`,`label`,`hint`]))])]))),128))]),_:1},8,[`title`]),l(`div`,X,[d(k,{index:`02`,title:f(y)(`overview.diagnostics`),class:`md:border-r`},{aside:r(()=>[o[1]||=l(`span`,{class:`flex-auto`},null,-1),l(`span`,Z,t(f(y)(`overview.errors`,{count:f(S).diagnostics.errors})),1),l(`span`,Q,t(f(y)(`overview.warnings`,{count:f(S).diagnostics.warnings})),1)]),default:r(()=>[f(S).diagnostics.byCode.length?_(``,!0):(i(),u(`p`,$,t(f(y)(`overview.clean`)),1)),(i(!0),u(h,null,a(f(S).diagnostics.byCode,n=>(i(),u(`div`,{key:n.code,class:`flex items-center gap-2 px-4 py-1.5`},[l(`span`,{class:e(n.severity===`error`?`i-ph-x-circle-duotone color-error`:`i-ph-warning-duotone color-warn`)},null,2),l(`span`,ee,t(n.code),1),l(`span`,te,t(n.count),1)]))),128))]),_:1},8,[`title`]),l(`div`,null,[d(k,{index:`03`,title:f(y)(`overview.presets`)},{default:r(()=>[l(`div`,ne,[(i(!0),u(h,null,a(f(S).presets,e=>(i(),u(`span`,{key:e,class:`border border-strong px-1.5 font-mono text-xs`},t(e),1))),128)),f(S).presets.length?_(``,!0):(i(),u(`span`,re,t(f(y)(`overview.noPresets`)),1))])]),_:1},8,[`title`]),d(k,{index:`04`,title:f(y)(`overview.recent`)},{default:r(()=>[l(`div`,ie,[(i(!0),u(h,null,a(f(x),e=>(i(),p(R,{key:e,project:f(S).name,"key-name":e},{default:r(()=>[d(f(E),{to:`/keys/${encodeURIComponent(e)}`,class:`focus-ring border border-base px-1.5 font-mono text-xs hover:border-inverse`},{default:r(()=>[m(t(e),1)]),_:2},1032,[`to`])]),_:2},1032,[`project`,`key-name`]))),128)),f(x).length?_(``,!0):(i(),u(`span`,ae,t(f(y)(`overview.noRecent`)),1))])]),_:1},8,[`title`])])]),f(S).changes.length?(i(),p(k,{key:0,index:`05`,title:f(y)(`history.title`)},{default:r(()=>[(i(!0),u(h,null,a(f(S).changes,(n,s)=>(i(),u(`div`,{key:n.revision??`local`,class:`border-b border-base last:border-b-0`},[l(`button`,{type:`button`,class:`focus-ring flex w-full items-center gap-3 px-4 py-2 text-left transition-colors hover:bg-hover`,"aria-expanded":C(n,s),onClick:e=>j(n)},[l(`span`,{class:e([`i-ph-caret-right-duotone shrink-0 transition-transform`,C(n,s)&&`rotate-90`])},null,2),d(P,{change:n},null,8,[`change`]),o[2]||=l(`span`,{class:`flex-auto`},null,-1),l(`span`,{class:`badge`,title:f(y)(`overview.keys`)},t(n.total),9,se)],8,oe),C(n,s)?(i(),u(`div`,ce,[(i(!0),u(h,null,a(n.keys,e=>(i(),p(f(E),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-center gap-4 border-b border-base py-1.5 pl-10 pr-4 transition-colors last:border-b-0 hover:bg-hover`},{default:r(()=>[l(`span`,le,t(e.key),1),d(R,{project:f(S).name,"key-name":e.key,locales:e.locales},null,8,[`project`,`key-name`,`locales`])]),_:2},1032,[`to`]))),128)),n.total>n.keys.length?(i(),u(`p`,ue,t(f(y)(`history.more`,{count:n.total-n.keys.length})),1)):_(``,!0)])):_(``,!0)]))),128))]),_:1},8,[`title`])):_(``,!0)]),_:1})):_(``,!0)}});export{de as default};
1
+ import{Ct as e,Et as t,F as n,H as r,M as i,P as a,Q as o,Tt as s,_ as c,c as l,d as u,h as d,it as f,l as p,m,r as h,s as g,u as _}from"./B4prFwj0.js";import{C as v,S as y,a as b,l as x,n as S,t as C,v as w,y as T}from"./DsqCc3fC.js";import{i as E,n as D}from"#entry";import{t as O}from"./ztSLDBsK.js";import{t as k}from"./DQNu8teu.js";import{n as A,r as j,t as M}from"./JMXpOiMg.js";import{t as N}from"./CcXhso-T.js";import{t as P}from"./BtGb9LkL.js";var F={class:`inline-flex items-center gap-1 font-mono text-xs color-muted`},I={key:0,class:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`},L={class:`flex items-center gap-1.5 font-mono`},R=c({__name:`ChangedValues`,props:{project:{},keyName:{},locales:{}},setup(e){let s=e,c=g(()=>s.locales??b.value.map(e=>e.code)),v=o();async function x(){v.value=await C.value?.key(s.project,s.keyName)}return(e,o)=>(i(),p(j,{label:f(y)(`history.locales`,{count:c.value.length}),align:`left`,onShow:x},{trigger:r(()=>[n(e.$slots,`default`,{},()=>[l(`span`,F,[c.value.length===1?(i(),u(h,{key:0},[d(D,{code:c.value[0]},null,8,[`code`]),m(t(c.value[0]),1)],64)):(i(),u(h,{key:1},[m(t(f(y)(`history.locales`,{count:c.value.length})),1)],64))])])]),default:r(()=>[v.value?(i(),u(`div`,I,[(i(!0),u(h,null,a(c.value,e=>(i(),u(h,{key:e},[l(`span`,L,[d(D,{code:e},null,8,[`code`]),m(t(e),1)]),d(N,{value:v.value.messages.find(t=>t.locale===e)?.value,placeholders:v.value.messages.find(t=>t.locale===e)?.placeholders??[]},null,8,[`value`,`placeholders`])],64))),128))])):_(``,!0)]),_:3},8,[`label`]))}}),z={class:`flex flex-col gap-1 px-4 py-3`},B={class:`font-mono text-2xl tabular-nums`},V={class:`label`},H=c({__name:`UiStat`,props:{label:{},value:{}},setup(e){return(n,r)=>(i(),u(`div`,z,[l(`span`,B,t(e.value.toLocaleString(f(v))),1),l(`span`,V,t(e.label),1)]))}}),U={class:`grid grid-cols-2 border-b border-base md:grid-cols-4`},W={class:`flex items-center gap-2 font-mono`},G={key:0,class:`badge`},K=[`title`],q={class:`text-xs color-muted tabular-nums`},J={key:0,class:`color-warn`},Y={class:`flex w-12 shrink-0 justify-center`},X={class:`grid md:grid-cols-2`},Z={class:`font-mono text-xs color-error tabular-nums`},Q={class:`font-mono text-xs color-warn tabular-nums`},$={key:0,class:`px-4 py-3 color-muted`},ee={class:`flex-auto font-mono text-xs`},te={class:`font-mono tabular-nums`},ne={class:`flex flex-wrap gap-1 px-4 py-3`},re={key:0,class:`color-muted`},ie={class:`flex flex-wrap gap-1 px-4 py-3`},ae={key:0,class:`color-muted`},oe=[`aria-expanded`,`onClick`],se=[`title`],ce={key:0,class:`border-t border-base`},le={class:`truncate font-mono text-xs`},ue={key:0,class:`py-1.5 pl-10 pr-4 text-xs color-muted`},de=c({__name:`index`,setup(n){function c(e){return e.total===0?0:e.outdated/e.total*100}let v=o(new Set);function C(e,t){return t===0!==v.value.has(e.revision??`local`)}function j(e){let t=e.revision??`local`,n=new Set(v.value);n.delete(t)||n.add(t),v.value=n}let N=g(()=>(S.value?.locales??[]).filter(e=>e.code!==S.value?.sourceLocale)),F=g(()=>N.value.filter(e=>e.missing+e.empty+e.outdated>0)),I=g(()=>S.value&&[{label:y(`overview.keys`),value:S.value.keys,to:`/keys`},{label:y(`overview.resources`),value:S.value.resources,to:`/project`},{label:y(`overview.usages`),value:S.value.usages,to:`/usages`},{label:y(`overview.locales`),value:S.value.locales.length,to:`/keys`}]);return(n,o)=>f(S)?(i(),p(O,{key:0},{default:r(()=>[l(`div`,U,[(i(!0),u(h,null,a(I.value,e=>(i(),p(f(E),{key:e.label,to:e.to,class:`focus-ring border-r border-base transition-colors last:border-r-0 hover:bg-hover`},{default:r(()=>[d(H,{label:e.label,value:e.value},null,8,[`label`,`value`])]),_:2},1032,[`to`]))),128))]),d(k,{index:`01`,title:f(y)(`overview.coverage`)},{aside:r(()=>[o[0]||=l(`span`,{class:`flex-auto`},null,-1),N.value.length?(i(),p(A,{key:0,text:f(M)((F.value.length?F.value:N.value).map(e=>({locale:e.code,stale:e.outdated>0}))),label:f(y)(`prompt.copyAll`),hint:f(y)(`prompt.allHint`)},null,8,[`text`,`label`,`hint`])):_(``,!0)]),default:r(()=>[(i(!0),u(h,null,a(f(b),n=>(i(),u(`div`,{key:n.code,class:`flex items-center border-b border-base transition-colors last:border-b-0 hover:bg-hover`},[d(f(E),{to:`/locales/${encodeURIComponent(n.code)}`,class:`focus-ring grid flex-auto grid-cols-[7rem_1fr_4.5rem_14rem] items-center gap-4 py-2 pl-4`},{default:r(()=>[l(`span`,W,[d(D,{code:n.code},null,8,[`code`]),m(` `+t(n.code)+` `,1),n.code===f(S).sourceLocale?(i(),u(`span`,G,t(f(y)(`overview.source`)),1)):_(``,!0)]),l(`span`,{class:`h-1.5 flex border border-strong`,title:f(T)(n.code)},[l(`span`,{class:`h-full bg-inverse`,style:s({width:`${Math.max(0,n.percent-c(n))}%`})},null,4),l(`span`,{class:`h-full bg-[var(--x-warn)]`,style:s({width:`${c(n)}%`})},null,4)],8,K),l(`span`,{class:e([`text-right font-mono tabular-nums`,n.percent>=100&&`color-ok`])},t(f(w)(n.percent)),3),l(`span`,q,[m(t(f(y)(`overview.missing`,{missing:n.missing,empty:n.empty}))+` `,1),n.outdated?(i(),u(`span`,J,`· `+t(f(y)(`overview.outdated`,{count:n.outdated})),1)):_(``,!0)])]),_:2},1032,[`to`]),l(`span`,Y,[n.code===f(S).sourceLocale?_(``,!0):(i(),p(A,{key:0,text:f(M)([{locale:n.code,stale:n.outdated>0}]),label:n.outdated?f(y)(`prompt.copyStale`):f(y)(`prompt.copy`),hint:n.outdated?f(y)(`prompt.staleHint`):f(y)(`prompt.hint`)},null,8,[`text`,`label`,`hint`]))])]))),128))]),_:1},8,[`title`]),l(`div`,X,[d(k,{index:`02`,title:f(y)(`overview.diagnostics`),class:`md:border-r`},{aside:r(()=>[o[1]||=l(`span`,{class:`flex-auto`},null,-1),l(`span`,Z,t(f(y)(`overview.errors`,{count:f(S).diagnostics.errors})),1),l(`span`,Q,t(f(y)(`overview.warnings`,{count:f(S).diagnostics.warnings})),1)]),default:r(()=>[f(S).diagnostics.byCode.length?_(``,!0):(i(),u(`p`,$,t(f(y)(`overview.clean`)),1)),(i(!0),u(h,null,a(f(S).diagnostics.byCode,n=>(i(),u(`div`,{key:n.code,class:`flex items-center gap-2 px-4 py-1.5`},[l(`span`,{class:e(n.severity===`error`?`i-ph-x-circle-duotone color-error`:`i-ph-warning-duotone color-warn`)},null,2),l(`span`,ee,t(n.code),1),l(`span`,te,t(n.count),1)]))),128))]),_:1},8,[`title`]),l(`div`,null,[d(k,{index:`03`,title:f(y)(`overview.presets`)},{default:r(()=>[l(`div`,ne,[(i(!0),u(h,null,a(f(S).presets,e=>(i(),u(`span`,{key:e,class:`border border-strong px-1.5 font-mono text-xs`},t(e),1))),128)),f(S).presets.length?_(``,!0):(i(),u(`span`,re,t(f(y)(`overview.noPresets`)),1))])]),_:1},8,[`title`]),d(k,{index:`04`,title:f(y)(`overview.recent`)},{default:r(()=>[l(`div`,ie,[(i(!0),u(h,null,a(f(x),e=>(i(),p(R,{key:e,project:f(S).name,"key-name":e},{default:r(()=>[d(f(E),{to:`/keys/${encodeURIComponent(e)}`,class:`focus-ring border border-base px-1.5 font-mono text-xs hover:border-inverse`},{default:r(()=>[m(t(e),1)]),_:2},1032,[`to`])]),_:2},1032,[`project`,`key-name`]))),128)),f(x).length?_(``,!0):(i(),u(`span`,ae,t(f(y)(`overview.noRecent`)),1))])]),_:1},8,[`title`])])]),f(S).changes.length?(i(),p(k,{key:0,index:`05`,title:f(y)(`history.title`)},{default:r(()=>[(i(!0),u(h,null,a(f(S).changes,(n,s)=>(i(),u(`div`,{key:n.revision??`local`,class:`border-b border-base last:border-b-0`},[l(`button`,{type:`button`,class:`focus-ring flex w-full items-center gap-3 px-4 py-2 text-left transition-colors hover:bg-hover`,"aria-expanded":C(n,s),onClick:e=>j(n)},[l(`span`,{class:e([`i-ph-caret-right-duotone shrink-0 transition-transform`,C(n,s)&&`rotate-90`])},null,2),d(P,{change:n},null,8,[`change`]),o[2]||=l(`span`,{class:`flex-auto`},null,-1),l(`span`,{class:`badge`,title:f(y)(`overview.keys`)},t(n.total),9,se)],8,oe),C(n,s)?(i(),u(`div`,ce,[(i(!0),u(h,null,a(n.keys,e=>(i(),p(f(E),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-center gap-4 border-b border-base py-1.5 pl-10 pr-4 transition-colors last:border-b-0 hover:bg-hover`},{default:r(()=>[l(`span`,le,t(e.key),1),d(R,{project:f(S).name,"key-name":e.key,locales:e.locales},null,8,[`project`,`key-name`,`locales`])]),_:2},1032,[`to`]))),128)),n.total>n.keys.length?(i(),u(`p`,ue,t(f(y)(`history.more`,{count:n.total-n.keys.length})),1)):_(``,!0)])):_(``,!0)]))),128))]),_:1},8,[`title`])):_(``,!0)]),_:1})):_(``,!0)}});export{de as default};
@@ -1 +1 @@
1
- var e={app:{error:`無法連線:{message}`,language:`語言`,loading:`正在載入專案…`,name:`x18n`,project:`專案`,static:`唯讀報告`,staticHint:"以 `x18n build` 建置的快照。執行 `x18n ui` 即可編輯。"},auth:{code:`驗證碼`,hint:"請輸入 `x18n ui` 在終端機中顯示的 6 位數驗證碼。",label:`身分驗證`,rejected:`驗證碼無效。請查看終端機中目前的驗證碼。`,submit:`連線`,title:`連線至 x18n`},detail:{back:`返回鍵列表`,diagnostics:`問題`,edit:`編輯`,label:`鍵`,noUsages:`沒有程式碼使用此鍵。`,notFound:`此鍵未定義。`,openInEditor:`在編輯器中開啟`,possible:`可能`,usages:`使用處({count})`,values:`值`,showAllLocales:`顯示所有語言`,file:`檔案`},edit:{dismiss:`關閉`,placeholdersExtra:`多出的佔位符 {names}`,placeholdersMissing:`缺少佔位符 {names}`,rejected:`未儲存:{key}({locale}):{message}。`,saveAnyway:`仍要儲存`},extract:{apply:`擷取({count})`,done:`已擷取鍵:{count}。已變更檔案:{files}。`,hint:`已附建議鍵的寫死字串。可編輯鍵、取消勾選要略過的字串,然後套用。`,key:`鍵`,none:`找不到寫死的字串。`,strings:`字串:{count}`},keys:{allNamespaces:`所有命名空間`,anyLocale:`任何語系`,count:`{shown} / {total} 個鍵`,diagnosticsHint:`此鍵的問題`,editValue:`{key} 在 {locale} 的值`,empty:`沒有符合的鍵。`,grid:`各語系的鍵與值`,helpEdit:`Enter 編輯,Esc 取消`,helpMove:`方向鍵或 j/k 移動`,helpOpen:`o 開啟鍵`,helpSearch:`/ 搜尋`,key:`鍵`,missingIn:`缺少於`,missingInLocale:`{locale} 中缺少`,namespace:`命名空間`,search:`搜尋鍵與值`,unused:`未使用`,unusedHint:`沒有程式碼使用此鍵`,withDiagnostics:`有問題`,outdated:`過時`,sort:`排序`,sortKey:`鍵`,sortRecent:`最近變更`},locale:{complete:`所有鍵皆已翻譯。`,empty:`空白({count})`,label:`語系`,missing:`缺少({count})`,notFound:`此專案沒有這個語系。`,openInGrid:`在表格中顯示`,problems:`佔位符與語法問題({count})`,progress:`已翻譯 {translated} / {total}({percent})`,outdated:`過時({count})`},localeBar:{bar:`要顯示的語系`,noneShown:`所有語系皆已隱藏。請在上方列中選擇一個。`,showAll:`全部顯示`,shown:`已顯示 {shown} / {total}`,title:`語系`,toggle:`顯示或隱藏 {locale}`,resetOrder:`重設順序`,flags:`顯示旗幟`,reorder:`拖曳或按 Alt 加方向鍵以調整順序。`},nav:{extract:`擷取`,keys:`鍵`,overview:`總覽`,project:`專案`,usages:`使用處`},overview:{clean:`未發現問題。`,coverage:`涵蓋率`,diagnostics:`診斷`,errors:`錯誤:{count}`,keys:`鍵`,locales:`語系`,missing:`缺少 {missing},空白 {empty}`,noPresets:`未偵測到預設集。`,noRecent:`開啟頁面後沒有任何變更。`,presets:`預設集`,recent:`最近變更`,resources:`資源`,source:`來源`,usages:`使用處`,warnings:`警告:{count}`,outdated:`{count} 則過時`},project:{config:`設定及各值來源`,conflict:`.{extension}:{winner} 優先於 {loser}`,files:`檔案:{count}`,finders:`語系搜尋器`,formats:`格式`,presets:`預設集`,problems:`問題`,resources:`資源:{count}`,scanners:`掃描器`,showAllPresets:`顯示所有預設`},prompt:{copied:`已複製`,copy:`複製翻譯提示詞`,hint:`複製提示詞,讓 LLM 或代理程式翻譯缺少的訊息`,copyStale:`複製包含過時翻譯的提示詞`,staleHint:`複製提示詞,供 LLM 或代理程式翻譯缺少的訊息並更新過時的翻譯`,copyAll:`複製所有語言的翻譯提示詞`,allHint:`複製一段提示詞,供 LLM 或代理翻譯每種語言中缺少的訊息`},usages:{all:`全部({count})`,dynamic:`動態({count})`,dynamicHint:`使用計算鍵的使用處。其前綴下的鍵皆視為已使用。`,filter:`依檔案或鍵篩選`,missing:`未定義({count})`,missingHint:`程式碼中使用、但未在來源語系中定義的鍵。`,unused:`未使用({count})`,unusedHint:`已在來源語系中定義、但沒有程式碼使用的鍵。`},value:{empty:`空白`,missing:`缺少`},history:{title:`歷史`,local:`本機已變更`,outdated:`過時`,outdatedHint:`此翻譯之後來源訊息已變更`,sourceThen:`當時的來源`,sourceNow:`目前的來源`,more:`以及另外 {count} 個`,locales:`{count} 種語言`}};export{e as default};
1
+ var e={app:{error:`無法連線:{message}`,language:`語言`,loading:`正在載入專案…`,name:`x18n`,project:`專案`,static:`唯讀報告`,staticHint:"以 `x18n build` 建置的快照。執行 `x18n ui` 即可編輯。"},auth:{code:`驗證碼`,hint:"請輸入 `x18n ui` 在終端機中顯示的 6 位數驗證碼。",label:`身分驗證`,rejected:`驗證碼無效。請查看終端機中目前的驗證碼。`,submit:`連線`,title:`連線至 x18n`},detail:{back:`返回鍵列表`,diagnostics:`問題`,edit:`編輯`,label:`鍵`,noUsages:`沒有程式碼使用此鍵。`,notFound:`此鍵未定義。`,openInEditor:`在編輯器中開啟`,possible:`可能`,usages:`使用處({count})`,values:`值`,showAllLocales:`顯示所有語言`,file:`檔案`},edit:{dismiss:`關閉`,placeholdersExtra:`多出的佔位符 {names}`,placeholdersMissing:`缺少佔位符 {names}`,rejected:`未儲存:{key}({locale}):{message}。`,saveAnyway:`仍要儲存`},extract:{apply:`擷取({count})`,done:`已擷取鍵:{count}。已變更檔案:{files}。`,hint:`已附建議鍵的寫死字串。可編輯鍵、取消勾選要略過的字串,然後套用。`,key:`鍵`,none:`找不到寫死的字串。`,strings:`字串:{count}`},keys:{allNamespaces:`所有命名空間`,anyLocale:`任何語系`,count:`{shown} / {total} 個鍵`,diagnosticsHint:`此鍵的問題`,editValue:`{key} 在 {locale} 的值`,empty:`沒有符合的鍵。`,grid:`各語系的鍵與值`,helpEdit:`Enter 編輯,Esc 取消`,helpMove:`方向鍵或 j/k 移動`,helpOpen:`o 開啟鍵`,helpSearch:`/ 搜尋`,key:`鍵`,missingIn:`缺少於`,missingInLocale:`{locale} 中缺少`,namespace:`命名空間`,search:`搜尋鍵與值`,unused:`未使用`,unusedHint:`沒有程式碼使用此鍵`,withDiagnostics:`有問題`,outdated:`過時`,sort:`排序`,sortKey:`鍵`,sortRecent:`最近變更`},locale:{complete:`所有鍵皆已翻譯。`,empty:`空白({count})`,label:`語系`,missing:`缺少({count})`,notFound:`此專案沒有這個語系。`,openInGrid:`在表格中顯示`,problems:`佔位符與語法問題({count})`,progress:`已翻譯 {translated} / {total}({percent})`,outdated:`過時({count})`},localeBar:{bar:`要顯示的語系`,noneShown:`所有語系皆已隱藏。請在上方列中選擇一個。`,showAll:`全部顯示`,shown:`已顯示 {shown} / {total}`,title:`語系`,toggle:`顯示或隱藏 {locale}`,resetOrder:`重設順序`,flags:`顯示旗幟`,reorder:`拖曳或按 Alt 加方向鍵以調整順序。`},nav:{extract:`擷取`,keys:`鍵`,overview:`總覽`,project:`專案`,usages:`使用處`},overview:{clean:`未發現問題。`,coverage:`涵蓋率`,diagnostics:`診斷`,errors:`錯誤:{count}`,keys:`鍵`,locales:`語系`,missing:`缺少 {missing},空白 {empty}`,noPresets:`未偵測到預設集。`,noRecent:`開啟頁面後沒有任何變更。`,presets:`預設集`,recent:`最近變更`,resources:`資源`,source:`來源`,usages:`使用處`,warnings:`警告:{count}`,outdated:`{count} 則過時`},project:{config:`設定及各值來源`,conflict:`.{extension}:{winner} 優先於 {loser}`,files:`檔案:{count}`,finders:`語系搜尋器`,formats:`格式`,presets:`預設集`,problems:`問題`,resources:`資源:{count}`,scanners:`掃描器`,showAllPresets:`顯示所有預設`},prompt:{copied:`已複製`,copy:`複製翻譯提示詞`,hint:`複製提示詞,讓 LLM 或代理程式翻譯缺少的訊息`,copyStale:`複製包含過時翻譯的提示詞`,staleHint:`複製提示詞,供 LLM 或代理程式翻譯缺少的訊息並更新過時的翻譯`,copyAll:`複製所有語言的翻譯提示詞`,allHint:`複製一段提示詞,供 LLM 或代理翻譯每種語言中缺少的訊息`},usages:{all:`全部({count})`,dynamic:`動態({count})`,dynamicHint:`使用計算鍵的使用處。其前綴下的鍵皆視為已使用。`,filter:`依檔案或鍵篩選`,missing:`未定義({count})`,missingHint:`程式碼中使用、但未在來源語系中定義的鍵。`,unused:`未使用({count})`,unusedHint:`已在來源語系中定義、但沒有程式碼使用的鍵。`},value:{empty:`空白`,missing:`缺少`},history:{title:`歷史`,local:`本機已變更`,outdated:`過時`,outdatedHint:`此翻譯之後來源訊息已變更`,sourceThen:`當時的來源`,sourceNow:`目前的來源`,more:`以及另外 {count} 個`,locales:`{count} 種語言`},sidebar:{list:`清單檢視`,tree:`樹狀檢視`,filter:`篩選鍵`,view:`鍵清單檢視`}};export{e as default};
@@ -1 +1 @@
1
- import{Ct as e,Et as t,H as n,M as r,P as i,Q as a,_ as o,c as s,d as c,h as l,it as u,j as d,l as f,m as p,r as m,s as h,tt as g,u as _}from"./B4prFwj0.js";import{S as v,c as y,t as b}from"./Bqlbbq4u.js";import{t as x}from"./SGqoyjTw.js";import{t as S}from"./ztSLDBsK.js";import{t as C}from"./DQNu8teu.js";var w={class:`flex-auto font-mono text-xs`},T={class:`label`},E={class:`flex cursor-pointer list-none items-center gap-2 px-4 py-1.5 hover:bg-hover`},D={class:`font-mono text-xs`},O={class:`label`},k={class:`grid gap-1 pb-2 pl-10 pr-4`},A={class:`grid md:grid-cols-2`},j={class:`flex-auto`},M={class:`color-faint`},N={class:`tabular-nums`},P={class:`flex-auto`},F={class:`color-faint`},I={class:`tabular-nums color-muted`},L={class:`font-mono text-xs`},R={class:`flex-auto`},z={class:`color-muted`},B={class:`of-x-auto p-4 font-mono text-xs leading-5 color-muted`},V=o({__name:`project`,setup(o){let V=g();d(async()=>{V.value=await b.value.explain()});let H=h(()=>V.value?.projects.find(e=>e.name===y.value)),U=a(!1),W=h(()=>(H.value?.presets??[]).filter(e=>U.value||K(e.reason))),G=h(()=>(H.value?.presets.length??0)-W.value.length);function K(e){return e===`listed`||e===`detected`}return(a,o)=>H.value?(r(),f(S,{key:0},{default:n(()=>[l(C,{index:`01`,title:u(v)(`project.presets`)},{default:n(()=>[(r(!0),c(m,null,i(W.value,n=>(r(),c(`div`,{key:n.name,class:`flex items-center gap-2 border-b border-base px-4 py-1.5 last:border-b-0`},[s(`span`,{class:e(K(n.reason)?`i-ph-check-circle-duotone color-ok`:`i-ph-circle-duotone color-faint`)},null,2),s(`span`,w,t(n.name),1),s(`span`,T,t(n.reason),1)]))),128)),G.value?(r(),c(`button`,{key:0,class:`btn-ghost h-9 w-full justify-start px-4`,onClick:o[0]||=e=>U.value=!0},[o[1]||=s(`span`,{class:`i-ph-dots-three-duotone`},null,-1),p(` `+t(u(v)(`project.showAllPresets`))+` (`+t(G.value)+`) `,1)])):_(``,!0)]),_:1},8,[`title`]),l(C,{index:`02`,title:u(v)(`project.finders`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.finders,e=>(r(),c(`details`,{key:e.id,class:`group border-b border-base last:border-b-0`},[s(`summary`,E,[o[2]||=s(`span`,{class:`i-ph-caret-right-duotone text-xs color-muted transition-transform group-open:rotate-90`},null,-1),s(`span`,D,t(e.id),1),s(`span`,O,t(u(v)(`project.resources`,{count:e.resources.length})),1)]),s(`div`,k,[(r(!0),c(m,null,i(e.resources,e=>(r(),f(x,{key:e,path:e},null,8,[`path`]))),128))])]))),128))]),_:1},8,[`title`]),s(`div`,A,[l(C,{index:`03`,title:u(v)(`project.formats`),class:`md:border-r`},{default:n(()=>[(r(!0),c(m,null,i(H.value.formats.filter(e=>e.resources>0),e=>(r(),c(`div`,{key:e.id,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs last:border-b-0`},[s(`span`,j,[p(t(e.id)+` `,1),s(`span`,M,t(e.extensions.join(`, `)),1)]),s(`span`,N,t(e.resources),1)]))),128))]),_:1},8,[`title`]),l(C,{index:`04`,title:u(v)(`project.scanners`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.scanners,e=>(r(),c(`div`,{key:e.id,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs last:border-b-0`},[s(`span`,P,[p(t(e.id)+` `,1),s(`span`,F,t(e.extensions.join(`, `)),1)]),s(`span`,I,t(u(v)(`project.files`,{count:e.files})),1)]))),128))]),_:1},8,[`title`])]),H.value.errors.length||H.value.conflicts.length?(r(),f(C,{key:0,index:`05`,title:u(v)(`project.problems`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.errors,(e,n)=>(r(),c(`div`,{key:`e${n}`,class:`flex items-center gap-2 border-b border-base px-4 py-1.5 color-error last:border-b-0`},[s(`span`,L,t(e.code),1),p(` `+t(e.message)+` `,1),e.path?(r(),f(x,{key:0,path:e.path},null,8,[`path`])):_(``,!0)]))),128)),(r(!0),c(m,null,i(H.value.conflicts,e=>(r(),c(`div`,{key:e.extension,class:`border-b border-base px-4 py-1.5 color-warn last:border-b-0`},t(u(v)(`project.conflict`,{extension:e.extension,winner:e.winner,loser:e.loser})),1))),128))]),_:1},8,[`title`])):_(``,!0),l(C,{index:`06`,title:u(v)(`project.config`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.config.origins,(e,n)=>(r(),c(`div`,{key:n,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs`},[s(`span`,R,t(n),1),s(`span`,z,t(e),1)]))),128)),s(`pre`,B,t(JSON.stringify(H.value.config,null,2)),1)]),_:1},8,[`title`])]),_:1})):_(``,!0)}});export{V as default};
1
+ import{Ct as e,Et as t,H as n,M as r,P as i,Q as a,_ as o,c as s,d as c,h as l,it as u,j as d,l as f,m as p,r as m,s as h,tt as g,u as _}from"./B4prFwj0.js";import{S as v,c as y,t as b}from"./DsqCc3fC.js";import{t as x}from"./0cXQUs3T.js";import{t as S}from"./ztSLDBsK.js";import{t as C}from"./DQNu8teu.js";var w={class:`flex-auto font-mono text-xs`},T={class:`label`},E={class:`flex cursor-pointer list-none items-center gap-2 px-4 py-1.5 hover:bg-hover`},D={class:`font-mono text-xs`},O={class:`label`},k={class:`grid gap-1 pb-2 pl-10 pr-4`},A={class:`grid md:grid-cols-2`},j={class:`flex-auto`},M={class:`color-faint`},N={class:`tabular-nums`},P={class:`flex-auto`},F={class:`color-faint`},I={class:`tabular-nums color-muted`},L={class:`font-mono text-xs`},R={class:`flex-auto`},z={class:`color-muted`},B={class:`of-x-auto p-4 font-mono text-xs leading-5 color-muted`},V=o({__name:`project`,setup(o){let V=g();d(async()=>{V.value=await b.value.explain()});let H=h(()=>V.value?.projects.find(e=>e.name===y.value)),U=a(!1),W=h(()=>(H.value?.presets??[]).filter(e=>U.value||K(e.reason))),G=h(()=>(H.value?.presets.length??0)-W.value.length);function K(e){return e===`listed`||e===`detected`}return(a,o)=>H.value?(r(),f(S,{key:0},{default:n(()=>[l(C,{index:`01`,title:u(v)(`project.presets`)},{default:n(()=>[(r(!0),c(m,null,i(W.value,n=>(r(),c(`div`,{key:n.name,class:`flex items-center gap-2 border-b border-base px-4 py-1.5 last:border-b-0`},[s(`span`,{class:e(K(n.reason)?`i-ph-check-circle-duotone color-ok`:`i-ph-circle-duotone color-faint`)},null,2),s(`span`,w,t(n.name),1),s(`span`,T,t(n.reason),1)]))),128)),G.value?(r(),c(`button`,{key:0,class:`btn-ghost h-9 w-full justify-start px-4`,onClick:o[0]||=e=>U.value=!0},[o[1]||=s(`span`,{class:`i-ph-dots-three-duotone`},null,-1),p(` `+t(u(v)(`project.showAllPresets`))+` (`+t(G.value)+`) `,1)])):_(``,!0)]),_:1},8,[`title`]),l(C,{index:`02`,title:u(v)(`project.finders`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.finders,e=>(r(),c(`details`,{key:e.id,class:`group border-b border-base last:border-b-0`},[s(`summary`,E,[o[2]||=s(`span`,{class:`i-ph-caret-right-duotone text-xs color-muted transition-transform group-open:rotate-90`},null,-1),s(`span`,D,t(e.id),1),s(`span`,O,t(u(v)(`project.resources`,{count:e.resources.length})),1)]),s(`div`,k,[(r(!0),c(m,null,i(e.resources,e=>(r(),f(x,{key:e,path:e},null,8,[`path`]))),128))])]))),128))]),_:1},8,[`title`]),s(`div`,A,[l(C,{index:`03`,title:u(v)(`project.formats`),class:`md:border-r`},{default:n(()=>[(r(!0),c(m,null,i(H.value.formats.filter(e=>e.resources>0),e=>(r(),c(`div`,{key:e.id,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs last:border-b-0`},[s(`span`,j,[p(t(e.id)+` `,1),s(`span`,M,t(e.extensions.join(`, `)),1)]),s(`span`,N,t(e.resources),1)]))),128))]),_:1},8,[`title`]),l(C,{index:`04`,title:u(v)(`project.scanners`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.scanners,e=>(r(),c(`div`,{key:e.id,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs last:border-b-0`},[s(`span`,P,[p(t(e.id)+` `,1),s(`span`,F,t(e.extensions.join(`, `)),1)]),s(`span`,I,t(u(v)(`project.files`,{count:e.files})),1)]))),128))]),_:1},8,[`title`])]),H.value.errors.length||H.value.conflicts.length?(r(),f(C,{key:0,index:`05`,title:u(v)(`project.problems`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.errors,(e,n)=>(r(),c(`div`,{key:`e${n}`,class:`flex items-center gap-2 border-b border-base px-4 py-1.5 color-error last:border-b-0`},[s(`span`,L,t(e.name),1),p(` `+t(e.why)+` `,1),e.path?(r(),f(x,{key:0,path:e.path},null,8,[`path`])):_(``,!0)]))),128)),(r(!0),c(m,null,i(H.value.conflicts,e=>(r(),c(`div`,{key:e.extension,class:`border-b border-base px-4 py-1.5 color-warn last:border-b-0`},t(u(v)(`project.conflict`,{extension:e.extension,winner:e.winner,loser:e.loser})),1))),128))]),_:1},8,[`title`])):_(``,!0),l(C,{index:`06`,title:u(v)(`project.config`)},{default:n(()=>[(r(!0),c(m,null,i(H.value.config.origins,(e,n)=>(r(),c(`div`,{key:n,class:`flex gap-2 border-b border-base px-4 py-1.5 font-mono text-xs`},[s(`span`,R,t(n),1),s(`span`,z,t(e),1)]))),128)),s(`pre`,B,t(JSON.stringify(H.value.config,null,2)),1)]),_:1},8,[`title`])]),_:1})):_(``,!0)}});export{V as default};
@@ -1 +1 @@
1
- var e={app:{error:`연결할 수 없습니다: {message}`,language:`언어`,loading:`프로젝트를 불러오는 중…`,name:`x18n`,project:`프로젝트`,static:`읽기 전용 보고서`,staticHint:"`x18n build`로 만든 스냅샷입니다. 편집하려면 `x18n ui`를 실행하세요."},auth:{code:`인증 코드`,hint:"`x18n ui`가 터미널에 출력한 6자리 코드를 입력하세요.",label:`인증`,rejected:`코드가 올바르지 않습니다. 터미널에서 현재 코드를 확인하세요.`,submit:`연결`,title:`x18n에 연결`},detail:{back:`키 목록으로 돌아가기`,diagnostics:`문제`,edit:`편집`,label:`키`,noUsages:`이 키를 사용하는 코드가 없습니다.`,notFound:`정의되지 않은 키입니다.`,openInEditor:`에디터에서 열기`,possible:`추정`,usages:`사용처 ({count})`,values:`값`,showAllLocales:`모든 로캘 표시`,file:`파일`},edit:{dismiss:`닫기`,placeholdersExtra:`예상치 못한 플레이스홀더 {names}`,placeholdersMissing:`누락된 플레이스홀더 {names}`,rejected:`저장되지 않음: {locale}의 {key}: {message}.`,saveAnyway:`그래도 저장`},extract:{apply:`추출 ({count})`,done:`추출한 키: {count}. 변경된 파일: {files}.`,hint:`제안된 키가 있는 하드코딩된 문자열입니다. 키를 편집하고, 건너뛸 문자열은 선택 해제한 뒤 적용하세요.`,key:`키`,none:`하드코딩된 문자열이 없습니다.`,strings:`문자열: {count}`},keys:{allNamespaces:`모든 네임스페이스`,anyLocale:`모든 로케일`,count:`키 {total}개 중 {shown}개`,diagnosticsHint:`이 키의 문제`,editValue:`{locale}의 {key} 값`,empty:`일치하는 키가 없습니다.`,grid:`로케일별 키와 값`,helpEdit:`Enter로 편집, Esc로 취소`,helpMove:`화살표 또는 j/k로 이동`,helpOpen:`o로 키 열기`,helpSearch:`/로 검색`,key:`키`,missingIn:`누락된 로케일`,missingInLocale:`{locale}에 누락`,namespace:`네임스페이스`,search:`키와 값 검색`,unused:`미사용`,unusedHint:`이 키를 사용하는 코드가 없습니다`,withDiagnostics:`문제 있음`,outdated:`오래된 번역`,sort:`정렬`,sortKey:`키`,sortRecent:`최근 변경`},locale:{complete:`모든 키가 번역되었습니다.`,empty:`빈 값 ({count})`,label:`로케일`,missing:`누락 ({count})`,notFound:`이 프로젝트에 해당 로케일이 없습니다.`,openInGrid:`그리드에서 보기`,problems:`플레이스홀더 및 구문 문제 ({count})`,progress:`{total}개 중 {translated}개 번역됨 ({percent})`,outdated:`오래된 번역 ({count})`},localeBar:{bar:`표시할 로케일`,noneShown:`모든 로케일이 숨겨져 있습니다. 위 막대에서 하나를 선택하세요.`,showAll:`모두 표시`,shown:`{total}개 중 {shown}개 표시`,title:`로케일`,toggle:`{locale} 표시/숨기기`,resetOrder:`순서 초기화`,flags:`국기 표시`,reorder:`드래그하거나 Alt와 화살표 키를 눌러 순서를 바꿉니다.`},nav:{extract:`추출`,keys:`키`,overview:`개요`,project:`프로젝트`,usages:`사용처`},overview:{clean:`문제가 없습니다.`,coverage:`번역률`,diagnostics:`진단`,errors:`오류: {count}`,keys:`키`,locales:`로케일`,missing:`누락 {missing}, 빈 값 {empty}`,noPresets:`감지된 프리셋이 없습니다.`,noRecent:`페이지를 연 뒤로 변경된 내용이 없습니다.`,presets:`프리셋`,recent:`최근 변경`,resources:`리소스`,source:`원본`,usages:`사용처`,warnings:`경고: {count}`,outdated:`오래됨 {count}개`},project:{config:`설정과 각 값의 출처`,conflict:`.{extension}: {winner}이(가) {loser}보다 우선함`,files:`파일: {count}`,finders:`로케일 파인더`,formats:`형식`,presets:`프리셋`,problems:`문제`,resources:`리소스: {count}`,scanners:`스캐너`,showAllPresets:`모든 프리셋 표시`},prompt:{copied:`복사됨`,copy:`번역 프롬프트 복사`,hint:`누락된 메시지를 번역하는 LLM 또는 에이전트용 프롬프트 복사`,copyStale:`오래된 번역 포함 프롬프트 복사`,staleHint:`누락된 메시지를 번역하고 오래된 번역을 갱신하는 LLM 또는 에이전트용 프롬프트를 복사합니다`,copyAll:`모든 로캘의 번역 프롬프트 복사`,allHint:`모든 로캘에서 누락된 메시지를 번역하는 LLM 또는 에이전트용 프롬프트를 복사합니다`},usages:{all:`전체 ({count})`,dynamic:`동적 ({count})`,dynamicHint:`계산된 키를 쓰는 사용처입니다. 해당 접두사 아래의 키는 사용된 것으로 간주합니다.`,filter:`파일 또는 키로 필터`,missing:`미정의 ({count})`,missingHint:`코드에서 사용되지만 원본 로케일에 정의되지 않은 키입니다.`,unused:`미사용 ({count})`,unusedHint:`원본 로케일에 정의되어 있지만 코드에서 사용하지 않는 키입니다.`},value:{empty:`빈 값`,missing:`누락`},history:{title:`기록`,local:`로컬에서 변경됨`,outdated:`오래됨`,outdatedHint:`이 번역 이후에 원본 메시지가 변경되었습니다`,sourceThen:`당시 원본`,sourceNow:`현재 원본`,more:`외 {count}개`,locales:`로캘 {count}개`}};export{e as default};
1
+ var e={app:{error:`연결할 수 없습니다: {message}`,language:`언어`,loading:`프로젝트를 불러오는 중…`,name:`x18n`,project:`프로젝트`,static:`읽기 전용 보고서`,staticHint:"`x18n build`로 만든 스냅샷입니다. 편집하려면 `x18n ui`를 실행하세요."},auth:{code:`인증 코드`,hint:"`x18n ui`가 터미널에 출력한 6자리 코드를 입력하세요.",label:`인증`,rejected:`코드가 올바르지 않습니다. 터미널에서 현재 코드를 확인하세요.`,submit:`연결`,title:`x18n에 연결`},detail:{back:`키 목록으로 돌아가기`,diagnostics:`문제`,edit:`편집`,label:`키`,noUsages:`이 키를 사용하는 코드가 없습니다.`,notFound:`정의되지 않은 키입니다.`,openInEditor:`에디터에서 열기`,possible:`추정`,usages:`사용처 ({count})`,values:`값`,showAllLocales:`모든 로캘 표시`,file:`파일`},edit:{dismiss:`닫기`,placeholdersExtra:`예상치 못한 플레이스홀더 {names}`,placeholdersMissing:`누락된 플레이스홀더 {names}`,rejected:`저장되지 않음: {locale}의 {key}: {message}.`,saveAnyway:`그래도 저장`},extract:{apply:`추출 ({count})`,done:`추출한 키: {count}. 변경된 파일: {files}.`,hint:`제안된 키가 있는 하드코딩된 문자열입니다. 키를 편집하고, 건너뛸 문자열은 선택 해제한 뒤 적용하세요.`,key:`키`,none:`하드코딩된 문자열이 없습니다.`,strings:`문자열: {count}`},keys:{allNamespaces:`모든 네임스페이스`,anyLocale:`모든 로케일`,count:`키 {total}개 중 {shown}개`,diagnosticsHint:`이 키의 문제`,editValue:`{locale}의 {key} 값`,empty:`일치하는 키가 없습니다.`,grid:`로케일별 키와 값`,helpEdit:`Enter로 편집, Esc로 취소`,helpMove:`화살표 또는 j/k로 이동`,helpOpen:`o로 키 열기`,helpSearch:`/로 검색`,key:`키`,missingIn:`누락된 로케일`,missingInLocale:`{locale}에 누락`,namespace:`네임스페이스`,search:`키와 값 검색`,unused:`미사용`,unusedHint:`이 키를 사용하는 코드가 없습니다`,withDiagnostics:`문제 있음`,outdated:`오래된 번역`,sort:`정렬`,sortKey:`키`,sortRecent:`최근 변경`},locale:{complete:`모든 키가 번역되었습니다.`,empty:`빈 값 ({count})`,label:`로케일`,missing:`누락 ({count})`,notFound:`이 프로젝트에 해당 로케일이 없습니다.`,openInGrid:`그리드에서 보기`,problems:`플레이스홀더 및 구문 문제 ({count})`,progress:`{total}개 중 {translated}개 번역됨 ({percent})`,outdated:`오래된 번역 ({count})`},localeBar:{bar:`표시할 로케일`,noneShown:`모든 로케일이 숨겨져 있습니다. 위 막대에서 하나를 선택하세요.`,showAll:`모두 표시`,shown:`{total}개 중 {shown}개 표시`,title:`로케일`,toggle:`{locale} 표시/숨기기`,resetOrder:`순서 초기화`,flags:`국기 표시`,reorder:`드래그하거나 Alt와 화살표 키를 눌러 순서를 바꿉니다.`},nav:{extract:`추출`,keys:`키`,overview:`개요`,project:`프로젝트`,usages:`사용처`},overview:{clean:`문제가 없습니다.`,coverage:`번역률`,diagnostics:`진단`,errors:`오류: {count}`,keys:`키`,locales:`로케일`,missing:`누락 {missing}, 빈 값 {empty}`,noPresets:`감지된 프리셋이 없습니다.`,noRecent:`페이지를 연 뒤로 변경된 내용이 없습니다.`,presets:`프리셋`,recent:`최근 변경`,resources:`리소스`,source:`원본`,usages:`사용처`,warnings:`경고: {count}`,outdated:`오래됨 {count}개`},project:{config:`설정과 각 값의 출처`,conflict:`.{extension}: {winner}이(가) {loser}보다 우선함`,files:`파일: {count}`,finders:`로케일 파인더`,formats:`형식`,presets:`프리셋`,problems:`문제`,resources:`리소스: {count}`,scanners:`스캐너`,showAllPresets:`모든 프리셋 표시`},prompt:{copied:`복사됨`,copy:`번역 프롬프트 복사`,hint:`누락된 메시지를 번역하는 LLM 또는 에이전트용 프롬프트 복사`,copyStale:`오래된 번역 포함 프롬프트 복사`,staleHint:`누락된 메시지를 번역하고 오래된 번역을 갱신하는 LLM 또는 에이전트용 프롬프트를 복사합니다`,copyAll:`모든 로캘의 번역 프롬프트 복사`,allHint:`모든 로캘에서 누락된 메시지를 번역하는 LLM 또는 에이전트용 프롬프트를 복사합니다`},usages:{all:`전체 ({count})`,dynamic:`동적 ({count})`,dynamicHint:`계산된 키를 쓰는 사용처입니다. 해당 접두사 아래의 키는 사용된 것으로 간주합니다.`,filter:`파일 또는 키로 필터`,missing:`미정의 ({count})`,missingHint:`코드에서 사용되지만 원본 로케일에 정의되지 않은 키입니다.`,unused:`미사용 ({count})`,unusedHint:`원본 로케일에 정의되어 있지만 코드에서 사용하지 않는 키입니다.`},value:{empty:`빈 값`,missing:`누락`},history:{title:`기록`,local:`로컬에서 변경됨`,outdated:`오래됨`,outdatedHint:`이 번역 이후에 원본 메시지가 변경되었습니다`,sourceThen:`당시 원본`,sourceNow:`현재 원본`,more:`외 {count}개`,locales:`로캘 {count}개`},sidebar:{list:`목록 보기`,tree:`트리 보기`,filter:`키 필터`,view:`키 목록 보기 방식`}};export{e as default};
@@ -0,0 +1 @@
1
+ import{S as e,c as t,t as n}from"./DsqCc3fC.js";function r(e,t){let n=e.toLowerCase(),r=t.toLowerCase(),i=r.indexOf(n);if(i!==-1)return 1e3-i;let a=0,o=-1;for(let e of n){let t=r.indexOf(e,o+1);if(t===-1)return-1;a+=t===o+1?2:1,o=t}return a}function i(e,r=!1){return n.value.apply({project:t.value,ops:e,force:r})}function a(e,t,n,r=!1){return i([{type:`set`,key:e,locale:t,value:n}],r)}function o(t){return[t.missing.length?e(`edit.placeholdersMissing`,{names:t.missing.join(`, `)}):``,t.extra.length?e(`edit.placeholdersExtra`,{names:t.extra.join(`, `)}):``].filter(Boolean).join(`; `)}export{r as i,o as n,a as r,i as t};
@@ -1 +1 @@
1
- import{Ct as e,Et as t,M as n,P as r,_ as i,c as a,d as o,it as s,m as c,r as l}from"./B4prFwj0.js";import{S as u}from"./Bqlbbq4u.js";import{n as d,r as f}from"./SGqoyjTw.js";var p={class:`of-x-auto border border-base py-1 font-mono text-xs leading-5`},m=[`title`,`onClick`],h={class:`bg-teal:10 px0.5 py0.1 rounded border border-teal:50 text-teal-700 dark:text-teal-200`,"data-usage-key":``},g=i({__name:`CodeSnippet`,props:{usage:{}},setup(i){let g=i;function _(e,t){window.getSelection()?.toString()||f(g.usage.path,e,t)}function v(e){let t=g.usage.column-1,n=Math.min(e.length,t+(g.usage.length??g.usage.raw.length));return{before:e.slice(0,t),hit:e.slice(t,n),after:e.slice(n)}}return(f,g)=>(n(),o(`pre`,p,[a(`code`,null,[(n(!0),o(l,null,r(i.usage.snippet.lines,(r,f)=>(n(),o(`span`,{key:f,class:e([`block pr-3`,[i.usage.snippet.line+f===i.usage.line?`bg-hover color-base`:`color-muted`,s(d)&&`cursor-pointer hover:bg-hover`]]),title:s(d)?s(u)(`detail.openInEditor`):void 0,onClick:e=>_(i.usage.snippet.line+f,i.usage.snippet.line+f===i.usage.line?i.usage.column:1)},[a(`span`,{class:e([`inline-block w-10 select-none pr-3 text-right tabular-nums color-faint`,i.usage.snippet.line+f===i.usage.line&&`shadow-[inset_2px_0_var(--x-fg)]`])},t(i.usage.snippet.line+f),3),i.usage.snippet.line+f===i.usage.line?(n(),o(l,{key:0},[c(t(v(r).before),1),a(`mark`,h,t(v(r).hit),1),c(t(v(r).after),1)],64)):(n(),o(l,{key:1},[c(t(r),1)],64))],10,m))),128))])]))}});export{g as t};
1
+ import{Ct as e,Et as t,M as n,P as r,_ as i,c as a,d as o,it as s,m as c,r as l}from"./B4prFwj0.js";import{S as u}from"./DsqCc3fC.js";import{n as d,r as f}from"./0cXQUs3T.js";var p={class:`of-x-auto border border-base py-1 font-mono text-xs leading-5`},m=[`title`,`onClick`],h={class:`bg-teal:10 px0.5 py0.1 rounded border border-teal:50 text-teal-700 dark:text-teal-200`,"data-usage-key":``},g=i({__name:`CodeSnippet`,props:{usage:{}},setup(i){let g=i;function _(e,t){window.getSelection()?.toString()||f(g.usage.path,e,t)}function v(e){let t=g.usage.column-1,n=Math.min(e.length,t+(g.usage.length??g.usage.raw.length));return{before:e.slice(0,t),hit:e.slice(t,n),after:e.slice(n)}}return(f,g)=>(n(),o(`pre`,p,[a(`code`,null,[(n(!0),o(l,null,r(i.usage.snippet.lines,(r,f)=>(n(),o(`span`,{key:f,class:e([`block pr-3`,[i.usage.snippet.line+f===i.usage.line?`bg-hover color-base`:`color-muted`,s(d)&&`cursor-pointer hover:bg-hover`]]),title:s(d)?s(u)(`detail.openInEditor`):void 0,onClick:e=>_(i.usage.snippet.line+f,i.usage.snippet.line+f===i.usage.line?i.usage.column:1)},[a(`span`,{class:e([`inline-block w-10 select-none pr-3 text-right tabular-nums color-faint`,i.usage.snippet.line+f===i.usage.line&&`shadow-[inset_2px_0_var(--x-fg)]`])},t(i.usage.snippet.line+f),3),i.usage.snippet.line+f===i.usage.line?(n(),o(l,{key:0},[c(t(v(r).before),1),a(`mark`,h,t(v(r).hit),1),c(t(v(r).after),1)],64)):(n(),o(l,{key:1},[c(t(r),1)],64))],10,m))),128))])]))}});export{g as t};
@@ -1 +1 @@
1
- import{Et as e,M as t,_ as n,c as r,d as i,it as a,u as o}from"./B4prFwj0.js";import{C as s,S as c,_ as l}from"./Bqlbbq4u.js";var u={class:`inline-flex min-w-0 items-center gap-1.5 text-xs color-muted`},d={key:0},f=[`datetime`,`title`],p=[`title`],m={key:3,class:`truncate`},h=n({__name:`ChangeInfo`,props:{change:{}},setup(n){return(h,g)=>(t(),i(`span`,u,[g[0]||=r(`span`,{class:`i-ph-clock-counter-clockwise-duotone shrink-0`},null,-1),n.change.at===null?(t(),i(`span`,d,e(a(c)(`history.local`)),1)):(t(),i(`time`,{key:1,datetime:new Date(n.change.at).toISOString(),title:new Date(n.change.at).toLocaleString(a(s))},e(a(l)(n.change.at)),9,f)),n.change.revision?(t(),i(`code`,{key:2,class:`font-mono`,title:n.change.revision},e(n.change.revision.slice(0,7)),9,p)):o(``,!0),n.change.author?(t(),i(`span`,m,e(n.change.author),1)):o(``,!0)]))}});export{h as t};
1
+ import{Et as e,M as t,_ as n,c as r,d as i,it as a,u as o}from"./B4prFwj0.js";import{C as s,S as c,_ as l}from"./DsqCc3fC.js";var u={class:`inline-flex min-w-0 items-center gap-1.5 text-xs color-muted`},d={key:0},f=[`datetime`,`title`],p=[`title`],m={key:3,class:`truncate`},h=n({__name:`ChangeInfo`,props:{change:{}},setup(n){return(h,g)=>(t(),i(`span`,u,[g[0]||=r(`span`,{class:`i-ph-clock-counter-clockwise-duotone shrink-0`},null,-1),n.change.at===null?(t(),i(`span`,d,e(a(c)(`history.local`)),1)):(t(),i(`time`,{key:1,datetime:new Date(n.change.at).toISOString(),title:new Date(n.change.at).toLocaleString(a(s))},e(a(l)(n.change.at)),9,f)),n.change.revision?(t(),i(`code`,{key:2,class:`font-mono`,title:n.change.revision},e(n.change.revision.slice(0,7)),9,p)):o(``,!0),n.change.author?(t(),i(`span`,m,e(n.change.author),1)):o(``,!0)]))}});export{h as t};
@@ -1 +1 @@
1
- import{Ct as e,Et as t,H as n,L as ee,M as r,P as i,Tt as a,_ as te,c as o,d as s,h as c,it as l,l as u,m as d,r as f,s as p,u as m}from"./B4prFwj0.js";import{u as ne}from"./D4dwYDex.js";import{S as h,i as re,m as g,n as _,p as ie,v as ae,y as oe}from"./Bqlbbq4u.js";import{i as v,n as y}from"#entry";import{t as b}from"./ztSLDBsK.js";import{t as x}from"./DQNu8teu.js";import{n as se,t as ce}from"./BWmypMON.js";import{t as S}from"./BZwyJa72.js";var le={class:`grid gap-4 border-b border-base px-4 py-5`},C={class:`flex items-end gap-3`},w={class:`grid gap-1`},T={class:`label`},E={class:`flex items-center gap-3 font-mono text-2xl font-medium`},D={key:0,class:`pb-1 color-muted`},O={key:1,class:`badge mb-1.5`},k={key:0,class:`grid gap-1.5`},A={class:`h-2 flex border border-strong`},j={class:`font-mono text-xs color-muted tabular-nums`},M={key:1,class:`color-muted`},N={class:`truncate font-mono text-xs`},P={class:`truncate color-muted`},F={class:`truncate font-mono text-xs`},I={class:`truncate color-muted`},L={class:`flex min-w-0 items-center gap-2 font-mono text-xs`},ue={class:`truncate`},R={class:`truncate`},z={class:`truncate color-muted`},B={class:`font-mono text-xs color-muted`},V={key:0,class:`font-mono text-xs`},H={class:`flex-auto truncate`},U={key:4,class:`flex items-center gap-2 px-4 py-3 color-ok`},W=te({__name:`[locale]`,setup(te){let W=ne(),G=p(()=>String(W.params.locale)),K=p(()=>_.value?.locales.find(e=>e.code===G.value)),q=p(()=>G.value===_.value?.sourceLocale),J=g((e,t)=>e.keys(t)),de=g((e,t)=>e.analysis(t)),Y=p(()=>(J.value?.rows??[]).filter(e=>e.missing.includes(G.value)&&e.values[G.value]===void 0)),X=p(()=>(J.value?.rows??[]).filter(e=>e.missing.includes(G.value)&&e.values[G.value]!==void 0)),Z=p(()=>(J.value?.rows??[]).filter(e=>e.outdated.includes(G.value))),Q=p(()=>K.value&&K.value.total?K.value.outdated/K.value.total*100:0),$=p(()=>(de.value?.diagnostics??[]).filter(e=>e.locale===G.value&&(e.code===`placeholder-mismatch`||e.code===`invalid-syntax`)));function fe(){re(G.value)||ie(G.value)}return(te,p)=>(r(),u(b,null,{default:n(()=>[o(`header`,le,[o(`div`,C,[o(`div`,w,[o(`span`,T,t(l(h)(`locale.label`)),1),o(`h1`,E,[c(y,{code:G.value},null,8,[`code`]),d(` `+t(G.value),1)])]),K.value?(r(),s(`span`,D,t(l(oe)(G.value)??K.value.displayName),1)):m(``,!0),q.value?(r(),s(`span`,O,t(l(h)(`overview.source`)),1)):m(``,!0),p[1]||=o(`span`,{class:`flex-auto`},null,-1),c(l(v),{to:{path:`/keys`,query:{missing:G.value}},class:`btn-outline`,onClick:fe},{default:n(()=>[p[0]||=o(`span`,{class:`i-ph-table-duotone`},null,-1),d(` `+t(l(h)(`locale.openInGrid`)),1)]),_:1},8,[`to`]),q.value?m(``,!0):(r(),u(se,{key:2,text:l(ce)([{locale:G.value,stale:Z.value.length>0}]),label:Z.value.length?l(h)(`prompt.copyStale`):l(h)(`prompt.copy`),hint:Z.value.length?l(h)(`prompt.staleHint`):l(h)(`prompt.hint`)},null,8,[`text`,`label`,`hint`]))]),K.value?(r(),s(`div`,k,[o(`span`,A,[o(`span`,{class:`h-full bg-inverse`,style:a({width:`${Math.max(0,K.value.percent-Q.value)}%`})},null,4),o(`span`,{class:`h-full bg-[var(--x-warn)]`,style:a({width:`${Q.value}%`})},null,4)]),o(`span`,j,t(l(h)(`locale.progress`,{translated:K.value.translated,total:K.value.total,percent:l(ae)(K.value.percent)})),1)])):l(_)?(r(),s(`p`,M,t(l(h)(`locale.notFound`)),1)):m(``,!0)]),Y.value.length?(r(),u(x,{key:0,index:`01`,title:l(h)(`locale.missing`,{count:Y.value.length})},{default:n(()=>[(r(!0),s(f,null,i(Y.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-baseline gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,N,t(e.key),1),o(`span`,P,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),X.value.length?(r(),u(x,{key:1,index:`02`,title:l(h)(`locale.empty`,{count:X.value.length})},{default:n(()=>[(r(!0),s(f,null,i(X.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-baseline gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,F,t(e.key),1),o(`span`,I,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),Z.value.length?(r(),u(x,{key:2,index:`03`,title:l(h)(`locale.outdated`,{count:Z.value.length})},{default:n(()=>[(r(!0),s(f,null,i(Z.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr_1fr] items-center gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,L,[p[2]||=o(`span`,{class:`i-ph-clock-counter-clockwise-duotone shrink-0 color-warn`},null,-1),o(`span`,ue,t(e.key),1)]),o(`span`,R,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])]),o(`span`,z,[c(S,{value:e.values[G.value],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),$.value.length?(r(),u(x,{key:3,index:`04`,title:l(h)(`locale.problems`,{count:$.value.length})},{default:n(()=>[(r(!0),s(f,null,i($.value,(i,a)=>(r(),u(ee(i.key?l(v):`div`),{key:a,to:i.key?`/keys/${encodeURIComponent(i.key)}`:void 0,class:e([`flex items-center gap-2 border-b border-base px-4 py-1.5 last:border-b-0`,i.key&&`transition-colors hover:bg-hover`])},{default:n(()=>[o(`span`,{class:e(i.severity===`error`?`i-ph-x-circle-duotone color-error`:`i-ph-warning-duotone color-warn`)},null,2),o(`span`,B,t(i.code),1),i.key?(r(),s(`span`,V,t(i.key),1)):m(``,!0),o(`span`,H,t(i.message),1)]),_:2},1032,[`to`,`class`]))),128))]),_:1},8,[`title`])):m(``,!0),K.value&&l(J)&&!Y.value.length&&!X.value.length&&!Z.value.length&&!$.value.length?(r(),s(`p`,U,[p[3]||=o(`span`,{class:`i-ph-check-circle-duotone`},null,-1),d(` `+t(l(h)(`locale.complete`)),1)])):m(``,!0)]),_:1}))}});export{W as default};
1
+ import{Ct as e,Et as t,H as n,L as ee,M as r,P as i,Tt as a,_ as te,c as o,d as s,h as c,it as l,l as u,m as d,r as f,s as p,u as m}from"./B4prFwj0.js";import{u as ne}from"./D4dwYDex.js";import{S as h,i as re,m as g,n as _,p as ie,v as ae,y as oe}from"./DsqCc3fC.js";import{i as v,n as y}from"#entry";import{t as b}from"./ztSLDBsK.js";import{t as x}from"./DQNu8teu.js";import{n as se,t as ce}from"./JMXpOiMg.js";import{t as S}from"./CcXhso-T.js";var le={class:`grid gap-4 border-b border-base px-4 py-5`},C={class:`flex items-end gap-3`},w={class:`grid gap-1`},T={class:`label`},E={class:`flex items-center gap-3 font-mono text-2xl font-medium`},D={key:0,class:`pb-1 color-muted`},O={key:1,class:`badge mb-1.5`},k={key:0,class:`grid gap-1.5`},A={class:`h-2 flex border border-strong`},j={class:`font-mono text-xs color-muted tabular-nums`},M={key:1,class:`color-muted`},N={class:`truncate font-mono text-xs`},P={class:`truncate color-muted`},F={class:`truncate font-mono text-xs`},I={class:`truncate color-muted`},L={class:`flex min-w-0 items-center gap-2 font-mono text-xs`},ue={class:`truncate`},R={class:`truncate`},z={class:`truncate color-muted`},B={class:`font-mono text-xs color-muted`},V={key:0,class:`font-mono text-xs`},H={class:`flex-auto truncate`},U={key:4,class:`flex items-center gap-2 px-4 py-3 color-ok`},W=te({__name:`[locale]`,setup(te){let W=ne(),G=p(()=>String(W.params.locale)),K=p(()=>_.value?.locales.find(e=>e.code===G.value)),q=p(()=>G.value===_.value?.sourceLocale),J=g((e,t)=>e.keys(t)),de=g((e,t)=>e.analysis(t)),Y=p(()=>(J.value?.rows??[]).filter(e=>e.missing.includes(G.value)&&e.values[G.value]===void 0)),X=p(()=>(J.value?.rows??[]).filter(e=>e.missing.includes(G.value)&&e.values[G.value]!==void 0)),Z=p(()=>(J.value?.rows??[]).filter(e=>e.outdated.includes(G.value))),Q=p(()=>K.value&&K.value.total?K.value.outdated/K.value.total*100:0),$=p(()=>(de.value?.diagnostics??[]).filter(e=>e.locale===G.value&&(e.code===`placeholder-mismatch`||e.code===`invalid-syntax`)));function fe(){re(G.value)||ie(G.value)}return(te,p)=>(r(),u(b,null,{default:n(()=>[o(`header`,le,[o(`div`,C,[o(`div`,w,[o(`span`,T,t(l(h)(`locale.label`)),1),o(`h1`,E,[c(y,{code:G.value},null,8,[`code`]),d(` `+t(G.value),1)])]),K.value?(r(),s(`span`,D,t(l(oe)(G.value)??K.value.displayName),1)):m(``,!0),q.value?(r(),s(`span`,O,t(l(h)(`overview.source`)),1)):m(``,!0),p[1]||=o(`span`,{class:`flex-auto`},null,-1),c(l(v),{to:{path:`/keys`,query:{missing:G.value}},class:`btn-outline`,onClick:fe},{default:n(()=>[p[0]||=o(`span`,{class:`i-ph-table-duotone`},null,-1),d(` `+t(l(h)(`locale.openInGrid`)),1)]),_:1},8,[`to`]),q.value?m(``,!0):(r(),u(se,{key:2,text:l(ce)([{locale:G.value,stale:Z.value.length>0}]),label:Z.value.length?l(h)(`prompt.copyStale`):l(h)(`prompt.copy`),hint:Z.value.length?l(h)(`prompt.staleHint`):l(h)(`prompt.hint`)},null,8,[`text`,`label`,`hint`]))]),K.value?(r(),s(`div`,k,[o(`span`,A,[o(`span`,{class:`h-full bg-inverse`,style:a({width:`${Math.max(0,K.value.percent-Q.value)}%`})},null,4),o(`span`,{class:`h-full bg-[var(--x-warn)]`,style:a({width:`${Q.value}%`})},null,4)]),o(`span`,j,t(l(h)(`locale.progress`,{translated:K.value.translated,total:K.value.total,percent:l(ae)(K.value.percent)})),1)])):l(_)?(r(),s(`p`,M,t(l(h)(`locale.notFound`)),1)):m(``,!0)]),Y.value.length?(r(),u(x,{key:0,index:`01`,title:l(h)(`locale.missing`,{count:Y.value.length})},{default:n(()=>[(r(!0),s(f,null,i(Y.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-baseline gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,N,t(e.key),1),o(`span`,P,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),X.value.length?(r(),u(x,{key:1,index:`02`,title:l(h)(`locale.empty`,{count:X.value.length})},{default:n(()=>[(r(!0),s(f,null,i(X.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr] items-baseline gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,F,t(e.key),1),o(`span`,I,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),Z.value.length?(r(),u(x,{key:2,index:`03`,title:l(h)(`locale.outdated`,{count:Z.value.length})},{default:n(()=>[(r(!0),s(f,null,i(Z.value,e=>(r(),u(l(v),{key:e.key,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring grid grid-cols-[minmax(0,20rem)_1fr_1fr] items-center gap-4 border-b border-base px-4 py-1.5 transition-colors last:border-b-0 hover:bg-hover`},{default:n(()=>[o(`span`,L,[p[2]||=o(`span`,{class:`i-ph-clock-counter-clockwise-duotone shrink-0 color-warn`},null,-1),o(`span`,ue,t(e.key),1)]),o(`span`,R,[c(S,{value:e.values[l(_)?.sourceLocale??``],inline:``},null,8,[`value`])]),o(`span`,z,[c(S,{value:e.values[G.value],inline:``},null,8,[`value`])])]),_:2},1032,[`to`]))),128))]),_:1},8,[`title`])):m(``,!0),$.value.length?(r(),u(x,{key:3,index:`04`,title:l(h)(`locale.problems`,{count:$.value.length})},{default:n(()=>[(r(!0),s(f,null,i($.value,(i,a)=>(r(),u(ee(i.key?l(v):`div`),{key:a,to:i.key?`/keys/${encodeURIComponent(i.key)}`:void 0,class:e([`flex items-center gap-2 border-b border-base px-4 py-1.5 last:border-b-0`,i.key&&`transition-colors hover:bg-hover`])},{default:n(()=>[o(`span`,{class:e(i.severity===`error`?`i-ph-x-circle-duotone color-error`:`i-ph-warning-duotone color-warn`)},null,2),o(`span`,B,t(i.code),1),i.key?(r(),s(`span`,V,t(i.key),1)):m(``,!0),o(`span`,H,t(i.message),1)]),_:2},1032,[`to`,`class`]))),128))]),_:1},8,[`title`])):m(``,!0),K.value&&l(J)&&!Y.value.length&&!X.value.length&&!Z.value.length&&!$.value.length?(r(),s(`p`,U,[p[3]||=o(`span`,{class:`i-ph-check-circle-duotone`},null,-1),d(` `+t(l(h)(`locale.complete`)),1)])):m(``,!0)]),_:1}))}});export{W as default};
@@ -1 +1 @@
1
- import{B as e,Et as t,H as n,M as r,P as i,Q as a,U as o,_ as s,c,d as l,h as u,it as d,l as f,r as p,s as m,u as h}from"./B4prFwj0.js";import{i as g,o as _}from"./DoHg1T7s.js";import{S as v,c as y,m as b,t as x}from"./Bqlbbq4u.js";import{t as S}from"./SGqoyjTw.js";import{t as C}from"./ztSLDBsK.js";import{t as w}from"./DQNu8teu.js";var T={class:`flex items-center gap-3 border-b border-base px-4 py-3`},E={class:`flex-auto color-muted`},D={key:0,class:`color-ok`},O=[`disabled`],k={key:0,class:`px-4 py-3 color-muted`},A=[`onUpdate:modelValue`,`disabled`],j={class:`text-right font-mono text-xs color-faint tabular-nums`},M=[`title`],N=[`onUpdate:modelValue`,`readonly`,`aria-label`],P=s({__name:`extract`,setup(s){let P=b((e,t)=>e.extractCandidates(t)),F=a([]);e(P,e=>{F.value=(e??[]).map(e=>({candidate:e,key:e.key,picked:!0}))});let I=m(()=>{let e=new Map;for(let t of F.value){let n=e.get(t.candidate.path)??[];e.set(t.candidate.path,n),n.push(t)}return[...e]}),L=m(()=>F.value.filter(e=>e.picked)),R=a();async function z(){let e=L.value.map(({candidate:e,key:t})=>({path:e.path,range:e.range,original:e.original,key:t,value:e.value,replacement:e.replacement.replace(e.key,t),imports:e.imports})),t=await x.value.extractApply({project:y.value,items:e});R.value={count:t.keys.length,files:t.changes.length}}return(e,a)=>(r(),f(C,null,{default:n(()=>[c(`header`,T,[c(`p`,E,t(d(v)(`extract.hint`)),1),R.value?(r(),l(`span`,D,t(d(v)(`extract.done`,R.value)),1)):h(``,!0),d(x)?.capabilities.write?(r(),l(`button`,{key:1,class:`btn-solid`,disabled:!L.value.length,onClick:z},t(d(v)(`extract.apply`,{count:L.value.length})),9,O)):h(``,!0)]),d(P)&&!F.value.length?(r(),l(`p`,k,t(d(v)(`extract.none`)),1)):h(``,!0),(r(!0),l(p,null,i(I.value,([e,a],s)=>(r(),f(w,{key:e,index:String(s+1).padStart(2,`0`),title:d(v)(`extract.strings`,{count:a.length})},{aside:n(()=>[u(S,{path:e,class:`ml-2`},null,8,[`path`])]),default:n(()=>[(r(!0),l(p,null,i(a,e=>(r(),l(`label`,{key:e.candidate.range.start,class:`grid grid-cols-[auto_3rem_1fr_18rem] items-center gap-3 border-b border-base px-4 py-1.5 last:border-b-0`},[o(c(`input`,{"onUpdate:modelValue":t=>e.picked=t,type:`checkbox`,class:`accent-[var(--x-fg)]`,disabled:!d(x)?.capabilities.write},null,8,A),[[g,e.picked]]),c(`span`,j,t(e.candidate.line),1),c(`span`,{class:`truncate`,title:e.candidate.text},t(e.candidate.text),9,M),o(c(`input`,{"onUpdate:modelValue":t=>e.key=t,class:`input font-mono text-xs`,readonly:!d(x)?.capabilities.write,"aria-label":d(v)(`extract.key`)},null,8,N),[[_,e.key]])]))),128))]),_:2},1032,[`index`,`title`]))),128))]),_:1}))}});export{P as default};
1
+ import{B as e,Et as t,H as n,M as r,P as i,Q as a,U as o,_ as s,c,d as l,h as u,it as d,l as f,r as p,s as m,u as h}from"./B4prFwj0.js";import{i as g,o as _}from"./DoHg1T7s.js";import{S as v,c as y,m as b,t as x}from"./DsqCc3fC.js";import{t as S}from"./0cXQUs3T.js";import{t as C}from"./ztSLDBsK.js";import{t as w}from"./DQNu8teu.js";var T={class:`flex items-center gap-3 border-b border-base px-4 py-3`},E={class:`flex-auto color-muted`},D={key:0,class:`color-ok`},O=[`disabled`],k={key:0,class:`px-4 py-3 color-muted`},A=[`onUpdate:modelValue`,`disabled`],j={class:`text-right font-mono text-xs color-faint tabular-nums`},M=[`title`],N=[`onUpdate:modelValue`,`readonly`,`aria-label`],P=s({__name:`extract`,setup(s){let P=b((e,t)=>e.extractCandidates(t)),F=a([]);e(P,e=>{F.value=(e??[]).map(e=>({candidate:e,key:e.key,picked:!0}))});let I=m(()=>{let e=new Map;for(let t of F.value){let n=e.get(t.candidate.path)??[];e.set(t.candidate.path,n),n.push(t)}return[...e]}),L=m(()=>F.value.filter(e=>e.picked)),R=a();async function z(){let e=L.value.map(({candidate:e,key:t})=>({path:e.path,range:e.range,original:e.original,key:t,value:e.value,replacement:e.replacement.replace(e.key,t),imports:e.imports})),t=await x.value.extractApply({project:y.value,items:e});R.value={count:t.keys.length,files:t.changes.length}}return(e,a)=>(r(),f(C,null,{default:n(()=>[c(`header`,T,[c(`p`,E,t(d(v)(`extract.hint`)),1),R.value?(r(),l(`span`,D,t(d(v)(`extract.done`,R.value)),1)):h(``,!0),d(x)?.capabilities.write?(r(),l(`button`,{key:1,class:`btn-solid`,disabled:!L.value.length,onClick:z},t(d(v)(`extract.apply`,{count:L.value.length})),9,O)):h(``,!0)]),d(P)&&!F.value.length?(r(),l(`p`,k,t(d(v)(`extract.none`)),1)):h(``,!0),(r(!0),l(p,null,i(I.value,([e,a],s)=>(r(),f(w,{key:e,index:String(s+1).padStart(2,`0`),title:d(v)(`extract.strings`,{count:a.length})},{aside:n(()=>[u(S,{path:e,class:`ml-2`},null,8,[`path`])]),default:n(()=>[(r(!0),l(p,null,i(a,e=>(r(),l(`label`,{key:e.candidate.range.start,class:`grid grid-cols-[auto_3rem_1fr_18rem] items-center gap-3 border-b border-base px-4 py-1.5 last:border-b-0`},[o(c(`input`,{"onUpdate:modelValue":t=>e.picked=t,type:`checkbox`,class:`accent-[var(--x-fg)]`,disabled:!d(x)?.capabilities.write},null,8,A),[[g,e.picked]]),c(`span`,j,t(e.candidate.line),1),c(`span`,{class:`truncate`,title:e.candidate.text},t(e.candidate.text),9,M),o(c(`input`,{"onUpdate:modelValue":t=>e.key=t,class:`input font-mono text-xs`,readonly:!d(x)?.capabilities.write,"aria-label":d(v)(`extract.key`)},null,8,N),[[_,e.key]])]))),128))]),_:2},1032,[`index`,`title`]))),128))]),_:1}))}});export{P as default};
@@ -1 +1 @@
1
- var e={app:{error:`Verbindung fehlgeschlagen: {message}`,language:`Sprache`,loading:`Projekt wird geladen…`,name:`x18n`,project:`Projekt`,static:`Schreibgeschützter Bericht`,staticHint:"Ein mit `x18n build` erstellter Snapshot. Zum Bearbeiten `x18n ui` ausführen."},auth:{code:`Auth-Code`,hint:"Den 6-stelligen Code eingeben, den `x18n ui` im Terminal ausgegeben hat.",label:`Authentifizierung`,rejected:`Dieser Code ist ungültig. Den aktuellen Code im Terminal prüfen.`,submit:`Verbinden`,title:`Mit x18n verbinden`},detail:{back:`Zurück zu den Schlüsseln`,diagnostics:`Probleme`,edit:`Bearbeiten`,label:`Schlüssel`,noUsages:`Kein Code verwendet diesen Schlüssel.`,notFound:`Dieser Schlüssel ist nicht definiert.`,openInEditor:`Im Editor öffnen`,possible:`möglich`,usages:`Verwendungen ({count})`,values:`Werte`,showAllLocales:`Alle Sprachen anzeigen`,file:`Datei`},edit:{dismiss:`Schließen`,placeholdersExtra:`unerwartete Platzhalter {names}`,placeholdersMissing:`fehlende Platzhalter {names}`,rejected:`Nicht gespeichert: {key} in {locale}: {message}.`,saveAnyway:`Trotzdem speichern`},extract:{apply:`Extrahieren ({count})`,done:`Extrahierte Schlüssel: {count}. Geänderte Dateien: {files}.`,hint:`Fest codierte Strings mit vorgeschlagenem Schlüssel. Schlüssel bearbeiten, zu überspringende Strings abwählen, dann anwenden.`,key:`Schlüssel`,none:`Keine fest codierten Strings gefunden.`,strings:`Strings: {count}`},keys:{allNamespaces:`Alle Namespaces`,anyLocale:`Beliebige Sprache`,count:`{shown} von {total} Schlüsseln`,diagnosticsHint:`Probleme bei diesem Schlüssel`,editValue:`Wert von {key} in {locale}`,empty:`Keine passenden Schlüssel.`,grid:`Schlüssel und Werte pro Sprache`,helpEdit:`Enter zum Bearbeiten, Esc zum Abbrechen`,helpMove:`Pfeiltasten oder j/k zum Bewegen`,helpOpen:`o öffnet den Schlüssel`,helpSearch:`/ zum Suchen`,key:`Schlüssel`,missingIn:`Fehlt in`,missingInLocale:`Fehlt in {locale}`,namespace:`Namespace`,search:`Schlüssel und Werte durchsuchen`,unused:`Unbenutzt`,unusedHint:`Kein Code verwendet diesen Schlüssel`,withDiagnostics:`Mit Problemen`,outdated:`Veraltet`,sort:`Sortierung`,sortKey:`Schlüssel`,sortRecent:`Zuletzt geändert`},locale:{complete:`Alle Schlüssel sind übersetzt.`,empty:`Leer ({count})`,label:`Sprache`,missing:`Fehlend ({count})`,notFound:`Diese Sprache gibt es im Projekt nicht.`,openInGrid:`Im Raster anzeigen`,problems:`Platzhalter- und Syntaxprobleme ({count})`,progress:`{translated} von {total} übersetzt ({percent})`,outdated:`Veraltet ({count})`},localeBar:{bar:`Anzuzeigende Sprachen`,noneShown:`Alle Sprachen sind ausgeblendet. Oben in der Leiste eine auswählen.`,showAll:`Alle anzeigen`,shown:`{shown} von {total} angezeigt`,title:`Sprachen`,toggle:`{locale} ein- oder ausblenden`,resetOrder:`Reihenfolge zurücksetzen`,flags:`Flaggen anzeigen`,reorder:`Zum Umsortieren ziehen oder Alt und eine Pfeiltaste drücken.`},nav:{extract:`Extrahieren`,keys:`Schlüssel`,overview:`Übersicht`,project:`Projekt`,usages:`Verwendungen`},overview:{clean:`Keine Probleme gefunden.`,coverage:`Abdeckung`,diagnostics:`Diagnosen`,errors:`Fehler: {count}`,keys:`Schlüssel`,locales:`Sprachen`,missing:`{missing} fehlend, {empty} leer`,noPresets:`Kein Preset erkannt.`,noRecent:`Seit dem Öffnen der Seite hat sich nichts geändert.`,presets:`Presets`,recent:`Letzte Änderungen`,resources:`Ressourcen`,source:`Quelle`,usages:`Verwendungen`,warnings:`Warnungen: {count}`,outdated:`{count} veraltet`},project:{config:`Konfiguration und Herkunft der Werte`,conflict:`.{extension}: {winner} hat Vorrang vor {loser}`,files:`Dateien: {count}`,finders:`Sprach-Finder`,formats:`Formate`,presets:`Presets`,problems:`Probleme`,resources:`Ressourcen: {count}`,scanners:`Scanner`,showAllPresets:`Alle Presets anzeigen`},prompt:{copied:`Kopiert`,copy:`Übersetzungs-Prompt kopieren`,hint:`Einen Prompt für ein LLM oder einen Agenten kopieren, der die fehlenden Texte übersetzt`,copyStale:`Prompt mit veralteten kopieren`,staleHint:`Prompt für ein LLM oder einen Agenten kopieren, der fehlende Nachrichten übersetzt und veraltete aktualisiert`,copyAll:`Übersetzungs-Prompt für alle Sprachen kopieren`,allHint:`Kopiert einen Prompt für ein LLM oder einen Agenten, der fehlende Nachrichten in jeder Sprache übersetzt`},usages:{all:`Alle ({count})`,dynamic:`Dynamisch ({count})`,dynamicHint:`Verwendungen mit berechnetem Schlüssel. Schlüssel unter ihrem Präfix gelten als verwendet.`,filter:`Nach Datei oder Schlüssel filtern`,missing:`Nicht definiert ({count})`,missingHint:`Schlüssel, die im Code verwendet, aber in der Quellsprache nicht definiert sind.`,unused:`Unbenutzt ({count})`,unusedHint:`In der Quellsprache definierte Schlüssel, die kein Code verwendet.`},value:{empty:`leer`,missing:`fehlt`},history:{title:`Verlauf`,local:`lokal geändert`,outdated:`veraltet`,outdatedHint:`Die Quellnachricht hat sich nach dieser Übersetzung geändert`,sourceThen:`Quelle damals`,sourceNow:`Quelle jetzt`,more:`und {count} weitere`,locales:`{count} Sprachen`}};export{e as default};
1
+ var e={app:{error:`Verbindung fehlgeschlagen: {message}`,language:`Sprache`,loading:`Projekt wird geladen…`,name:`x18n`,project:`Projekt`,static:`Schreibgeschützter Bericht`,staticHint:"Ein mit `x18n build` erstellter Snapshot. Zum Bearbeiten `x18n ui` ausführen."},auth:{code:`Auth-Code`,hint:"Den 6-stelligen Code eingeben, den `x18n ui` im Terminal ausgegeben hat.",label:`Authentifizierung`,rejected:`Dieser Code ist ungültig. Den aktuellen Code im Terminal prüfen.`,submit:`Verbinden`,title:`Mit x18n verbinden`},detail:{back:`Zurück zu den Schlüsseln`,diagnostics:`Probleme`,edit:`Bearbeiten`,label:`Schlüssel`,noUsages:`Kein Code verwendet diesen Schlüssel.`,notFound:`Dieser Schlüssel ist nicht definiert.`,openInEditor:`Im Editor öffnen`,possible:`möglich`,usages:`Verwendungen ({count})`,values:`Werte`,showAllLocales:`Alle Sprachen anzeigen`,file:`Datei`},edit:{dismiss:`Schließen`,placeholdersExtra:`unerwartete Platzhalter {names}`,placeholdersMissing:`fehlende Platzhalter {names}`,rejected:`Nicht gespeichert: {key} in {locale}: {message}.`,saveAnyway:`Trotzdem speichern`},extract:{apply:`Extrahieren ({count})`,done:`Extrahierte Schlüssel: {count}. Geänderte Dateien: {files}.`,hint:`Fest codierte Strings mit vorgeschlagenem Schlüssel. Schlüssel bearbeiten, zu überspringende Strings abwählen, dann anwenden.`,key:`Schlüssel`,none:`Keine fest codierten Strings gefunden.`,strings:`Strings: {count}`},keys:{allNamespaces:`Alle Namespaces`,anyLocale:`Beliebige Sprache`,count:`{shown} von {total} Schlüsseln`,diagnosticsHint:`Probleme bei diesem Schlüssel`,editValue:`Wert von {key} in {locale}`,empty:`Keine passenden Schlüssel.`,grid:`Schlüssel und Werte pro Sprache`,helpEdit:`Enter zum Bearbeiten, Esc zum Abbrechen`,helpMove:`Pfeiltasten oder j/k zum Bewegen`,helpOpen:`o öffnet den Schlüssel`,helpSearch:`/ zum Suchen`,key:`Schlüssel`,missingIn:`Fehlt in`,missingInLocale:`Fehlt in {locale}`,namespace:`Namespace`,search:`Schlüssel und Werte durchsuchen`,unused:`Unbenutzt`,unusedHint:`Kein Code verwendet diesen Schlüssel`,withDiagnostics:`Mit Problemen`,outdated:`Veraltet`,sort:`Sortierung`,sortKey:`Schlüssel`,sortRecent:`Zuletzt geändert`},locale:{complete:`Alle Schlüssel sind übersetzt.`,empty:`Leer ({count})`,label:`Sprache`,missing:`Fehlend ({count})`,notFound:`Diese Sprache gibt es im Projekt nicht.`,openInGrid:`Im Raster anzeigen`,problems:`Platzhalter- und Syntaxprobleme ({count})`,progress:`{translated} von {total} übersetzt ({percent})`,outdated:`Veraltet ({count})`},localeBar:{bar:`Anzuzeigende Sprachen`,noneShown:`Alle Sprachen sind ausgeblendet. Oben in der Leiste eine auswählen.`,showAll:`Alle anzeigen`,shown:`{shown} von {total} angezeigt`,title:`Sprachen`,toggle:`{locale} ein- oder ausblenden`,resetOrder:`Reihenfolge zurücksetzen`,flags:`Flaggen anzeigen`,reorder:`Zum Umsortieren ziehen oder Alt und eine Pfeiltaste drücken.`},nav:{extract:`Extrahieren`,keys:`Schlüssel`,overview:`Übersicht`,project:`Projekt`,usages:`Verwendungen`},overview:{clean:`Keine Probleme gefunden.`,coverage:`Abdeckung`,diagnostics:`Diagnosen`,errors:`Fehler: {count}`,keys:`Schlüssel`,locales:`Sprachen`,missing:`{missing} fehlend, {empty} leer`,noPresets:`Kein Preset erkannt.`,noRecent:`Seit dem Öffnen der Seite hat sich nichts geändert.`,presets:`Presets`,recent:`Letzte Änderungen`,resources:`Ressourcen`,source:`Quelle`,usages:`Verwendungen`,warnings:`Warnungen: {count}`,outdated:`{count} veraltet`},project:{config:`Konfiguration und Herkunft der Werte`,conflict:`.{extension}: {winner} hat Vorrang vor {loser}`,files:`Dateien: {count}`,finders:`Sprach-Finder`,formats:`Formate`,presets:`Presets`,problems:`Probleme`,resources:`Ressourcen: {count}`,scanners:`Scanner`,showAllPresets:`Alle Presets anzeigen`},prompt:{copied:`Kopiert`,copy:`Übersetzungs-Prompt kopieren`,hint:`Einen Prompt für ein LLM oder einen Agenten kopieren, der die fehlenden Texte übersetzt`,copyStale:`Prompt mit veralteten kopieren`,staleHint:`Prompt für ein LLM oder einen Agenten kopieren, der fehlende Nachrichten übersetzt und veraltete aktualisiert`,copyAll:`Übersetzungs-Prompt für alle Sprachen kopieren`,allHint:`Kopiert einen Prompt für ein LLM oder einen Agenten, der fehlende Nachrichten in jeder Sprache übersetzt`},usages:{all:`Alle ({count})`,dynamic:`Dynamisch ({count})`,dynamicHint:`Verwendungen mit berechnetem Schlüssel. Schlüssel unter ihrem Präfix gelten als verwendet.`,filter:`Nach Datei oder Schlüssel filtern`,missing:`Nicht definiert ({count})`,missingHint:`Schlüssel, die im Code verwendet, aber in der Quellsprache nicht definiert sind.`,unused:`Unbenutzt ({count})`,unusedHint:`In der Quellsprache definierte Schlüssel, die kein Code verwendet.`},value:{empty:`leer`,missing:`fehlt`},history:{title:`Verlauf`,local:`lokal geändert`,outdated:`veraltet`,outdatedHint:`Die Quellnachricht hat sich nach dieser Übersetzung geändert`,sourceThen:`Quelle damals`,sourceNow:`Quelle jetzt`,more:`und {count} weitere`,locales:`{count} Sprachen`},sidebar:{list:`Listenansicht`,tree:`Baumansicht`,filter:`Schlüssel filtern`,view:`Ansicht der Schlüsselliste`}};export{e as default};
@@ -0,0 +1 @@
1
+ import{Ct as e,Et as t,M as n,P as r,_ as i,d as a,it as o,m as s,r as c,s as l}from"./B4prFwj0.js";import{S as u}from"./DsqCc3fC.js";var d={key:0,class:`font-mono text-[11px] uppercase tracking-[0.08em] color-error op-80`},f={key:1,class:`font-mono text-[11px] uppercase tracking-[0.08em] color-warn op-80`},p={key:2,class:`font-mono color-info`},m={key:0,class:`bg-gray:10 px0.8 py0.1 rounded text-gray-400 text-xs`,"data-placeholder":``},h=i({__name:`MessageText`,props:{value:{type:[String,Number,Boolean,null]},placeholders:{},inline:{type:Boolean}},setup(i){let h=i,g=l(()=>{if(typeof h.value!=`string`)return[];let e=[],t=0;for(let n of h.placeholders??[])n.start>t&&e.push({text:h.value.slice(t,n.start),placeholder:!1}),e.push({text:h.value.slice(n.start,n.end),placeholder:!0}),t=n.end;return t<h.value.length&&e.push({text:h.value.slice(t),placeholder:!1}),e});return(l,h)=>i.value===void 0?(n(),a(`span`,d,t(o(u)(`value.missing`)),1)):i.value===``?(n(),a(`span`,f,t(o(u)(`value.empty`)),1)):typeof i.value==`string`?(n(),a(`span`,{key:3,class:e(i.inline?`whitespace-nowrap`:`whitespace-pre-wrap break-words`)},[(n(!0),a(c,null,r(g.value,(e,r)=>(n(),a(c,{key:r},[e.placeholder?(n(),a(`span`,m,t(e.text),1)):(n(),a(c,{key:1},[s(t(e.text),1)],64))],64))),128))],2)):(n(),a(`span`,p,t(JSON.stringify(i.value)),1))}});export{h as t};
@@ -1 +1 @@
1
- var e={app:{error:`Connexion impossible\xA0: {message}`,language:`Langue`,loading:`Chargement du projet…`,name:`x18n`,project:`Projet`,static:`Rapport en lecture seule`,staticHint:"Instantané généré avec `x18n build`. Lancez `x18n ui` pour modifier."},auth:{code:`Code d’authentification`,hint:"Saisissez le code à 6 chiffres affiché par `x18n ui` dans le terminal.",label:`Authentification`,rejected:`Ce code n’a pas fonctionné. Consultez le terminal pour obtenir le code actuel.`,submit:`Se connecter`,title:`Se connecter à x18n`},detail:{back:`Retour aux clés`,diagnostics:`Problèmes`,edit:`Modifier`,label:`Clé`,noUsages:`Aucun code n’utilise cette clé.`,notFound:`Cette clé n’est pas définie.`,openInEditor:`Ouvrir dans l’éditeur`,possible:`possible`,usages:`Utilisations ({count})`,values:`Valeurs`,showAllLocales:`Afficher toutes les langues`,file:`Fichier`},edit:{dismiss:`Ignorer`,placeholdersExtra:`espaces réservés inattendus {names}`,placeholdersMissing:`espaces réservés manquants {names}`,rejected:`Non enregistré\xA0: {key} en {locale}\xA0: {message}.`,saveAnyway:`Enregistrer quand même`},extract:{apply:`Extraire ({count})`,done:`Clés extraites\xA0: {count}. Fichiers modifiés\xA0: {files}.`,hint:`Chaînes codées en dur avec une clé proposée. Modifiez les clés, décochez les chaînes à ignorer, puis appliquez.`,key:`Clé`,none:`Aucune chaîne codée en dur trouvée.`,strings:`Chaînes\xA0: {count}`},keys:{allNamespaces:`Tous les espaces de noms`,anyLocale:`Toute langue`,count:`{shown} clés sur {total}`,diagnosticsHint:`Problèmes sur cette clé`,editValue:`Valeur de {key} en {locale}`,empty:`Aucune clé ne correspond.`,grid:`Clés et valeurs par langue`,helpEdit:`Entrée pour modifier, Échap pour annuler`,helpMove:`Flèches ou j/k pour se déplacer`,helpOpen:`o pour ouvrir la clé`,helpSearch:`/ pour rechercher`,key:`Clé`,missingIn:`Manquante en`,missingInLocale:`Manquante en {locale}`,namespace:`Espace de noms`,search:`Rechercher clés et valeurs`,unused:`Inutilisées`,unusedHint:`Aucun code n’utilise cette clé`,withDiagnostics:`Avec problèmes`,outdated:`Obsolètes`,sort:`Tri`,sortKey:`Clé`,sortRecent:`Modifiées récemment`},locale:{complete:`Toutes les clés sont traduites.`,empty:`Vides ({count})`,label:`Langue`,missing:`Manquantes ({count})`,notFound:`Ce projet ne contient pas cette langue.`,openInGrid:`Afficher dans la grille`,problems:`Problèmes d’espaces réservés et de syntaxe ({count})`,progress:`{translated} sur {total} traduites ({percent})`,outdated:`Obsolètes ({count})`},localeBar:{bar:`Langues à afficher`,noneShown:`Toutes les langues sont masquées. Choisissez-en une dans la barre ci-dessus.`,showAll:`Tout afficher`,shown:`{shown} sur {total} affichées`,title:`Langues`,toggle:`Afficher ou masquer {locale}`,resetOrder:`Réinitialiser l’ordre`,flags:`Afficher les drapeaux`,reorder:`Faites glisser, ou appuyez sur Alt et une flèche, pour réordonner.`},nav:{extract:`Extraire`,keys:`Clés`,overview:`Aperçu`,project:`Projet`,usages:`Utilisations`},overview:{clean:`Aucun problème détecté.`,coverage:`Couverture`,diagnostics:`Diagnostics`,errors:`Erreurs\xA0: {count}`,keys:`Clés`,locales:`Langues`,missing:`{missing} manquantes, {empty} vides`,noPresets:`Aucun preset détecté.`,noRecent:`Aucune modification depuis l’ouverture de la page.`,presets:`Presets`,recent:`Modifications récentes`,resources:`Ressources`,source:`source`,usages:`Utilisations`,warnings:`Avertissements\xA0: {count}`,outdated:`{count} obsolètes`},project:{config:`Configuration et origine de chaque valeur`,conflict:`.{extension}\xA0: {winner} l’emporte sur {loser}`,files:`Fichiers\xA0: {count}`,finders:`Détecteurs de langues`,formats:`Formats`,presets:`Presets`,problems:`Problèmes`,resources:`Ressources\xA0: {count}`,scanners:`Scanners`,showAllPresets:`Afficher tous les presets`},prompt:{copied:`Copié`,copy:`Copier le prompt de traduction`,hint:`Copier un prompt pour un LLM ou un agent qui traduit les messages manquants`,copyStale:`Copier le prompt avec les obsolètes`,staleHint:`Copier un prompt pour un LLM ou un agent qui traduit les messages manquants et met à jour les obsolètes`,copyAll:`Copier le prompt de traduction de toutes les langues`,allHint:`Copie un prompt pour un LLM ou un agent qui traduit ce qui manque dans chaque langue`},usages:{all:`Toutes ({count})`,dynamic:`Dynamiques ({count})`,dynamicHint:`Utilisations avec une clé calculée. Les clés sous leur préfixe comptent comme utilisées.`,filter:`Filtrer par fichier ou clé`,missing:`Non définies ({count})`,missingHint:`Clés utilisées dans le code mais non définies dans la langue source.`,unused:`Inutilisées ({count})`,unusedHint:`Clés définies dans la langue source qu’aucun code n’utilise.`},value:{empty:`vide`,missing:`manquant`},history:{title:`Historique`,local:`modifié localement`,outdated:`obsolète`,outdatedHint:`Le message source a changé après cette traduction`,sourceThen:`Source alors`,sourceNow:`Source actuelle`,more:`et {count} de plus`,locales:`{count} langues`}};export{e as default};
1
+ var e={app:{error:`Connexion impossible\xA0: {message}`,language:`Langue`,loading:`Chargement du projet…`,name:`x18n`,project:`Projet`,static:`Rapport en lecture seule`,staticHint:"Instantané généré avec `x18n build`. Lancez `x18n ui` pour modifier."},auth:{code:`Code d’authentification`,hint:"Saisissez le code à 6 chiffres affiché par `x18n ui` dans le terminal.",label:`Authentification`,rejected:`Ce code n’a pas fonctionné. Consultez le terminal pour obtenir le code actuel.`,submit:`Se connecter`,title:`Se connecter à x18n`},detail:{back:`Retour aux clés`,diagnostics:`Problèmes`,edit:`Modifier`,label:`Clé`,noUsages:`Aucun code n’utilise cette clé.`,notFound:`Cette clé n’est pas définie.`,openInEditor:`Ouvrir dans l’éditeur`,possible:`possible`,usages:`Utilisations ({count})`,values:`Valeurs`,showAllLocales:`Afficher toutes les langues`,file:`Fichier`},edit:{dismiss:`Ignorer`,placeholdersExtra:`espaces réservés inattendus {names}`,placeholdersMissing:`espaces réservés manquants {names}`,rejected:`Non enregistré\xA0: {key} en {locale}\xA0: {message}.`,saveAnyway:`Enregistrer quand même`},extract:{apply:`Extraire ({count})`,done:`Clés extraites\xA0: {count}. Fichiers modifiés\xA0: {files}.`,hint:`Chaînes codées en dur avec une clé proposée. Modifiez les clés, décochez les chaînes à ignorer, puis appliquez.`,key:`Clé`,none:`Aucune chaîne codée en dur trouvée.`,strings:`Chaînes\xA0: {count}`},keys:{allNamespaces:`Tous les espaces de noms`,anyLocale:`Toute langue`,count:`{shown} clés sur {total}`,diagnosticsHint:`Problèmes sur cette clé`,editValue:`Valeur de {key} en {locale}`,empty:`Aucune clé ne correspond.`,grid:`Clés et valeurs par langue`,helpEdit:`Entrée pour modifier, Échap pour annuler`,helpMove:`Flèches ou j/k pour se déplacer`,helpOpen:`o pour ouvrir la clé`,helpSearch:`/ pour rechercher`,key:`Clé`,missingIn:`Manquante en`,missingInLocale:`Manquante en {locale}`,namespace:`Espace de noms`,search:`Rechercher clés et valeurs`,unused:`Inutilisées`,unusedHint:`Aucun code n’utilise cette clé`,withDiagnostics:`Avec problèmes`,outdated:`Obsolètes`,sort:`Tri`,sortKey:`Clé`,sortRecent:`Modifiées récemment`},locale:{complete:`Toutes les clés sont traduites.`,empty:`Vides ({count})`,label:`Langue`,missing:`Manquantes ({count})`,notFound:`Ce projet ne contient pas cette langue.`,openInGrid:`Afficher dans la grille`,problems:`Problèmes d’espaces réservés et de syntaxe ({count})`,progress:`{translated} sur {total} traduites ({percent})`,outdated:`Obsolètes ({count})`},localeBar:{bar:`Langues à afficher`,noneShown:`Toutes les langues sont masquées. Choisissez-en une dans la barre ci-dessus.`,showAll:`Tout afficher`,shown:`{shown} sur {total} affichées`,title:`Langues`,toggle:`Afficher ou masquer {locale}`,resetOrder:`Réinitialiser l’ordre`,flags:`Afficher les drapeaux`,reorder:`Faites glisser, ou appuyez sur Alt et une flèche, pour réordonner.`},nav:{extract:`Extraire`,keys:`Clés`,overview:`Aperçu`,project:`Projet`,usages:`Utilisations`},overview:{clean:`Aucun problème détecté.`,coverage:`Couverture`,diagnostics:`Diagnostics`,errors:`Erreurs\xA0: {count}`,keys:`Clés`,locales:`Langues`,missing:`{missing} manquantes, {empty} vides`,noPresets:`Aucun preset détecté.`,noRecent:`Aucune modification depuis l’ouverture de la page.`,presets:`Presets`,recent:`Modifications récentes`,resources:`Ressources`,source:`source`,usages:`Utilisations`,warnings:`Avertissements\xA0: {count}`,outdated:`{count} obsolètes`},project:{config:`Configuration et origine de chaque valeur`,conflict:`.{extension}\xA0: {winner} l’emporte sur {loser}`,files:`Fichiers\xA0: {count}`,finders:`Détecteurs de langues`,formats:`Formats`,presets:`Presets`,problems:`Problèmes`,resources:`Ressources\xA0: {count}`,scanners:`Scanners`,showAllPresets:`Afficher tous les presets`},prompt:{copied:`Copié`,copy:`Copier le prompt de traduction`,hint:`Copier un prompt pour un LLM ou un agent qui traduit les messages manquants`,copyStale:`Copier le prompt avec les obsolètes`,staleHint:`Copier un prompt pour un LLM ou un agent qui traduit les messages manquants et met à jour les obsolètes`,copyAll:`Copier le prompt de traduction de toutes les langues`,allHint:`Copie un prompt pour un LLM ou un agent qui traduit ce qui manque dans chaque langue`},usages:{all:`Toutes ({count})`,dynamic:`Dynamiques ({count})`,dynamicHint:`Utilisations avec une clé calculée. Les clés sous leur préfixe comptent comme utilisées.`,filter:`Filtrer par fichier ou clé`,missing:`Non définies ({count})`,missingHint:`Clés utilisées dans le code mais non définies dans la langue source.`,unused:`Inutilisées ({count})`,unusedHint:`Clés définies dans la langue source qu’aucun code n’utilise.`},value:{empty:`vide`,missing:`manquant`},history:{title:`Historique`,local:`modifié localement`,outdated:`obsolète`,outdatedHint:`Le message source a changé après cette traduction`,sourceThen:`Source alors`,sourceNow:`Source actuelle`,more:`et {count} de plus`,locales:`{count} langues`},sidebar:{list:`Vue en liste`,tree:`Vue en arbre`,filter:`Filtrer les clés`,view:`Affichage de la liste des clés`}};export{e as default};
@@ -0,0 +1 @@
1
+ import{B as e,Ct as t,E as n,Et as r,F as i,H as a,M as o,P as s,Q as c,R as l,T as u,Tt as d,U as f,_ as p,c as m,d as h,h as g,it as _,m as v,r as y,s as b,u as x,wt as ee,y as te,z as S}from"./B4prFwj0.js";import{a as C,i as w,o as T,s as E}from"./DoHg1T7s.js";import{d as ne,u as re}from"./D4dwYDex.js";import{D as ie,S as D,h as ae,m as oe,n as se,t as O}from"./DsqCc3fC.js";import{n as ce}from"#entry";import{t as le}from"./CcXhso-T.js";import{i as k,n as ue,r as de}from"./Bkjpr8TV.js";import{t as fe}from"./C7ReGOzp.js";var A={class:`inline-flex cursor-pointer items-center gap-2 text-xs select-none`},j=p({__name:`UiToggle`,props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let n=l(e,`modelValue`);return(e,r)=>(o(),h(`label`,A,[f(m(`input`,{"onUpdate:modelValue":r[0]||=e=>n.value=e,type:`checkbox`,class:`peer sr-only`},null,512),[[w,n.value]]),m(`span`,{class:t([`relative h-4 w-7 border transition-colors peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-[var(--x-fg)]`,n.value?`border-inverse bg-inverse`:`border-strong bg-base`])},[m(`span`,{class:t([`absolute top-[2px] size-[10px] transition-all`,n.value?`left-[14px] bg-base`:`left-[2px] bg-inverse`])},null,2)],2),i(e.$slots,`default`)]))}}),pe={class:`h-full flex flex-col`},me={class:`shrink-0 flex flex-wrap items-center gap-3 border-b border-base px-4 py-2`},he={class:`input w-80 flex items-center gap-2 focus-within:border-inverse`},ge=[`placeholder`,`aria-label`],_e=[`aria-label`],ve={value:``},ye=[`value`],be=[`aria-label`],xe={value:``},Se=[`value`],Ce={class:`font-mono text-xs color-muted tabular-nums`},we={key:0,class:`shrink-0 flex items-center gap-2 border-b border-base px-4 py-1.5 color-warn`,role:`alert`},Te={class:`color-base`},Ee=[`aria-label`,`aria-rowcount`],De={class:`label flex items-center px-4`,role:`columnheader`},Oe={class:`label color-base`},ke={key:0,class:`badge`},Ae=[`aria-rowindex`,`data-key`],je=[`title`,`onClick`,`onDblclick`],Me={class:`truncate`},Ne=[`title`],Pe=[`title`],Fe=[`data-locale`,`onClick`,`onDblclick`],Ie=[`aria-label`],Le=[`title`],Re=[`title`],ze={key:0,class:`p-4 color-muted`},Be={class:`shrink-0 flex gap-4 border-t border-base px-4 py-1.5 font-mono text-[11px] color-muted`},Ve={key:0},M=32,N=p({__name:`index`,setup(i){let l=re(),p=ne(),w=oe((e,t)=>e.keys(t)),A=c(``),N=c(``),P=c(typeof l.query.missing==`string`?l.query.missing:``),F=c(!1),I=c(!1),L=c(l.query.outdated!==void 0),R=c(`key`),He=b(()=>[{value:`key`,label:D(`keys.sortKey`)},{value:`recent`,label:D(`keys.sortRecent`)}]),Ue=b(()=>(w.value?.rows??[]).some(e=>e.changedAt!==void 0)),z=b(()=>ae.value.map(e=>e.code)),B=b(()=>[...new Set((w.value?.rows??[]).flatMap(e=>e.namespace??[]))].sort()),V=b(()=>{let e=A.value.trim(),t=(w.value?.rows??[]).filter(e=>(!N.value||e.namespace===N.value)&&(!P.value||!z.value.includes(P.value)||e.missing.includes(P.value))&&(!F.value||e.unused)&&(!I.value||e.diagnostics>0)&&(!L.value||e.outdated.some(e=>z.value.includes(e))));return e?t.map(t=>{let n=Object.values(t.values).map(t=>k(e,String(t))/2);return{row:t,score:Math.max(k(e,t.key),...n)}}).filter(e=>e.score>=0).sort((e,t)=>t.score-e.score).map(e=>e.row):R.value===`recent`?[...t].sort((e,t)=>(t.changedAt??0)-(e.changedAt??0)):t}),{list:We,containerProps:H,wrapperProps:Ge,scrollTo:Ke}=ie(V,{itemHeight:M,overscan:12}),U=c({row:0,col:0}),W=c(),G=c(),K=S(`searchInput`),q=S(`editor`);e(V,()=>{U.value={row:Math.min(U.value.row,Math.max(V.value.length-1,0)),col:U.value.col}});let J=b(()=>z.value.length?`minmax(16rem, 1.2fr) repeat(${z.value.length}, minmax(12rem, 1fr))`:`1fr`);function Y(e,t){let n={row:Math.max(0,Math.min(V.value.length-1,e)),col:Math.max(0,Math.min(z.value.length,t))};U.value=n;let r=H.ref.value;if(r){let e=n.row*M;(e<r.scrollTop||e+64>r.scrollTop+r.clientHeight)&&Ke(n.row)}}async function X(e,t){if(!O.value?.capabilities.write)return;let r=e.values[t];W.value={key:e.key,locale:t,draft:r==null?``:String(r)},await n(),q.value?.[0]?.focus()}async function Z(e=!1){let t=W.value;if(!t)return;W.value=void 0;let n=await de(t.key,t.locale,t.draft,e);G.value=n.applied?void 0:{key:t.key,locale:t.locale,value:t.draft,message:n.problems.map(ue).join(`; `)},H.ref.value?.focus()}function qe(){W.value=void 0,H.ref.value?.focus()}async function Je(){let e=G.value;e&&(W.value={key:e.key,locale:e.locale,draft:e.value},await Z(!0))}function Q(e){p.push(`/keys/${encodeURIComponent(e.key)}`)}function $(){let e=V.value[U.value.row];if(!e)return;let t=z.value[U.value.col-1];t?X(e,t):Q(e)}let Ye={ArrowDown:()=>Y(U.value.row+1,U.value.col),ArrowUp:()=>Y(U.value.row-1,U.value.col),ArrowRight:()=>Y(U.value.row,U.value.col+1),ArrowLeft:()=>Y(U.value.row,U.value.col-1),PageDown:()=>Y(U.value.row+20,U.value.col),PageUp:()=>Y(U.value.row-20,U.value.col),Home:()=>Y(0,U.value.col),End:()=>Y(V.value.length-1,U.value.col),Enter:$,F2:$,o:()=>V.value[U.value.row]&&Q(V.value[U.value.row]),j:()=>Y(U.value.row+1,U.value.col),k:()=>Y(U.value.row-1,U.value.col),"/":()=>K.value?.focus()};function Xe(e){if(W.value||e.metaKey||e.ctrlKey||e.altKey)return;let t=Ye[e.key];t&&(e.preventDefault(),t())}function Ze(e){e.stopPropagation(),e.key===`Escape`?(e.preventDefault(),qe()):(e.key===`Enter`||e.key===`Tab`)&&(e.preventDefault(),Z().then(()=>{e.key===`Tab`&&Y(U.value.row,U.value.col+1)}))}return(e,n)=>(o(),h(`div`,pe,[m(`div`,me,[m(`label`,he,[n[12]||=m(`span`,{class:`i-ph-magnifying-glass-duotone color-faint`},null,-1),f(m(`input`,{ref_key:`searchInput`,ref:K,"onUpdate:modelValue":n[0]||=e=>A.value=e,class:`flex-auto bg-transparent outline-none`,placeholder:_(D)(`keys.search`),"aria-label":_(D)(`keys.search`),onKeydown:[n[1]||=E(e=>_(H).ref.value?.focus(),[`escape`]),n[2]||=E(e=>_(H).ref.value?.focus(),[`enter`])]},null,40,ge),[[T,A.value]]),n[13]||=m(`kbd`,{class:`badge`},`/`,-1)]),B.value.length?f((o(),h(`select`,{key:0,"onUpdate:modelValue":n[3]||=e=>N.value=e,class:`input text-xs`,"aria-label":_(D)(`keys.namespace`)},[m(`option`,ve,r(_(D)(`keys.allNamespaces`)),1),(o(!0),h(y,null,s(B.value,e=>(o(),h(`option`,{key:e,value:e},r(e),9,ye))),128))],8,_e)),[[C,N.value]]):x(``,!0),f(m(`select`,{"onUpdate:modelValue":n[4]||=e=>P.value=e,class:`input text-xs`,"aria-label":_(D)(`keys.missingIn`)},[m(`option`,xe,r(_(D)(`keys.anyLocale`)),1),(o(!0),h(y,null,s(z.value,e=>(o(),h(`option`,{key:e,value:e},r(_(D)(`keys.missingInLocale`,{locale:e})),9,Se))),128))],8,be),[[C,P.value]]),g(j,{modelValue:F.value,"onUpdate:modelValue":n[5]||=e=>F.value=e},{default:a(()=>[v(r(_(D)(`keys.unused`)),1)]),_:1},8,[`modelValue`]),g(j,{modelValue:I.value,"onUpdate:modelValue":n[6]||=e=>I.value=e},{default:a(()=>[v(r(_(D)(`keys.withDiagnostics`)),1)]),_:1},8,[`modelValue`]),Ue.value?(o(),h(y,{key:1},[g(j,{modelValue:L.value,"onUpdate:modelValue":n[7]||=e=>L.value=e},{default:a(()=>[v(r(_(D)(`keys.outdated`)),1)]),_:1},8,[`modelValue`]),g(fe,{modelValue:R.value,"onUpdate:modelValue":n[8]||=e=>R.value=e,options:He.value,label:_(D)(`keys.sort`)},null,8,[`modelValue`,`options`,`label`])],64)):x(``,!0),n[14]||=m(`div`,{class:`flex-auto`},null,-1),m(`span`,Ce,r(_(D)(`keys.count`,{shown:V.value.length,total:_(w)?.rows.length??0})),1)]),G.value?(o(),h(`div`,we,[n[15]||=m(`span`,{class:`i-ph-warning-duotone`},null,-1),m(`span`,Te,r(_(D)(`edit.rejected`,{key:G.value.key,locale:G.value.locale,message:G.value.message})),1),m(`button`,{class:`btn-outline h-7`,onClick:Je},r(_(D)(`edit.saveAnyway`)),1),m(`button`,{class:`btn-ghost h-7`,onClick:n[9]||=e=>G.value=void 0},r(_(D)(`edit.dismiss`)),1)])):x(``,!0),m(`div`,u(_(H),{class:`flex-auto min-h-0 of-auto outline-none`,tabindex:`0`,role:`grid`,"aria-label":_(D)(`keys.grid`),"aria-rowcount":V.value.length,onKeydown:Xe}),[m(`div`,{class:`sticky top-0 z-20 grid border-b border-strong bg-base`,style:d({gridTemplateColumns:J.value,height:`${M}px`}),role:`row`},[m(`div`,De,r(_(D)(`keys.key`)),1),(o(!0),h(y,null,s(z.value,e=>(o(),h(`div`,{key:e,class:`flex items-center gap-2 border-l border-base px-3`,role:`columnheader`},[g(ce,{code:e},null,8,[`code`]),m(`span`,Oe,r(e),1),e===_(se)?.sourceLocale?(o(),h(`span`,ke,r(_(D)(`overview.source`)),1)):x(``,!0)]))),128))],4),m(`div`,ee(te(_(Ge))),[(o(!0),h(y,null,s(_(We),({data:e,index:i})=>(o(),h(`div`,{key:e.key,class:t([`grid border-b border-base`,i===U.value.row?`bg-hover`:``]),style:d({gridTemplateColumns:J.value,height:`${M}px`}),role:`row`,"aria-rowindex":i+1,"data-key":e.key},[m(`div`,{class:t([`flex min-w-0 cursor-pointer items-center gap-1.5 px-4 font-mono text-xs`,i===U.value.row&&U.value.col===0?`outline outline-1 outline-[var(--x-fg)] -outline-offset-1`:``]),role:`gridcell`,title:e.key,onClick:e=>Y(i,0),onDblclick:t=>Q(e)},[m(`span`,Me,r(e.key),1),e.unused?(o(),h(`span`,{key:0,class:`i-ph-ghost-duotone shrink-0 color-faint`,title:_(D)(`keys.unusedHint`)},null,8,Ne)):x(``,!0),e.diagnostics?(o(),h(`span`,{key:1,class:`badge shrink-0 border-current color-error`,title:_(D)(`keys.diagnosticsHint`)},r(e.diagnostics),9,Pe)):x(``,!0)],42,je),(o(!0),h(y,null,s(z.value,(r,a)=>(o(),h(`div`,{key:r,class:t([`flex min-w-0 items-center border-l border-base px-3`,i===U.value.row&&U.value.col===a+1?`outline outline-1 outline-[var(--x-fg)] -outline-offset-1`:``]),role:`gridcell`,"data-locale":r,onClick:e=>Y(i,a+1),onDblclick:t=>X(e,r)},[W.value&&W.value.key===e.key&&W.value.locale===r?f((o(),h(`input`,{key:0,ref_for:!0,ref_key:`editor`,ref:q,"onUpdate:modelValue":n[10]||=e=>W.value.draft=e,class:`w-full bg-transparent outline-none`,"aria-label":_(D)(`keys.editValue`,{key:e.key,locale:r}),onKeydown:Ze,onBlur:n[11]||=e=>Z()},null,40,Ie)),[[T,W.value.draft]]):(o(),h(y,{key:1},[m(`span`,{class:`truncate`,title:String(e.values[r]??``)},[g(le,{value:e.values[r],inline:``},null,8,[`value`])],8,Le),e.outdated.includes(r)?(o(),h(`span`,{key:0,class:`ml-auto shrink-0 pl-2 color-warn`,title:_(D)(`history.outdatedHint`)},[...n[16]||=[m(`span`,{class:`i-ph-clock-counter-clockwise-duotone block`},null,-1)]],8,Re)):x(``,!0)],64))],42,Fe))),128))],14,Ae))),128))],16),_(w)&&!V.value.length?(o(),h(`p`,ze,r(_(D)(`keys.empty`)),1)):x(``,!0)],16,Ee),m(`div`,Be,[m(`span`,null,r(_(D)(`keys.helpMove`)),1),_(O)?.capabilities.write?(o(),h(`span`,Ve,r(_(D)(`keys.helpEdit`)),1)):x(``,!0),m(`span`,null,r(_(D)(`keys.helpOpen`)),1),m(`span`,null,r(_(D)(`keys.helpSearch`)),1)])]))}});export{N as default};
@@ -1 +1 @@
1
- var e={app:{error:`Não foi possível conectar: {message}`,language:`Idioma`,loading:`Carregando o projeto…`,name:`x18n`,project:`Projeto`,static:`Relatório somente leitura`,staticHint:"Um snapshot gerado com `x18n build`. Execute `x18n ui` para editar."},auth:{code:`Código de autenticação`,hint:"Digite o código de 6 dígitos que o `x18n ui` exibiu no terminal.",label:`Autenticação`,rejected:`Esse código não funcionou. Confira o código atual no terminal.`,submit:`Conectar`,title:`Conectar ao x18n`},detail:{back:`Voltar às chaves`,diagnostics:`Problemas`,edit:`Editar`,label:`Chave`,noUsages:`Nenhum código usa esta chave.`,notFound:`Esta chave não está definida.`,openInEditor:`Abrir no editor`,possible:`possível`,usages:`Usos ({count})`,values:`Valores`,showAllLocales:`Mostrar todos os idiomas`,file:`Arquivo`},edit:{dismiss:`Dispensar`,placeholdersExtra:`placeholders inesperados {names}`,placeholdersMissing:`placeholders ausentes {names}`,rejected:`Não salvo: {key} em {locale}: {message}.`,saveAnyway:`Salvar mesmo assim`},extract:{apply:`Extrair ({count})`,done:`Chaves extraídas: {count}. Arquivos alterados: {files}.`,hint:`Strings fixas no código com uma chave sugerida. Edite as chaves, desmarque as strings a ignorar e aplique.`,key:`Chave`,none:`Nenhuma string fixa encontrada.`,strings:`Strings: {count}`},keys:{allNamespaces:`Todos os namespaces`,anyLocale:`Qualquer idioma`,count:`{shown} de {total} chaves`,diagnosticsHint:`Problemas nesta chave`,editValue:`Valor de {key} em {locale}`,empty:`Nenhuma chave corresponde.`,grid:`Chaves e valores por idioma`,helpEdit:`Enter para editar, Esc para cancelar`,helpMove:`Setas ou j/k para mover`,helpOpen:`o para abrir a chave`,helpSearch:`/ para buscar`,key:`Chave`,missingIn:`Ausente em`,missingInLocale:`Ausente em {locale}`,namespace:`Namespace`,search:`Buscar chaves e valores`,unused:`Não usadas`,unusedHint:`Nenhum código usa esta chave`,withDiagnostics:`Com problemas`,outdated:`Desatualizadas`,sort:`Ordem`,sortKey:`Chave`,sortRecent:`Alteradas recentemente`},locale:{complete:`Todas as chaves estão traduzidas.`,empty:`Vazias ({count})`,label:`Idioma`,missing:`Ausentes ({count})`,notFound:`Este projeto não tem esse idioma.`,openInGrid:`Mostrar na grade`,problems:`Problemas de placeholder e sintaxe ({count})`,progress:`{translated} de {total} traduzidas ({percent})`,outdated:`Desatualizadas ({count})`},localeBar:{bar:`Idiomas a exibir`,noneShown:`Todos os idiomas estão ocultos. Escolha um na barra acima.`,showAll:`Mostrar todos`,shown:`{shown} de {total} exibidos`,title:`Idiomas`,toggle:`Mostrar ou ocultar {locale}`,resetOrder:`Redefinir ordem`,flags:`Mostrar bandeiras`,reorder:`Arraste, ou pressione Alt e uma seta, para reordenar.`},nav:{extract:`Extrair`,keys:`Chaves`,overview:`Visão geral`,project:`Projeto`,usages:`Usos`},overview:{clean:`Nenhum problema encontrado.`,coverage:`Cobertura`,diagnostics:`Diagnósticos`,errors:`Erros: {count}`,keys:`Chaves`,locales:`Idiomas`,missing:`{missing} ausentes, {empty} vazias`,noPresets:`Nenhum preset detectado.`,noRecent:`Nada mudou desde que a página foi aberta.`,presets:`Presets`,recent:`Alterações recentes`,resources:`Recursos`,source:`origem`,usages:`Usos`,warnings:`Avisos: {count}`,outdated:`{count} desatualizadas`},project:{config:`Configuração e a origem de cada valor`,conflict:`.{extension}: {winner} prevalece sobre {loser}`,files:`Arquivos: {count}`,finders:`Localizadores de idiomas`,formats:`Formatos`,presets:`Presets`,problems:`Problemas`,resources:`Recursos: {count}`,scanners:`Scanners`,showAllPresets:`Mostrar todos os presets`},prompt:{copied:`Copiado`,copy:`Copiar prompt de tradução`,hint:`Copiar um prompt para um LLM ou agente traduzir as mensagens ausentes`,copyStale:`Copiar prompt com desatualizadas`,staleHint:`Copia um prompt para um LLM ou agente que traduz as mensagens ausentes e atualiza as desatualizadas`,copyAll:`Copiar o prompt de tradução de todos os idiomas`,allHint:`Copia um prompt para um LLM ou agente que traduza o que falta em cada idioma`},usages:{all:`Todos ({count})`,dynamic:`Dinâmicos ({count})`,dynamicHint:`Usos com chave calculada. Chaves sob o prefixo contam como usadas.`,filter:`Filtrar por arquivo ou chave`,missing:`Não definidas ({count})`,missingHint:`Chaves usadas no código, mas não definidas no idioma de origem.`,unused:`Não usadas ({count})`,unusedHint:`Chaves definidas no idioma de origem que nenhum código usa.`},value:{empty:`vazio`,missing:`ausente`},history:{title:`Histórico`,local:`alterado localmente`,outdated:`desatualizada`,outdatedHint:`A mensagem de origem mudou depois desta tradução`,sourceThen:`Origem na época`,sourceNow:`Origem agora`,more:`e mais {count}`,locales:`{count} idiomas`}};export{e as default};
1
+ var e={app:{error:`Não foi possível conectar: {message}`,language:`Idioma`,loading:`Carregando o projeto…`,name:`x18n`,project:`Projeto`,static:`Relatório somente leitura`,staticHint:"Um snapshot gerado com `x18n build`. Execute `x18n ui` para editar."},auth:{code:`Código de autenticação`,hint:"Digite o código de 6 dígitos que o `x18n ui` exibiu no terminal.",label:`Autenticação`,rejected:`Esse código não funcionou. Confira o código atual no terminal.`,submit:`Conectar`,title:`Conectar ao x18n`},detail:{back:`Voltar às chaves`,diagnostics:`Problemas`,edit:`Editar`,label:`Chave`,noUsages:`Nenhum código usa esta chave.`,notFound:`Esta chave não está definida.`,openInEditor:`Abrir no editor`,possible:`possível`,usages:`Usos ({count})`,values:`Valores`,showAllLocales:`Mostrar todos os idiomas`,file:`Arquivo`},edit:{dismiss:`Dispensar`,placeholdersExtra:`placeholders inesperados {names}`,placeholdersMissing:`placeholders ausentes {names}`,rejected:`Não salvo: {key} em {locale}: {message}.`,saveAnyway:`Salvar mesmo assim`},extract:{apply:`Extrair ({count})`,done:`Chaves extraídas: {count}. Arquivos alterados: {files}.`,hint:`Strings fixas no código com uma chave sugerida. Edite as chaves, desmarque as strings a ignorar e aplique.`,key:`Chave`,none:`Nenhuma string fixa encontrada.`,strings:`Strings: {count}`},keys:{allNamespaces:`Todos os namespaces`,anyLocale:`Qualquer idioma`,count:`{shown} de {total} chaves`,diagnosticsHint:`Problemas nesta chave`,editValue:`Valor de {key} em {locale}`,empty:`Nenhuma chave corresponde.`,grid:`Chaves e valores por idioma`,helpEdit:`Enter para editar, Esc para cancelar`,helpMove:`Setas ou j/k para mover`,helpOpen:`o para abrir a chave`,helpSearch:`/ para buscar`,key:`Chave`,missingIn:`Ausente em`,missingInLocale:`Ausente em {locale}`,namespace:`Namespace`,search:`Buscar chaves e valores`,unused:`Não usadas`,unusedHint:`Nenhum código usa esta chave`,withDiagnostics:`Com problemas`,outdated:`Desatualizadas`,sort:`Ordem`,sortKey:`Chave`,sortRecent:`Alteradas recentemente`},locale:{complete:`Todas as chaves estão traduzidas.`,empty:`Vazias ({count})`,label:`Idioma`,missing:`Ausentes ({count})`,notFound:`Este projeto não tem esse idioma.`,openInGrid:`Mostrar na grade`,problems:`Problemas de placeholder e sintaxe ({count})`,progress:`{translated} de {total} traduzidas ({percent})`,outdated:`Desatualizadas ({count})`},localeBar:{bar:`Idiomas a exibir`,noneShown:`Todos os idiomas estão ocultos. Escolha um na barra acima.`,showAll:`Mostrar todos`,shown:`{shown} de {total} exibidos`,title:`Idiomas`,toggle:`Mostrar ou ocultar {locale}`,resetOrder:`Redefinir ordem`,flags:`Mostrar bandeiras`,reorder:`Arraste, ou pressione Alt e uma seta, para reordenar.`},nav:{extract:`Extrair`,keys:`Chaves`,overview:`Visão geral`,project:`Projeto`,usages:`Usos`},overview:{clean:`Nenhum problema encontrado.`,coverage:`Cobertura`,diagnostics:`Diagnósticos`,errors:`Erros: {count}`,keys:`Chaves`,locales:`Idiomas`,missing:`{missing} ausentes, {empty} vazias`,noPresets:`Nenhum preset detectado.`,noRecent:`Nada mudou desde que a página foi aberta.`,presets:`Presets`,recent:`Alterações recentes`,resources:`Recursos`,source:`origem`,usages:`Usos`,warnings:`Avisos: {count}`,outdated:`{count} desatualizadas`},project:{config:`Configuração e a origem de cada valor`,conflict:`.{extension}: {winner} prevalece sobre {loser}`,files:`Arquivos: {count}`,finders:`Localizadores de idiomas`,formats:`Formatos`,presets:`Presets`,problems:`Problemas`,resources:`Recursos: {count}`,scanners:`Scanners`,showAllPresets:`Mostrar todos os presets`},prompt:{copied:`Copiado`,copy:`Copiar prompt de tradução`,hint:`Copiar um prompt para um LLM ou agente traduzir as mensagens ausentes`,copyStale:`Copiar prompt com desatualizadas`,staleHint:`Copia um prompt para um LLM ou agente que traduz as mensagens ausentes e atualiza as desatualizadas`,copyAll:`Copiar o prompt de tradução de todos os idiomas`,allHint:`Copia um prompt para um LLM ou agente que traduza o que falta em cada idioma`},usages:{all:`Todos ({count})`,dynamic:`Dinâmicos ({count})`,dynamicHint:`Usos com chave calculada. Chaves sob o prefixo contam como usadas.`,filter:`Filtrar por arquivo ou chave`,missing:`Não definidas ({count})`,missingHint:`Chaves usadas no código, mas não definidas no idioma de origem.`,unused:`Não usadas ({count})`,unusedHint:`Chaves definidas no idioma de origem que nenhum código usa.`},value:{empty:`vazio`,missing:`ausente`},history:{title:`Histórico`,local:`alterado localmente`,outdated:`desatualizada`,outdatedHint:`A mensagem de origem mudou depois desta tradução`,sourceThen:`Origem na época`,sourceNow:`Origem agora`,more:`e mais {count}`,locales:`{count} idiomas`},sidebar:{list:`Visualização em lista`,tree:`Visualização em árvore`,filter:`Filtrar chaves`,view:`Visualização da lista de chaves`}};export{e as default};
@@ -1 +1 @@
1
- var e={app:{error:`No se pudo conectar: {message}`,language:`Idioma de la interfaz`,loading:`Cargando el proyecto…`,name:`x18n`,project:`Proyecto`,static:`Informe de solo lectura`,staticHint:"Una instantánea generada con `x18n build`. Ejecuta `x18n ui` para editar."},auth:{code:`Código de acceso`,hint:"Introduce el código de 6 dígitos que `x18n ui` mostró en la terminal.",label:`Autenticación`,rejected:`Ese código no funcionó. Consulta el código actual en la terminal.`,submit:`Conectar`,title:`Conectar con x18n`},detail:{back:`Volver a las claves`,diagnostics:`Problemas`,edit:`Editar`,label:`Clave`,noUsages:`Ningún código usa esta clave.`,notFound:`Esta clave no está definida.`,openInEditor:`Abrir en el editor`,possible:`posible`,usages:`Usos ({count})`,values:`Valores`,showAllLocales:`Mostrar todos los idiomas`,file:`Archivo`},edit:{dismiss:`Descartar`,placeholdersExtra:`marcadores de posición inesperados {names}`,placeholdersMissing:`faltan marcadores de posición {names}`,rejected:`No guardado: {key} en {locale}: {message}.`,saveAnyway:`Guardar de todos modos`},extract:{apply:`Extraer ({count})`,done:`Claves extraídas: {count}. Archivos modificados: {files}.`,hint:`Cadenas fijas en el código con una clave propuesta. Edita las claves, desmarca las cadenas que quieras omitir y aplica.`,key:`Clave`,none:`No se encontraron cadenas fijas en el código.`,strings:`Cadenas: {count}`},keys:{allNamespaces:`Todos los espacios de nombres`,anyLocale:`Cualquier idioma`,count:`{shown} de {total} claves`,diagnosticsHint:`Problemas en esta clave`,editValue:`Valor de {key} en {locale}`,empty:`Ninguna clave coincide.`,grid:`Claves y valores por idioma`,helpEdit:`Intro para editar, Esc para cancelar`,helpMove:`Flechas o j/k para moverte`,helpOpen:`o para abrir la clave`,helpSearch:`/ para buscar`,key:`Clave`,missingIn:`Falta en`,missingInLocale:`Falta en {locale}`,namespace:`Espacio de nombres`,search:`Buscar claves y valores`,unused:`Sin usar`,unusedHint:`Ningún código usa esta clave`,withDiagnostics:`Con problemas`,outdated:`Desactualizadas`,sort:`Orden`,sortKey:`Clave`,sortRecent:`Cambiadas recientemente`},locale:{complete:`Todas las claves están traducidas.`,empty:`Vacías ({count})`,label:`Idioma`,missing:`Faltantes ({count})`,notFound:`Este proyecto no tiene ese idioma.`,openInGrid:`Mostrar en la tabla`,problems:`Problemas de marcadores y sintaxis ({count})`,progress:`{translated} de {total} traducidas ({percent})`,outdated:`Desactualizadas ({count})`},localeBar:{bar:`Idiomas visibles`,noneShown:`Todos los idiomas están ocultos. Elige uno en la barra superior.`,showAll:`Mostrar todos`,shown:`{shown} de {total} visibles`,title:`Idiomas`,toggle:`Mostrar u ocultar {locale}`,resetOrder:`Restablecer orden`,flags:`Mostrar banderas`,reorder:`Arrastra, o pulsa Alt y una flecha, para reordenar.`},nav:{extract:`Extraer`,keys:`Claves`,overview:`Resumen`,project:`Proyecto`,usages:`Usos`},overview:{clean:`No se encontraron problemas.`,coverage:`Cobertura`,diagnostics:`Diagnósticos`,errors:`Errores: {count}`,keys:`Claves`,locales:`Idiomas`,missing:`{missing} faltantes, {empty} vacías`,noPresets:`No se detectó ningún preset.`,noRecent:`Nada ha cambiado desde que se abrió la página.`,presets:`Presets`,recent:`Cambios recientes`,resources:`Recursos`,source:`origen`,usages:`Usos`,warnings:`Avisos: {count}`,outdated:`{count} desactualizadas`},project:{config:`Configuración y origen de cada valor`,conflict:`.{extension}: {winner} prevalece sobre {loser}`,files:`Archivos: {count}`,finders:`Buscadores de idiomas`,formats:`Formatos`,presets:`Presets`,problems:`Problemas`,resources:`Recursos: {count}`,scanners:`Escáneres`,showAllPresets:`Mostrar todos los presets`},prompt:{copied:`Copiado`,copy:`Copiar prompt de traducción`,hint:`Copia un prompt para que un LLM o agente traduzca los mensajes que faltan`,copyStale:`Copiar prompt con desactualizadas`,staleHint:`Copia un prompt para un LLM o agente que traduce los mensajes que faltan y actualiza los desactualizados`,copyAll:`Copiar el prompt de traducción de todos los idiomas`,allHint:`Copia un prompt para un LLM o agente que traduzca lo que falta en cada idioma`},usages:{all:`Todos ({count})`,dynamic:`Dinámicos ({count})`,dynamicHint:`Usos con una clave calculada. Las claves bajo su prefijo cuentan como usadas.`,filter:`Filtrar por archivo o clave`,missing:`No definidas ({count})`,missingHint:`Claves usadas en el código pero no definidas en el idioma de origen.`,unused:`Sin usar ({count})`,unusedHint:`Claves definidas en el idioma de origen que ningún código usa.`},value:{empty:`vacío`,missing:`falta`},history:{title:`Historial`,local:`cambiado localmente`,outdated:`desactualizada`,outdatedHint:`El mensaje de origen cambió después de esta traducción`,sourceThen:`Origen entonces`,sourceNow:`Origen ahora`,more:`y {count} más`,locales:`{count} idiomas`}};export{e as default};
1
+ var e={app:{error:`No se pudo conectar: {message}`,language:`Idioma de la interfaz`,loading:`Cargando el proyecto…`,name:`x18n`,project:`Proyecto`,static:`Informe de solo lectura`,staticHint:"Una instantánea generada con `x18n build`. Ejecuta `x18n ui` para editar."},auth:{code:`Código de acceso`,hint:"Introduce el código de 6 dígitos que `x18n ui` mostró en la terminal.",label:`Autenticación`,rejected:`Ese código no funcionó. Consulta el código actual en la terminal.`,submit:`Conectar`,title:`Conectar con x18n`},detail:{back:`Volver a las claves`,diagnostics:`Problemas`,edit:`Editar`,label:`Clave`,noUsages:`Ningún código usa esta clave.`,notFound:`Esta clave no está definida.`,openInEditor:`Abrir en el editor`,possible:`posible`,usages:`Usos ({count})`,values:`Valores`,showAllLocales:`Mostrar todos los idiomas`,file:`Archivo`},edit:{dismiss:`Descartar`,placeholdersExtra:`marcadores de posición inesperados {names}`,placeholdersMissing:`faltan marcadores de posición {names}`,rejected:`No guardado: {key} en {locale}: {message}.`,saveAnyway:`Guardar de todos modos`},extract:{apply:`Extraer ({count})`,done:`Claves extraídas: {count}. Archivos modificados: {files}.`,hint:`Cadenas fijas en el código con una clave propuesta. Edita las claves, desmarca las cadenas que quieras omitir y aplica.`,key:`Clave`,none:`No se encontraron cadenas fijas en el código.`,strings:`Cadenas: {count}`},keys:{allNamespaces:`Todos los espacios de nombres`,anyLocale:`Cualquier idioma`,count:`{shown} de {total} claves`,diagnosticsHint:`Problemas en esta clave`,editValue:`Valor de {key} en {locale}`,empty:`Ninguna clave coincide.`,grid:`Claves y valores por idioma`,helpEdit:`Intro para editar, Esc para cancelar`,helpMove:`Flechas o j/k para moverte`,helpOpen:`o para abrir la clave`,helpSearch:`/ para buscar`,key:`Clave`,missingIn:`Falta en`,missingInLocale:`Falta en {locale}`,namespace:`Espacio de nombres`,search:`Buscar claves y valores`,unused:`Sin usar`,unusedHint:`Ningún código usa esta clave`,withDiagnostics:`Con problemas`,outdated:`Desactualizadas`,sort:`Orden`,sortKey:`Clave`,sortRecent:`Cambiadas recientemente`},locale:{complete:`Todas las claves están traducidas.`,empty:`Vacías ({count})`,label:`Idioma`,missing:`Faltantes ({count})`,notFound:`Este proyecto no tiene ese idioma.`,openInGrid:`Mostrar en la tabla`,problems:`Problemas de marcadores y sintaxis ({count})`,progress:`{translated} de {total} traducidas ({percent})`,outdated:`Desactualizadas ({count})`},localeBar:{bar:`Idiomas visibles`,noneShown:`Todos los idiomas están ocultos. Elige uno en la barra superior.`,showAll:`Mostrar todos`,shown:`{shown} de {total} visibles`,title:`Idiomas`,toggle:`Mostrar u ocultar {locale}`,resetOrder:`Restablecer orden`,flags:`Mostrar banderas`,reorder:`Arrastra, o pulsa Alt y una flecha, para reordenar.`},nav:{extract:`Extraer`,keys:`Claves`,overview:`Resumen`,project:`Proyecto`,usages:`Usos`},overview:{clean:`No se encontraron problemas.`,coverage:`Cobertura`,diagnostics:`Diagnósticos`,errors:`Errores: {count}`,keys:`Claves`,locales:`Idiomas`,missing:`{missing} faltantes, {empty} vacías`,noPresets:`No se detectó ningún preset.`,noRecent:`Nada ha cambiado desde que se abrió la página.`,presets:`Presets`,recent:`Cambios recientes`,resources:`Recursos`,source:`origen`,usages:`Usos`,warnings:`Avisos: {count}`,outdated:`{count} desactualizadas`},project:{config:`Configuración y origen de cada valor`,conflict:`.{extension}: {winner} prevalece sobre {loser}`,files:`Archivos: {count}`,finders:`Buscadores de idiomas`,formats:`Formatos`,presets:`Presets`,problems:`Problemas`,resources:`Recursos: {count}`,scanners:`Escáneres`,showAllPresets:`Mostrar todos los presets`},prompt:{copied:`Copiado`,copy:`Copiar prompt de traducción`,hint:`Copia un prompt para que un LLM o agente traduzca los mensajes que faltan`,copyStale:`Copiar prompt con desactualizadas`,staleHint:`Copia un prompt para un LLM o agente que traduce los mensajes que faltan y actualiza los desactualizados`,copyAll:`Copiar el prompt de traducción de todos los idiomas`,allHint:`Copia un prompt para un LLM o agente que traduzca lo que falta en cada idioma`},usages:{all:`Todos ({count})`,dynamic:`Dinámicos ({count})`,dynamicHint:`Usos con una clave calculada. Las claves bajo su prefijo cuentan como usadas.`,filter:`Filtrar por archivo o clave`,missing:`No definidas ({count})`,missingHint:`Claves usadas en el código pero no definidas en el idioma de origen.`,unused:`Sin usar ({count})`,unusedHint:`Claves definidas en el idioma de origen que ningún código usa.`},value:{empty:`vacío`,missing:`falta`},history:{title:`Historial`,local:`cambiado localmente`,outdated:`desactualizada`,outdatedHint:`El mensaje de origen cambió después de esta traducción`,sourceThen:`Origen entonces`,sourceNow:`Origen ahora`,more:`y {count} más`,locales:`{count} idiomas`},sidebar:{list:`Vista de lista`,tree:`Vista de árbol`,filter:`Filtrar claves`,view:`Vista de la lista de claves`}};export{e as default};
@@ -1 +1 @@
1
- var e={app:{error:`Не удалось подключиться: {message}`,language:`Язык`,loading:`Загрузка проекта…`,name:`x18n`,project:`Проект`,static:`Отчёт только для чтения`,staticHint:"Снимок, собранный через `x18n build`. Для редактирования запустите `x18n ui`."},auth:{code:`Код доступа`,hint:"Введите 6-значный код, который `x18n ui` вывел в терминал.",label:`Аутентификация`,rejected:`Код не подошёл. Проверьте текущий код в терминале.`,submit:`Подключиться`,title:`Подключение к x18n`},detail:{back:`Назад к ключам`,diagnostics:`Проблемы`,edit:`Изменить`,label:`Ключ`,noUsages:`Этот ключ не используется в коде.`,notFound:`Этот ключ не определён.`,openInEditor:`Открыть в редакторе`,possible:`возможно`,usages:`Использования ({count})`,values:`Значения`,showAllLocales:`Показать все локали`,file:`Файл`},edit:{dismiss:`Закрыть`,placeholdersExtra:`лишние плейсхолдеры {names}`,placeholdersMissing:`нет плейсхолдеров {names}`,rejected:`Не сохранено: {key} в {locale}: {message}.`,saveAnyway:`Всё равно сохранить`},extract:{apply:`Извлечь ({count})`,done:`Извлечено ключей: {count}. Изменено файлов: {files}.`,hint:`Строки в коде с предложенным ключом. Измените ключи, снимите отметку со строк, которые нужно пропустить, и примените.`,key:`Ключ`,none:`Строк в коде не найдено.`,strings:`Строки: {count}`},keys:{allNamespaces:`Все пространства имён`,anyLocale:`Любая локаль`,count:`Ключи: {shown} из {total}`,diagnosticsHint:`Проблемы в этом ключе`,editValue:`Значение {key} в {locale}`,empty:`Нет подходящих ключей.`,grid:`Ключи и значения по локалям`,helpEdit:`Enter: изменить, Esc: отмена`,helpMove:`Стрелки или j/k: перемещение`,helpOpen:`o: открыть ключ`,helpSearch:`/: поиск`,key:`Ключ`,missingIn:`Нет в локали`,missingInLocale:`Нет в {locale}`,namespace:`Пространство имён`,search:`Поиск по ключам и значениям`,unused:`Неиспользуемые`,unusedHint:`Этот ключ не используется в коде`,withDiagnostics:`С проблемами`,outdated:`Устаревшие`,sort:`Сортировка`,sortKey:`Ключ`,sortRecent:`Недавно изменённые`},locale:{complete:`Все ключи переведены.`,empty:`Пустые ({count})`,label:`Локаль`,missing:`Отсутствуют ({count})`,notFound:`В проекте нет такой локали.`,openInGrid:`Показать в таблице`,problems:`Проблемы с плейсхолдерами и синтаксисом ({count})`,progress:`Переведено: {translated} из {total} ({percent})`,outdated:`Устаревшие ({count})`},localeBar:{bar:`Отображаемые локали`,noneShown:`Все локали скрыты. Выберите локаль на панели выше.`,showAll:`Показать все`,shown:`Показано: {shown} из {total}`,title:`Локали`,toggle:`Показать или скрыть {locale}`,resetOrder:`Сбросить порядок`,flags:`Показывать флаги`,reorder:`Перетащите или нажмите Alt и стрелку, чтобы изменить порядок.`},nav:{extract:`Извлечение`,keys:`Ключи`,overview:`Обзор`,project:`Проект`,usages:`Использования`},overview:{clean:`Проблем не найдено.`,coverage:`Покрытие`,diagnostics:`Диагностика`,errors:`Ошибки: {count}`,keys:`Ключи`,locales:`Локали`,missing:`Отсутствуют: {missing}, пустые: {empty}`,noPresets:`Пресет не обнаружен.`,noRecent:`С открытия страницы ничего не изменилось.`,presets:`Пресеты`,recent:`Последние изменения`,resources:`Ресурсы`,source:`исходная`,usages:`Использования`,warnings:`Предупреждения: {count}`,outdated:`устарело: {count}`},project:{config:`Конфигурация и источник каждого значения`,conflict:`.{extension}: {winner} перекрывает {loser}`,files:`Файлы: {count}`,finders:`Поиск локалей`,formats:`Форматы`,presets:`Пресеты`,problems:`Проблемы`,resources:`Ресурсы: {count}`,scanners:`Сканеры`,showAllPresets:`Показать все пресеты`},prompt:{copied:`Скопировано`,copy:`Копировать промпт для перевода`,hint:`Скопировать промпт для LLM или агента, который переведёт недостающие сообщения`,copyStale:`Копировать промпт с устаревшими`,staleHint:`Скопировать промпт для LLM или агента, который переведёт недостающие сообщения и обновит устаревшие`,copyAll:`Скопировать промпт перевода для всех локалей`,allHint:`Копирует промпт для LLM или агента, который переведёт недостающие сообщения во всех локалях`},usages:{all:`Все ({count})`,dynamic:`Динамические ({count})`,dynamicHint:`Использования с вычисляемым ключом. Ключи с их префиксом считаются используемыми.`,filter:`Фильтр по файлу или ключу`,missing:`Не определены ({count})`,missingHint:`Ключи, которые используются в коде, но не определены в исходной локали.`,unused:`Неиспользуемые ({count})`,unusedHint:`Ключи из исходной локали, которые не используются в коде.`},value:{empty:`пусто`,missing:`нет`},history:{title:`История`,local:`изменено локально`,outdated:`устарело`,outdatedHint:`Исходное сообщение изменилось после этого перевода`,sourceThen:`Исходник тогда`,sourceNow:`Исходник сейчас`,more:`и ещё {count}`,locales:`локалей: {count}`}};export{e as default};
1
+ var e={app:{error:`Не удалось подключиться: {message}`,language:`Язык`,loading:`Загрузка проекта…`,name:`x18n`,project:`Проект`,static:`Отчёт только для чтения`,staticHint:"Снимок, собранный через `x18n build`. Для редактирования запустите `x18n ui`."},auth:{code:`Код доступа`,hint:"Введите 6-значный код, который `x18n ui` вывел в терминал.",label:`Аутентификация`,rejected:`Код не подошёл. Проверьте текущий код в терминале.`,submit:`Подключиться`,title:`Подключение к x18n`},detail:{back:`Назад к ключам`,diagnostics:`Проблемы`,edit:`Изменить`,label:`Ключ`,noUsages:`Этот ключ не используется в коде.`,notFound:`Этот ключ не определён.`,openInEditor:`Открыть в редакторе`,possible:`возможно`,usages:`Использования ({count})`,values:`Значения`,showAllLocales:`Показать все локали`,file:`Файл`},edit:{dismiss:`Закрыть`,placeholdersExtra:`лишние плейсхолдеры {names}`,placeholdersMissing:`нет плейсхолдеров {names}`,rejected:`Не сохранено: {key} в {locale}: {message}.`,saveAnyway:`Всё равно сохранить`},extract:{apply:`Извлечь ({count})`,done:`Извлечено ключей: {count}. Изменено файлов: {files}.`,hint:`Строки в коде с предложенным ключом. Измените ключи, снимите отметку со строк, которые нужно пропустить, и примените.`,key:`Ключ`,none:`Строк в коде не найдено.`,strings:`Строки: {count}`},keys:{allNamespaces:`Все пространства имён`,anyLocale:`Любая локаль`,count:`Ключи: {shown} из {total}`,diagnosticsHint:`Проблемы в этом ключе`,editValue:`Значение {key} в {locale}`,empty:`Нет подходящих ключей.`,grid:`Ключи и значения по локалям`,helpEdit:`Enter: изменить, Esc: отмена`,helpMove:`Стрелки или j/k: перемещение`,helpOpen:`o: открыть ключ`,helpSearch:`/: поиск`,key:`Ключ`,missingIn:`Нет в локали`,missingInLocale:`Нет в {locale}`,namespace:`Пространство имён`,search:`Поиск по ключам и значениям`,unused:`Неиспользуемые`,unusedHint:`Этот ключ не используется в коде`,withDiagnostics:`С проблемами`,outdated:`Устаревшие`,sort:`Сортировка`,sortKey:`Ключ`,sortRecent:`Недавно изменённые`},locale:{complete:`Все ключи переведены.`,empty:`Пустые ({count})`,label:`Локаль`,missing:`Отсутствуют ({count})`,notFound:`В проекте нет такой локали.`,openInGrid:`Показать в таблице`,problems:`Проблемы с плейсхолдерами и синтаксисом ({count})`,progress:`Переведено: {translated} из {total} ({percent})`,outdated:`Устаревшие ({count})`},localeBar:{bar:`Отображаемые локали`,noneShown:`Все локали скрыты. Выберите локаль на панели выше.`,showAll:`Показать все`,shown:`Показано: {shown} из {total}`,title:`Локали`,toggle:`Показать или скрыть {locale}`,resetOrder:`Сбросить порядок`,flags:`Показывать флаги`,reorder:`Перетащите или нажмите Alt и стрелку, чтобы изменить порядок.`},nav:{extract:`Извлечение`,keys:`Ключи`,overview:`Обзор`,project:`Проект`,usages:`Использования`},overview:{clean:`Проблем не найдено.`,coverage:`Покрытие`,diagnostics:`Диагностика`,errors:`Ошибки: {count}`,keys:`Ключи`,locales:`Локали`,missing:`Отсутствуют: {missing}, пустые: {empty}`,noPresets:`Пресет не обнаружен.`,noRecent:`С открытия страницы ничего не изменилось.`,presets:`Пресеты`,recent:`Последние изменения`,resources:`Ресурсы`,source:`исходная`,usages:`Использования`,warnings:`Предупреждения: {count}`,outdated:`устарело: {count}`},project:{config:`Конфигурация и источник каждого значения`,conflict:`.{extension}: {winner} перекрывает {loser}`,files:`Файлы: {count}`,finders:`Поиск локалей`,formats:`Форматы`,presets:`Пресеты`,problems:`Проблемы`,resources:`Ресурсы: {count}`,scanners:`Сканеры`,showAllPresets:`Показать все пресеты`},prompt:{copied:`Скопировано`,copy:`Копировать промпт для перевода`,hint:`Скопировать промпт для LLM или агента, который переведёт недостающие сообщения`,copyStale:`Копировать промпт с устаревшими`,staleHint:`Скопировать промпт для LLM или агента, который переведёт недостающие сообщения и обновит устаревшие`,copyAll:`Скопировать промпт перевода для всех локалей`,allHint:`Копирует промпт для LLM или агента, который переведёт недостающие сообщения во всех локалях`},usages:{all:`Все ({count})`,dynamic:`Динамические ({count})`,dynamicHint:`Использования с вычисляемым ключом. Ключи с их префиксом считаются используемыми.`,filter:`Фильтр по файлу или ключу`,missing:`Не определены ({count})`,missingHint:`Ключи, которые используются в коде, но не определены в исходной локали.`,unused:`Неиспользуемые ({count})`,unusedHint:`Ключи из исходной локали, которые не используются в коде.`},value:{empty:`пусто`,missing:`нет`},history:{title:`История`,local:`изменено локально`,outdated:`устарело`,outdatedHint:`Исходное сообщение изменилось после этого перевода`,sourceThen:`Исходник тогда`,sourceNow:`Исходник сейчас`,more:`и ещё {count}`,locales:`локалей: {count}`},sidebar:{list:`Список`,tree:`Дерево`,filter:`Фильтр ключей`,view:`Вид списка ключей`}};export{e as default};
@@ -0,0 +1 @@
1
+ import{B as e,Ct as t,E as n,Et as r,H as i,M as a,P as o,Q as s,T as c,Tt as l,U as u,_ as d,c as f,d as p,h as m,it as h,l as g,m as _,r as v,s as y,u as b,wt as x,y as S}from"./B4prFwj0.js";import{c as C,o as w,s as T}from"./DoHg1T7s.js";import{u as E}from"./D4dwYDex.js";import{D,E as O,S as k,a as A,c as j,f as M,h as N,m as P,n as F,t as I}from"./DsqCc3fC.js";import{i as L,n as R}from"#entry";import{t as z}from"./0cXQUs3T.js";import{t as B}from"./DQNu8teu.js";import{n as V,r as H,t as U}from"./JMXpOiMg.js";import{t as W}from"./CcXhso-T.js";import{t as G}from"./BtGb9LkL.js";import{t as K}from"./BqPdh3b3.js";import{i as q,n as ee,r as te,t as ne}from"./Bkjpr8TV.js";function J(e){return[...e.matchAll(/[^.:]+/g)].map(t=>({id:e.slice(0,t.index+t[0].length),label:t[0]}))}function Y(e,t,n=!1){let r=new Map;for(let t of e){let e=r,n;for(let{id:r,label:i}of J(t))n=e.get(i)??{id:r,label:i,key:void 0,children:new Map},e.set(i,n),e=n.children;n&&(n.key=t)}let i=[],a=(e,r)=>{for(let o of[...e.values()].sort((e,t)=>e.label.localeCompare(t.label))){let e=o.children.size>0,s=n||t.has(o.id);i.push({id:o.id,label:o.label,depth:r,key:o.key,branch:e,open:e&&s}),e&&s&&a(o.children,r+1)}};return a(r,0),i}function X(e){return J(e).slice(0,-1).map(e=>e.id)}var Z={class:`min-h-0 flex flex-auto flex-col`},re={class:`flex items-center gap-2 border-b border-base px-3 py-2`},ie={class:`label`},ae={class:`font-mono text-xs color-faint tabular-nums`},oe=[`aria-label`],se=[`aria-pressed`,`title`,`aria-label`],ce=[`aria-pressed`,`title`,`aria-label`],le={class:`border-b border-base px-3 py-2`},ue=[`placeholder`,`aria-label`],de=[`aria-expanded`,`aria-label`,`onClick`],fe={key:1,class:`size-4 shrink-0`},pe=[`onClick`],Q=28,me=d({__name:`KeySidebar`,setup(d){let m=E(),C=y(()=>String(m.params.key)),T=P((e,t)=>e.keys(t)),A=O(`x18n:key-view`,`tree`),j=s(``),M=s(new Set);e(C,e=>{M.value=new Set([...M.value,...X(e)])},{immediate:!0});let N=y(()=>T.value?.rows.map(e=>e.key)??[]),F=y(()=>{let e=j.value.trim();return e?N.value.map(t=>({key:t,score:q(e,t)})).filter(e=>e.score>=0).sort((e,t)=>t.score-e.score).map(e=>e.key):N.value}),I=y(()=>A.value===`tree`?Y(F.value,M.value,j.value.trim()!==``):F.value.map(e=>({id:e,label:e,depth:0,key:e,branch:!1,open:!1}))),{list:R,containerProps:z,wrapperProps:B}=D(I,{itemHeight:Q,overscan:10});function V(e){let t=new Set(M.value);t.delete(e.id)||t.add(e.id),M.value=t}async function H(){await n();let e=z.ref.value,t=I.value.findIndex(e=>e.key===C.value);if(!e||t<0)return;let r=t*Q;(r<e.scrollTop||r+Q>e.scrollTop+e.clientHeight)&&(e.scrollTop=Math.max(0,r-e.clientHeight/2))}return e([C,A,()=>T.value?.rows.length],H,{flush:`post`}),(e,n)=>(a(),p(`div`,Z,[f(`div`,re,[f(`span`,ie,r(h(k)(`nav.keys`)),1),f(`span`,ae,r(N.value.length),1),n[5]||=f(`span`,{class:`flex-auto`},null,-1),f(`div`,{class:`flex`,role:`group`,"aria-label":h(k)(`sidebar.view`)},[f(`button`,{type:`button`,class:t([`btn-icon h-6 w-6 text-sm`,h(A)===`list`&&`bg-hover color-base`]),"aria-pressed":h(A)===`list`,title:h(k)(`sidebar.list`),"aria-label":h(k)(`sidebar.list`),onClick:n[0]||=e=>A.value=`list`},[...n[3]||=[f(`span`,{class:`i-ph-list-bullets-duotone`},null,-1)]],10,se),f(`button`,{type:`button`,class:t([`btn-icon h-6 w-6 text-sm`,h(A)===`tree`&&`bg-hover color-base`]),"aria-pressed":h(A)===`tree`,title:h(k)(`sidebar.tree`),"aria-label":h(k)(`sidebar.tree`),onClick:n[1]||=e=>A.value=`tree`},[...n[4]||=[f(`span`,{class:`i-ph-tree-structure-duotone`},null,-1)]],10,ce)],8,oe)]),f(`div`,le,[u(f(`input`,{"onUpdate:modelValue":n[2]||=e=>j.value=e,class:`input h-7 w-full font-mono text-xs`,type:`search`,placeholder:h(k)(`sidebar.filter`),"aria-label":h(k)(`sidebar.filter`)},null,8,ue),[[w,j.value]])]),f(`div`,c(h(z),{class:`min-h-0 flex-auto`}),[f(`div`,x(S(h(B))),[(a(!0),p(v,null,o(h(R),({data:e})=>(a(),p(`div`,{key:e.id,class:t([`h-7 flex items-center pr-2 font-mono text-xs transition-colors hover:bg-hover`,e.key===C.value?`bg-hover color-base shadow-[inset_2px_0_var(--x-fg)]`:`color-muted`]),style:l({paddingLeft:`${8+e.depth*12}px`})},[h(A)===`tree`?(a(),p(v,{key:0},[e.branch?(a(),p(`button`,{key:0,type:`button`,class:`focus-ring size-4 flex shrink-0 items-center justify-center`,"aria-expanded":e.open,"aria-label":e.label,onClick:t=>V(e)},[f(`span`,{class:t([`i-ph-caret-right-duotone transition-transform`,e.open&&`rotate-90`])},null,2)],8,de)):(a(),p(`span`,fe))],64)):b(``,!0),e.key?(a(),g(h(L),{key:1,to:`/keys/${encodeURIComponent(e.key)}`,class:`focus-ring ml-1 min-w-0 flex-auto truncate`,"aria-current":e.key===C.value?`page`:void 0,title:e.key},{default:i(()=>[_(r(e.label),1)]),_:2},1032,[`to`,`aria-current`,`title`])):(a(),p(`button`,{key:2,type:`button`,class:`focus-ring ml-1 min-w-0 flex-auto truncate text-left`,onClick:t=>V(e)},r(e.label),9,pe))],6))),128))],16)],16)]))}}),he={class:`mx-auto h-full w-full flex max-w-6xl border-x border-base xl:max-w-[90rem]`},ge={class:`hidden w-72 shrink-0 flex-col border-r border-base xl:flex`},_e={class:`min-w-0 flex-auto of-y-auto`},ve={class:`flex items-center gap-3 border-b border-base px-4 py-4`},ye={class:`grid gap-1`},be={class:`label`},xe={class:`break-all font-mono text-xl font-medium`},Se={key:0,class:`badge self-end`},Ce={key:0,class:`px-4 py-3 color-muted`},we={key:0,class:`px-4 py-3 color-muted`},Te=[`data-locale`],Ee={class:`flex items-center gap-2 pt-0.5 font-mono`},De={key:0,class:`badge`},Oe=[`title`],ke={key:0,class:`grid gap-2`},Ae=[`aria-label`],je={key:0,class:`flex items-center gap-2 color-warn`},Me=[`title`,`onDblclick`],Ne={key:0,class:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 border-l-2 border-[var(--x-warn)] py-0.5 pl-3 text-xs`},Pe={class:`label`},$={class:`color-muted line-through decoration-[var(--x-faint)]`},Fe={class:`label`},Ie={class:`flex gap-1`},Le={class:`font-mono text-xs color-muted`},Re={class:`flex-auto`},ze=[`onClick`],Be={key:0,class:`px-4 py-3 color-muted`},Ve={class:`flex items-center gap-2`},He={key:0,class:`badge`},Ue=[`onClick`],We=d({__name:`[key]`,setup(e){let n=E(),c=y(()=>String(n.params.key)),l=P((e,t)=>e.key(t,c.value)),d=y(()=>N.value.map(e=>({locale:e.code,message:l.value?.messages.find(t=>t.locale===e.code)}))),x=y(()=>A.value.length-N.value.length),S=y(()=>l.value?.messages.find(e=>e.locale===F.value?.sourceLocale)?.value),D=s(),O=s();async function q(e=!1){let t=D.value;if(!t)return;let n=await te(c.value,t.locale,t.draft,e);n.applied?(D.value=void 0,O.value=void 0):O.value=n.problems.map(ee).join(`; `)}function J(e,t){D.value={locale:e,draft:t==null?``:String(t)},O.value=void 0}function Y(e){return e.type!==`extract`&&e.type!==`format`}function X(e){I.value?.openInEditor({project:j.value,path:e.path,line:e.line,column:e.column})}return(e,n)=>(a(),p(`div`,he,[f(`aside`,ge,[m(me)]),f(`div`,_e,[f(`header`,ve,[m(h(L),{to:`/keys`,class:`btn-icon`,"aria-label":h(k)(`detail.back`)},{default:i(()=>[...n[5]||=[f(`span`,{class:`i-ph-arrow-left-duotone`},null,-1)]]),_:1},8,[`aria-label`]),f(`div`,ye,[f(`span`,be,r(h(k)(`detail.label`)),1),f(`h1`,xe,r(c.value),1)]),h(l)?.namespace?(a(),p(`span`,Se,r(h(l).namespace),1)):b(``,!0)]),h(l)===null?(a(),p(`p`,Ce,r(h(k)(`detail.notFound`)),1)):h(l)?(a(),p(v,{key:1},[m(B,{index:`01`,title:h(k)(`detail.values`)},{default:i(()=>[d.value.length?b(``,!0):(a(),p(`p`,we,r(h(k)(`localeBar.noneShown`)),1)),(a(!0),p(v,null,o(d.value,e=>(a(),p(`div`,{key:e.locale,class:`grid grid-cols-[7rem_1fr_auto] items-start gap-4 border-b border-base px-4 py-3 last:border-b-0`,"data-locale":e.locale},[f(`span`,Ee,[m(R,{code:e.locale},null,8,[`code`]),_(` `+r(e.locale)+` `,1),e.locale===h(F)?.sourceLocale?(a(),p(`span`,De,r(h(k)(`overview.source`)),1)):b(``,!0),e.message?.outdated?(a(),p(`span`,{key:1,class:`badge border-current color-warn`,title:h(k)(`history.outdatedHint`)},r(h(k)(`history.outdated`)),9,Oe)):b(``,!0)]),D.value?.locale===e.locale?(a(),p(`div`,ke,[u(f(`textarea`,{"onUpdate:modelValue":n[0]||=e=>D.value.draft=e,class:`input h-auto py-1.5 font-mono`,rows:`2`,"aria-label":h(k)(`keys.editValue`,{key:c.value,locale:e.locale}),onKeydown:[n[1]||=T(C(e=>q(),[`exact`,`prevent`]),[`enter`]),n[2]||=T(e=>D.value=void 0,[`escape`])]},null,40,Ae),[[w,D.value.draft]]),O.value?(a(),p(`p`,je,[n[6]||=f(`span`,{class:`i-ph-warning-duotone`},null,-1),_(` `+r(O.value)+` `,1),f(`button`,{class:`btn-outline h-7`,onClick:n[3]||=e=>q(!0)},r(h(k)(`edit.saveAnyway`)),1)])):b(``,!0)])):(a(),p(`div`,{key:1,class:`grid min-w-0 gap-1`,title:h(I)?.capabilities.write?h(k)(`detail.edit`):void 0,onDblclick:t=>h(I)?.capabilities.write&&J(e.locale,e.message?.value)},[m(W,{value:e.message?.value,placeholders:e.message?.placeholders??[]},null,8,[`value`,`placeholders`]),e.message?.sourceThen===void 0?b(``,!0):(a(),p(`dl`,Ne,[f(`dt`,Pe,r(h(k)(`history.sourceThen`)),1),f(`dd`,$,[m(W,{value:e.message.sourceThen},null,8,[`value`])]),f(`dt`,Fe,r(h(k)(`history.sourceNow`)),1),f(`dd`,null,[m(W,{value:S.value},null,8,[`value`])])]))],40,Me)),f(`div`,Ie,[e.locale===h(F)?.sourceLocale?b(``,!0):(a(),g(V,{key:0,text:h(U)([{locale:e.locale,key:c.value}]),label:h(k)(`prompt.copy`),hint:h(k)(`prompt.hint`)},null,8,[`text`,`label`,`hint`])),e.message?(a(),g(H,{key:1,icon:`i-ph-file-text-duotone`,label:h(k)(`detail.file`)},{default:i(()=>[m(z,{path:e.message.path,line:e.message.line},null,8,[`path`,`line`])]),_:2},1032,[`label`])):b(``,!0),e.message?.changed?(a(),g(H,{key:2,icon:`i-ph-clock-counter-clockwise-duotone`,label:h(k)(`history.title`)},{default:i(()=>[m(G,{change:e.message.changed},null,8,[`change`])]),_:2},1032,[`label`])):b(``,!0)])],8,Te))),128)),x.value?(a(),p(`button`,{key:1,class:`btn-ghost h-9 w-full justify-start px-4`,onClick:n[4]||=(...e)=>h(M)&&h(M)(...e)},[n[7]||=f(`span`,{class:`i-ph-dots-three-duotone`},null,-1),_(` `+r(h(k)(`detail.showAllLocales`))+` (`+r(x.value)+`) `,1)])):b(``,!0)]),_:1},8,[`title`]),h(l).diagnostics.length?(a(),g(B,{key:0,index:`02`,title:h(k)(`detail.diagnostics`)},{default:i(()=>[(a(!0),p(v,null,o(h(l).diagnostics,(e,n)=>(a(),p(`div`,{key:n,class:`flex items-center gap-2 border-b border-base px-4 py-2 last:border-b-0`},[f(`span`,{class:t(e.severity===`error`?`i-ph-x-circle-duotone color-error`:`i-ph-warning-duotone color-warn`)},null,2),f(`span`,Le,r(e.code),1),f(`span`,Re,r(e.message),1),h(I)?.capabilities.write?(a(!0),p(v,{key:0},o(e.fixes.filter(e=>e.ops.every(Y)),e=>(a(),p(`button`,{key:e.title,class:`btn-outline h-7`,onClick:t=>h(ne)(e.ops.filter(Y))},r(e.title),9,ze))),128)):b(``,!0)]))),128))]),_:1},8,[`title`])):b(``,!0),m(B,{index:`03`,title:h(k)(`detail.usages`,{count:h(l).usages.length})},{default:i(()=>[h(l).usages.length?b(``,!0):(a(),p(`p`,Be,r(h(k)(`detail.noUsages`)),1)),(a(!0),p(v,null,o(h(l).usages,(e,t)=>(a(),p(`div`,{key:t,class:`grid gap-2 border-b border-base px-4 py-3 last:border-b-0`},[f(`div`,Ve,[m(z,{path:e.path,line:e.line,column:e.column},null,8,[`path`,`line`,`column`]),e.possible?(a(),p(`span`,He,r(h(k)(`detail.possible`)),1)):b(``,!0),n[9]||=f(`span`,{class:`flex-auto`},null,-1),h(I)?.capabilities.openInEditor?(a(),p(`button`,{key:1,class:`btn-ghost h-7`,onClick:t=>X(e)},[n[8]||=f(`span`,{class:`i-ph-arrow-square-out-duotone`},null,-1),_(` `+r(h(k)(`detail.openInEditor`)),1)],8,Ue)):b(``,!0)]),m(K,{usage:e},null,8,[`usage`])]))),128))]),_:1},8,[`title`])],64)):b(``,!0)])]))}});export{We as default};