@objectstack/console 7.3.0 → 7.4.1
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.
- package/dist/assets/{AiPendingActionsPage-BbZbWYZF.js → AiPendingActionsPage-KMQsypXx.js} +1 -1
- package/dist/assets/{ApiConsolePage-CxtzVvxL.js → ApiConsolePage-Bt2GOTU0.js} +1 -1
- package/dist/assets/{AppManagementPage-CFfnxT1t.js → AppManagementPage-D11kr33p.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-B2HaWzLT.js +1 -0
- package/dist/assets/{AuditLogPage-D4FqYkQH.js → AuditLogPage-BgZmEpPe.js} +1 -1
- package/dist/assets/{ComponentNavView-XiNMCGMg.js → ComponentNavView-q7X3o6Ba.js} +1 -1
- package/dist/assets/{ConsoleFloatingChatbot-DQEWG5vB.js → ConsoleFloatingChatbot-CX7Hyegq.js} +1 -1
- package/dist/assets/{DeveloperHubPage-lZkmDwEj.js → DeveloperHubPage-I50zoR-V.js} +1 -1
- package/dist/assets/FlowRunsPage-BZfhrn_O.js +1 -0
- package/dist/assets/{ProfilePage-BGOg1gVa.js → ProfilePage-WwvIlqOB.js} +1 -1
- package/dist/assets/PublicFormsPage-CFzAVfSh.js +1 -0
- package/dist/assets/{RecentItemsProvider-Dt0K6V1V.js → RecentItemsProvider-VqVTd5Ra.js} +1 -1
- package/dist/assets/{SettingsHub-D_bBB6HI.js → SettingsHub-B2khbTUV.js} +1 -1
- package/dist/assets/{SettingsView-CErPIsVb.js → SettingsView-RvPByUC5.js} +1 -1
- package/dist/assets/{SystemHubPage-B3lD5VE8.js → SystemHubPage-DRfqpp32.js} +1 -1
- package/dist/assets/{data-adapter-DD2mxtaH.js → data-adapter-BI1S6gix.js} +1 -1
- package/dist/assets/framework-Bsl5NTfe.js +34 -0
- package/dist/assets/{highlighted-body-OFNGDK62-_uUbA42F.js → highlighted-body-OFNGDK62-DT9uQOp0.js} +1 -1
- package/dist/assets/index-7sxElnrz.js +33 -0
- package/dist/assets/index-ljRQeZRW.css +2 -0
- package/dist/assets/{infrastructure-IQKE4Vv8.js → infrastructure-CFhpdDcd.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-TfKfgNtY.js +1 -0
- package/dist/assets/{plugin-calendar-CBSUjCse.js → plugin-calendar-DYekpDbN.js} +1 -1
- package/dist/assets/plugin-charts-BpgCzDOC.js +7 -0
- package/dist/assets/plugin-chatbot-5ZYTjB3v.js +120 -0
- package/dist/assets/plugin-dashboard-B9i14gqH.js +3 -0
- package/dist/assets/plugin-form-DLpJWJgX.js +1 -0
- package/dist/assets/{plugin-gantt-BM_qU02_.js → plugin-gantt-DE_BIKaH.js} +1 -1
- package/dist/assets/plugin-grid-BwTh0lXV.js +6 -0
- package/dist/assets/plugin-kanban-D6PgB3bB.js +1 -0
- package/dist/assets/{plugin-map-D5wjaTuu.js → plugin-map-DVKSXWRF.js} +1 -1
- package/dist/assets/{plugin-markdown-BS1-ubYs.js → plugin-markdown-QUM2IO7x.js} +1 -1
- package/dist/assets/plugin-report-CFMPQgzx.js +59 -0
- package/dist/assets/{plugin-timeline-DHjoax2v.js → plugin-timeline-r_gNDvzq.js} +1 -1
- package/dist/assets/plugin-view-DMDKwmGd.js +1 -0
- package/dist/assets/plugins-views-Bg7xbB79.js +4 -0
- package/dist/assets/{src-DftmwA5L.js → src-fYuCcOkZ.js} +1 -1
- package/dist/assets/{types-X_Rma6be.js → types-BDFLkf-0.js} +1 -1
- package/dist/assets/ui-components-De4OOQs-.js +41 -0
- package/dist/assets/{ui-layout-Ciu790M0.js → ui-layout-B-tX4Ipa.js} +1 -1
- package/dist/assets/vendor-objectstack-D6pAOWWu.js +65 -0
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/dist/assets/ApprovalsInboxPage-BxQZcCfd.js +0 -1
- package/dist/assets/FlowRunsPage-RrJ1_Gcu.js +0 -1
- package/dist/assets/PublicFormsPage-IlBXTnnv.js +0 -1
- package/dist/assets/framework-DmN5Xd7Z.js +0 -34
- package/dist/assets/index-3n4YIBCx.js +0 -33
- package/dist/assets/index-DRnsSCuD.css +0 -2
- package/dist/assets/mermaid-GHXKKRXX-B0LJSQUI.js +0 -1
- package/dist/assets/plugin-charts-C1pPCTiC.js +0 -7
- package/dist/assets/plugin-chatbot-BHoielbC.js +0 -120
- package/dist/assets/plugin-dashboard-CrU-RT7P.js +0 -3
- package/dist/assets/plugin-form-YkI84B6S.js +0 -1
- package/dist/assets/plugin-grid-C__XZwVh.js +0 -6
- package/dist/assets/plugin-kanban-DpM0Y5w1.js +0 -1
- package/dist/assets/plugin-report-ClF2T8j-.js +0 -59
- package/dist/assets/plugin-view-DPiRuVYV.js +0 -1
- package/dist/assets/plugins-views-DKbDkBwY.js +0 -4
- package/dist/assets/ui-components-ClOuWOoQ.js +0 -41
- package/dist/assets/vendor-objectstack-B5adaLmw.js +0 -65
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{r as t,y as n}from"./vendor-react-CyVA1SE-.js";import{m as r}from"./vendor-objectstack-D6pAOWWu.js";import{i,n as a,r as o,t as s}from"./vendor-i18n-DPyFo2xM.js";var c=new class{components=new Map;lazyEntries=new Map;listeners=new Set;register(e,t,n){let r=n?.namespace?`${n.namespace}:${e}`:e;n?.namespace||console.warn(`Registering component "${e}" without a namespace is deprecated. Please provide a namespace in the meta parameter.\n\n Migration:\n // Before (deprecated):\n registry.register('${e}', MyComponent);\n\n // After:\n registry.register('${e}', MyComponent, { namespace: 'my-plugin' });\n\n See: https://github.com/objectstack-ai/objectui/blob/main/MIGRATION_GUIDE.md`),this.components.has(r),this.components.set(r,{type:r,component:t,...n}),n?.namespace&&!n?.skipFallback&&this.components.set(e,{type:r,component:t,...n}),this.lazyEntries.delete(r),this.lazyEntries.delete(e),this.notify()}registerLazy(e,t,n){let r=n?.namespace?`${n.namespace}:${e}`:e,i={loader:t,meta:n};this.lazyEntries.set(r,i),n?.namespace&&!n?.skipFallback&&this.lazyEntries.set(e,i)}hasLazy(e,t){return t?this.lazyEntries.has(`${t}:${e}`):this.lazyEntries.has(e)}loadLazy(e,t){let n=t?`${t}:${e}`:e,r=this.lazyEntries.get(n);if(r)return r.pending||=r.loader().catch(e=>{throw r.pending=void 0,e}),r.pending}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){for(let e of this.listeners)try{e()}catch(e){console.error(`[Registry] listener error`,e)}}get(e,t){if(t){let n=`${t}:${e}`;return this.components.get(n)?.component}return this.components.get(e)?.component}getConfig(e,t){if(t){let n=`${t}:${e}`;return this.components.get(n)}return this.components.get(e)}has(e,t){if(t){let n=`${t}:${e}`;return this.components.has(n)}return this.components.has(e)}getAllTypes(){return Array.from(this.components.keys())}getAllConfigs(){return Array.from(this.components.values())}getNamespaceComponents(e){return Array.from(this.components.values()).filter(t=>t.namespace===e)}},l={type:{required:!0,validate:e=>typeof e==`string`&&e.length>0,message:`type must be a non-empty string`},id:{required:!1,validate:e=>typeof e==`string`,message:`id must be a string`},className:{required:!1,validate:e=>typeof e==`string`,message:`className must be a string`},visible:{required:!1,validate:e=>typeof e==`boolean`,message:`visible must be a boolean`},disabled:{required:!1,validate:e=>typeof e==`boolean`,message:`disabled must be a boolean`}};function u(e,t=`schema`){let n=[];return!e||typeof e!=`object`?(n.push({path:t,message:`Schema must be an object`,type:`error`,code:`INVALID_SCHEMA`}),n):(Object.entries(l).forEach(([r,i])=>{let a=e[r];i.required&&a===void 0&&n.push({path:`${t}.${r}`,message:`${r} is required`,type:`error`,code:`MISSING_REQUIRED`}),a!==void 0&&!i.validate(a)&&n.push({path:`${t}.${r}`,message:i.message,type:`error`,code:`INVALID_TYPE`})}),n)}function d(e,t=`schema`){let n=[];return e.type===`crud`&&((!e.columns||!Array.isArray(e.columns))&&n.push({path:`${t}.columns`,message:`CRUD schema requires columns array`,type:`error`,code:`MISSING_COLUMNS`}),!e.api&&!e.dataSource&&n.push({path:`${t}.api`,message:`CRUD schema requires api or dataSource`,type:`warning`,code:`MISSING_DATA_SOURCE`}),e.columns&&Array.isArray(e.columns)&&e.columns.forEach((e,r)=>{e.name||n.push({path:`${t}.columns[${r}]`,message:`Column requires name property`,type:`error`,code:`MISSING_COLUMN_NAME`})}),e.fields&&Array.isArray(e.fields)&&e.fields.forEach((e,r)=>{e.name||n.push({path:`${t}.fields[${r}]`,message:`Field requires name property`,type:`error`,code:`MISSING_FIELD_NAME`})})),n}function f(e,t=`schema`){let n=[];return e.type===`form`&&e.fields&&Array.isArray(e.fields)&&e.fields.forEach((r,i)=>{r.name||n.push({path:`${t}.fields[${i}]`,message:`Form field requires name property`,type:`error`,code:`MISSING_FIELD_NAME`}),e.fields.filter(e=>e.name===r.name).length>1&&n.push({path:`${t}.fields[${i}]`,message:`Duplicate field name: ${r.name}`,type:`warning`,code:`DUPLICATE_FIELD_NAME`})}),n}function p(e,t=`schema`){let n=[],r=e.children||e.body;if(r){if(Array.isArray(r))r.forEach((e,r)=>{if(typeof e==`object`&&e){let i=m(e,`${t}.children[${r}]`);n.push(...i.errors,...i.warnings)}});else if(typeof r==`object`&&r){let e=m(r,`${t}.children`);n.push(...e.errors,...e.warnings)}}return n}function m(e,t=`schema`){let n=[];n.push(...u(e,t)),n.push(...d(e,t)),n.push(...f(e,t)),n.push(...p(e,t));let r=n.filter(e=>e.type===`error`),i=n.filter(e=>e.type===`warning`);return{valid:r.length===0,errors:r,warnings:i}}function h(e){return{$eq:`=`,$ne:`!=`,$gt:`>`,$gte:`>=`,$lt:`<`,$lte:`<=`,$in:`in`,$nin:`nin`,$notin:`nin`,$between:`between`,$contains:`contains`,$notContains:`notcontains`,$notcontains:`notcontains`,$startsWith:`startswith`,$startswith:`startswith`,$endsWith:`endswith`,$endswith:`endswith`}[e]||null}function g(e){let t=[];for(let[n,r]of Object.entries(e))if(r!=null)if(typeof r==`object`&&!Array.isArray(r))for(let[e,i]of Object.entries(r)){if(e===`$regex`){console.warn(`[ObjectUI] Warning: \$regex operator is not fully supported. Converting to 'contains' which only supports substring matching, not regex patterns. Field: '${n}', Value: ${JSON.stringify(i)}. Consider using $contains or $startsWith instead.`),t.push([n,`contains`,i]);continue}if(e===`$null`){t.push([n,i?`is_null`:`is_not_null`,!0]);continue}if(e===`$exists`){t.push([n,i?`is_not_null`:`is_null`,!0]);continue}let r=h(e);if(r)t.push([n,r,i]);else throw Error(`[ObjectUI] Unknown filter operator '${e}' for field '${n}'. Supported operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $between, $contains, $notContains, $startsWith, $endsWith, $null, $exists. If you need exact object matching, use the value directly without an operator.`)}else t.push([n,`=`,r]);return t.length===0?e:t.length===1?t[0]:[`and`,...t]}function _(e){switch(e){case`equals`:case`eq`:return`=`;case`notEquals`:case`ne`:case`neq`:return`!=`;case`contains`:return`contains`;case`notContains`:return`notcontains`;case`greaterThan`:case`gt`:return`>`;case`greaterOrEqual`:case`gte`:return`>=`;case`lessThan`:case`lt`:return`<`;case`lessOrEqual`:case`lte`:return`<=`;case`in`:return`in`;case`notIn`:return`not in`;case`before`:return`<`;case`after`:return`>`;default:return e}}function v(e){if(`id`in e&&`filters`in e&&e.label&&Array.isArray(e.filters))return e;if(`field`in e&&`operator`in e){let t=_(e.operator);return{id:`${e.field}-${e.operator}-${String(e.value??``)}`,label:e.label||`${e.field} ${e.operator} ${String(e.value??``)}`,filters:[[e.field,t,e.value]],icon:e.icon,defaultActive:e.defaultActive}}return e}function y(e){if(!(!e||e.length===0))return e.map(v)}function b(e){if(Array.isArray(e))return e;if(e&&typeof e==`object`){if(Array.isArray(e.records))return e.records;if(Array.isArray(e.data))return e.data;if(Array.isArray(e.value))return e.value}return[]}function x(e,t){if(!e||typeof e!=`object`)return[];let n=[];for(let[t,r]of Object.entries(e))r&&typeof r==`object`&&(r.type===`lookup`||r.type===`master_detail`)&&n.push(t);if(n.length===0)return[];if(t&&Array.isArray(t)&&t.length>0){let e=new Set;for(let n of t)if(typeof n==`string`)e.add(n);else if(n&&typeof n==`object`){let t=n.field??n.name??n.fieldName;t&&e.add(t)}return n.filter(t=>e.has(t))}return n}var S=class e{scopes=[];constructor(e={}){this.scopes.push(new Map(Object.entries(e)))}pushScope(e){this.scopes.push(new Map(Object.entries(e)))}popScope(){this.scopes.length>1&&this.scopes.pop()}get(e){let t=e.split(`.`),n=t[0];for(let e=this.scopes.length-1;e>=0;e--)if(this.scopes[e].has(n)){let r=this.scopes[e].get(n);for(let e=1;e<t.length;e++)if(r&&typeof r==`object`)r=r[t[e]];else return;return r}}set(e,t){this.scopes.length>0&&this.scopes[this.scopes.length-1].set(e,t)}has(e){let t=e.split(`.`)[0];for(let e=this.scopes.length-1;e>=0;e--)if(this.scopes[e].has(t))return!0;return!1}toObject(){let e={};for(let t of this.scopes)for(let[n,r]of t.entries())e[n]=r;return e}createChild(t={}){let n=new e;return n.scopes=[...this.scopes,new Map(Object.entries(t))],n}},C={Math,JSON,parseInt,parseFloat,isNaN,isFinite},ee=new Set([`constructor`,`__proto__`,`prototype`,`__defineGetter__`,`__defineSetter__`,`__lookupGetter__`,`__lookupSetter__`]),te=class e{source=``;pos=0;context={};_evaluating=!0;evaluate(e,t){this.source=e.trim(),this.pos=0,this.context={...C,...t};let n=this.parseTernary();if(this.skipWhitespace(),this.pos<this.source.length)throw SyntaxError(`Unexpected token "${this.source[this.pos]}" at position ${this.pos} in expression "${e}"`);return n}skipWhitespace(){for(;this.pos<this.source.length&&/\s/.test(this.source[this.pos]);)this.pos++}peek(e=0){return this.source[this.pos+e]??``}consume(){return this.source[this.pos++]??``}withEvaluation(e,t){let n=this._evaluating;this._evaluating=e;try{return t()}finally{this._evaluating=n}}assertSafeProp(e){if(typeof e==`string`&&ee.has(e))throw TypeError(`Access to property "${e}" is not permitted in expressions`)}parseTernary(){let e=this.parseNullish();if(this.skipWhitespace(),this.peek()===`?`&&this.peek(1)!==`?`){if(this.pos++,this.skipWhitespace(),!this._evaluating){if(this.parseTernary(),this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);this.pos++,this.skipWhitespace(),this.parseTernary();return}if(e){let e=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);return this.pos++,this.skipWhitespace(),this.withEvaluation(!1,()=>this.parseTernary()),e}else{if(this.withEvaluation(!1,()=>this.parseTernary()),this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);return this.pos++,this.skipWhitespace(),this.parseTernary()}}return e}parseNullish(){let e=this.parseOr();for(this.skipWhitespace();this.peek()===`?`&&this.peek(1)===`?`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&e!=null)this.withEvaluation(!1,()=>this.parseOr());else{let t=this.parseOr();this._evaluating&&(e??=t)}this.skipWhitespace()}return e}parseOr(){let e=this.parseAnd();for(this.skipWhitespace();this.peek()===`|`&&this.peek(1)===`|`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&e)this.withEvaluation(!1,()=>this.parseAnd());else{let t=this.parseAnd();this._evaluating&&(e||=t)}this.skipWhitespace()}return e}parseAnd(){let e=this.parseEquality();for(this.skipWhitespace();this.peek()===`&`&&this.peek(1)===`&`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&!e)this.withEvaluation(!1,()=>this.parseEquality());else{let t=this.parseEquality();this._evaluating&&(e&&=t)}this.skipWhitespace()}return e}parseEquality(){let e=this.parseAddition();for(this.skipWhitespace();;){let t=null;if(this.peek()===`=`&&this.peek(1)===`=`&&this.peek(2)===`=`)t=`===`,this.pos+=3;else if(this.peek()===`!`&&this.peek(1)===`=`&&this.peek(2)===`=`)t=`!==`,this.pos+=3;else if(this.peek()===`=`&&this.peek(1)===`=`)t=`==`,this.pos+=2;else if(this.peek()===`!`&&this.peek(1)===`=`)t=`!=`,this.pos+=2;else if(this.peek()===`>`&&this.peek(1)===`=`)t=`>=`,this.pos+=2;else if(this.peek()===`<`&&this.peek(1)===`=`)t=`<=`,this.pos+=2;else if(this.peek()===`>`&&this.peek(1)!==`>`)t=`>`,this.pos++;else if(this.peek()===`<`&&this.peek(1)!==`<`)t=`<`,this.pos++;else break;this.skipWhitespace();let n=this.parseAddition();switch(t){case`===`:e=e===n;break;case`!==`:e=e!==n;break;case`==`:e=e==n;break;case`!=`:e=e!=n;break;case`>`:e=e>n;break;case`<`:e=e<n;break;case`>=`:e=e>=n;break;case`<=`:e=e<=n;break}this.skipWhitespace()}return e}parseAddition(){let e=this.parseMultiplication();for(this.skipWhitespace();(this.peek()===`+`||this.peek()===`-`)&&this.peek(1)!==`=`;){let t=this.consume();this.skipWhitespace();let n=this.parseMultiplication();e=t===`+`?e+n:e-n,this.skipWhitespace()}return e}parseMultiplication(){let e=this.parseUnary();for(this.skipWhitespace();(this.peek()===`*`||this.peek()===`/`||this.peek()===`%`)&&this.peek(1)!==`=`;){let t=this.consume();this.skipWhitespace();let n=this.parseUnary();t===`*`?e*=n:t===`/`?e/=n:e%=n,this.skipWhitespace()}return e}parseUnary(){if(this.skipWhitespace(),this.source.startsWith(`typeof`,this.pos)&&!/[\w$]/.test(this.source[this.pos+6]??``)){this.pos+=6,this.skipWhitespace();try{return typeof this.parseUnary()}catch{return`undefined`}}return this.peek()===`!`?(this.pos++,!this.parseUnary()):this.peek()===`-`?(this.pos++,-this.parseUnary()):this.peek()===`+`?(this.pos++,+this.parseUnary()):this.parseMember()}parseMember(){let e=this.parsePrimary();for(;;){this.skipWhitespace();let t=this.peek()===`?`&&this.peek(1)===`.`;if(this.peek()===`.`&&this.peek(1)!==`.`||t){t&&this.pos++,this.pos++,this.skipWhitespace();let n=this.parseIdentifierName();if(!n)break;if(this.assertSafeProp(n),this.skipWhitespace(),this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating){e=void 0;continue}e=e!=null&&typeof e[n]==`function`?e[n](...t):void 0}else{if(!this._evaluating){e=void 0;continue}e=e?.[n]}continue}let n=this.peek()===`?`&&this.peek(1)===`[`;if(this.peek()===`[`||n){n&&this.pos++,this.pos++,this.skipWhitespace();let t=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`]`)throw SyntaxError(`Expected "]" after bracket expression at position ${this.pos}`);if(this.pos++,this.assertSafeProp(t),!this._evaluating){e=void 0;continue}e=e?.[t];continue}if(this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating){e=void 0;continue}if(typeof e==`function`)e=e(...t);else throw TypeError(`${String(e)} is not a function`);continue}break}return e}parsePrimary(){this.skipWhitespace();let e=this.peek();if(e===`(`){this.pos++;let e=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`)`)throw SyntaxError(`Expected ")" to close "(" expression at position ${this.pos}`);return this.pos++,e}if(e===`[`)return this.parseArrayLiteral();if(e===`"`||e===`'`)return this.parseString(e);if(/\d/.test(e)||e===`.`&&/\d/.test(this.peek(1)))return this.parseNumber();if(/[a-zA-Z_$]/.test(e))return this.parseIdentifierOrKeyword();throw SyntaxError(`Unexpected character "${e}" at position ${this.pos}`)}parseArrayLiteral(){this.pos++;let e=[];for(this.skipWhitespace();this.peek()!==`]`&&this.pos<this.source.length;)e.push(this.parseTernary()),this.skipWhitespace(),this.peek()===`,`&&(this.pos++,this.skipWhitespace());if(this.peek()!==`]`)throw SyntaxError(`Expected "]" to close array literal at position ${this.pos}`);return this.pos++,e}parseString(e){this.pos++;let t=``;for(;this.pos<this.source.length;){let n=this.source[this.pos];if(n===`\\`){this.pos++;let e=this.source[this.pos++]??``;switch(e){case`n`:t+=`
|
|
2
|
+
`;break;case`t`:t+=` `;break;case`r`:t+=`\r`;break;case`\\`:t+=`\\`;break;case`"`:t+=`"`;break;case`'`:t+=`'`;break;case"`":t+="`";break;default:t+=e}}else if(n===e){this.pos++;break}else t+=n,this.pos++}return t}parseNumber(){let e=this.pos,t=!1;for(;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t=!0,this.pos++;if(this.source[this.pos]===`.`)for(this.pos++;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t=!0,this.pos++;if(/[eE]/.test(this.source[this.pos]??``)){this.pos++,/[+\-]/.test(this.source[this.pos]??``)&&this.pos++;let t=0;for(;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t++,this.pos++;if(t===0)throw SyntaxError(`Invalid numeric literal exponent at position ${e}`)}if(!t)throw SyntaxError(`Invalid numeric literal at position ${e}`);let n=this.source.slice(e,this.pos),r=Number(n);if(!Number.isFinite(r))throw SyntaxError(`Invalid numeric literal "${n}" at position ${e}`);return r}parseIdentifierName(){let e=this.pos;for(;this.pos<this.source.length&&/[\w$]/.test(this.source[this.pos]);)this.pos++;return this.source.slice(e,this.pos)}parseIdentifierOrKeyword(){let e=this.parseIdentifierName();switch(e){case`true`:return!0;case`false`:return!1;case`null`:return null;case`undefined`:return;case`NaN`:return NaN;case`Infinity`:return 1/0}if(e===`new`)return this.parseNewExpression();if(this.skipWhitespace(),this.peek()===`=`&&this.peek(1)===`>`)return this.parseArrowFunction(e);if(this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating)return;let n=this.context[e];if(typeof n==`function`)return n(...t);throw TypeError(`"${e}" is not a function`)}if(this._evaluating){if(!(e in this.context))throw ReferenceError(`${e} is not defined`);return this.context[e]}}parseNewExpression(){this.skipWhitespace();let e=this.parseIdentifierName();this.skipWhitespace();let t=[];if(this.peek()===`(`){if(this.pos++,t=this.parseArgList(),this.peek()!==`)`)throw SyntaxError(`Expected ")" after new ${e}() at position ${this.pos}`);this.pos++}if(this._evaluating)switch(e){case`Date`:return new Date(...t);case`RegExp`:return new RegExp(t[0],t[1]);default:throw TypeError(`new ${e}() is not supported in expressions`)}}parseArrowFunction(t){this.pos+=2,this.skipWhitespace();let n=this.pos,r=this.scanExpressionEnd(),i=this.source.slice(n,r).trim();this.pos=r;let a=this.context;return n=>new e().evaluate(i,{...a,[t]:n})}scanExpressionEnd(){let e=this.pos,t=0,n=!1,r=``;for(;e<this.source.length;){let i=this.source[e];if(n){if(i===`\\`){e+=2;continue}i===r&&(n=!1),e++;continue}if(i===`"`||i===`'`){n=!0,r=i,e++;continue}if(i===`(`||i===`[`)t++;else if(i===`)`||i===`]`){if(t===0)break;t--}else if(i===`,`&&t===0)break;e++}return e}parseArgList(){let e=[];for(this.skipWhitespace();this.peek()!==`)`&&this.pos<this.source.length;)e.push(this.parseTernary()),this.skipWhitespace(),this.peek()===`,`&&(this.pos++,this.skipWhitespace());return e}},w=class{cache=new Map;maxSize;constructor(e=1e3){this.maxSize=e}compile(e,t){let n=`${e}::${t.join(`,`)}`;if(this.cache.has(n)){let e=this.cache.get(n);return e.hitCount++,e}this.cache.size>=this.maxSize&&this.evictLFU();let r={fn:this.compileExpression(e,t),varNames:[...t],expression:e,compiledAt:Date.now(),hitCount:1};return this.cache.set(n,r),r}compileExpression(e,t){let n=new te;return(...r)=>{let i={};for(let e=0;e<t.length;e++)i[t[e]]=r[e];return n.evaluate(e,i)}}evictLFU(){let e=null,t=1/0,n=1/0;for(let[r,i]of this.cache.entries())(i.hitCount<n||i.hitCount===n&&i.compiledAt<t)&&(e=r,t=i.compiledAt,n=i.hitCount);e&&this.cache.delete(e)}has(e,t){let n=`${e}::${t.join(`,`)}`;return this.cache.has(n)}clear(){this.cache.clear()}getStats(){let e=0,t=[];for(let n of this.cache.values())e+=n.hitCount,t.push({expression:n.expression,hitCount:n.hitCount});return{size:this.cache.size,maxSize:this.maxSize,totalHits:e,entries:t.sort((e,t)=>t.hitCount-e.hitCount)}}},T=class{functions=new Map;constructor(){this.registerDefaults()}register(e,t){this.functions.set(e.toUpperCase(),t)}get(e){return this.functions.get(e.toUpperCase())}has(e){return this.functions.has(e.toUpperCase())}getNames(){return Array.from(this.functions.keys())}toObject(){let e={};for(let[t,n]of this.functions)e[t]=n;return e}registerDefaults(){this.registerAggregationFunctions(),this.registerDateFunctions(),this.registerLogicFunctions(),this.registerStringFunctions(),this.registerStringSearchFunctions(),this.registerStatisticalFunctions()}registerAggregationFunctions(){this.register(`SUM`,(...e)=>E(e).reduce((e,t)=>e+t,0)),this.register(`AVG`,(...e)=>{let t=E(e);return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length}),this.register(`COUNT`,(...e)=>D(e).filter(e=>e!=null).length),this.register(`MIN`,(...e)=>{let t=E(e);return t.length===0?0:Math.min(...t)}),this.register(`MAX`,(...e)=>{let t=E(e);return t.length===0?0:Math.max(...t)})}registerDateFunctions(){this.register(`TODAY`,()=>new Date().toISOString().split(`T`)[0]),this.register(`NOW`,()=>new Date().toISOString()),this.register(`DATEADD`,(e,t,n)=>{let r=new Date(e);if(isNaN(r.getTime()))throw Error(`DATEADD: Invalid date "${e}"`);switch(String(n).toLowerCase()){case`day`:case`days`:r.setDate(r.getDate()+t);break;case`month`:case`months`:r.setMonth(r.getMonth()+t);break;case`year`:case`years`:r.setFullYear(r.getFullYear()+t);break;case`hour`:case`hours`:r.setHours(r.getHours()+t);break;case`minute`:case`minutes`:r.setMinutes(r.getMinutes()+t);break;default:throw Error(`DATEADD: Unsupported unit "${n}"`)}return r.toISOString()}),this.register(`DATEDIFF`,(e,t,n)=>{let r=new Date(e),i=new Date(t);if(isNaN(r.getTime()))throw Error(`DATEDIFF: Invalid date "${e}"`);if(isNaN(i.getTime()))throw Error(`DATEDIFF: Invalid date "${t}"`);let a=i.getTime()-r.getTime();switch(String(n).toLowerCase()){case`day`:case`days`:return Math.floor(a/(1e3*60*60*24));case`month`:case`months`:return(i.getFullYear()-r.getFullYear())*12+(i.getMonth()-r.getMonth());case`year`:case`years`:return i.getFullYear()-r.getFullYear();case`hour`:case`hours`:return Math.floor(a/(1e3*60*60));case`minute`:case`minutes`:return Math.floor(a/(1e3*60));default:throw Error(`DATEDIFF: Unsupported unit "${n}"`)}}),this.register(`DATEFORMAT`,(e,t)=>{let n=new Date(e);if(isNaN(n.getTime()))throw Error(`DATEFORMAT: Invalid date "${e}"`);let r=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`YY`,String(n.getFullYear()).slice(-2)).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))})}registerLogicFunctions(){this.register(`IF`,(e,t,n)=>e?t:n),this.register(`AND`,(...e)=>e.every(Boolean)),this.register(`OR`,(...e)=>e.some(Boolean)),this.register(`NOT`,e=>!e),this.register(`SWITCH`,(e,...t)=>{for(let n=0;n<t.length-1;n+=2)if(e===t[n])return t[n+1];if(t.length%2==1)return t[t.length-1]})}registerStringFunctions(){this.register(`CONCAT`,(...e)=>e.map(e=>String(e??``)).join(``)),this.register(`LEFT`,(e,t)=>String(e??``).substring(0,t)),this.register(`RIGHT`,(e,t)=>{let n=String(e??``);return n.substring(Math.max(0,n.length-t))}),this.register(`TRIM`,e=>String(e??``).trim()),this.register(`UPPER`,e=>String(e??``).toUpperCase()),this.register(`LOWER`,e=>String(e??``).toLowerCase())}registerStringSearchFunctions(){this.register(`FIND`,(e,t,n)=>String(t??``).indexOf(String(e??``),n??0)),this.register(`REPLACE`,(e,t,n)=>String(e??``).split(String(t??``)).join(String(n??``))),this.register(`SUBSTRING`,(e,t,n)=>{let r=String(e??``);return n===void 0?r.substring(t):r.substring(t,t+n)}),this.register(`REGEX`,(e,t,n)=>{let r=String(e??``);return new RegExp(t,n).test(r)}),this.register(`LEN`,e=>String(e??``).length)}registerStatisticalFunctions(){this.register(`MEDIAN`,(...e)=>{let t=E(e).sort((e,t)=>e-t);if(t.length===0)return 0;let n=Math.floor(t.length/2);return t.length%2==0?(t[n-1]+t[n])/2:t[n]}),this.register(`STDEV`,(...e)=>{let t=E(e);if(t.length<2)return 0;let n=t.reduce((e,t)=>e+t,0)/t.length,r=t.map(e=>(e-n)**2).reduce((e,t)=>e+t,0)/(t.length-1);return Math.sqrt(r)}),this.register(`VARIANCE`,(...e)=>{let t=E(e);if(t.length<2)return 0;let n=t.reduce((e,t)=>e+t,0)/t.length;return t.map(e=>(e-n)**2).reduce((e,t)=>e+t,0)/(t.length-1)}),this.register(`PERCENTILE`,(e,...t)=>{let n=E(t).sort((e,t)=>e-t);if(n.length===0)return 0;let r=Math.max(0,Math.min(100,e))/100*(n.length-1),i=Math.floor(r),a=Math.ceil(r);if(i===a)return n[i];let o=r-i;return n[i]+o*(n[a]-n[i])})}};function E(e){let t=[];for(let n of e)if(Array.isArray(n))t.push(...E(n));else{let e=Number(n);isNaN(e)||t.push(e)}return t}function D(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...D(n)):t.push(n);return t}var O=class e{context;cache;formulas;constructor(e,t,n){e instanceof S?this.context=e:this.context=new S(e||{}),this.cache=t||new w,this.formulas=n||new T}evaluate(e,t={}){if(e&&typeof e==`object`&&typeof e.source==`string`&&(e=e.source),typeof e!=`string`)return e;let{defaultValue:n,throwOnError:r=!1,sanitize:i=!0}=t;try{if(!e.includes("${"))return e;let t=e.match(/^\$\{([^}]+)\}$/);return t?this.evaluateExpression(t[1].trim(),{sanitize:i}):e.replace(/\$\{([^}]+)\}/g,(e,t)=>{try{let e=this.evaluateExpression(t.trim(),{sanitize:i});return String(e??``)}catch(n){if(r)throw n;return console.warn(`Expression evaluation failed for: ${t}`,n),e}})}catch(t){if(r)throw t;return console.warn(`Failed to evaluate expression: ${e}`,t),n??e}}evaluateExpression(e,t={}){let{sanitize:n=!0}=t;if(!(!e||e.trim()===``)){if(n&&this.isDangerous(e))throw Error(`Potentially dangerous expression detected: ${e}`);try{let t=this.context.toObject(),n={...this.formulas.toObject(),...t},r=Object.keys(n),i=Object.values(n);return this.cache.compile(e,r).fn(...i)}catch(t){throw Error(`Failed to evaluate expression "${e}": ${t.message}`)}}}isDangerous(e){return[/eval\s*\(/i,/Function\s*\(/i,/setTimeout\s*\(/i,/setInterval\s*\(/i,/import\s*\(/i,/require\s*\(/i,/process\./i,/global\./i,/window\./i,/document\./i,/__proto__/i,/constructor\s*\(/i,/prototype\./i].some(t=>t.test(e))}evaluateCondition(e,t={}){return typeof e==`boolean`?e:(e&&typeof e==`object`&&typeof e.source==`string`&&(e=e.source),e?!!this.evaluate(e,t):!0)}updateContext(e){Object.entries(e).forEach(([e,t])=>{this.context.set(e,t)})}getContext(){return this.context}withContext(t){return new e(this.context.createChild(t),this.cache,this.formulas)}getCacheStats(){return this.cache.getStats()}clearCache(){this.cache.clear()}getFormulas(){return this.formulas}registerFunction(e,t){this.formulas.register(e,t)}},k=new w,A=new T;function ne(e,t){let n=new O({...t,data:t},k,A);try{return(/\$\{/.test(e)?n.evaluate(e,{throwOnError:!0}):n.evaluateExpression(e))===!0}catch{return!1}}var j=class{handlers=new Map;scripts=new Map;evaluator;context;confirmHandler;toastHandler;modalHandler;navigationHandler;paramCollectionHandler;resultDialogHandler;constructor(e={}){this.context=e,this.evaluator=new O(e),this.confirmHandler=async e=>window.confirm(e),this.toastHandler=null,this.modalHandler=null,this.navigationHandler=null,this.paramCollectionHandler=null,this.resultDialogHandler=null}setConfirmHandler(e){this.confirmHandler=e}setToastHandler(e){this.toastHandler=e}setModalHandler(e){this.modalHandler=e}setNavigationHandler(e){this.navigationHandler=e}setParamCollectionHandler(e){this.paramCollectionHandler=e}setResultDialogHandler(e){this.resultDialogHandler=e}registerHandler(e,t){this.handlers.set(e,t)}unregisterHandler(e){this.handlers.delete(e)}registerScript(e,t){this.scripts.set(e,t)}unregisterScript(e){this.scripts.delete(e)}async execute(e){try{let t=e.type||e.actionType||e.name||``;if(e.condition&&!this.evaluator.evaluateCondition(e.condition))return{success:!1,error:`Action condition not met`};if(e.disabled&&(typeof e.disabled==`string`?this.evaluator.evaluateCondition(e.disabled):e.disabled))return{success:!1,error:`Action is disabled`};let n=e.confirm?.message||e.confirmText;if(n&&!await this.confirmHandler(this.evaluator.evaluate(n),e.confirm?{title:e.confirm.title,confirmText:e.confirm.confirmText,cancelText:e.confirm.cancelText}:void 0))return{success:!1,error:`Action cancelled by user`};let r=e.actionParams&&Array.isArray(e.actionParams)?e.actionParams:Array.isArray(e.params)?e.params:void 0;if(r&&r.length>0&&this.paramCollectionHandler){let t=await this.paramCollectionHandler(r,e);if(t===null)return{success:!1,error:`Action cancelled by user (params)`};let n=Array.isArray(e.params)?{}:e.params||{},i=n._rowRecord;e.params={...n,...t},i!==void 0&&(e.params._rowRecord=i)}if(t&&this.handlers.has(t)){let n=await this.handlers.get(t)(e,this.context);return await this.handlePostExecution(e,n),n}let i;switch(t){case`script`:i=await this.executeScript(e);break;case`url`:i=await this.executeUrl(e);break;case`modal`:i=await this.executeModal(e);break;case`flow`:i=await this.executeFlow(e);break;case`api`:i=await this.executeAPI(e);break;case`navigation`:i=await this.executeNavigation(e);break;default:e.navigate?i=await this.executeNavigation(e):e.api||e.endpoint?i=await this.executeAPI(e):e.onClick?(await e.onClick(),i={success:!0}):i=await this.executeActionSchema(e)}return await this.handlePostExecution(e,i),i}catch(t){let n={success:!1,error:t.message};return await this.handlePostExecution(e,n),n}}async executeChain(e,t=`sequential`){if(e.length===0)return{success:!0};if(t===`parallel`){let t=await Promise.allSettled(e.map(e=>this.execute(e)));if(t.filter(e=>e.status===`rejected`||e.status===`fulfilled`&&!e.value.success).length>0)return{success:!1,error:t.find(e=>e.status===`fulfilled`&&!e.value.success)?.value?.error||`One or more parallel actions failed`};let n=t[t.length-1];return n.status===`fulfilled`?n.value:{success:!1,error:`Action failed`}}let n={success:!0};for(let t of e)if(n=await this.execute(t),!n.success)return n;return n}async handlePostExecution(e,t){let n=!!(e.resultDialog&&t.success);if(this.toastHandler){let r=e.toast??{showOnSuccess:!0,showOnError:!0},i=e.toast?.duration;if(t.success&&!n&&r.showOnSuccess!==!1){let t=e.successMessage||`Action completed successfully`;this.toastHandler(t,{type:`success`,duration:i})}if(!t.success&&r.showOnError!==!1&&t.error){let n=e.errorMessage||t.error;this.toastHandler(n,{type:`error`,duration:i})}}if(n)if(this.resultDialogHandler)try{await this.resultDialogHandler(e.resultDialog,t.data,e)}catch(e){console.warn(`[ActionRunner] resultDialog handler rejected; treating as acknowledged`,e)}else console.warn(`[ActionRunner] action.resultDialog set but no resultDialogHandler registered — the response value will not be shown to the user.`,{action:e.name,data:t.data});if(e.refreshAfter&&t.success&&(t.reload=!0),e.chain&&e.chain.length>0&&t.success){let n=await this.executeChain(e.chain,e.chainMode||`sequential`);n.success||(t.success=!1,t.error=n.error),n.data&&(t.data=n.data),n.redirect&&(t.redirect=n.redirect),n.reload&&(t.reload=!0)}if(t.success&&e.onSuccess){let t=Array.isArray(e.onSuccess)?e.onSuccess:[e.onSuccess];await this.executeChain(t,`sequential`)}if(!t.success&&e.onFailure){let t=Array.isArray(e.onFailure)?e.onFailure:[e.onFailure];await this.executeChain(t,`sequential`)}}async executeScript(e){let t=e.execute||e.target;if(!t)return{success:!1,error:`No script provided for script action`};let n=this.scripts.get(t);if(n)try{return await n(e,this.context)}catch(e){return{success:!1,error:`Script execution failed: ${e.message}`}}try{return{success:!0,data:this.evaluator.evaluate(`\${${t}}`)}}catch(e){return{success:!1,error:`Script execution failed: ${e.message}`}}}async executeUrl(e){let t=e.target||e.redirect;if(!t)return{success:!1,error:`No URL provided for url action`};let n=this.interpolateTarget(t,e),r=this.evaluator.evaluate(n);if(!this.isValidUrl(r))return{success:!1,error:`Invalid URL scheme. Only http://, https://, and relative URLs are allowed.`};let i=typeof this.context.apiBase==`string`?this.context.apiBase.replace(/\/+$/,``):``;i&&/^\/(api|_auth|_account)\//.test(r)&&(r=`${i}${r}`);let a=r.startsWith(`http://`)||r.startsWith(`https://`);if(/\/(api|_auth|_account)\//.test(r)&&(a||r.startsWith(`/`)))return window.location.href=r,{success:!0};let o=e.params?.newTab??a;if(this.navigationHandler)return this.navigationHandler(r,{external:a,newTab:o}),{success:!0};if(o)window.open(r,`_blank`,`noopener,noreferrer`);else return{success:!0,redirect:r};return{success:!0}}async executeModal(e){let t=e.modal||e.target||e.params?.schema;return t?this.modalHandler?await this.modalHandler(t,this.context):{success:!0,modal:t}:{success:!1,error:`No modal schema or target provided for modal action`}}async executeFlow(e){let t=e.target||e.name;return t?this.handlers.has(`flow`)?await this.handlers.get(`flow`)(e,this.context):{success:!1,error:`Flow handler not registered. Cannot execute flow: ${t}`}:{success:!1,error:`No flow target provided for flow action`}}async executeActionSchema(e){let t={success:!0};if(e.api||e.endpoint){let n=await this.executeAPI(e);if(!n.success)return n;t.data=n.data}return e.onClick&&await e.onClick(),t.reload=e.reload!==!1,t.close=e.close!==!1,e.redirect&&(t.redirect=this.evaluator.evaluate(e.redirect)),t}async executeNavigation(e){let t=e.navigate||e,n=this.evaluator.evaluate(t.to||t.target);if(!this.isValidUrl(n))return{success:!1,error:`Invalid URL scheme. Only http://, https://, and relative URLs are allowed.`};let r=t.external||typeof n==`string`&&(n.startsWith(`http://`)||n.startsWith(`https://`));if(this.navigationHandler)return this.navigationHandler(n,{external:r,newTab:t.newTab??r,replace:t.replace}),{success:!0};if(r)window.open(n,`_blank`,`noopener,noreferrer`);else return{success:!0,redirect:n};return{success:!0}}async executeAPI(e){let t=e.api||e.endpoint||e.target;if(!t)return{success:!1,error:`No API endpoint provided`};try{let n,r,i={"Content-Type":`application/json`},a,o=`json`;if(typeof t==`string`)n=this.interpolateTarget(t,e),r=e.method||`POST`,a=JSON.stringify(e.params||this.context.data||{});else{let s=t;if(n=this.interpolateTarget(s.url,e),r=s.method||e.method||`POST`,i={...i,...s.headers},o=s.responseType||`json`,s.queryParams){let e=new URLSearchParams(s.queryParams);n=`${n}${n.includes(`?`)?`&`:`?`}${e.toString()}`}s.body?a=typeof s.body==`string`?s.body:JSON.stringify(s.body):r!==`GET`&&r!==`HEAD`&&(a=JSON.stringify(e.params||this.context.data||{}))}let s={method:r,headers:i};a&&r!==`GET`&&r!==`HEAD`&&(s.body=a);let c=await fetch(n,s);if(!c.ok)throw Error(`HTTP ${c.status}: ${c.statusText}`);let l;switch(o){case`text`:l=await c.text();break;case`blob`:l=await c.blob();break;default:l=await c.json()}return{success:!0,data:l}}catch(e){return{success:!1,error:e.message}}}isValidUrl(e){return typeof e==`string`&&(e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`/`)||e.startsWith(`./`))}interpolateTarget(e,t){if(typeof e!=`string`||e.indexOf("${")===-1)return e;let n=t.params&&typeof t.params==`object`&&!Array.isArray(t.params)?t.params:{},r=this.buildInterpolationContext();return e.replace(/\$\{(param|ctx)\.([\w.]+)\}/g,(e,t,i)=>{let a=re(t===`param`?n:r,i);return a==null?``:encodeURIComponent(String(a))})}buildInterpolationContext(){let e={origin:typeof window<`u`?window.location.origin:``,apiBase:typeof this.context.apiBase==`string`?this.context.apiBase.replace(/\/+$/,``):``,user:this.context.user??{},org:this.context.org??this.context.organization??{},recordId:this.context.record?.id??this.context.recordId};return this.context.ctx&&typeof this.context.ctx==`object`&&Object.assign(e,this.context.ctx),e}updateContext(e){this.context={...this.context,...e},this.evaluator.updateContext(e)}getContext(){return this.context}getEvaluator(){return this.evaluator}};function re(e,t){if(e!=null)return t.split(`.`).reduce((e,t)=>{if(e!=null)return e[t]},e)}function ie(e){return/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/.test(e)}function ae(e){return{type:`app`,name:e.name,title:e.title,label:e.title,description:e.description,icon:e.icon,logo:e.branding.logo,favicon:e.branding.favicon,branding:e.branding,layout:e.layout,navigation:e.navigation}}function oe(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.name==`string`&&typeof t.objectName==`string`&&Array.isArray(t.columns)}function se(e){if(!oe(e))return!1;let t=e;return t.type===`joined`&&Array.isArray(t.blocks)}var ce=[`list_toolbar`,`list_item`,`record_header`,`record_more`,`record_related`,`record_section`,`global_nav`];r(ce);function le(e){return e.toLowerCase().split(`+`).map(e=>e.trim()).sort().join(`+`)}var ue=class{actions=new Map;mappings=[];shortcuts=[];normalizedShortcutMap=new Map;runner;constructor(e={}){this.runner=e instanceof j?e:new j(e)}getRunner(){return this.runner}registerAction(e,t){let n=e.name||e.type||``;if(!n)throw Error(`Action must have a name or type`);this.actions.set(n,{action:e,locations:t?.locations||[],shortcut:t?.shortcut,bulkEnabled:t?.bulkEnabled??!1,priority:t?.priority??100}),t?.shortcut&&(this.shortcuts.push({keys:t.shortcut,actionName:n}),this.normalizedShortcutMap.set(le(t.shortcut),n))}registerActions(e){for(let t of e)this.registerAction(t,{locations:t.locations,shortcut:t.shortcut,bulkEnabled:t.bulkEnabled})}unregisterAction(e){let t=this.actions.get(e);t?.shortcut&&this.normalizedShortcutMap.delete(le(t.shortcut)),this.actions.delete(e),this.shortcuts=this.shortcuts.filter(t=>t.actionName!==e),this.mappings=this.mappings.filter(t=>t.actionName!==e)}addMapping(e){this.mappings.push(e)}getActionsForLocation(e){let t=this.runner.getEvaluator();return Array.from(this.actions.values()).filter(t=>t.locations.includes(e)).filter(e=>{let n=e.action.visible;if(n==null||n===``||n===!0)return!0;if(n===!1)return!1;let r;if(typeof n==`string`)r=`\${${n}}`;else if(typeof n==`object`&&typeof n.source==`string`){let e=n.source;if(!e)return!0;r=`\${${e}}`}else r=!!n;try{return t.evaluateCondition(r,{throwOnError:!0})}catch{return!1}}).sort((e,t)=>(e.priority??100)-(t.priority??100)).map(e=>e.action)}getBulkActions(){return Array.from(this.actions.values()).filter(e=>e.bulkEnabled).sort((e,t)=>(e.priority??100)-(t.priority??100)).map(e=>e.action)}getShortcuts(){return[...this.shortcuts]}getAction(e){return this.actions.get(e)?.action}async executeAction(e,t){let n=this.actions.get(e);return n?(t&&this.runner.updateContext(t),this.runner.execute(n.action)):{success:!1,error:`Action not found: ${e}`}}async dispatch(e,t){let n=this.mappings.filter(t=>t.event===e);if(n.length===0)return[];let r=[];for(let e of n){if(e.condition&&!this.runner.getEvaluator().evaluateCondition(e.condition))continue;let n=await this.executeAction(e.actionName,t);r.push(n)}return r}async handleShortcut(e,t){let n=this.normalizedShortcutMap.get(le(e));return n?this.executeAction(n,t):null}async executeBulk(e,t,n){let r=this.actions.get(e);if(!r)return{total:0,succeeded:0,failed:0,results:[{success:!1,error:`Action not found: ${e}`}]};if(!r.bulkEnabled)return{total:0,succeeded:0,failed:0,results:[{success:!1,error:`Action ${e} does not support bulk operations`}]};let i=[],a=0,o=0;if(n?.parallel){let e=t.map(e=>(this.runner.updateContext({record:e,selectedRecords:t}),this.runner.execute(r.action))),n=await Promise.allSettled(e);for(let e of n)e.status===`fulfilled`?(i.push(e.value),e.value.success?a++:o++):(i.push({success:!1,error:e.reason?.message||`Unknown error`}),o++)}else for(let e of t){this.runner.updateContext({record:e,selectedRecords:t});let s=await this.runner.execute(r.action);if(i.push(s),s.success)a++;else if(o++,!n?.continueOnError)break}return{total:t.length,succeeded:a,failed:o,results:i}}updateContext(e){this.runner.updateContext(e)}clear(){this.actions.clear(),this.mappings=[],this.shortcuts=[],this.normalizedShortcutMap.clear()}};function de(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&typeof t.type==`string`&&typeof t.objectName==`string`&&typeof t.recordId==`string`&&typeof t.timestamp==`number`}var M=new class e{undoStack=[];redoStack=[];maxHistory;listeners=new Set;constructor(e){this.maxHistory=e?.maxHistory??50}push(e){this.undoStack.push(e),this.undoStack.length>this.maxHistory&&this.undoStack.shift(),this.redoStack=[],this.notify()}peekUndo(){return this.undoStack[this.undoStack.length-1]}peekRedo(){return this.redoStack[this.redoStack.length-1]}popUndo(){let e=this.undoStack.pop();return e&&(this.redoStack.push(e),this.notify()),e}popRedo(){let e=this.redoStack.pop();return e&&(this.undoStack.push(e),this.notify()),e}clear(){this.undoStack=[],this.redoStack=[],this.notify()}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get undoCount(){return this.undoStack.length}get redoCount(){return this.redoStack.length}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getHistory(){return[...this.undoStack]}getRedoHistory(){return[...this.redoStack]}pushBatch(e){e.length!==0&&(this.undoStack.push(...e),this.undoStack.length>this.maxHistory&&this.undoStack.splice(0,this.undoStack.length-this.maxHistory),this.redoStack=[],this.notify())}popUndoBatch(e){let t=Math.min(e,this.undoStack.length);if(t===0)return[];let n=this.undoStack.splice(this.undoStack.length-t,t);return this.redoStack.push(...n),this.notify(),n}popRedoBatch(e){let t=Math.min(e,this.redoStack.length);if(t===0)return[];let n=this.redoStack.splice(this.redoStack.length-t,t);return this.undoStack.push(...n),this.notify(),n}static STORAGE_KEY=`objectui:undo-history`;saveToStorage(){try{let t=JSON.stringify({undoStack:this.undoStack,redoStack:this.redoStack});localStorage.setItem(e.STORAGE_KEY,t)}catch{}}loadFromStorage(){try{if(typeof localStorage>`u`)return;let t=localStorage.getItem(e.STORAGE_KEY);if(!t)return;let n=JSON.parse(t);Array.isArray(n.undoStack)&&(this.undoStack=n.undoStack.filter(de)),Array.isArray(n.redoStack)&&(this.redoStack=n.redoStack.filter(de)),this.undoStack.length>this.maxHistory&&this.undoStack.splice(0,this.undoStack.length-this.maxHistory),this.notify()}catch{}}notify(){this.listeners.forEach(e=>e())}};async function fe(e,t){let{ids:n,allowBulk:r,offset:i,label:a=`bulk`}=e,o={succeeded:0,failed:0,errors:[]};if(r&&typeof t.bulkCall==`function`)try{let e=await t.bulkCall(n),r=Math.max(0,Math.min(e,n.length));o.succeeded+=r;let s=n.length-r;return s>0&&(o.failed+=s,o.errors.push({id:`batch_${i}`,error:`${s} record${s===1?``:`s`} failed in ${a}`})),o}catch{}return(await Promise.allSettled(n.map(e=>t.perRow(e)))).forEach((e,t)=>{e.status===`fulfilled`?o.succeeded+=1:(o.failed+=1,o.errors.push({id:n[t],error:e.reason instanceof Error?e.reason.message:String(e.reason)}))}),o}function N(e,t){return t?e[t]:e.id??e._id}function pe(e,t){if(!t||t.length===0)return!0;let n=t[0];if(n===`and`)return t.slice(1).every(t=>pe(e,t));if(n===`or`)return t.slice(1).some(t=>pe(e,t));if(t.length===3&&typeof n==`string`){let[n,r,i]=t,a=e[n];switch(r){case`=`:return a===i;case`!=`:return a!==i;case`>`:return a>i;case`>=`:return a>=i;case`<`:return a<i;case`<=`:return a<=i;case`in`:return Array.isArray(i)&&i.includes(a);case`not in`:case`not_in`:case`nin`:case`notin`:return Array.isArray(i)&&!i.includes(a);case`contains`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&e.includes(String(i).toLowerCase())}case`notcontains`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&!e.includes(String(i).toLowerCase())}case`startswith`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&e.startsWith(String(i).toLowerCase())}case`between`:return Array.isArray(i)&&i.length===2&&a>=i[0]&&a<=i[1];default:return!0}}return!0}function me(e,t){for(let[n,r]of Object.entries(t)){let t=e[n];if(r&&typeof r==`object`&&!Array.isArray(r))for(let[e,n]of Object.entries(r))switch(e){case`$gt`:if(!(t>n))return!1;break;case`$gte`:if(!(t>=n))return!1;break;case`$lt`:if(!(t<n))return!1;break;case`$lte`:if(!(t<=n))return!1;break;case`$ne`:if(t===n)return!1;break;case`$in`:if(!Array.isArray(n)||!n.includes(t))return!1;break;case`$contains`:if(typeof t!=`string`||!t.toLowerCase().includes(String(n).toLowerCase()))return!1;break;default:break}else if(t!==r)return!1}return!0}function he(e,t){if(!t)return e;let n=[];return Array.isArray(t)?n=t.map(e=>typeof e==`string`?e.startsWith(`-`)?{field:e.slice(1),order:`desc`}:{field:e,order:`asc`}:{field:e.field,order:e.order??`asc`}):typeof t==`object`&&(n=Object.entries(t).map(([e,t])=>({field:e,order:t}))),n.length===0?e:[...e].sort((e,t)=>{for(let{field:r,order:i}of n){let n=e[r],a=t[r];if(n===a)continue;if(n==null)return i===`asc`?-1:1;if(a==null)return i===`asc`?1:-1;let o=n<a?-1:1;return i===`asc`?o:-o}return 0})}function ge(e,t){if(!t||t.length===0)return e;let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}var _e=class{items;idField;mutationListeners=new Set;constructor(e){this.items=JSON.parse(JSON.stringify(e.items)),this.idField=e.idField}emitMutation(e){for(let t of this.mutationListeners)try{t(e)}catch(e){console.warn(`ValueDataSource: mutation listener error`,e)}}async find(e,t){let n=[...this.items];if(t?.$filter&&(Array.isArray(t.$filter)&&t.$filter.length>0?n=n.filter(e=>pe(e,t.$filter)):!Array.isArray(t.$filter)&&Object.keys(t.$filter).length>0&&(n=n.filter(e=>me(e,t.$filter)))),t?.$search){let e=t.$search.toLowerCase();n=n.filter(t=>Object.values(t).some(t=>typeof t==`string`&&t.toLowerCase().includes(e)))}let r=n.length;n=he(n,t?.$orderby);let i=t?.$skip??0,a=t?.$top;return i>0&&(n=n.slice(i)),a!==void 0&&(n=n.slice(0,a)),t?.$select?.length&&(n=n.map(e=>ge(e,t.$select))),{data:n,total:r,hasMore:i+(a??n.length)<r}}async findOne(e,t,n){let r=this.items.find(e=>String(N(e,this.idField))===String(t));return r?n?.$select?.length?ge(r,n.$select):{...r}:null}async create(e,t){let n={...t};if(!N(n,this.idField)){let e=this.idField??`id`;n[e]=`auto_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}return this.items.push(n),this.emitMutation({type:`create`,resource:e,record:{...n}}),{...n}}async update(e,t,n){let r=this.items.findIndex(e=>String(N(e,this.idField))===String(t));if(r===-1)throw Error(`ValueDataSource: Record with id "${t}" not found`);return this.items[r]={...this.items[r],...n},this.emitMutation({type:`update`,resource:e,id:t,record:{...this.items[r]}}),{...this.items[r]}}async delete(e,t){let n=this.items.findIndex(e=>String(N(e,this.idField))===String(t));return n===-1?!1:(this.items.splice(n,1),this.emitMutation({type:`delete`,resource:e,id:t}),!0)}async bulk(e,t,n){let r=[];for(let i of n)switch(t){case`create`:r.push(await this.create(e,i));break;case`update`:{let t=N(i,this.idField);t!==void 0&&r.push(await this.update(e,t,i));break}case`delete`:{let t=N(i,this.idField);t!==void 0&&await this.delete(e,t);break}}return r}async getObjectSchema(e){if(this.items.length===0)return{name:e,fields:{}};let t=this.items[0],n={};for(let[e,r]of Object.entries(t))n[e]={type:typeof r};return{name:e,fields:n}}async getView(e,t){return null}async getApp(e){return null}async aggregate(e,t){let{field:n,function:r,groupBy:i}=t,a={};for(let e of this.items){let t=String(e[i]??`Unknown`);a[t]||(a[t]=[]),a[t].push(e)}return Object.entries(a).map(([e,t])=>{let a=t.map(e=>Number(e[n])||0),o;switch(r){case`count`:o=t.length;break;case`avg`:o=a.length>0?a.reduce((e,t)=>e+t,0)/a.length:0;break;case`min`:o=a.length>0?Math.min(...a):0;break;case`max`:o=a.length>0?Math.max(...a):0;break;default:o=a.reduce((e,t)=>e+t,0);break}return{[i]:e,[n]:o}})}onMutation(e){return this.mutationListeners.add(e),()=>{this.mutationListeners.delete(e)}}get count(){return this.items.length}getAll(){return JSON.parse(JSON.stringify(this.items))}},P=`https://objectui.dev/docs/errors`,ve={"OBJUI-001":{code:`OBJUI-001`,message:'Unknown component type: "${type}"',suggestion:`Ensure the component is registered via registry.register() before rendering. Check for typos in the component type name.`,docUrl:`${P}/OBJUI-001`},"OBJUI-002":{code:`OBJUI-002`,message:"Schema validation failed: ${reason}",suggestion:`Verify the schema against the ObjectUI JSON spec. Run the built-in schema validator for details.`,docUrl:`${P}/OBJUI-002`},"OBJUI-003":{code:`OBJUI-003`,message:"Expression evaluation failed: ${expression}",suggestion:`Check the expression syntax and ensure all referenced variables exist in the current data scope.`,docUrl:`${P}/OBJUI-003`},"OBJUI-004":{code:`OBJUI-004`,message:'Plugin dependency missing: "${dependency}"',suggestion:`Install the required dependency and register it before loading this plugin.`,docUrl:`${P}/OBJUI-004`},"OBJUI-005":{code:`OBJUI-005`,message:'Plugin already loaded: "${plugin}"',suggestion:`A plugin with the same name is already registered. Remove the duplicate or use a unique plugin name.`,docUrl:`${P}/OBJUI-005`},"OBJUI-006":{code:`OBJUI-006`,message:'Plugin not found: "${plugin}"',suggestion:`Verify the plugin name and ensure it has been registered before access.`,docUrl:`${P}/OBJUI-006`},"OBJUI-007":{code:`OBJUI-007`,message:'Registry namespace deprecated: "${namespace}"',suggestion:`Migrate to the new namespace format. See the migration guide for details.`,docUrl:`${P}/OBJUI-007`},"OBJUI-008":{code:`OBJUI-008`,message:'Read-only scope violation: "${scope}"',suggestion:`You are trying to mutate a read-only data scope. Use a writable scope or clone the data before modifying.`,docUrl:`${P}/OBJUI-008`},"OBJUI-009":{code:`OBJUI-009`,message:'Invalid field configuration: "${field}"',suggestion:`Check the field schema for required properties (type, name). Ensure the field widget is registered.`,docUrl:`${P}/OBJUI-009`},"OBJUI-010":{code:`OBJUI-010`,message:'Action execution failed: "${action}"',suggestion:`Verify the action handler is registered and that all required parameters are provided.`,docUrl:`${P}/OBJUI-010`}},ye=class extends Error{code;details;constructor(e,t,n){super(e),this.code=t,this.details=n,this.name=`ObjectUIError`,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details,stack:this.stack}}};function be(e){return e instanceof ye}var F=`__debug`;function xe(e){let t=e;if(t===void 0)try{t=typeof window<`u`?window.location.search:``}catch{t=``}let n=new URLSearchParams(t),r=n.has(F),i=n.has(`${F}_schema`),a=n.has(`${F}_perf`),o=n.has(`${F}_data`),s=n.has(`${F}_expr`),c=n.has(`${F}_events`),l=n.has(`${F}_registry`);return{enabled:r||i||a||o||s||c||l,...i&&{schema:i},...a&&{perf:a},...o&&{data:o},...s&&{expr:s},...c&&{events:c},...l&&{registry:l}}}function Se(){try{if(typeof window<`u`)try{if(xe(window.location.search).enabled)return!0}catch{}let e=typeof globalThis<`u`&&globalThis.OBJECTUI_DEBUG;return e===!0||e===`true`||globalThis.process?.env?.OBJECTUI_DEBUG===`true`}catch{return!1}}function Ce(e,t,n){Se()&&(n===void 0?console.log(`[ObjectUI Debug][${e}] ${t}`):console.log(`[ObjectUI Debug][${e}] ${t}`,n))}var we=new Map;function Te(e){Se()&&we.set(e,performance.now())}function Ee(e){if(!Se())return;let t=we.get(e);if(t!==void 0){let n=(performance.now()-t).toFixed(2);console.log(`[ObjectUI Debug][perf] ${e}: ${n}ms`),we.delete(e)}}var De=200,Oe=class e{static instance=null;entries=[];subscribers=new Set;static getInstance(){return e.instance||=new e,e.instance}static resetInstance(){e.instance=null}addPerf(e){this.push({kind:`perf`,data:e})}addExpr(e){this.push({kind:`expr`,data:e})}addEvent(e){this.push({kind:`event`,data:e})}getEntries(e){return e?this.entries.filter(t=>t.kind===e):this.entries.slice()}clear(){this.entries=[]}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}push(e){this.entries.push(e),this.entries.length>De&&(this.entries=this.entries.slice(-200));for(let t of this.subscribers)try{t(e)}catch{}}},ke=/\$\{event\.([a-zA-Z0-9_]+)\}/g;function Ae(e,t){return typeof e!=`string`||e.indexOf("${event.")===-1?e:e.replace(ke,(e,n)=>{let r=t[n];return r==null?``:String(r)})}function je(e,t){if(typeof e==`string`){let n=e.match(/^\$\{event\.([a-zA-Z0-9_]+)\}$/);if(n){let e=t[n[1]];return e===``||e===void 0?null:e}return Ae(e,t)}if(Array.isArray(e))return e.map(e=>je(e,t));if(e&&typeof e==`object`){let n={};for(let[r,i]of Object.entries(e))n[r]=je(i,t);return n}return e}function Me(e,t,n={}){if(e?.filter)return je(e.filter,t);let r={},{rowField:i,columnField:a,groupByField:o}=n,s=t.scope??`cell`;return s===`total`?r:((s===`cell`||s===`row`)&&i&&`rowKey`in t&&(r[i]=t.rowKey===``?null:t.rowKey),(s===`cell`||s===`column`)&&a&&`colKey`in t&&(r[a]=t.colKey===``?null:t.colKey),o&&`category`in t&&(r[o]=t.category===``?null:t.category),r)}function Ne(e,t,n=`Details`){if(e?.title){let n=Ae(e.title,t).trim();if(n)return n}let r=[];return t.rowLabel&&r.push(t.rowLabel),t.colLabel&&r.push(t.colLabel),t.categoryLabel?r.push(t.categoryLabel):t.category&&r.push(t.category),t.series&&r.push(t.series),r.length>0?r.join(` × `):n}function Pe(e){return e?e.enabled!==!1:!1}function Fe(e,t=new Date){if(e==null)return e;let n=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t},r=e=>{let t=n(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`},i=e=>{let t=n(e),r=(t.getDay()+6)%7;return t.setDate(t.getDate()-r),t},a=e=>new Date(e.getFullYear(),e.getMonth(),1),o=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},s=e=>new Date(e.getFullYear(),0,1),c=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,1),l=(e,t)=>{let r=n(e);return r.setDate(r.getDate()+t),r},u=e=>l(c(a(e),1),-1),d=e=>l(i(e),6),f=e=>l(c(o(e),3),-1),p=e=>new Date(e.getFullYear(),11,31),m={today:()=>r(t),yesterday:()=>r(l(t,-1)),tomorrow:()=>r(l(t,1)),now:()=>t.toISOString(),current_week_start:()=>r(i(t)),current_week_end:()=>r(d(t)),current_month_start:()=>r(a(t)),current_month_end:()=>r(u(t)),current_quarter_start:()=>r(o(t)),current_quarter_end:()=>r(f(t)),current_year_start:()=>r(s(t)),current_year_end:()=>r(p(t)),last_week_start:()=>r(l(i(t),-7)),last_week_end:()=>r(l(i(t),-1)),last_month_start:()=>r(c(a(t),-1)),last_month_end:()=>r(l(a(t),-1)),last_quarter_start:()=>r(c(o(t),-3)),last_quarter_end:()=>r(l(o(t),-1)),last_year_start:()=>r(new Date(t.getFullYear()-1,0,1)),last_year_end:()=>r(new Date(t.getFullYear()-1,11,31)),next_week_start:()=>r(l(i(t),7)),next_month_start:()=>r(c(a(t),1)),next_quarter_start:()=>r(c(o(t),3)),next_year_start:()=>r(new Date(t.getFullYear()+1,0,1))};for(let[e,t]of Object.entries({week_start:`current_week_start`,week_end:`current_week_end`,month_start:`current_month_start`,month_end:`current_month_end`,quarter_start:`current_quarter_start`,quarter_end:`current_quarter_end`,year_start:`current_year_start`,year_end:`current_year_end`}))m[e]=m[t];let h=/^(\d+)_(minutes?|hours?|days?|weeks?|months?|years?)_(ago|from_now)$/,g=e=>{let n=e.match(h);if(!n)return null;let i=parseInt(n[1],10);if(!Number.isFinite(i))return null;let a=n[3]===`ago`?-1:1,o=n[2].replace(/s$/,``);return o===`minute`?new Date(t.getTime()+a*i*60*1e3).toISOString():o===`hour`?new Date(t.getTime()+a*i*60*60*1e3).toISOString():o===`day`?r(l(t,a*i)):o===`week`?r(l(t,a*i*7)):o===`month`?r(new Date(t.getFullYear(),t.getMonth()+a*i,t.getDate())):o===`year`?r(new Date(t.getFullYear()+a*i,t.getMonth(),t.getDate())):null},_=/\$?\{([a-zA-Z0-9_]+)\}/g,v=e=>{if(e==null)return e;if(typeof e==`string`){let t=e.match(/^\$?\{([a-zA-Z0-9_]+)\}$/);if(t){let e=t[1];if(m[e])return m[e]();let n=g(e);if(n!=null)return n}let n=!1,r=e.replace(_,(e,t)=>{if(m[t])return n=!0,m[t]();let r=g(t);return r==null?e:(n=!0,r)});return n?r:e}if(Array.isArray(e))return e.map(v);if(typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=v(e[n]);return t}return e};return v(e)}var Ie={current_week_start:`last_week_start`,current_week_end:`last_week_end`,current_month_start:`last_month_start`,current_month_end:`last_month_end`,current_quarter_start:`last_quarter_start`,current_quarter_end:`last_quarter_end`,current_year_start:`last_year_start`,current_year_end:`last_year_end`,week_start:`last_week_start`,week_end:`last_week_end`,month_start:`last_month_start`,month_end:`last_month_end`,quarter_start:`last_quarter_start`,quarter_end:`last_quarter_end`,year_start:`last_year_start`,year_end:`last_year_end`,today:`yesterday`};function Le(e,t){if(e==null)return e;if(typeof e==`string`)return e.replace(/\$?\{([a-zA-Z0-9_]+)\}/g,(e,n)=>{let r=t[n];return r?`{${r}}`:e});if(Array.isArray(e))return e.map(e=>Le(e,t));if(typeof e==`object`){let n={};for(let r of Object.keys(e))n[r]=Le(e[r],t);return n}return e}function Re(e,t){let n=t.match(/^(\d+)([dwMy])$/);if(!n)return null;let r=parseInt(n[1],10),i=n[2],a=new Date(e);if(i===`d`)a.setDate(a.getDate()-r);else if(i===`w`)a.setDate(a.getDate()-r*7);else if(i===`M`)a.setMonth(a.getMonth()-r);else if(i===`y`)a.setFullYear(a.getFullYear()-r);else return null;return a}function ze(e,t,n=new Date){if(t===`previousYear`)return Fe(e,new Date(n.getFullYear()-1,n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()));if(typeof t==`object`&&t&&`offset`in t){let r=Re(n,t.offset);return r?Fe(e,r):Fe(e,n)}return Fe(Le(e,Ie),n)}function Be(e,t){if(e===`previousYear`)return`vsLastYear`;if(typeof e==`object`&&e&&`offset`in e)return`vsPreviousPeriod`;let n=t?JSON.stringify(t):``;return/current_year_|year_start|year_end/.test(n)?`vsLastYear`:/current_quarter_|quarter_start|quarter_end/.test(n)?`vsLastQuarter`:/current_month_|month_start|month_end/.test(n)?`vsLastMonth`:/current_week_|week_start|week_end/.test(n)?`vsLastWeek`:/\btoday\b/.test(n)?`vsYesterday`:`vsPreviousPeriod`}var I=e(n(),1),L=t(),Ve=(0,I.createContext)(null),He=({children:e,dataSource:t,debug:n,debugFlags:r})=>{let i=(0,I.useMemo)(()=>({dataSource:t,debug:n,debugFlags:r}),[t,n,r]);return(0,L.jsx)(Ve.Provider,{value:i,children:e})},Ue=()=>{let e=(0,I.useContext)(Ve);if(!e)throw Error(`useSchemaContext must be used within a SchemaRendererProvider`);return e},We=e=>{let t=(0,I.useContext)(Ve)?.dataSource;if(e&&t)return e.split(`.`).reduce((e,t)=>e&&e[t],t)};function Ge(e){if(e!=null)return typeof e==`string`?e:e.defaultValue||e.key}var Ke=(()=>{try{return!1}catch{return!0}})(),qe=typeof WeakMap<`u`?new WeakMap:{set(){},get(){},has(){return!1}},Je=typeof WeakSet<`u`?new WeakSet:{add(){},has(){return!1}};function Ye(e){if(!Ke||!e||typeof e!=`object`)return{valid:!0,messages:[]};let t=qe.get(e);if(t)return t;let n={valid:!0,messages:[]};try{let t=m(e);if(!t.valid){let r=t.errors.map(e=>`${e.path}: ${e.message}`);n={valid:!1,messages:r},Je.has(e)||(Je.add(e),console.warn(`[ObjectUI] Invalid schema detected:
|
|
3
|
+
`+r.join(`
|
|
4
|
+
`),e))}}catch(t){Je.has(e)||(Je.add(e),console.warn(`[ObjectUI] Schema validator threw:`,t))}return qe.set(e,n),n}function Xe(e){let t={};return e.ariaLabel&&(t[`aria-label`]=Ge(e.ariaLabel)),e.ariaDescribedBy&&(t[`aria-describedby`]=e.ariaDescribedBy),e.role&&(t.role=e.role),t}var Ze=class extends I.Component{state={hasError:!1,error:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidUpdate(e){this.state.hasError&&(e.componentType!==this.props.componentType||e.resetKey!==this.props.resetKey)&&this.setState({hasError:!1,error:null})}handleRetry=()=>{this.setState({hasError:!1,error:null})};render(){if(this.state.hasError&&this.state.error){let e=this.state.error;return be(e),(0,L.jsxs)(`div`,{className:`p-4 border border-orange-400 rounded bg-orange-50 text-orange-700 my-2`,role:`alert`,children:[(0,L.jsxs)(`p`,{className:`font-medium`,children:[`Component`,this.props.componentType?` "${this.props.componentType}"`:``,` failed to render`]}),(0,L.jsx)(`p`,{className:`text-sm mt-1`,children:e.message}),!1,(0,L.jsx)(`button`,{onClick:this.handleRetry,className:`mt-2 text-sm underline hover:no-underline`,children:`Retry`})]})}return this.props.children}},Qe=(0,I.forwardRef)(({schema:e,...t},n)=>{let r=(0,I.useContext)(Ve),i=r?.dataSource||{},[,a]=(0,I.useReducer)(e=>e+1,0);(0,I.useEffect)(()=>{let e=c.subscribe(a);return a(),e},[]);let[o,s]=(0,I.useState)(null),l=(0,I.useMemo)(()=>{if(!e||typeof e==`string`)return e;let t=new O({data:i}),n={...e};if(n.properties){let e=n.type,t=n.id,r=n.properties;for(let[e,t]of Object.entries(r))e===`type`||e===`id`||(n[e]=t);e!==void 0&&(n.type=e),t!==void 0&&(n.id=t),n.properties=r}if(typeof n.content==`string`&&(n.content=t.evaluate(n.content)),n.props){let e={...n.props};for(let[n,r]of Object.entries(e))e[n]=t.evaluate(r);n.props=e}return(n.visible===void 0?n.visibleOn===void 0?n.hidden===void 0?n.hiddenOn!==void 0&&t.evaluateCondition(n.hiddenOn):t.evaluateCondition(n.hidden):!t.evaluateCondition(n.visibleOn):!t.evaluateCondition(n.visible))&&(n._hidden=!0),(n.disabled===void 0?n.disabledOn!==void 0&&t.evaluateCondition(n.disabledOn):t.evaluateCondition(n.disabled))&&(n._disabled=!0),n},[e,i]);if(!l||l?._hidden)return null;if(typeof l==`string`)return(0,L.jsx)(L.Fragment,{children:l});let u=Ke?Ye(e):{valid:!0,messages:[]};Ce(`schema`,`Rendering schema node`,{type:l.type,id:l.id});let d=c.get(l.type);if(!d){if(!o&&c.hasLazy(l.type)){let e=c.loadLazy(l.type);if(e)return e.catch(e=>{s(e instanceof Error?e:Error(String(e)))}),(0,L.jsxs)(`div`,{className:`p-2 text-sm text-muted-foreground animate-pulse`,role:`status`,"aria-live":`polite`,"data-lazy-loading":l.type,children:[`Loading `,(0,L.jsx)(`code`,{children:l.type}),`…`]})}return Ce(`schema`,`Component not found in registry`,{type:l.type}),ve[`OBJUI-001`],(0,L.jsxs)(`div`,{className:`p-4 border border-red-500 rounded text-red-500 bg-red-50 my-2`,role:`alert`,children:[(0,L.jsxs)(`p`,{className:`font-medium`,children:[`Unknown component type: `,(0,L.jsx)(`strong`,{children:l.type})]}),o&&(0,L.jsxs)(`p`,{className:`text-xs mt-1`,children:[`Failed to load plugin: `,o.message]}),!1,(0,L.jsx)(`pre`,{className:`text-xs mt-2 overflow-auto`,children:JSON.stringify(l,null,2)})]})}let{type:f,children:p,body:m,schema:h,visible:g,visibleOn:_,hidden:v,hiddenOn:y,disabled:b,disabledOn:x,_hidden:S,_disabled:C,...ee}=l,te=Xe(l),w=r?.debug||r?.debugFlags?.enabled,T={};w&&(T[`data-debug-type`]=l.type,l.id&&(T[`data-debug-id`]=l.id)),Te(`render:${l.type}:${l.id??`anon`}`);let E=w?performance.now():0,D=(0,L.jsx)(Ze,{componentType:l.type,resetKey:l.id??null,children:I.createElement(d,{schema:l,...ee,...l.props||{},...te,...T,disabled:C||void 0,className:l.className,"data-obj-id":l.id,"data-obj-type":l.type,...Ke&&!u.valid?{"data-obj-schema-invalid":`true`}:{},...t})});if(Ee(`render:${l.type}:${l.id??`anon`}`),w&&E){let e=performance.now()-E;Oe.getInstance().addPerf({type:l.type,id:l.id,durationMs:e,timestamp:Date.now()})}return D});Qe.displayName=`SchemaRenderer`;var $e=(0,I.createContext)({});function et({scope:e,children:t}){return(0,I.createElement)($e.Provider,{value:e},t)}function tt(){return(0,I.useContext)($e)}function nt(e){if(!(e==null||e===``)){if(typeof e==`boolean`)return e;if(typeof e==`string`)return`\${${e}}`;if(typeof e==`object`&&typeof e.source==`string`){let t=e.source;return t?`\${${t}}`:void 0}}}function rt(e,t={}){let n=tt();return(0,I.useMemo)(()=>new O({...n,...t}).evaluateCondition(e),[e,t,n])}function it(e={}){let{context:t={},onConfirm:n,onToast:r,onModal:i,onNavigate:a,onParamCollection:o,onResultDialog:s}=`context`in e?e:{context:e},[c,l]=(0,I.useState)(!1),[u,d]=(0,I.useState)(null),[f,p]=(0,I.useState)(null),m=(0,I.useMemo)(()=>{let e=new j(t);return n&&e.setConfirmHandler(n),r&&e.setToastHandler(r),i&&e.setModalHandler(i),a&&e.setNavigationHandler(a),o&&e.setParamCollectionHandler(o),s&&e.setResultDialogHandler(s),e},[JSON.stringify(t)]);return{execute:(0,I.useCallback)(async e=>{l(!0),d(null),p(null);try{let t=await m.execute(e);return p(t),t.success||d(t.error||`Action failed`),t}catch(e){let t=e.message;d(t);let n={success:!1,error:t};return p(n),n}finally{l(!1)}},[m]),loading:c,error:u,result:f,updateContext:(0,I.useCallback)(e=>{m.updateContext(e)},[m]),runner:m}}function at(e){let{navigation:t,objectName:n,onNavigate:r,onRowClick:i}=e,[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(null),l=t?.mode??`page`,u=t?.width,d=t?.view,f=l===`drawer`||l===`modal`||l===`split`||l===`popover`,p=(0,I.useCallback)(()=>{o(!1),c(null)},[]),m=(0,I.useCallback)(e=>{c(e),o(!0)},[]),h=(0,I.useCallback)((e,a)=>{if(i){i(e,a);return}if(a&&(a.metaKey||a.ctrlKey||a.button===1)){let t=e.id||e._id;if(r&&t!=null){r(t,`new_window`);return}}if(!t){let t=e.id||e._id;r&&t!=null&&r(t,d??`view`);return}if(!(l===`none`||t.preventNavigation)){if(l===`new_window`||t.openNewTab){let t=e.id||e._id;if(r&&t!=null){r(t,`new_window`);return}let i=encodeURIComponent(String(t)),a=n?`/${n}/record/${i}`:`/${i}`;window.open(a,`_blank`);return}if(l===`page`){let t=e.id||e._id;r&&t!=null&&r(t,d??`view`);return}if(f){c(e),o(!0);return}}},[i,t,l,n,r,f,d]);return(0,I.useMemo)(()=>({isOpen:a,selectedRecord:s,mode:l,close:p,open:m,setIsOpen:o,handleClick:h,width:u,view:d,isOverlay:f}),[a,s,l,p,m,h,u,d,f])}var ot=(0,I.createContext)(null);function st(e){if(!e||e.length===0)return{};let t={};for(let n of e)if(n.defaultValue!==void 0)t[n.name]=n.defaultValue;else switch(n.type){case`number`:t[n.name]=0;break;case`boolean`:t[n.name]=!1;break;case`object`:t[n.name]={};break;case`array`:t[n.name]=[];break;default:t[n.name]=``;break}return t}var ct=({definitions:e,children:t})=>{let[n,r]=(0,I.useState)(()=>st(e)),i=(0,I.useCallback)((e,t)=>{r(n=>({...n,[e]:t}))},[]),a=(0,I.useCallback)(e=>{r(t=>({...t,...e}))},[]),o=(0,I.useCallback)(()=>{r(st(e))},[e]),s=(0,I.useMemo)(()=>({variables:n,setVariable:i,setVariables:a,resetVariables:o}),[n,i,a,o]);return(0,L.jsx)(ot.Provider,{value:s,children:t})};ct.displayName=`PageVariablesProvider`;function lt(){let e=(0,I.useContext)(Ve)?.dataSource,[t,n]=(0,I.useState)(null),[r,i]=(0,I.useState)(!0),[a,o]=(0,I.useState)(null);return(0,I.useEffect)(()=>{let t=!1;async function r(){if(!e){i(!1);return}try{if(i(!0),typeof e.getDiscovery==`function`){let r=await e.getDiscovery();t||(n(r),o(null))}else t||(n(null),o(null))}catch(e){t||(o(e instanceof Error?e:Error(`Failed to fetch discovery`)),n(null))}finally{t||i(!1)}}return r(),()=>{t=!0}},[e]),{discovery:t,isLoading:r,error:a,isAuthEnabled:t?.services?.auth?.enabled??!0,isAiEnabled:t?.services?.ai?.enabled===!0&&t?.services?.ai?.status===`available`}}[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`, `);var ut={compact:32,comfortable:40,spacious:52},dt={compact:`py-1 px-2`,comfortable:`py-2 px-3`,spacious:`py-3 px-4`},ft={compact:`text-xs`,comfortable:`text-sm`,spacious:`text-base`},pt=[`compact`,`comfortable`,`spacious`];function mt(e=`comfortable`,t){let[n,r]=(0,I.useState)(e),i=t?.rowHeights??ut,a=t?.paddingClasses??dt,o=t?.fontSizeClasses??ft,s=(0,I.useRef)(t?.onChange);(0,I.useEffect)(()=>{s.current=t?.onChange},[t?.onChange]);let c=(0,I.useRef)(e);(0,I.useEffect)(()=>{e!==c.current&&(c.current=e,r(e))},[e]);let l=(0,I.useCallback)(e=>{r(t=>t===e?t:(queueMicrotask(()=>s.current?.(e)),e))},[]),u=(0,I.useCallback)(()=>{r(e=>{let t=pt[(pt.indexOf(e)+1)%pt.length];return queueMicrotask(()=>s.current?.(t)),t})},[]);return(0,I.useMemo)(()=>({mode:n,setMode:l,cycle:u,rowHeight:i[n],paddingClass:a[n],fontSizeClass:o[n]}),[n,l,u,i,a,o])}var ht=0,gt=(0,I.createContext)(null),_t=({children:e,config:t={},onToast:n})=>{let r=(0,I.useMemo)(()=>({position:`top-right`,defaultDuration:5e3,maxVisible:5,stacking:!0,...t}),[JSON.stringify(t)]),[i,a]=(0,I.useState)([]),o=(0,I.useCallback)(e=>{let t=`notification-${++ht}`,i={...e,id:t,createdAt:new Date,read:!1};a(e=>[i,...e]),n&&n(i);let o=e.duration??r.defaultDuration??5e3;return o>0&&setTimeout(()=>{a(e=>e.filter(e=>e.id!==t))},o),t},[r.defaultDuration,n]),s=(0,I.useCallback)((e,t)=>o({title:e,message:t,severity:`info`}),[o]),c=(0,I.useCallback)((e,t)=>o({title:e,message:t,severity:`success`}),[o]),l=(0,I.useCallback)((e,t)=>o({title:e,message:t,severity:`warning`}),[o]),u=(0,I.useCallback)((e,t)=>o({title:e,message:t,severity:`error`}),[o]),d=(0,I.useCallback)(e=>{a(t=>t.map(t=>t.id===e?{...t,read:!0}:t))},[]),f=(0,I.useCallback)(()=>{a(e=>e.map(e=>({...e,read:!0})))},[]),p=(0,I.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),m=(0,I.useCallback)(()=>{a([])},[]),h=(0,I.useMemo)(()=>i.filter(e=>!e.read).length,[i]),g=(0,I.useMemo)(()=>({notifications:i,unreadCount:h,notify:o,info:s,success:c,warning:l,error:u,markAsRead:d,markAllAsRead:f,dismiss:p,clearAll:m,config:r}),[i,h,o,s,c,l,u,d,f,p,m,r]);return(0,L.jsx)(gt.Provider,{value:g,children:e})};_t.displayName=`NotificationProvider`;function vt(e){return typeof window>`u`?()=>{}:(window.addEventListener(`online`,e),window.addEventListener(`offline`,e),()=>{window.removeEventListener(`online`,e),window.removeEventListener(`offline`,e)})}function yt(){return typeof navigator<`u`?navigator.onLine:!0}function bt(){return!0}var xt=`objectui-offline-queue`;function St(){if(typeof localStorage>`u`)return[];try{let e=localStorage.getItem(xt);return e?JSON.parse(e):[]}catch{return[]}}function Ct(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(xt,JSON.stringify(e))}catch{}}var wt=0;function Tt(){return wt+=1,`mut_${Date.now()}_${wt}`}var Et={enabled:!0,strategy:`network_first`,offlineIndicator:!0,offlineMessage:`You are currently offline. Changes will be synced when reconnected.`,queueMaxSize:100};function Dt(e={}){let{enabled:t=Et.enabled,strategy:n=Et.strategy,offlineIndicator:r=Et.offlineIndicator,offlineMessage:i=Et.offlineMessage,queueMaxSize:a=Et.queueMaxSize,sync:o}=e,s=(0,I.useSyncExternalStore)(vt,yt,bt),[c,l]=(0,I.useState)(St),[u,d]=(0,I.useState)(`idle`),f=(0,I.useRef)(o);f.current=o,(0,I.useEffect)(()=>{Ct(c)},[c]),(0,I.useEffect)(()=>{t&&(s?u===`offline`&&d(`idle`):d(`offline`))},[s,t,u]);let p=(0,I.useCallback)(e=>{t&&l(t=>{let n={...e,id:Tt(),timestamp:Date.now()},r=[...t,n];return r.length>a?r.slice(r.length-a):r})},[t,a]),m=(0,I.useCallback)(()=>{l([])},[]),h=(0,I.useCallback)(async()=>{if(!(!t||c.length===0)){d(`syncing`);try{let e=f.current?.batchSize??c.length,t=c.slice(0,e);await new Promise(e=>setTimeout(e,0)),l(e=>e.filter(e=>!t.some(t=>t.id===e.id))),d(`idle`)}catch{d(`error`)}}},[t,c]);return(0,I.useEffect)(()=>{if(!t||!s||c.length===0)return;let e=setTimeout(()=>{h()},100);return()=>clearTimeout(e)},[s,t]),(0,I.useMemo)(()=>({isOnline:s,enabled:t,syncState:u,strategy:n,pendingCount:c.length,queueMutation:p,sync:h,clearQueue:m,showIndicator:r&&!s,offlineMessage:i}),[s,t,u,n,c.length,p,h,m,r,i])}function Ot(){return{canUndo:M.canUndo,canRedo:M.canRedo,undoDescription:M.peekUndo()?.description,redoDescription:M.peekRedo()?.description,history:M.getHistory()}}function kt(){return{canUndo:!1,canRedo:!1,undoDescription:void 0,redoDescription:void 0,history:[]}}var At=Ot();function jt(e){return M.subscribe(()=>{At=Ot(),e()})}function Mt(){return At}function Nt(e={}){let t=(0,I.useRef)(e);t.current=e;let n=(0,I.useSyncExternalStore)(jt,Mt,kt),r=(0,I.useCallback)(async(e,n,r)=>{let i=t.current.dataSource;if(!i)return;let a=r===`undo`?{create:`delete`,update:`update`,delete:`create`}[e.type]:e.type;a===`delete`?await i.delete(e.objectName,e.recordId):a===`update`?await i.update(e.objectName,e.recordId,n):await i.create(e.objectName,n)},[]),i=(0,I.useCallback)(async()=>{let e=M.popUndo();e&&(await r(e,e.undoData,`undo`),t.current.onUndo?.(e))},[r]),a=(0,I.useCallback)(async()=>{let e=M.popRedo();e&&(await r(e,e.redoData,`redo`),t.current.onRedo?.(e))},[r]);return(0,I.useEffect)(()=>{let e=e=>{!(e.ctrlKey||e.metaKey)||e.key.toLowerCase()!==`z`||(e.preventDefault(),e.shiftKey?a():i())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i,a]),(0,I.useMemo)(()=>({...n,undo:i,redo:a}),[n,i,a])}var Pt=(0,I.createContext)(null),Ft=({children:e,context:t={},onConfirm:n,onToast:r,onModal:i,onNavigate:a,onParamCollection:o,onResultDialog:s,handlers:c})=>{let[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),[p,m]=(0,I.useState)(null),h=(0,I.useMemo)(()=>{let e=new j({...t,ctx:t&&typeof t.ctx==`object`?{...t,...t.ctx}:{...t}});return n&&e.setConfirmHandler(n),r&&e.setToastHandler(r),i&&e.setModalHandler(i),a&&e.setNavigationHandler(a),o&&e.setParamCollectionHandler(o),s&&e.setResultDialogHandler(s),c&&Object.entries(c).forEach(([t,n])=>{e.registerHandler(t,n)}),e},[JSON.stringify(t)]),g=(0,I.useCallback)(async e=>{u(!0),f(null),m(null);try{let t=await h.execute(e);return m(t),t.success||f(t.error||`Action failed`),t}catch(e){let t=e.message;f(t);let n={success:!1,error:t};return m(n),n}finally{u(!1)}},[h]),_=(0,I.useCallback)(async(e,t)=>{u(!0),f(null),m(null);try{let n=await h.executeChain(e,t);return m(n),n.success||f(n.error||`Chain failed`),n}catch(e){let t=e.message;f(t);let n={success:!1,error:t};return m(n),n}finally{u(!1)}},[h]),v=(0,I.useCallback)(e=>{h.updateContext(e)},[h]),y=(0,I.useMemo)(()=>({execute:g,executeChain:_,loading:l,error:d,result:p,runner:h,updateContext:v}),[g,_,l,d,p,h,v]);return(0,L.jsx)(Pt.Provider,{value:y,children:e})};Ft.displayName=`ActionProvider`;function It(){let e=(0,I.useContext)(Pt);if(!e){let e=new j;return{execute:t=>e.execute(t),executeChain:(t,n)=>e.executeChain(t,n),loading:!1,error:null,result:null,runner:e,updateContext:t=>e.updateContext(t)}}return e}function Lt(e={}){let{actions:t=[],context:n={}}=e,r=(0,I.useContext)(Pt)?.runner??null,i=(0,I.useMemo)(()=>{let e=n&&Object.keys(n).length>0?{...n,ctx:n.ctx&&typeof n.ctx==`object`?{...n,...n.ctx}:{...n}}:n,i=r?new ue(r):new ue(e);if(r&&n&&Object.keys(n).length>0){let e=i.getRunner(),t=e.getEvaluator().getContext().toObject(),r=t&&typeof t.ctx==`object`?t.ctx:{},a=n.ctx&&typeof n.ctx==`object`?n.ctx:n,o={...n,ctx:{...r,...a}};e.updateContext(o)}return i.registerActions(t),i},[r,JSON.stringify(t),JSON.stringify(n)]);return{getActionsForLocation:(0,I.useCallback)(e=>i.getActionsForLocation(e),[i]),getBulkActions:(0,I.useCallback)(()=>i.getBulkActions(),[i]),executeAction:(0,I.useCallback)((e,t)=>i.executeAction(e,t),[i]),handleShortcut:(0,I.useCallback)(e=>i.handleShortcut(e),[i]),engine:i}}var Rt=(0,I.createContext)(null);function zt(){return(0,I.useContext)(Rt)}var Bt=(0,I.createContext)(null);function Vt(){return(0,I.useContext)(Bt)||{apps:[],objects:[],dashboards:[],reports:[],pages:[],loading:!1,error:null,refresh:async()=>{},invalidate:()=>{},ensureType:async()=>[],getItem:async()=>null,getItemsByType:()=>[]}}function Ht(e,t){let{getItem:n}=Vt(),[r,i]=(0,I.useState)({item:null,loading:!!t,error:null});return(0,I.useEffect)(()=>{if(!t){i({item:null,loading:!1,error:null});return}let r=!1;return i(e=>({...e,loading:!0,error:null})),n(e,t).then(e=>{r||i({item:e,loading:!1,error:null})}).catch(e=>{r||i({item:null,loading:!1,error:e instanceof Error?e:Error(String(e))})}),()=>{r=!0}},[e,t,n]),r}function Ut(e,t){return!0}function Wt(e,t={}){let n=Vt(),[r,i]=(0,I.useState)(!1),[a,o]=(0,I.useState)(null);(0,I.useEffect)(()=>{let e=!1;if(!n.ensureType){i(!0);return}return n.ensureType(`page`).then(()=>{e||(i(!0),o(null))}).catch(t=>{e||(o(t instanceof Error?t:Error(String(t))),i(!0))}),()=>{e=!0}},[n]);let s=(0,I.useMemo)(()=>{if(!e&&!t.pageName)return null;let r=Array.isArray(n.pages)?n.pages:[];if(!r.length)return null;if(t.pageName)return r.find(e=>e?.name===t.pageName)??null;let i=r.filter(n=>!n||(n.pageType??(n.type===`record`?`record`:void 0))!==`record`||n.object!==e?!1:Ut(n,t));return i.length?(i.sort((e,t)=>(t?.priority??0)-(e?.priority??0)),i[0]):null},[n.pages,e,t.pageName,t.recordType,t.profile,t.app,t.formFactor]),{page:c,slots:l}=(0,I.useMemo)(()=>s?s.kind===`slotted`?{page:null,slots:s.slots??{}}:{page:s,slots:null}:{page:null,slots:null},[s]);return{page:c,slots:l,loading:n.loading||!r,error:a??n.error??null}}function Gt(e,t){let n=e?.titleFormat;if(n&&typeof n==`string`){let e=n.replace(/\{\{\s*([\w.]+)\s*\}\}/g,(e,n)=>{let r=n.split(`.`).reduce((e,t)=>e==null?e:e[t],t);return r==null?``:String(r)}).trim();if(e.length>0)return e}return t?.name||t?.full_name||t?.fullName||t?.title||t?.label||t?.subject||t?.id||t?._id||`Untitled`}function Kt(e,t,n){if(!e)return 0;let r=e.toLowerCase(),i=(t||``).toLowerCase();return(n||``).toLowerCase()===r?110:i===r?100:i.startsWith(r)?80:i.split(/[\s_\-/.,:;()[\]]+/).filter(Boolean).some(e=>e.startsWith(r))?60:i.includes(r)?40:0}function qt(e){let{query:t,objects:n,dataSource:r,objectNames:i,maxObjectsQueried:a=8,topPerObject:o=3,minLength:s=2,debounceMs:c=250,enabled:l=!0,getDisplayName:u=Gt}=e,[d,f]=(0,I.useState)([]),[p,m]=(0,I.useState)(!1),[h,g]=(0,I.useState)(void 0),_=(0,I.useMemo)(()=>{if(!Array.isArray(n)||n.length===0)return[];let e=n;if(Array.isArray(i)&&i.length>0){let t=new Map;for(let e of n){let n=e?.name;typeof n==`string`&&t.set(n,e)}e=i.map(e=>t.get(e)).filter(e=>e!=null)}else e=n.filter(e=>e?.searchable!==!1);return e.slice(0,a)},[n,i,a]),v=(0,I.useMemo)(()=>_.map(e=>`${e?.name}:${e?.titleField??``}`).join(`|`),[_]),y=(0,I.useRef)(0);return(0,I.useEffect)(()=>{if(!l||!r||_.length===0){f([]),m(!1),g(void 0);return}let e=(t??``).trim();if(e.length<s){f([]),m(!1),g(void 0);return}let n=++y.current;m(!0),g(void 0);let i=setTimeout(()=>{if(y.current!==n)return;let t=_.map(t=>Promise.resolve().then(()=>r.find(t.name,{$search:e,$top:o})).then(e=>({obj:t,res:e,err:null})).catch(e=>({obj:t,res:null,err:e})));Promise.allSettled(t).then(t=>{if(y.current!==n)return;let r=[],i;for(let n of t){if(n.status!==`fulfilled`)continue;let{obj:t,res:a,err:s}=n.value;if(s){let e=s?.httpStatus??s?.status,t=s?.code;if(e===404||t===`object_not_found`)continue;i=s instanceof Error?s:Error(String(s));continue}let c=Array.isArray(a?.data)?a.data:Array.isArray(a)?a:[];for(let n of c.slice(0,o)){let i=n?.id??n?._id;if(i==null)continue;let a=u(t,n);r.push({objectName:t.name,objectLabel:typeof t.label==`string`&&t.label.length>0?t.label:t.name,recordId:String(i),display:a,icon:t?.icon,score:Kt(e,a,String(i)),raw:n})}}r.sort((e,t)=>t.score-e.score),f(r),m(!1),g(i)})},c);return()=>{clearTimeout(i)}},[t,l,r,v,o,s,c,u]),{results:d,isSearching:p,error:h}}(0,I.createContext)(null);var Jt=(0,I.createContext)(null),Yt=({children:e,config:t={},onDragStart:n,onDrop:r,onDragCancel:i})=>{let a=(0,I.useMemo)(()=>({enabled:!0,showPreview:!0,autoScroll:!0,...t}),[JSON.stringify(t)]),[o,s]=(0,I.useState)(null),[c]=(0,I.useState)(()=>new Map),l=(0,I.useCallback)(e=>{a.enabled&&(s(e),n?.({item:e,targetZoneId:null,effect:`move`}))},[a.enabled,n]),u=(0,I.useCallback)(e=>{if(!o)return;let t=(e?c.get(e):void 0)?.effect??`move`;r?.({item:o,targetZoneId:e??null,effect:t}),s(null)},[o,c,r]),d=(0,I.useCallback)(()=>{o&&(i?.({item:o,targetZoneId:null,effect:`none`}),s(null))},[o,i]),f=(0,I.useCallback)(e=>{c.set(e.id,e)},[c]),p=(0,I.useCallback)(e=>{c.delete(e)},[c]),m=(0,I.useCallback)((e,t)=>{let n=c.get(e);return!n||n.disabled?!1:n.acceptTypes.includes(t)},[c]),h=(0,I.useMemo)(()=>({config:a,enabled:a.enabled??!0,activeItem:o,dropZones:c,startDrag:l,endDrag:u,cancelDrag:d,registerDropZone:f,unregisterDropZone:p,canDrop:m}),[a,o,c,l,u,d,f,p,m]);return(0,L.jsx)(Jt.Provider,{value:h,children:e})};Yt.displayName=`DndProvider`;function Xt(){let e=(0,I.useContext)(Jt);if(!e)throw Error(`useDnd must be used within a <DndProvider>. Wrap your app with <DndProvider> to use the drag and drop system.`);return e}function Zt(){return(0,I.useContext)(Jt)!==null}var Qt=I.createContext(null),$t=({children:e})=>{let t=I.useMemo(()=>{let e=new Map,t=an,n=new Set,r=()=>{let r=new Set;for(let t of e.values())for(let e of t)r.add(e);if(r.size===t.size){let e=!0;for(let n of r)if(!t.has(n)){e=!1;break}if(e)return}t=r,n.forEach(e=>e())};return{getNames:()=>t,subscribe:e=>(n.add(e),()=>{n.delete(e)}),register:(t,n)=>{let i=e.get(t);i&&i.length===n.length&&i.every((e,t)=>e===n[t])||(e.set(t,[...n]),r())},unregister:t=>{e.delete(t)&&r()}}},[]);return(0,L.jsx)(Qt.Provider,{value:t,children:e})};function en(){let e=I.useContext(Qt);return I.useSyncExternalStore(e?e.subscribe:nn,e?e.getNames:rn,e?e.getNames:rn)}function tn(e,t){let n=I.useContext(Qt),r=t.join(`|`);I.useEffect(()=>{if(n)return n.register(e,r.length===0?[]:r.split(`|`)),()=>n.unregister(e)},[n,e,r])}var nn=e=>()=>{},rn=()=>an,an=new Set,on=I.createContext(null),sn=({children:e,...t})=>{let n=I.useMemo(()=>t,[t.objectName,t.recordId,t.dataSource,t.data,t.objectSchema,t.loading,t.error,t.refresh,t.embedded,t.headerSystemActions,t.isFavorite,t.onToggleFavorite]);return(0,L.jsx)(on.Provider,{value:n,children:e})};function cn(){return I.useContext(on)}var ln=I.createContext(null),un=({children:e,...t})=>{let n=I.useMemo(()=>t,[t.items,t.onAddComment,t.onAddReply,t.onToggleReaction,t.mentionSuggestions,t.onUploadAttachments,t.loading,t.error]);return(0,L.jsx)(ln.Provider,{value:n,children:e})};function dn(){return I.useContext(ln)}var fn=e=>e.type===`checkbox`,R=e=>e instanceof Date,z=e=>e==null,pn=e=>typeof e==`object`,B=e=>!z(e)&&!Array.isArray(e)&&pn(e)&&!R(e),mn=e=>B(e)&&e.target?fn(e.target)?e.target.checked:e.target.value:e,hn=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),gn=e=>{let t=e.constructor&&e.constructor.prototype;return B(t)&&t.hasOwnProperty(`isPrototypeOf`)},_n=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function V(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(_n&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(B(e)&&gn(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=V(e[t]));return r}var vn=e=>/^\w*$/.test(e),H=e=>e===void 0,yn=e=>Array.isArray(e)?e.filter(Boolean):[],bn=e=>yn(e.replace(/["|']|\]/g,``).split(/\.|\[/)),U=(e,t,n)=>{if(!t||!B(e))return n;let r=(vn(t)?[t]:bn(t)).reduce((e,t)=>z(e)?void 0:e[t],e);return H(r)||r===e?H(e[t])?n:e[t]:r},W=e=>typeof e==`boolean`,G=e=>typeof e==`function`,K=(e,t,n)=>{let r=-1,i=vn(t)?[t]:bn(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=B(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(t===`__proto__`||t===`constructor`||t===`prototype`)return;e[t]=a,e=e[t]}},q={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},J={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},Y={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},xn=`form`,Sn=`root`,Cn=I.createContext(null);Cn.displayName=`HookFormControlContext`;var wn=()=>I.useContext(Cn),Tn=(e,t,n,r=!0)=>{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==J.all&&(t._proxyFormState[i]=!r||J.all),n&&(n[i]=!0),e[i]}});return i},En=typeof window<`u`?I.useLayoutEffect:I.useEffect;function Dn(e){let t=wn(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[o,s]=I.useState(()=>({...n._formState,defaultValues:n._defaultValues})),c=I.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return En(()=>n._subscribe({name:i,formState:c.current,exact:a,callback:e=>{!r&&s({...n._formState,...e,defaultValues:n._defaultValues})}}),[i,r,a]),I.useEffect(()=>{c.current.isValid&&n._setValid(!0)},[n]),I.useMemo(()=>Tn(o,n,c.current,!1),[o,n])}var X=e=>typeof e==`string`,On=(e,t,n,r,i)=>X(e)?(r&&t.watch.add(e),U(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),U(n,e))):(r&&(t.watchAll=!0),n),kn=e=>z(e)||!pn(e);function Z(e,t,n=new WeakSet){if(e===t)return!0;if(kn(e)||kn(t))return Object.is(e,t);if(R(e)&&R(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(R(r)&&R(e)||(B(r)||Array.isArray(r))&&(B(e)||Array.isArray(e))?!Z(r,e,n):!Object.is(r,e))return!1}}return!0}function An(e){let t=wn(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=I.useRef(i),l=I.useRef(s),u=I.useRef(void 0),d=I.useRef(n),f=I.useRef(r);l.current=s;let[p,m]=I.useState(()=>{let e=n._getWatch(r,c.current);return l.current?l.current(e):e}),h=I.useCallback(e=>{let t=On(r,n._names,e||n._formValues,!1,c.current);return l.current?l.current(t):t},[n._formValues,n._names,r]),g=I.useCallback(e=>{if(!a){let t=On(r,n._names,e||n._formValues,!1,c.current);if(l.current){let e=l.current(t);Z(e,u.current)||(m(e),u.current=e)}else m(t)}},[n._formValues,n._names,a,r]);En(()=>((d.current!==n||!Z(f.current,r))&&(d.current=n,f.current=r,g()),n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{g(e.values)}})),[n,o,r,g]),I.useEffect(()=>n._removeUnmounted());let _=d.current!==n,v=f.current,y=I.useMemo(()=>{if(a)return null;let e=!_&&!Z(v,r);return _||e?h():null},[a,_,r,v,h]);return y===null?p:y}function jn(e){let t=wn(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=hn(i._names.array,n),l=An({control:i,name:n,defaultValue:I.useMemo(()=>U(i._formValues,n,U(i._defaultValues,n,o)),[i,n,o]),exact:s}),u=Dn({control:i,name:n,exact:s}),d=I.useRef(e),f=I.useRef(i.register(n,{...e.rules,value:l,...W(e.disabled)?{disabled:e.disabled}:{}}));d.current=e;let p=I.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!U(u.errors,n)},isDirty:{enumerable:!0,get:()=>!!U(u.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!U(u.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!U(u.validatingFields,n)},error:{enumerable:!0,get:()=>U(u.errors,n)}}),[u,n]),m=I.useCallback(e=>f.current.onChange({target:{value:mn(e),name:n},type:q.CHANGE}),[n]),h=I.useCallback(()=>f.current.onBlur({target:{value:U(i._formValues,n),name:n},type:q.BLUR}),[n,i._formValues]),g=I.useCallback(e=>{let t=U(i._fields,n);t&&t._f&&e&&(t._f.ref={focus:()=>G(e.focus)&&e.focus(),select:()=>G(e.select)&&e.select(),setCustomValidity:t=>G(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>G(e.reportValidity)&&e.reportValidity()})},[i._fields,n]),_=I.useMemo(()=>({name:n,value:l,...W(r)||u.disabled?{disabled:u.disabled||r}:{},onChange:m,onBlur:h,ref:g}),[n,r,u.disabled,m,h,g,l]);return I.useEffect(()=>{let e=i._options.shouldUnregister||a;i.register(n,{...d.current.rules,...W(d.current.disabled)?{disabled:d.current.disabled}:{}});let t=(e,t)=>{let n=U(i._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){let e=V(U(i._defaultValues,n,U(i._options.defaultValues,n,d.current.defaultValue)));K(i._defaultValues,n,e),H(U(i._formValues,n))&&K(i._formValues,n,e)}return!c&&i.register(n),()=>{(c?e&&!i._state.action:e)?i.unregister(n):t(n,!1)}},[n,i,c,a]),I.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),I.useMemo(()=>({field:_,formState:u,fieldState:p}),[_,u,p])}var Mn=e=>e.render(jn(e)),Nn=I.createContext(null);Nn.displayName=`HookFormContext`;var Pn=()=>I.useContext(Nn),Fn=e=>{let{children:t,watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,setValues:c,trigger:l,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}=e,y=I.useMemo(()=>({watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,setValues:c,trigger:l,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}),[o,h,u,i,r,p,g,f,d,a,_,s,c,v,l,m,n]);return I.createElement(Nn.Provider,{value:y},I.createElement(Cn.Provider,{value:y.control},t))},In=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Ln=e=>Array.isArray(e)?e:[e],Rn=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function zn(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&B(i)&&a){let e=zn(i,a);B(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Q=e=>B(e)&&!Object.keys(e).length,Bn=e=>e.type===`file`,Vn=e=>{if(!_n)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Hn=e=>e.type===`select-multiple`,Un=e=>e.type===`radio`,Wn=e=>Un(e)||fn(e),Gn=e=>Vn(e)&&e.isConnected;function Kn(e,t){let n=t.slice(0,-1).length,r=0;for(;r<n;){if(z(e)){e=void 0;break}e=e[t[r]],r++}return e}function qn(e){for(let t in e)if(e.hasOwnProperty(t)&&!H(e[t]))return!1;return!0}function $(e,t){if(X(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:vn(t)?[t]:bn(t),r=n.length===1?e:Kn(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(B(r)&&Q(r)||Array.isArray(r)&&qn(r))&&$(e,n.slice(0,-1)),e}var Jn=e=>{for(let t in e)if(G(e[t]))return!0;return!1};function Yn(e){return Array.isArray(e)||B(e)&&!Jn(e)}function Xn(e,t={}){for(let n in e){let r=e[n];Yn(r)?(t[n]=Array.isArray(r)?[]:{},Xn(r,t[n])):H(r)||(t[n]=!0)}return t}function Zn(e){if(e!==!1){if(e===!0)return!0;if(Array.isArray(e)){let t=e.map(e=>Zn(e));return t.some(e=>e!==void 0)?t:void 0}if(B(e)){let t={};for(let n in e){let r=Zn(e[n]);H(r)||(t[n]=r)}return Object.keys(t).length?t:void 0}}}function Qn(e,t,n){n||=Xn(t);for(let r in e){let i=e[r];if(Yn(i))H(t)||kn(n[r])?n[r]=Xn(i,Array.isArray(i)?[]:{}):Qn(i,z(t)?{}:t[r],n[r]);else{let e=t[r];n[r]=!Z(i,e)}}return Zn(n)||{}}var $n={value:!1,isValid:!1},er={value:!0,isValid:!0},tr=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!H(e[0].attributes.value)?H(e[0].value)||e[0].value===``?er:{value:e[0].value,isValid:!0}:er:$n}return $n},nr=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>H(e)?e:t?e===``?NaN:e&&+e:n&&X(e)?new Date(e):r?r(e):e,rr={isValid:!1,value:null},ir=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,rr):rr;function ar(e){let t=e.ref;return Bn(t)?t.files:Un(t)?ir(e.refs).value:Hn(t)?[...t.selectedOptions].map(({value:e})=>e):fn(t)?tr(e.refs).value:nr(H(t.value)?e.ref.value:t.value,e)}var or=(e,t,n,r)=>{let i={};for(let n of e){let e=U(t,n);e&&K(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},sr=e=>e instanceof RegExp,cr=e=>H(e)?e:sr(e)?e.source:B(e)?sr(e.value)?e.value.source:e.value:e,lr=e=>({isOnSubmit:!e||e===J.onSubmit,isOnBlur:e===J.onBlur,isOnChange:e===J.onChange,isOnAll:e===J.all,isOnTouch:e===J.onTouched}),ur=`AsyncFunction`,dr=e=>!!e&&!!e.validate&&!!(G(e.validate)&&e.validate.constructor.name===ur||B(e.validate)&&Object.values(e.validate).find(e=>e.constructor.name===ur)),fr=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),pr=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))),mr=(e,t,n,r)=>{for(let i of n||Object.keys(e)){let n=U(e,i);if(n){let{_f:e,...a}=n;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(mr(a,t))break}else if(B(a)&&mr(a,t))break}}};function hr(e,t,n){let r=U(e,n);if(r||vn(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=U(t,r),o=U(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var gr=(e,t,n,r)=>{n(e);let{name:i,...a}=e;return Q(a)||r&&Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find(e=>t[e]===(!r||J.all))},_r=(e,t,n)=>!e||!t||e===t||Ln(e).some(e=>e&&(n?e===t:e.startsWith(t)||t.startsWith(e))),vr=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:(n?r.isOnChange:i.isOnChange)?e:!0,yr=(e,t)=>!yn(U(e,t)).length&&$(e,t),br=(e,t,n)=>{let r=Ln(U(e,n));return K(r,Sn,t[n]),K(e,n,r),e};function xr(e,t,n=`validate`){if(X(e)||Array.isArray(e)&&e.every(X)||W(e)&&!e)return{type:n,message:X(e)?e:``,ref:t}}var Sr=e=>B(e)&&!sr(e)?e:{value:e,message:``},Cr=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:m,name:h,valueAsNumber:g,mount:_}=e._f,v=U(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{i&&y.reportValidity&&(y.setCustomValidity(W(e)?``:e||``),y.reportValidity())},x={},S=Un(o),C=fn(o),ee=S||C,te=(g||Bn(o))&&H(o.value)&&H(v)||Vn(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,w=In.bind(null,h,r,x),T=(e,t,n,r=Y.maxLength,i=Y.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...w(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!ee&&(te||z(v))||W(v)&&!v||C&&!tr(s).isValid||S&&!ir(s).isValid)){let{value:e,message:t}=X(c)?{value:!!c,message:c}:Sr(c);if(e&&(x[h]={type:Y.required,message:t,ref:y,...w(Y.required,t)},!r))return b(t),x}if(!te&&(!z(d)||!z(f))){let e,t,n=Sr(f),i=Sr(d);if(!z(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;z(n.value)||(e=r>n.value),z(i.value)||(t=r<i.value)}else{let r=o.valueAsDate||new Date(v),a=e=>new Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;X(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),X(i.value)&&v&&(t=s?a(v)<a(i.value):c?v<i.value:r<new Date(i.value))}if((e||t)&&(T(!!e,n.message,i.message,Y.max,Y.min),!r))return b(x[h].message),x}if((l||u)&&!te&&(X(v)||a&&Array.isArray(v))){let e=Sr(l),t=Sr(u),n=!z(e.value)&&v.length>+e.value,i=!z(t.value)&&v.length<+t.value;if((n||i)&&(T(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!te&&X(v)){let{value:e,message:t}=Sr(p);if(sr(e)&&!v.match(e)&&(x[h]={type:Y.pattern,message:t,ref:o,...w(Y.pattern,t)},!r))return b(t),x}if(m){if(G(m)){let e=xr(await m(v,n),y);if(e&&(x[h]={...e,...w(Y.validate,e.message)},!r))return b(e.message),x}else if(B(m)){let e={};for(let t in m){if(!Q(e)&&!r)break;let i=xr(await m[t](v,n),y,t);i&&(e={...i,...w(t,i.message)},b(i.message),r&&(x[h]=e))}if(!Q(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},wr={mode:J.onSubmit,reValidateMode:J.onChange,shouldFocusError:!0},Tr={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function Er(e={}){let t={...wr,...e},n={...V(Tr),isLoading:G(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(B(t.defaultValues)||B(t.values))&&V(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:V(i),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c,l=0,u={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},d={...u},f={...d},p={array:Rn(),state:Rn()},m=t.criteriaMode===J.all,h=e=>t=>{clearTimeout(l),l=setTimeout(e,t)},g=async e=>{if(!o.keepIsValid&&!t.disabled&&(d.isValid||f.isValid||e)){let e;t.resolver?(e=Q((await w()).errors),_()):e=await D({fields:r,onlyCheckValid:!0,eventType:q.VALID}),e!==n.isValid&&p.state.next({isValid:e})}},_=(e,r)=>{!t.disabled&&(d.isValidating||d.validatingFields||f.isValidating||f.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?K(n.validatingFields,e,r):$(n.validatingFields,e))}),p.state.next({validatingFields:n.validatingFields,isValidating:!Q(n.validatingFields)}))},v=()=>{n.dirtyFields=Qn(i,a)},y=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,u&&Array.isArray(U(r,e))){let t=s(U(r,e),c.argA,c.argB);l&&K(r,e,t)}if(u&&Array.isArray(U(n.errors,e))){let t=s(U(n.errors,e),c.argA,c.argB);l&&K(n.errors,e,t),yr(n.errors,e)}if((d.touchedFields||f.touchedFields)&&u&&Array.isArray(U(n.touchedFields,e))){let t=s(U(n.touchedFields,e),c.argA,c.argB);l&&K(n.touchedFields,e,t)}(d.dirtyFields||f.dirtyFields)&&v(),p.state.next({name:e,isDirty:k(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else K(a,e,i)},b=(e,t)=>{K(n.errors,e,t),p.state.next({errors:n.errors})},x=e=>{n.errors=e,p.state.next({errors:n.errors,isValid:!1})},S=e=>{let t=vn(e)?[e]:bn(e),n=a,r=i;for(let e=0;e<t.length-1;e++){let i=t[e];if(n=z(n)?n:n[i],r=z(r)?r:r[i],n===null&&r!==null)return!0}return!1},C=(e,t,s,c)=>{let l=U(r,e);if(l){if(S(e))return;let r=H(U(a,e)),u=U(a,e,H(s)?U(i,e):s);H(u)||c&&c.defaultChecked||t?K(a,e,t?u:ar(l._f)):j(e,u),o.mount&&!o.action&&(g(),r&&n.isDirty&&(d.isDirty||f.isDirty)&&(k()||(n.isDirty=!1,p.state.next({...n}))))}},ee=(e,r,o,s,c)=>{let l=!1,u=!1,m={name:e};if(!t.disabled){if(!o||s){(d.isDirty||f.isDirty)&&(u=n.isDirty,n.isDirty=m.isDirty=k(),l=u!==m.isDirty);let t=Z(U(i,e),r);u=!!U(n.dirtyFields,e),t===n.isDirty?t?$(n.dirtyFields,e):K(n.dirtyFields,e,!0):n.dirtyFields=Qn(i,a),m.dirtyFields=n.dirtyFields,l||=(d.dirtyFields||f.dirtyFields)&&u!==!t}if(o){let t=U(n.touchedFields,e);t||(K(n.touchedFields,e,o),m.touchedFields=n.touchedFields,l||=(d.touchedFields||f.touchedFields)&&t!==o)}l&&c&&p.state.next(m)}return l?m:{}},te=(e,r,i,a)=>{let o=U(n.errors,e),s=(d.isValid||f.isValid)&&W(r)&&n.isValid!==r;if(t.delayError&&i?(c=h(()=>b(e,i)),c(t.delayError)):(clearTimeout(l),c=null,i?K(n.errors,e,i):$(n.errors,e)),(i?!Z(o,i):o)||!Q(a)||s){let t={...a,...s&&W(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},p.state.next(t)}},w=async e=>(_(e,!0),await t.resolver(a,t.context,or(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),T=async e=>{let{errors:t}=await w(e);if(_(e),e)for(let r of e){let e=U(t,r);e?s.array.has(r)&&B(e)?br(n.errors,{[r]:e},r):K(n.errors,r,e):$(n.errors,r)}else n.errors=t;return t},E=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(B(i))for(let e in i){let t=i[e];t&&fe(`${xn}.${e}`,{message:X(t.message)?t.message:``,type:t.type||Y.validate})}else X(i)||!i?fe(xn,{message:i||``,type:Y.validate}):M(xn);return i}return!0},D=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await E({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...p}=u;if(r){let o=s.array.has(r.name),c=u._f&&dr(u._f),p=d.validatingFields||d.isValidating||f.validatingFields||f.isValidating;c&&p&&_([r.name],!0);let h=await Cr(u,s.disabled,a,m,t.shouldUseNativeValidation&&!i,o);if(c&&p&&_([r.name]),h[r.name]&&(l.valid=!1,i)||(!i&&(U(h,r.name)?o?br(n.errors,h,r.name):K(n.errors,r.name,h[r.name]):$(n.errors,r.name)),e.shouldUseNativeValidation&&h[r.name]))break}!Q(p)&&await D({context:l,onlyCheckValid:i,fields:p,name:o,eventType:c})}}return l.valid},O=()=>{for(let e of s.unMount){let t=U(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Gn(e)):!Gn(t._f.ref))&&he(e)}s.unMount=new Set},k=(e,n)=>!t.disabled&&(e&&n&&K(a,e,n),!Z(ue(),i)),A=(e,t,n)=>On(e,s,{...o.mount?a:H(t)?i:X(e)?{[e]:t}:t},n,t),ne=e=>yn(U(o.mount?a:i,e,t.shouldUnregister?U(i,e,[]):[])),j=(e,t,n={},i=!1)=>{let o=U(r,e),s=t;if(o){let n=o._f;n&&(!n.disabled&&K(a,e,nr(t,n)),s=Vn(n.ref)&&z(t)?``:t,Hn(n.ref)?[...n.ref.options].forEach(e=>e.selected=s.includes(e.value)):n.refs?fn(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(Array.isArray(s)?e.checked=!!s.find(t=>t===e.value):e.checked=s===e.value||!!s)}):n.refs.forEach(e=>e.checked=e.value===s):Bn(n.ref)?n.ref.value=``:(n.ref.value=s,n.ref.type||p.state.next({name:e,values:i?a:V(a)})))}(n.shouldDirty||n.shouldTouch)&&ee(e,s,n.shouldTouch,n.shouldDirty,!0),n.shouldValidate&&le(e)},re=(e,t,n,i=!1)=>{for(let a in t){if(!t.hasOwnProperty(a))return;let o=t[a],c=e+`.`+a,l=U(r,c);(s.array.has(e)||B(o)||l&&!l._f)&&!R(o)?re(c,o,n,i):j(c,o,n,i)}},ie=(e,t,i,c)=>{let l=U(r,e),u=s.array.has(e),m=c?t:V(t),h=Z(U(a,e),m);if(h||K(a,e,m),u)p.array.next({name:e,values:c?a:V(a)}),(d.isDirty||d.dirtyFields||f.isDirty||f.dirtyFields)&&i.shouldDirty&&(v(),p.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:k(e,m)}));else{let t=Array.isArray(m)&&!m.length||Q(m);!l||l._f||z(m)||t?j(e,m,i,c):re(e,m,i,c)}if(!h){let t=pr(e,s),r=c?a:V(a);p.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},ae=(e,t,n={})=>ie(e,t,n,!1),oe=(e,t={})=>{let r=G(e)?e(a):e;if(!Z(a,r)){a={...a,...r};for(let e of s.mount)ie(e,U(r,e),t,!0);p.state.next({...n,name:void 0,type:void 0,values:a}),t.shouldValidate&&g()}},se=async i=>{o.mount=!0;let l=i.target,u=l.name,h=!0,v=U(r,u),y=e=>{h=Number.isNaN(e)||R(e)&&isNaN(e.getTime())||Z(e,U(a,u,e))},b=lr(t.mode),x=lr(t.reValidateMode);if(v){let o,S,C=l.type?ar(v._f):mn(i),T=i.type===q.BLUR||i.type===q.FOCUS_OUT,O=!fr(v._f)&&!e.validate&&!t.resolver&&!U(n.errors,u)&&!v._f.deps||vr(T,U(n.touchedFields,u),n.isSubmitted,x,b),k=pr(u,s,T);K(a,u,C),T?(!l||!l.readOnly)&&(v._f.onBlur&&v._f.onBlur(i),c&&c(0)):v._f.onChange&&v._f.onChange(i);let A=ee(u,C,T),ne=!Q(A)||k;if(!T&&p.state.next({name:u,type:i.type,values:V(a)}),O)return(d.isValid||f.isValid)&&(t.mode===`onBlur`?T&&g():T||g()),ne&&p.state.next({name:u,...k?{}:A});if(!t.resolver&&e.validate&&await E({name:u,eventType:i.type}),!T&&k&&p.state.next({...n}),t.resolver){let{errors:e}=await w([u]);if(_([u]),y(C),h){let t=hr(n.errors,r,u),i=hr(e,r,t.name||u);o=i.error,u=i.name,S=Q(e)}}else _([u],!0),o=(await Cr(v,s.disabled,a,m,t.shouldUseNativeValidation))[u],_([u]),y(C),h&&(o?S=!1:(d.isValid||f.isValid)&&(S=await D({fields:r,onlyCheckValid:!0,name:u,eventType:i.type})));h&&(v._f.deps&&(!Array.isArray(v._f.deps)||v._f.deps.length>0)&&le(v._f.deps),te(u,S,o,A))}},ce=(e,t)=>{if(U(n.errors,t)&&e.focus)return e.focus(),1},le=async(e,i={})=>{let a,o,c=Ln(e);if(t.resolver){let t=await T(H(e)?e:c);a=Q(t),o=e?!c.some(e=>U(t,e)):a}else e?(o=(await Promise.all(c.map(async e=>{let t=U(r,e);return await D({fields:t&&t._f?{[e]:t}:t,eventType:q.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&g()):o=a=await D({fields:r,name:e,eventType:q.TRIGGER});return p.state.next({...!X(e)||(d.isValid||f.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&mr(r,ce,e?c:s.mount),o},ue=(e,t)=>{let r={...o.mount?a:i};return t&&(r=zn(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),H(e)?r:X(e)?U(r,e):e.map(e=>U(r,e))},de=(e,t)=>({invalid:!!U((t||n).errors,e),isDirty:!!U((t||n).dirtyFields,e),error:U((t||n).errors,e),isValidating:!!U(n.validatingFields,e),isTouched:!!U((t||n).touchedFields,e)}),M=e=>{let t=e?Ln(e):void 0;t?.forEach(e=>$(n.errors,e)),t?t.forEach(e=>{p.state.next({name:e,errors:n.errors})}):p.state.next({errors:{}})},fe=(e,t,i)=>{let a=(U(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=U(n.errors,e)||{};K(n.errors,e,{...l,...t,ref:a}),p.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},N=(e,t)=>G(e)?p.state.subscribe({next:n=>`values`in n&&e(n.values||A(void 0,t),n)}):A(e,t,!0),pe=e=>p.state.subscribe({next:t=>{if(_r(e.name,t.name,e.exact)&&gr(t,e.formState||d,Ce,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}}).unsubscribe,me=e=>(o.mount=!0,f={...f,...e.formState},pe({...e,formState:{...u,...e.formState}})),he=(e,o={})=>{for(let c of e?Ln(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||($(r,c),$(a,c)),!o.keepError&&$(n.errors,c),!o.keepDirty&&$(n.dirtyFields,c),!o.keepTouched&&$(n.touchedFields,c),!o.keepIsValidating&&$(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&$(i,c);p.state.next({values:V(a)}),p.state.next({...n,...o.keepDirty?{isDirty:k()}:{}}),!o.keepIsValid&&g()},ge=({disabled:e,name:t})=>{if(W(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&g()}},_e=(e,n={})=>{let a=U(r,e),c=W(n.disabled)||W(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return K(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?ge({disabled:W(n.disabled)?n.disabled:t.disabled,name:e}):C(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:cr(n.min),max:cr(n.max),minLength:cr(n.minLength),maxLength:cr(n.maxLength),pattern:cr(n.pattern)}:{},name:e,onChange:se,onBlur:se,ref:c=>{if(c){s.registerName.add(e),_e(e,n),s.registerName.delete(e),a=U(r,e);let t=H(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=Wn(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;K(r,e,{_f:{...a._f,...o?{refs:[...l.filter(Gn),t,...Array.isArray(U(i,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),C(e,!1,void 0,t)}else a=U(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(hn(s.array,e)&&o.action)&&s.unMount.add(e)}}},P=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&mr(r,ce,s.mount),ve=e=>{W(e)&&(p.state.next({disabled:e}),mr(r,(t,n)=>{let i=U(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},ye=(e,i)=>async o=>{let c;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let l=V(a);if(p.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await w();_(),n.errors=e,l=V(t)}else await D({fields:r,eventType:q.SUBMIT});if(s.disabled.size)for(let e of s.disabled)$(l,e);if($(n.errors,Sn),Q(n.errors)){p.state.next({errors:{}});try{await e(l,o)}catch(e){c=e}}else i&&await i({...n.errors},o),P(),setTimeout(P);if(p.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Q(n.errors)&&!c,submitCount:n.submitCount+1,errors:n.errors}),c)throw c},be=(e,t={})=>{U(r,e)&&(H(t.defaultValue)?ae(e,V(U(i,e))):(ae(e,t.defaultValue),K(i,e,V(t.defaultValue))),t.keepTouched||$(n.touchedFields,e),t.keepDirty||($(n.dirtyFields,e),n.isDirty=t.defaultValue?k(e,V(U(i,e))):k()),t.keepError||($(n.errors,e),d.isValid&&g()),p.state.next({...n}))},F=(e,c={})=>{let l=e?V(e):i,u=V(l),f=Q(e),m=f?i:u;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Object.keys(Qn(i,a))]);for(let t of Array.from(e)){let e=U(n.dirtyFields,t),r=U(a,t),i=U(m,t);e&&!H(r)?K(m,t,r):!e&&!H(i)&&ae(t,i)}}else{if(_n&&H(e))for(let e of s.mount){let t=U(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(Vn(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)ae(e,U(m,e));else r={}}a=t.shouldUnregister?c.keepDefaultValues?V(i):{}:V(m),p.array.next({values:{...m}}),p.state.next({values:{...m}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!d.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!Q(m),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,c.keepErrors||(n.errors={}),p.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:f?!1:c.keepDirty?n.isDirty:!!(c.keepDefaultValues&&!Z(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:f?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Qn(i,a):n.dirtyFields:c.keepDefaultValues&&e?Qn(i,e):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},xe=(e,n)=>F(G(e)?e(a):e,{...t.resetOptions,...n}),Se=(e,t={})=>{let n=U(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&G(e.select)&&e.select()})}},Ce=e=>{n={...n,...e}},we={control:{register:_e,unregister:he,getFieldState:de,handleSubmit:ye,setError:fe,_subscribe:pe,_runSchema:w,_updateIsValidating:_,_focusError:P,_getWatch:A,_getDirty:k,_setValid:g,_setFieldArray:y,_setDisabledField:ge,_setErrors:x,_getFieldArray:ne,_reset:F,_resetDefaultValues:()=>G(t.defaultValues)&&t.defaultValues().then(e=>{xe(e,t.resetOptions),p.state.next({isLoading:!1})}),_removeUnmounted:O,_disableForm:ve,_subjects:p,_proxyFormState:d,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e}}},subscribe:me,trigger:le,register:_e,handleSubmit:ye,watch:N,setValue:ae,setValues:oe,getValues:ue,reset:xe,resetField:be,clearErrors:M,unregister:he,setError:fe,setFocus:Se,getFieldState:de};return{...we,formControl:we}}function Dr(e={}){let t=I.useRef(void 0),n=I.useRef(void 0),[r,i]=I.useState(()=>({...V(Tr),isLoading:G(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:G(e.defaultValues)?void 0:e.defaultValues}));if(!t.current)if(e.formControl)t.current={...e.formControl,formState:r},e.defaultValues&&!G(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...i}=Er(e);t.current={...i,formState:r}}let a=t.current.control;return a._options=e,En(()=>{let e=a._subscribe({formState:a._proxyFormState,callback:()=>i({...a._formState,defaultValues:a._defaultValues}),reRenderRoot:!0});return i(e=>({...e,isReady:!0})),a._formState.isReady=!0,e},[a]),I.useEffect(()=>a._disableForm(e.disabled),[a,e.disabled]),I.useEffect(()=>{e.mode&&(a._options.mode=e.mode),e.reValidateMode&&(a._options.reValidateMode=e.reValidateMode)},[a,e.mode,e.reValidateMode]),I.useEffect(()=>{e.errors&&(a._setErrors(e.errors),a._focusError())},[a,e.errors]),I.useEffect(()=>{e.shouldUnregister&&a._subjects.state.next({values:a._getWatch()})},[a,e.shouldUnregister]),I.useEffect(()=>{if(a._proxyFormState.isDirty){let e=a._getDirty();e!==r.isDirty&&a._subjects.state.next({isDirty:e})}},[a,r.isDirty]),I.useEffect(()=>{e.values&&!Z(e.values,n.current)?(a._reset(e.values,{keepFieldsRef:!0,...a._options.resetOptions}),a._options.resetOptions?.keepIsValid||a._setValid(),n.current=e.values,i(e=>({...e}))):a._resetDefaultValues()},[a,e.values]),I.useEffect(()=>{a._state.mount||(a._setValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()}),t.current.formState=I.useMemo(()=>Tn(r,a),[a,r]),t.current}var Or={en:{common:{loading:`Loading...`,save:`Save`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,create:`Create`,search:`Search`,filter:`Filter`,reset:`Reset`,confirm:`Confirm`,close:`Close`,back:`Back`,next:`Next`,previous:`Previous`,submit:`Submit`,refresh:`Refresh`,export:`Export`,import:`Import`,yes:`Yes`,no:`No`,ok:`OK`,actions:`Actions`,more:`More`,selectAll:`Select All`,clearAll:`Clear All`,addToFavorites:`Add to favorites`,removeFromFavorites:`Remove from favorites`,noData:`No data`,noResults:`No results found`,required:`Required`,optional:`Optional`,selectOption:`Select an option`,select:`Select...`,openChat:`Open chat`,closeChat:`Close chat`,toggleSidebar:`Toggle sidebar`},validation:{required:`{{field}} is required`,minLength:`{{field}} must be at least {{min}} characters`,maxLength:`{{field}} must be at most {{max}} characters`,min:`{{field}} must be at least {{min}}`,max:`{{field}} must be at most {{max}}`,email:`Please enter a valid email address`,url:`Please enter a valid URL`,pattern:`{{field}} format is invalid`,unique:`{{field}} must be unique`,type:`{{field}} must be a valid {{type}}`},form:{addItem:`Add item`,removeItem:`Remove item`,fieldRequired:`This field is required`,invalidFormat:`Invalid format`,saveSuccess:`Saved successfully`,saveError:`Failed to save`,unsavedChanges:`You have unsaved changes. Are you sure you want to leave?`,stepOf:`Step {{current}} of {{total}}`,createTitle:`Create {{object}}`,editTitle:`Edit {{object}}`,createDescription:`Add a new {{object}} to your database.`,editDescription:`Update details for {{object}}`,saveRecord:`Save`,create:`Create`,update:`Update`,createSuccess:`{{object}} created successfully`,updateSuccess:`{{object}} updated successfully`,deleteSuccess:`{{object}} deleted successfully`},fields:{richText:{format:`Format: {{format}}`,basicEditorHint:`Rich text editor (basic)`,placeholder:`Enter text...`}},table:{rowsPerPage:`Rows per page`,showing:`Showing {{from}} to {{to}} of {{total}}`,noRows:`No rows to display`,sortAsc:`Sort ascending`,sortDesc:`Sort descending`,filterColumn:`Filter {{column}}`,columns:`Columns`,exportCSV:`Export CSV`,exportExcel:`Export Excel`,selectRow:`Select row`,selectAllRows:`Select all rows`,expandRow:`Expand row`,collapseRow:`Collapse row`,hideColumn:`Hide column`,freezeColumn:`Freeze column`,unfreezeColumn:`Unfreeze column`,pageInfo:`Page {{current}} of {{total}}`,totalRecords:`{{count}} total`,noResults:`No results found`,noResultsHint:`Try adjusting your filters or search query.`,cancelAll:`Cancel All`,saveAll:`Save All ({{count}})`,addRecord:`Add record`,open:`Open`,search:`Search...`,modified:`{{count}} row modified`,selected:`{{count}} selected`,edit:`Edit`,delete:`Delete`},grid:{actions:`Actions`,edit:`Edit`,delete:`Delete`,export:`Export`,exportAs:`Export as {{format}}`,loading:`Loading grid...`,errorLoading:`Error loading grid`,pullToRefresh:`Pull to refresh`,refreshing:`Refreshing…`,openRecord:`Open record`,openMenu:`Open menu`,rowHeight:`Row height: {{mode}}`,empty:`Empty`,yes:`Yes`,no:`No`,systemFields:`System`,toolbar:{densityMode:`Density`,densityCompact:`Compact`,densityComfortable:`Comfortable`,densitySpacious:`Spacious`,densityCycleHint:`{{label}} (click to cycle)`,densityCycleShortHint:`Click to cycle`},import:{title:`Import {{object}}`,stepUpload:`Upload`,stepMapping:`Mapping`,stepPreview:`Preview`,uploadDescription:`Upload a CSV file to get started.`,mappingDescription:`Map CSV columns to object fields.`,previewDescription:`Review data before importing.`,dragDrop:`Drag & drop a CSV file here, or click to browse`,browseFiles:`Browse Files`,onlyCsv:`Only CSV files are supported.`,fileNeedsHeader:`File must contain a header row and at least one data row.`,mappingTemplate:`Mapping template:`,chooseTemplate:`Choose template…`,noSavedTemplates:`No saved templates`,noneOption:`— None —`,saveCurrent:`Save current`,templateName:`Template name`,save:`Save`,deleteTemplate:`Delete template`,csvColumn:`CSV Column`,mapsTo:`Maps To`,status:`Status`,skipColumn:`Skip column`,skip:`— Skip —`,mapped:`Mapped`,skipped:`Skipped`,rowsWithErrors:`{{count}} row(s) with errors`,rowsCorrected:`{{count}} row(s) corrected`,clickToFix:`— click a highlighted cell to fix it inline.`,showingRows:`Showing {{shown}} of {{total}} rows`,importing:`Importing… {{progress}}%`,importComplete:`Import Complete`,imported:`{{count}} imported`,skippedCount:`{{count}} skipped`,moreErrors:`…and {{count}} more errors`,cancel:`Cancel`,back:`Back`,next:`Next`,close:`Close`,importNRows:`Import {{count}} Rows`,importingProgress:`Importing…`,requiredMark:`*`,required:`Required`,invalidType:`Invalid {{type}}`}},calendar:{today:`Today`,month:`Month`,week:`Week`,day:`Day`,agenda:`Agenda`,allDay:`All Day`,noEvents:`No events`,newEvent:`New event`,moreEvents:`+{{count}} more`},list:{recordCount:`{{count}} records`,recordCountOne:`{{count}} record`,addRecord:`Add record`,tabs:`Tabs`,allRecords:`All Records`,search:`Search`,filter:`Filter`,filterRecords:`Filter Records`,sort:`Sort`,sortRecords:`Sort Records`,group:`Group`,groupBy:`Group By`,export:`Export`,exportAs:`Export as {{format}}`,color:`Color`,rowColor:`Row Color`,colorByField:`Color by field`,clear:`Clear`,none:`None`,hideFields:`Hide fields`,noItems:`No items found`,noItemsMessage:`There are no records to display. Try adjusting your filters or adding new data.`,showAll:`Show all`,pullToRefresh:`Pull to refresh`,refreshing:`Refreshing…`,share:`Share`,print:`Print`,hideFieldsTitle:`Hide Fields`,dataLimitReached:`Showing first {{limit}} records. More data may be available.`,viewSettings:`View settings`,viewSettingsHint:`Grouping, color, density, and visible fields.`,addGroup:`Add group field`,collapsedByDefault:`Collapsed by default`,removeGroup:`Remove`},kanban:{addCard:`Add card`,addColumn:`Add column`,moveCard:`Move card`,deleteCard:`Delete card`,deleteColumn:`Delete column`,noCards:`No cards`,cardTitlePlaceholder:`Enter card title...`},timeline:{bucket:{overdue:`Overdue`,today:`Today`,tomorrow:`Tomorrow`,thisWeek:`This week`,nextWeek:`Next week`,later:`Later`,noDate:`No date`,unassigned:`Unassigned`}},gantt:{column:{taskName:`Task Name`,start:`Start`,end:`End`},toolbar:{prevPeriod:`Previous period`,nextPeriod:`Next period`,zoomIn:`Zoom in`,zoomOut:`Zoom out`,jumpToToday:`Jump to today`,today:`Today`,showTaskList:`Show task list`,hideTaskList:`Hide task list`}},view:{rename:`Rename`,duplicateView:`Duplicate View`,shareView:`Share View`,setAsDefault:`Set as Default`,pinView:`Pin View`,unpinView:`Unpin View`,changeViewType:`Change View Type`,deleteView:`Delete View`,addView:`Add View`,unsavedChanges:`Unsaved changes`,saveAsView:`Save as View`,moreViews:`{{count}} more`,activeFilters:`Active filters`,activeSort:`Active sort`,manageViews:`Manage views`,manageAllViews:`Manage all views…`,searchViews:`Search views`,addNewView:`Add new view`,done:`Done`,noViewsFound:`No views match your search.`,dragToReorder:`Drag to reorder`,defaultView:`Default view`,tabActionsFor:`View actions for {{name}}`,readonlyAriaLabel:`Read-only view`,readonlyTooltip:`System view — duplicate to customize.`},detail:{back:`Back`,edit:`Edit`,editInline:`Edit`,save:`Save`,saveChanges:`Save changes`,saving:`Saving…`,editFieldsInline:`Edit fields`,lockedByApproval:`Locked for approval`,lockedTooltip:`This record has a pending approval request; editing is locked`,cancelApproval:`Recall approval`,cancelApprovalInFlight:`Recalling…`,cancelApprovalTooltip:`Recall the pending approval request to unlock this record`,cancelApprovalFailed:`Failed to recall approval`,cancelApprovalUnavailable:`Recalling approvals is not supported on this data source`,linkCopied:`Link copied to clipboard`,linkCopyFailed:`Failed to copy link`,cancel:`Cancel`,cancelEdit:`Discard changes`,sectionMoreDetails:`More details`,concurrentUpdateTitle:`This record was modified by someone else`,concurrentUpdateDescription:`Another user saved a newer version of {{field}} while you were editing. To prevent silently overwriting their change, please choose how to resolve the conflict.`,concurrentUpdateYourEdit:`Your edit`,concurrentUpdateCurrentValue:`Current value`,concurrentUpdateUpdatedBy:`Updated by {{name}}`,concurrentUpdateUpdatedAt:`Updated at {{when}}`,concurrentUpdateReload:`Reload latest`,concurrentUpdateOverwrite:`Overwrite anyway`,concurrentUpdateCancel:`Cancel`,openInNewTab:`Open in new tab`,share:`Share`,duplicate:`Duplicate`,export:`Export`,viewHistory:`View history`,delete:`Delete`,moreActions:`More actions`,addToFavorites:`Add to favorites`,removeFromFavorites:`Remove from favorites`,previousRecord:`Previous record`,nextRecord:`Next record`,recordOf:`{{current}} of {{total}}`,recordNotFound:`Record not found`,recordNotFoundDescription:`The record you are looking for does not exist or may have been deleted.`,goBack:`Go back`,details:`Details`,related:`Related`,relatedRecords:`{{count}} records`,relatedRecordOne:`{{count}} record`,noRelatedRecords:`No related records found`,loading:`Loading...`,copyToClipboard:`Copy to clipboard`,copied:`Copied!`,deleteConfirmation:`Are you sure you want to delete this record?`,editRecord:`Edit record`,viewAll:`View All`,new:`New`,emptyValue:`—`,activity:`Activity`,history:`History`,editRow:`Edit`,deleteRow:`Delete`,deleteRowConfirmation:`Are you sure you want to delete this record?`,deleteRowTitle:`Delete record`,actions:`Actions`,previousPage:`Previous`,nextPage:`Next`,pageOf:`Page {{current}} of {{total}}`,sortBy:`Sort by`,filterPlaceholder:`Filter...`,highlightFields:`Key Fields`,comments:`Comments`,searchComments:`Search comments…`,addCommentPlaceholder:`Add a comment… (Ctrl+Enter to submit)`,noMatchingComments:`No matching comments`,noCommentsYet:`No comments yet`,pinned:`Pinned`,pin:`Pin`,unpin:`Unpin`,justNow:`just now`,minutesAgo:`{{count}}m ago`,hoursAgo:`{{count}}h ago`,daysAgo:`{{count}}d ago`,createdBy:`Created by`,updatedBy:`Updated by`,dropFilesToUpload:`Drop files here or click to upload`,attachmentCount:`{{count}} attachment`,attachmentCountPlural:`{{count}} attachments`,removeAttachment:`Remove attachment`,unifiedDiff:`Unified diff`,sideBySideDiff:`Side-by-side diff`,noChanges:`No changes`,previousVersion:`Previous`,currentVersion:`Current`,discussion:`Discussion`,showDiscussion:`Show Discussion ({{count}})`,hideDiscussion:`Hide discussion`,bold:`Bold (Ctrl+B)`,italic:`Italic (Ctrl+I)`,listFormat:`List`,inlineCode:`Inline code`,mentionSomeone:`Mention someone`,preview:`Preview`,submitComment:`Submit (Ctrl+Enter)`,sendComment:`Send`,writeComment:`Write a comment…`,subscribedTooltip:`Subscribed — click to unsubscribe`,unsubscribedTooltip:`Subscribe to notifications`,firstRecord:`First record (Home)`,previousRecordKey:`Previous record (←)`,nextRecordKey:`Next record (→)`,lastRecord:`Last record (End)`,noRecords:`No records`,showEmptyRelated_one:`+ {{count}} empty`,showEmptyRelated_other:`+ {{count}} empty`,searchWhileNavigating:`Search while navigating`,searchRecords:`Search records…`,allActivity:`All Activity`,commentsOnly:`Comments Only`,fieldChangesFilter:`Field Changes`,tasksOnly:`Tasks Only`,leaveCommentPlaceholder:`Leave a comment… (Ctrl+Enter to submit)`,noActivity:`No activity recorded`,loadMore:`Load more`,edited:`(edited)`,via:`via {{source}}`,replyCount:`{{count}} reply`,replyCountPlural:`{{count}} replies`,replyPlaceholder:`Reply…`,filterActivity:`Filter activity`,openDiscussion:`Open discussion panel`,closeDiscussion:`Close discussion panel`,subscribeAriaLabel:`Subscribe to notifications`,unsubscribeAriaLabel:`Unsubscribe from notifications`,clearSearch:`Clear search`,copyEmail:`Copy email`,copyPhone:`Copy phone number`,copyRecordId:`Copy record ID`,showEmptyFields:`Show {{count}} empty fields`,hideEmptyFields:`Hide empty fields`,noValue:`No value`},chart:{noData:`No chart data available`,loading:`Loading chart...`},report:{rowTotal:`Row Total`,columnTotal:`Column Total`,grandTotal:`Grand Total`,totals:`Totals`,rowsLabel:`Row`,columnsLabel:`Column`,allLabel:`(All)`,emptyLabel:`(Empty)`,loading:`Loading…`,failedToLoad:`Failed to load matrix: {{message}}`,needsAcross:"Matrix report requires at least one `groupingsAcross` field.",aggregate:{count:`Count`,countDistinct:`Distinct Count`,sum:`Sum`,avg:`Average`,min:`Min`,max:`Max`,first:`First`},editor:{breadcrumb:`Configuration`,basic:`Basic`,title:`Title`,titlePlaceholder:`e.g. Pipeline by Quarter`,description:`Description`,descriptionPlaceholder:`What does this report show?`,type:`Report type`,typeTabular:`Tabular — flat list`,typeSummary:`Summary — grouped with totals`,typeMatrix:`Matrix — pivot rows × columns`,typeJoined:`Joined — multiple blocks`,typeHelp:`Pick the layout that matches what you want to see.`,data:`Data`,objectName:`Data source`,objectNamePlaceholder:`e.g. opportunity`,objectNameHelp:`Which object should this report query?`,limit:`Row limit`,limitPlaceholder:`e.g. 100`,columns:`Columns`,columnsHint:`Pick which fields appear as columns. Add an aggregate (Sum, Count…) on Summary or Matrix reports.`,filters:`Filters`,filtersHint:`Limit the rows that go into this report.`,filtersComplex:`This report uses an advanced filter that cannot be edited here. Save will keep it unchanged.`,groupBy:`Group by`,groupByHint:`Group the data and compute subtotals.`,rows:`Rows`,rowsHint:`Group rows by these fields.`,columnsAxis:`Columns`,columnsAxisHint:`Pivot these fields across the top.`,values:`Values`,valuesHint:`Numbers shown in each cell. Pick one or more fields and add an aggregate (Sum, Count…).`,grouping:`Grouping`,addGrouping:`Add grouping`,dateGranularity:`Date bucket`,dateGranularityNone:`(use raw value)`,day:`Day`,week:`Week`,month:`Month`,quarter:`Quarter`,year:`Year`,sortAsc:`Ascending`,sortDesc:`Descending`,chart:`Chart`,chartHint:`Optional visualization rendered alongside the table.`,chartType:`Chart type`,chartTitle:`Chart title`,chartTitlePlaceholder:`Defaults to the report title`,chartXAxis:`X-axis (category)`,chartYAxis:`Y-axis (value)`,chartShowLegend:`Show legend`,chartShowDataLabels:`Show data labels`,chartNone:`(no chart)`,chartBar:`Bar`,chartLine:`Line`,chartArea:`Area`,chartPie:`Pie`,chartDonut:`Donut`,chartFunnel:`Funnel`,validationNeedsObject:`Pick a data source before adding columns.`,validationMatrixNeedsRowsCols:`Matrix reports need at least one Row and one Column.`,validationSummaryNeedsRows:`Summary reports need at least one grouping field.`,blocks:`Blocks`,blocksHint:`Each block is its own table or chart. Block-level filters are ANDed with the report filter.`,addBlock:`Add block`,removeBlock:`Remove block`,blockName:`Block name`,blockNamePlaceholder:`unique_block_name`,blockLabel:`Display label`,blockLabelPlaceholder:`Shown above the block`,blockDescription:`Description`,blockDescriptionPlaceholder:`Optional context for this block`,validationJoinedNeedsBlocks:`Joined reports need at least one block.`,validationBlockNameRequired:`Every block needs a non-empty name.`,validationBlockNameDuplicate:`Block names must be unique within the report.`,validationBlockNeedsColumns:`Every block needs at least one column.`,noneOption:`(none)`,addCondition:`Add condition`,combineLogic:`Combine with`,opContains:`contains`,opIsEmpty:`is empty`,opIsNotEmpty:`is not empty`,formatAuto:`Auto`,formatCurrency:`Currency`,formatPercent:`Percent`,formatInteger:`Integer`,formatDate:`Date`,formatDatetime:`Date & time`,columnLabelPlaceholder:`Label override`,aggregateColumn:`Aggregate`,formatColumn:`Format`,addColumns:`Add fields`,searchFields:`Search fields…`,noMatchingFields:`No fields match your search.`,noFieldsAvailable:`No fields available.`,columnsCount:`{n} column(s) selected`,columnsEmpty:`No columns selected yet.`,fieldPickerTitle:`Select fields`,fieldPickerDescription:`Pick one or more fields to add. Use the search box to narrow the list.`,fieldPickerChangeTitle:`Change field`,fieldPickerAddGroupingTitle:`Add grouping`,fieldPickerEmpty:`(pick field)`,fieldPickerSelected:`{n} selected`,fieldPickerClear:`Clear selection`,fieldPickerAdd:`Add`,fieldPickerAddN:`Add {n}`}},map:{searchLocations:`Search locations…`,locationDetails:`Location Details`,markersCount:`{{count}} markers`,invalidCoordinates:`{{count}} record with missing or invalid coordinates excluded from the map.`,invalidCoordinatesPlural:`{{count}} records with missing or invalid coordinates excluded from the map.`},workflow:{draft:`Draft`,active:`Active`,paused:`Paused`,completed:`Completed`,cancelled:`Cancelled`,save:`Save`,publish:`Publish`,addNode:`Add Node`,workflowFlow:`Workflow Flow`,properties:`Properties`,connections:`Connections`,quickConnect:`Quick Connect`,fromPlaceholder:`From...`,toPlaceholder:`To...`,connect:`Connect`,label:`Label`,type:`Type`,description:`Description`,assignee:`Assignee`,assigneeType:`Assignee Type`,user:`User`,role:`Role`,group:`Group`,expression:`Expression`,timeoutMinutes:`Timeout (minutes)`,selectNodeToEdit:`Select a node to edit its properties`,workflowTitle:`Workflow Title`,newWorkflow:`New Workflow`,outConnections:`{{count}} out`,start:`Start`,end:`End`,task:`Task`,userTask:`User Task`,serviceTask:`Service Task`,scriptTask:`Script Task`,approval:`Approval`,condition:`Condition`,parallelGateway:`Parallel Gateway`,joinGateway:`Join Gateway`,boundaryEvent:`Boundary Event`,delay:`Delay`,notification:`Notification`,webhook:`Webhook`,allowConcurrency:`Allow (run concurrently)`,forbidConcurrency:`Forbid (skip new)`,replaceConcurrency:`Replace (cancel existing)`,queueConcurrency:`Queue (run after current)`,conditionEvent:`Condition`,manualEvent:`Manual`,webhookEvent:`Webhook`,timerEvent:`Timer`,signalEvent:`Signal`,versionHistory:`Version History`,importBpmn:`Import BPMN`,exportBpmn:`Export BPMN`,undo:`Undo`,redo:`Redo`,resetZoom:`Reset zoom`},dashboard:{addWidget:`Add widget`,removeWidget:`Remove widget`,editLayout:`Edit layout`,saveLayout:`Save layout`,resetLayout:`Reset layout`,total:`Total`,noDataAvailable:`No data available`,noDataSourceFor:`No data source available for`,trend:{vsLastQuarter:`vs last quarter`,vsLastMonth:`vs last month`,vsLastWeek:`vs last week`,vsLastYear:`vs last year`,vsYesterday:`vs yesterday`,vsPreviousPeriod:`vs previous period`}},configPanel:{save:`Save`,discard:`Discard`,close:`Close`,layout:`Layout`,columns:`Columns`,gap:`Gap`,rowHeight:`Row height`,data:`Data`,refreshInterval:`Refresh interval`,appearance:`Appearance`,title:`Title`,showDescription:`Show description`,theme:`Theme`,configuration:`Configuration`,general:`General`,advanced:`Advanced`},appDesigner:{createApp:`Create Application`,editApp:`Edit Application`,basicInfo:`Basic Info`,objects:`Objects`,navigation:`Navigation`,branding:`Branding`,appName:`App Name`,appTitle:`Title`,appDescription:`Description`,appIcon:`Icon`,template:`Template`,layout:`Layout`,layoutSidebar:`Sidebar`,layoutHeader:`Header`,layoutEmpty:`Empty`,selectObjects:`Select Objects`,searchObjects:`Search objects…`,selectAll:`Select All`,deselectAll:`Deselect All`,navBuilder:`Navigation Builder`,addGroup:`Add Group`,addUrl:`Add URL`,addSeparator:`Add Separator`,noNavItems:`No navigation items yet.`,logoUrl:`Logo URL`,primaryColor:`Primary Color`,faviconUrl:`Favicon URL`,preview:`Preview`,complete:`Complete`,snakeCaseHint:`Must be snake_case (e.g. my_app)`,modeEdit:`Edit`,modePreview:`Preview`,modeCode:`Code`,addWidget:`Add Widget`,widgetProperties:`Widget Properties`,dataSource:`Data Source`,valueField:`Value Field`,aggregate:`Aggregate`,colorVariant:`Color Variant`,addComponent:`Add Component`,componentProperties:`Component Properties`,viewType:`View Type`,fields:`Fields`,toolbar:`Toolbar`,showSearch:`Show Search`,showFilters:`Show Filters`,showSort:`Show Sort`,appearance:`Appearance`,rowHeight:`Row Height`,stripedRows:`Striped Rows`,bordered:`Bordered`,livePreview:`Live Preview`,stepBasicDesc:`Name, title, and layout`,stepObjectsDesc:`Select business objects`,stepNavigationDesc:`Build navigation tree`,stepBrandingDesc:`Logo, colors, and favicon`,noObjectsFound:`No objects found.`,noNavItemsHint:`No navigation items yet. Select objects in the previous step or add items manually.`,separator:`Separator`,separatorLabel:`— Separator —`,newGroup:`New Group`,newLink:`New Link`,saveDraft:`Save Draft`,cancelConfirmTitle:`Discard changes?`,cancelConfirmMessage:`You have unsaved changes. Are you sure you want to cancel?`,confirmDiscard:`Discard`,keepEditing:`Keep Editing`,navNoItems:`No navigation items. Click buttons above to add items.`,navNoPreviewItems:`No items`,navLivePreview:`Live Preview`,navCollapseGroup:`Collapse group`,navExpandGroup:`Expand group`,navAddChild:`Add child`,navMoveUp:`Move up`,navMoveDown:`Move down`,navRemove:`Remove`,navObjectPage:`Object Page`,navDashboard:`Dashboard`,navPage:`Page`,navReport:`Report`,navGroup:`Group`,navUrl:`URL`,navSeparator:`Separator`,navTypeObject:`Object`,navTypeDashboard:`Dashboard`,navTypePage:`Page`,navTypeReport:`Report`,navTypeUrl:`URL`,navTypeGroup:`Group`,navTypeSeparator:`Separator`,navTypeAction:`Action`,navEditIcon:`Edit icon`,navToggleVisible:`Toggle visibility`,navHidden:`Hidden`,navExportSchema:`Export JSON`,navImportSchema:`Import JSON`,navExportSuccess:`Navigation schema exported`,navImportSuccess:`Navigation schema imported`,navImportError:`Invalid navigation JSON`,navIconPlaceholder:`Icon name (e.g. Users)`,dashboardEditor:`Dashboard Editor`,noWidgets:`No widgets. Click a button above to add one.`,widgetLayoutSize:`Layout Size`,widgetWidth:`Width`,widgetHeight:`Height`,dashboardPreview:`Dashboard Preview`,noWidgetsPreview:`No widgets to preview`,pageCanvasEditor:`Page Canvas Editor`,emptyPage:`Empty page. Click a button above to add a component.`,pagePreview:`Page Preview`,noComponentsPreview:`No components to preview`,modePage:`Page`,modeDashboard:`Dashboard`,undo:`Undo`,redo:`Redo`,brandingEditor:`Branding Editor`,brandingExport:`Export JSON`,brandingImport:`Import JSON`,brandingPreview:`Preview`,brandingSampleButton:`Sample Button`,brandingSampleText:`This is how your brand theme will look.`,colorPalette:`Color Palette`,fontFamily:`Font Family`,fontDefault:`Default (System)`,modeLight:`Light`,modeDark:`Dark`,mobilePreview:`Mobile Preview`,objectManager:{title:`Object Manager`,addObject:`New Object`,searchPlaceholder:`Search objects…`,noObjects:`No objects found.`,objectName:`API Name`,objectLabel:`Label`,pluralLabel:`Plural Label`,icon:`Icon`,selectIcon:`Select icon…`,group:`Group`,noGroup:`No Group`,sortOrder:`Sort Order`,enabled:`Enabled`,relationships:`Relationships`,systemBadge:`System`,fieldCount:`{{count}} fields`,ungrouped:`Ungrouped`,deleteConfirmTitle:`Delete Object?`,deleteConfirmMessage:`This will permanently delete the object and all its fields. This action cannot be undone.`},fieldDesigner:{title:`Field Designer`,addField:`New Field`,searchPlaceholder:`Search fields…`,allTypes:`All Types`,noFields:`No fields found.`,fieldName:`API Name`,fieldLabel:`Label`,fieldType:`Type`,fieldGroup:`Group`,description:`Description`,required:`Required`,unique:`Unique`,readOnly:`Read Only`,hidden:`Hidden`,indexed:`Indexed`,externalId:`External ID`,trackHistory:`Track History`,defaultValue:`Default Value`,placeholder:`Placeholder`,referenceTo:`Reference To`,formula:`Formula`,options:`Options`,addOption:`Add Option`,validationRules:`Validation Rules`,addRule:`Add Rule`,systemBadge:`System`,ungrouped:`General`,deleteConfirmTitle:`Delete Field?`,deleteConfirmMessage:`This will permanently delete the field. Existing data in this field will be lost.`,basicSection:`Basic`,typeSpecificSection:`Type Settings`,advancedSection:`Advanced`,typeCategory:{text:`Text`,number:`Number`,date:`Date & Time`,choice:`Choice`,relation:`Relation`,advanced:`Advanced`}}},console:{title:`ObjectOS`,initializing:`Initializing application...`,search:`Search…`,breadcrumb:{dashboards:`Dashboards`,pages:`Pages`,reports:`Reports`,system:`System`},nav:{pinItem:`Pin {{name}}`,unpinItem:`Unpin {{name}}`,dragToReorder:`Drag to reorder`,favorites:`Favorites`},loadingSteps:{connecting:`Connecting to data source`,loadingConfig:`Loading configuration`,preparingWorkspace:`Preparing workspace`},error:{connectionFailed:`Cannot connect to server`,serverUnreachable:`The server at {{url}} is unreachable.`,checkServer:`Please check your network connection or that the backend is running.`,timeout:`Connection timed out after 10 seconds.`},actions:{retry:`Retry`,retrying:`Retrying…`},shortcuts:{title:`Keyboard Shortcuts`,description:`Quick reference for all available keyboard shortcuts.`,groups:{general:`General`,navigation:`Navigation`,dataViews:`Data Views`,preferences:`Preferences`},openCommandPalette:`Open command palette`,showShortcuts:`Show keyboard shortcuts`,closeDialog:`Close dialog / panel`,toggleSidebar:`Toggle sidebar`,focusSearch:`Focus search`,createRecord:`Create new record`,refreshData:`Refresh data`,editRecord:`Edit selected record`,toggleDarkMode:`Toggle dark mode`},commandPalette:{placeholder:`Type a command or search...`,noResults:`No results found.`,searching:`Searching…`,records:`Records`,recentRecords:`Recently viewed`,objects:`Objects`,dashboards:`Dashboards`,pages:`Pages`,reports:`Reports`,switchApp:`Switch App`,current:`Current`,preferences:`Preferences`,lightTheme:`Light Theme`,darkTheme:`Dark Theme`,systemTheme:`System Theme`,actions:`Actions`,openFullSearch:`Open Full Search Page`,createApp:`Create New App`},errors:{somethingWentWrong:`Something went wrong`,unexpectedError:`An unexpected error occurred while rendering this view.`,tryAgain:`Try Again`,goHome:`Go Home`,errorDetails:`Error Details (dev only)`},theme:{toggle:`Toggle theme`,light:`Light`,dark:`Dark`,system:`System`},objectView:{objectNotFound:`Object Not Found`,objectNotFoundDescription:`The object "{{objectName}}" does not exist in the current configuration.`,objectNotFoundHint:`Check your app navigation settings or select a different object from the sidebar.`,allRecords:`All Records`,exitDesignMode:`Exit Design Mode`,enterDesignMode:`Enter Design Mode`,metadataInspector:`Metadata Inspector`,editView:`Edit View`,addView:`Add View`,designTools:`Design tools`,new:`New`,import:`Import`,importTitle:`Import from CSV`,importedToast:`Imported {{count}} row(s).`,importedWithSkipped:`Imported {{ok}} row(s); skipped {{skipped}}.`,configureView:`Configure View`,closePanel:`Close panel`,showAdvancedSettings:`Show advanced settings`,showFewerSettings:`Show fewer settings`,page:`Page`,pageConfigHint:`Toolbar, navigation & view shell settings`,listConfigHint:`Data rendering, columns & appearance for this list type`,general:`General`,generalHint:`View title, description, and type`,toolbar:`Toolbar`,toolbarHint:`Search, filter, sort, group, and density toggles`,toolbarEnabledCount:`{{count}} of {{total}} enabled`,navigationSection:`Navigation`,navigationHint:`Row click behavior and detail view settings`,records:`Records`,recordsHint:`Selection mode, add record, and inline editing`,exportPrint:`Export & Print`,exportPrintHint:`Export formats, printing, and record count display`,showAllFields:`Show All`,hideAllFields:`Hide All`,searchFields:`Search fields...`,title:`Title`,description:`Description`,data:`Data`,source:`Source`,columns:`Columns`,filterBy:`Filter by`,sortBy:`Sort by`,appearance:`Appearance`,showDescription:`Show description`,viewType:`View type`,userFilters:`User filters`,enableSearch:`Enable search`,enableFilter:`Enable filter`,enableSort:`Enable sort`,enableHideFields:`Enable hide fields`,enableGroup:`Enable group`,enableColor:`Enable color`,enableDensity:`Enable density`,userActions:`User actions`,addRecordViaForm:`Add records through a form`,advanced:`Advanced`,allowExport:`Allow export`,recordCount:`{{count}} records`,noDescription:`No description`,none:`None`,columnsConfigured:`{{count}} columns`,save:`Save`,discard:`Discard`,createView:`Create View`,createViewDesc:`Pick a view type, then give it a name. You can change every setting afterwards.`,cancel:`Cancel`,create:`Create`,delete:`Delete`,deleteViewTitle:`Delete view`,deleteViewConfirm:`Are you sure you want to delete the view "{{name}}"? This cannot be undone.`,bulkDeleteConfirm:`Delete {{count}} selected records? This cannot be undone.`,duplicateViewName:`A view with this name already exists.`,viewTypeGrid:`Grid`,viewTypeGridDesc:`A spreadsheet-style table of records.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Cards grouped into columns by a single-select field.`,viewTypeCalendar:`Calendar`,viewTypeCalendarDesc:`Records placed on a monthly calendar by date.`,viewTypeGallery:`Gallery`,viewTypeGalleryDesc:`Large image cards driven by an attachment field.`,viewTypeTimeline:`Timeline`,viewTypeTimelineDesc:`Records along a horizontal time axis.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Project bars with start / end and dependencies.`,viewTypeMap:`Map`,viewTypeMapDesc:`Geographic markers from latitude / longitude fields.`,viewTypeChart:`Chart`,viewTypeChartDesc:`Aggregated bar / line / pie visualisations.`,newView:`New View`,typeOptions:`Type Options`,groupByField:`Group by field`,groupByFieldHelp:`The kanban groups records into columns by this field's values.`,startDateField:`Start date field`,startDateFieldHelp:`The calendar places records on the cell matching this date.`,ganttStartDateFieldHelp:`The left edge of each Gantt bar uses this date.`,ganttEndDateFieldHelp:`The right edge of each Gantt bar uses this date.`,timelineDateFieldHelp:`Records are placed on the timeline by this date.`,titleField:`Title field`,latitudeField:`Latitude field`,latitudeFieldHelp:`Field providing the latitude coordinate (geo fields only).`,longitudeField:`Longitude field`,longitudeFieldHelp:`Field providing the longitude coordinate (geo fields only).`,imageField:`Image field`,imageFieldHelp:`The gallery cover comes from this image or attachment field.`,dateField:`Date field`,selectField:`Select field...`,selectOption:`Select...`,noEligibleFieldForType:`No eligible field of this type. Add one to the object first.`,viewTypeUnavailable:`This object has no field that can serve as "{{field}}".`,viewTypeUnavailableShort:`Not supported by this object.`,chartType:`Chart type`,chartTypeHelp:`Determines how the data is rendered.`,chartTypeBar:`Bar chart`,chartTypeLine:`Line chart`,chartTypePie:`Pie chart`,chartTypeArea:`Area chart`,chartTypeScatter:`Scatter chart`,xAxisField:`X-axis field`,xAxisFieldHelp:`The categorical or time dimension.`,yAxisField:`Y-axis field`,yAxisFieldHelp:`The numeric field to aggregate.`,gridOptionsHint:`Grid view uses the columns configured above.`,groupBy:`Group by`,prefixField:`Prefix field`,fields:`Fields`,fieldsVisible:`{{count}} visible`,sortsCount:`{{count}} sorts`,filtersCount:`{{count}} filters`,endDateField:`End date field`,color:`Color`,fieldTextColor:`Field text color`,rowHeight:`Row height`,wrapHeaders:`Wrap headers`,showFieldDescriptions:`Show field descriptions`,collapseAllByDefault:`Collapse all by default`,striped:`Striped rows`,bordered:`Bordered cells`,inlineEdit:`Edit records inline`,addDeleteRecordsInline:`Add/delete records inline`,clickIntoRecordDetails:`Click into record details`,navigationMode:`Navigation mode`,navigationWidth:`Navigation width`,navigationWidthHint:`Available for drawer, modal, and split navigation modes`,openNewTab:`Open in new tab`,openNewTabHint:`Available for page and new window navigation modes`,selectionMode:`Selection mode`,selectionNone:`None`,selectionSingle:`Single`,selectionMultiple:`Multiple`,pageSize:`Page size`,pageSizeOptions:`Page size options`,exportFormats:`Export formats`,exportMaxRecords:`Max records`,exportIncludeHeaders:`Include headers`,exportFileNamePrefix:`File name prefix`,searchableFields:`Searchable fields`,filterableFields:`Filterable fields`,resizableColumns:`Resizable columns`,densityCompact:`Compact`,densityComfortable:`Comfortable`,densitySpacious:`Spacious`,densityMode:`Density mode`,hiddenFields:`Hidden fields`,rowActions:`Row actions`,bulkActions:`Bulk actions`,sharing:`Sharing`,sharingEnabled:`Enable sharing`,sharingVisibility:`Visibility`,addRecordEnabled:`Enable add record`,addRecordPosition:`Position`,addRecordMode:`Mode`,addRecordFormView:`Form view`,conditionalFormatting:`Conditional formatting`,addRule:`Add rule`,quickFilters:`Quick filters`,addQuickFilter:`Add quick filter`,ufElements:`Elements`,ufDropdown:`Dropdown`,ufTabs:`Tabs`,ufToggle:`Toggle`,ufAddField:`+ Add filter field...`,ufNoFields:`No fields available`,ufAddTab:`+ Add tab`,ufTabLabel:`Label`,ufShowAllRecords:`Show "All records" tab`,ufAllowAddTab:`Allow adding tabs`,showRecordCount:`Show record count`,allowPrinting:`Allow printing`,virtualScroll:`Virtual scroll`,emptyStateTitle:`Empty state title`,emptyStateMessage:`Empty state message`,emptyStateIcon:`Empty state icon`,ariaLabel:`ARIA label`,ariaDescribedBy:`ARIA described by`,ariaLive:`ARIA live`,accessibility:`Accessibility`,viewTabs:`View Tabs`},localeSwitcher:{label:`Language`}},auth:{login:{title:`Sign in to your account`,description:`Enter your email and password to continue`,emailLabel:`Email`,emailPlaceholder:`name@example.com`,passwordLabel:`Password`,passwordPlaceholder:`Enter your password`,forgotPasswordText:`Forgot password?`,submitButton:`Sign In`,submittingButton:`Signing in...`,noAccountText:`Don't have an account?`,signUpText:`Sign up`,errors:{invalidCredentials:`Invalid email or password. Please try again.`,emailNotVerified:`Please verify your email address before signing in.`}},register:{title:`Create an account`,description:`Enter your information to get started`,nameLabel:`Name`,namePlaceholder:`John Doe`,emailLabel:`Email`,emailPlaceholder:`name@example.com`,passwordLabel:`Password`,passwordPlaceholder:`Create a password (min. 8 characters)`,confirmPasswordLabel:`Confirm Password`,confirmPasswordPlaceholder:`Confirm your password`,passwordMismatchError:`Passwords do not match`,passwordTooShortError:`Password must be at least 8 characters`,submitButton:`Create Account`,submittingButton:`Creating account...`,hasAccountText:`Already have an account?`,signInText:`Sign in`,errors:{userExists:`An account with this email already exists. Try signing in instead.`},verifyInbox:{title:`Check your inbox`,description:`We've sent a verification link to {{email}}. Click the link to activate your account.`,resend:`Resend verification email`,resending:`Sending…`,resent:`Verification email sent.`,backToSignIn:`Back to sign in`}},forgotPassword:{title:`Reset your password`,description:`Enter your email address and we'll send you a link to reset your password`,emailLabel:`Email`,emailPlaceholder:`name@example.com`,submitButton:`Send Reset Link`,submittingButton:`Sending...`,successTitle:`Check your email`,successDescription:`We've sent a password reset link to {{email}}. Please check your inbox.`,backToSignInText:`Back to sign in`,rememberPasswordText:`Remember your password?`,signInText:`Sign in`},resetPassword:{title:`Set a new password`,description:`Choose a password you have not used before.`,newPassword:`New password`,confirmPassword:`Confirm password`,submit:`Update password`,submitting:`Updating…`,success:`Password updated`,failed:`Reset failed`,invalidToken:`This reset link is invalid or has expired.`,missingToken:`Reset link is missing or expired`,passwordsMismatch:`Passwords do not match`,requestNewLink:`Request a new link`},verifyEmail:{title:`Verify your email address`,description:`We sent a verification link to your email address. Please click the link to verify your account.`,sentTo:`Sent to:`,verifyingTitle:`Verifying…`,verifyingDescription:`Hang tight while we confirm your email.`,successTitle:`Email verified`,successDescription:`Your email is confirmed. You can now sign in.`,errorTitle:`Verification failed`,errorDescription:`Verification failed. Please request a new link.`,missingToken:`Verification link is missing a token.`,emailMissing:`Email address is missing`,resendButton:`Resend verification email`,resending:`Sending…`,resent:`Email sent! Check your inbox`,resentSuccess:`Verification email sent!`,resentDescription:`Please check your inbox and click the verification link.`,resendFailed:`Cannot resend verification email`,signInLink:`Go to sign in`,backToSignIn:`Back to sign in`,backToLogin:`Back to login`,checkSpam:`Didn't receive the email? Check your spam folder or contact support.`,or:`Or`},setup:{welcomeTitle:`Welcome to ObjectStack`,description:`Create the first owner account to finish setting up this deployment.`,yourName:`Your name`,orgName:`Organization name`,orgNamePlaceholder:`Acme Inc.`,emailLabel:`Email`,emailPlaceholder:`name@example.com`,passwordLabel:`Password`,passwordHint:`Minimum 8 characters`,submit:`Create owner account`,submitting:`Setting up…`,failed:`Setup failed`},device:{title:`Authorize new device`,subtitle:`Approve this device to sign in as {{email}}.`,userCodeLabel:`Device code`,loggedInAs:`Signed in as {{email}}`,approve:`Approve device`,approving:`Approving…`,approvedTitle:`Device authorized`,approvedDescription:`You can return to the device — it should sign in shortly.`,approveSuccess:`Device authorized`,approveSuccessDescription:`You can close this window.`,approveFailed:`Approval failed`,deny:`Deny request`,denying:`Denying…`,deniedTitle:`Access denied`,deniedDescription:`The device will not be granted access.`,denyFailed:`Failed to deny request`,invalidTitle:`Invalid device link`,invalidDescription:`No device code was provided in the URL.`,loading:`Loading…`,cancel:`Cancel`},shell:{tenantHostHint:`You are signing in to this workspace`}},errors:{networkError:`Network error. Please check your connection.`,serverError:`Server error. Please try again later.`,notFound:`Resource not found.`,unauthorized:`You are not authorized to perform this action.`,forbidden:`Access denied.`,timeout:`Request timed out. Please try again.`,unknown:`An unexpected error occurred.`},workspace:{label:`Workspaces`,default:`My Workspace`,switch:`Switch workspace`,create:`Create workspace`,createTitle:`Create a workspace`,createDescription:`A workspace is a shared space for your team to collaborate.`,createButton:`Create workspace`,nameLabel:`Workspace name`,namePlaceholder:`e.g., Acme Inc`,slugLabel:`URL slug`,slugHint:`Used in URLs. Only lowercase letters, numbers, and hyphens.`,invite:`Invite member`,members:`Members`,settings:`Workspace settings`},sidebar:{settings:`Settings`,help:`Help`,helpTooltip:`Help & Documentation`,activityFeed:`Activity feed`,notifications:`Notifications`,approvals:`Approvals`,inbox:`Inbox`,inboxAriaLabel:`Open inbox`,area:`Area`,recent:`Recent`,favorites:`Favorites`,starred:`Starred`,removeFromFavorites:`Remove {{name}} from favorites`},home:{title:`Home`,subtitle:`Your workspace dashboard`,nav:`Home`,allApps:`All Applications`,greetingMorning:`Good morning`,greetingAfternoon:`Good afternoon`,greetingEvening:`Good evening`,greetingNight:`Working late`,heroTagline:`Pick up where you left off, or explore something new.`,open:`Open`,stats:{apps:`Applications`,starred:`Starred`,recent:`Recent items`},loading:`Loading workspace...`,recent:`Recent`,starred:`Starred`,welcome:`Welcome to ObjectUI`,welcomeDescription:`Get started by creating your first application or configure your system settings.`,createFirstApp:`Create Your First App`,systemSettings:`System Settings`,browseMarketplace:`Browse App Marketplace`,quickActions:{title:`Quick Actions`,createApp:`Create App`,createAppDesc:`Start with a new application`,manageObjects:`Manage Objects`,manageObjectsDesc:`Configure data models`,systemSettings:`System Settings`,systemSettingsDesc:`Configure your workspace`},recentApps:{title:`Recently Accessed`,itemType:{object:`Object`,dashboard:`Dashboard`,page:`Page`,record:`Record`}},starredApps:{title:`Starred`},gettingStarted:{title:`Make this home yours`,description:`Star an app to pin it here for one-click access. Anything you open will show up under Recently Accessed automatically.`,cta:`Browse all applications`},appCard:{noDescription:`No description`,default:`Default`}},layout:{appSwitcher:{home:`Home`,addApp:`Add App`,editApp:`Edit App`,manageAllApps:`Manage All Apps`,systemConsole:`System Console`,noAppsConfigured:`No apps configured`},activityFeed:{title:`Recent Activity`,filter:`Filter`,empty:`No recent activity`,viewAll:`View all activity`,ariaLabel:`Activity feed`,typeCreate:`Create`,typeUpdate:`Update`,typeDelete:`Delete`,typeComment:`Comment`,relativeJustNow:`just now`,relativeSecondsAgo:`{{count}}s ago`,relativeMinutesAgo:`{{count}}m ago`,relativeHoursAgo:`{{count}}h ago`,relativeDaysAgo:`{{count}}d ago`},metadata:{label:`Metadata`,toggleTitle:`Toggle Metadata Inspector`,panelTitle:`Metadata Inspector`,jsonBadge:`JSON`,copyJson:`Copy JSON`}},search:{title:`Search`,back:`Back`,placeholder:`Search objects, dashboards, pages, reports...`,inputAriaLabel:`Search objects, dashboards, pages, reports`,resultsCount:`{{count}} result for "{{query}}"`,resultsCountPlural:`{{count}} results for "{{query}}"`,itemsAvailable:`{{count}} items available`,noResults:`No results found`,noResultsHint:`Try adjusting your search terms`,typeObjects:`Objects`,typeDashboards:`Dashboards`,typePages:`Pages`,typeReports:`Reports`,badgeObject:`object`,badgeDashboard:`dashboard`,badgePage:`page`,badgeReport:`report`},empty:{objectNotFound:`Object Not Found`,objectNotFoundDescription:`Object "{{name}}" definition missing. Check your configuration or navigate back to select a valid object.`,recordNotFound:`Record not found`,recordNotFoundDescription:`The record you are looking for does not exist or may have been deleted.`,pageNotFound:`Page Not Found`,pageNotFoundDescription:`The page "{{name}}" could not be found. It may have been removed or renamed.`,dashboardNotFound:`Dashboard Not Found`,dashboardNotFoundDescription:`The dashboard "{{name}}" could not be found. It may have been removed or renamed.`,reportNotFound:`Report Not Found`,reportNotFoundDescription:`The report "{{name}}" could not be found. It may have been removed or renamed.`,noAppsConfigured:`No Apps Configured`,noAppsConfiguredDescription:`No applications have been registered. Create your first app or visit System Settings to configure your environment.`,createFirstApp:`Create Your First App`,systemSettings:`System Settings`,back:`Back`},renderer:{noPageSchema:`No page schema provided`,noFormSchema:`No form schema provided`,noDashboardSchema:`No dashboard schema provided`,pageRendering:`Page rendering: {{name}}`,dashboardRendering:`Dashboard rendering: {{name}}`,formRenderingMode:`Form rendering in {{mode}} mode`,formRenderingFor:`for record {{id}}`,createRecord:`Create Record`,editRecord:`Edit Record`,page:`Page`,dashboard:`Dashboard`,save:`Save`,cancel:`Cancel`},actionDialog:{title:`Action Parameters`,description:`Please provide the required information to continue.`,selectPlaceholder:`Select {{label}}`,requiredError:`{{label}} is required`,lookupPlaceholder:`Paste the {{label}} record id (UUID)`,lookupHelpText:`Enter the record id of the referenced object. A picker is coming soon.`,cancel:`Cancel`,confirm:`Confirm`,defaultActionTitle:`Action`,ok:`OK`},rowAction:{openMenu:`Open menu`,edit:`Edit`,delete:`Delete`},navigationSync:{addedPage:`Navigation updated: added page "{{name}}"`,addedDashboard:`Navigation updated: added dashboard "{{name}}"`,removedPage:`Navigation updated: removed page "{{name}}"`,removedDashboard:`Navigation updated: removed dashboard "{{name}}"`,renamedPage:`Navigation updated: renamed page "{{oldName}}" → "{{newName}}"`,renamedDashboard:`Navigation updated: renamed dashboard "{{oldName}}" → "{{newName}}"`,undoLabel:`Undo`,undone:`Navigation change undone`,undoFailed:`Failed to undo navigation change`,updateFailed:`Failed to update navigation`},objectActions:{deleteSuccess:`{{label}} deleted successfully`,deleteFailed:`Failed to delete {{label}}`,noRecordId:`No record ID provided`,deleteConfirm:`Are you sure you want to delete this record?`,bulkDeleteSuccess:`Deleted {{count}} {{label}} records`,bulkDeletePartial:`{{succeeded}} deleted, {{failed}} failed`},objectViewActions:{renameFailed:`Failed to rename view`,deleteFailed:`Failed to delete view`},dashboardActions:{pdfPreparing:`Preparing PDF export…`,exportFailed:`Export failed: {{message}}`,forecastSoon:`Forecast view coming soon`},recordDetail:{viewersTooltip:`Users viewing this record`},cellRender:{empty:`Empty`,yes:`Yes`,no:`No`,systemFields:`System`},user:{profile:`Profile`,settings:`Settings`,logout:`Log out`,preferences:`Preferences`,theme:`Theme`,language:`Language`},organizations:{mine:`My Organizations`,title:`Organizations`,heading:`Your Organizations`,subtitle:`Select an organization to continue, or create a new one.`,searchPlaceholder:`Search for an organization`,new:`New organization`,current:`Current organization`,manage:`Manage`,emptyTitle:`No organizations yet`,emptyDescription:`Create your first organization to get started.`,noMatches:`No organizations match your search.`},notifications:{empty:`No notifications`,emptyUnread:`You're all caught up`,filterUnread:`Unread`,filterAll:`All`,markAllRead:`Mark all read`,viewAll:`View all notifications`,approvalsPending:`{{count}} pending approvals`,viewApprovals:`View approvals`,noPendingApprovals:`No pending approvals`,openApprovalsInbox:`Open Approvals Inbox`},publicForm:{submit:`Submit`,submitting:`Submitting…`,submitAnother:`Submit another response`,poweredBy:`Powered by ObjectStack`,secureNotice:`Your information is transmitted securely and only used to respond to your request.`,thankYouTitle:`Thank you!`,thankYouMessage:`Your submission has been received successfully.`,redirecting:`Redirecting in {{seconds}} seconds…`,unavailableTitle:`Form unavailable`,unavailableDescription:`No public form is available at this URL. Make sure the underlying view has anonymous sharing enabled and matches this slug.`,tryDemo:`Try the demo`,retry:`Retry`,loading:`Loading form…`,requiredHint:`* Required field`,consentLabelDefault:`I agree to the privacy policy and consent to my data being processed for this request.`,consentLink:`Privacy policy`,consentRequired:`Please accept the privacy policy to continue.`,rateLimited:`Please take a moment to review your answers before submitting.`,redirectBlocked:`Submission accepted, but the redirect URL was blocked for security.`,demo:{contactTitle:`Contact us`,contactDescription:`Tell us about your project and a sales representative will get back to you within one business day.`,supportTitle:`Submit a support request`,supportDescription:`Tell us what is going wrong — our team responds within one business day.`,thankYouSalesTitle:`Thanks — we received your message!`,thankYouSalesMessage:`A sales representative will be in touch within one business day.`,thankYouSupportTitle:`Got it — your request is in the queue.`,thankYouSupportMessage:`A support engineer will follow up shortly. Save this page if you have more screenshots to add.`,field:{firstName:`First name`,lastName:`Last name`,email:`Work email`,phone:`Phone`,jobTitle:`Job title`,company:`Company`,website:`Website`,industry:`Industry`,companySize:`Company size`,howCanWeHelp:`How can we help?`,subject:`Subject`,description:`Description`,issueType:`Issue type`,priority:`Priority`},industry:{technology:`Technology`,software:`Software / SaaS`,finance:`Finance`,healthcare:`Healthcare`,retail:`Retail`,other:`Other`},issueType:{question:`Question`,problem:`Problem`,bug:`Bug`,feature_request:`Feature request`},priority:{low:`Low`,medium:`Medium`,high:`High`,critical:`Critical`}}},marketplace:{title:`App Marketplace`,subtitle:`Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.`,searchPlaceholder:`Search apps by name or manifest ID…`,searchAria:`Search marketplace apps`,installed:`Installed`,installedCount:`Installed ({{count}})`,refresh:`Refresh`,all:`All`,noApprovedYet:`No apps have been approved for the marketplace yet.`,noMatchFilters:`No apps match your filters.`,noDescription:`No description provided.`,back:`Back to marketplace`,installedTitle:`Installed Apps`,installedSubtitle:`Marketplace packages currently installed into this runtime's kernel. Cached manifests live in <code>.objectstack/installed-packages/</code> and survive restarts.`,installedEmpty:`No marketplace apps installed in this runtime yet.`,browseLink:`Browse the marketplace →`,installedAdditiveNote:`<strong>Note:</strong> The kernel API is additive only — uninstall removes the on-disk manifest so the package won't load on next boot, but the running kernel keeps the app registered until you restart the runtime.`,installedAt:`Installed {{when}}`,installedBy:`by {{user}}`,installedPackageId:`package`,cachedAs:`Cached as <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Installed v{{version}}`,load:{failed:`Failed to load marketplace`,failedHint:`By default this runtime points at the public ObjectStack cloud. Check the runtime is online, or override <code>OS_CLOUD_URL</code> to point at a self-hosted control plane.`,packageFailed:`Failed to load package`,notFound:`Not found.`},detail:{homepage:`Homepage`,installedV:`Installed · v{{version}}`,about:`About`,noReadme:`No readme provided.`,versions:`Versions`,noApprovedVersions:`No approved versions.`,prerelease:`pre`,moreOptions:`More install options`,uninstallFromRuntime:`Uninstall from this runtime`},action:{install:`Install`,reinstall:`Reinstall`,working:`Working…`,installToCloud:`Install to cloud…`,installing:`Installing…`,uninstall:`Uninstall`,uninstalling:`Uninstalling…`,details:`Details`,close:`Close`,dismiss:`Dismiss`,openOnCloud:`Open on cloud`,backHome:`Back to home`},install:{dialogTitle:`Install {{name}}`,dialogDescCurrent:`Install into this environment ({{host}}).`,dialogDescPicker:`Choose an environment to install this app into. You need to be signed into ObjectStack Cloud.`,environment:`Environment`,environmentPlaceholder:`Pick an environment`,includeSampleData:`Include sample data`,noEnvs:`No environments found in your active organization.`,noPermission:`You do not have permission to install apps in any environment. Only organization owners and admins can install — ask your workspace admin.`,signInFirst:`You need to sign into ObjectStack Cloud first. Click "Open on cloud" below.`,success:`Installed successfully. Open the environment to see the new app.`,localSuccess:`Installed v{{version}} to this runtime. "{{name}}" should now appear in the app switcher.`,localManifestConflict:`{{message}}
|
|
5
|
+
Tip: a local app already owns this manifest_id. Remove it from objectstack.config.ts first.`,localUnauthorized:`Sign in to this runtime first, then try again.`,localMarketplaceUnavailable:`This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.`},uninstall:{confirm:`Uninstall {{manifestId}} v{{version}} from this runtime?
|
|
6
|
+
|
|
7
|
+
The cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.`,successInList:`Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.`,successInDetail:`Removed cached manifest for {{manifestId}}. Restart the runtime to fully unload the app from the running kernel.`},accessDenied:{title:`App Marketplace is admin-only`,description:`You don't have permission to install apps in this environment. Ask an owner or admin of this organization for access.`},category:{crm:`CRM`,erp:`ERP`,hr:`Human Resources`,finance:`Finance`,project:`Project Management`,collaboration:`Collaboration`,analytics:`Analytics`,integration:`Integration`,automation:`Automation`,ai:`AI`,security:`Security`,"developer-tools":`Developer Tools`,"ui-theme":`UI Theme`,storage:`Storage`,other:`Other`},pricing:{free:`Free`,freemium:`Freemium`,paid:`Paid`,subscription:`Subscription`,"usage-based":`Usage-based`,"contact-sales":`Contact Sales`},relativeTime:{today:`today`,daysAgo:`{{count}}d ago`,monthsAgo:`{{count}}mo ago`,yearsAgo:`{{count}}y ago`}}},zh:{common:{loading:`加载中...`,save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,create:`新建`,search:`搜索`,filter:`筛选`,reset:`重置`,confirm:`确认`,close:`关闭`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,refresh:`刷新`,export:`导出`,import:`导入`,yes:`是`,no:`否`,ok:`确定`,actions:`操作`,more:`更多`,selectAll:`全选`,clearAll:`清除全部`,addToFavorites:`添加到收藏`,removeFromFavorites:`从收藏中移除`,noData:`暂无数据`,noResults:`未找到结果`,required:`必填`,optional:`选填`,selectOption:`请选择`,select:`选择...`,openChat:`打开聊天`,closeChat:`关闭聊天`,toggleSidebar:`切换侧边栏`},validation:{required:`{{field}}不能为空`,minLength:`{{field}}至少需要{{min}}个字符`,maxLength:`{{field}}最多{{max}}个字符`,min:`{{field}}不能小于{{min}}`,max:`{{field}}不能大于{{max}}`,email:`请输入有效的邮箱地址`,url:`请输入有效的URL`,pattern:`{{field}}格式不正确`,unique:`{{field}}必须唯一`,type:`{{field}}必须是有效的{{type}}`},form:{addItem:`添加项目`,removeItem:`移除项目`,fieldRequired:`此字段为必填项`,invalidFormat:`格式不正确`,saveSuccess:`保存成功`,saveError:`保存失败`,unsavedChanges:`您有未保存的更改,确定要离开吗?`,stepOf:`第{{current}}步,共{{total}}步`,createTitle:`新建{{object}}`,editTitle:`编辑{{object}}`,createDescription:`向数据库添加新的{{object}}。`,editDescription:`更新{{object}}的详情`,saveRecord:`保存`,create:`创建`,update:`更新`,createSuccess:`{{object}}创建成功`,updateSuccess:`{{object}}更新成功`,deleteSuccess:`{{object}}删除成功`},fields:{richText:{format:`格式: {{format}}`,basicEditorHint:`富文本编辑器(基础)`,placeholder:`请输入文字...`}},table:{rowsPerPage:`每页行数`,showing:`显示第{{from}}到{{to}}条,共{{total}}条`,noRows:`暂无数据`,sortAsc:`升序排列`,sortDesc:`降序排列`,filterColumn:`筛选{{column}}`,columns:`列`,exportCSV:`导出CSV`,exportExcel:`导出Excel`,selectRow:`选择行`,selectAllRows:`选择所有行`,expandRow:`展开行`,collapseRow:`折叠行`,hideColumn:`隐藏列`,freezeColumn:`冻结列`,unfreezeColumn:`取消冻结列`,pageInfo:`第 {{current}} 页,共 {{total}} 页`,totalRecords:`共 {{count}} 条`,noResults:`未找到结果`,noResultsHint:`请尝试调整筛选条件或搜索关键词。`,cancelAll:`全部取消`,saveAll:`全部保存 ({{count}})`,addRecord:`添加记录`,open:`打开`,search:`搜索...`,modified:`{{count}} 行已修改`,selected:`已选择 {{count}} 项`,edit:`编辑`,delete:`删除`},grid:{actions:`操作`,edit:`编辑`,delete:`删除`,export:`导出`,exportAs:`导出为 {{format}}`,loading:`加载数据中...`,errorLoading:`数据加载失败`,pullToRefresh:`下拉刷新`,refreshing:`刷新中…`,openRecord:`打开记录`,openMenu:`更多操作`,rowHeight:`行高: {{mode}}`,empty:`空`,yes:`是`,no:`否`,systemFields:`系统字段`,toolbar:{densityMode:`密度`,densityCompact:`紧凑`,densityComfortable:`舒适`,densitySpacious:`宽松`,densityCycleHint:`{{label}}(点击切换)`,densityCycleShortHint:`点击切换`},import:{title:`导入{{object}}`,stepUpload:`上传`,stepMapping:`字段映射`,stepPreview:`预览`,uploadDescription:`上传 CSV 文件以开始导入。`,mappingDescription:`将 CSV 列映射到对象字段。`,previewDescription:`导入前预览数据。`,dragDrop:`拖拽 CSV 文件到此处,或点击选择文件`,browseFiles:`选择文件`,onlyCsv:`仅支持 CSV 文件。`,fileNeedsHeader:`文件必须包含表头行和至少一行数据。`,mappingTemplate:`映射模板:`,chooseTemplate:`选择模板…`,noSavedTemplates:`暂无保存的模板`,noneOption:`— 无 —`,saveCurrent:`保存当前映射`,templateName:`模板名称`,save:`保存`,deleteTemplate:`删除模板`,csvColumn:`CSV 列`,mapsTo:`映射到`,status:`状态`,skipColumn:`跳过此列`,skip:`— 跳过 —`,mapped:`已映射`,skipped:`已跳过`,rowsWithErrors:`{{count}} 行有错误`,rowsCorrected:`已修正 {{count}} 行`,clickToFix:`— 点击高亮单元格可直接修改。`,showingRows:`显示第 {{shown}} 行,共 {{total}} 行`,importing:`导入中… {{progress}}%`,importComplete:`导入完成`,imported:`已导入 {{count}} 条`,skippedCount:`已跳过 {{count}} 条`,moreErrors:`…还有 {{count}} 个错误`,cancel:`取消`,back:`上一步`,next:`下一步`,close:`关闭`,importNRows:`导入 {{count}} 行`,importingProgress:`导入中…`,requiredMark:`*`,required:`必填`,invalidType:`{{type}} 格式无效`}},calendar:{today:`今天`,month:`月`,week:`周`,day:`日`,agenda:`日程`,allDay:`全天`,noEvents:`暂无事件`,newEvent:`新建事件`,moreEvents:`+{{count}} 更多`},list:{recordCount:`{{count}} 条记录`,recordCountOne:`{{count}} 条记录`,addRecord:`添加记录`,tabs:`标签页`,allRecords:`全部记录`,search:`搜索`,filter:`筛选`,filterRecords:`筛选记录`,sort:`排序`,sortRecords:`排序记录`,group:`分组`,groupBy:`分组依据`,export:`导出`,exportAs:`导出为 {{format}}`,color:`颜色`,rowColor:`行颜色`,colorByField:`按字段着色`,clear:`清除`,none:`无`,hideFields:`隐藏字段`,noItems:`暂无数据`,noItemsMessage:`当前没有可显示的记录。请尝试调整筛选条件或新建一条数据。`,showAll:`显示全部`,pullToRefresh:`下拉刷新`,refreshing:`刷新中…`,share:`分享`,print:`打印`,hideFieldsTitle:`隐藏字段`,dataLimitReached:`显示前 {{limit}} 条记录。可能有更多数据。`,viewSettings:`视图设置`,viewSettingsHint:`分组、行颜色、密度与可见字段。`,addGroup:`添加分组字段`,collapsedByDefault:`默认折叠`,removeGroup:`删除`},kanban:{addCard:`添加卡片`,addColumn:`添加列`,moveCard:`移动卡片`,deleteCard:`删除卡片`,deleteColumn:`删除列`,noCards:`暂无卡片`,cardTitlePlaceholder:`输入卡片标题...`},timeline:{bucket:{overdue:`已逾期`,today:`今天`,tomorrow:`明天`,thisWeek:`本周`,nextWeek:`下周`,later:`更晚`,noDate:`无日期`,unassigned:`未分配`}},gantt:{column:{taskName:`任务名称`,start:`开始`,end:`结束`},toolbar:{prevPeriod:`上一周期`,nextPeriod:`下一周期`,zoomIn:`放大`,zoomOut:`缩小`,jumpToToday:`跳到今天`,today:`今天`,showTaskList:`展开任务列表`,hideTaskList:`收起任务列表`}},view:{rename:`重命名`,duplicateView:`复制视图`,shareView:`共享视图`,setAsDefault:`设为默认`,pinView:`固定视图`,unpinView:`取消固定`,changeViewType:`更改视图类型`,deleteView:`删除视图`,addView:`添加视图`,unsavedChanges:`未保存的更改`,saveAsView:`另存为视图`,moreViews:`还有 {{count}} 个`,activeFilters:`筛选条件生效中`,activeSort:`排序生效中`,manageViews:`管理视图`,manageAllViews:`管理所有视图…`,searchViews:`搜索视图`,addNewView:`新建视图`,done:`完成`,noViewsFound:`没有匹配的视图。`,dragToReorder:`拖动排序`,defaultView:`默认视图`,tabActionsFor:`{{name}} 的视图操作`,readonlyAriaLabel:`只读视图`,readonlyTooltip:`系统视图 — 复制后可自定义。`},detail:{back:`返回`,edit:`编辑`,editInline:`编辑`,save:`保存`,saveChanges:`保存更改`,saving:`保存中…`,editFieldsInline:`编辑字段`,lockedByApproval:`审批中已锁定`,lockedTooltip:`该记录有待审批的请求,编辑已被锁定`,cancelApproval:`撤回审批`,cancelApprovalInFlight:`撤回中…`,cancelApprovalTooltip:`撤回当前的待审批请求以解除记录锁定`,cancelApprovalFailed:`撤回审批失败`,cancelApprovalUnavailable:`当前数据源不支持撤回审批`,linkCopied:`链接已复制到剪贴板`,linkCopyFailed:`复制链接失败`,cancel:`取消`,cancelEdit:`放弃更改`,sectionMoreDetails:`更多详情`,concurrentUpdateTitle:`该记录已被他人修改`,concurrentUpdateDescription:`在你编辑期间,另一位用户保存了 {{field}} 的新版本。为避免无声覆盖对方的改动,请选择如何处理该冲突。`,concurrentUpdateYourEdit:`你的修改`,concurrentUpdateCurrentValue:`当前值`,concurrentUpdateUpdatedBy:`由 {{name}} 更新`,concurrentUpdateUpdatedAt:`更新于 {{when}}`,concurrentUpdateReload:`加载最新`,concurrentUpdateOverwrite:`仍然覆盖`,concurrentUpdateCancel:`取消`,openInNewTab:`在新标签页打开`,share:`分享`,duplicate:`复制`,export:`导出`,viewHistory:`查看历史`,delete:`删除`,moreActions:`更多操作`,addToFavorites:`添加到收藏`,removeFromFavorites:`从收藏中移除`,previousRecord:`上一条记录`,nextRecord:`下一条记录`,recordOf:`第 {{current}} 条,共 {{total}} 条`,recordNotFound:`未找到记录`,recordNotFoundDescription:`您查找的记录不存在或已被删除。`,goBack:`返回`,details:`详情`,related:`相关`,relatedRecords:`{{count}} 条记录`,relatedRecordOne:`{{count}} 条记录`,noRelatedRecords:`暂无相关记录`,loading:`加载中...`,copyToClipboard:`复制到剪贴板`,copied:`已复制!`,deleteConfirmation:`确定要删除此记录吗?`,editRecord:`编辑记录`,viewAll:`查看全部`,new:`新建`,emptyValue:`—`,activity:`活动`,history:`历史`,editRow:`编辑`,deleteRow:`删除`,deleteRowConfirmation:`确定要删除此记录吗?`,deleteRowTitle:`删除记录`,actions:`操作`,previousPage:`上一页`,nextPage:`下一页`,pageOf:`第 {{current}} 页,共 {{total}} 页`,sortBy:`排序`,filterPlaceholder:`筛选...`,highlightFields:`关键字段`,comments:`评论`,searchComments:`搜索评论…`,addCommentPlaceholder:`添加评论… (Ctrl+Enter 提交)`,noMatchingComments:`没有匹配的评论`,noCommentsYet:`暂无评论`,pinned:`已置顶`,pin:`置顶`,unpin:`取消置顶`,justNow:`刚刚`,minutesAgo:`{{count}}分钟前`,hoursAgo:`{{count}}小时前`,daysAgo:`{{count}}天前`,createdBy:`创建于`,updatedBy:`更新于`,dropFilesToUpload:`拖拽文件到此处或点击上传`,attachmentCount:`{{count}} 个附件`,attachmentCountPlural:`{{count}} 个附件`,removeAttachment:`移除附件`,unifiedDiff:`统一视图`,sideBySideDiff:`并排视图`,noChanges:`无变更`,previousVersion:`旧版本`,currentVersion:`新版本`,discussion:`讨论`,showDiscussion:`显示讨论 ({{count}})`,hideDiscussion:`隐藏讨论`,bold:`粗体 (Ctrl+B)`,italic:`斜体 (Ctrl+I)`,listFormat:`列表`,inlineCode:`行内代码`,mentionSomeone:`提及某人`,preview:`预览`,submitComment:`提交 (Ctrl+Enter)`,sendComment:`发送`,writeComment:`写评论…`,subscribedTooltip:`已订阅 — 点击取消订阅`,unsubscribedTooltip:`订阅通知`,firstRecord:`第一条记录 (Home)`,previousRecordKey:`上一条记录 (←)`,nextRecordKey:`下一条记录 (→)`,lastRecord:`最后一条记录 (End)`,noRecords:`无记录`,showEmptyRelated_one:`+ {{count}} 个为空`,showEmptyRelated_other:`+ {{count}} 个为空`,searchWhileNavigating:`导航时搜索`,searchRecords:`搜索记录…`,allActivity:`全部动态`,commentsOnly:`仅评论`,fieldChangesFilter:`字段变更`,tasksOnly:`仅任务`,leaveCommentPlaceholder:`留下评论… (Ctrl+Enter 提交)`,noActivity:`暂无活动记录`,loadMore:`加载更多`,edited:`(已编辑)`,via:`通过 {{source}}`,replyCount:`{{count}} 条回复`,replyCountPlural:`{{count}} 条回复`,replyPlaceholder:`回复…`,filterActivity:`筛选活动`,openDiscussion:`打开讨论面板`,closeDiscussion:`关闭讨论面板`,subscribeAriaLabel:`订阅通知`,unsubscribeAriaLabel:`取消订阅通知`,clearSearch:`清除搜索`,copyEmail:`复制邮箱`,copyPhone:`复制电话号码`,copyRecordId:`复制记录 ID`,showEmptyFields:`显示 {{count}} 个空字段`,hideEmptyFields:`隐藏空字段`,noValue:`无`},chart:{noData:`暂无图表数据`,loading:`图表加载中...`},report:{rowTotal:`行合计`,columnTotal:`列合计`,grandTotal:`总计`,totals:`汇总`,rowsLabel:`行`,columnsLabel:`列`,allLabel:`(全部)`,emptyLabel:`(空)`,loading:`加载中…`,failedToLoad:`矩阵报表加载失败:{{message}}`,needsAcross:"矩阵报表至少需要一个 `groupingsAcross` 字段。",aggregate:{count:`计数`,countDistinct:`去重计数`,sum:`求和`,avg:`平均`,min:`最小值`,max:`最大值`,first:`首个`},editor:{breadcrumb:`配置`,basic:`基础`,title:`标题`,titlePlaceholder:`例如:按季度的销售管道`,description:`描述`,descriptionPlaceholder:`此报表展示什么?`,type:`报表类型`,typeTabular:`表格 — 平铺列表`,typeSummary:`汇总 — 分组带合计`,typeMatrix:`矩阵 — 行列透视`,typeJoined:`拼接 — 多块组合`,typeHelp:`选择最贴合需求的布局方式。`,data:`数据`,objectName:`数据源`,objectNamePlaceholder:`例如:opportunity`,objectNameHelp:`此报表应查询哪个对象?`,limit:`行数上限`,limitPlaceholder:`例如:100`,columns:`列`,columnsHint:`选择要展示的字段。汇总或矩阵报表可添加聚合(求和、计数…)。`,filters:`筛选`,filtersHint:`限定参与报表的数据行。`,filtersComplex:`此报表使用了高级筛选条件,此处无法编辑。保存时将原样保留。`,groupBy:`分组`,groupByHint:`按字段分组并计算小计。`,rows:`行`,rowsHint:`按这些字段对行分组。`,columnsAxis:`列`,columnsAxisHint:`将这些字段透视到顶部。`,values:`度量`,valuesHint:`每个单元格里展示的数字。选择一个或多个字段并设置聚合方式(求和、计数…)。`,grouping:`分组`,addGrouping:`添加分组`,dateGranularity:`日期粒度`,dateGranularityNone:`(使用原始值)`,day:`日`,week:`周`,month:`月`,quarter:`季度`,year:`年`,sortAsc:`升序`,sortDesc:`降序`,chart:`图表`,chartHint:`在表格旁可选展示的可视化。`,chartType:`图表类型`,chartTitle:`图表标题`,chartTitlePlaceholder:`默认使用报表标题`,chartXAxis:`X 轴(类别)`,chartYAxis:`Y 轴(数值)`,chartShowLegend:`显示图例`,chartShowDataLabels:`显示数据标签`,chartNone:`(无图表)`,chartBar:`柱状图`,chartLine:`折线图`,chartArea:`面积图`,chartPie:`饼图`,chartDonut:`环形图`,chartFunnel:`漏斗图`,validationNeedsObject:`请先选择数据源,再添加列。`,validationMatrixNeedsRowsCols:`矩阵报表至少需要一个行字段和一个列字段。`,validationSummaryNeedsRows:`汇总报表至少需要一个分组字段。`,blocks:`区块`,blocksHint:`每个区块都是独立的表格或图表。区块筛选会与报表筛选合并(AND)。`,addBlock:`添加区块`,removeBlock:`删除区块`,blockName:`区块名称`,blockNamePlaceholder:`唯一的区块名`,blockLabel:`显示标题`,blockLabelPlaceholder:`显示在区块上方`,blockDescription:`说明`,blockDescriptionPlaceholder:`该区块的可选说明`,validationJoinedNeedsBlocks:`组合报表至少需要一个区块。`,validationBlockNameRequired:`每个区块都必须有非空的名称。`,validationBlockNameDuplicate:`区块名称在报表内必须唯一。`,validationBlockNeedsColumns:`每个区块至少需要一列。`,noneOption:`(无)`,addCondition:`添加条件`,combineLogic:`组合方式`,opContains:`包含`,opIsEmpty:`为空`,opIsNotEmpty:`不为空`,formatAuto:`自动`,formatCurrency:`货币`,formatPercent:`百分比`,formatInteger:`整数`,formatDate:`日期`,formatDatetime:`日期 + 时间`,columnLabelPlaceholder:`自定义标签`,aggregateColumn:`聚合`,formatColumn:`格式`,addColumns:`添加字段`,searchFields:`搜索字段…`,noMatchingFields:`没有匹配的字段。`,noFieldsAvailable:`暂无可用字段。`,columnsCount:`已选择 {n} 个列`,columnsEmpty:`尚未选择任何列。`,fieldPickerTitle:`选择字段`,fieldPickerDescription:`可选择一个或多个字段添加到报表,输入关键字可快速筛选。`,fieldPickerChangeTitle:`更换字段`,fieldPickerAddGroupingTitle:`添加分组`,fieldPickerEmpty:`(请选择字段)`,fieldPickerSelected:`已选 {n} 个`,fieldPickerClear:`清空选择`,fieldPickerAdd:`添加`,fieldPickerAddN:`添加 {n} 个`}},map:{searchLocations:`搜索位置…`,locationDetails:`位置详情`,markersCount:`{{count}} 个标记`,invalidCoordinates:`{{count}} 条记录因坐标缺失或无效已从地图中排除。`,invalidCoordinatesPlural:`{{count}} 条记录因坐标缺失或无效已从地图中排除。`},workflow:{draft:`草稿`,active:`活跃`,paused:`已暂停`,completed:`已完成`,cancelled:`已取消`,save:`保存`,publish:`发布`,addNode:`添加节点`,workflowFlow:`工作流程`,properties:`属性`,connections:`连接`,quickConnect:`快速连接`,fromPlaceholder:`从...`,toPlaceholder:`到...`,connect:`连接`,label:`标签`,type:`类型`,description:`描述`,assignee:`负责人`,assigneeType:`负责人类型`,user:`用户`,role:`角色`,group:`组`,expression:`表达式`,timeoutMinutes:`超时时间(分钟)`,selectNodeToEdit:`选择节点以编辑其属性`,workflowTitle:`工作流标题`,newWorkflow:`新工作流`,outConnections:`{{count}} 个输出`,start:`开始`,end:`结束`,task:`任务`,userTask:`用户任务`,serviceTask:`服务任务`,scriptTask:`脚本任务`,approval:`审批`,condition:`条件`,parallelGateway:`并行网关`,joinGateway:`合并网关`,boundaryEvent:`边界事件`,delay:`延迟`,notification:`通知`,webhook:`Webhook`,allowConcurrency:`允许(并发执行)`,forbidConcurrency:`禁止(跳过新任务)`,replaceConcurrency:`替换(取消现有任务)`,queueConcurrency:`排队(等待当前完成)`,conditionEvent:`条件`,manualEvent:`手动`,webhookEvent:`Webhook`,timerEvent:`定时器`,signalEvent:`信号`,versionHistory:`版本历史`,importBpmn:`导入 BPMN`,exportBpmn:`导出 BPMN`,undo:`撤销`,redo:`重做`,resetZoom:`重置缩放`},dashboard:{addWidget:`添加组件`,removeWidget:`移除组件`,editLayout:`编辑布局`,saveLayout:`保存布局`,resetLayout:`重置布局`,total:`总计`,noDataAvailable:`暂无数据`,noDataSourceFor:`没有可用的数据源:`,trend:{vsLastQuarter:`较上季度`,vsLastMonth:`较上月`,vsLastWeek:`较上周`,vsLastYear:`较去年`,vsYesterday:`较昨日`,vsPreviousPeriod:`较上期`}},configPanel:{save:`保存`,discard:`丢弃`,close:`关闭`,layout:`布局`,columns:`列数`,gap:`间距`,rowHeight:`行高`,data:`数据`,refreshInterval:`刷新间隔`,appearance:`外观`,title:`标题`,showDescription:`显示描述`,theme:`主题`,configuration:`配置`,general:`基本`,advanced:`高级`},appDesigner:{createApp:`创建应用`,editApp:`编辑应用`,basicInfo:`基本信息`,objects:`业务对象`,navigation:`导航`,branding:`品牌`,appName:`应用名称`,appTitle:`标题`,appDescription:`描述`,appIcon:`图标`,template:`模板`,layout:`布局`,layoutSidebar:`侧边栏`,layoutHeader:`顶部导航`,layoutEmpty:`空白`,selectObjects:`选择对象`,searchObjects:`搜索对象…`,selectAll:`全选`,deselectAll:`取消全选`,navBuilder:`导航构建器`,addGroup:`添加分组`,addUrl:`添加链接`,addSeparator:`添加分隔线`,noNavItems:`暂无导航项。`,logoUrl:`Logo 链接`,primaryColor:`主色调`,faviconUrl:`网站图标链接`,preview:`预览`,complete:`完成`,snakeCaseHint:`必须使用 snake_case 格式(如 my_app)`,modeEdit:`编辑`,modePreview:`预览`,modeCode:`代码`,addWidget:`添加组件`,widgetProperties:`组件属性`,dataSource:`数据源`,valueField:`数值字段`,aggregate:`聚合`,colorVariant:`颜色`,addComponent:`添加组件`,componentProperties:`组件属性`,viewType:`视图类型`,fields:`字段`,toolbar:`工具栏`,showSearch:`显示搜索`,showFilters:`显示筛选`,showSort:`显示排序`,appearance:`外观`,rowHeight:`行高`,stripedRows:`斑马纹`,bordered:`边框`,livePreview:`实时预览`,stepBasicDesc:`名称、标题和布局`,stepObjectsDesc:`选择业务对象`,stepNavigationDesc:`构建导航树`,stepBrandingDesc:`Logo、颜色和图标`,noObjectsFound:`未找到对象。`,noNavItemsHint:`暂无导航项。请在上一步选择对象或手动添加项目。`,separator:`分隔线`,separatorLabel:`— 分隔线 —`,newGroup:`新建分组`,newLink:`新建链接`,saveDraft:`保存草稿`,cancelConfirmTitle:`放弃更改?`,cancelConfirmMessage:`您有未保存的更改。确定要取消吗?`,confirmDiscard:`放弃`,keepEditing:`继续编辑`,navNoItems:`暂无导航项。点击上方按钮添加项目。`,navNoPreviewItems:`无项目`,navLivePreview:`实时预览`,navCollapseGroup:`折叠分组`,navExpandGroup:`展开分组`,navAddChild:`添加子项`,navMoveUp:`上移`,navMoveDown:`下移`,navRemove:`移除`,navObjectPage:`对象页面`,navDashboard:`仪表盘`,navPage:`页面`,navReport:`报表`,navGroup:`分组`,navUrl:`链接`,navSeparator:`分隔线`,navTypeObject:`对象`,navTypeDashboard:`仪表盘`,navTypePage:`页面`,navTypeReport:`报表`,navTypeUrl:`链接`,navTypeGroup:`分组`,navTypeSeparator:`分隔线`,navTypeAction:`操作`,navEditIcon:`编辑图标`,navToggleVisible:`切换可见性`,navHidden:`已隐藏`,navExportSchema:`导出 JSON`,navImportSchema:`导入 JSON`,navExportSuccess:`导航结构已导出`,navImportSuccess:`导航结构已导入`,navImportError:`无效的导航 JSON`,navIconPlaceholder:`图标名称(如 Users)`,dashboardEditor:`仪表盘编辑器`,noWidgets:`暂无小组件。点击上方按钮添加。`,widgetLayoutSize:`布局尺寸`,widgetWidth:`宽度`,widgetHeight:`高度`,dashboardPreview:`仪表盘预览`,noWidgetsPreview:`暂无可预览的小组件`,pageCanvasEditor:`页面画布编辑器`,emptyPage:`空白页面。点击上方按钮添加组件。`,pagePreview:`页面预览`,noComponentsPreview:`暂无可预览的组件`,modePage:`页面`,modeDashboard:`仪表盘`,undo:`撤销`,redo:`重做`,brandingEditor:`品牌编辑器`,brandingExport:`导出 JSON`,brandingImport:`导入 JSON`,brandingPreview:`预览`,brandingSampleButton:`示例按钮`,brandingSampleText:`这是您的品牌主题效果预览。`,colorPalette:`颜色面板`,fontFamily:`字体`,fontDefault:`默认(系统)`,modeLight:`浅色`,modeDark:`深色`,mobilePreview:`移动端预览`,objectManager:{title:`对象管理器`,addObject:`新建对象`,searchPlaceholder:`搜索对象…`,noObjects:`未找到对象。`,objectName:`API 名称`,objectLabel:`标签`,pluralLabel:`复数标签`,icon:`图标`,selectIcon:`选择图标…`,group:`分组`,noGroup:`无分组`,sortOrder:`排序`,enabled:`启用`,relationships:`关系`,systemBadge:`系统`,fieldCount:`{{count}} 个字段`,ungrouped:`未分组`,deleteConfirmTitle:`删除对象?`,deleteConfirmMessage:`这将永久删除该对象及其所有字段。此操作无法撤销。`},fieldDesigner:{title:`字段设计器`,addField:`新建字段`,searchPlaceholder:`搜索字段…`,allTypes:`所有类型`,noFields:`未找到字段。`,fieldName:`API 名称`,fieldLabel:`标签`,fieldType:`类型`,fieldGroup:`分组`,description:`描述`,required:`必填`,unique:`唯一`,readOnly:`只读`,hidden:`隐藏`,indexed:`索引`,externalId:`外部 ID`,trackHistory:`追踪历史`,defaultValue:`默认值`,placeholder:`占位文本`,referenceTo:`引用对象`,formula:`公式`,options:`选项`,addOption:`添加选项`,validationRules:`验证规则`,addRule:`添加规则`,systemBadge:`系统`,ungrouped:`通用`,deleteConfirmTitle:`删除字段?`,deleteConfirmMessage:`这将永久删除该字段。此字段中的现有数据将丢失。`,basicSection:`基础`,typeSpecificSection:`类型设置`,advancedSection:`高级`,typeCategory:{text:`文本`,number:`数字`,date:`日期时间`,choice:`选择`,relation:`关联`,advanced:`高级`}}},console:{title:`ObjectStack 控制台`,initializing:`正在初始化应用程序...`,search:`搜索…`,breadcrumb:{dashboards:`仪表盘`,pages:`页面`,reports:`报告`,system:`系统`},nav:{pinItem:`固定 {{name}}`,unpinItem:`取消固定 {{name}}`,dragToReorder:`拖动以重新排序`,favorites:`收藏`},loadingSteps:{connecting:`正在连接数据源`,loadingConfig:`正在加载配置`,preparingWorkspace:`正在准备工作区`},error:{connectionFailed:`无法连接到服务器`,serverUnreachable:`无法访问服务器 {{url}}。`,checkServer:`请检查网络连接,或确认后端服务正在运行。`,timeout:`连接超时(10 秒)。`},actions:{retry:`重试`,retrying:`正在重试…`},shortcuts:{title:`键盘快捷键`,description:`所有可用键盘快捷键的快速参考。`,groups:{general:`通用`,navigation:`导航`,dataViews:`数据视图`,preferences:`偏好设置`},openCommandPalette:`打开命令面板`,showShortcuts:`显示键盘快捷键`,closeDialog:`关闭对话框/面板`,toggleSidebar:`切换侧边栏`,focusSearch:`聚焦搜索`,createRecord:`新建记录`,refreshData:`刷新数据`,editRecord:`编辑选中记录`,toggleDarkMode:`切换深色模式`},commandPalette:{placeholder:`输入命令或搜索...`,noResults:`未找到结果。`,searching:`搜索中…`,records:`记录`,recentRecords:`最近访问`,objects:`对象`,dashboards:`仪表盘`,pages:`页面`,reports:`报表`,switchApp:`切换应用`,current:`当前`,preferences:`偏好设置`,lightTheme:`浅色主题`,darkTheme:`深色主题`,systemTheme:`系统主题`,actions:`操作`,openFullSearch:`打开完整搜索页面`,createApp:`创建新应用`},errors:{somethingWentWrong:`出错了`,unexpectedError:`渲染此视图时发生意外错误。`,tryAgain:`重试`,goHome:`返回首页`,errorDetails:`错误详情(仅开发模式)`},theme:{toggle:`切换主题`,light:`浅色`,dark:`深色`,system:`系统`},objectView:{objectNotFound:`未找到对象`,objectNotFoundDescription:`对象"{{objectName}}"在当前配置中不存在。`,objectNotFoundHint:`请检查您的应用导航设置或从侧边栏选择其他对象。`,allRecords:`所有记录`,exitDesignMode:`退出设计模式`,enterDesignMode:`进入设计模式`,metadataInspector:`元数据检查器`,editView:`编辑视图`,addView:`添加视图`,designTools:`设计工具`,new:`新建`,import:`导入`,importTitle:`从 CSV 文件导入`,importedToast:`成功导入 {{count}} 行。`,importedWithSkipped:`已导入 {{ok}} 行;跳过 {{skipped}} 行。`,configureView:`配置视图`,closePanel:`关闭面板`,showAdvancedSettings:`显示高级设置`,showFewerSettings:`显示精简设置`,page:`页面`,pageConfigHint:`工具栏、导航与视图外壳设置`,listConfigHint:`此列表类型的数据渲染、列与外观`,general:`常规`,generalHint:`视图标题、描述和类型`,toolbar:`工具栏`,toolbarHint:`搜索、筛选、排序、分组和密度切换`,toolbarEnabledCount:`已启用 {{count}}/{{total}} 项`,navigationSection:`导航`,navigationHint:`行点击行为和详情视图设置`,records:`记录`,recordsHint:`选择模式、添加记录和内联编辑`,exportPrint:`导出与打印`,exportPrintHint:`导出格式、打印和记录数显示`,showAllFields:`全部显示`,hideAllFields:`全部隐藏`,searchFields:`搜索字段...`,title:`标题`,description:`描述`,data:`数据`,source:`数据源`,columns:`列`,filterBy:`筛选条件`,sortBy:`排序条件`,appearance:`外观`,showDescription:`显示描述`,viewType:`视图类型`,userFilters:`用户筛选器`,enableSearch:`启用搜索`,enableFilter:`启用筛选`,enableSort:`启用排序`,enableHideFields:`启用隐藏字段`,enableGroup:`启用分组`,enableColor:`启用颜色`,enableDensity:`启用密度`,userActions:`用户操作`,addRecordViaForm:`通过表单添加记录`,advanced:`高级`,allowExport:`允许导出`,recordCount:`{{count}} 条记录`,noDescription:`无描述`,none:`无`,columnsConfigured:`{{count}} 列`,save:`保存`,discard:`丢弃`,createView:`创建视图`,createViewDesc:`先选择视图类型,再为它命名。所有设置之后都可以修改。`,cancel:`取消`,create:`创建`,delete:`删除`,deleteViewTitle:`删除视图`,deleteViewConfirm:`确定要删除视图 "{{name}}" 吗?此操作无法撤销。`,bulkDeleteConfirm:`确定要删除选中的 {{count}} 条记录吗?此操作无法撤销。`,duplicateViewName:`已存在同名视图。`,viewTypeGrid:`表格`,viewTypeGridDesc:`电子表格风格的记录表格。`,viewTypeKanban:`看板`,viewTypeKanbanDesc:`按单选字段分列的卡片视图。`,viewTypeCalendar:`日历`,viewTypeCalendarDesc:`按日期把记录放到月历上。`,viewTypeGallery:`画廊`,viewTypeGalleryDesc:`由附件字段驱动的大图卡片。`,viewTypeTimeline:`时间线`,viewTypeTimelineDesc:`记录按横向时间轴展开。`,viewTypeGantt:`甘特图`,viewTypeGanttDesc:`展示项目起止时间和依赖。`,viewTypeMap:`地图`,viewTypeMapDesc:`根据经纬度字段显示地理标记。`,viewTypeChart:`图表`,viewTypeChartDesc:`聚合的柱状/折线/饼状图。`,newView:`新视图`,typeOptions:`类型选项`,groupByField:`分组字段`,groupByFieldHelp:`看板会按该字段的不同取值分列。`,startDateField:`开始日期字段`,startDateFieldHelp:`日历将按该日期把记录放到对应日期格。`,ganttStartDateFieldHelp:`甘特条形图的左端使用该日期。`,ganttEndDateFieldHelp:`甘特条形图的右端使用该日期。`,timelineDateFieldHelp:`记录在时间轴上按该日期定位。`,titleField:`标题字段`,latitudeField:`纬度字段`,latitudeFieldHelp:`提供纬度坐标的字段(仅地理坐标字段可选)。`,longitudeField:`经度字段`,longitudeFieldHelp:`提供经度坐标的字段(仅地理坐标字段可选)。`,imageField:`图片字段`,imageFieldHelp:`画廊封面来自该图片或附件字段。`,dateField:`日期字段`,selectField:`选择字段...`,selectOption:`选择...`,noEligibleFieldForType:`没有符合条件的字段。请先在对象上添加该类型字段。`,viewTypeUnavailable:`该对象缺少所需的“{{field}}”字段。`,viewTypeUnavailableShort:`当前对象不支持。`,chartType:`图表类型`,chartTypeHelp:`决定数据如何呈现。`,chartTypeBar:`柱状图`,chartTypeLine:`折线图`,chartTypePie:`饼图`,chartTypeArea:`面积图`,chartTypeScatter:`散点图`,xAxisField:`X 轴字段`,xAxisFieldHelp:`用于分类或时间维度的字段。`,yAxisField:`Y 轴字段`,yAxisFieldHelp:`用于数值聚合的字段。`,gridOptionsHint:`网格视图使用上方配置的列。`,groupBy:`分组依据`,prefixField:`前缀字段`,fields:`字段`,fieldsVisible:`{{count}} 个可见`,sortsCount:`{{count}} 个排序`,filtersCount:`{{count}} 个筛选`,endDateField:`结束日期字段`,color:`颜色`,fieldTextColor:`字段文字颜色`,rowHeight:`行高`,wrapHeaders:`自动换行标题`,showFieldDescriptions:`显示字段描述`,collapseAllByDefault:`默认全部折叠`,striped:`斑马纹行`,bordered:`边框单元格`,inlineEdit:`内联编辑记录`,addDeleteRecordsInline:`内联添加/删除记录`,clickIntoRecordDetails:`点击进入记录详情`,navigationMode:`导航模式`,navigationWidth:`导航宽度`,navigationWidthHint:`适用于抽屉、弹窗和分屏导航模式`,openNewTab:`在新标签页打开`,openNewTabHint:`适用于页面和新窗口导航模式`,selectionMode:`选择模式`,selectionNone:`无`,selectionSingle:`单选`,selectionMultiple:`多选`,pageSize:`每页记录数`,pageSizeOptions:`每页选项`,exportFormats:`导出格式`,exportMaxRecords:`最大记录数`,exportIncludeHeaders:`包含表头`,exportFileNamePrefix:`文件名前缀`,searchableFields:`可搜索字段`,filterableFields:`可筛选字段`,resizableColumns:`可调整列宽`,densityCompact:`紧凑`,densityComfortable:`舒适`,densitySpacious:`宽松`,densityMode:`密度模式`,hiddenFields:`隐藏字段`,rowActions:`行操作`,bulkActions:`批量操作`,sharing:`共享`,sharingEnabled:`启用共享`,sharingVisibility:`可见性`,addRecordEnabled:`启用添加记录`,addRecordPosition:`位置`,addRecordMode:`模式`,addRecordFormView:`表单视图`,conditionalFormatting:`条件格式`,addRule:`添加规则`,quickFilters:`快速筛选`,addQuickFilter:`添加快速筛选`,ufElements:`元素类型`,ufDropdown:`下拉菜单`,ufTabs:`标签页`,ufToggle:`开关`,ufAddField:`+ 添加筛选字段...`,ufNoFields:`无可用字段`,ufAddTab:`+ 添加标签页`,ufTabLabel:`标签`,ufShowAllRecords:`显示"全部记录"标签页`,ufAllowAddTab:`允许添加标签页`,showRecordCount:`显示记录计数`,allowPrinting:`允许打印`,virtualScroll:`虚拟滚动`,emptyStateTitle:`空状态标题`,emptyStateMessage:`空状态消息`,emptyStateIcon:`空状态图标`,ariaLabel:`ARIA 标签`,ariaDescribedBy:`ARIA 描述`,ariaLive:`ARIA 实时区域`,accessibility:`无障碍`,viewTabs:`视图标签`},localeSwitcher:{label:`语言`}},auth:{login:{title:`登录您的账户`,description:`输入您的邮箱和密码以继续`,emailLabel:`邮箱`,emailPlaceholder:`name@example.com`,passwordLabel:`密码`,passwordPlaceholder:`输入您的密码`,forgotPasswordText:`忘记密码?`,submitButton:`登录`,submittingButton:`登录中...`,noAccountText:`还没有账户?`,signUpText:`注册`,errors:{invalidCredentials:`邮箱或密码错误,请重试。`,emailNotVerified:`请先验证您的邮箱后再登录。`}},register:{title:`创建账户`,description:`输入您的信息以开始使用`,nameLabel:`姓名`,namePlaceholder:`张三`,emailLabel:`邮箱`,emailPlaceholder:`name@example.com`,passwordLabel:`密码`,passwordPlaceholder:`创建密码(至少8个字符)`,confirmPasswordLabel:`确认密码`,confirmPasswordPlaceholder:`确认您的密码`,passwordMismatchError:`两次输入的密码不一致`,passwordTooShortError:`密码至少需要8个字符`,submitButton:`创建账户`,submittingButton:`创建中...`,hasAccountText:`已有账户?`,signInText:`登录`,errors:{userExists:`该邮箱已被注册,请直接登录或更换邮箱。`},verifyInbox:{title:`请检查您的邮箱`,description:`我们已向 {{email}} 发送了一封验证邮件,请点击邮件中的链接激活账户。`,resend:`重新发送验证邮件`,resending:`发送中…`,resent:`验证邮件已发送。`,backToSignIn:`返回登录`}},forgotPassword:{title:`重置密码`,description:`输入您的邮箱地址,我们将发送重置密码链接`,emailLabel:`邮箱`,emailPlaceholder:`name@example.com`,submitButton:`发送重置链接`,submittingButton:`发送中...`,successTitle:`请查看您的邮箱`,successDescription:`我们已将密码重置链接发送至 {{email}},请检查您的收件箱。`,backToSignInText:`返回登录`,rememberPasswordText:`记住密码了?`,signInText:`登录`},resetPassword:{title:`设置新密码`,description:`请选择一个您未使用过的密码。`,newPassword:`新密码`,confirmPassword:`确认密码`,submit:`更新密码`,submitting:`更新中…`,success:`密码已更新`,failed:`重置失败`,invalidToken:`此重置链接无效或已过期。`,missingToken:`重置链接缺失或已过期`,passwordsMismatch:`两次输入的密码不一致`,requestNewLink:`获取新链接`},verifyEmail:{title:`验证您的邮箱地址`,description:`我们已向您的邮箱发送了一封验证邮件,请点击邮件中的链接以验证您的账户。`,sentTo:`发送至:`,verifyingTitle:`验证中…`,verifyingDescription:`正在确认您的邮箱,请稍候。`,successTitle:`邮箱已验证`,successDescription:`您的邮箱已确认,现在可以登录了。`,errorTitle:`验证失败`,errorDescription:`验证失败,请重新获取验证链接。`,missingToken:`验证链接缺少令牌。`,emailMissing:`缺少邮箱地址`,resendButton:`重新发送验证邮件`,resending:`发送中…`,resent:`邮件已发送!请查看收件箱`,resentSuccess:`验证邮件已发送!`,resentDescription:`请查看收件箱并点击验证链接。`,resendFailed:`无法重新发送验证邮件`,signInLink:`前往登录`,backToSignIn:`返回登录`,backToLogin:`返回登录`,checkSpam:`没有收到邮件?请检查垃圾邮件文件夹或联系支持。`,or:`或`},setup:{welcomeTitle:`欢迎使用 ObjectStack`,description:`创建第一个所有者账户以完成本次部署的初始化。`,yourName:`您的姓名`,orgName:`组织名称`,orgNamePlaceholder:`Acme Inc.`,emailLabel:`邮箱`,emailPlaceholder:`name@example.com`,passwordLabel:`密码`,passwordHint:`至少 8 个字符`,submit:`创建所有者账户`,submitting:`设置中…`,failed:`设置失败`},device:{title:`授权新设备`,subtitle:`批准此设备以 {{email}} 的身份登录。`,userCodeLabel:`设备代码`,loggedInAs:`已以 {{email}} 身份登录`,approve:`批准设备`,approving:`批准中…`,approvedTitle:`设备已授权`,approvedDescription:`您可以返回该设备,它应该很快就会登录。`,approveSuccess:`设备已授权`,approveSuccessDescription:`您可以关闭此窗口。`,approveFailed:`批准失败`,deny:`拒绝请求`,denying:`拒绝中…`,deniedTitle:`访问被拒绝`,deniedDescription:`该设备将不会被授予访问权限。`,denyFailed:`拒绝请求失败`,invalidTitle:`无效的设备链接`,invalidDescription:`URL 中未提供设备代码。`,loading:`加载中…`,cancel:`取消`},shell:{tenantHostHint:`您正在登录此工作区`}},errors:{networkError:`网络错误,请检查网络连接。`,serverError:`服务器错误,请稍后重试。`,notFound:`资源未找到。`,unauthorized:`您没有权限执行此操作。`,forbidden:`访问被拒绝。`,timeout:`请求超时,请重试。`,unknown:`发生未知错误。`},workspace:{label:`工作区`,default:`我的工作区`,switch:`切换工作区`,create:`创建工作区`,createTitle:`创建工作区`,createDescription:`工作区是团队协作的共享空间。`,createButton:`创建工作区`,nameLabel:`工作区名称`,namePlaceholder:`例如:极客科技`,slugLabel:`URL 标识`,slugHint:`用于 URL 中,仅支持小写字母、数字和连字符。`,invite:`邀请成员`,members:`成员`,settings:`工作区设置`},sidebar:{settings:`设置`,help:`帮助`,helpTooltip:`帮助与文档`,activityFeed:`活动动态`,notifications:`通知`,approvals:`审批`,inbox:`消息中心`,inboxAriaLabel:`打开消息中心`,area:`区域`,recent:`最近使用`,favorites:`收藏`,starred:`已收藏`,removeFromFavorites:`从收藏中移除 {{name}}`},home:{title:`首页`,subtitle:`您的工作区仪表盘`,nav:`首页`,allApps:`全部应用`,greetingMorning:`早上好`,greetingAfternoon:`下午好`,greetingEvening:`晚上好`,greetingNight:`夜深了`,heroTagline:`从上次离开的地方继续,或者探索新的内容。`,open:`打开`,stats:{apps:`应用`,starred:`收藏`,recent:`最近访问`},loading:`正在加载工作区...`,recent:`最近使用`,starred:`收藏`,welcome:`欢迎使用 ObjectUI`,welcomeDescription:`从创建您的第一个应用开始,或者先完成系统设置。`,createFirstApp:`创建您的第一个应用`,systemSettings:`系统设置`,browseMarketplace:`浏览应用市场`,quickActions:{title:`快捷操作`,createApp:`创建应用`,createAppDesc:`从新应用开始`,manageObjects:`管理对象`,manageObjectsDesc:`配置数据模型`,systemSettings:`系统设置`,systemSettingsDesc:`配置您的工作区`},recentApps:{title:`最近访问`,itemType:{object:`对象`,dashboard:`仪表盘`,page:`页面`,record:`记录`}},starredApps:{title:`收藏`},gettingStarted:{title:`把首页布置成你喜欢的样子`,description:`收藏一个应用即可固定到此处,一键直达。打开过的内容会自动出现在「最近访问」中。`,cta:`浏览全部应用`},appCard:{noDescription:`暂无描述`,default:`默认`}},layout:{appSwitcher:{home:`首页`,addApp:`新增应用`,editApp:`编辑应用`,manageAllApps:`管理所有应用`,systemConsole:`系统控制台`,noAppsConfigured:`尚未配置任何应用`},activityFeed:{title:`最近动态`,filter:`筛选`,empty:`暂无最近动态`,viewAll:`查看全部动态`,ariaLabel:`动态消息`,typeCreate:`创建`,typeUpdate:`更新`,typeDelete:`删除`,typeComment:`评论`,relativeJustNow:`刚刚`,relativeSecondsAgo:`{{count}} 秒前`,relativeMinutesAgo:`{{count}} 分钟前`,relativeHoursAgo:`{{count}} 小时前`,relativeDaysAgo:`{{count}} 天前`},metadata:{label:`元数据`,toggleTitle:`切换元数据检视器`,panelTitle:`元数据检视器`,jsonBadge:`JSON`,copyJson:`复制 JSON`}},search:{title:`搜索`,back:`返回`,placeholder:`搜索对象、仪表板、页面、报表…`,inputAriaLabel:`搜索对象、仪表板、页面、报表`,resultsCount:`找到 {{count}} 条与“{{query}}”相关的结果`,resultsCountPlural:`找到 {{count}} 条与“{{query}}”相关的结果`,itemsAvailable:`共 {{count}} 项可搜索`,noResults:`未找到结果`,noResultsHint:`请尝试调整搜索关键字`,typeObjects:`对象`,typeDashboards:`仪表板`,typePages:`页面`,typeReports:`报表`,badgeObject:`对象`,badgeDashboard:`仪表板`,badgePage:`页面`,badgeReport:`报表`},empty:{objectNotFound:`未找到对象`,objectNotFoundDescription:`对象 “{{name}}” 的定义不存在。请检查配置或返回选择有效的对象。`,recordNotFound:`未找到记录`,recordNotFoundDescription:`您查找的记录不存在或已被删除。`,pageNotFound:`未找到页面`,pageNotFoundDescription:`未找到页面 “{{name}}”,可能已被删除或重命名。`,dashboardNotFound:`未找到仪表板`,dashboardNotFoundDescription:`未找到仪表板 “{{name}}”,可能已被删除或重命名。`,reportNotFound:`未找到报表`,reportNotFoundDescription:`未找到报表 “{{name}}”,可能已被删除或重命名。`,noAppsConfigured:`尚未配置应用`,noAppsConfiguredDescription:`当前没有任何已注册的应用。请创建您的第一个应用,或前往系统设置进行配置。`,createFirstApp:`创建您的第一个应用`,systemSettings:`系统设置`,back:`返回`},renderer:{noPageSchema:`未提供页面 schema`,noFormSchema:`未提供表单 schema`,noDashboardSchema:`未提供仪表板 schema`,pageRendering:`页面渲染中:{{name}}`,dashboardRendering:`仪表板渲染中:{{name}}`,formRenderingMode:`正在以 {{mode}} 模式渲染表单`,formRenderingFor:`记录 {{id}}`,createRecord:`新建记录`,editRecord:`编辑记录`,page:`页面`,dashboard:`仪表板`,save:`保存`,cancel:`取消`},actionDialog:{title:`操作参数`,description:`请填写以下信息以继续操作。`,selectPlaceholder:`请选择 {{label}}`,requiredError:`{{label}} 为必填项`,lookupPlaceholder:`粘贴 {{label}} 的记录 ID(UUID)`,lookupHelpText:`请输入引用记录的 ID。可视化选择器即将上线。`,cancel:`取消`,confirm:`确认`,defaultActionTitle:`操作`,ok:`确定`},rowAction:{openMenu:`更多操作`,edit:`编辑`,delete:`删除`},navigationSync:{addedPage:`导航已更新:已添加页面 “{{name}}”`,addedDashboard:`导航已更新:已添加仪表板 “{{name}}”`,removedPage:`导航已更新:已移除页面 “{{name}}”`,removedDashboard:`导航已更新:已移除仪表板 “{{name}}”`,renamedPage:`导航已更新:页面 “{{oldName}}” 已重命名为 “{{newName}}”`,renamedDashboard:`导航已更新:仪表板 “{{oldName}}” 已重命名为 “{{newName}}”`,undoLabel:`撤销`,undone:`已撤销导航变更`,undoFailed:`撤销导航变更失败`,updateFailed:`更新导航失败`},objectActions:{deleteSuccess:`{{label}} 删除成功`,deleteFailed:`删除 {{label}} 失败`,noRecordId:`未提供记录 ID`,deleteConfirm:`确定要删除此记录吗?`,bulkDeleteSuccess:`已删除 {{count}} 条 {{label}} 记录`,bulkDeletePartial:`成功 {{succeeded}} 条,失败 {{failed}} 条`},objectViewActions:{renameFailed:`重命名视图失败`,deleteFailed:`删除视图失败`},dashboardActions:{pdfPreparing:`正在准备 PDF 导出…`,exportFailed:`导出失败:{{message}}`,forecastSoon:`预测视图即将上线`},recordDetail:{viewersTooltip:`正在查看此记录的用户`},cellRender:{empty:`空`,yes:`是`,no:`否`,systemFields:`系统字段`},user:{profile:`个人资料`,settings:`设置`,logout:`注销`,preferences:`偏好设置`,theme:`主题`,language:`语言`},organizations:{mine:`我的组织`,title:`组织`,heading:`您的组织`,subtitle:`选择一个组织以继续,或新建一个组织。`,searchPlaceholder:`搜索组织`,new:`新建组织`,current:`当前组织`,manage:`管理`,emptyTitle:`尚无组织`,emptyDescription:`创建您的第一个组织以开始使用。`,noMatches:`没有匹配的组织。`},notifications:{empty:`暂无通知`,emptyUnread:`已读完所有通知`,filterUnread:`未读`,filterAll:`全部`,markAllRead:`全部标记为已读`,viewAll:`查看全部通知`,approvalsPending:`{{count}} 条待审批`,viewApprovals:`查看审批`,noPendingApprovals:`暂无待审批事项`,openApprovalsInbox:`打开审批中心`},publicForm:{submit:`提交`,submitting:`提交中…`,submitAnother:`再填一份`,poweredBy:`由 ObjectStack 提供技术支持`,secureNotice:`您的信息将通过安全通道传输,仅用于回复您本次请求。`,thankYouTitle:`感谢您的提交!`,thankYouMessage:`我们已成功收到您的信息。`,redirecting:`将在 {{seconds}} 秒后跳转…`,unavailableTitle:`表单不可用`,unavailableDescription:`该链接当前没有可用的公开表单。请确认对应视图已启用匿名分享并匹配此 slug。`,tryDemo:`试用演示`,retry:`重试`,loading:`正在加载表单…`,requiredHint:`* 为必填项`,consentLabelDefault:`我已阅读并同意隐私政策,授权对本次请求所提供的信息进行处理。`,consentLink:`隐私政策`,consentRequired:`请先勾选同意隐私政策。`,rateLimited:`请再花点时间核对一下您的填写内容,再点击提交。`,redirectBlocked:`提交成功,但出于安全考虑,跳转链接已被阻止。`,demo:{contactTitle:`联系我们`,contactDescription:`告诉我们您的项目需求,销售代表将在一个工作日内与您联系。`,supportTitle:`提交支持请求`,supportDescription:`描述您遇到的问题,我们的团队会在一个工作日内回复。`,thankYouSalesTitle:`已收到您的信息,感谢联系!`,thankYouSalesMessage:`我们的销售代表将在一个工作日内与您取得联系。`,thankYouSupportTitle:`您的请求已进入处理队列。`,thankYouSupportMessage:`支持工程师将尽快跟进。如需补充截图,请保留此页面。`,field:{firstName:`名字`,lastName:`姓氏`,email:`工作邮箱`,phone:`电话`,jobTitle:`职位`,company:`公司`,website:`官网`,industry:`行业`,companySize:`公司规模`,howCanWeHelp:`我们可以为您做些什么?`,subject:`主题`,description:`问题描述`,issueType:`问题类型`,priority:`优先级`},industry:{technology:`科技`,software:`软件 / SaaS`,finance:`金融`,healthcare:`医疗健康`,retail:`零售`,other:`其他`},issueType:{question:`咨询`,problem:`问题`,bug:`缺陷`,feature_request:`功能建议`},priority:{low:`低`,medium:`中`,high:`高`,critical:`紧急`}}},marketplace:{title:`应用市场`,subtitle:`浏览已通过审核、发布到 ObjectStack 目录中的应用。点击应用查看详情并安装到你的某个环境中。`,searchPlaceholder:`按名称或 manifest ID 搜索应用…`,searchAria:`搜索市场应用`,installed:`已安装`,installedCount:`已安装({{count}})`,refresh:`刷新`,all:`全部`,noApprovedYet:`应用市场暂无已通过审核的应用。`,noMatchFilters:`没有应用匹配当前筛选条件。`,noDescription:`未提供描述。`,back:`返回应用市场`,installedTitle:`已安装的应用`,installedSubtitle:`当前已安装到本运行时内核的应用市场软件包。缓存的清单文件位于 <code>.objectstack/installed-packages/</code>,重启后仍然保留。`,installedEmpty:`本运行时尚未安装任何应用市场应用。`,browseLink:`去应用市场看看 →`,installedAdditiveNote:`<strong>说明:</strong>内核 API 仅支持新增 — 卸载会移除磁盘上的清单,下次启动时不再加载;但运行中的内核仍会保留该应用,直到下次重启运行时才会真正卸载。`,installedAt:`安装于 {{when}}`,installedBy:`由 {{user}}`,installedPackageId:`包`,cachedAs:`缓存为 <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`已安装 v{{version}}`,load:{failed:`应用市场加载失败`,failedHint:`本运行时默认指向公共 ObjectStack 云端。请检查运行时是否在线,或通过 <code>OS_CLOUD_URL</code> 指向自托管控制面。`,packageFailed:`应用加载失败`,notFound:`未找到。`},detail:{homepage:`主页`,installedV:`已安装 · v{{version}}`,about:`简介`,noReadme:`未提供 README。`,versions:`版本`,noApprovedVersions:`暂无已审核版本。`,prerelease:`预发布`,moreOptions:`更多安装选项`,uninstallFromRuntime:`从本运行时卸载`},action:{install:`安装`,reinstall:`重新安装`,working:`处理中…`,installToCloud:`安装到云端…`,installing:`安装中…`,uninstall:`卸载`,uninstalling:`卸载中…`,details:`详情`,close:`关闭`,dismiss:`关闭`,openOnCloud:`在云端打开`,backHome:`返回首页`},install:{dialogTitle:`安装 {{name}}`,dialogDescCurrent:`安装到当前环境({{host}})。`,dialogDescPicker:`选择要将此应用安装到的环境。需要先登录 ObjectStack Cloud。`,environment:`环境`,environmentPlaceholder:`选择一个环境`,includeSampleData:`包含示例数据`,noEnvs:`当前组织没有可用的环境。`,noPermission:`你没有权限在任何环境中安装应用。仅组织所有者和管理员可以安装 — 请联系你的工作区管理员。`,signInFirst:`请先登录 ObjectStack Cloud,然后点击下方"在云端打开"。`,success:`安装成功。打开环境即可看到新应用。`,localSuccess:`已将 v{{version}} 安装到本运行时。"{{name}}" 应该已经出现在应用切换器中。`,localManifestConflict:`{{message}}
|
|
8
|
+
提示:本地已有应用占用此 manifest_id,请先从 objectstack.config.ts 中移除。`,localUnauthorized:`请先登录本运行时再试。`,localMarketplaceUnavailable:`本运行时未配置 OS_CLOUD_URL,无法访问应用市场目录。`},uninstall:{confirm:`从本运行时卸载 {{manifestId}} v{{version}}?
|
|
9
|
+
|
|
10
|
+
磁盘上的清单缓存将被移除。运行中的内核仍会保留该应用,直到下次重启运行时才会真正卸载。`,successInList:`已移除 {{manifestId}}。重启运行时即可从内核中彻底卸载。`,successInDetail:`已移除 {{manifestId}} 的清单缓存。重启运行时即可从内核中彻底卸载该应用。`},accessDenied:{title:`应用市场仅限管理员使用`,description:`你没有权限在本环境中安装应用。请联系组织的所有者或管理员申请权限。`},category:{crm:`客户关系`,erp:`企业资源`,hr:`人力资源`,finance:`财务`,project:`项目管理`,collaboration:`协作`,analytics:`分析`,integration:`集成`,automation:`自动化`,ai:`人工智能`,security:`安全`,"developer-tools":`开发者工具`,"ui-theme":`界面主题`,storage:`存储`,other:`其他`},pricing:{free:`免费`,freemium:`免费增值`,paid:`付费`,subscription:`订阅`,"usage-based":`按用量计费`,"contact-sales":`联系销售`},relativeTime:{today:`今天`,daysAgo:`{{count}} 天前`,monthsAgo:`{{count}} 个月前`,yearsAgo:`{{count}} 年前`}}},ja:{common:{addToFavorites:`お気に入りに追加`,removeFromFavorites:`お気に入りから削除`,loading:`読み込み中...`,save:`保存`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,create:`作成`,search:`検索`,filter:`フィルター`,reset:`リセット`,confirm:`確認`,close:`閉じる`,back:`戻る`,next:`次へ`,previous:`前へ`,submit:`送信`,refresh:`更新`,export:`エクスポート`,import:`インポート`,yes:`はい`,no:`いいえ`,ok:`OK`,actions:`操作`,more:`もっと見る`,selectAll:`すべて選択`,clearAll:`すべてクリア`,noData:`データがありません`,noResults:`結果が見つかりません`,required:`必須`,optional:`任意`,selectOption:`選択してください`,select:`選択...`,openChat:`チャットを開く`,closeChat:`チャットを閉じる`,toggleSidebar:`サイドバーを切り替え`},validation:{required:`{{field}}は必須です`,minLength:`{{field}}は{{min}}文字以上で入力してください`,maxLength:`{{field}}は{{max}}文字以下で入力してください`,min:`{{field}}は{{min}}以上にしてください`,max:`{{field}}は{{max}}以下にしてください`,email:`有効なメールアドレスを入力してください`,url:`有効なURLを入力してください`,pattern:`{{field}}の形式が正しくありません`,unique:`{{field}}は一意である必要があります`,type:`{{field}}は有効な{{type}}である必要があります`},form:{addItem:`項目を追加`,removeItem:`項目を削除`,fieldRequired:`この項目は必須です`,invalidFormat:`形式が正しくありません`,saveSuccess:`保存しました`,saveError:`保存に失敗しました`,unsavedChanges:`保存されていない変更があります。このページを離れますか?`,stepOf:`ステップ {{current}} / {{total}}`,createTitle:`{{object}}を作成`,editTitle:`{{object}}を編集`,createDescription:`新しい{{object}}をデータベースに追加します。`,editDescription:`{{object}}の詳細を更新`,saveRecord:`レコードを保存`,create:`作成`,update:`更新`,createSuccess:`{{object}}が作成されました`,updateSuccess:`{{object}}が更新されました`,deleteSuccess:`{{object}}が削除されました`},fields:{richText:{format:`フォーマット: {{format}}`,basicEditorHint:`リッチテキストエディター(基本)`,placeholder:`テキストを入力...`}},table:{rowsPerPage:`1ページの行数`,showing:`{{total}}件中{{from}}〜{{to}}件を表示`,noRows:`表示するデータがありません`,sortAsc:`昇順`,sortDesc:`降順`,filterColumn:`{{column}}でフィルター`,columns:`列`,exportCSV:`CSVエクスポート`,exportExcel:`Excelエクスポート`,selectRow:`行を選択`,selectAllRows:`すべての行を選択`,expandRow:`行を展開`,collapseRow:`行を折りたたむ`,hideColumn:`列を非表示`,freezeColumn:`列を固定`,unfreezeColumn:`列の固定を解除`,pageInfo:`{{total}}ページ中{{current}}ページ`,totalRecords:`合計{{count}}件`,noResults:`結果が見つかりません`,noResultsHint:`フィルターや検索クエリを調整してみてください。`,cancelAll:`すべてキャンセル`,saveAll:`すべて保存 ({{count}})`,addRecord:`レコードを追加`,open:`開く`,search:`検索...`,modified:`{{count}} 行が変更されました`,selected:`{{count}} 件選択中`,edit:`編集`,delete:`削除`},grid:{actions:`アクション`,edit:`編集`,delete:`削除`,export:`エクスポート`,exportAs:`{{format}}でエクスポート`,loading:`グリッドを読み込み中...`,errorLoading:`グリッドの読み込みエラー`,pullToRefresh:`引っ張って更新`,refreshing:`更新中…`,openRecord:`レコードを開く`,rowHeight:`行の高さ: {{mode}}`,openMenu:`メニューを開く`,empty:`空`,yes:`はい`,no:`いいえ`,systemFields:`システム`,toolbar:{densityMode:`密度`,densityCompact:`コンパクト`,densityComfortable:`標準`,densitySpacious:`広め`,densityCycleHint:`{{label}}(クリックで切り替え)`,densityCycleShortHint:`クリックで切り替え`},import:{title:`{{object}}をインポート`,stepUpload:`アップロード`,stepMapping:`マッピング`,stepPreview:`プレビュー`,uploadDescription:`CSVファイルをアップロードして開始してください。`,mappingDescription:`CSV列をオブジェクトフィールドにマッピングします。`,previewDescription:`インポート前にデータを確認してください。`,dragDrop:`CSVファイルをここにドラッグ&ドロップするか、クリックして参照`,browseFiles:`ファイルを参照`,onlyCsv:`CSVファイルのみサポートされています。`,fileNeedsHeader:`ファイルにはヘッダー行と少なくとも1行のデータが必要です。`,mappingTemplate:`マッピングテンプレート:`,chooseTemplate:`テンプレートを選択…`,noSavedTemplates:`保存されたテンプレートはありません`,noneOption:`— なし —`,saveCurrent:`現在を保存`,templateName:`テンプレート名`,save:`保存`,deleteTemplate:`テンプレートを削除`,csvColumn:`CSV列`,mapsTo:`マッピング先`,status:`ステータス`,skipColumn:`列をスキップ`,skip:`— スキップ —`,mapped:`マッピング済み`,skipped:`スキップ済み`,rowsWithErrors:`{{count}} 行にエラー`,rowsCorrected:`{{count}} 行が修正されました`,clickToFix:`— ハイライトされたセルをクリックしてインラインで修正。`,showingRows:`{{total}} 行中 {{shown}} 行を表示`,importing:`インポート中… {{progress}}%`,importComplete:`インポート完了`,imported:`{{count}} 件インポートされました`,skippedCount:`{{count}} 件スキップされました`,moreErrors:`…他 {{count}} 件のエラー`,cancel:`キャンセル`,back:`戻る`,next:`次へ`,close:`閉じる`,importNRows:`{{count}} 行をインポート`,importingProgress:`インポート中…`,requiredMark:`*`,required:`必須`,invalidType:`無効な{{type}}`}},calendar:{today:`今日`,month:`月`,week:`週`,day:`日`,agenda:`予定表`,allDay:`終日`,noEvents:`予定はありません`,newEvent:`新しい予定`,moreEvents:`+{{count}} 件`},list:{recordCount:`{{count}} 件のレコード`,recordCountOne:`{{count}} 件のレコード`,addRecord:`レコードを追加`,tabs:`タブ`,allRecords:`すべてのレコード`,search:`検索`,filter:`フィルター`,filterRecords:`レコードをフィルター`,sort:`並べ替え`,sortRecords:`レコードを並べ替え`,group:`グループ`,groupBy:`グループ化`,export:`エクスポート`,exportAs:`{{format}}としてエクスポート`,color:`色`,rowColor:`行の色`,colorByField:`フィールドで色分け`,clear:`クリア`,none:`なし`,hideFields:`フィールドを非表示`,noItems:`項目が見つかりません`,noItemsMessage:`表示するレコードがありません。フィルターを調整するか、新しいデータを追加してください。`,showAll:`すべて表示`,pullToRefresh:`引っ張って更新`,refreshing:`更新中…`,share:`共有`,print:`印刷`,hideFieldsTitle:`フィールドを非表示`,dataLimitReached:`最初の {{limit}} 件のレコードを表示しています。さらにデータがある場合があります。`,viewSettings:`ビュー設定`,viewSettingsHint:`グループ化、色、密度、表示フィールド。`,addGroup:`グループフィールドを追加`,collapsedByDefault:`デフォルトで折りたたむ`,removeGroup:`削除`},kanban:{addCard:`カードを追加`,addColumn:`カラムを追加`,moveCard:`カードを移動`,deleteCard:`カードを削除`,deleteColumn:`カラムを削除`,noCards:`カードがありません`,cardTitlePlaceholder:`カードのタイトルを入力...`},timeline:{bucket:{overdue:`期限超過`,today:`今日`,tomorrow:`明日`,thisWeek:`今週`,nextWeek:`来週`,later:`後ほど`,noDate:`日付なし`,unassigned:`未割当`}},gantt:{column:{taskName:`タスク名`,start:`開始`,end:`終了`},toolbar:{prevPeriod:`前の期間`,nextPeriod:`次の期間`,zoomIn:`拡大`,zoomOut:`縮小`,jumpToToday:`今日に移動`,today:`今日`,showTaskList:`タスクリストを表示`,hideTaskList:`タスクリストを非表示`}},view:{rename:`名前を変更`,duplicateView:`ビューを複製`,shareView:`ビューを共有`,setAsDefault:`デフォルトに設定`,pinView:`ビューをピン留め`,unpinView:`ピン解除`,changeViewType:`ビュータイプを変更`,deleteView:`ビューを削除`,addView:`ビューを追加`,unsavedChanges:`未保存の変更`,saveAsView:`ビューとして保存`,moreViews:`あと {{count}} 件`,activeFilters:`フィルター適用中`,activeSort:`ソート適用中`,manageViews:`ビューを管理`,manageAllViews:`すべてのビューを管理…`,searchViews:`ビューを検索`,addNewView:`新しいビューを追加`,done:`完了`,noViewsFound:`検索に一致するビューはありません。`,dragToReorder:`ドラッグして並べ替え`,defaultView:`デフォルトビュー`,tabActionsFor:`{{name}} のビュー操作`,readonlyAriaLabel:`読み取り専用ビュー`,readonlyTooltip:`システムビュー — 複製してカスタマイズしてください。`},detail:{back:`戻る`,edit:`編集`,editInline:`編集`,save:`保存`,saveChanges:`変更を保存`,editFieldsInline:`フィールドを編集`,share:`共有`,duplicate:`複製`,export:`エクスポート`,viewHistory:`履歴を表示`,delete:`削除`,moreActions:`その他の操作`,addToFavorites:`お気に入りに追加`,removeFromFavorites:`お気に入りから削除`,previousRecord:`前のレコード`,nextRecord:`次のレコード`,recordOf:`{{current}} / {{total}}`,recordNotFound:`レコードが見つかりません`,recordNotFoundDescription:`お探しのレコードは存在しないか、削除された可能性があります。`,goBack:`戻る`,details:`詳細`,related:`関連`,relatedRecords:`{{count}} 件のレコード`,relatedRecordOne:`{{count}} 件のレコード`,noRelatedRecords:`関連レコードが見つかりません`,loading:`読み込み中...`,copyToClipboard:`クリップボードにコピー`,copied:`コピーしました!`,deleteConfirmation:`このレコードを削除してもよろしいですか?`,editRecord:`レコードを編集`,viewAll:`すべて表示`,new:`新規`,emptyValue:`—`,activity:`アクティビティ`,editRow:`編集`,deleteRow:`削除`,deleteRowConfirmation:`このレコードを削除してもよろしいですか?`,actions:`操作`,previousPage:`前へ`,nextPage:`次へ`,pageOf:`ページ {{current}} / {{total}}`,sortBy:`並べ替え`,filterPlaceholder:`フィルター...`,highlightFields:`主要フィールド`,comments:`コメント`,searchComments:`コメントを検索…`,addCommentPlaceholder:`コメントを追加… (Ctrl+Enterで送信)`,noMatchingComments:`一致するコメントがありません`,noCommentsYet:`コメントはまだありません`,pinned:`ピン留め`,pin:`ピン留め`,unpin:`ピン解除`,justNow:`たった今`,minutesAgo:`{{count}}分前`,hoursAgo:`{{count}}時間前`,daysAgo:`{{count}}日前`,dropFilesToUpload:`ファイルをここにドロップまたはクリックしてアップロード`,attachmentCount:`{{count}} 件の添付ファイル`,attachmentCountPlural:`{{count}} 件の添付ファイル`,removeAttachment:`添付ファイルを削除`,unifiedDiff:`統合差分`,sideBySideDiff:`横並び差分`,noChanges:`変更なし`,previousVersion:`前のバージョン`,currentVersion:`現在のバージョン`,discussion:`ディスカッション`,showDiscussion:`ディスカッションを表示 ({{count}})`,hideDiscussion:`ディスカッションを非表示`,bold:`太字 (Ctrl+B)`,italic:`斜体 (Ctrl+I)`,listFormat:`リスト`,inlineCode:`インラインコード`,mentionSomeone:`メンションする`,preview:`プレビュー`,submitComment:`送信 (Ctrl+Enter)`,sendComment:`送信`,writeComment:`コメントを入力…`,subscribedTooltip:`購読中 — クリックで解除`,unsubscribedTooltip:`通知を購読`,firstRecord:`最初のレコード (Home)`,previousRecordKey:`前のレコード (←)`,nextRecordKey:`次のレコード (→)`,lastRecord:`最後のレコード (End)`,noRecords:`レコードなし`,searchWhileNavigating:`ナビゲーション中に検索`,searchRecords:`レコードを検索…`,allActivity:`すべてのアクティビティ`,commentsOnly:`コメントのみ`,fieldChangesFilter:`フィールド変更`,tasksOnly:`タスクのみ`,leaveCommentPlaceholder:`コメントを入力… (Ctrl+Enterで送信)`,noActivity:`アクティビティの記録なし`,loadMore:`さらに読み込む`,edited:`(編集済み)`,via:`{{source}} 経由`,replyCount:`{{count}} 件の返信`,replyCountPlural:`{{count}} 件の返信`,replyPlaceholder:`返信…`,filterActivity:`アクティビティをフィルター`,openDiscussion:`ディスカッションパネルを開く`,closeDiscussion:`ディスカッションパネルを閉じる`,subscribeAriaLabel:`通知を購読`,unsubscribeAriaLabel:`通知の購読を解除`,clearSearch:`検索をクリア`,saving:`保存中…`,lockedByApproval:`承認のためロック中`,lockedTooltip:`このレコードには承認待ちのリクエストがあります。編集はロックされています`,cancelApproval:`承認を取り消す`,cancelApprovalInFlight:`取り消し中…`,cancelApprovalTooltip:`承認待ちリクエストを取り消してレコードのロックを解除する`,cancelApprovalFailed:`承認の取り消しに失敗しました`,cancelApprovalUnavailable:`このデータソースでは承認の取り消しはサポートされていません`,linkCopied:`リンクをクリップボードにコピーしました`,linkCopyFailed:`リンクのコピーに失敗しました`,cancel:`キャンセル`,cancelEdit:`変更を破棄`,sectionMoreDetails:`詳細情報`,concurrentUpdateTitle:`このレコードは他のユーザーによって変更されました`,concurrentUpdateDescription:`編集中に他のユーザーが {{field}} の新しいバージョンを保存しました。変更を上書きしないよう、競合の解決方法を選択してください。`,concurrentUpdateYourEdit:`自分の編集`,concurrentUpdateCurrentValue:`現在の値`,concurrentUpdateUpdatedBy:`{{name}} が更新`,concurrentUpdateUpdatedAt:`{{when}} に更新`,concurrentUpdateReload:`最新を読み込む`,concurrentUpdateOverwrite:`上書きする`,concurrentUpdateCancel:`キャンセル`,openInNewTab:`新しいタブで開く`,history:`履歴`,deleteRowTitle:`レコードを削除`,createdBy:`作成者`,updatedBy:`更新者`,showEmptyRelated_one:`+ {{count}} 件(空)`,showEmptyRelated_other:`+ {{count}} 件(空)`,copyEmail:`メールをコピー`,copyPhone:`電話番号をコピー`,copyRecordId:`レコードIDをコピー`,showEmptyFields:`{{count}} 件の空フィールドを表示`,hideEmptyFields:`空フィールドを非表示`,noValue:`値なし`},chart:{noData:`チャートデータがありません`,loading:`チャート読み込み中...`},map:{searchLocations:`場所を検索…`,locationDetails:`場所の詳細`,markersCount:`{{count}} 個のマーカー`,invalidCoordinates:`座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。`,invalidCoordinatesPlural:`座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。`},workflow:{draft:`下書き`,active:`アクティブ`,paused:`一時停止`,completed:`完了`,cancelled:`キャンセル`,save:`保存`,publish:`公開`,addNode:`ノードを追加`,workflowFlow:`ワークフロー`,properties:`プロパティ`,connections:`接続`,quickConnect:`クイック接続`,fromPlaceholder:`開始...`,toPlaceholder:`終了...`,connect:`接続`,label:`ラベル`,type:`タイプ`,description:`説明`,assignee:`担当者`,assigneeType:`担当者タイプ`,user:`ユーザー`,role:`ロール`,group:`グループ`,expression:`式`,timeoutMinutes:`タイムアウト(分)`,selectNodeToEdit:`ノードを選択してプロパティを編集`,workflowTitle:`ワークフロータイトル`,newWorkflow:`新規ワークフロー`,outConnections:`{{count}} 個の出力`,start:`開始`,end:`終了`,task:`タスク`,userTask:`ユーザータスク`,serviceTask:`サービスタスク`,scriptTask:`スクリプトタスク`,approval:`承認`,condition:`条件`,parallelGateway:`並列ゲートウェイ`,joinGateway:`結合ゲートウェイ`,boundaryEvent:`境界イベント`,delay:`遅延`,notification:`通知`,webhook:`Webhook`,allowConcurrency:`許可(並行実行)`,forbidConcurrency:`禁止(新規スキップ)`,replaceConcurrency:`置換(既存キャンセル)`,queueConcurrency:`キュー(完了後に実行)`,conditionEvent:`条件`,manualEvent:`手動`,webhookEvent:`Webhook`,timerEvent:`タイマー`,signalEvent:`シグナル`,versionHistory:`バージョン履歴`,importBpmn:`BPMNをインポート`,exportBpmn:`BPMNをエクスポート`,undo:`元に戻す`,redo:`やり直す`,resetZoom:`ズームをリセット`},dashboard:{addWidget:`ウィジェットを追加`,removeWidget:`ウィジェットを削除`,editLayout:`レイアウトを編集`,saveLayout:`レイアウトを保存`,resetLayout:`レイアウトをリセット`,total:`合計`,noDataAvailable:`データがありません`,noDataSourceFor:`データソースが利用できません:`,trend:{vsLastQuarter:`前四半期比`,vsLastMonth:`先月比`,vsLastWeek:`先週比`,vsLastYear:`前年比`,vsYesterday:`昨日比`,vsPreviousPeriod:`前期比`}},configPanel:{save:`保存`,discard:`破棄`,close:`閉じる`,layout:`レイアウト`,columns:`列数`,gap:`間隔`,rowHeight:`行の高さ`,data:`データ`,refreshInterval:`更新間隔`,appearance:`外観`,title:`タイトル`,showDescription:`説明を表示`,theme:`テーマ`,configuration:`設定`,general:`基本`,advanced:`詳細`},appDesigner:{createApp:`アプリケーション作成`,editApp:`アプリケーション編集`,basicInfo:`基本情報`,objects:`オブジェクト`,navigation:`ナビゲーション`,branding:`ブランディング`,appName:`アプリ名`,appTitle:`タイトル`,appDescription:`説明`,appIcon:`アイコン`,template:`テンプレート`,layout:`レイアウト`,layoutSidebar:`サイドバー`,layoutHeader:`ヘッダー`,layoutEmpty:`空`,selectObjects:`オブジェクトを選択`,searchObjects:`オブジェクトを検索…`,selectAll:`すべて選択`,deselectAll:`すべて解除`,navBuilder:`ナビゲーションビルダー`,addGroup:`グループを追加`,addUrl:`URLを追加`,addSeparator:`区切りを追加`,noNavItems:`ナビゲーション項目がありません。`,logoUrl:`ロゴURL`,primaryColor:`プライマリカラー`,faviconUrl:`ファビコンURL`,preview:`プレビュー`,complete:`完了`,snakeCaseHint:`snake_case形式が必要です(例: my_app)`,modeEdit:`編集`,modePreview:`プレビュー`,modeCode:`コード`,addWidget:`ウィジェットを追加`,widgetProperties:`ウィジェットプロパティ`,dataSource:`データソース`,valueField:`値フィールド`,aggregate:`集計`,colorVariant:`カラーバリアント`,addComponent:`コンポーネントを追加`,componentProperties:`コンポーネントプロパティ`,viewType:`ビュータイプ`,fields:`フィールド`,toolbar:`ツールバー`,showSearch:`検索を表示`,showFilters:`フィルターを表示`,showSort:`ソートを表示`,appearance:`外観`,rowHeight:`行高さ`,stripedRows:`ストライプ行`,bordered:`枠線`,livePreview:`リアルタイムプレビュー`,stepBasicDesc:`名前、タイトル、レイアウト`,stepObjectsDesc:`ビジネスオブジェクトを選択`,stepNavigationDesc:`ナビゲーションツリーを構築`,stepBrandingDesc:`ロゴ、色、ファビコン`,noObjectsFound:`オブジェクトが見つかりません。`,noNavItemsHint:`ナビゲーション項目がありません。前のステップでオブジェクトを選択するか、手動で追加してください。`,separator:`セパレーター`,separatorLabel:`— セパレーター —`,newGroup:`新しいグループ`,newLink:`新しいリンク`,saveDraft:`下書き保存`,cancelConfirmTitle:`変更を破棄しますか?`,cancelConfirmMessage:`保存されていない変更があります。キャンセルしてもよろしいですか?`,confirmDiscard:`破棄`,keepEditing:`編集を続ける`,navNoItems:`ナビゲーション項目がありません。上のボタンをクリックして追加してください。`,navNoPreviewItems:`項目なし`,navLivePreview:`ライブプレビュー`,navCollapseGroup:`グループを折りたたむ`,navExpandGroup:`グループを展開`,navAddChild:`子項目を追加`,navMoveUp:`上に移動`,navMoveDown:`下に移動`,navRemove:`削除`,navObjectPage:`オブジェクトページ`,navDashboard:`ダッシュボード`,navPage:`ページ`,navReport:`レポート`,navGroup:`グループ`,navUrl:`URL`,navSeparator:`区切り`,navTypeObject:`オブジェクト`,navTypeDashboard:`ダッシュボード`,navTypePage:`ページ`,navTypeReport:`レポート`,navTypeUrl:`URL`,navTypeGroup:`グループ`,navTypeSeparator:`区切り`,navTypeAction:`アクション`,navEditIcon:`アイコンを編集`,navToggleVisible:`表示を切り替え`,navHidden:`非表示`,navExportSchema:`JSON エクスポート`,navImportSchema:`JSON インポート`,navExportSuccess:`ナビゲーションスキーマをエクスポートしました`,navImportSuccess:`ナビゲーションスキーマをインポートしました`,navImportError:`無効なナビゲーションJSON`,navIconPlaceholder:`アイコン名(例:Users)`,dashboardEditor:`ダッシュボードエディター`,noWidgets:`ウィジェットがありません。上のボタンをクリックして追加してください。`,widgetLayoutSize:`レイアウトサイズ`,widgetWidth:`幅`,widgetHeight:`高さ`,dashboardPreview:`ダッシュボードプレビュー`,noWidgetsPreview:`プレビューするウィジェットがありません`,pageCanvasEditor:`ページキャンバスエディター`,emptyPage:`空のページ。上のボタンをクリックしてコンポーネントを追加してください。`,pagePreview:`ページプレビュー`,noComponentsPreview:`プレビューするコンポーネントがありません`,modePage:`ページ`,modeDashboard:`ダッシュボード`,undo:`元に戻す`,redo:`やり直す`,brandingEditor:`ブランディングエディター`,brandingExport:`JSON エクスポート`,brandingImport:`JSON インポート`,brandingPreview:`プレビュー`,brandingSampleButton:`サンプルボタン`,brandingSampleText:`ブランドテーマの外観です。`,colorPalette:`カラーパレット`,fontFamily:`フォントファミリー`,fontDefault:`デフォルト(システム)`,modeLight:`ライト`,modeDark:`ダーク`,mobilePreview:`モバイルプレビュー`,objectManager:{title:`オブジェクトマネージャー`,addObject:`新しいオブジェクト`,searchPlaceholder:`オブジェクトを検索…`,noObjects:`オブジェクトが見つかりません。`,objectName:`API名`,objectLabel:`ラベル`,pluralLabel:`複数ラベル`,icon:`アイコン`,selectIcon:`アイコンを選択…`,group:`グループ`,noGroup:`グループなし`,sortOrder:`並べ替え順`,enabled:`有効`,relationships:`リレーション`,systemBadge:`システム`,fieldCount:`{{count}} フィールド`,ungrouped:`グループなし`,deleteConfirmTitle:`オブジェクトを削除しますか?`,deleteConfirmMessage:`このオブジェクトとそのすべてのフィールドが永久に削除されます。この操作は元に戻せません。`},fieldDesigner:{title:`フィールドデザイナー`,addField:`新しいフィールド`,searchPlaceholder:`フィールドを検索…`,allTypes:`すべてのタイプ`,noFields:`フィールドが見つかりません。`,fieldName:`API名`,fieldLabel:`ラベル`,fieldType:`タイプ`,fieldGroup:`グループ`,description:`説明`,required:`必須`,unique:`ユニーク`,readOnly:`読み取り専用`,hidden:`非表示`,indexed:`インデックス`,externalId:`外部ID`,trackHistory:`履歴追跡`,defaultValue:`デフォルト値`,placeholder:`プレースホルダー`,referenceTo:`参照先`,formula:`数式`,options:`オプション`,addOption:`オプションを追加`,validationRules:`検証ルール`,addRule:`ルールを追加`,systemBadge:`システム`,ungrouped:`一般`,deleteConfirmTitle:`フィールドを削除しますか?`,deleteConfirmMessage:`このフィールドは永久に削除されます。このフィールドの既存データは失われます。`,basicSection:`基本`,typeSpecificSection:`タイプ設定`,advancedSection:`詳細設定`,typeCategory:{text:`テキスト`,number:`数値`,date:`日付と時刻`,choice:`選択`,relation:`リレーション`,advanced:`詳細`}}},console:{title:`ObjectStack コンソール`,initializing:`アプリケーションを初期化中...`,breadcrumb:{dashboards:`ダッシュボード`,pages:`ページ`,reports:`レポート`,system:`システム`},loadingSteps:{connecting:`データソースに接続中`,loadingConfig:`設定を読み込み中`,preparingWorkspace:`ワークスペースを準備中`},error:{connectionFailed:`サーバーに接続できません`,serverUnreachable:`サーバー {{url}} に接続できません。`,checkServer:`ネットワーク接続、またはバックエンドが稼働していることを確認してください。`,timeout:`接続がタイムアウトしました(10秒)。`},actions:{retry:`再試行`,retrying:`再試行中…`},shortcuts:{title:`キーボードショートカット`,description:`利用可能なすべてのキーボードショートカットのクイックリファレンス。`,groups:{general:`一般`,navigation:`ナビゲーション`,dataViews:`データビュー`,preferences:`設定`},openCommandPalette:`コマンドパレットを開く`,showShortcuts:`キーボードショートカットを表示`,closeDialog:`ダイアログ / パネルを閉じる`,toggleSidebar:`サイドバーを切り替え`,focusSearch:`検索にフォーカス`,createRecord:`新しいレコードを作成`,refreshData:`データを更新`,editRecord:`選択したレコードを編集`,toggleDarkMode:`ダークモードを切り替え`},commandPalette:{placeholder:`コマンドを入力または検索...`,noResults:`結果が見つかりません。`,objects:`オブジェクト`,dashboards:`ダッシュボード`,pages:`ページ`,reports:`レポート`,switchApp:`アプリを切り替え`,current:`現在`,preferences:`設定`,lightTheme:`ライトテーマ`,darkTheme:`ダークテーマ`,systemTheme:`システムテーマ`,actions:`アクション`,openFullSearch:`完全な検索ページを開く`,createApp:`新しいアプリを作成`,searching:`検索中…`,records:`レコード`,recentRecords:`最近閲覧`},errors:{somethingWentWrong:`問題が発生しました`,unexpectedError:`このビューのレンダリング中に予期しないエラーが発生しました。`,tryAgain:`再試行`,goHome:`ホームに戻る`,errorDetails:`エラー詳細(開発モードのみ)`},theme:{toggle:`テーマを切り替え`,light:`ライト`,dark:`ダーク`,system:`システム`},objectView:{objectNotFound:`オブジェクトが見つかりません`,objectNotFoundDescription:`オブジェクト「{{objectName}}」は現在の設定に存在しません。`,objectNotFoundHint:`アプリのナビゲーション設定を確認するか、サイドバーから別のオブジェクトを選択してください。`,allRecords:`すべてのレコード`,exitDesignMode:`デザインモードを終了`,enterDesignMode:`デザインモードに入る`,metadataInspector:`メタデータインスペクター`,editView:`ビューを編集`,addView:`ビューを追加`,designTools:`デザインツール`,new:`新規`,configureView:`ビューを設定`,closePanel:`パネルを閉じる`,page:`ページ`,pageConfigHint:`ツールバー、ナビゲーション、ビューシェル設定`,listConfigHint:`このリストタイプのデータレンダリング、列、外観`,general:`一般`,generalHint:`ビューのタイトル、説明、タイプ`,toolbar:`ツールバー`,toolbarHint:`検索、フィルター、ソート、グループ、密度の切り替え`,toolbarEnabledCount:`{{total}} 件中 {{count}} 件有効`,navigationSection:`ナビゲーション`,navigationHint:`行クリック時の動作と詳細ビューの設定`,records:`レコード`,recordsHint:`選択モード、レコード追加、インライン編集`,exportPrint:`エクスポートと印刷`,exportPrintHint:`エクスポート形式、印刷、レコード数の表示`,showAllFields:`すべて表示`,hideAllFields:`すべて非表示`,searchFields:`フィールドを検索...`,title:`タイトル`,description:`説明`,data:`データ`,source:`ソース`,columns:`列`,filterBy:`フィルター条件`,sortBy:`並べ替え条件`,appearance:`外観`,showDescription:`説明を表示`,viewType:`ビュータイプ`,userFilters:`ユーザーフィルター`,enableSearch:`検索を有効化`,enableFilter:`フィルターを有効化`,enableSort:`並べ替えを有効化`,enableHideFields:`フィールド非表示を有効化`,enableGroup:`グループを有効化`,enableColor:`カラーを有効化`,enableDensity:`密度を有効化`,userActions:`ユーザーアクション`,addRecordViaForm:`フォームからレコードを追加`,advanced:`詳細設定`,allowExport:`エクスポートを許可`,recordCount:`{{count}} 件のレコード`,noDescription:`説明なし`,none:`なし`,columnsConfigured:`{{count}} 列`,save:`保存`,discard:`破棄`,createView:`ビューを作成`,newView:`新しいビュー`,typeOptions:`タイプオプション`,groupByField:`グループ化フィールド`,startDateField:`開始日フィールド`,titleField:`タイトルフィールド`,latitudeField:`緯度フィールド`,longitudeField:`経度フィールド`,imageField:`画像フィールド`,dateField:`日付フィールド`,selectField:`フィールドを選択...`,gridOptionsHint:`グリッドビューは上記で設定された列を使用します。`,groupBy:`グループ化`,prefixField:`プレフィックスフィールド`,fields:`フィールド`,fieldsVisible:`{{count}} 件表示`,sortsCount:`{{count}} 件の並べ替え`,filtersCount:`{{count}} 件のフィルター`,endDateField:`終了日フィールド`,color:`カラー`,fieldTextColor:`フィールドテキストカラー`,rowHeight:`行の高さ`,wrapHeaders:`ヘッダーの折り返し`,showFieldDescriptions:`フィールド説明を表示`,collapseAllByDefault:`デフォルトですべて折りたたむ`,striped:`ストライプ行`,bordered:`ボーダーセル`,inlineEdit:`インラインでレコードを編集`,addDeleteRecordsInline:`インラインでレコードを追加/削除`,clickIntoRecordDetails:`レコード詳細をクリックで表示`,navigationMode:`ナビゲーションモード`,navigationWidth:`ナビゲーション幅`,navigationWidthHint:`ドロワー、モーダル、スプリットナビゲーションモードで使用可能`,openNewTab:`新しいタブで開く`,openNewTabHint:`ページおよび新しいウィンドウナビゲーションモードで使用可能`,import:`インポート`,importTitle:`CSVからインポート`,importedToast:`{{count}} 行をインポートしました。`,importedWithSkipped:`{{ok}} 行をインポートしました。{{skipped}} 行をスキップしました。`,showAdvancedSettings:`詳細設定を表示`,showFewerSettings:`設定を減らす`,createViewDesc:`ビュータイプを選択して名前を付けてください。設定は後で変更できます。`,cancel:`キャンセル`,create:`作成`,delete:`削除`,deleteViewTitle:`ビューを削除`,deleteViewConfirm:`ビュー「{{name}}」を削除してもよろしいですか?この操作は元に戻せません。`,bulkDeleteConfirm:`選択した {{count}} 件のレコードを削除しますか?この操作は元に戻せません。`,duplicateViewName:`この名前のビューはすでに存在します。`,viewTypeGrid:`グリッド`,viewTypeGridDesc:`スプレッドシート形式のレコード一覧。`,viewTypeKanban:`かんばん`,viewTypeKanbanDesc:`単一選択フィールドでカードをカラムにグループ化。`,viewTypeCalendar:`カレンダー`,viewTypeCalendarDesc:`日付でレコードを月次カレンダーに配置。`,viewTypeGallery:`ギャラリー`,viewTypeGalleryDesc:`添付フィールドで大きな画像カードを表示。`,viewTypeTimeline:`タイムライン`,viewTypeTimelineDesc:`水平時間軸にレコードを配置。`,viewTypeGantt:`ガントチャート`,viewTypeGanttDesc:`開始/終了と依存関係のあるプロジェクトバー。`,viewTypeMap:`マップ`,viewTypeMapDesc:`緯度/経度フィールドから地理マーカーを表示。`,viewTypeChart:`チャート`,viewTypeChartDesc:`集計された棒グラフ/折れ線グラフ/円グラフ。`,groupByFieldHelp:`かんばんはこのフィールドの値でレコードをカラムにグループ化します。`,startDateFieldHelp:`カレンダーはこの日付に一致するセルにレコードを配置します。`,ganttStartDateFieldHelp:`各ガントバーの左端はこの日付を使用します。`,ganttEndDateFieldHelp:`各ガントバーの右端はこの日付を使用します。`,timelineDateFieldHelp:`レコードはこの日付でタイムラインに配置されます。`,latitudeFieldHelp:`緯度座標を提供するフィールド(地理フィールドのみ)。`,longitudeFieldHelp:`経度座標を提供するフィールド(地理フィールドのみ)。`,imageFieldHelp:`ギャラリーのカバーはこの画像または添付フィールドから取得されます。`,selectOption:`選択...`,noEligibleFieldForType:`このタイプに適したフィールドがありません。最初にオブジェクトに追加してください。`,viewTypeUnavailable:`このオブジェクトには「{{field}}」として機能するフィールドがありません。`,viewTypeUnavailableShort:`このオブジェクトではサポートされていません。`,chartType:`チャートタイプ`,chartTypeHelp:`データのレンダリング方法を決定します。`,chartTypeBar:`棒グラフ`,chartTypeLine:`折れ線グラフ`,chartTypePie:`円グラフ`,chartTypeArea:`面積グラフ`,chartTypeScatter:`散布図`,xAxisField:`X軸フィールド`,xAxisFieldHelp:`カテゴリまたは時間の次元。`,yAxisField:`Y軸フィールド`,yAxisFieldHelp:`集計する数値フィールド。`,selectionMode:`選択モード`,selectionNone:`なし`,selectionSingle:`単一`,selectionMultiple:`複数`,pageSize:`ページサイズ`,pageSizeOptions:`ページサイズのオプション`,exportFormats:`エクスポート形式`,exportMaxRecords:`最大レコード数`,exportIncludeHeaders:`ヘッダーを含む`,exportFileNamePrefix:`ファイル名プレフィックス`,searchableFields:`検索可能フィールド`,filterableFields:`フィルター可能フィールド`,resizableColumns:`サイズ変更可能な列`,densityCompact:`コンパクト`,densityComfortable:`標準`,densitySpacious:`広め`,densityMode:`密度モード`,hiddenFields:`非表示フィールド`,rowActions:`行アクション`,bulkActions:`一括アクション`,sharing:`共有`,sharingEnabled:`共有を有効にする`,sharingVisibility:`表示設定`,addRecordEnabled:`レコード追加を有効にする`,addRecordPosition:`位置`,addRecordMode:`モード`,addRecordFormView:`フォームビュー`,conditionalFormatting:`条件付き書式`,addRule:`ルールを追加`,quickFilters:`クイックフィルター`,addQuickFilter:`クイックフィルターを追加`,ufElements:`要素`,ufDropdown:`ドロップダウン`,ufTabs:`タブ`,ufToggle:`トグル`,ufAddField:`+ フィルターフィールドを追加...`,ufNoFields:`利用可能なフィールドがありません`,ufAddTab:`+ タブを追加`,ufTabLabel:`ラベル`,ufShowAllRecords:`「すべてのレコード」タブを表示`,ufAllowAddTab:`タブの追加を許可`,showRecordCount:`レコード数を表示`,allowPrinting:`印刷を許可`,virtualScroll:`仮想スクロール`,emptyStateTitle:`空の状態のタイトル`,emptyStateMessage:`空の状態のメッセージ`,emptyStateIcon:`空の状態のアイコン`,ariaLabel:`ARIAラベル`,ariaDescribedBy:`ARIA説明`,ariaLive:`ARIAライブ`,accessibility:`アクセシビリティ`,viewTabs:`ビュータブ`},localeSwitcher:{label:`言語`},search:`検索…`,nav:{pinItem:`{{name}} をピン留め`,unpinItem:`{{name}} のピンを外す`,dragToReorder:`ドラッグして並べ替え`,favorites:`お気に入り`}},auth:{login:{title:`アカウントにサインイン`,description:`メールアドレスとパスワードを入力してください`,emailLabel:`メールアドレス`,emailPlaceholder:`name@example.com`,passwordLabel:`パスワード`,passwordPlaceholder:`パスワードを入力`,forgotPasswordText:`パスワードをお忘れですか?`,submitButton:`サインイン`,submittingButton:`サインイン中...`,noAccountText:`アカウントをお持ちでないですか?`,signUpText:`新規登録`,errors:{invalidCredentials:`メールアドレスまたはパスワードが正しくありません。再試行してください。`,emailNotVerified:`サインインする前にメールアドレスを確認してください。`}},register:{title:`アカウントを作成`,description:`情報を入力して始めましょう`,nameLabel:`名前`,namePlaceholder:`田中太郎`,emailLabel:`メールアドレス`,emailPlaceholder:`name@example.com`,passwordLabel:`パスワード`,passwordPlaceholder:`パスワードを作成(8文字以上)`,confirmPasswordLabel:`パスワード確認`,confirmPasswordPlaceholder:`パスワードを再入力`,passwordMismatchError:`パスワードが一致しません`,passwordTooShortError:`パスワードは8文字以上必要です`,submitButton:`アカウント作成`,submittingButton:`アカウント作成中...`,hasAccountText:`すでにアカウントをお持ちですか?`,signInText:`サインイン`,errors:{userExists:`このメールアドレスのアカウントはすでに存在します。代わりにサインインしてください。`},verifyInbox:{title:`受信箱を確認してください`,description:`{{email}} に確認リンクを送信しました。リンクをクリックしてアカウントを有効にしてください。`,resend:`確認メールを再送信`,resending:`送信中…`,resent:`確認メールが送信されました。`,backToSignIn:`サインインに戻る`}},forgotPassword:{title:`パスワードをリセット`,description:`メールアドレスを入力してください。パスワードリセットリンクをお送りします`,emailLabel:`メールアドレス`,emailPlaceholder:`name@example.com`,submitButton:`リセットリンクを送信`,submittingButton:`送信中...`,successTitle:`メールをご確認ください`,successDescription:`{{email}} にパスワードリセットリンクを送信しました。受信箱をご確認ください。`,backToSignInText:`サインインに戻る`,rememberPasswordText:`パスワードを覚えていますか?`,signInText:`サインイン`},resetPassword:{title:`新しいパスワードを設定`,description:`以前に使用していないパスワードを選択してください。`,newPassword:`新しいパスワード`,confirmPassword:`パスワードの確認`,submit:`パスワードを更新`,submitting:`更新中…`,success:`パスワードが更新されました`,failed:`リセットに失敗しました`,invalidToken:`このリセットリンクは無効か期限切れです。`,missingToken:`リセットリンクが見つからないか期限切れです`,passwordsMismatch:`パスワードが一致しません`,requestNewLink:`新しいリンクをリクエスト`},verifyEmail:{title:`メールアドレスを確認してください`,description:`メールアドレスに確認リンクを送信しました。リンクをクリックしてアカウントを確認してください。`,sentTo:`送信先:`,verifyingTitle:`確認中…`,verifyingDescription:`メールを確認中です。少々お待ちください。`,successTitle:`メールが確認されました`,successDescription:`メールが確認されました。サインインできます。`,errorTitle:`確認に失敗しました`,errorDescription:`確認に失敗しました。新しいリンクをリクエストしてください。`,missingToken:`確認リンクにトークンがありません。`,emailMissing:`メールアドレスがありません`,resendButton:`確認メールを再送信`,resending:`送信中…`,resent:`メールが送信されました!受信箱を確認してください`,resentSuccess:`確認メールが送信されました!`,resentDescription:`受信箱を確認して確認リンクをクリックしてください。`,resendFailed:`確認メールを再送信できません`,signInLink:`サインインへ`,backToSignIn:`サインインに戻る`,backToLogin:`ログインに戻る`,checkSpam:`メールが届きませんか?スパムフォルダーを確認するか、サポートに連絡してください。`,or:`または`},setup:{welcomeTitle:`ObjectStackへようこそ`,description:`このデプロイメントの設定を完了するために、最初のオーナーアカウントを作成してください。`,yourName:`お名前`,orgName:`組織名`,orgNamePlaceholder:`Acme Inc.`,emailLabel:`メールアドレス`,emailPlaceholder:`name@example.com`,passwordLabel:`パスワード`,passwordHint:`最低8文字`,submit:`オーナーアカウントを作成`,submitting:`設定中…`,failed:`設定に失敗しました`},device:{title:`新しいデバイスを認証`,subtitle:`{{email}} としてサインインするためにこのデバイスを承認します。`,userCodeLabel:`デバイスコード`,loggedInAs:`{{email}} としてサインイン中`,approve:`デバイスを承認`,approving:`承認中…`,approvedTitle:`デバイスが認証されました`,approvedDescription:`デバイスに戻ることができます。まもなくサインインするはずです。`,approveSuccess:`デバイスが認証されました`,approveSuccessDescription:`このウィンドウを閉じることができます。`,approveFailed:`承認に失敗しました`,deny:`リクエストを拒否`,denying:`拒否中…`,deniedTitle:`アクセスが拒否されました`,deniedDescription:`このデバイスはアクセスを許可されません。`,denyFailed:`リクエストの拒否に失敗しました`,invalidTitle:`無効なデバイスリンク`,invalidDescription:`URLにデバイスコードが指定されていません。`,loading:`読み込み中…`,cancel:`キャンセル`},shell:{tenantHostHint:`このワークスペースにサインインしています`}},errors:{networkError:`ネットワークエラーです。接続を確認してください。`,serverError:`サーバーエラーです。後でもう一度お試しください。`,notFound:`リソースが見つかりません。`,unauthorized:`この操作を実行する権限がありません。`,forbidden:`アクセスが拒否されました。`,timeout:`リクエストがタイムアウトしました。もう一度お試しください。`,unknown:`予期しないエラーが発生しました。`},workspace:{label:`ワークスペース`,default:`マイワークスペース`,switch:`ワークスペースを切り替え`,create:`ワークスペースを作成`,createTitle:`ワークスペースの作成`,createDescription:`ワークスペースはチームで協力するための共有スペースです。`,createButton:`ワークスペースを作成`,nameLabel:`ワークスペース名`,namePlaceholder:`例: Acme Inc`,slugLabel:`URL スラッグ`,slugHint:`URL に使用されます。小文字、数字、ハイフンのみ。`,invite:`メンバーを招待`,members:`メンバー`,settings:`ワークスペース設定`},sidebar:{settings:`設定`,help:`ヘルプ`,helpTooltip:`ヘルプとドキュメント`,activityFeed:`アクティビティフィード`,notifications:`通知`,approvals:`承認`,inbox:`受信箱`,inboxAriaLabel:`受信箱を開く`,area:`エリア`,recent:`最近`,favorites:`お気に入り`,starred:`スター付き`,removeFromFavorites:`お気に入りから {{name}} を削除`},home:{title:`ホーム`,subtitle:`ワークスペースのダッシュボード`,nav:`ホーム`,allApps:`すべてのアプリケーション`,loading:`ワークスペースを読み込み中...`,recent:`最近`,starred:`スター付き`,welcome:`ObjectUI へようこそ`,welcomeDescription:`最初のアプリケーションを作成するか、システム設定を行ってください。`,createFirstApp:`最初のアプリを作成`,systemSettings:`システム設定`,browseMarketplace:`アプリマーケットプレイスを参照`,quickActions:{title:`クイックアクション`,createApp:`アプリを作成`,createAppDesc:`新しいアプリケーションを開始`,manageObjects:`オブジェクトを管理`,manageObjectsDesc:`データモデルを設定`,systemSettings:`システム設定`,systemSettingsDesc:`ワークスペースを設定`},appCard:{noDescription:`説明なし`,default:`デフォルト`},greetingMorning:`おはようございます`,greetingAfternoon:`こんにちは`,greetingEvening:`こんばんは`,greetingNight:`夜遅くまで作業中`,heroTagline:`前回の続きを始めるか、新しいものを探索してください。`,open:`開く`,stats:{apps:`アプリケーション`,starred:`スター付き`,recent:`最近のアイテム`},recentApps:{title:`最近アクセスしたもの`,itemType:{object:`オブジェクト`,dashboard:`ダッシュボード`,page:`ページ`,record:`レコード`}},starredApps:{title:`スター付き`},gettingStarted:{title:`ホームをカスタマイズ`,description:`アプリにスターを付けてここにピン留めし、ワンクリックでアクセスできます。開いたものはすべて「最近アクセスしたもの」に自動的に表示されます。`,cta:`すべてのアプリを参照`}},layout:{appSwitcher:{home:`ホーム`,addApp:`アプリを追加`,editApp:`アプリを編集`,manageAllApps:`すべてのアプリを管理`,systemConsole:`システムコンソール`,noAppsConfigured:`アプリが設定されていません`},activityFeed:{title:`最近の活動`,filter:`フィルター`,empty:`最近の活動はありません`,ariaLabel:`アクティビティフィード`,typeCreate:`作成`,typeUpdate:`更新`,typeDelete:`削除`,typeComment:`コメント`,relativeJustNow:`たった今`,relativeSecondsAgo:`{{count}}秒前`,relativeMinutesAgo:`{{count}}分前`,relativeHoursAgo:`{{count}}時間前`,relativeDaysAgo:`{{count}}日前`,viewAll:`すべての活動を表示`},metadata:{label:`メタデータ`,toggleTitle:`メタデータインスペクターを切り替え`,panelTitle:`メタデータインスペクター`,jsonBadge:`JSON`,copyJson:`JSONをコピー`}},search:{title:`検索`,back:`戻る`,placeholder:`オブジェクト、ダッシュボード、ページ、レポートを検索...`,inputAriaLabel:`オブジェクト、ダッシュボード、ページ、レポートを検索`,resultsCount:`"{{query}}" の結果 {{count}} 件`,resultsCountPlural:`"{{query}}" の結果 {{count}} 件`,itemsAvailable:`{{count}} 件利用可能`,noResults:`結果が見つかりません`,noResultsHint:`検索語句を調整してみてください`,typeObjects:`オブジェクト`,typeDashboards:`ダッシュボード`,typePages:`ページ`,typeReports:`レポート`,badgeObject:`オブジェクト`,badgeDashboard:`ダッシュボード`,badgePage:`ページ`,badgeReport:`レポート`},empty:{objectNotFound:`オブジェクトが見つかりません`,objectNotFoundDescription:`オブジェクト「{{name}}」の定義が見つかりません。設定を確認するか、有効なオブジェクトを選択してください。`,pageNotFound:`ページが見つかりません`,pageNotFoundDescription:`ページ「{{name}}」が見つかりません。削除または名前変更された可能性があります。`,dashboardNotFound:`ダッシュボードが見つかりません`,dashboardNotFoundDescription:`ダッシュボード「{{name}}」が見つかりません。削除または名前変更された可能性があります。`,reportNotFound:`レポートが見つかりません`,reportNotFoundDescription:`レポート「{{name}}」が見つかりません。削除または名前変更された可能性があります。`,noAppsConfigured:`アプリが設定されていません`,noAppsConfiguredDescription:`登録されているアプリケーションがありません。最初のアプリを作成するか、システム設定を参照してください。`,createFirstApp:`最初のアプリを作成`,systemSettings:`システム設定`,back:`戻る`,recordNotFound:`レコードが見つかりません`,recordNotFoundDescription:`お探しのレコードは存在しないか、削除された可能性があります。`},renderer:{noPageSchema:`ページスキーマが指定されていません`,noFormSchema:`フォームスキーマが指定されていません`,noDashboardSchema:`ダッシュボードスキーマが指定されていません`,pageRendering:`ページレンダリング中:{{name}}`,dashboardRendering:`ダッシュボードレンダリング中:{{name}}`,formRenderingMode:`{{mode}} モードでフォームをレンダリング中`,formRenderingFor:`レコード {{id}} 用`,createRecord:`レコードを作成`,editRecord:`レコードを編集`,page:`ページ`,dashboard:`ダッシュボード`,save:`保存`,cancel:`キャンセル`},actionDialog:{title:`アクションパラメーター`,description:`続行するために必要な情報を入力してください。`,selectPlaceholder:`{{label}} を選択`,requiredError:`{{label}} は必須です`,cancel:`キャンセル`,confirm:`確認`,defaultActionTitle:`アクション`,ok:`OK`,lookupPlaceholder:`{{label}} のレコードID(UUID)を貼り付け`,lookupHelpText:`参照オブジェクトのレコードIDを入力してください。ピッカーは近日公開予定です。`},rowAction:{openMenu:`メニューを開く`,edit:`編集`,delete:`削除`},navigationSync:{addedPage:`ナビゲーション更新:ページ「{{name}}」を追加しました`,addedDashboard:`ナビゲーション更新:ダッシュボード「{{name}}」を追加しました`,removedPage:`ナビゲーション更新:ページ「{{name}}」を削除しました`,removedDashboard:`ナビゲーション更新:ダッシュボード「{{name}}」を削除しました`,renamedPage:`ナビゲーション更新:ページ「{{oldName}}」を「{{newName}}」に名前変更しました`,renamedDashboard:`ナビゲーション更新:ダッシュボード「{{oldName}}」を「{{newName}}」に名前変更しました`,undoLabel:`元に戻す`,undone:`ナビゲーションの変更を元に戻しました`,undoFailed:`ナビゲーションの変更を元に戻せませんでした`,updateFailed:`ナビゲーションの更新に失敗しました`},objectActions:{deleteSuccess:`{{label}} を削除しました`,deleteFailed:`{{label}} の削除に失敗しました`,noRecordId:`レコードIDが指定されていません`,deleteConfirm:`このレコードを削除してもよろしいですか?`,bulkDeleteSuccess:`{{count}} 件の {{label}} レコードを削除しました`,bulkDeletePartial:`{{succeeded}} 件削除、{{failed}} 件失敗`},objectViewActions:{renameFailed:`ビューの名前変更に失敗しました`,deleteFailed:`ビューの削除に失敗しました`},dashboardActions:{pdfPreparing:`PDFエクスポートを準備中…`,exportFailed:`エクスポートに失敗しました:{{message}}`,forecastSoon:`予測ビューは近日公開予定`},recordDetail:{viewersTooltip:`このレコードを閲覧中のユーザー`},cellRender:{empty:`空`,yes:`はい`,no:`いいえ`,systemFields:`システム`},user:{profile:`プロフィール`,settings:`設定`,logout:`ログアウト`,preferences:`設定`,theme:`テーマ`,language:`言語`},report:{rowTotal:`行合計`,columnTotal:`列合計`,grandTotal:`総合計`,totals:`合計`,rowsLabel:`行`,columnsLabel:`列`,allLabel:`(すべて)`,emptyLabel:`(空)`,loading:`読み込み中…`,failedToLoad:`マトリックスの読み込みに失敗しました:{{message}}`,needsAcross:"マトリックスレポートには少なくとも1つの `groupingsAcross` フィールドが必要です。",aggregate:{count:`件数`,countDistinct:`ユニーク件数`,sum:`合計`,avg:`平均`,min:`最小`,max:`最大`,first:`最初`},editor:{breadcrumb:`設定`,basic:`基本`,title:`タイトル`,titlePlaceholder:`例:四半期別パイプライン`,description:`説明`,descriptionPlaceholder:`このレポートは何を示しますか?`,type:`レポートタイプ`,typeTabular:`テーブル — フラットなリスト`,typeSummary:`サマリー — 合計付きグループ化`,typeMatrix:`マトリックス — 行 × 列のピボット`,typeJoined:`結合 — 複数ブロック`,typeHelp:`表示したい内容に合うレイアウトを選択してください。`,data:`データ`,objectName:`データソース`,objectNamePlaceholder:`例:opportunity`,objectNameHelp:`このレポートはどのオブジェクトを照会しますか?`,limit:`行数の上限`,limitPlaceholder:`例:100`,columns:`列`,columnsHint:`列として表示するフィールドを選択します。サマリーやマトリックスでは集計(合計、件数…)を追加できます。`,filters:`フィルタ`,filtersHint:`このレポートに含める行を絞り込みます。`,filtersComplex:`このレポートには高度なフィルタが含まれており、ここでは編集できません。保存時は変更されません。`,groupBy:`グループ化`,groupByHint:`データをグループ化して小計を計算します。`,rows:`行`,rowsHint:`これらのフィールドで行をグループ化します。`,columnsAxis:`列`,columnsAxisHint:`これらのフィールドを上部でピボット表示します。`,values:`値`,valuesHint:`各セルに表示される数値です。1 つ以上のフィールドを選び、集計(合計、件数…)を指定してください。`,grouping:`グループ化項目`,addGrouping:`グループ化を追加`,dateGranularity:`日付の粒度`,dateGranularityNone:`(元の値を使用)`,day:`日`,week:`週`,month:`月`,quarter:`四半期`,year:`年`,sortAsc:`昇順`,sortDesc:`降順`,chart:`チャート`,chartHint:`テーブルの横に表示できる任意の可視化です。`,chartType:`チャートの種類`,chartTitle:`チャートのタイトル`,chartTitlePlaceholder:`未指定の場合はレポートのタイトル`,chartXAxis:`X 軸(カテゴリ)`,chartYAxis:`Y 軸(値)`,chartShowLegend:`凡例を表示`,chartShowDataLabels:`データラベルを表示`,chartNone:`(チャートなし)`,chartBar:`棒`,chartLine:`折れ線`,chartArea:`エリア`,chartPie:`円`,chartDonut:`ドーナツ`,chartFunnel:`ファネル`,validationNeedsObject:`列を追加する前にデータソースを選択してください。`,validationMatrixNeedsRowsCols:`マトリックスレポートには少なくとも 1 つの行と 1 つの列が必要です。`,validationSummaryNeedsRows:`サマリーレポートには少なくとも 1 つのグループ化フィールドが必要です。`,blocks:`ブロック`,blocksHint:`各ブロックは独立したテーブルまたはチャートです。ブロックのフィルタはレポートのフィルタと AND で結合されます。`,addBlock:`ブロックを追加`,removeBlock:`ブロックを削除`,blockName:`ブロック名`,blockNamePlaceholder:`一意のブロック名`,blockLabel:`表示ラベル`,blockLabelPlaceholder:`ブロックの上に表示されます`,blockDescription:`説明`,blockDescriptionPlaceholder:`このブロックの任意の補足説明`,validationJoinedNeedsBlocks:`結合レポートには少なくとも 1 つのブロックが必要です。`,validationBlockNameRequired:`各ブロックには空でない名前が必要です。`,validationBlockNameDuplicate:`ブロック名はレポート内で一意である必要があります。`,validationBlockNeedsColumns:`各ブロックには少なくとも 1 つの列が必要です。`,noneOption:`(なし)`,addCondition:`条件を追加`,combineLogic:`結合方法`,opContains:`含む`,opIsEmpty:`空である`,opIsNotEmpty:`空でない`,formatAuto:`自動`,formatCurrency:`通貨`,formatPercent:`パーセント`,formatInteger:`整数`,formatDate:`日付`,formatDatetime:`日付と時刻`,columnLabelPlaceholder:`ラベルを上書き`,aggregateColumn:`集計`,formatColumn:`フォーマット`,addColumns:`列を追加`,searchFields:`フィールドを検索…`,noMatchingFields:`検索条件に一致するフィールドはありません。`,noFieldsAvailable:`利用可能なフィールドがありません。`,columnsCount:`{n} 列選択中`,columnsEmpty:`列がまだ選択されていません。`,fieldPickerTitle:`フィールドを選択`,fieldPickerDescription:`追加するフィールドを1つ以上選択してください。検索ボックスでリストを絞り込めます。`,fieldPickerChangeTitle:`フィールドを変更`,fieldPickerAddGroupingTitle:`グループ化を追加`,fieldPickerEmpty:`(フィールドを選択)`,fieldPickerSelected:`{n} 件選択中`,fieldPickerClear:`選択を解除`,fieldPickerAdd:`追加`,fieldPickerAddN:`{n} 件追加`}},organizations:{mine:`マイ組織`,title:`組織`,heading:`あなたの組織`,subtitle:`続行する組織を選択するか、新しい組織を作成してください。`,searchPlaceholder:`組織を検索`,new:`新しい組織`,current:`現在の組織`,manage:`管理`,emptyTitle:`まだ組織がありません`,emptyDescription:`最初の組織を作成して開始してください。`,noMatches:`検索条件に一致する組織がありません。`},notifications:{empty:`通知はありません`,markAllRead:`すべて既読にする`,viewAll:`すべての通知を表示`,approvalsPending:`{{count}} 件の承認待ち`,viewApprovals:`承認を表示`,noPendingApprovals:`承認待ちはありません`,openApprovalsInbox:`承認ボックスを開く`,emptyUnread:`既読にしました`,filterUnread:`未読`,filterAll:`すべて`},publicForm:{submit:`送信`,submitting:`送信中…`,submitAnother:`別の回答を送信`,poweredBy:`Powered by ObjectStack`,secureNotice:`お客様の情報は安全に転送され、リクエストへの対応にのみ使用されます。`,thankYouTitle:`ありがとうございます!`,thankYouMessage:`送信が正常に受信されました。`,redirecting:`{{seconds}} 秒後にリダイレクトします…`,unavailableTitle:`フォームが利用できません`,unavailableDescription:`このURLで利用できる公開フォームはありません。基になるビューが匿名共有を有効にし、このスラグに一致することを確認してください。`,tryDemo:`デモを試す`,retry:`再試行`,loading:`フォームを読み込み中…`,requiredHint:`* 必須項目`,consentLabelDefault:`プライバシーポリシーに同意し、このリクエストのためにデータを処理することに同意します。`,consentLink:`プライバシーポリシー`,consentRequired:`続行するにはプライバシーポリシーに同意してください。`,rateLimited:`送信前に回答を確認してください。`,redirectBlocked:`送信は受理されましたが、リダイレクトURLはセキュリティのためブロックされました。`,demo:{contactTitle:`お問い合わせ`,contactDescription:`プロジェクトについてお聞かせください。1営業日以内に営業担当者がご連絡します。`,supportTitle:`サポートリクエストを送信`,supportDescription:`問題をお知らせください。チームが1営業日以内に対応します。`,thankYouSalesTitle:`メッセージを受信しました!ありがとうございます。`,thankYouSalesMessage:`1営業日以内に営業担当者がご連絡します。`,thankYouSupportTitle:`リクエストを受け付けました。`,thankYouSupportMessage:`サポートエンジニアがまもなくフォローアップします。追加のスクリーンショットがある場合は、このページを保存してください。`,field:{firstName:`名`,lastName:`姓`,email:`仕事用メール`,phone:`電話番号`,jobTitle:`役職`,company:`会社`,website:`ウェブサイト`,industry:`業界`,companySize:`会社規模`,howCanWeHelp:`どのようなお手伝いができますか?`,subject:`件名`,description:`説明`,issueType:`問題の種類`,priority:`優先度`},industry:{technology:`テクノロジー`,software:`ソフトウェア / SaaS`,finance:`金融`,healthcare:`ヘルスケア`,retail:`小売`,other:`その他`},issueType:{question:`質問`,problem:`問題`,bug:`バグ`,feature_request:`機能リクエスト`},priority:{low:`低`,medium:`中`,high:`高`,critical:`緊急`}}},marketplace:{title:`アプリマーケットプレイス`,subtitle:`ObjectStackカタログに公開された承認済みアプリを参照します。アプリをクリックして詳細を表示し、環境にインストールしてください。`,searchPlaceholder:`名前またはマニフェストIDでアプリを検索…`,searchAria:`マーケットプレイスアプリを検索`,installed:`インストール済み`,installedCount:`インストール済み({{count}})`,refresh:`更新`,all:`すべて`,noApprovedYet:`マーケットプレイスにはまだ承認されたアプリがありません。`,noMatchFilters:`フィルターに一致するアプリがありません。`,noDescription:`説明がありません。`,back:`マーケットプレイスに戻る`,installedTitle:`インストール済みアプリ`,installedSubtitle:`このランタイムのカーネルにインストールされているマーケットプレイスパッケージ。`,installedEmpty:`このランタイムにはまだマーケットプレイスアプリがインストールされていません。`,browseLink:`マーケットプレイスを参照 →`,installedAdditiveNote:`<strong>注意:</strong>カーネルAPIは追加のみです。アンインストールするとディスク上のマニフェストが削除され、次回起動時にパッケージは読み込まれませんが、実行中のカーネルはランタイムを再起動するまでアプリを登録したままにします。`,installedAt:`{{when}} にインストール`,installedBy:`{{user}} による`,installedPackageId:`パッケージ`,cachedAs:`<code>{{path}}</code> としてキャッシュ`,versionBadge:`v{{version}}`,installedBadge:`インストール済み v{{version}}`,load:{failed:`マーケットプレイスの読み込みに失敗しました`,failedHint:`このランタイムはデフォルトでパブリックObjectStackクラウドを指しています。ランタイムがオンラインであることを確認するか、<code>OS_CLOUD_URL</code> で自己ホスト型コントロールプレーンを指定してください。`,packageFailed:`パッケージの読み込みに失敗しました`,notFound:`見つかりません。`},detail:{homepage:`ホームページ`,installedV:`インストール済み · v{{version}}`,about:`概要`,noReadme:`READMEがありません。`,versions:`バージョン`,noApprovedVersions:`承認済みバージョンがありません。`,prerelease:`プレ`,moreOptions:`その他のインストールオプション`,uninstallFromRuntime:`このランタイムからアンインストール`},action:{install:`インストール`,reinstall:`再インストール`,working:`処理中…`,installToCloud:`クラウドにインストール…`,installing:`インストール中…`,uninstall:`アンインストール`,uninstalling:`アンインストール中…`,details:`詳細`,close:`閉じる`,dismiss:`閉じる`,openOnCloud:`クラウドで開く`,backHome:`ホームに戻る`},install:{dialogTitle:`{{name}} をインストール`,dialogDescCurrent:`この環境({{host}})にインストールします。`,dialogDescPicker:`このアプリをインストールする環境を選択します。ObjectStack Cloudにサインインする必要があります。`,environment:`環境`,environmentPlaceholder:`環境を選択`,includeSampleData:`サンプルデータを含む`,noEnvs:`アクティブな組織に環境が見つかりません。`,noPermission:`どの環境にもアプリをインストールする権限がありません。組織のオーナーと管理者のみインストールできます。`,signInFirst:`最初にObjectStack Cloudにサインインしてください。`,success:`インストールが完了しました。環境を開いて新しいアプリを確認してください。`,localSuccess:`このランタイムに v{{version}} をインストールしました。「{{name}}」がアプリスイッチャーに表示されます。`,localManifestConflict:`{{message}}
|
|
11
|
+
ヒント:ローカルアプリがすでにこのmanifest_idを使用しています。最初にobjectstack.config.tsから削除してください。`,localUnauthorized:`最初にこのランタイムにサインインしてから再試行してください。`,localMarketplaceUnavailable:`このランタイムにはOS_CLOUD_URLが設定されていないため、マーケットプレイスカタログにアクセスできません。`},uninstall:{confirm:`このランタイムから {{manifestId}} v{{version}} をアンインストールしますか?
|
|
12
|
+
|
|
13
|
+
キャッシュされたマニフェストが削除されます。アプリは次の再起動まで実行中のカーネルに読み込まれたままになります。`,successInList:`{{manifestId}} を削除しました。ランタイムを再起動して実行中のカーネルから完全にアンロードしてください。`,successInDetail:`{{manifestId}} のキャッシュされたマニフェストを削除しました。ランタイムを再起動してアプリを完全にアンロードしてください。`},accessDenied:{title:`アプリマーケットプレイスは管理者専用です`,description:`この環境にアプリをインストールする権限がありません。アクセスのために組織のオーナーまたは管理者に連絡してください。`},category:{crm:`CRM`,erp:`ERP`,hr:`人事`,finance:`財務`,project:`プロジェクト管理`,collaboration:`コラボレーション`,analytics:`分析`,integration:`統合`,automation:`自動化`,ai:`AI`,security:`セキュリティ`,"developer-tools":`開発者ツール`,"ui-theme":`UIテーマ`,storage:`ストレージ`,other:`その他`},pricing:{free:`無料`,freemium:`フリーミアム`,paid:`有料`,subscription:`サブスクリプション`,"usage-based":`使用量ベース`,"contact-sales":`営業に問い合わせ`},relativeTime:{today:`今日`,daysAgo:`{{count}}日前`,monthsAgo:`{{count}}ヶ月前`,yearsAgo:`{{count}}年前`}}},ko:{common:{addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,loading:`로딩 중...`,save:`저장`,cancel:`취소`,delete:`삭제`,edit:`편집`,create:`생성`,search:`검색`,filter:`필터`,reset:`초기화`,confirm:`확인`,close:`닫기`,back:`뒤로`,next:`다음`,previous:`이전`,submit:`제출`,refresh:`새로고침`,export:`내보내기`,import:`가져오기`,yes:`예`,no:`아니오`,ok:`확인`,actions:`작업`,more:`더보기`,selectAll:`모두 선택`,clearAll:`모두 지우기`,noData:`데이터 없음`,noResults:`결과를 찾을 수 없습니다`,required:`필수`,optional:`선택`,selectOption:`옵션을 선택하세요`,select:`선택...`,openChat:`채팅 열기`,closeChat:`채팅 닫기`,toggleSidebar:`사이드바 전환`},validation:{required:`{{field}}은(는) 필수입니다`,minLength:`{{field}}은(는) 최소 {{min}}자 이상이어야 합니다`,maxLength:`{{field}}은(는) 최대 {{max}}자까지 가능합니다`,min:`{{field}}은(는) {{min}} 이상이어야 합니다`,max:`{{field}}은(는) {{max}} 이하여야 합니다`,email:`유효한 이메일 주소를 입력해주세요`,url:`유효한 URL을 입력해주세요`,pattern:`{{field}} 형식이 올바르지 않습니다`,unique:`{{field}}은(는) 고유해야 합니다`,type:`{{field}}은(는) 유효한 {{type}}이어야 합니다`},form:{addItem:`항목 추가`,removeItem:`항목 제거`,fieldRequired:`이 필드는 필수입니다`,invalidFormat:`형식이 올바르지 않습니다`,saveSuccess:`저장되었습니다`,saveError:`저장에 실패했습니다`,unsavedChanges:`저장하지 않은 변경사항이 있습니다. 페이지를 떠나시겠습니까?`,stepOf:`{{total}}단계 중 {{current}}단계`,createTitle:`{{object}} 생성`,editTitle:`{{object}} 편집`,createDescription:`새 {{object}}을(를) 데이터베이스에 추가합니다.`,editDescription:`{{object}} 세부 정보 업데이트`,saveRecord:`레코드 저장`,create:`생성`,update:`업데이트`,createSuccess:`{{object}} 생성됨`,updateSuccess:`{{object}} 업데이트됨`,deleteSuccess:`{{object}} 삭제됨`},fields:{richText:{format:`형식: {{format}}`,basicEditorHint:`서식 있는 텍스트 편집기 (기본)`,placeholder:`내용을 입력하세요...`}},table:{rowsPerPage:`페이지당 행 수`,showing:`{{total}}개 중 {{from}}~{{to}} 표시`,noRows:`표시할 데이터가 없습니다`,sortAsc:`오름차순 정렬`,sortDesc:`내림차순 정렬`,filterColumn:`{{column}} 필터`,columns:`열`,exportCSV:`CSV 내보내기`,exportExcel:`Excel 내보내기`,selectRow:`행 선택`,selectAllRows:`모든 행 선택`,expandRow:`행 펼치기`,collapseRow:`행 접기`,hideColumn:`열 숨기기`,freezeColumn:`열 고정`,unfreezeColumn:`열 고정 해제`,pageInfo:`{{total}} 페이지 중 {{current}} 페이지`,totalRecords:`총 {{count}}개`,noResults:`결과 없음`,noResultsHint:`필터 또는 검색어를 조정해 보세요.`,cancelAll:`모두 취소`,saveAll:`모두 저장 ({{count}})`,addRecord:`레코드 추가`,open:`열기`,search:`검색...`,modified:`{{count}}개 행 수정됨`,selected:`{{count}}개 선택됨`,edit:`편집`,delete:`삭제`},grid:{actions:`작업`,edit:`편집`,delete:`삭제`,export:`내보내기`,exportAs:`{{format}}으로 내보내기`,loading:`그리드 로딩 중...`,errorLoading:`그리드 로딩 오류`,pullToRefresh:`당겨서 새로고침`,refreshing:`새로고침 중…`,openRecord:`레코드 열기`,rowHeight:`행 높이: {{mode}}`,openMenu:`메뉴 열기`,empty:`비어 있음`,yes:`예`,no:`아니요`,systemFields:`시스템`,toolbar:{densityMode:`밀도`,densityCompact:`컴팩트`,densityComfortable:`보통`,densitySpacious:`넓음`,densityCycleHint:`{{label}} (클릭하여 변경)`,densityCycleShortHint:`클릭하여 변경`},import:{title:`{{object}} 가져오기`,stepUpload:`업로드`,stepMapping:`매핑`,stepPreview:`미리보기`,uploadDescription:`CSV 파일을 업로드하여 시작하세요.`,mappingDescription:`CSV 열을 개체 필드에 매핑합니다.`,previewDescription:`가져오기 전에 데이터를 검토하세요.`,dragDrop:`CSV 파일을 여기로 드래그하거나 클릭하여 찾아보기`,browseFiles:`파일 찾아보기`,onlyCsv:`CSV 파일만 지원됩니다.`,fileNeedsHeader:`파일에 헤더 행과 데이터 행이 하나 이상 있어야 합니다.`,mappingTemplate:`매핑 템플릿:`,chooseTemplate:`템플릿 선택…`,noSavedTemplates:`저장된 템플릿 없음`,noneOption:`— 없음 —`,saveCurrent:`현재 저장`,templateName:`템플릿 이름`,save:`저장`,deleteTemplate:`템플릿 삭제`,csvColumn:`CSV 열`,mapsTo:`매핑 대상`,status:`상태`,skipColumn:`열 건너뛰기`,skip:`— 건너뛰기 —`,mapped:`매핑됨`,skipped:`건너뜀`,rowsWithErrors:`오류가 있는 {{count}}개 행`,rowsCorrected:`{{count}}개 행 수정됨`,clickToFix:`— 강조 표시된 셀을 클릭하여 인라인 편집.`,showingRows:`{{total}}개 중 {{shown}}개 행 표시`,importing:`가져오는 중… {{progress}}%`,importComplete:`가져오기 완료`,imported:`{{count}}개 가져옴`,skippedCount:`{{count}}개 건너뜀`,moreErrors:`…{{count}}개 오류 더`,cancel:`취소`,back:`뒤로`,next:`다음`,close:`닫기`,importNRows:`{{count}}개 행 가져오기`,importingProgress:`가져오는 중…`,requiredMark:`*`,required:`필수`,invalidType:`잘못된 {{type}}`}},calendar:{today:`오늘`,month:`월`,week:`주`,day:`일`,agenda:`일정`,allDay:`종일`,noEvents:`일정이 없습니다`,newEvent:`새 일정`,moreEvents:`+{{count}} 더보기`},list:{recordCount:`{{count}}개 레코드`,recordCountOne:`{{count}}개 레코드`,addRecord:`레코드 추가`,tabs:`탭`,allRecords:`전체 레코드`,search:`검색`,filter:`필터`,filterRecords:`레코드 필터`,sort:`정렬`,sortRecords:`레코드 정렬`,group:`그룹`,groupBy:`그룹 기준`,export:`내보내기`,exportAs:`{{format}}으로 내보내기`,color:`색상`,rowColor:`행 색상`,colorByField:`필드별 색상`,clear:`지우기`,none:`없음`,hideFields:`필드 숨기기`,noItems:`항목을 찾을 수 없습니다`,noItemsMessage:`표시할 레코드가 없습니다. 필터를 조정하거나 새 데이터를 추가해 보세요.`,showAll:`모두 표시`,pullToRefresh:`당겨서 새로고침`,refreshing:`새로고침 중…`,share:`공유`,print:`인쇄`,hideFieldsTitle:`필드 숨기기`,dataLimitReached:`처음 {{limit}}개 레코드를 표시합니다. 더 많은 데이터가 있을 수 있습니다.`,viewSettings:`보기 설정`,viewSettingsHint:`그룹화, 색상, 밀도 및 표시 필드.`,addGroup:`그룹 필드 추가`,collapsedByDefault:`기본적으로 접힘`,removeGroup:`제거`},kanban:{addCard:`카드 추가`,addColumn:`열 추가`,moveCard:`카드 이동`,deleteCard:`카드 삭제`,deleteColumn:`열 삭제`,noCards:`카드 없음`,cardTitlePlaceholder:`카드 제목 입력...`},timeline:{bucket:{overdue:`기한 초과`,today:`오늘`,tomorrow:`내일`,thisWeek:`이번 주`,nextWeek:`다음 주`,later:`나중`,noDate:`날짜 없음`,unassigned:`미할당`}},gantt:{column:{taskName:`작업 이름`,start:`시작`,end:`종료`},toolbar:{prevPeriod:`이전 기간`,nextPeriod:`다음 기간`,zoomIn:`확대`,zoomOut:`축소`,jumpToToday:`오늘로 이동`,today:`오늘`,showTaskList:`작업 목록 표시`,hideTaskList:`작업 목록 숨기기`}},view:{rename:`이름 변경`,duplicateView:`뷰 복제`,shareView:`뷰 공유`,setAsDefault:`기본값으로 설정`,pinView:`뷰 고정`,unpinView:`고정 해제`,changeViewType:`뷰 유형 변경`,deleteView:`뷰 삭제`,addView:`뷰 추가`,unsavedChanges:`저장되지 않은 변경`,saveAsView:`뷰로 저장`,moreViews:`{{count}}개 더`,activeFilters:`필터 적용 중`,activeSort:`정렬 적용 중`,manageViews:`보기 관리`,manageAllViews:`모든 보기 관리…`,searchViews:`보기 검색`,addNewView:`새 보기 추가`,done:`완료`,noViewsFound:`검색과 일치하는 보기가 없습니다.`,dragToReorder:`드래그하여 순서 변경`,defaultView:`기본 보기`,tabActionsFor:`{{name}}의 보기 작업`,readonlyAriaLabel:`읽기 전용 보기`,readonlyTooltip:`시스템 보기 — 사용자 지정하려면 복제하세요.`},detail:{back:`뒤로`,edit:`편집`,editInline:`편집`,save:`저장`,saveChanges:`변경사항 저장`,editFieldsInline:`필드 편집`,share:`공유`,duplicate:`복제`,export:`내보내기`,viewHistory:`기록 보기`,delete:`삭제`,moreActions:`더 많은 작업`,addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,previousRecord:`이전 레코드`,nextRecord:`다음 레코드`,recordOf:`{{current}} / {{total}}`,recordNotFound:`레코드를 찾을 수 없음`,recordNotFoundDescription:`찾으시는 레코드가 존재하지 않거나 삭제되었을 수 있습니다.`,goBack:`뒤로`,details:`상세정보`,related:`관련`,relatedRecords:`{{count}}개 레코드`,relatedRecordOne:`{{count}}개 레코드`,noRelatedRecords:`관련 레코드를 찾을 수 없습니다`,loading:`로딩 중...`,copyToClipboard:`클립보드에 복사`,copied:`복사됨!`,deleteConfirmation:`이 레코드를 삭제하시겠습니까?`,editRecord:`레코드 편집`,viewAll:`모두 보기`,new:`새로 만들기`,emptyValue:`—`,comments:`댓글`,searchComments:`댓글 검색…`,addCommentPlaceholder:`댓글 추가… (Ctrl+Enter로 제출)`,noMatchingComments:`일치하는 댓글이 없습니다`,noCommentsYet:`아직 댓글이 없습니다`,pinned:`고정됨`,pin:`고정`,unpin:`고정 해제`,justNow:`방금`,minutesAgo:`{{count}}분 전`,hoursAgo:`{{count}}시간 전`,daysAgo:`{{count}}일 전`,dropFilesToUpload:`파일을 여기에 끌어놓거나 클릭하여 업로드`,attachmentCount:`첨부파일 {{count}}개`,attachmentCountPlural:`첨부파일 {{count}}개`,removeAttachment:`첨부파일 제거`,unifiedDiff:`통합 보기`,sideBySideDiff:`나란히 보기`,noChanges:`변경 없음`,previousVersion:`이전 버전`,currentVersion:`현재 버전`,discussion:`토론`,showDiscussion:`토론 보기 ({{count}})`,hideDiscussion:`토론 숨기기`,bold:`굵게 (Ctrl+B)`,italic:`기울임 (Ctrl+I)`,listFormat:`목록`,inlineCode:`인라인 코드`,mentionSomeone:`멘션하기`,preview:`미리보기`,submitComment:`제출 (Ctrl+Enter)`,sendComment:`보내기`,writeComment:`댓글 작성…`,subscribedTooltip:`구독 중 — 클릭하여 구독 취소`,unsubscribedTooltip:`알림 구독`,firstRecord:`첫 번째 레코드 (Home)`,previousRecordKey:`이전 레코드 (←)`,nextRecordKey:`다음 레코드 (→)`,lastRecord:`마지막 레코드 (End)`,noRecords:`레코드 없음`,searchWhileNavigating:`탐색 중 검색`,searchRecords:`레코드 검색…`,allActivity:`모든 활동`,commentsOnly:`댓글만`,fieldChangesFilter:`필드 변경`,tasksOnly:`작업만`,leaveCommentPlaceholder:`댓글 남기기… (Ctrl+Enter로 제출)`,noActivity:`기록된 활동 없음`,loadMore:`더 보기`,edited:`(수정됨)`,via:`{{source}} 통해`,replyCount:`답글 {{count}}개`,replyCountPlural:`답글 {{count}}개`,replyPlaceholder:`답글…`,filterActivity:`활동 필터`,openDiscussion:`토론 패널 열기`,closeDiscussion:`토론 패널 닫기`,subscribeAriaLabel:`알림 구독`,unsubscribeAriaLabel:`알림 구독 취소`,clearSearch:`검색 지우기`,saving:`저장 중…`,lockedByApproval:`승인을 위해 잠김`,lockedTooltip:`이 레코드에 대기 중인 승인 요청이 있습니다. 편집이 잠겨 있습니다`,cancelApproval:`승인 취소`,cancelApprovalInFlight:`취소 중…`,cancelApprovalTooltip:`대기 중인 승인 요청을 취소하여 레코드 잠금 해제`,cancelApprovalFailed:`승인 취소 실패`,cancelApprovalUnavailable:`이 데이터 소스에서는 승인 취소가 지원되지 않습니다`,linkCopied:`링크가 클립보드에 복사됨`,linkCopyFailed:`링크 복사 실패`,cancel:`취소`,cancelEdit:`변경 사항 취소`,sectionMoreDetails:`추가 세부 정보`,concurrentUpdateTitle:`이 레코드가 다른 사람에 의해 수정되었습니다`,concurrentUpdateDescription:`다른 사용자가 편집하는 동안 {{field}}의 최신 버전을 저장했습니다. 충돌 해결 방법을 선택하세요.`,concurrentUpdateYourEdit:`내 편집`,concurrentUpdateCurrentValue:`현재 값`,concurrentUpdateUpdatedBy:`{{name}}이(가) 업데이트`,concurrentUpdateUpdatedAt:`{{when}}에 업데이트`,concurrentUpdateReload:`현재 버전 로드`,concurrentUpdateOverwrite:`그래도 덮어쓰기`,concurrentUpdateCancel:`취소`,openInNewTab:`새 탭에서 열기`,activity:`활동`,history:`기록`,editRow:`편집`,deleteRow:`삭제`,deleteRowConfirmation:`이 레코드를 삭제하시겠습니까?`,deleteRowTitle:`레코드 삭제`,actions:`작업`,previousPage:`이전`,nextPage:`다음`,pageOf:`{{total}}페이지 중 {{current}}페이지`,sortBy:`정렬 기준`,filterPlaceholder:`필터...`,highlightFields:`주요 필드`,createdBy:`작성자`,updatedBy:`업데이트한 사람`,showEmptyRelated_one:`+ {{count}}개 비어 있음`,showEmptyRelated_other:`+ {{count}}개 비어 있음`,copyEmail:`이메일 복사`,copyPhone:`전화번호 복사`,copyRecordId:`레코드 ID 복사`,showEmptyFields:`{{count}}개의 빈 필드 표시`,hideEmptyFields:`빈 필드 숨기기`,noValue:`값 없음`},chart:{noData:`차트 데이터가 없습니다`,loading:`차트 로딩 중...`},map:{searchLocations:`위치 검색…`,locationDetails:`위치 상세`,markersCount:`마커 {{count}}개`,invalidCoordinates:`좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.`,invalidCoordinatesPlural:`좌표가 누락되었거나 유효하지 않아 {{count}}개 레코드가 지도에서 제외되었습니다.`},workflow:{draft:`초안`,active:`활성`,paused:`일시 중지`,completed:`완료`,cancelled:`취소됨`,save:`저장`,publish:`게시`,addNode:`노드 추가`,workflowFlow:`워크플로우`,properties:`속성`,connections:`연결`,quickConnect:`빠른 연결`,fromPlaceholder:`시작...`,toPlaceholder:`종료...`,connect:`연결`,label:`라벨`,type:`유형`,description:`설명`,assignee:`담당자`,assigneeType:`담당자 유형`,user:`사용자`,role:`역할`,group:`그룹`,expression:`수식`,timeoutMinutes:`제한 시간(분)`,selectNodeToEdit:`속성을 편집할 노드를 선택하세요`,workflowTitle:`워크플로우 제목`,newWorkflow:`새 워크플로우`,outConnections:`{{count}}개 출력`,start:`시작`,end:`종료`,task:`작업`,userTask:`사용자 작업`,serviceTask:`서비스 작업`,scriptTask:`스크립트 작업`,approval:`승인`,condition:`조건`,parallelGateway:`병렬 게이트웨이`,joinGateway:`합류 게이트웨이`,boundaryEvent:`경계 이벤트`,delay:`지연`,notification:`알림`,webhook:`Webhook`,allowConcurrency:`허용 (동시 실행)`,forbidConcurrency:`금지 (새 작업 건너뛰기)`,replaceConcurrency:`대체 (기존 취소)`,queueConcurrency:`대기열 (현재 완료 후 실행)`,conditionEvent:`조건`,manualEvent:`수동`,webhookEvent:`Webhook`,timerEvent:`타이머`,signalEvent:`시그널`,versionHistory:`버전 기록`,importBpmn:`BPMN 가져오기`,exportBpmn:`BPMN 내보내기`,undo:`실행 취소`,redo:`다시 실행`,resetZoom:`확대/축소 초기화`},dashboard:{addWidget:`위젯 추가`,removeWidget:`위젯 제거`,editLayout:`레이아웃 편집`,saveLayout:`레이아웃 저장`,resetLayout:`레이아웃 초기화`,total:`합계`,noDataAvailable:`사용 가능한 데이터 없음`,noDataSourceFor:`데이터 소스 없음:`,trend:{vsLastQuarter:`전분기 대비`,vsLastMonth:`전월 대비`,vsLastWeek:`전주 대비`,vsLastYear:`전년 대비`,vsYesterday:`어제 대비`,vsPreviousPeriod:`이전 기간 대비`}},configPanel:{save:`저장`,discard:`취소`,close:`닫기`,layout:`레이아웃`,columns:`열`,gap:`간격`,rowHeight:`행 높이`,data:`데이터`,refreshInterval:`새로고침 간격`,appearance:`모양`,title:`제목`,showDescription:`설명 표시`,theme:`테마`,configuration:`구성`,general:`일반`,advanced:`고급`},appDesigner:{createApp:`앱 만들기`,editApp:`앱 편집`,basicInfo:`기본 정보`,objects:`오브젝트`,navigation:`탐색`,branding:`브랜딩`,appName:`앱 이름`,appTitle:`제목`,appDescription:`설명`,appIcon:`아이콘`,template:`템플릿`,layout:`레이아웃`,layoutSidebar:`사이드바`,layoutHeader:`헤더`,layoutEmpty:`비어 있음`,selectObjects:`오브젝트 선택`,searchObjects:`오브젝트 검색…`,selectAll:`모두 선택`,deselectAll:`모두 해제`,navBuilder:`탐색 빌더`,addGroup:`그룹 추가`,addUrl:`URL 추가`,addSeparator:`구분선 추가`,noNavItems:`탐색 항목이 아직 없습니다.`,logoUrl:`Logo URL`,primaryColor:`기본 색상`,faviconUrl:`Favicon URL`,preview:`미리보기`,complete:`완료`,snakeCaseHint:`Must be snake_case (e.g. my_app)`,modeEdit:`편집`,modePreview:`미리보기`,modeCode:`코드`,addWidget:`위젯 추가`,widgetProperties:`위젯 속성`,dataSource:`데이터 소스`,valueField:`값 필드`,aggregate:`집계`,colorVariant:`색상 변형`,addComponent:`컴포넌트 추가`,componentProperties:`컴포넌트 속성`,viewType:`보기 유형`,fields:`필드`,toolbar:`도구 모음`,showSearch:`검색 표시`,showFilters:`필터 표시`,showSort:`정렬 표시`,appearance:`외관`,rowHeight:`행 높이`,stripedRows:`줄무늬 행`,bordered:`테두리`,livePreview:`실시간 미리보기`,stepBasicDesc:`이름, 제목 및 레이아웃`,stepObjectsDesc:`비즈니스 객체 선택`,stepNavigationDesc:`네비게이션 트리 구성`,stepBrandingDesc:`로고, 색상 및 파비콘`,noObjectsFound:`객체를 찾을 수 없습니다.`,noNavItemsHint:`네비게이션 항목이 없습니다. 이전 단계에서 객체를 선택하거나 수동으로 추가하세요.`,separator:`구분선`,separatorLabel:`— 구분선 —`,newGroup:`새 그룹`,newLink:`새 링크`,saveDraft:`임시 저장`,cancelConfirmTitle:`변경 사항을 폐기하시겠습니까?`,cancelConfirmMessage:`저장되지 않은 변경 사항이 있습니다. 취소하시겠습니까?`,confirmDiscard:`폐기`,keepEditing:`편집 계속`,navNoItems:`네비게이션 항목이 없습니다. 위 버튼을 클릭하여 항목을 추가하세요.`,navNoPreviewItems:`항목 없음`,navLivePreview:`실시간 미리보기`,navCollapseGroup:`그룹 접기`,navExpandGroup:`그룹 펼치기`,navAddChild:`하위 항목 추가`,navMoveUp:`위로 이동`,navMoveDown:`아래로 이동`,navRemove:`제거`,navObjectPage:`객체 페이지`,navDashboard:`대시보드`,navPage:`페이지`,navReport:`보고서`,navGroup:`그룹`,navUrl:`URL`,navSeparator:`구분선`,navTypeObject:`오브젝트`,navTypeDashboard:`대시보드`,navTypePage:`페이지`,navTypeReport:`보고서`,navTypeUrl:`URL`,navTypeGroup:`그룹`,navTypeSeparator:`구분선`,navTypeAction:`작업`,navEditIcon:`아이콘 편집`,navToggleVisible:`가시성 토글`,navHidden:`숨김`,navExportSchema:`JSON 내보내기`,navImportSchema:`JSON 가져오기`,navExportSuccess:`탐색 스키마 내보냄`,navImportSuccess:`탐색 스키마 가져옴`,navImportError:`잘못된 탐색 JSON`,navIconPlaceholder:`아이콘 이름 (예: Users)`,dashboardEditor:`대시보드 편집기`,noWidgets:`위젯 없음. 위의 버튼을 클릭하여 추가하세요.`,widgetLayoutSize:`레이아웃 크기`,widgetWidth:`너비`,widgetHeight:`높이`,dashboardPreview:`대시보드 미리보기`,noWidgetsPreview:`미리 볼 위젯이 없습니다`,pageCanvasEditor:`페이지 캔버스 편집기`,emptyPage:`빈 페이지. 위의 버튼을 클릭하여 컴포넌트를 추가하세요.`,pagePreview:`페이지 미리보기`,noComponentsPreview:`미리 볼 컴포넌트가 없습니다`,modePage:`페이지`,modeDashboard:`대시보드`,undo:`실행 취소`,redo:`다시 실행`,brandingEditor:`브랜딩 편집기`,brandingExport:`JSON 내보내기`,brandingImport:`JSON 가져오기`,brandingPreview:`미리보기`,brandingSampleButton:`샘플 버튼`,brandingSampleText:`브랜드 테마의 외관입니다.`,colorPalette:`색상 팔레트`,fontFamily:`글꼴 패밀리`,fontDefault:`기본값 (시스템)`,modeLight:`밝음`,modeDark:`어두움`,mobilePreview:`모바일 미리보기`,objectManager:{title:`오브젝트 관리자`,addObject:`새 오브젝트`,searchPlaceholder:`오브젝트 검색…`,noObjects:`오브젝트를 찾을 수 없습니다.`,objectName:`API 이름`,objectLabel:`레이블`,pluralLabel:`복수 레이블`,icon:`아이콘`,selectIcon:`아이콘 선택…`,group:`그룹`,noGroup:`그룹 없음`,sortOrder:`정렬 순서`,enabled:`활성화됨`,relationships:`관계`,systemBadge:`시스템`,fieldCount:`{{count}}개 필드`,ungrouped:`그룹 없음`,deleteConfirmTitle:`오브젝트를 삭제하시겠습니까?`,deleteConfirmMessage:`이 오브젝트와 모든 필드가 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.`},fieldDesigner:{title:`필드 디자이너`,addField:`새 필드`,searchPlaceholder:`필드 검색…`,allTypes:`모든 유형`,noFields:`필드를 찾을 수 없습니다.`,fieldName:`API 이름`,fieldLabel:`레이블`,fieldType:`유형`,fieldGroup:`그룹`,description:`설명`,required:`필수`,unique:`고유`,readOnly:`읽기 전용`,hidden:`숨김`,indexed:`인덱스됨`,externalId:`외부 ID`,trackHistory:`기록 추적`,defaultValue:`기본값`,placeholder:`자리 표시자`,referenceTo:`참조 대상`,formula:`수식`,options:`옵션`,addOption:`옵션 추가`,validationRules:`유효성 검사 규칙`,addRule:`규칙 추가`,systemBadge:`시스템`,ungrouped:`일반`,deleteConfirmTitle:`필드를 삭제하시겠습니까?`,deleteConfirmMessage:`필드가 영구적으로 삭제됩니다. 이 필드의 기존 데이터는 손실됩니다.`,basicSection:`기본`,typeSpecificSection:`유형 설정`,advancedSection:`고급`,typeCategory:{text:`텍스트`,number:`숫자`,date:`날짜 및 시간`,choice:`선택`,relation:`관계`,advanced:`고급`}}},console:{title:`ObjectStack 콘솔`,initializing:`애플리케이션 초기화 중...`,breadcrumb:{dashboards:`대시보드`,pages:`페이지`,reports:`보고서`,system:`시스템`},loadingSteps:{connecting:`데이터 소스에 연결 중`,loadingConfig:`설정 로드 중`,preparingWorkspace:`워크스페이스 준비 중`},error:{connectionFailed:`서버에 연결할 수 없습니다`,serverUnreachable:`서버 {{url}}에 연결할 수 없습니다.`,checkServer:`네트워크 연결을 확인하거나 백엔드가 실행 중인지 확인하세요.`,timeout:`연결 시간이 초과되었습니다 (10초).`},actions:{retry:`재시도`,retrying:`재시도 중…`},shortcuts:{title:`키보드 단축키`,description:`사용 가능한 모든 키보드 단축키 빠른 참조.`,groups:{general:`일반`,navigation:`탐색`,dataViews:`데이터 뷰`,preferences:`환경설정`},openCommandPalette:`명령 팔레트 열기`,showShortcuts:`키보드 단축키 표시`,closeDialog:`대화상자 / 패널 닫기`,toggleSidebar:`사이드바 전환`,focusSearch:`검색에 포커스`,createRecord:`새 레코드 생성`,refreshData:`데이터 새로고침`,editRecord:`선택한 레코드 편집`,toggleDarkMode:`다크 모드 전환`},commandPalette:{placeholder:`명령어를 입력하거나 검색...`,noResults:`결과를 찾을 수 없습니다.`,objects:`객체`,dashboards:`대시보드`,pages:`페이지`,reports:`보고서`,switchApp:`앱 전환`,current:`현재`,preferences:`환경설정`,lightTheme:`라이트 테마`,darkTheme:`다크 테마`,systemTheme:`시스템 테마`,actions:`작업`,openFullSearch:`전체 검색 페이지 열기`,createApp:`새 앱 만들기`,searching:`검색 중…`,records:`레코드`,recentRecords:`최근 본 항목`},errors:{somethingWentWrong:`문제가 발생했습니다`,unexpectedError:`이 뷰를 렌더링하는 중 예기치 않은 오류가 발생했습니다.`,tryAgain:`다시 시도`,goHome:`홈으로 이동`,errorDetails:`오류 상세정보 (개발 모드 전용)`},theme:{toggle:`테마 전환`,light:`라이트`,dark:`다크`,system:`시스템`},objectView:{objectNotFound:`객체를 찾을 수 없음`,objectNotFoundDescription:`객체 "{{objectName}}"이(가) 현재 구성에 존재하지 않습니다.`,objectNotFoundHint:`앱 탐색 설정을 확인하거나 사이드바에서 다른 객체를 선택하세요.`,allRecords:`모든 레코드`,exitDesignMode:`디자인 모드 종료`,enterDesignMode:`디자인 모드 시작`,metadataInspector:`메타데이터 인스펙터`,editView:`뷰 편집`,addView:`뷰 추가`,designTools:`디자인 도구`,new:`새로 만들기`,configureView:`뷰 구성`,closePanel:`패널 닫기`,page:`페이지`,pageConfigHint:`도구 모음, 탐색 및 뷰 셸 설정`,listConfigHint:`이 목록 유형의 데이터 렌더링, 열 및 모양`,general:`일반`,generalHint:`보기 제목, 설명 및 유형`,toolbar:`도구 모음`,toolbarHint:`검색, 필터, 정렬, 그룹화 및 밀도 전환`,toolbarEnabledCount:`{{total}}개 중 {{count}}개 활성화`,navigationSection:`탐색`,navigationHint:`행 클릭 동작 및 상세 보기 설정`,records:`레코드`,recordsHint:`선택 모드, 레코드 추가 및 인라인 편집`,exportPrint:`내보내기 및 인쇄`,exportPrintHint:`내보내기 형식, 인쇄 및 레코드 수 표시`,showAllFields:`모두 표시`,hideAllFields:`모두 숨기기`,searchFields:`필드 검색...`,title:`제목`,description:`설명`,data:`데이터`,source:`소스`,columns:`열`,filterBy:`필터 기준`,sortBy:`정렬 기준`,appearance:`외관`,showDescription:`설명 표시`,viewType:`뷰 유형`,userFilters:`사용자 필터`,enableSearch:`검색 활성화`,enableFilter:`필터 활성화`,enableSort:`정렬 활성화`,enableHideFields:`필드 숨기기 활성화`,enableGroup:`그룹 활성화`,enableColor:`색상 활성화`,enableDensity:`밀도 활성화`,userActions:`사용자 작업`,addRecordViaForm:`양식으로 레코드 추가`,advanced:`고급`,allowExport:`내보내기 허용`,recordCount:`{{count}}개 레코드`,noDescription:`설명 없음`,none:`없음`,columnsConfigured:`{{count}}개 열`,save:`저장`,discard:`취소`,createView:`뷰 생성`,newView:`새 뷰`,typeOptions:`유형 옵션`,groupByField:`그룹화 필드`,startDateField:`시작 날짜 필드`,titleField:`제목 필드`,latitudeField:`위도 필드`,longitudeField:`경도 필드`,imageField:`이미지 필드`,dateField:`날짜 필드`,selectField:`필드 선택...`,gridOptionsHint:`그리드 뷰는 위에서 구성된 열을 사용합니다.`,groupBy:`그룹화 기준`,prefixField:`접두사 필드`,fields:`필드`,fieldsVisible:`{{count}}개 표시`,sortsCount:`{{count}}개 정렬`,filtersCount:`{{count}}개 필터`,endDateField:`종료 날짜 필드`,color:`색상`,fieldTextColor:`필드 텍스트 색상`,rowHeight:`행 높이`,wrapHeaders:`헤더 줄바꿈`,showFieldDescriptions:`필드 설명 표시`,collapseAllByDefault:`기본적으로 모두 접기`,striped:`줄무늬 행`,bordered:`테두리 셀`,inlineEdit:`인라인으로 레코드 편집`,addDeleteRecordsInline:`인라인으로 레코드 추가/삭제`,clickIntoRecordDetails:`레코드 상세 보기 클릭`,navigationMode:`탐색 모드`,navigationWidth:`탐색 너비`,navigationWidthHint:`서랍, 모달, 분할 탐색 모드에서 사용 가능`,openNewTab:`새 탭에서 열기`,openNewTabHint:`페이지 및 새 창 탐색 모드에서 사용 가능`,import:`가져오기`,importTitle:`CSV에서 가져오기`,importedToast:`{{count}}개 행 가져옴.`,importedWithSkipped:`{{ok}}개 행 가져옴; {{skipped}}개 건너뜀.`,showAdvancedSettings:`고급 설정 표시`,showFewerSettings:`설정 줄이기`,createViewDesc:`보기 유형을 선택하고 이름을 지정하세요. 모든 설정은 나중에 변경할 수 있습니다.`,cancel:`취소`,create:`생성`,delete:`삭제`,deleteViewTitle:`보기 삭제`,deleteViewConfirm:`"{{name}}" 보기를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,bulkDeleteConfirm:`선택한 {{count}}개 레코드를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,duplicateViewName:`해당 이름의 보기가 이미 존재합니다.`,viewTypeGrid:`그리드`,viewTypeGridDesc:`레코드의 스프레드시트 형식 테이블.`,viewTypeKanban:`칸반`,viewTypeKanbanDesc:`단일 선택 필드로 열에 그룹화된 카드.`,viewTypeCalendar:`캘린더`,viewTypeCalendarDesc:`월별 캘린더에 날짜로 배치된 레코드.`,viewTypeGallery:`갤러리`,viewTypeGalleryDesc:`첨부 파일 필드의 대형 이미지 카드.`,viewTypeTimeline:`타임라인`,viewTypeTimelineDesc:`수평 시간 축을 따른 레코드.`,viewTypeGantt:`간트`,viewTypeGanttDesc:`시작/종료 및 종속성이 있는 프로젝트 막대.`,viewTypeMap:`지도`,viewTypeMapDesc:`위도/경도 필드의 지리적 마커.`,viewTypeChart:`차트`,viewTypeChartDesc:`집계된 막대형/꺾은선형/원형 차트.`,groupByFieldHelp:`칸반 보드는 필드 값에 따라 레코드를 열로 그룹화합니다.`,startDateFieldHelp:`캘린더는 이 날짜에 해당하는 셀에 레코드를 배치합니다.`,ganttStartDateFieldHelp:`각 간트 막대의 왼쪽 가장자리는 이 날짜를 사용합니다.`,ganttEndDateFieldHelp:`각 간트 막대의 오른쪽 가장자리는 이 날짜를 사용합니다.`,timelineDateFieldHelp:`레코드는 이 날짜를 기반으로 타임라인에 배치됩니다.`,latitudeFieldHelp:`위도를 포함하는 필드 (지리 필드만 해당).`,longitudeFieldHelp:`경도를 포함하는 필드 (지리 필드만 해당).`,imageFieldHelp:`갤러리 표지는 이 이미지 또는 첨부 파일 필드에서 가져옵니다.`,selectOption:`선택...`,noEligibleFieldForType:`해당 유형의 적합한 필드가 없습니다. 먼저 개체에 추가하세요.`,viewTypeUnavailable:`이 개체에는 "{{field}}"로 사용할 수 있는 필드가 없습니다.`,viewTypeUnavailableShort:`이 개체에서 지원되지 않습니다.`,chartType:`차트 유형`,chartTypeHelp:`데이터 렌더링 방식을 결정합니다.`,chartTypeBar:`막대 차트`,chartTypeLine:`꺾은선형 차트`,chartTypePie:`원형 차트`,chartTypeArea:`영역 차트`,chartTypeScatter:`분산형 차트`,xAxisField:`X축 필드`,xAxisFieldHelp:`범주형 또는 시간 차원.`,yAxisField:`Y축 필드`,yAxisFieldHelp:`집계할 숫자 필드.`,selectionMode:`선택 모드`,selectionNone:`없음`,selectionSingle:`단일`,selectionMultiple:`다중`,pageSize:`페이지 크기`,pageSizeOptions:`페이지 크기 옵션`,exportFormats:`내보내기 형식`,exportMaxRecords:`최대 레코드 수`,exportIncludeHeaders:`헤더 포함`,exportFileNamePrefix:`파일 이름 접두사`,searchableFields:`검색 가능한 필드`,filterableFields:`필터링 가능한 필드`,resizableColumns:`크기 조절 가능한 열`,densityCompact:`컴팩트`,densityComfortable:`보통`,densitySpacious:`넓음`,densityMode:`밀도 모드`,hiddenFields:`숨겨진 필드`,rowActions:`행 작업`,bulkActions:`일괄 작업`,sharing:`공유`,sharingEnabled:`공유 활성화`,sharingVisibility:`가시성`,addRecordEnabled:`레코드 추가 활성화`,addRecordPosition:`위치`,addRecordMode:`모드`,addRecordFormView:`양식 보기`,conditionalFormatting:`조건부 서식`,addRule:`규칙 추가`,quickFilters:`빠른 필터`,addQuickFilter:`빠른 필터 추가`,ufElements:`요소`,ufDropdown:`드롭다운`,ufTabs:`탭`,ufToggle:`토글`,ufAddField:`+ 필터 필드 추가...`,ufNoFields:`사용 가능한 필드 없음`,ufAddTab:`+ 탭 추가`,ufTabLabel:`레이블`,ufShowAllRecords:`"모든 레코드" 탭 표시`,ufAllowAddTab:`탭 추가 허용`,showRecordCount:`레코드 수 표시`,allowPrinting:`인쇄 허용`,virtualScroll:`가상 스크롤`,emptyStateTitle:`빈 상태 제목`,emptyStateMessage:`빈 상태 메시지`,emptyStateIcon:`빈 상태 아이콘`,ariaLabel:`ARIA 레이블`,ariaDescribedBy:`ARIA 설명`,ariaLive:`ARIA 라이브`,accessibility:`접근성`,viewTabs:`보기 탭`},localeSwitcher:{label:`언어`},search:`검색…`,nav:{pinItem:`{{name}} 고정`,unpinItem:`{{name}} 고정 해제`,dragToReorder:`드래그하여 순서 변경`,favorites:`즐겨찾기`}},auth:{login:{title:`계정에 로그인`,description:`이메일과 비밀번호를 입력하세요`,emailLabel:`이메일`,emailPlaceholder:`name@example.com`,passwordLabel:`비밀번호`,passwordPlaceholder:`비밀번호를 입력하세요`,forgotPasswordText:`비밀번호를 잊으셨나요?`,submitButton:`로그인`,submittingButton:`로그인 중...`,noAccountText:`계정이 없으신가요?`,signUpText:`회원가입`,errors:{invalidCredentials:`잘못된 이메일 또는 비밀번호입니다. 다시 시도하세요.`,emailNotVerified:`로그인하기 전에 이메일을 확인하세요.`}},register:{title:`계정 만들기`,description:`정보를 입력하여 시작하세요`,nameLabel:`이름`,namePlaceholder:`홍길동`,emailLabel:`이메일`,emailPlaceholder:`name@example.com`,passwordLabel:`비밀번호`,passwordPlaceholder:`비밀번호 생성 (최소 8자)`,confirmPasswordLabel:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호를 다시 입력하세요`,passwordMismatchError:`비밀번호가 일치하지 않습니다`,passwordTooShortError:`비밀번호는 최소 8자 이상이어야 합니다`,submitButton:`계정 만들기`,submittingButton:`계정 생성 중...`,hasAccountText:`이미 계정이 있으신가요?`,signInText:`로그인`,errors:{userExists:`해당 이메일로 이미 계정이 존재합니다. 로그인해 보세요.`},verifyInbox:{title:`받은 편지함을 확인하세요`,description:`{{email}}에 확인 링크를 보냈습니다. 링크를 클릭하여 계정을 활성화하세요.`,resend:`확인 이메일 다시 보내기`,resending:`전송 중…`,resent:`확인 이메일이 전송되었습니다.`,backToSignIn:`로그인으로 돌아가기`}},forgotPassword:{title:`비밀번호 재설정`,description:`이메일 주소를 입력하시면 비밀번호 재설정 링크를 보내드립니다`,emailLabel:`이메일`,emailPlaceholder:`name@example.com`,submitButton:`재설정 링크 보내기`,submittingButton:`전송 중...`,successTitle:`이메일을 확인하세요`,successDescription:`{{email}}(으)로 비밀번호 재설정 링크를 전송했습니다. 수신함을 확인해주세요.`,backToSignInText:`로그인으로 돌아가기`,rememberPasswordText:`비밀번호가 기억나시나요?`,signInText:`로그인`},resetPassword:{title:`새 비밀번호 설정`,description:`이전에 사용하지 않은 비밀번호를 선택하세요.`,newPassword:`새 비밀번호`,confirmPassword:`비밀번호 확인`,submit:`비밀번호 업데이트`,submitting:`업데이트 중…`,success:`비밀번호가 업데이트되었습니다`,failed:`재설정 실패`,invalidToken:`이 재설정 링크는 유효하지 않거나 만료되었습니다.`,missingToken:`재설정 링크가 없거나 만료되었습니다`,passwordsMismatch:`비밀번호가 일치하지 않습니다`,requestNewLink:`새 링크 요청`},verifyEmail:{title:`이메일 주소 확인`,description:`이메일 주소로 확인 링크를 보냈습니다. 링크를 클릭하여 계정을 확인하세요.`,sentTo:`전송 대상:`,verifyingTitle:`확인 중…`,verifyingDescription:`이메일을 확인하고 있습니다. 잠시 기다리세요.`,successTitle:`이메일 확인됨`,successDescription:`이메일이 확인되었습니다. 이제 로그인할 수 있습니다.`,errorTitle:`확인 실패`,errorDescription:`확인에 실패했습니다. 새 링크를 요청하세요.`,missingToken:`확인 링크에 토큰이 없습니다.`,emailMissing:`이메일 주소 누락`,resendButton:`확인 이메일 다시 보내기`,resending:`전송 중…`,resent:`이메일이 전송되었습니다! 받은 편지함을 확인하세요`,resentSuccess:`확인 이메일이 전송되었습니다!`,resentDescription:`받은 편지함을 확인하고 확인 링크를 클릭하세요.`,resendFailed:`확인 이메일을 다시 보낼 수 없습니다`,signInLink:`로그인으로 이동`,backToSignIn:`로그인으로 돌아가기`,backToLogin:`로그인으로 돌아가기`,checkSpam:`이메일을 받지 못하셨나요? 스팸 폴더를 확인하거나 지원팀에 문의하세요.`,or:`또는`},setup:{welcomeTitle:`ObjectStack에 오신 것을 환영합니다`,description:`설정을 완료하려면 첫 번째 소유자 계정을 만드세요.`,yourName:`이름`,orgName:`조직 이름`,orgNamePlaceholder:`예시 회사`,emailLabel:`이메일`,emailPlaceholder:`name@example.com`,passwordLabel:`비밀번호`,passwordHint:`최소 8자`,submit:`소유자 계정 만들기`,submitting:`설정 중…`,failed:`설정 실패`},device:{title:`새 장치 승인`,subtitle:`{{email}}으로 로그인하기 위해 이 장치를 승인하세요.`,userCodeLabel:`장치 코드`,loggedInAs:`{{email}}으로 로그인됨`,approve:`장치 승인`,approving:`승인 중…`,approvedTitle:`장치가 승인되었습니다`,approvedDescription:`장치로 돌아갈 수 있습니다 — 곧 로그인될 것입니다.`,approveSuccess:`장치가 승인되었습니다`,approveSuccessDescription:`이 창을 닫을 수 있습니다.`,approveFailed:`승인 실패`,deny:`요청 거부`,denying:`거부 중…`,deniedTitle:`액세스 거부됨`,deniedDescription:`장치에 액세스 권한이 부여되지 않습니다.`,denyFailed:`요청을 거부할 수 없습니다`,invalidTitle:`잘못된 장치 링크`,invalidDescription:`URL에 장치 코드가 제공되지 않았습니다.`,loading:`로딩 중…`,cancel:`취소`},shell:{tenantHostHint:`이 작업 공간에 로그인하는 중입니다`}},errors:{networkError:`네트워크 오류입니다. 연결을 확인해주세요.`,serverError:`서버 오류입니다. 나중에 다시 시도해주세요.`,notFound:`리소스를 찾을 수 없습니다.`,unauthorized:`이 작업을 수행할 권한이 없습니다.`,forbidden:`접근이 거부되었습니다.`,timeout:`요청 시간이 초과되었습니다. 다시 시도해주세요.`,unknown:`예기치 않은 오류가 발생했습니다.`},workspace:{label:`워크스페이스`,default:`내 워크스페이스`,switch:`워크스페이스 전환`,create:`워크스페이스 생성`,createTitle:`워크스페이스 만들기`,createDescription:`워크스페이스는 팀이 협업할 수 있는 공유 공간입니다.`,createButton:`워크스페이스 생성`,nameLabel:`워크스페이스 이름`,namePlaceholder:`예: Acme Inc`,slugLabel:`URL 슬러그`,slugHint:`URL에 사용됩니다. 소문자, 숫자, 하이픈만 사용 가능합니다.`,invite:`구성원 초대`,members:`구성원`,settings:`워크스페이스 설정`},sidebar:{settings:`설정`,help:`도움말`,helpTooltip:`도움말 및 문서`,activityFeed:`활동 피드`,notifications:`알림`,approvals:`승인`,inbox:`받은 편지함`,inboxAriaLabel:`받은 편지함 열기`,area:`영역`,recent:`최근`,favorites:`즐겨찾기`,starred:`즐겨찾기`,removeFromFavorites:`즐겨찾기에서 {{name}} 제거`},home:{title:`홈`,subtitle:`워크스페이스 대시보드`,nav:`홈`,allApps:`모든 애플리케이션`,loading:`워크스페이스 로드 중...`,recent:`최근`,starred:`즐겨찾기`,welcome:`ObjectUI에 오신 것을 환영합니다`,welcomeDescription:`첫 애플리케이션을 만들거나 시스템 설정을 구성하여 시작하세요.`,createFirstApp:`첫 앱 만들기`,systemSettings:`시스템 설정`,browseMarketplace:`앱 마켓플레이스 탐색`,quickActions:{title:`빠른 작업`,createApp:`앱 생성`,createAppDesc:`새 애플리케이션으로 시작`,manageObjects:`객체 관리`,manageObjectsDesc:`데이터 모델 구성`,systemSettings:`시스템 설정`,systemSettingsDesc:`워크스페이스 구성`},appCard:{noDescription:`설명 없음`,default:`기본값`},greetingMorning:`좋은 아침이에요`,greetingAfternoon:`좋은 오후에요`,greetingEvening:`좋은 저녁이에요`,greetingNight:`야간 작업 중`,heroTagline:`마지막으로 중단한 곳에서 이어서 하거나 새로운 것을 발견해 보세요.`,open:`열기`,stats:{apps:`앱`,starred:`즐겨찾기`,recent:`최근`},recentApps:{title:`최근 열린 항목`,itemType:{object:`오브젝트`,dashboard:`대시보드`,page:`페이지`,record:`레코드`}},starredApps:{title:`즐겨찾기`},gettingStarted:{title:`홈 화면 맞춤설정`,description:`앱을 즐겨찾기에 추가하면 여기에 고정되어 한 번의 클릭으로 접근할 수 있습니다. 열리는 모든 항목은 "최근 열린 항목"에 자동으로 표시됩니다.`,cta:`모든 앱 탐색`}},layout:{appSwitcher:{home:`홈`,addApp:`앱 추가`,editApp:`앱 편집`,manageAllApps:`모든 앱 관리`,systemConsole:`시스템 콘솔`,noAppsConfigured:`구성된 앱 없음`},activityFeed:{title:`최근 활동`,filter:`필터`,empty:`최근 활동 없음`,ariaLabel:`활동 피드`,typeCreate:`생성`,typeUpdate:`업데이트`,typeDelete:`삭제`,typeComment:`댓글`,relativeJustNow:`방금 전`,relativeSecondsAgo:`{{count}}초 전`,relativeMinutesAgo:`{{count}}분 전`,relativeHoursAgo:`{{count}}시간 전`,relativeDaysAgo:`{{count}}일 전`,viewAll:`모든 활동 보기`},metadata:{label:`메타데이터`,toggleTitle:`메타데이터 검사기 토글`,panelTitle:`메타데이터 검사기`,jsonBadge:`JSON`,copyJson:`JSON 복사`}},search:{title:`검색`,back:`뒤로`,placeholder:`오브젝트, 대시보드, 페이지, 보고서 검색...`,inputAriaLabel:`오브젝트, 대시보드, 페이지, 보고서 검색`,resultsCount:`"{{query}}"에 대한 {{count}}개 결과`,resultsCountPlural:`"{{query}}"에 대한 {{count}}개 결과`,itemsAvailable:`{{count}}개 항목 사용 가능`,noResults:`결과를 찾을 수 없습니다`,noResultsHint:`검색어를 조정해 보세요`,typeObjects:`오브젝트`,typeDashboards:`대시보드`,typePages:`페이지`,typeReports:`보고서`,badgeObject:`오브젝트`,badgeDashboard:`대시보드`,badgePage:`페이지`,badgeReport:`보고서`},empty:{objectNotFound:`오브젝트를 찾을 수 없습니다`,objectNotFoundDescription:`"{{name}}" 오브젝트 정의가 없습니다. 구성을 확인하거나 뒤로 이동하세요.`,pageNotFound:`페이지를 찾을 수 없습니다`,pageNotFoundDescription:`"{{name}}" 페이지를 찾을 수 없습니다. 삭제되거나 이름이 변경되었을 수 있습니다.`,dashboardNotFound:`대시보드를 찾을 수 없습니다`,dashboardNotFoundDescription:`"{{name}}" 대시보드를 찾을 수 없습니다. 삭제되거나 이름이 변경되었을 수 있습니다.`,reportNotFound:`보고서를 찾을 수 없습니다`,reportNotFoundDescription:`"{{name}}" 보고서를 찾을 수 없습니다. 삭제되거나 이름이 변경되었을 수 있습니다.`,noAppsConfigured:`구성된 앱 없음`,noAppsConfiguredDescription:`등록된 앱이 없습니다. 첫 번째 앱을 만들거나 시스템 설정을 방문하세요.`,createFirstApp:`첫 번째 앱 만들기`,systemSettings:`시스템 설정`,back:`뒤로`,recordNotFound:`레코드를 찾을 수 없습니다`,recordNotFoundDescription:`찾고 있는 레코드가 존재하지 않거나 삭제되었을 수 있습니다.`},renderer:{noPageSchema:`페이지 스키마가 없습니다`,noFormSchema:`양식 스키마가 없습니다`,noDashboardSchema:`대시보드 스키마가 없습니다`,pageRendering:`페이지 렌더링: {{name}}`,dashboardRendering:`대시보드 렌더링: {{name}}`,formRenderingMode:`{{mode}} 모드로 양식 렌더링`,formRenderingFor:`레코드 {{id}}에 대해`,createRecord:`레코드 만들기`,editRecord:`레코드 편집`,page:`페이지`,dashboard:`대시보드`,save:`저장`,cancel:`취소`},actionDialog:{title:`작업 매개변수`,description:`계속하려면 필요한 정보를 입력하세요.`,selectPlaceholder:`{{label}} 선택`,requiredError:`{{label}}은(는) 필수입니다`,cancel:`취소`,confirm:`확인`,defaultActionTitle:`작업`,ok:`확인`,lookupPlaceholder:`{{label}}의 레코드 ID(UUID) 붙여넣기`,lookupHelpText:`참조된 개체의 레코드 ID를 입력하세요. 선택기가 곧 추가됩니다.`},rowAction:{openMenu:`메뉴 열기`,edit:`편집`,delete:`삭제`},navigationSync:{addedPage:`탐색 업데이트: 페이지 "{{name}}" 추가됨`,addedDashboard:`탐색 업데이트: 대시보드 "{{name}}" 추가됨`,removedPage:`탐색 업데이트: 페이지 "{{name}}" 제거됨`,removedDashboard:`탐색 업데이트: 대시보드 "{{name}}" 제거됨`,renamedPage:`탐색 업데이트: 페이지 "{{oldName}}"이(가) "{{newName}}"으로 이름 변경됨`,renamedDashboard:`탐색 업데이트: 대시보드 "{{oldName}}"이(가) "{{newName}}"으로 이름 변경됨`,undoLabel:`실행 취소`,undone:`탐색 변경 실행 취소됨`,undoFailed:`탐색 변경을 실행 취소할 수 없습니다`,updateFailed:`탐색을 업데이트할 수 없습니다`},objectActions:{deleteSuccess:`{{label}} 삭제 성공`,deleteFailed:`{{label}} 삭제 실패`,noRecordId:`레코드 ID가 없습니다`,deleteConfirm:`이 레코드를 삭제하시겠습니까?`,bulkDeleteSuccess:`{{count}}개의 {{label}} 레코드 삭제됨`,bulkDeletePartial:`{{succeeded}}개 삭제됨, {{failed}}개 실패`},objectViewActions:{renameFailed:`보기 이름 변경 실패`,deleteFailed:`보기 삭제 실패`},dashboardActions:{pdfPreparing:`PDF 내보내기 준비 중…`,exportFailed:`내보내기 실패: {{message}}`,forecastSoon:`예측 보기가 곧 출시됩니다`},recordDetail:{viewersTooltip:`현재 이 레코드를 보고 있는 사용자`},cellRender:{empty:`비어 있음`,yes:`예`,no:`아니요`,systemFields:`시스템`},user:{profile:`프로필`,settings:`설정`,logout:`로그아웃`,preferences:`환경설정`,theme:`테마`,language:`언어`},report:{rowTotal:`행 합계`,columnTotal:`열 합계`,grandTotal:`총합계`,totals:`합계`,rowsLabel:`행`,columnsLabel:`열`,allLabel:`(전체)`,emptyLabel:`(비어 있음)`,loading:`로딩 중…`,failedToLoad:`매트릭스 로드 실패: {{message}}`,needsAcross:"매트릭스 보고서에는 하나 이상의 `groupingsAcross` 필드가 필요합니다.",aggregate:{count:`개수`,countDistinct:`고유 개수`,sum:`합계`,avg:`평균`,min:`최소`,max:`최대`,first:`첫 번째`},editor:{breadcrumb:`구성`,basic:`기본`,title:`제목`,titlePlaceholder:`예: 분기별 파이프라인`,description:`설명`,descriptionPlaceholder:`이 보고서가 무엇을 보여주나요?`,type:`보고서 유형`,typeTabular:`표 — 평면 목록`,typeSummary:`요약 — 합계 포함 그룹화`,typeMatrix:`매트릭스 — 행 × 열 피벗`,typeJoined:`결합 — 여러 블록`,typeHelp:`보고 싶은 형태에 맞는 레이아웃을 선택하세요.`,data:`데이터`,objectName:`데이터 소스`,objectNamePlaceholder:`예: opportunity`,objectNameHelp:`이 보고서가 조회할 객체는 무엇인가요?`,limit:`행 수 제한`,limitPlaceholder:`예: 100`,columns:`열`,columnsHint:`열로 표시할 필드를 선택하세요. 요약 또는 매트릭스 보고서에서는 집계(합계, 개수…)를 추가할 수 있습니다.`,filters:`필터`,filtersHint:`이 보고서에 포함되는 행을 제한합니다.`,filtersComplex:`이 보고서는 여기서 편집할 수 없는 고급 필터를 사용합니다. 저장 시 그대로 유지됩니다.`,groupBy:`그룹화 기준`,groupByHint:`데이터를 그룹화하고 소계를 계산합니다.`,rows:`행`,rowsHint:`이 필드들로 행을 그룹화합니다.`,columnsAxis:`열`,columnsAxisHint:`이 필드들을 상단에 피벗합니다.`,values:`값`,valuesHint:`각 셀에 표시되는 숫자입니다. 하나 이상의 필드를 선택하고 집계(합계, 개수…)를 지정하세요.`,grouping:`그룹화`,addGrouping:`그룹화 추가`,dateGranularity:`날짜 단위`,dateGranularityNone:`(원래 값 사용)`,day:`일`,week:`주`,month:`월`,quarter:`분기`,year:`연도`,sortAsc:`오름차순`,sortDesc:`내림차순`,chart:`차트`,chartHint:`표 옆에 표시되는 선택 시각화입니다.`,chartType:`차트 유형`,chartTitle:`차트 제목`,chartTitlePlaceholder:`기본값은 보고서 제목`,chartXAxis:`X축 (범주)`,chartYAxis:`Y축 (값)`,chartShowLegend:`범례 표시`,chartShowDataLabels:`데이터 레이블 표시`,chartNone:`(차트 없음)`,chartBar:`막대`,chartLine:`선`,chartArea:`영역`,chartPie:`원형`,chartDonut:`도넛`,chartFunnel:`퍼널`,validationNeedsObject:`열을 추가하기 전에 데이터 소스를 선택하세요.`,validationMatrixNeedsRowsCols:`매트릭스 보고서에는 최소 한 개의 행과 한 개의 열이 필요합니다.`,validationSummaryNeedsRows:`요약 보고서에는 최소 한 개의 그룹화 필드가 필요합니다.`,blocks:`블록`,blocksHint:`각 블록은 독립적인 표 또는 차트입니다. 블록 필터는 보고서 필터와 AND로 결합됩니다.`,addBlock:`블록 추가`,removeBlock:`블록 삭제`,blockName:`블록 이름`,blockNamePlaceholder:`고유한_블록_이름`,blockLabel:`표시 레이블`,blockLabelPlaceholder:`블록 위에 표시됩니다`,blockDescription:`설명`,blockDescriptionPlaceholder:`이 블록의 선택적 설명`,validationJoinedNeedsBlocks:`결합 보고서에는 최소 한 개의 블록이 필요합니다.`,validationBlockNameRequired:`각 블록에는 비어 있지 않은 이름이 필요합니다.`,validationBlockNameDuplicate:`블록 이름은 보고서 내에서 고유해야 합니다.`,validationBlockNeedsColumns:`각 블록에는 최소 한 개의 열이 필요합니다.`,noneOption:`(없음)`,addCondition:`조건 추가`,combineLogic:`결합 방식`,opContains:`포함`,opIsEmpty:`비어 있음`,opIsNotEmpty:`비어 있지 않음`,formatAuto:`자동`,formatCurrency:`통화`,formatPercent:`백분율`,formatInteger:`정수`,formatDate:`날짜`,formatDatetime:`날짜 및 시간`,columnLabelPlaceholder:`레이블 재정의`,aggregateColumn:`집계`,formatColumn:`형식`,addColumns:`열 추가`,searchFields:`필드 검색…`,noMatchingFields:`검색과 일치하는 필드가 없습니다.`,noFieldsAvailable:`사용 가능한 필드가 없습니다.`,columnsCount:`{n}개 열 선택됨`,columnsEmpty:`아직 선택된 열이 없습니다.`,fieldPickerTitle:`필드 선택`,fieldPickerDescription:`추가할 필드를 하나 이상 선택하세요. 검색 필드를 사용하여 목록을 필터링하세요.`,fieldPickerChangeTitle:`필드 변경`,fieldPickerAddGroupingTitle:`그룹화 추가`,fieldPickerEmpty:`(필드 선택)`,fieldPickerSelected:`{n}개 선택됨`,fieldPickerClear:`선택 지우기`,fieldPickerAdd:`추가`,fieldPickerAddN:`{n}개 추가`}},organizations:{mine:`내 조직`,title:`조직`,heading:`내 조직`,subtitle:`계속할 조직을 선택하거나 새 조직을 만드세요.`,searchPlaceholder:`조직 검색`,new:`새 조직`,current:`현재 조직`,manage:`관리`,emptyTitle:`아직 조직이 없습니다`,emptyDescription:`시작하려면 첫 번째 조직을 만드세요.`,noMatches:`검색과 일치하는 조직이 없습니다.`},notifications:{empty:`알림 없음`,markAllRead:`모두 읽음으로 표시`,viewAll:`모든 알림 보기`,approvalsPending:`{{count}}건의 승인 대기 중`,viewApprovals:`승인 보기`,noPendingApprovals:`대기 중인 승인 없음`,openApprovalsInbox:`승인 보관함 열기`,emptyUnread:`모두 읽음`,filterUnread:`읽지 않음`,filterAll:`전체`},publicForm:{submit:`제출`,submitting:`제출 중…`,submitAnother:`다른 답변 제출`,poweredBy:`ObjectStack 제공`,secureNotice:`귀하의 정보는 안전하게 전송되며 요청 처리에만 사용됩니다.`,thankYouTitle:`감사합니다!`,thankYouMessage:`제출이 성공적으로 수신되었습니다.`,redirecting:`{{seconds}}초 후 리디렉션됩니다…`,unavailableTitle:`양식을 사용할 수 없습니다`,unavailableDescription:`이 URL에서 사용 가능한 공개 양식이 없습니다. 기본 보기에서 익명 공유가 활성화되어 있는지 확인하세요.`,tryDemo:`데모 시도`,retry:`다시 시도`,loading:`양식 로딩 중…`,requiredHint:`* 필수 필드`,consentLabelDefault:`개인정보 처리방침에 동의하며 이 요청을 위해 내 데이터 처리에 동의합니다.`,consentLink:`개인정보 처리방침`,consentRequired:`계속하려면 개인정보 처리방침에 동의하세요.`,rateLimited:`제출하기 전에 잠시 답변을 검토하세요.`,redirectBlocked:`제출이 수락되었지만 보안상의 이유로 리디렉션 URL이 차단되었습니다.`,demo:{contactTitle:`문의하기`,contactDescription:`프로젝트에 대해 알려주시면 영업 담당자가 1 영업일 이내에 연락드립니다.`,supportTitle:`지원 요청 제출`,supportDescription:`문제를 설명해 주세요 — 팀이 1 영업일 이내에 답변 드립니다.`,thankYouSalesTitle:`감사합니다 — 메시지를 받았습니다!`,thankYouSalesMessage:`영업 담당자가 1 영업일 이내에 연락드립니다.`,thankYouSupportTitle:`접수되었습니다 — 요청이 대기 중입니다.`,thankYouSupportMessage:`지원 엔지니어가 곧 후속 조치를 취할 것입니다. 추가 스크린샷이 있으면 이 페이지를 저장하세요.`,field:{firstName:`이름`,lastName:`성`,email:`업무용 이메일`,phone:`전화번호`,jobTitle:`직함`,company:`회사`,website:`웹사이트`,industry:`업종`,companySize:`회사 규모`,howCanWeHelp:`어떻게 도와드릴까요?`,subject:`제목`,description:`설명`,issueType:`문제 유형`,priority:`우선순위`},industry:{technology:`기술`,software:`소프트웨어 / SaaS`,finance:`금융`,healthcare:`의료`,retail:`리테일`,other:`기타`},issueType:{question:`질문`,problem:`문제`,bug:`버그`,feature_request:`기능 요청`},priority:{low:`낮음`,medium:`보통`,high:`높음`,critical:`긴급`}}},marketplace:{title:`앱 마켓플레이스`,subtitle:`ObjectStack 카탈로그에 게시된 승인된 앱을 탐색하세요. 앱을 클릭하여 세부 정보를 보고 환경 중 하나에 설치하세요.`,searchPlaceholder:`이름 또는 매니페스트 ID로 앱 검색…`,searchAria:`마켓플레이스 앱 검색`,installed:`설치됨`,installedCount:`설치됨 ({{count}})`,refresh:`새로고침`,all:`전체`,noApprovedYet:`아직 마켓플레이스에 승인된 앱이 없습니다.`,noMatchFilters:`필터와 일치하는 앱이 없습니다.`,noDescription:`사용 가능한 설명이 없습니다.`,back:`마켓플레이스로 돌아가기`,installedTitle:`설치된 앱`,installedSubtitle:`이 런타임의 커널에 현재 설치된 마켓플레이스 패키지.`,installedEmpty:`아직 이 런타임에 마켓플레이스 앱이 설치되지 않았습니다.`,browseLink:`마켓플레이스 탐색 →`,installedAdditiveNote:`<strong>참고:</strong> 커널 API는 추가 전용입니다 — 제거하면 디스크에서 매니페스트가 삭제되어 다음 시작 시 패키지가 로드되지 않지만, 실행 중인 커널은 재시작될 때까지 앱을 등록된 상태로 유지합니다.`,installedAt:`{{when}} 설치됨`,installedBy:`{{user}}에 의해`,installedPackageId:`패키지`,cachedAs:`<code>{{path}}</code>로 캐시됨`,versionBadge:`v{{version}}`,installedBadge:`v{{version}} 설치됨`,load:{failed:`마켓플레이스를 로드할 수 없습니다`,failedHint:`기본적으로 이 런타임은 ObjectStack 퍼블릭 클라우드를 가리킵니다. 런타임이 온라인인지 확인하세요.`,packageFailed:`패키지를 로드할 수 없습니다`,notFound:`찾을 수 없습니다.`},detail:{homepage:`홈페이지`,installedV:`설치됨 · v{{version}}`,about:`정보`,noReadme:`사용 가능한 README 없음.`,versions:`버전`,noApprovedVersions:`승인된 버전 없음.`,prerelease:`프리릴리즈`,moreOptions:`추가 설치 옵션`,uninstallFromRuntime:`이 런타임에서 제거`},action:{install:`설치`,reinstall:`재설치`,working:`처리 중…`,installToCloud:`클라우드에 설치…`,installing:`설치 중…`,uninstall:`제거`,uninstalling:`제거 중…`,details:`세부 정보`,close:`닫기`,dismiss:`닫기`,openOnCloud:`클라우드에서 열기`,backHome:`홈으로 돌아가기`},install:{dialogTitle:`{{name}} 설치`,dialogDescCurrent:`이 환경에 설치 ({{host}}).`,dialogDescPicker:`이 앱을 설치할 환경을 선택하세요. ObjectStack Cloud에 로그인되어 있어야 합니다.`,environment:`환경`,environmentPlaceholder:`환경 선택`,includeSampleData:`샘플 데이터 포함`,noEnvs:`활성 조직에서 환경을 찾을 수 없습니다.`,noPermission:`환경에 앱을 설치할 권한이 없습니다. 조직 소유자 및 관리자만 설치할 수 있습니다.`,signInFirst:`먼저 ObjectStack Cloud에 로그인해야 합니다.`,success:`설치 성공. 환경을 열어 새 앱을 확인하세요.`,localSuccess:`이 런타임에 v{{version}} 설치됨. "{{name}}"이(가) 이제 앱 전환기에 표시됩니다.`,localManifestConflict:`{{message}}
|
|
14
|
+
참고: 로컬 앱이 이미 이 manifest_id를 가지고 있습니다. 먼저 objectstack.config.ts에서 제거하세요.`,localUnauthorized:`먼저 이 런타임에 로그인하세요.`,localMarketplaceUnavailable:`이 런타임에 OS_CLOUD_URL이 구성되지 않았습니다.`},uninstall:{confirm:`이 런타임에서 {{manifestId}} v{{version}}을(를) 제거하시겠습니까?
|
|
15
|
+
|
|
16
|
+
캐시된 매니페스트가 삭제됩니다.`,successInList:`{{manifestId}} 제거됨. 완전히 언로드하려면 런타임을 재시작하세요.`,successInDetail:`{{manifestId}}의 캐시된 매니페스트 제거됨.`},accessDenied:{title:`관리자 전용 앱 마켓플레이스`,description:`이 환경에 앱을 설치할 권한이 없습니다.`},category:{crm:`CRM`,erp:`ERP`,hr:`인사`,finance:`재무`,project:`프로젝트 관리`,collaboration:`협업`,analytics:`분석`,integration:`통합`,automation:`자동화`,ai:`AI`,security:`보안`,"developer-tools":`개발자 도구`,"ui-theme":`UI 테마`,storage:`스토리지`,other:`기타`},pricing:{free:`무료`,freemium:`프리미엄`,paid:`유료`,subscription:`구독`,"usage-based":`사용량 기반`,"contact-sales":`영업팀 문의`},relativeTime:{today:`오늘`,daysAgo:`{{count}}일 전`,monthsAgo:`{{count}}개월 전`,yearsAgo:`{{count}}년 전`}}},de:{common:{addToFavorites:`Zu Favoriten hinzufügen`,removeFromFavorites:`Aus Favoriten entfernen`,loading:`Wird geladen...`,save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,create:`Erstellen`,search:`Suchen`,filter:`Filtern`,reset:`Zurücksetzen`,confirm:`Bestätigen`,close:`Schließen`,back:`Zurück`,next:`Weiter`,previous:`Zurück`,submit:`Absenden`,refresh:`Aktualisieren`,export:`Exportieren`,import:`Importieren`,yes:`Ja`,no:`Nein`,ok:`OK`,actions:`Aktionen`,more:`Mehr`,selectAll:`Alle auswählen`,clearAll:`Alle löschen`,noData:`Keine Daten`,noResults:`Keine Ergebnisse gefunden`,required:`Erforderlich`,optional:`Optional`,selectOption:`Option auswählen`,select:`Auswählen...`,openChat:`Chat öffnen`,closeChat:`Chat schließen`,toggleSidebar:`Seitenleiste umschalten`},validation:{required:`{{field}} ist erforderlich`,minLength:`{{field}} muss mindestens {{min}} Zeichen lang sein`,maxLength:`{{field}} darf höchstens {{max}} Zeichen lang sein`,min:`{{field}} muss mindestens {{min}} sein`,max:`{{field}} darf höchstens {{max}} sein`,email:`Bitte geben Sie eine gültige E-Mail-Adresse ein`,url:`Bitte geben Sie eine gültige URL ein`,pattern:`{{field}} hat ein ungültiges Format`,unique:`{{field}} muss eindeutig sein`,type:`{{field}} muss ein gültiger {{type}} sein`},form:{addItem:`Element hinzufügen`,removeItem:`Element entfernen`,fieldRequired:`Dieses Feld ist erforderlich`,invalidFormat:`Ungültiges Format`,saveSuccess:`Erfolgreich gespeichert`,saveError:`Speichern fehlgeschlagen`,unsavedChanges:`Sie haben nicht gespeicherte Änderungen. Möchten Sie die Seite wirklich verlassen?`,stepOf:`Schritt {{current}} von {{total}}`,createTitle:`{{object}} erstellen`,editTitle:`{{object}} bearbeiten`,createDescription:`Neues {{object}} zur Datenbank hinzufügen.`,editDescription:`Details für {{object}} aktualisieren`,saveRecord:`Datensatz speichern`,create:`Erstellen`,update:`Aktualisieren`,createSuccess:`{{object}} erfolgreich erstellt`,updateSuccess:`{{object}} erfolgreich aktualisiert`,deleteSuccess:`{{object}} erfolgreich gelöscht`},fields:{richText:{format:`Format: {{format}}`,basicEditorHint:`Rich-Text-Editor (einfach)`,placeholder:`Text eingeben...`}},table:{rowsPerPage:`Zeilen pro Seite`,showing:`{{from}} bis {{to}} von {{total}} angezeigt`,noRows:`Keine Zeilen vorhanden`,sortAsc:`Aufsteigend sortieren`,sortDesc:`Absteigend sortieren`,filterColumn:`{{column}} filtern`,columns:`Spalten`,exportCSV:`CSV exportieren`,exportExcel:`Excel exportieren`,selectRow:`Zeile auswählen`,selectAllRows:`Alle Zeilen auswählen`,expandRow:`Zeile erweitern`,collapseRow:`Zeile reduzieren`,hideColumn:`Spalte ausblenden`,freezeColumn:`Spalte fixieren`,unfreezeColumn:`Spalte lösen`,pageInfo:`Seite {{current}} von {{total}}`,totalRecords:`{{count}} gesamt`,noResults:`Keine Ergebnisse gefunden`,noResultsHint:`Versuchen Sie, Ihre Filter oder Suchanfrage anzupassen.`,cancelAll:`Alle abbrechen`,saveAll:`Alle speichern ({{count}})`,addRecord:`Datensatz hinzufügen`,open:`Öffnen`,search:`Suchen...`,modified:`{{count}} Zeile geändert`,selected:`{{count}} ausgewählt`,edit:`Bearbeiten`,delete:`Löschen`},grid:{actions:`Aktionen`,edit:`Bearbeiten`,delete:`Löschen`,export:`Exportieren`,exportAs:`Exportieren als {{format}}`,loading:`Raster wird geladen...`,errorLoading:`Fehler beim Laden des Rasters`,pullToRefresh:`Zum Aktualisieren ziehen`,refreshing:`Wird aktualisiert…`,openRecord:`Datensatz öffnen`,rowHeight:`Zeilenhöhe: {{mode}}`,openMenu:`Menü öffnen`,empty:`Leer`,yes:`Ja`,no:`Nein`,systemFields:`System`,toolbar:{densityMode:`Dichte`,densityCompact:`Kompakt`,densityComfortable:`Normal`,densitySpacious:`Großzügig`,densityCycleHint:`{{label}} (klicken zum Wechseln)`,densityCycleShortHint:`Klicken zum Wechseln`},import:{title:`{{object}} importieren`,stepUpload:`Hochladen`,stepMapping:`Zuordnung`,stepPreview:`Vorschau`,uploadDescription:`Laden Sie eine CSV-Datei hoch, um zu beginnen.`,mappingDescription:`Ordnen Sie CSV-Spalten den Objektfeldern zu.`,previewDescription:`Daten vor dem Import prüfen.`,dragDrop:`CSV-Datei hierher ziehen oder klicken zum Durchsuchen`,browseFiles:`Dateien durchsuchen`,onlyCsv:`Nur CSV-Dateien werden unterstützt.`,fileNeedsHeader:`Datei muss eine Kopfzeile und mindestens eine Datenzeile enthalten.`,mappingTemplate:`Zuordnungsvorlage:`,chooseTemplate:`Vorlage auswählen…`,noSavedTemplates:`Keine gespeicherten Vorlagen`,noneOption:`— Keine —`,saveCurrent:`Aktuelle speichern`,templateName:`Vorlagenname`,save:`Speichern`,deleteTemplate:`Vorlage löschen`,csvColumn:`CSV-Spalte`,mapsTo:`Zugeordnet zu`,status:`Status`,skipColumn:`Spalte überspringen`,skip:`— Überspringen —`,mapped:`Zugeordnet`,skipped:`Übersprungen`,rowsWithErrors:`{{count}} Zeile(n) mit Fehlern`,rowsCorrected:`{{count}} Zeile(n) korrigiert`,clickToFix:`— klicken Sie auf eine hervorgehobene Zelle, um sie zu bearbeiten.`,showingRows:`{{shown}} von {{total}} Zeilen angezeigt`,importing:`Importiere… {{progress}}%`,importComplete:`Import abgeschlossen`,imported:`{{count}} importiert`,skippedCount:`{{count}} übersprungen`,moreErrors:`…und {{count}} weitere Fehler`,cancel:`Abbrechen`,back:`Zurück`,next:`Weiter`,close:`Schließen`,importNRows:`{{count}} Zeilen importieren`,importingProgress:`Importiere…`,requiredMark:`*`,required:`Erforderlich`,invalidType:`Ungültiger {{type}}`}},calendar:{today:`Heute`,month:`Monat`,week:`Woche`,day:`Tag`,agenda:`Agenda`,allDay:`Ganztägig`,noEvents:`Keine Termine`,newEvent:`Neuer Termin`,moreEvents:`+{{count}} weitere`},list:{recordCount:`{{count}} Datensätze`,recordCountOne:`{{count}} Datensatz`,addRecord:`Datensatz hinzufügen`,tabs:`Tabs`,allRecords:`Alle Datensätze`,search:`Suche`,filter:`Filtern`,filterRecords:`Datensätze filtern`,sort:`Sortieren`,sortRecords:`Datensätze sortieren`,group:`Gruppieren`,groupBy:`Gruppieren nach`,export:`Exportieren`,exportAs:`Exportieren als {{format}}`,color:`Farbe`,rowColor:`Zeilenfarbe`,colorByField:`Nach Feld einfärben`,clear:`Löschen`,none:`Keine`,hideFields:`Felder ausblenden`,noItems:`Keine Einträge gefunden`,noItemsMessage:`Es gibt keine Datensätze. Versuchen Sie, die Filter anzupassen oder neue Daten hinzuzufügen.`,showAll:`Alle anzeigen`,pullToRefresh:`Zum Aktualisieren ziehen`,refreshing:`Aktualisiere…`,share:`Teilen`,print:`Drucken`,hideFieldsTitle:`Felder ausblenden`,dataLimitReached:`Die ersten {{limit}} Datensätze werden angezeigt. Möglicherweise sind weitere Daten verfügbar.`,viewSettings:`Ansichtseinstellungen`,viewSettingsHint:`Gruppierung, Farbe, Dichte und sichtbare Felder.`,addGroup:`Gruppenfeld hinzufügen`,collapsedByDefault:`Standardmäßig eingeklappt`,removeGroup:`Entfernen`},kanban:{addCard:`Karte hinzufügen`,addColumn:`Spalte hinzufügen`,moveCard:`Karte verschieben`,deleteCard:`Karte löschen`,deleteColumn:`Spalte löschen`,noCards:`Keine Karten`,cardTitlePlaceholder:`Kartentitel eingeben...`},timeline:{bucket:{overdue:`Überfällig`,today:`Heute`,tomorrow:`Morgen`,thisWeek:`Diese Woche`,nextWeek:`Nächste Woche`,later:`Später`,noDate:`Kein Datum`,unassigned:`Nicht zugewiesen`}},gantt:{column:{taskName:`Aufgabenname`,start:`Start`,end:`Ende`},toolbar:{prevPeriod:`Vorherige Periode`,nextPeriod:`Nächste Periode`,zoomIn:`Vergrößern`,zoomOut:`Verkleinern`,jumpToToday:`Zu heute springen`,today:`Heute`,showTaskList:`Aufgabenliste anzeigen`,hideTaskList:`Aufgabenliste ausblenden`}},view:{rename:`Umbenennen`,duplicateView:`Ansicht duplizieren`,shareView:`Ansicht teilen`,setAsDefault:`Als Standard festlegen`,pinView:`Ansicht anheften`,unpinView:`Ansicht lösen`,changeViewType:`Ansichtstyp ändern`,deleteView:`Ansicht löschen`,addView:`Ansicht hinzufügen`,unsavedChanges:`Ungespeicherte Änderungen`,saveAsView:`Als Ansicht speichern`,moreViews:`{{count}} weitere`,activeFilters:`Filter aktiv`,activeSort:`Sortierung aktiv`,manageViews:`Ansichten verwalten`,manageAllViews:`Alle Ansichten verwalten…`,searchViews:`Ansichten suchen`,addNewView:`Neue Ansicht hinzufügen`,done:`Fertig`,noViewsFound:`Keine Ansichten entsprechen Ihrer Suche.`,dragToReorder:`Zum Neuanordnen ziehen`,defaultView:`Standardansicht`,tabActionsFor:`Ansichtsaktionen für {{name}}`,readonlyAriaLabel:`Schreibgeschützte Ansicht`,readonlyTooltip:`Systemansicht — zum Anpassen duplizieren.`},detail:{back:`Zurück`,edit:`Bearbeiten`,editInline:`Bearbeiten`,save:`Speichern`,saveChanges:`Änderungen speichern`,editFieldsInline:`Felder bearbeiten`,share:`Teilen`,duplicate:`Duplizieren`,export:`Exportieren`,viewHistory:`Verlauf anzeigen`,delete:`Löschen`,moreActions:`Weitere Aktionen`,addToFavorites:`Zu Favoriten hinzufügen`,removeFromFavorites:`Aus Favoriten entfernen`,previousRecord:`Vorheriger Datensatz`,nextRecord:`Nächster Datensatz`,recordOf:`{{current}} von {{total}}`,recordNotFound:`Datensatz nicht gefunden`,recordNotFoundDescription:`Der gesuchte Datensatz existiert nicht oder wurde möglicherweise gelöscht.`,goBack:`Zurück`,details:`Details`,related:`Verknüpft`,relatedRecords:`{{count}} Datensätze`,relatedRecordOne:`{{count}} Datensatz`,noRelatedRecords:`Keine verknüpften Datensätze gefunden`,loading:`Laden...`,copyToClipboard:`In Zwischenablage kopieren`,copied:`Kopiert!`,deleteConfirmation:`Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?`,editRecord:`Datensatz bearbeiten`,viewAll:`Alle anzeigen`,new:`Neu`,emptyValue:`—`,comments:`Kommentare`,searchComments:`Kommentare suchen…`,addCommentPlaceholder:`Kommentar hinzufügen… (Strg+Enter zum Senden)`,noMatchingComments:`Keine passenden Kommentare`,noCommentsYet:`Noch keine Kommentare`,pinned:`Angeheftet`,pin:`Anheften`,unpin:`Lösen`,justNow:`gerade eben`,minutesAgo:`vor {{count}} Min.`,hoursAgo:`vor {{count}} Std.`,daysAgo:`vor {{count}} Tg.`,dropFilesToUpload:`Dateien hierher ziehen oder klicken zum Hochladen`,attachmentCount:`{{count}} Anhang`,attachmentCountPlural:`{{count}} Anhänge`,removeAttachment:`Anhang entfernen`,unifiedDiff:`Einheitliche Ansicht`,sideBySideDiff:`Nebeneinander-Ansicht`,noChanges:`Keine Änderungen`,previousVersion:`Vorherige`,currentVersion:`Aktuelle`,discussion:`Diskussion`,showDiscussion:`Diskussion anzeigen ({{count}})`,hideDiscussion:`Diskussion ausblenden`,bold:`Fett (Strg+B)`,italic:`Kursiv (Strg+I)`,listFormat:`Liste`,inlineCode:`Inline-Code`,mentionSomeone:`Jemanden erwähnen`,preview:`Vorschau`,submitComment:`Senden (Strg+Enter)`,sendComment:`Senden`,writeComment:`Kommentar schreiben…`,subscribedTooltip:`Abonniert — Klicken zum Abbestellen`,unsubscribedTooltip:`Benachrichtigungen abonnieren`,firstRecord:`Erster Datensatz (Pos1)`,previousRecordKey:`Vorheriger Datensatz (←)`,nextRecordKey:`Nächster Datensatz (→)`,lastRecord:`Letzter Datensatz (Ende)`,noRecords:`Keine Datensätze`,searchWhileNavigating:`Während der Navigation suchen`,searchRecords:`Datensätze suchen…`,allActivity:`Alle Aktivitäten`,commentsOnly:`Nur Kommentare`,fieldChangesFilter:`Feldänderungen`,tasksOnly:`Nur Aufgaben`,leaveCommentPlaceholder:`Kommentar hinterlassen… (Strg+Enter zum Senden)`,noActivity:`Keine Aktivitäten aufgezeichnet`,loadMore:`Mehr laden`,edited:`(bearbeitet)`,via:`über {{source}}`,replyCount:`{{count}} Antwort`,replyCountPlural:`{{count}} Antworten`,replyPlaceholder:`Antworten…`,filterActivity:`Aktivität filtern`,openDiscussion:`Diskussionspanel öffnen`,closeDiscussion:`Diskussionspanel schließen`,subscribeAriaLabel:`Benachrichtigungen abonnieren`,unsubscribeAriaLabel:`Benachrichtigungen abbestellen`,clearSearch:`Suche löschen`,saving:`Speichern…`,lockedByApproval:`Zur Genehmigung gesperrt`,lockedTooltip:`Dieser Datensatz hat eine ausstehende Genehmigungsanfrage; die Bearbeitung ist gesperrt`,cancelApproval:`Genehmigung zurückziehen`,cancelApprovalInFlight:`Zurückziehen…`,cancelApprovalTooltip:`Ausstehende Genehmigungsanfrage zurückziehen, um den Datensatz zu entsperren`,cancelApprovalFailed:`Genehmigung konnte nicht zurückgezogen werden`,cancelApprovalUnavailable:`Das Zurückziehen von Genehmigungen wird bei dieser Datenquelle nicht unterstützt`,linkCopied:`Link in die Zwischenablage kopiert`,linkCopyFailed:`Link konnte nicht kopiert werden`,cancel:`Abbrechen`,cancelEdit:`Änderungen verwerfen`,sectionMoreDetails:`Weitere Details`,concurrentUpdateTitle:`Dieser Datensatz wurde von jemand anderem geändert`,concurrentUpdateDescription:`Ein anderer Benutzer hat während Ihrer Bearbeitung eine neuere Version von {{field}} gespeichert. Bitte wählen Sie, wie der Konflikt gelöst werden soll.`,concurrentUpdateYourEdit:`Ihre Bearbeitung`,concurrentUpdateCurrentValue:`Aktueller Wert`,concurrentUpdateUpdatedBy:`Aktualisiert von {{name}}`,concurrentUpdateUpdatedAt:`Aktualisiert am {{when}}`,concurrentUpdateReload:`Aktuelle Version laden`,concurrentUpdateOverwrite:`Trotzdem überschreiben`,concurrentUpdateCancel:`Abbrechen`,openInNewTab:`In neuem Tab öffnen`,activity:`Aktivität`,history:`Verlauf`,editRow:`Bearbeiten`,deleteRow:`Löschen`,deleteRowConfirmation:`Möchten Sie diesen Datensatz wirklich löschen?`,deleteRowTitle:`Datensatz löschen`,actions:`Aktionen`,previousPage:`Zurück`,nextPage:`Weiter`,pageOf:`Seite {{current}} von {{total}}`,sortBy:`Sortieren nach`,filterPlaceholder:`Filtern...`,highlightFields:`Schlüsselfelder`,createdBy:`Erstellt von`,updatedBy:`Aktualisiert von`,showEmptyRelated_one:`+ {{count}} leer`,showEmptyRelated_other:`+ {{count}} leer`,copyEmail:`E-Mail kopieren`,copyPhone:`Telefonnummer kopieren`,copyRecordId:`Datensatz-ID kopieren`,showEmptyFields:`{{count}} leere Felder anzeigen`,hideEmptyFields:`Leere Felder ausblenden`,noValue:`Kein Wert`},chart:{noData:`Keine Diagrammdaten verfügbar`,loading:`Diagramm wird geladen...`},map:{searchLocations:`Orte suchen…`,locationDetails:`Standortdetails`,markersCount:`{{count}} Markierungen`,invalidCoordinates:`{{count}} Datensatz mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.`,invalidCoordinatesPlural:`{{count}} Datensätze mit fehlenden oder ungültigen Koordinaten von der Karte ausgeschlossen.`},workflow:{draft:`Entwurf`,active:`Aktiv`,paused:`Pausiert`,completed:`Abgeschlossen`,cancelled:`Abgebrochen`,save:`Speichern`,publish:`Veröffentlichen`,addNode:`Knoten hinzufügen`,workflowFlow:`Workflow-Ablauf`,properties:`Eigenschaften`,connections:`Verbindungen`,quickConnect:`Schnellverbindung`,fromPlaceholder:`Von...`,toPlaceholder:`Nach...`,connect:`Verbinden`,label:`Bezeichnung`,type:`Typ`,description:`Beschreibung`,assignee:`Zuständiger`,assigneeType:`Zuständigkeitstyp`,user:`Benutzer`,role:`Rolle`,group:`Gruppe`,expression:`Ausdruck`,timeoutMinutes:`Zeitlimit (Minuten)`,selectNodeToEdit:`Knoten auswählen, um Eigenschaften zu bearbeiten`,workflowTitle:`Workflow-Titel`,newWorkflow:`Neuer Workflow`,outConnections:`{{count}} Ausgänge`,start:`Start`,end:`Ende`,task:`Aufgabe`,userTask:`Benutzeraufgabe`,serviceTask:`Serviceaufgabe`,scriptTask:`Skriptaufgabe`,approval:`Genehmigung`,condition:`Bedingung`,parallelGateway:`Paralleles Gateway`,joinGateway:`Zusammenführungs-Gateway`,boundaryEvent:`Grenzereignis`,delay:`Verzögerung`,notification:`Benachrichtigung`,webhook:`Webhook`,allowConcurrency:`Erlauben (gleichzeitig ausführen)`,forbidConcurrency:`Verbieten (neue überspringen)`,replaceConcurrency:`Ersetzen (bestehende abbrechen)`,queueConcurrency:`Warteschlange (nach aktuellem ausführen)`,conditionEvent:`Bedingung`,manualEvent:`Manuell`,webhookEvent:`Webhook`,timerEvent:`Timer`,signalEvent:`Signal`,versionHistory:`Versionshistorie`,importBpmn:`BPMN importieren`,exportBpmn:`BPMN exportieren`,undo:`Rückgängig`,redo:`Wiederholen`,resetZoom:`Zoom zurücksetzen`},dashboard:{addWidget:`Widget hinzufügen`,removeWidget:`Widget entfernen`,editLayout:`Layout bearbeiten`,saveLayout:`Layout speichern`,resetLayout:`Layout zurücksetzen`,total:`Gesamt`,noDataAvailable:`Keine Daten verfügbar`,noDataSourceFor:`Keine Datenquelle verfügbar für`,trend:{vsLastQuarter:`vs. letztes Quartal`,vsLastMonth:`vs. letzten Monat`,vsLastWeek:`vs. letzte Woche`,vsLastYear:`vs. letztes Jahr`,vsYesterday:`vs. gestern`,vsPreviousPeriod:`vs. vorherige Periode`}},configPanel:{save:`Speichern`,discard:`Verwerfen`,close:`Schließen`,layout:`Layout`,columns:`Spalten`,gap:`Abstand`,rowHeight:`Zeilenhöhe`,data:`Daten`,refreshInterval:`Aktualisierungsintervall`,appearance:`Darstellung`,title:`Titel`,showDescription:`Beschreibung anzeigen`,theme:`Design`,configuration:`Konfiguration`,general:`Allgemein`,advanced:`Erweitert`},appDesigner:{createApp:`Anwendung erstellen`,editApp:`Anwendung bearbeiten`,basicInfo:`Grundlegende Infos`,objects:`Objekte`,navigation:`Navigation`,branding:`Branding`,appName:`App-Name`,appTitle:`Titel`,appDescription:`Beschreibung`,appIcon:`Symbol`,template:`Vorlage`,layout:`Layout`,layoutSidebar:`Seitenleiste`,layoutHeader:`Kopfzeile`,layoutEmpty:`Leer`,selectObjects:`Objekte auswählen`,searchObjects:`Objekte suchen…`,selectAll:`Alle auswählen`,deselectAll:`Alle abwählen`,navBuilder:`Navigations-Builder`,addGroup:`Gruppe hinzufügen`,addUrl:`URL hinzufügen`,addSeparator:`Trenner hinzufügen`,noNavItems:`Noch keine Navigationselemente.`,logoUrl:`Logo-URL`,primaryColor:`Primärfarbe`,faviconUrl:`Favicon-URL`,preview:`Vorschau`,complete:`Fertigstellen`,snakeCaseHint:`Muss snake_case sein (z.B. my_app)`,modeEdit:`Bearbeiten`,modePreview:`Vorschau`,modeCode:`Code`,addWidget:`Widget hinzufügen`,widgetProperties:`Widget-Eigenschaften`,dataSource:`Datenquelle`,valueField:`Wertfeld`,aggregate:`Aggregat`,colorVariant:`Farbvariante`,addComponent:`Komponente hinzufügen`,componentProperties:`Komponenteneigenschaften`,viewType:`Ansichtstyp`,fields:`Felder`,toolbar:`Symbolleiste`,showSearch:`Suche anzeigen`,showFilters:`Filter anzeigen`,showSort:`Sortierung anzeigen`,appearance:`Erscheinungsbild`,rowHeight:`Zeilenhöhe`,stripedRows:`Gestreifte Zeilen`,bordered:`Umrandet`,livePreview:`Echtzeit-Vorschau`,stepBasicDesc:`Name, Titel und Layout`,stepObjectsDesc:`Geschäftsobjekte auswählen`,stepNavigationDesc:`Navigationsbaum erstellen`,stepBrandingDesc:`Logo, Farben und Favicon`,noObjectsFound:`Keine Objekte gefunden.`,noNavItemsHint:`Noch keine Navigationselemente. Wählen Sie Objekte im vorherigen Schritt aus oder fügen Sie manuell hinzu.`,separator:`Trennlinie`,separatorLabel:`— Trennlinie —`,newGroup:`Neue Gruppe`,newLink:`Neuer Link`,saveDraft:`Entwurf speichern`,cancelConfirmTitle:`Änderungen verwerfen?`,cancelConfirmMessage:`Sie haben ungespeicherte Änderungen. Möchten Sie wirklich abbrechen?`,confirmDiscard:`Verwerfen`,keepEditing:`Weiter bearbeiten`,navNoItems:`Keine Navigationselemente. Klicken Sie auf die Schaltflächen oben, um Elemente hinzuzufügen.`,navNoPreviewItems:`Keine Elemente`,navLivePreview:`Live-Vorschau`,navCollapseGroup:`Gruppe einklappen`,navExpandGroup:`Gruppe ausklappen`,navAddChild:`Unterelement hinzufügen`,navMoveUp:`Nach oben`,navMoveDown:`Nach unten`,navRemove:`Entfernen`,navObjectPage:`Objektseite`,navDashboard:`Dashboard`,navPage:`Seite`,navReport:`Bericht`,navGroup:`Gruppe`,navUrl:`URL`,navSeparator:`Trenner`,navTypeObject:`Objekt`,navTypeDashboard:`Dashboard`,navTypePage:`Seite`,navTypeReport:`Bericht`,navTypeUrl:`URL`,navTypeGroup:`Gruppe`,navTypeSeparator:`Trenner`,navTypeAction:`Aktion`,navEditIcon:`Symbol bearbeiten`,navToggleVisible:`Sichtbarkeit umschalten`,navHidden:`Ausgeblendet`,navExportSchema:`JSON exportieren`,navImportSchema:`JSON importieren`,navExportSuccess:`Navigationsschema exportiert`,navImportSuccess:`Navigationsschema importiert`,navImportError:`Ungültiges Navigations-JSON`,navIconPlaceholder:`Symbolname (z.B. Users)`,dashboardEditor:`Dashboard-Editor`,noWidgets:`Keine Widgets. Klicken Sie oben auf einen Button, um eines hinzuzufügen.`,widgetLayoutSize:`Layout-Größe`,widgetWidth:`Breite`,widgetHeight:`Höhe`,dashboardPreview:`Dashboard-Vorschau`,noWidgetsPreview:`Keine Widgets zum Vorschauen`,pageCanvasEditor:`Seiten-Canvas-Editor`,emptyPage:`Leere Seite. Klicken Sie oben auf einen Button, um eine Komponente hinzuzufügen.`,pagePreview:`Seiten-Vorschau`,noComponentsPreview:`Keine Komponenten zum Vorschauen`,modePage:`Seite`,modeDashboard:`Dashboard`,undo:`Rückgängig`,redo:`Wiederholen`,brandingEditor:`Branding-Editor`,brandingExport:`JSON exportieren`,brandingImport:`JSON importieren`,brandingPreview:`Vorschau`,brandingSampleButton:`Beispiel-Schaltfläche`,brandingSampleText:`So wird Ihr Markenthema aussehen.`,colorPalette:`Farbpalette`,fontFamily:`Schriftfamilie`,fontDefault:`Standard (System)`,modeLight:`Hell`,modeDark:`Dunkel`,mobilePreview:`Mobil-Vorschau`,objectManager:{title:`Objekt-Manager`,addObject:`Neues Objekt`,searchPlaceholder:`Objekte suchen…`,noObjects:`Keine Objekte gefunden.`,objectName:`API-Name`,objectLabel:`Bezeichnung`,pluralLabel:`Pluralbezeichnung`,icon:`Symbol`,selectIcon:`Symbol auswählen…`,group:`Gruppe`,noGroup:`Keine Gruppe`,sortOrder:`Sortierreihenfolge`,enabled:`Aktiviert`,relationships:`Beziehungen`,systemBadge:`System`,fieldCount:`{{count}} Felder`,ungrouped:`Ohne Gruppe`,deleteConfirmTitle:`Objekt löschen?`,deleteConfirmMessage:`Dadurch wird das Objekt und alle seine Felder dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`},fieldDesigner:{title:`Feld-Designer`,addField:`Neues Feld`,searchPlaceholder:`Felder suchen…`,allTypes:`Alle Typen`,noFields:`Keine Felder gefunden.`,fieldName:`API-Name`,fieldLabel:`Bezeichnung`,fieldType:`Typ`,fieldGroup:`Gruppe`,description:`Beschreibung`,required:`Erforderlich`,unique:`Eindeutig`,readOnly:`Nur lesen`,hidden:`Ausgeblendet`,indexed:`Indiziert`,externalId:`Externe ID`,trackHistory:`Verlauf verfolgen`,defaultValue:`Standardwert`,placeholder:`Platzhalter`,referenceTo:`Verweis auf`,formula:`Formel`,options:`Optionen`,addOption:`Option hinzufügen`,validationRules:`Validierungsregeln`,addRule:`Regel hinzufügen`,systemBadge:`System`,ungrouped:`Allgemein`,deleteConfirmTitle:`Feld löschen?`,deleteConfirmMessage:`Das Feld wird dauerhaft gelöscht. Vorhandene Daten in diesem Feld gehen verloren.`,basicSection:`Grundlagen`,typeSpecificSection:`Typeinstellungen`,advancedSection:`Erweitert`,typeCategory:{text:`Text`,number:`Zahl`,date:`Datum & Uhrzeit`,choice:`Auswahl`,relation:`Beziehung`,advanced:`Erweitert`}}},console:{title:`ObjectStack Konsole`,initializing:`Anwendung wird initialisiert...`,breadcrumb:{dashboards:`Dashboards`,pages:`Seiten`,reports:`Berichte`,system:`System`},loadingSteps:{connecting:`Verbindung zur Datenquelle herstellen`,loadingConfig:`Konfiguration laden`,preparingWorkspace:`Arbeitsbereich vorbereiten`},error:{connectionFailed:`Verbindung zum Server nicht möglich`,serverUnreachable:`Der Server {{url}} ist nicht erreichbar.`,checkServer:`Bitte prüfen Sie Ihre Netzwerkverbindung oder ob das Backend läuft.`,timeout:`Zeitüberschreitung der Verbindung nach 10 Sekunden.`},actions:{retry:`Erneut versuchen`,retrying:`Wird wiederholt…`},shortcuts:{title:`Tastenkürzel`,description:`Kurzreferenz für alle verfügbaren Tastenkürzel.`,groups:{general:`Allgemein`,navigation:`Navigation`,dataViews:`Datenansichten`,preferences:`Einstellungen`},openCommandPalette:`Befehlspalette öffnen`,showShortcuts:`Tastenkürzel anzeigen`,closeDialog:`Dialog / Panel schließen`,toggleSidebar:`Seitenleiste umschalten`,focusSearch:`Suche fokussieren`,createRecord:`Neuen Datensatz erstellen`,refreshData:`Daten aktualisieren`,editRecord:`Ausgewählten Datensatz bearbeiten`,toggleDarkMode:`Dunkelmodus umschalten`},commandPalette:{placeholder:`Befehl eingeben oder suchen...`,noResults:`Keine Ergebnisse gefunden.`,objects:`Objekte`,dashboards:`Dashboards`,pages:`Seiten`,reports:`Berichte`,switchApp:`App wechseln`,current:`Aktuell`,preferences:`Einstellungen`,lightTheme:`Helles Design`,darkTheme:`Dunkles Design`,systemTheme:`Systemdesign`,actions:`Aktionen`,openFullSearch:`Vollständige Suchseite öffnen`,createApp:`Neue App erstellen`,searching:`Suche…`,records:`Datensätze`,recentRecords:`Zuletzt angesehen`},errors:{somethingWentWrong:`Etwas ist schiefgelaufen`,unexpectedError:`Beim Rendern dieser Ansicht ist ein unerwarteter Fehler aufgetreten.`,tryAgain:`Erneut versuchen`,goHome:`Zur Startseite`,errorDetails:`Fehlerdetails (nur Entwicklung)`},theme:{toggle:`Design umschalten`,light:`Hell`,dark:`Dunkel`,system:`System`},objectView:{objectNotFound:`Objekt nicht gefunden`,objectNotFoundDescription:`Das Objekt „{{objectName}}" existiert in der aktuellen Konfiguration nicht.`,objectNotFoundHint:`Überprüfen Sie Ihre App-Navigationseinstellungen oder wählen Sie ein anderes Objekt aus der Seitenleiste.`,allRecords:`Alle Datensätze`,exitDesignMode:`Designmodus beenden`,enterDesignMode:`Designmodus starten`,metadataInspector:`Metadaten-Inspektor`,editView:`Ansicht bearbeiten`,addView:`Ansicht hinzufügen`,designTools:`Design-Werkzeuge`,new:`Neu`,configureView:`Ansicht konfigurieren`,closePanel:`Panel schließen`,page:`Seite`,pageConfigHint:`Symbolleiste, Navigation & Ansichts-Shell-Einstellungen`,listConfigHint:`Daten-Rendering, Spalten & Erscheinungsbild für diesen Listentyp`,general:`Allgemein`,generalHint:`Ansichtstitel, Beschreibung und Typ`,toolbar:`Symbolleiste`,toolbarHint:`Suche, Filter, Sortierung, Gruppierung und Dichteumschaltung`,toolbarEnabledCount:`{{count}} von {{total}} aktiviert`,navigationSection:`Navigation`,navigationHint:`Zeilenklickverhalten und Detailansichtseinstellungen`,records:`Datensätze`,recordsHint:`Auswahlmodus, Datensatz hinzufügen und Inline-Bearbeitung`,exportPrint:`Export & Drucken`,exportPrintHint:`Exportformate, Drucken und Anzeige der Datensatzanzahl`,showAllFields:`Alle anzeigen`,hideAllFields:`Alle ausblenden`,searchFields:`Felder suchen...`,title:`Titel`,description:`Beschreibung`,data:`Daten`,source:`Quelle`,columns:`Spalten`,filterBy:`Filtern nach`,sortBy:`Sortieren nach`,appearance:`Darstellung`,showDescription:`Beschreibung anzeigen`,viewType:`Ansichtstyp`,userFilters:`Benutzerfilter`,enableSearch:`Suche aktivieren`,enableFilter:`Filter aktivieren`,enableSort:`Sortierung aktivieren`,enableHideFields:`Felder ausblenden aktivieren`,enableGroup:`Gruppierung aktivieren`,enableColor:`Farbe aktivieren`,enableDensity:`Dichte aktivieren`,userActions:`Benutzeraktionen`,addRecordViaForm:`Datensätze über Formular hinzufügen`,advanced:`Erweitert`,allowExport:`Export erlauben`,recordCount:`{{count}} Datensätze`,noDescription:`Keine Beschreibung`,none:`Keine`,columnsConfigured:`{{count}} Spalten`,save:`Speichern`,discard:`Verwerfen`,createView:`Ansicht erstellen`,newView:`Neue Ansicht`,typeOptions:`Typoptionen`,groupByField:`Gruppierungsfeld`,startDateField:`Startdatumsfeld`,titleField:`Titelfeld`,latitudeField:`Breitengradfeld`,longitudeField:`Längengradfeld`,imageField:`Bildfeld`,dateField:`Datumsfeld`,selectField:`Feld auswählen...`,gridOptionsHint:`Die Tabellenansicht verwendet die oben konfigurierten Spalten.`,groupBy:`Gruppieren nach`,prefixField:`Präfixfeld`,fields:`Felder`,fieldsVisible:`{{count}} sichtbar`,sortsCount:`{{count}} Sortierungen`,filtersCount:`{{count}} Filter`,endDateField:`Enddatumsfeld`,color:`Farbe`,fieldTextColor:`Feldtextfarbe`,rowHeight:`Zeilenhöhe`,wrapHeaders:`Kopfzeilen umbrechen`,showFieldDescriptions:`Feldbeschreibungen anzeigen`,collapseAllByDefault:`Standardmäßig alle einklappen`,striped:`Gestreifte Zeilen`,bordered:`Umrandete Zellen`,inlineEdit:`Datensätze inline bearbeiten`,addDeleteRecordsInline:`Datensätze inline hinzufügen/löschen`,clickIntoRecordDetails:`Klicken für Datensatzdetails`,navigationMode:`Navigationsmodus`,navigationWidth:`Navigationsbreite`,navigationWidthHint:`Verfügbar für Schublade-, Modal- und Split-Navigationsmodi`,openNewTab:`In neuem Tab öffnen`,openNewTabHint:`Verfügbar für Seiten- und Neues-Fenster-Navigationsmodi`,import:`Importieren`,importTitle:`Aus CSV importieren`,importedToast:`{{count}} Zeile(n) importiert.`,importedWithSkipped:`{{ok}} Zeile(n) importiert; {{skipped}} übersprungen.`,showAdvancedSettings:`Erweiterte Einstellungen anzeigen`,showFewerSettings:`Weniger Einstellungen anzeigen`,createViewDesc:`Wählen Sie einen Ansichtstyp und geben Sie ihm einen Namen. Alle Einstellungen können danach geändert werden.`,cancel:`Abbrechen`,create:`Erstellen`,delete:`Löschen`,deleteViewTitle:`Ansicht löschen`,deleteViewConfirm:`Möchten Sie die Ansicht „{{name}}" wirklich löschen? Dies kann nicht rückgängig gemacht werden.`,bulkDeleteConfirm:`{{count}} ausgewählte Datensätze löschen? Dies kann nicht rückgängig gemacht werden.`,duplicateViewName:`Eine Ansicht mit diesem Namen existiert bereits.`,viewTypeGrid:`Raster`,viewTypeGridDesc:`Tabellenkalkulationsartige Tabelle von Datensätzen.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Karten nach einem Einzelauswahlfeld in Spalten gruppiert.`,viewTypeCalendar:`Kalender`,viewTypeCalendarDesc:`Datensätze nach Datum in einem Monatskalender platziert.`,viewTypeGallery:`Galerie`,viewTypeGalleryDesc:`Große Bildkarten aus einem Anhangfeld.`,viewTypeTimeline:`Zeitstrahl`,viewTypeTimelineDesc:`Datensätze entlang einer horizontalen Zeitachse.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Projektbalken mit Start/Ende und Abhängigkeiten.`,viewTypeMap:`Karte`,viewTypeMapDesc:`Geografische Markierungen aus Breiten-/Längengradfelderm.`,viewTypeChart:`Diagramm`,viewTypeChartDesc:`Aggregierte Balken-/Linien-/Kreisdiagramme.`,groupByFieldHelp:`Das Kanban-Board gruppiert Datensätze anhand der Feldwerte in Spalten.`,startDateFieldHelp:`Der Kalender platziert Datensätze auf der Zelle, die diesem Datum entspricht.`,ganttStartDateFieldHelp:`Der linke Rand jedes Gantt-Balkens verwendet dieses Datum.`,ganttEndDateFieldHelp:`Der rechte Rand jedes Gantt-Balkens verwendet dieses Datum.`,timelineDateFieldHelp:`Datensätze werden anhand dieses Datums im Zeitstrahl platziert.`,latitudeFieldHelp:`Feld mit dem Breitengrad (nur Geo-Felder).`,longitudeFieldHelp:`Feld mit dem Längengrad (nur Geo-Felder).`,imageFieldHelp:`Das Galerie-Cover kommt aus diesem Bild- oder Anhangfeld.`,selectOption:`Auswählen...`,noEligibleFieldForType:`Kein geeignetes Feld dieses Typs. Fügen Sie zuerst eines zum Objekt hinzu.`,viewTypeUnavailable:`Dieses Objekt hat kein Feld, das als „{{field}}" dienen kann.`,viewTypeUnavailableShort:`Nicht von diesem Objekt unterstützt.`,chartType:`Diagrammtyp`,chartTypeHelp:`Bestimmt, wie die Daten gerendert werden.`,chartTypeBar:`Balkendiagramm`,chartTypeLine:`Liniendiagramm`,chartTypePie:`Kreisdiagramm`,chartTypeArea:`Flächendiagramm`,chartTypeScatter:`Streudiagramm`,xAxisField:`X-Achse-Feld`,xAxisFieldHelp:`Die kategoriale oder zeitliche Dimension.`,yAxisField:`Y-Achse-Feld`,yAxisFieldHelp:`Das numerische Feld zur Aggregation.`,selectionMode:`Auswahlmodus`,selectionNone:`Keine`,selectionSingle:`Einzeln`,selectionMultiple:`Mehrfach`,pageSize:`Seitengröße`,pageSizeOptions:`Seitengrößenoptionen`,exportFormats:`Exportformate`,exportMaxRecords:`Maximale Datensätze`,exportIncludeHeaders:`Kopfzeilen einschließen`,exportFileNamePrefix:`Dateinamenpräfix`,searchableFields:`Durchsuchbare Felder`,filterableFields:`Filterbare Felder`,resizableColumns:`Größenveränderbare Spalten`,densityCompact:`Kompakt`,densityComfortable:`Normal`,densitySpacious:`Großzügig`,densityMode:`Dichtemodus`,hiddenFields:`Ausgeblendete Felder`,rowActions:`Zeilenaktionen`,bulkActions:`Massenaktionen`,sharing:`Teilen`,sharingEnabled:`Teilen aktivieren`,sharingVisibility:`Sichtbarkeit`,addRecordEnabled:`Datensatz hinzufügen aktivieren`,addRecordPosition:`Position`,addRecordMode:`Modus`,addRecordFormView:`Formularansicht`,conditionalFormatting:`Bedingte Formatierung`,addRule:`Regel hinzufügen`,quickFilters:`Schnellfilter`,addQuickFilter:`Schnellfilter hinzufügen`,ufElements:`Elemente`,ufDropdown:`Dropdown`,ufTabs:`Registerkarten`,ufToggle:`Umschalten`,ufAddField:`+ Filterfeld hinzufügen...`,ufNoFields:`Keine Felder verfügbar`,ufAddTab:`+ Registerkarte hinzufügen`,ufTabLabel:`Bezeichnung`,ufShowAllRecords:`Registerkarte „Alle Datensätze" anzeigen`,ufAllowAddTab:`Registerkarten hinzufügen erlauben`,showRecordCount:`Datensatzanzahl anzeigen`,allowPrinting:`Drucken erlauben`,virtualScroll:`Virtuelles Scrollen`,emptyStateTitle:`Leerzustands-Titel`,emptyStateMessage:`Leerzustands-Nachricht`,emptyStateIcon:`Leerzustands-Symbol`,ariaLabel:`ARIA-Bezeichnung`,ariaDescribedBy:`ARIA-Beschreibung`,ariaLive:`ARIA-Live`,accessibility:`Barrierefreiheit`,viewTabs:`Ansichts-Registerkarten`},localeSwitcher:{label:`Sprache`},search:`Suchen…`,nav:{pinItem:`{{name}} anheften`,unpinItem:`{{name}} loslösen`,dragToReorder:`Zum Neuanordnen ziehen`,favorites:`Favoriten`}},auth:{login:{title:`In Ihr Konto einloggen`,description:`Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein, um fortzufahren`,emailLabel:`E-Mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Passwort`,passwordPlaceholder:`Passwort eingeben`,forgotPasswordText:`Passwort vergessen?`,submitButton:`Anmelden`,submittingButton:`Anmeldung läuft...`,noAccountText:`Noch kein Konto?`,signUpText:`Registrieren`,errors:{invalidCredentials:`Ungültige E-Mail oder Passwort. Bitte erneut versuchen.`,emailNotVerified:`Bitte bestätigen Sie Ihre E-Mail-Adresse, bevor Sie sich anmelden.`}},register:{title:`Konto erstellen`,description:`Geben Sie Ihre Daten ein, um loszulegen`,nameLabel:`Name`,namePlaceholder:`Max Mustermann`,emailLabel:`E-Mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Passwort`,passwordPlaceholder:`Passwort erstellen (mind. 8 Zeichen)`,confirmPasswordLabel:`Passwort bestätigen`,confirmPasswordPlaceholder:`Passwort bestätigen`,passwordMismatchError:`Passwörter stimmen nicht überein`,passwordTooShortError:`Das Passwort muss mindestens 8 Zeichen lang sein`,submitButton:`Konto erstellen`,submittingButton:`Konto wird erstellt...`,hasAccountText:`Bereits ein Konto?`,signInText:`Anmelden`,errors:{userExists:`Ein Konto mit dieser E-Mail existiert bereits. Versuchen Sie sich anzumelden.`},verifyInbox:{title:`Überprüfen Sie Ihren Posteingang`,description:`Wir haben einen Bestätigungslink an {{email}} gesendet. Klicken Sie auf den Link, um Ihr Konto zu aktivieren.`,resend:`Bestätigungs-E-Mail erneut senden`,resending:`Sende…`,resent:`Bestätigungs-E-Mail gesendet.`,backToSignIn:`Zurück zur Anmeldung`}},forgotPassword:{title:`Passwort zurücksetzen`,description:`Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen einen Link zum Zurücksetzen Ihres Passworts`,emailLabel:`E-Mail`,emailPlaceholder:`name@example.com`,submitButton:`Link zum Zurücksetzen senden`,submittingButton:`Wird gesendet...`,successTitle:`Überprüfen Sie Ihre E-Mails`,successDescription:`Wir haben einen Link zum Zurücksetzen des Passworts an {{email}} gesendet. Bitte überprüfen Sie Ihren Posteingang.`,backToSignInText:`Zurück zur Anmeldung`,rememberPasswordText:`Passwort doch bekannt?`,signInText:`Anmelden`},resetPassword:{title:`Neues Passwort festlegen`,description:`Wählen Sie ein Passwort, das Sie noch nicht verwendet haben.`,newPassword:`Neues Passwort`,confirmPassword:`Passwort bestätigen`,submit:`Passwort aktualisieren`,submitting:`Aktualisiere…`,success:`Passwort aktualisiert`,failed:`Zurücksetzen fehlgeschlagen`,invalidToken:`Dieser Reset-Link ist ungültig oder abgelaufen.`,missingToken:`Reset-Link fehlt oder ist abgelaufen`,passwordsMismatch:`Passwörter stimmen nicht überein`,requestNewLink:`Neuen Link anfordern`},verifyEmail:{title:`E-Mail-Adresse bestätigen`,description:`Wir haben einen Bestätigungslink an Ihre E-Mail-Adresse gesendet. Klicken Sie auf den Link, um Ihr Konto zu bestätigen.`,sentTo:`Gesendet an:`,verifyingTitle:`Bestätigung…`,verifyingDescription:`Wir bestätigen Ihre E-Mail. Bitte warten.`,successTitle:`E-Mail bestätigt`,successDescription:`Ihre E-Mail wurde bestätigt. Sie können sich jetzt anmelden.`,errorTitle:`Bestätigung fehlgeschlagen`,errorDescription:`Bestätigung fehlgeschlagen. Bitte fordern Sie einen neuen Link an.`,missingToken:`Im Bestätigungslink fehlt ein Token.`,emailMissing:`E-Mail-Adresse fehlt`,resendButton:`Bestätigungs-E-Mail erneut senden`,resending:`Sende…`,resent:`E-Mail gesendet! Überprüfen Sie Ihren Posteingang`,resentSuccess:`Bestätigungs-E-Mail gesendet!`,resentDescription:`Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Bestätigungslink.`,resendFailed:`Bestätigungs-E-Mail kann nicht erneut gesendet werden`,signInLink:`Zur Anmeldung`,backToSignIn:`Zurück zur Anmeldung`,backToLogin:`Zurück zum Login`,checkSpam:`E-Mail nicht erhalten? Überprüfen Sie Ihren Spam-Ordner oder kontaktieren Sie den Support.`,or:`Oder`},setup:{welcomeTitle:`Willkommen bei ObjectStack`,description:`Erstellen Sie das erste Eigentümerkonto, um die Einrichtung abzuschließen.`,yourName:`Ihr Name`,orgName:`Organisationsname`,orgNamePlaceholder:`Muster GmbH`,emailLabel:`E-Mail`,emailPlaceholder:`name@beispiel.de`,passwordLabel:`Passwort`,passwordHint:`Mindestens 8 Zeichen`,submit:`Eigentümerkonto erstellen`,submitting:`Einrichten…`,failed:`Einrichtung fehlgeschlagen`},device:{title:`Neues Gerät autorisieren`,subtitle:`Genehmigen Sie dieses Gerät für die Anmeldung als {{email}}.`,userCodeLabel:`Gerätecode`,loggedInAs:`Angemeldet als {{email}}`,approve:`Gerät genehmigen`,approving:`Genehmige…`,approvedTitle:`Gerät autorisiert`,approvedDescription:`Sie können zum Gerät zurückkehren — es sollte sich in Kürze anmelden.`,approveSuccess:`Gerät autorisiert`,approveSuccessDescription:`Sie können dieses Fenster schließen.`,approveFailed:`Genehmigung fehlgeschlagen`,deny:`Anfrage ablehnen`,denying:`Ablehne…`,deniedTitle:`Zugriff verweigert`,deniedDescription:`Dem Gerät wird kein Zugriff gewährt.`,denyFailed:`Anfrage konnte nicht abgelehnt werden`,invalidTitle:`Ungültiger Gerätelink`,invalidDescription:`In der URL wurde kein Gerätecode angegeben.`,loading:`Lade…`,cancel:`Abbrechen`},shell:{tenantHostHint:`Sie melden sich bei diesem Arbeitsbereich an`}},errors:{networkError:`Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.`,serverError:`Serverfehler. Bitte versuchen Sie es später erneut.`,notFound:`Ressource nicht gefunden.`,unauthorized:`Sie sind nicht berechtigt, diese Aktion auszuführen.`,forbidden:`Zugriff verweigert.`,timeout:`Zeitüberschreitung. Bitte versuchen Sie es erneut.`,unknown:`Ein unerwarteter Fehler ist aufgetreten.`},workspace:{label:`Arbeitsbereiche`,default:`Mein Arbeitsbereich`,switch:`Arbeitsbereich wechseln`,create:`Arbeitsbereich erstellen`,createTitle:`Arbeitsbereich erstellen`,createDescription:`Ein Arbeitsbereich ist ein gemeinsamer Raum für Ihr Team zur Zusammenarbeit.`,createButton:`Arbeitsbereich erstellen`,nameLabel:`Name des Arbeitsbereichs`,namePlaceholder:`z.B. Acme Inc`,slugLabel:`URL-Slug`,slugHint:`In URLs verwendet. Nur Kleinbuchstaben, Zahlen und Bindestriche.`,invite:`Mitglied einladen`,members:`Mitglieder`,settings:`Arbeitsbereichseinstellungen`},sidebar:{settings:`Einstellungen`,help:`Hilfe`,helpTooltip:`Hilfe und Dokumentation`,activityFeed:`Aktivitätsfeed`,notifications:`Benachrichtigungen`,approvals:`Genehmigungen`,inbox:`Posteingang`,inboxAriaLabel:`Posteingang öffnen`,area:`Bereich`,recent:`Zuletzt`,favorites:`Favoriten`,starred:`Markiert`,removeFromFavorites:`{{name}} aus Favoriten entfernen`},home:{title:`Startseite`,subtitle:`Ihr Arbeitsbereich-Dashboard`,nav:`Startseite`,allApps:`Alle Anwendungen`,loading:`Arbeitsbereich wird geladen...`,recent:`Kürzlich`,starred:`Mit Stern`,welcome:`Willkommen bei ObjectUI`,welcomeDescription:`Erstellen Sie zunächst Ihre erste Anwendung oder konfigurieren Sie Ihre Systemeinstellungen.`,createFirstApp:`Erstellen Sie Ihre erste App`,systemSettings:`Systemeinstellungen`,browseMarketplace:`App-Marktplatz durchsuchen`,quickActions:{title:`Schnellaktionen`,createApp:`App erstellen`,createAppDesc:`Beginnen Sie mit einer neuen Anwendung`,manageObjects:`Objekte verwalten`,manageObjectsDesc:`Datenmodelle konfigurieren`,systemSettings:`Systemeinstellungen`,systemSettingsDesc:`Konfigurieren Sie Ihren Arbeitsbereich`},appCard:{noDescription:`Keine Beschreibung`,default:`Standard`},greetingMorning:`Guten Morgen`,greetingAfternoon:`Guten Nachmittag`,greetingEvening:`Guten Abend`,greetingNight:`Nachtschicht`,heroTagline:`Machen Sie dort weiter, wo Sie aufgehört haben, oder entdecken Sie etwas Neues.`,open:`Öffnen`,stats:{apps:`Anwendungen`,starred:`Markiert`,recent:`Zuletzt verwendet`},recentApps:{title:`Zuletzt geöffnet`,itemType:{object:`Objekt`,dashboard:`Dashboard`,page:`Seite`,record:`Datensatz`}},starredApps:{title:`Markiert`},gettingStarted:{title:`Startseite anpassen`,description:`Markieren Sie eine App, um sie hier anzuheften und mit einem Klick darauf zuzugreifen. Alles, was Sie öffnen, wird automatisch unter „Zuletzt geöffnet" angezeigt.`,cta:`Alle Anwendungen durchsuchen`}},layout:{appSwitcher:{home:`Startseite`,addApp:`App hinzufügen`,editApp:`App bearbeiten`,manageAllApps:`Alle Apps verwalten`,systemConsole:`Systemkonsole`,noAppsConfigured:`Keine Apps konfiguriert`},activityFeed:{title:`Letzte Aktivitäten`,filter:`Filtern`,empty:`Keine letzten Aktivitäten`,ariaLabel:`Aktivitätsfeed`,typeCreate:`Erstellen`,typeUpdate:`Aktualisieren`,typeDelete:`Löschen`,typeComment:`Kommentar`,relativeJustNow:`gerade eben`,relativeSecondsAgo:`vor {{count}}s`,relativeMinutesAgo:`vor {{count}}m`,relativeHoursAgo:`vor {{count}}h`,relativeDaysAgo:`vor {{count}}d`,viewAll:`Alle Aktivitäten anzeigen`},metadata:{label:`Metadaten`,toggleTitle:`Metadaten-Inspektor umschalten`,panelTitle:`Metadaten-Inspektor`,jsonBadge:`JSON`,copyJson:`JSON kopieren`}},search:{title:`Suche`,back:`Zurück`,placeholder:`Objekte, Dashboards, Seiten, Berichte suchen...`,inputAriaLabel:`Objekte, Dashboards, Seiten, Berichte suchen`,resultsCount:`{{count}} Ergebnis für „{{query}}"`,resultsCountPlural:`{{count}} Ergebnisse für „{{query}}"`,itemsAvailable:`{{count}} Elemente verfügbar`,noResults:`Keine Ergebnisse gefunden`,noResultsHint:`Versuchen Sie, Ihre Suchbegriffe anzupassen`,typeObjects:`Objekte`,typeDashboards:`Dashboards`,typePages:`Seiten`,typeReports:`Berichte`,badgeObject:`Objekt`,badgeDashboard:`Dashboard`,badgePage:`Seite`,badgeReport:`Bericht`},empty:{objectNotFound:`Objekt nicht gefunden`,objectNotFoundDescription:`Definition des Objekts „{{name}}" fehlt. Überprüfen Sie Ihre Konfiguration oder navigieren Sie zurück.`,pageNotFound:`Seite nicht gefunden`,pageNotFoundDescription:`Die Seite „{{name}}" wurde nicht gefunden. Sie wurde möglicherweise entfernt oder umbenannt.`,dashboardNotFound:`Dashboard nicht gefunden`,dashboardNotFoundDescription:`Das Dashboard „{{name}}" wurde nicht gefunden. Es wurde möglicherweise entfernt oder umbenannt.`,reportNotFound:`Bericht nicht gefunden`,reportNotFoundDescription:`Der Bericht „{{name}}" wurde nicht gefunden. Er wurde möglicherweise entfernt oder umbenannt.`,noAppsConfigured:`Keine Apps konfiguriert`,noAppsConfiguredDescription:`Es sind keine Anwendungen registriert. Erstellen Sie Ihre erste App oder besuchen Sie die Systemeinstellungen.`,createFirstApp:`Erste App erstellen`,systemSettings:`Systemeinstellungen`,back:`Zurück`,recordNotFound:`Datensatz nicht gefunden`,recordNotFoundDescription:`Der gesuchte Datensatz existiert nicht oder wurde möglicherweise gelöscht.`},renderer:{noPageSchema:`Kein Seitenschema angegeben`,noFormSchema:`Kein Formularschema angegeben`,noDashboardSchema:`Kein Dashboard-Schema angegeben`,pageRendering:`Seite wird gerendert: {{name}}`,dashboardRendering:`Dashboard wird gerendert: {{name}}`,formRenderingMode:`Formular wird im {{mode}}-Modus gerendert`,formRenderingFor:`für Datensatz {{id}}`,createRecord:`Datensatz erstellen`,editRecord:`Datensatz bearbeiten`,page:`Seite`,dashboard:`Dashboard`,save:`Speichern`,cancel:`Abbrechen`},actionDialog:{title:`Aktionsparameter`,description:`Bitte geben Sie die erforderlichen Informationen ein, um fortzufahren.`,selectPlaceholder:`{{label}} auswählen`,requiredError:`{{label}} ist erforderlich`,cancel:`Abbrechen`,confirm:`Bestätigen`,defaultActionTitle:`Aktion`,ok:`OK`,lookupPlaceholder:`Datensatz-ID (UUID) für {{label}} einfügen`,lookupHelpText:`Geben Sie die Datensatz-ID des referenzierten Objekts ein. Eine Auswahlhilfe kommt bald.`},rowAction:{openMenu:`Menü öffnen`,edit:`Bearbeiten`,delete:`Löschen`},navigationSync:{addedPage:`Navigation aktualisiert: Seite „{{name}}" hinzugefügt`,addedDashboard:`Navigation aktualisiert: Dashboard „{{name}}" hinzugefügt`,removedPage:`Navigation aktualisiert: Seite „{{name}}" entfernt`,removedDashboard:`Navigation aktualisiert: Dashboard „{{name}}" entfernt`,renamedPage:`Navigation aktualisiert: Seite „{{oldName}}" in „{{newName}}" umbenannt`,renamedDashboard:`Navigation aktualisiert: Dashboard „{{oldName}}" in „{{newName}}" umbenannt`,undoLabel:`Rückgängig`,undone:`Navigationsänderung rückgängig gemacht`,undoFailed:`Navigationsänderung konnte nicht rückgängig gemacht werden`,updateFailed:`Navigation konnte nicht aktualisiert werden`},objectActions:{deleteSuccess:`{{label}} erfolgreich gelöscht`,deleteFailed:`{{label}} konnte nicht gelöscht werden`,noRecordId:`Keine Datensatz-ID angegeben`,deleteConfirm:`Möchten Sie diesen Datensatz wirklich löschen?`,bulkDeleteSuccess:`{{count}} {{label}}-Datensätze gelöscht`,bulkDeletePartial:`{{succeeded}} gelöscht, {{failed}} fehlgeschlagen`},objectViewActions:{renameFailed:`Ansicht konnte nicht umbenannt werden`,deleteFailed:`Ansicht konnte nicht gelöscht werden`},dashboardActions:{pdfPreparing:`PDF-Export wird vorbereitet…`,exportFailed:`Export fehlgeschlagen: {{message}}`,forecastSoon:`Prognoseansicht kommt bald`},recordDetail:{viewersTooltip:`Benutzer, die diesen Datensatz gerade ansehen`},cellRender:{empty:`Leer`,yes:`Ja`,no:`Nein`,systemFields:`System`},user:{profile:`Profil`,settings:`Einstellungen`,logout:`Abmelden`,preferences:`Einstellungen`,theme:`Design`,language:`Sprache`},report:{rowTotal:`Zeilensumme`,columnTotal:`Spaltensumme`,grandTotal:`Gesamtsumme`,totals:`Summen`,rowsLabel:`Zeile`,columnsLabel:`Spalte`,allLabel:`(Alle)`,emptyLabel:`(Leer)`,loading:`Laden…`,failedToLoad:`Matrix konnte nicht geladen werden: {{message}}`,needsAcross:"Matrixbericht erfordert mindestens ein `groupingsAcross`-Feld.",aggregate:{count:`Anzahl`,countDistinct:`Eindeutige Anzahl`,sum:`Summe`,avg:`Durchschnitt`,min:`Minimum`,max:`Maximum`,first:`Erster`},editor:{breadcrumb:`Konfiguration`,basic:`Allgemein`,title:`Titel`,titlePlaceholder:`z. B. Pipeline nach Quartal`,description:`Beschreibung`,descriptionPlaceholder:`Was zeigt dieser Bericht?`,type:`Berichtstyp`,typeTabular:`Tabellarisch — flache Liste`,typeSummary:`Zusammenfassung — gruppiert mit Summen`,typeMatrix:`Matrix — Pivot Zeilen × Spalten`,typeJoined:`Verbunden — mehrere Blöcke`,typeHelp:`Wählen Sie das Layout, das zu Ihrer gewünschten Ansicht passt.`,data:`Daten`,objectName:`Datenquelle`,objectNamePlaceholder:`z. B. opportunity`,objectNameHelp:`Welches Objekt soll dieser Bericht abfragen?`,limit:`Zeilenlimit`,limitPlaceholder:`z. B. 100`,columns:`Spalten`,columnsHint:`Wählen Sie die Felder, die als Spalten erscheinen. Fügen Sie in Zusammenfassungs- oder Matrixberichten Aggregationen (Summe, Anzahl …) hinzu.`,filters:`Filter`,filtersHint:`Schränken Sie die Zeilen ein, die in diesen Bericht aufgenommen werden.`,filtersComplex:`Dieser Bericht verwendet einen erweiterten Filter, der hier nicht bearbeitet werden kann. Beim Speichern bleibt er unverändert.`,groupBy:`Gruppieren nach`,groupByHint:`Daten gruppieren und Zwischensummen berechnen.`,rows:`Zeilen`,rowsHint:`Zeilen nach diesen Feldern gruppieren.`,columnsAxis:`Spalten`,columnsAxisHint:`Diese Felder oben als Pivot anordnen.`,values:`Werte`,valuesHint:`In jeder Zelle angezeigte Zahlen. Wählen Sie ein oder mehrere Felder und setzen Sie eine Aggregation (Summe, Anzahl …).`,grouping:`Gruppierung`,addGrouping:`Gruppierung hinzufügen`,dateGranularity:`Datumsgranularität`,dateGranularityNone:`(Rohwert verwenden)`,day:`Tag`,week:`Woche`,month:`Monat`,quarter:`Quartal`,year:`Jahr`,sortAsc:`Aufsteigend`,sortDesc:`Absteigend`,chart:`Diagramm`,chartHint:`Optionale Visualisierung neben der Tabelle.`,chartType:`Diagrammtyp`,chartTitle:`Diagrammtitel`,chartTitlePlaceholder:`Standardmäßig der Berichtstitel`,chartXAxis:`X-Achse (Kategorie)`,chartYAxis:`Y-Achse (Wert)`,chartShowLegend:`Legende anzeigen`,chartShowDataLabels:`Datenbeschriftungen anzeigen`,chartNone:`(kein Diagramm)`,chartBar:`Balken`,chartLine:`Linie`,chartArea:`Fläche`,chartPie:`Kreis`,chartDonut:`Donut`,chartFunnel:`Trichter`,validationNeedsObject:`Wählen Sie eine Datenquelle, bevor Sie Spalten hinzufügen.`,validationMatrixNeedsRowsCols:`Matrixberichte benötigen mindestens eine Zeile und eine Spalte.`,validationSummaryNeedsRows:`Zusammenfassungsberichte benötigen mindestens ein Gruppierungsfeld.`,blocks:`Blöcke`,blocksHint:`Jeder Block ist eine eigene Tabelle oder ein eigenes Diagramm. Blockfilter werden mit dem Berichtsfilter UND-verknüpft.`,addBlock:`Block hinzufügen`,removeBlock:`Block entfernen`,blockName:`Blockname`,blockNamePlaceholder:`eindeutiger_blockname`,blockLabel:`Anzeigename`,blockLabelPlaceholder:`Wird über dem Block angezeigt`,blockDescription:`Beschreibung`,blockDescriptionPlaceholder:`Optionaler Kontext für diesen Block`,validationJoinedNeedsBlocks:`Verbundene Berichte benötigen mindestens einen Block.`,validationBlockNameRequired:`Jeder Block benötigt einen nicht leeren Namen.`,validationBlockNameDuplicate:`Blocknamen müssen innerhalb des Berichts eindeutig sein.`,validationBlockNeedsColumns:`Jeder Block benötigt mindestens eine Spalte.`,noneOption:`(keine)`,addCondition:`Bedingung hinzufügen`,combineLogic:`Verknüpfen mit`,opContains:`enthält`,opIsEmpty:`ist leer`,opIsNotEmpty:`ist nicht leer`,formatAuto:`Automatisch`,formatCurrency:`Währung`,formatPercent:`Prozent`,formatInteger:`Ganzzahl`,formatDate:`Datum`,formatDatetime:`Datum und Uhrzeit`,columnLabelPlaceholder:`Bezeichnung überschreiben`,aggregateColumn:`Aggregation`,formatColumn:`Format`,addColumns:`Spalten hinzufügen`,searchFields:`Felder suchen…`,noMatchingFields:`Keine Felder entsprechen Ihrer Suche.`,noFieldsAvailable:`Keine Felder verfügbar.`,columnsCount:`{n} Spalte(n) ausgewählt`,columnsEmpty:`Noch keine Spalten ausgewählt.`,fieldPickerTitle:`Felder auswählen`,fieldPickerDescription:`Wählen Sie ein oder mehrere Felder aus. Verwenden Sie das Suchfeld, um die Liste einzugrenzen.`,fieldPickerChangeTitle:`Feld ändern`,fieldPickerAddGroupingTitle:`Gruppierung hinzufügen`,fieldPickerEmpty:`(Feld auswählen)`,fieldPickerSelected:`{n} ausgewählt`,fieldPickerClear:`Auswahl aufheben`,fieldPickerAdd:`Hinzufügen`,fieldPickerAddN:`{n} hinzufügen`}},organizations:{mine:`Meine Organisationen`,title:`Organisationen`,heading:`Ihre Organisationen`,subtitle:`Wählen Sie eine Organisation, um fortzufahren, oder erstellen Sie eine neue.`,searchPlaceholder:`Organisation suchen`,new:`Neue Organisation`,current:`Aktuelle Organisation`,manage:`Verwalten`,emptyTitle:`Noch keine Organisationen`,emptyDescription:`Erstellen Sie Ihre erste Organisation, um loszulegen.`,noMatches:`Keine Organisationen entsprechen Ihrer Suche.`},notifications:{empty:`Keine Benachrichtigungen`,markAllRead:`Alle als gelesen markieren`,viewAll:`Alle Benachrichtigungen anzeigen`,approvalsPending:`{{count}} ausstehende Genehmigungen`,viewApprovals:`Genehmigungen anzeigen`,noPendingApprovals:`Keine ausstehenden Genehmigungen`,openApprovalsInbox:`Genehmigungs-Posteingang öffnen`,emptyUnread:`Alles gelesen`,filterUnread:`Ungelesen`,filterAll:`Alle`},publicForm:{submit:`Absenden`,submitting:`Sende…`,submitAnother:`Weitere Antwort senden`,poweredBy:`Bereitgestellt von ObjectStack`,secureNotice:`Ihre Informationen werden sicher übertragen und nur zur Bearbeitung Ihrer Anfrage verwendet.`,thankYouTitle:`Vielen Dank!`,thankYouMessage:`Ihre Einreichung wurde erfolgreich empfangen.`,redirecting:`Weiterleitung in {{seconds}} Sekunden…`,unavailableTitle:`Formular nicht verfügbar`,unavailableDescription:`Unter dieser URL ist kein öffentliches Formular verfügbar. Stellen Sie sicher, dass die zugrunde liegende Ansicht die anonyme Freigabe aktiviert hat.`,tryDemo:`Demo ausprobieren`,retry:`Erneut versuchen`,loading:`Formular wird geladen…`,requiredHint:`* Pflichtfeld`,consentLabelDefault:`Ich stimme der Datenschutzrichtlinie zu und willige in die Verarbeitung meiner Daten für diese Anfrage ein.`,consentLink:`Datenschutzrichtlinie`,consentRequired:`Bitte akzeptieren Sie die Datenschutzrichtlinie, um fortzufahren.`,rateLimited:`Bitte nehmen Sie sich einen Moment, um Ihre Antworten zu überprüfen, bevor Sie absenden.`,redirectBlocked:`Einreichung akzeptiert, aber die Weiterleitungs-URL wurde aus Sicherheitsgründen blockiert.`,demo:{contactTitle:`Kontakt aufnehmen`,contactDescription:`Erzählen Sie uns von Ihrem Projekt, und ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.`,supportTitle:`Support-Anfrage einreichen`,supportDescription:`Schildern Sie uns das Problem — unser Team antwortet innerhalb eines Werktages.`,thankYouSalesTitle:`Danke — wir haben Ihre Nachricht erhalten!`,thankYouSalesMessage:`Ein Vertriebsmitarbeiter wird sich innerhalb eines Werktages bei Ihnen melden.`,thankYouSupportTitle:`Alles klar — Ihre Anfrage ist in der Warteschlange.`,thankYouSupportMessage:`Ein Support-Ingenieur wird sich in Kürze melden. Speichern Sie diese Seite, falls Sie weitere Screenshots hinzufügen möchten.`,field:{firstName:`Vorname`,lastName:`Nachname`,email:`Geschäfts-E-Mail`,phone:`Telefon`,jobTitle:`Berufsbezeichnung`,company:`Unternehmen`,website:`Website`,industry:`Branche`,companySize:`Unternehmensgröße`,howCanWeHelp:`Wie können wir helfen?`,subject:`Betreff`,description:`Beschreibung`,issueType:`Problemart`,priority:`Priorität`},industry:{technology:`Technologie`,software:`Software / SaaS`,finance:`Finanzen`,healthcare:`Gesundheitswesen`,retail:`Einzelhandel`,other:`Sonstiges`},issueType:{question:`Frage`,problem:`Problem`,bug:`Fehler`,feature_request:`Funktionsanfrage`},priority:{low:`Niedrig`,medium:`Mittel`,high:`Hoch`,critical:`Kritisch`}}},marketplace:{title:`App-Marktplatz`,subtitle:`Durchsuchen Sie genehmigte Apps, die im ObjectStack-Katalog veröffentlicht wurden. Klicken Sie auf eine App, um Details zu sehen und sie in eine Ihrer Umgebungen zu installieren.`,searchPlaceholder:`Apps nach Name oder Manifest-ID suchen…`,searchAria:`Marktplatz-Apps suchen`,installed:`Installiert`,installedCount:`Installiert ({{count}})`,refresh:`Aktualisieren`,all:`Alle`,noApprovedYet:`Noch keine Apps für den Marktplatz genehmigt.`,noMatchFilters:`Keine Apps entsprechen Ihren Filtern.`,noDescription:`Keine Beschreibung vorhanden.`,back:`Zurück zum Marktplatz`,installedTitle:`Installierte Apps`,installedSubtitle:`Marktplatz-Pakete, die derzeit im Kernel dieses Laufzeitsystems installiert sind.`,installedEmpty:`Noch keine Marktplatz-Apps in diesem Laufzeitsystem installiert.`,browseLink:`Marktplatz durchsuchen →`,installedAdditiveNote:`<strong>Hinweis:</strong> Die Kernel-API ist nur additiv — Deinstallation entfernt das Manifest auf der Festplatte, damit das Paket beim nächsten Start nicht geladen wird, aber der laufende Kernel hält die App bis zum Neustart registriert.`,installedAt:`Installiert {{when}}`,installedBy:`von {{user}}`,installedPackageId:`Paket`,cachedAs:`Zwischengespeichert als <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Installiert v{{version}}`,load:{failed:`Marktplatz konnte nicht geladen werden`,failedHint:`Standardmäßig zeigt dieses Laufzeitsystem auf die öffentliche ObjectStack-Cloud. Stellen Sie sicher, dass das Laufzeitsystem online ist.`,packageFailed:`Paket konnte nicht geladen werden`,notFound:`Nicht gefunden.`},detail:{homepage:`Startseite`,installedV:`Installiert · v{{version}}`,about:`Über`,noReadme:`Kein Readme vorhanden.`,versions:`Versionen`,noApprovedVersions:`Keine genehmigten Versionen.`,prerelease:`Vorab`,moreOptions:`Weitere Installationsoptionen`,uninstallFromRuntime:`Aus diesem Laufzeitsystem deinstallieren`},action:{install:`Installieren`,reinstall:`Neu installieren`,working:`Verarbeite…`,installToCloud:`In der Cloud installieren…`,installing:`Installiere…`,uninstall:`Deinstallieren`,uninstalling:`Deinstalliere…`,details:`Details`,close:`Schließen`,dismiss:`Schließen`,openOnCloud:`In der Cloud öffnen`,backHome:`Zurück zur Startseite`},install:{dialogTitle:`{{name}} installieren`,dialogDescCurrent:`In dieser Umgebung installieren ({{host}}).`,dialogDescPicker:`Wählen Sie eine Umgebung, in der Sie diese App installieren möchten. Sie müssen bei ObjectStack Cloud angemeldet sein.`,environment:`Umgebung`,environmentPlaceholder:`Umgebung auswählen`,includeSampleData:`Beispieldaten einschließen`,noEnvs:`Keine Umgebungen in Ihrer aktiven Organisation gefunden.`,noPermission:`Sie haben keine Berechtigung, Apps in einer Umgebung zu installieren. Nur Organisationsinhaber und Administratoren können installieren.`,signInFirst:`Sie müssen sich zuerst bei ObjectStack Cloud anmelden.`,success:`Erfolgreich installiert. Öffnen Sie die Umgebung, um die neue App zu sehen.`,localSuccess:`v{{version}} in diesem Laufzeitsystem installiert. „{{name}}" sollte jetzt im App-Wechsler erscheinen.`,localManifestConflict:`{{message}}
|
|
17
|
+
Hinweis: Eine lokale App besitzt bereits diese manifest_id. Entfernen Sie sie zuerst aus objectstack.config.ts.`,localUnauthorized:`Melden Sie sich zuerst in diesem Laufzeitsystem an.`,localMarketplaceUnavailable:`Dieses Laufzeitsystem hat keine OS_CLOUD_URL konfiguriert.`},uninstall:{confirm:`{{manifestId}} v{{version}} aus diesem Laufzeitsystem deinstallieren?
|
|
18
|
+
|
|
19
|
+
Das zwischengespeicherte Manifest wird entfernt.`,successInList:`{{manifestId}} entfernt. Starten Sie das Laufzeitsystem neu, um es vollständig zu entladen.`,successInDetail:`Zwischengespeichertes Manifest für {{manifestId}} entfernt.`},accessDenied:{title:`App-Marktplatz nur für Administratoren`,description:`Sie haben keine Berechtigung, Apps in dieser Umgebung zu installieren.`},category:{crm:`CRM`,erp:`ERP`,hr:`Personalwesen`,finance:`Finanzen`,project:`Projektmanagement`,collaboration:`Zusammenarbeit`,analytics:`Analyse`,integration:`Integration`,automation:`Automatisierung`,ai:`KI`,security:`Sicherheit`,"developer-tools":`Entwicklertools`,"ui-theme":`UI-Thema`,storage:`Speicher`,other:`Sonstiges`},pricing:{free:`Kostenlos`,freemium:`Freemium`,paid:`Kostenpflichtig`,subscription:`Abonnement`,"usage-based":`Nutzungsbasiert`,"contact-sales":`Vertrieb kontaktieren`},relativeTime:{today:`heute`,daysAgo:`vor {{count}}d`,monthsAgo:`vor {{count}} Monaten`,yearsAgo:`vor {{count}} Jahren`}}},fr:{common:{addToFavorites:`Ajouter aux favoris`,removeFromFavorites:`Retirer des favoris`,loading:`Chargement...`,save:`Enregistrer`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,create:`Créer`,search:`Rechercher`,filter:`Filtrer`,reset:`Réinitialiser`,confirm:`Confirmer`,close:`Fermer`,back:`Retour`,next:`Suivant`,previous:`Précédent`,submit:`Soumettre`,refresh:`Actualiser`,export:`Exporter`,import:`Importer`,yes:`Oui`,no:`Non`,ok:`OK`,actions:`Actions`,more:`Plus`,selectAll:`Tout sélectionner`,clearAll:`Tout effacer`,noData:`Aucune donnée`,noResults:`Aucun résultat trouvé`,required:`Obligatoire`,optional:`Facultatif`,selectOption:`Sélectionner une option`,select:`Sélectionner...`,openChat:`Ouvrir le chat`,closeChat:`Fermer le chat`,toggleSidebar:`Basculer la barre latérale`},validation:{required:`{{field}} est obligatoire`,minLength:`{{field}} doit contenir au moins {{min}} caractères`,maxLength:`{{field}} doit contenir au plus {{max}} caractères`,min:`{{field}} doit être au moins {{min}}`,max:`{{field}} doit être au plus {{max}}`,email:`Veuillez saisir une adresse e-mail valide`,url:`Veuillez saisir une URL valide`,pattern:`Le format de {{field}} est invalide`,unique:`{{field}} doit être unique`,type:`{{field}} doit être un {{type}} valide`},form:{addItem:`Ajouter un élément`,removeItem:`Supprimer un élément`,fieldRequired:`Ce champ est obligatoire`,invalidFormat:`Format invalide`,saveSuccess:`Enregistré avec succès`,saveError:`Échec de l'enregistrement`,unsavedChanges:`Vous avez des modifications non enregistrées. Voulez-vous vraiment quitter ?`,stepOf:`Étape {{current}} sur {{total}}`,createTitle:`Créer {{object}}`,editTitle:`Modifier {{object}}`,createDescription:`Ajouter un nouveau {{object}} à votre base de données.`,editDescription:`Mettre à jour les détails de {{object}}`,saveRecord:`Enregistrer`,create:`Créer`,update:`Mettre à jour`,createSuccess:`{{object}} créé`,updateSuccess:`{{object}} mis à jour`,deleteSuccess:`{{object}} supprimé`},fields:{richText:{format:`Format : {{format}}`,basicEditorHint:`Éditeur de texte enrichi (basique)`,placeholder:`Écrivez quelque chose...`}},table:{rowsPerPage:`Lignes par page`,showing:`Affichage de {{from}} à {{to}} sur {{total}}`,noRows:`Aucune ligne à afficher`,sortAsc:`Tri croissant`,sortDesc:`Tri décroissant`,filterColumn:`Filtrer {{column}}`,columns:`Colonnes`,exportCSV:`Exporter en CSV`,exportExcel:`Exporter en Excel`,selectRow:`Sélectionner la ligne`,selectAllRows:`Sélectionner toutes les lignes`,expandRow:`Développer la ligne`,collapseRow:`Réduire la ligne`,hideColumn:`Masquer la colonne`,freezeColumn:`Figer la colonne`,unfreezeColumn:`Libérer la colonne`,pageInfo:`Page {{current}} sur {{total}}`,totalRecords:`{{count}} au total`,noResults:`Aucun résultat`,noResultsHint:`Essayez d'ajuster vos filtres ou vos termes de recherche.`,cancelAll:`Tout annuler`,saveAll:`Tout enregistrer ({{count}})`,addRecord:`Ajouter un enregistrement`,open:`Ouvrir`,search:`Rechercher...`,modified:`{{count}} ligne(s) modifiée(s)`,selected:`{{count}} sélectionné(s)`,edit:`Modifier`,delete:`Supprimer`},grid:{actions:`Actions`,edit:`Modifier`,delete:`Supprimer`,export:`Exporter`,exportAs:`Exporter en {{format}}`,loading:`Chargement de la grille...`,errorLoading:`Erreur de chargement de la grille`,pullToRefresh:`Tirer pour actualiser`,refreshing:`Actualisation…`,openRecord:`Ouvrir l'enregistrement`,rowHeight:`Hauteur de ligne : {{mode}}`,openMenu:`Ouvrir le menu`,empty:`Vide`,yes:`Oui`,no:`Non`,systemFields:`Système`,toolbar:{densityMode:`Densité`,densityCompact:`Compact`,densityComfortable:`Normal`,densitySpacious:`Spacieux`,densityCycleHint:`{{label}} (cliquer pour changer)`,densityCycleShortHint:`Cliquer pour changer`},import:{title:`Importer {{object}}`,stepUpload:`Télécharger`,stepMapping:`Correspondance`,stepPreview:`Aperçu`,uploadDescription:`Téléchargez un fichier CSV pour commencer.`,mappingDescription:`Faites correspondre les colonnes CSV aux champs de l'objet.`,previewDescription:`Vérifiez les données avant d'importer.`,dragDrop:`Faites glisser le fichier CSV ici ou cliquez pour parcourir`,browseFiles:`Parcourir les fichiers`,onlyCsv:`Seuls les fichiers CSV sont pris en charge.`,fileNeedsHeader:`Le fichier doit avoir une ligne d'en-tête et au moins une ligne de données.`,mappingTemplate:`Modèle de correspondance :`,chooseTemplate:`Choisir un modèle…`,noSavedTemplates:`Aucun modèle enregistré`,noneOption:`— Aucun —`,saveCurrent:`Enregistrer le modèle actuel`,templateName:`Nom du modèle`,save:`Enregistrer`,deleteTemplate:`Supprimer le modèle`,csvColumn:`Colonne CSV`,mapsTo:`Correspond à`,status:`Statut`,skipColumn:`Ignorer la colonne`,skip:`— Ignorer —`,mapped:`Mappé`,skipped:`Ignoré`,rowsWithErrors:`{{count}} ligne(s) avec des erreurs`,rowsCorrected:`{{count}} ligne(s) corrigée(s)`,clickToFix:`— cliquez sur une cellule mise en surbrillance pour modifier en ligne.`,showingRows:`Affichage de {{shown}} sur {{total}} lignes`,importing:`Importation… {{progress}}%`,importComplete:`Importation terminée`,imported:`{{count}} importé(s)`,skippedCount:`{{count}} ignoré(s)`,moreErrors:`…et {{count}} erreur(s) de plus`,cancel:`Annuler`,back:`Retour`,next:`Suivant`,close:`Fermer`,importNRows:`Importer {{count}} lignes`,importingProgress:`Importation…`,requiredMark:`*`,required:`Obligatoire`,invalidType:`{{type}} invalide`}},calendar:{today:`Aujourd'hui`,month:`Mois`,week:`Semaine`,day:`Jour`,agenda:`Agenda`,allDay:`Toute la journée`,noEvents:`Aucun événement`,newEvent:`Nouvel événement`,moreEvents:`+{{count}} de plus`},list:{recordCount:`{{count}} enregistrements`,recordCountOne:`{{count}} enregistrement`,addRecord:`Ajouter un enregistrement`,tabs:`Onglets`,allRecords:`Tous les enregistrements`,search:`Rechercher`,filter:`Filtrer`,filterRecords:`Filtrer les enregistrements`,sort:`Trier`,sortRecords:`Trier les enregistrements`,group:`Grouper`,groupBy:`Grouper par`,export:`Exporter`,exportAs:`Exporter en {{format}}`,color:`Couleur`,rowColor:`Couleur de ligne`,colorByField:`Colorer par champ`,clear:`Effacer`,none:`Aucun`,hideFields:`Masquer les champs`,noItems:`Aucun élément trouvé`,noItemsMessage:`Il n'y a aucun enregistrement à afficher. Essayez d'ajuster les filtres ou d'ajouter de nouvelles données.`,showAll:`Tout afficher`,pullToRefresh:`Tirer pour actualiser`,refreshing:`Actualisation…`,share:`Partager`,print:`Imprimer`,hideFieldsTitle:`Masquer les champs`,dataLimitReached:`Les {{limit}} premiers enregistrements sont affichés. Il peut y avoir plus de données disponibles.`,viewSettings:`Paramètres de vue`,viewSettingsHint:`Regroupement, couleur, densité et champs visibles.`,addGroup:`Ajouter un champ de groupe`,collapsedByDefault:`Réduit par défaut`,removeGroup:`Supprimer`},kanban:{addCard:`Ajouter une carte`,addColumn:`Ajouter une colonne`,moveCard:`Déplacer la carte`,deleteCard:`Supprimer la carte`,deleteColumn:`Supprimer la colonne`,noCards:`Aucune carte`,cardTitlePlaceholder:`Saisir le titre de la carte...`},timeline:{bucket:{overdue:`En retard`,today:`Aujourd'hui`,tomorrow:`Demain`,thisWeek:`Cette semaine`,nextWeek:`Semaine prochaine`,later:`Plus tard`,noDate:`Sans date`,unassigned:`Non attribué`}},gantt:{column:{taskName:`Nom de la tâche`,start:`Début`,end:`Fin`},toolbar:{prevPeriod:`Période précédente`,nextPeriod:`Période suivante`,zoomIn:`Zoom avant`,zoomOut:`Zoom arrière`,jumpToToday:`Aller à aujourd'hui`,today:`Aujourd'hui`,showTaskList:`Afficher la liste des tâches`,hideTaskList:`Masquer la liste des tâches`}},view:{rename:`Renommer`,duplicateView:`Dupliquer la vue`,shareView:`Partager la vue`,setAsDefault:`Définir par défaut`,pinView:`Épingler la vue`,unpinView:`Désépingler la vue`,changeViewType:`Changer le type de vue`,deleteView:`Supprimer la vue`,addView:`Ajouter une vue`,unsavedChanges:`Modifications non enregistrées`,saveAsView:`Enregistrer comme vue`,moreViews:`{{count}} de plus`,activeFilters:`Filtres actifs`,activeSort:`Tri actif`,manageViews:`Gérer les vues`,manageAllViews:`Gérer toutes les vues…`,searchViews:`Rechercher des vues`,addNewView:`Ajouter une nouvelle vue`,done:`Terminé`,noViewsFound:`Aucune vue ne correspond à votre recherche.`,dragToReorder:`Glisser pour réorganiser`,defaultView:`Vue par défaut`,tabActionsFor:`Actions de vue pour {{name}}`,readonlyAriaLabel:`Vue en lecture seule`,readonlyTooltip:`Vue système — dupliquer pour personnaliser.`},detail:{back:`Retour`,edit:`Modifier`,editInline:`Modifier`,save:`Enregistrer`,saveChanges:`Enregistrer les modifications`,editFieldsInline:`Modifier les champs`,share:`Partager`,duplicate:`Dupliquer`,export:`Exporter`,viewHistory:`Voir l'historique`,delete:`Supprimer`,moreActions:`Plus d'actions`,addToFavorites:`Ajouter aux favoris`,removeFromFavorites:`Retirer des favoris`,previousRecord:`Enregistrement précédent`,nextRecord:`Enregistrement suivant`,recordOf:`{{current}} sur {{total}}`,recordNotFound:`Enregistrement introuvable`,recordNotFoundDescription:`L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.`,goBack:`Retour`,details:`Détails`,related:`Associés`,relatedRecords:`{{count}} enregistrements`,relatedRecordOne:`{{count}} enregistrement`,noRelatedRecords:`Aucun enregistrement associé trouvé`,loading:`Chargement...`,copyToClipboard:`Copier dans le presse-papiers`,copied:`Copié !`,deleteConfirmation:`Êtes-vous sûr de vouloir supprimer cet enregistrement ?`,editRecord:`Modifier l'enregistrement`,viewAll:`Tout afficher`,new:`Nouveau`,emptyValue:`—`,comments:`Commentaires`,searchComments:`Rechercher des commentaires…`,addCommentPlaceholder:`Ajouter un commentaire… (Ctrl+Entrée pour envoyer)`,noMatchingComments:`Aucun commentaire correspondant`,noCommentsYet:`Aucun commentaire pour le moment`,pinned:`Épinglé`,pin:`Épingler`,unpin:`Désépingler`,justNow:`à l'instant`,minutesAgo:`il y a {{count}} min`,hoursAgo:`il y a {{count}} h`,daysAgo:`il y a {{count}} j`,dropFilesToUpload:`Déposez les fichiers ici ou cliquez pour télécharger`,attachmentCount:`{{count}} pièce jointe`,attachmentCountPlural:`{{count}} pièces jointes`,removeAttachment:`Supprimer la pièce jointe`,unifiedDiff:`Vue unifiée`,sideBySideDiff:`Vue côte à côte`,noChanges:`Aucune modification`,previousVersion:`Précédent`,currentVersion:`Actuel`,discussion:`Discussion`,showDiscussion:`Afficher la discussion ({{count}})`,hideDiscussion:`Masquer la discussion`,bold:`Gras (Ctrl+B)`,italic:`Italique (Ctrl+I)`,listFormat:`Liste`,inlineCode:`Code en ligne`,mentionSomeone:`Mentionner quelqu'un`,preview:`Aperçu`,submitComment:`Envoyer (Ctrl+Entrée)`,sendComment:`Envoyer`,writeComment:`Écrire un commentaire…`,subscribedTooltip:`Abonné — cliquez pour vous désabonner`,unsubscribedTooltip:`S'abonner aux notifications`,firstRecord:`Premier enregistrement (Début)`,previousRecordKey:`Enregistrement précédent (←)`,nextRecordKey:`Enregistrement suivant (→)`,lastRecord:`Dernier enregistrement (Fin)`,noRecords:`Aucun enregistrement`,searchWhileNavigating:`Rechercher pendant la navigation`,searchRecords:`Rechercher des enregistrements…`,allActivity:`Toute l'activité`,commentsOnly:`Commentaires uniquement`,fieldChangesFilter:`Modifications de champs`,tasksOnly:`Tâches uniquement`,leaveCommentPlaceholder:`Laisser un commentaire… (Ctrl+Entrée pour envoyer)`,noActivity:`Aucune activité enregistrée`,loadMore:`Charger plus`,edited:`(modifié)`,via:`via {{source}}`,replyCount:`{{count}} réponse`,replyCountPlural:`{{count}} réponses`,replyPlaceholder:`Répondre…`,filterActivity:`Filtrer l'activité`,openDiscussion:`Ouvrir le panneau de discussion`,closeDiscussion:`Fermer le panneau de discussion`,subscribeAriaLabel:`S'abonner aux notifications`,unsubscribeAriaLabel:`Se désabonner des notifications`,clearSearch:`Effacer la recherche`,saving:`Enregistrement…`,lockedByApproval:`Verrouillé pour approbation`,lockedTooltip:`Cet enregistrement a une demande d'approbation en attente ; la modification est verrouillée`,cancelApproval:`Annuler l'approbation`,cancelApprovalInFlight:`Annulation…`,cancelApprovalTooltip:`Annuler la demande d'approbation en attente pour déverrouiller l'enregistrement`,cancelApprovalFailed:`Échec de l'annulation de l'approbation`,cancelApprovalUnavailable:`L'annulation des approbations n'est pas prise en charge par cette source de données`,linkCopied:`Lien copié dans le presse-papiers`,linkCopyFailed:`Impossible de copier le lien`,cancel:`Annuler`,cancelEdit:`Abandonner les modifications`,sectionMoreDetails:`Plus de détails`,concurrentUpdateTitle:`Cet enregistrement a été modifié par quelqu'un d'autre`,concurrentUpdateDescription:`Un autre utilisateur a enregistré une version plus récente de {{field}} pendant votre modification. Choisissez comment résoudre le conflit.`,concurrentUpdateYourEdit:`Votre modification`,concurrentUpdateCurrentValue:`Valeur actuelle`,concurrentUpdateUpdatedBy:`Mis à jour par {{name}}`,concurrentUpdateUpdatedAt:`Mis à jour le {{when}}`,concurrentUpdateReload:`Charger la version actuelle`,concurrentUpdateOverwrite:`Écraser quand même`,concurrentUpdateCancel:`Annuler`,openInNewTab:`Ouvrir dans un nouvel onglet`,activity:`Activité`,history:`Historique`,editRow:`Modifier`,deleteRow:`Supprimer`,deleteRowConfirmation:`Supprimer cet enregistrement ?`,deleteRowTitle:`Supprimer l'enregistrement`,actions:`Actions`,previousPage:`Précédent`,nextPage:`Suivant`,pageOf:`Page {{current}} sur {{total}}`,sortBy:`Trier par`,filterPlaceholder:`Filtrer...`,highlightFields:`Champs clés`,createdBy:`Créé par`,updatedBy:`Mis à jour par`,showEmptyRelated_one:`+ {{count}} vide`,showEmptyRelated_other:`+ {{count}} vides`,copyEmail:`Copier l'e-mail`,copyPhone:`Copier le téléphone`,copyRecordId:`Copier l'ID`,showEmptyFields:`Afficher {{count}} champs vides`,hideEmptyFields:`Masquer les champs vides`,noValue:`Aucune valeur`},chart:{noData:`Aucune donnée de graphique disponible`,loading:`Chargement du graphique...`},map:{searchLocations:`Rechercher des lieux…`,locationDetails:`Détails du lieu`,markersCount:`{{count}} marqueurs`,invalidCoordinates:`{{count}} enregistrement avec des coordonnées manquantes ou invalides exclu de la carte.`,invalidCoordinatesPlural:`{{count}} enregistrements avec des coordonnées manquantes ou invalides exclus de la carte.`},workflow:{draft:`Brouillon`,active:`Actif`,paused:`En pause`,completed:`Terminé`,cancelled:`Annulé`,save:`Enregistrer`,publish:`Publier`,addNode:`Ajouter un nœud`,workflowFlow:`Flux de travail`,properties:`Propriétés`,connections:`Connexions`,quickConnect:`Connexion rapide`,fromPlaceholder:`De...`,toPlaceholder:`Vers...`,connect:`Connecter`,label:`Libellé`,type:`Type`,description:`Description`,assignee:`Responsable`,assigneeType:`Type de responsable`,user:`Utilisateur`,role:`Rôle`,group:`Groupe`,expression:`Expression`,timeoutMinutes:`Délai (minutes)`,selectNodeToEdit:`Sélectionnez un nœud pour modifier ses propriétés`,workflowTitle:`Titre du workflow`,newWorkflow:`Nouveau workflow`,outConnections:`{{count}} sortie(s)`,start:`Début`,end:`Fin`,task:`Tâche`,userTask:`Tâche utilisateur`,serviceTask:`Tâche service`,scriptTask:`Tâche script`,approval:`Approbation`,condition:`Condition`,parallelGateway:`Passerelle parallèle`,joinGateway:`Passerelle de jonction`,boundaryEvent:`Événement limite`,delay:`Délai`,notification:`Notification`,webhook:`Webhook`,allowConcurrency:`Autoriser (exécution simultanée)`,forbidConcurrency:`Interdire (ignorer les nouveaux)`,replaceConcurrency:`Remplacer (annuler les existants)`,queueConcurrency:`File d'attente (exécuter après)`,conditionEvent:`Condition`,manualEvent:`Manuel`,webhookEvent:`Webhook`,timerEvent:`Minuterie`,signalEvent:`Signal`,versionHistory:`Historique des versions`,importBpmn:`Importer BPMN`,exportBpmn:`Exporter BPMN`,undo:`Annuler`,redo:`Rétablir`,resetZoom:`Réinitialiser le zoom`},dashboard:{addWidget:`Ajouter un widget`,removeWidget:`Supprimer un widget`,editLayout:`Modifier la mise en page`,saveLayout:`Enregistrer la mise en page`,resetLayout:`Réinitialiser la mise en page`,total:`Total`,noDataAvailable:`Aucune donnée disponible`,noDataSourceFor:`Aucune source de données pour`,trend:{vsLastQuarter:`vs. trimestre dernier`,vsLastMonth:`vs. mois dernier`,vsLastWeek:`vs. semaine dernière`,vsLastYear:`vs. année dernière`,vsYesterday:`vs. hier`,vsPreviousPeriod:`vs. période précédente`}},configPanel:{save:`Enregistrer`,discard:`Annuler`,close:`Fermer`,layout:`Disposition`,columns:`Colonnes`,gap:`Espacement`,rowHeight:`Hauteur de ligne`,data:`Données`,refreshInterval:`Intervalle de rafraîchissement`,appearance:`Apparence`,title:`Titre`,showDescription:`Afficher la description`,theme:`Thème`,configuration:`Configuration`,general:`Général`,advanced:`Avancé`},appDesigner:{createApp:`Créer une application`,editApp:`Modifier l'application`,basicInfo:`Informations de base`,objects:`Objets`,navigation:`Navigation`,branding:`Identité visuelle`,appName:`Nom de l'app`,appTitle:`Titre`,appDescription:`Description`,appIcon:`Icône`,template:`Modèle`,layout:`Disposition`,layoutSidebar:`Barre latérale`,layoutHeader:`En-tête`,layoutEmpty:`Vide`,selectObjects:`Sélectionner des objets`,searchObjects:`Rechercher des objets…`,selectAll:`Tout sélectionner`,deselectAll:`Tout désélectionner`,navBuilder:`Constructeur de navigation`,addGroup:`Ajouter un groupe`,addUrl:`Ajouter une URL`,addSeparator:`Ajouter un séparateur`,noNavItems:`Aucun élément de navigation pour l'instant.`,logoUrl:`URL du logo`,primaryColor:`Couleur principale`,faviconUrl:`URL du favicon`,preview:`Aperçu`,complete:`Terminer`,snakeCaseHint:`Doit être en snake_case (ex. my_app)`,modeEdit:`Modifier`,modePreview:`Aperçu`,modeCode:`Code`,addWidget:`Ajouter un widget`,widgetProperties:`Propriétés du widget`,dataSource:`Source de données`,valueField:`Champ de valeur`,aggregate:`Agrégat`,colorVariant:`Variante de couleur`,addComponent:`Ajouter un composant`,componentProperties:`Propriétés du composant`,viewType:`Type de vue`,fields:`Champs`,toolbar:`Barre d'outils`,showSearch:`Afficher la recherche`,showFilters:`Afficher les filtres`,showSort:`Afficher le tri`,appearance:`Apparence`,rowHeight:`Hauteur de ligne`,stripedRows:`Lignes alternées`,bordered:`Avec bordure`,livePreview:`Aperçu en direct`,stepBasicDesc:`Nom, titre et mise en page`,stepObjectsDesc:`Sélectionner les objets métier`,stepNavigationDesc:`Construire l'arbre de navigation`,stepBrandingDesc:`Logo, couleurs et favicon`,noObjectsFound:`Aucun objet trouvé.`,noNavItemsHint:`Pas encore d'éléments de navigation. Sélectionnez des objets à l'étape précédente ou ajoutez-en manuellement.`,separator:`Séparateur`,separatorLabel:`— Séparateur —`,newGroup:`Nouveau groupe`,newLink:`Nouveau lien`,saveDraft:`Enregistrer le brouillon`,cancelConfirmTitle:`Abandonner les modifications ?`,cancelConfirmMessage:`Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir annuler ?`,confirmDiscard:`Abandonner`,keepEditing:`Continuer à éditer`,navNoItems:`Aucun élément de navigation. Cliquez sur les boutons ci-dessus pour ajouter des éléments.`,navNoPreviewItems:`Aucun élément`,navLivePreview:`Aperçu en direct`,navCollapseGroup:`Réduire le groupe`,navExpandGroup:`Développer le groupe`,navAddChild:`Ajouter un enfant`,navMoveUp:`Monter`,navMoveDown:`Descendre`,navRemove:`Supprimer`,navObjectPage:`Page d'objet`,navDashboard:`Tableau de bord`,navPage:`Page`,navReport:`Rapport`,navGroup:`Groupe`,navUrl:`URL`,navSeparator:`Séparateur`,navTypeObject:`Objet`,navTypeDashboard:`Tableau de bord`,navTypePage:`Page`,navTypeReport:`Rapport`,navTypeUrl:`URL`,navTypeGroup:`Groupe`,navTypeSeparator:`Séparateur`,navTypeAction:`Action`,navEditIcon:`Modifier l'icône`,navToggleVisible:`Basculer la visibilité`,navHidden:`Masqué`,navExportSchema:`Exporter JSON`,navImportSchema:`Importer JSON`,navExportSuccess:`Schéma de navigation exporté`,navImportSuccess:`Schéma de navigation importé`,navImportError:`JSON de navigation invalide`,navIconPlaceholder:`Nom de l'icône (ex. Users)`,dashboardEditor:`Éditeur de tableau de bord`,noWidgets:`Aucun widget. Cliquez sur un bouton ci-dessus pour en ajouter un.`,widgetLayoutSize:`Taille de la disposition`,widgetWidth:`Largeur`,widgetHeight:`Hauteur`,dashboardPreview:`Aperçu du tableau de bord`,noWidgetsPreview:`Aucun widget à prévisualiser`,pageCanvasEditor:`Éditeur de canevas de page`,emptyPage:`Page vide. Cliquez sur un bouton ci-dessus pour ajouter un composant.`,pagePreview:`Aperçu de la page`,noComponentsPreview:`Aucun composant à prévisualiser`,modePage:`Page`,modeDashboard:`Tableau de bord`,undo:`Annuler`,redo:`Rétablir`,brandingEditor:`Éditeur d'identité`,brandingExport:`Exporter JSON`,brandingImport:`Importer JSON`,brandingPreview:`Aperçu`,brandingSampleButton:`Bouton exemple`,brandingSampleText:`Voici l'apparence de votre thème de marque.`,colorPalette:`Palette de couleurs`,fontFamily:`Famille de polices`,fontDefault:`Par défaut (système)`,modeLight:`Clair`,modeDark:`Sombre`,mobilePreview:`Aperçu mobile`,objectManager:{title:`Gestionnaire d'objets`,addObject:`Nouvel objet`,searchPlaceholder:`Rechercher des objets…`,noObjects:`Aucun objet trouvé.`,objectName:`Nom API`,objectLabel:`Étiquette`,pluralLabel:`Étiquette plurielle`,icon:`Icône`,selectIcon:`Sélectionner une icône…`,group:`Groupe`,noGroup:`Aucun groupe`,sortOrder:`Ordre de tri`,enabled:`Activé`,relationships:`Relations`,systemBadge:`Système`,fieldCount:`{{count}} champs`,ungrouped:`Sans groupe`,deleteConfirmTitle:`Supprimer l'objet ?`,deleteConfirmMessage:`Cela supprimera définitivement l'objet et tous ses champs. Cette action est irréversible.`},fieldDesigner:{title:`Concepteur de champs`,addField:`Nouveau champ`,searchPlaceholder:`Rechercher des champs…`,allTypes:`Tous les types`,noFields:`Aucun champ trouvé.`,fieldName:`Nom API`,fieldLabel:`Étiquette`,fieldType:`Type`,fieldGroup:`Groupe`,description:`Description`,required:`Obligatoire`,unique:`Unique`,readOnly:`Lecture seule`,hidden:`Masqué`,indexed:`Indexé`,externalId:`ID externe`,trackHistory:`Suivre l'historique`,defaultValue:`Valeur par défaut`,placeholder:`Espace réservé`,referenceTo:`Référence à`,formula:`Formule`,options:`Options`,addOption:`Ajouter une option`,validationRules:`Règles de validation`,addRule:`Ajouter une règle`,systemBadge:`Système`,ungrouped:`Général`,deleteConfirmTitle:`Supprimer le champ ?`,deleteConfirmMessage:`Le champ sera définitivement supprimé. Les données existantes dans ce champ seront perdues.`,basicSection:`Basique`,typeSpecificSection:`Paramètres de type`,advancedSection:`Avancé`,typeCategory:{text:`Texte`,number:`Nombre`,date:`Date et heure`,choice:`Choix`,relation:`Relation`,advanced:`Avancé`}}},console:{title:`Console ObjectStack`,initializing:`Initialisation de l'application...`,breadcrumb:{dashboards:`Tableaux de bord`,pages:`Pages`,reports:`Rapports`,system:`Système`},loadingSteps:{connecting:`Connexion à la source de données`,loadingConfig:`Chargement de la configuration`,preparingWorkspace:`Préparation de l'espace de travail`},error:{connectionFailed:`Impossible de se connecter au serveur`,serverUnreachable:`Le serveur {{url}} est inaccessible.`,checkServer:`Veuillez vérifier votre connexion réseau ou que le backend est en cours d’exécution.`,timeout:`Délai de connexion dépassé après 10 secondes.`},actions:{retry:`Réessayer`,retrying:`Nouvelle tentative…`},shortcuts:{title:`Raccourcis clavier`,description:`Référence rapide de tous les raccourcis clavier disponibles.`,groups:{general:`Général`,navigation:`Navigation`,dataViews:`Vues de données`,preferences:`Préférences`},openCommandPalette:`Ouvrir la palette de commandes`,showShortcuts:`Afficher les raccourcis clavier`,closeDialog:`Fermer le dialogue / panneau`,toggleSidebar:`Basculer la barre latérale`,focusSearch:`Focus sur la recherche`,createRecord:`Créer un nouvel enregistrement`,refreshData:`Actualiser les données`,editRecord:`Modifier l'enregistrement sélectionné`,toggleDarkMode:`Basculer le mode sombre`},commandPalette:{placeholder:`Tapez une commande ou recherchez...`,noResults:`Aucun résultat trouvé.`,objects:`Objets`,dashboards:`Tableaux de bord`,pages:`Pages`,reports:`Rapports`,switchApp:`Changer d'application`,current:`Actuel`,preferences:`Préférences`,lightTheme:`Thème clair`,darkTheme:`Thème sombre`,systemTheme:`Thème système`,actions:`Actions`,openFullSearch:`Ouvrir la page de recherche complète`,createApp:`Créer une nouvelle application`,searching:`Recherche…`,records:`Enregistrements`,recentRecords:`Récemment consultés`},errors:{somethingWentWrong:`Quelque chose s'est mal passé`,unexpectedError:`Une erreur inattendue est survenue lors du rendu de cette vue.`,tryAgain:`Réessayer`,goHome:`Retour à l'accueil`,errorDetails:`Détails de l'erreur (développement uniquement)`},theme:{toggle:`Changer de thème`,light:`Clair`,dark:`Sombre`,system:`Système`},objectView:{objectNotFound:`Objet introuvable`,objectNotFoundDescription:`L'objet « {{objectName}} » n'existe pas dans la configuration actuelle.`,objectNotFoundHint:`Vérifiez les paramètres de navigation de votre application ou sélectionnez un autre objet dans la barre latérale.`,allRecords:`Tous les enregistrements`,exitDesignMode:`Quitter le mode conception`,enterDesignMode:`Entrer en mode conception`,metadataInspector:`Inspecteur de métadonnées`,editView:`Modifier la vue`,addView:`Ajouter une vue`,designTools:`Outils de conception`,new:`Nouveau`,configureView:`Configurer la vue`,closePanel:`Fermer le panneau`,page:`Page`,pageConfigHint:`Barre d'outils, navigation et paramètres du shell de vue`,listConfigHint:`Rendu des données, colonnes et apparence pour ce type de liste`,general:`Général`,generalHint:`Titre, description et type de la vue`,toolbar:`Barre d'outils`,toolbarHint:`Recherche, filtre, tri, regroupement et bascule de densité`,toolbarEnabledCount:`{{count}} sur {{total}} activés`,navigationSection:`Navigation`,navigationHint:`Comportement au clic sur la ligne et paramètres de la vue détaillée`,records:`Enregistrements`,recordsHint:`Mode de sélection, ajout d'enregistrement et édition en ligne`,exportPrint:`Export et impression`,exportPrintHint:`Formats d'export, impression et affichage du nombre d'enregistrements`,showAllFields:`Tout afficher`,hideAllFields:`Tout masquer`,searchFields:`Rechercher des champs...`,title:`Titre`,description:`Description`,data:`Données`,source:`Source`,columns:`Colonnes`,filterBy:`Filtrer par`,sortBy:`Trier par`,appearance:`Apparence`,showDescription:`Afficher la description`,viewType:`Type de vue`,userFilters:`Filtres utilisateur`,enableSearch:`Activer la recherche`,enableFilter:`Activer le filtre`,enableSort:`Activer le tri`,enableHideFields:`Activer masquer les champs`,enableGroup:`Activer le regroupement`,enableColor:`Activer la couleur`,enableDensity:`Activer la densité`,userActions:`Actions utilisateur`,addRecordViaForm:`Ajouter des enregistrements via un formulaire`,advanced:`Avancé`,allowExport:`Autoriser l'exportation`,recordCount:`{{count}} enregistrements`,noDescription:`Aucune description`,none:`Aucun`,columnsConfigured:`{{count}} colonnes`,save:`Enregistrer`,discard:`Annuler`,createView:`Créer une vue`,newView:`Nouvelle vue`,typeOptions:`Options de type`,groupByField:`Champ de regroupement`,startDateField:`Champ de date de début`,titleField:`Champ de titre`,latitudeField:`Champ de latitude`,longitudeField:`Champ de longitude`,imageField:`Champ d'image`,dateField:`Champ de date`,selectField:`Sélectionner un champ...`,gridOptionsHint:`La vue grille utilise les colonnes configurées ci-dessus.`,groupBy:`Regrouper par`,prefixField:`Champ de préfixe`,fields:`Champs`,fieldsVisible:`{{count}} visibles`,sortsCount:`{{count}} tris`,filtersCount:`{{count}} filtres`,endDateField:`Champ de date de fin`,color:`Couleur`,fieldTextColor:`Couleur du texte du champ`,rowHeight:`Hauteur de ligne`,wrapHeaders:`Retour à la ligne des en-têtes`,showFieldDescriptions:`Afficher les descriptions des champs`,collapseAllByDefault:`Tout réduire par défaut`,striped:`Lignes rayées`,bordered:`Cellules bordées`,inlineEdit:`Modifier les enregistrements en ligne`,addDeleteRecordsInline:`Ajouter/supprimer des enregistrements en ligne`,clickIntoRecordDetails:`Cliquer pour les détails de l'enregistrement`,navigationMode:`Mode de navigation`,navigationWidth:`Largeur de navigation`,navigationWidthHint:`Disponible pour les modes de navigation tiroir, modale et partagée`,openNewTab:`Ouvrir dans un nouvel onglet`,openNewTabHint:`Disponible pour les modes de navigation page et nouvelle fenêtre`,import:`Importer`,importTitle:`Importer depuis CSV`,importedToast:`{{count}} ligne(s) importée(s).`,importedWithSkipped:`{{ok}} ligne(s) importée(s) ; {{skipped}} ignorée(s).`,showAdvancedSettings:`Afficher les paramètres avancés`,showFewerSettings:`Afficher moins de paramètres`,createViewDesc:`Choisissez un type de vue et donnez-lui un nom. Tous les paramètres peuvent être modifiés ensuite.`,cancel:`Annuler`,create:`Créer`,delete:`Supprimer`,deleteViewTitle:`Supprimer la vue`,deleteViewConfirm:`Supprimer la vue "{{name}}" ? Ceci est irréversible.`,bulkDeleteConfirm:`Supprimer {{count}} enregistrements sélectionnés ? Ceci est irréversible.`,duplicateViewName:`Une vue avec ce nom existe déjà.`,viewTypeGrid:`Grille`,viewTypeGridDesc:`Tableau de type tableur d'enregistrements.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Cartes regroupées en colonnes par un champ de sélection unique.`,viewTypeCalendar:`Calendrier`,viewTypeCalendarDesc:`Enregistrements placés par date dans un calendrier mensuel.`,viewTypeGallery:`Galerie`,viewTypeGalleryDesc:`Grandes cartes d'image depuis un champ de pièce jointe.`,viewTypeTimeline:`Chronologie`,viewTypeTimelineDesc:`Enregistrements le long d'un axe temporel horizontal.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Barres de projet avec début/fin et dépendances.`,viewTypeMap:`Carte`,viewTypeMapDesc:`Marqueurs géographiques depuis des champs latitude/longitude.`,viewTypeChart:`Graphique`,viewTypeChartDesc:`Graphiques à barres/lignes/secteurs agrégés.`,groupByFieldHelp:`Le tableau Kanban regroupe les enregistrements en colonnes selon les valeurs du champ.`,startDateFieldHelp:`Le calendrier place les enregistrements sur la cellule correspondant à cette date.`,ganttStartDateFieldHelp:`Le bord gauche de chaque barre Gantt utilise cette date.`,ganttEndDateFieldHelp:`Le bord droit de chaque barre Gantt utilise cette date.`,timelineDateFieldHelp:`Les enregistrements sont positionnés sur la chronologie selon cette date.`,latitudeFieldHelp:`Champ contenant la latitude (champs géo uniquement).`,longitudeFieldHelp:`Champ contenant la longitude (champs géo uniquement).`,imageFieldHelp:`La couverture de la galerie provient de ce champ image ou pièce jointe.`,selectOption:`Sélectionner...`,noEligibleFieldForType:`Aucun champ éligible de ce type. Ajoutez-en un à l'objet d'abord.`,viewTypeUnavailable:`Cet objet n'a pas de champ pouvant servir de "{{field}}".`,viewTypeUnavailableShort:`Non pris en charge par cet objet.`,chartType:`Type de graphique`,chartTypeHelp:`Détermine comment les données sont rendues.`,chartTypeBar:`Graphique à barres`,chartTypeLine:`Graphique en courbes`,chartTypePie:`Graphique circulaire`,chartTypeArea:`Graphique en aires`,chartTypeScatter:`Nuage de points`,xAxisField:`Champ axe X`,xAxisFieldHelp:`La dimension catégorielle ou temporelle.`,yAxisField:`Champ axe Y`,yAxisFieldHelp:`Le champ numérique à agréger.`,selectionMode:`Mode de sélection`,selectionNone:`Aucun`,selectionSingle:`Unique`,selectionMultiple:`Multiple`,pageSize:`Taille de page`,pageSizeOptions:`Options de taille de page`,exportFormats:`Formats d'exportation`,exportMaxRecords:`Enregistrements max`,exportIncludeHeaders:`Inclure les en-têtes`,exportFileNamePrefix:`Préfixe du nom de fichier`,searchableFields:`Champs recherchables`,filterableFields:`Champs filtrables`,resizableColumns:`Colonnes redimensionnables`,densityCompact:`Compact`,densityComfortable:`Normal`,densitySpacious:`Spacieux`,densityMode:`Mode de densité`,hiddenFields:`Champs masqués`,rowActions:`Actions de ligne`,bulkActions:`Actions en masse`,sharing:`Partage`,sharingEnabled:`Partage activé`,sharingVisibility:`Visibilité`,addRecordEnabled:`Ajout d'enregistrement activé`,addRecordPosition:`Position`,addRecordMode:`Mode`,addRecordFormView:`Vue formulaire`,conditionalFormatting:`Mise en forme conditionnelle`,addRule:`Ajouter une règle`,quickFilters:`Filtres rapides`,addQuickFilter:`Ajouter un filtre rapide`,ufElements:`Éléments`,ufDropdown:`Liste déroulante`,ufTabs:`Onglets`,ufToggle:`Bascule`,ufAddField:`+ Ajouter un champ de filtre...`,ufNoFields:`Aucun champ disponible`,ufAddTab:`+ Ajouter un onglet`,ufTabLabel:`Étiquette`,ufShowAllRecords:`Afficher l'onglet "Tous les enregistrements"`,ufAllowAddTab:`Autoriser l'ajout d'onglets`,showRecordCount:`Afficher le nombre d'enregistrements`,allowPrinting:`Autoriser l'impression`,virtualScroll:`Défilement virtuel`,emptyStateTitle:`Titre de l'état vide`,emptyStateMessage:`Message de l'état vide`,emptyStateIcon:`Icône de l'état vide`,ariaLabel:`Étiquette ARIA`,ariaDescribedBy:`Décrit par ARIA`,ariaLive:`ARIA en direct`,accessibility:`Accessibilité`,viewTabs:`Onglets de vue`},localeSwitcher:{label:`Langue`},search:`Rechercher…`,nav:{pinItem:`Épingler {{name}}`,unpinItem:`Désépingler {{name}}`,dragToReorder:`Glisser pour réorganiser`,favorites:`Favoris`}},auth:{login:{title:`Connectez-vous à votre compte`,description:`Entrez votre e-mail et votre mot de passe pour continuer`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Mot de passe`,passwordPlaceholder:`Entrez votre mot de passe`,forgotPasswordText:`Mot de passe oublié ?`,submitButton:`Se connecter`,submittingButton:`Connexion en cours...`,noAccountText:`Vous n'avez pas de compte ?`,signUpText:`S'inscrire`,errors:{invalidCredentials:`E-mail ou mot de passe invalide. Veuillez réessayer.`,emailNotVerified:`Veuillez vérifier votre adresse e-mail avant de vous connecter.`}},register:{title:`Créer un compte`,description:`Entrez vos informations pour commencer`,nameLabel:`Nom`,namePlaceholder:`Jean Dupont`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Mot de passe`,passwordPlaceholder:`Créer un mot de passe (min. 8 caractères)`,confirmPasswordLabel:`Confirmer le mot de passe`,confirmPasswordPlaceholder:`Confirmez votre mot de passe`,passwordMismatchError:`Les mots de passe ne correspondent pas`,passwordTooShortError:`Le mot de passe doit contenir au moins 8 caractères`,submitButton:`Créer un compte`,submittingButton:`Création du compte...`,hasAccountText:`Vous avez déjà un compte ?`,signInText:`Se connecter`,errors:{userExists:`Un compte avec cet e-mail existe déjà. Essayez de vous connecter.`},verifyInbox:{title:`Vérifiez votre boîte de réception`,description:`Nous avons envoyé un lien de vérification à {{email}}. Cliquez sur le lien pour activer votre compte.`,resend:`Renvoyer l'e-mail de vérification`,resending:`Envoi…`,resent:`E-mail de vérification envoyé.`,backToSignIn:`Retour à la connexion`}},forgotPassword:{title:`Réinitialiser votre mot de passe`,description:`Entrez votre adresse e-mail et nous vous enverrons un lien pour réinitialiser votre mot de passe`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,submitButton:`Envoyer le lien de réinitialisation`,submittingButton:`Envoi en cours...`,successTitle:`Vérifiez vos e-mails`,successDescription:`Nous avons envoyé un lien de réinitialisation du mot de passe à {{email}}. Veuillez vérifier votre boîte de réception.`,backToSignInText:`Retour à la connexion`,rememberPasswordText:`Vous vous souvenez de votre mot de passe ?`,signInText:`Se connecter`},resetPassword:{title:`Définir un nouveau mot de passe`,description:`Choisissez un mot de passe que vous n'avez pas utilisé auparavant.`,newPassword:`Nouveau mot de passe`,confirmPassword:`Confirmer le mot de passe`,submit:`Mettre à jour le mot de passe`,submitting:`Mise à jour…`,success:`Mot de passe mis à jour`,failed:`Échec de la réinitialisation`,invalidToken:`Ce lien de réinitialisation est invalide ou a expiré.`,missingToken:`Le lien de réinitialisation est manquant ou a expiré`,passwordsMismatch:`Les mots de passe ne correspondent pas`,requestNewLink:`Demander un nouveau lien`},verifyEmail:{title:`Vérifier l'adresse e-mail`,description:`Nous avons envoyé un lien de vérification à votre adresse e-mail. Cliquez sur le lien pour vérifier votre compte.`,sentTo:`Envoyé à :`,verifyingTitle:`Vérification…`,verifyingDescription:`Nous vérifions votre e-mail. Veuillez patienter.`,successTitle:`E-mail vérifié`,successDescription:`Votre e-mail a été vérifié. Vous pouvez maintenant vous connecter.`,errorTitle:`Échec de la vérification`,errorDescription:`La vérification a échoué. Veuillez demander un nouveau lien.`,missingToken:`Il manque un token dans le lien de vérification.`,emailMissing:`Adresse e-mail manquante`,resendButton:`Renvoyer l'e-mail de vérification`,resending:`Envoi…`,resent:`E-mail envoyé ! Vérifiez votre boîte de réception`,resentSuccess:`E-mail de vérification envoyé !`,resentDescription:`Veuillez vérifier votre boîte de réception et cliquer sur le lien de vérification.`,resendFailed:`Impossible de renvoyer l'e-mail de vérification`,signInLink:`Aller à la connexion`,backToSignIn:`Retour à la connexion`,backToLogin:`Retour à la connexion`,checkSpam:`E-mail non reçu ? Vérifiez votre dossier spam ou contactez le support.`,or:`Ou`},setup:{welcomeTitle:`Bienvenue sur ObjectStack`,description:`Créez le premier compte propriétaire pour terminer la configuration.`,yourName:`Votre nom`,orgName:`Nom de l'organisation`,orgNamePlaceholder:`Entreprise Exemple SA`,emailLabel:`E-mail`,emailPlaceholder:`nom@exemple.fr`,passwordLabel:`Mot de passe`,passwordHint:`Au moins 8 caractères`,submit:`Créer le compte propriétaire`,submitting:`Configuration…`,failed:`Échec de la configuration`},device:{title:`Autoriser un nouvel appareil`,subtitle:`Approuvez cet appareil pour vous connecter en tant que {{email}}.`,userCodeLabel:`Code de l'appareil`,loggedInAs:`Connecté en tant que {{email}}`,approve:`Approuver l'appareil`,approving:`Approbation…`,approvedTitle:`Appareil autorisé`,approvedDescription:`Vous pouvez revenir à l'appareil — il devrait se connecter sous peu.`,approveSuccess:`Appareil autorisé`,approveSuccessDescription:`Vous pouvez fermer cette fenêtre.`,approveFailed:`Échec de l'approbation`,deny:`Refuser la demande`,denying:`Refus…`,deniedTitle:`Accès refusé`,deniedDescription:`L'accès ne sera pas accordé à l'appareil.`,denyFailed:`Impossible de refuser la demande`,invalidTitle:`Lien d'appareil invalide`,invalidDescription:`Aucun code d'appareil n'a été fourni dans l'URL.`,loading:`Chargement…`,cancel:`Annuler`},shell:{tenantHostHint:`Vous vous connectez à cet espace de travail`}},errors:{networkError:`Erreur réseau. Veuillez vérifier votre connexion.`,serverError:`Erreur serveur. Veuillez réessayer plus tard.`,notFound:`Ressource introuvable.`,unauthorized:`Vous n'êtes pas autorisé à effectuer cette action.`,forbidden:`Accès refusé.`,timeout:`Délai d'attente dépassé. Veuillez réessayer.`,unknown:`Une erreur inattendue s'est produite.`},workspace:{label:`Espaces de travail`,default:`Mon espace de travail`,switch:`Changer d'espace de travail`,create:`Créer un espace de travail`,createTitle:`Créer un espace de travail`,createDescription:`Un espace de travail est un lieu partagé pour la collaboration de votre équipe.`,createButton:`Créer un espace de travail`,nameLabel:`Nom de l'espace de travail`,namePlaceholder:`p.ex., Acme Inc`,slugLabel:`Slug URL`,slugHint:`Utilisé dans les URL. Uniquement lettres minuscules, chiffres et tirets.`,invite:`Inviter un membre`,members:`Membres`,settings:`Paramètres de l'espace de travail`},sidebar:{settings:`Paramètres`,help:`Aide`,helpTooltip:`Aide et documentation`,activityFeed:`Flux d'activité`,notifications:`Notifications`,approvals:`Approbations`,inbox:`Boîte de réception`,inboxAriaLabel:`Ouvrir la boîte de réception`,area:`Zone`,recent:`Récent`,favorites:`Favoris`,starred:`Étoilés`,removeFromFavorites:`Retirer {{name}} des favoris`},home:{title:`Accueil`,subtitle:`Tableau de bord de votre espace de travail`,nav:`Accueil`,allApps:`Toutes les applications`,loading:`Chargement de l'espace de travail...`,recent:`Récent`,starred:`Favoris`,welcome:`Bienvenue dans ObjectUI`,welcomeDescription:`Commencez par créer votre première application ou configurer les paramètres système.`,createFirstApp:`Créez votre première app`,systemSettings:`Paramètres système`,browseMarketplace:`Parcourir la marketplace d'apps`,quickActions:{title:`Actions rapides`,createApp:`Créer une app`,createAppDesc:`Commencez avec une nouvelle application`,manageObjects:`Gérer les objets`,manageObjectsDesc:`Configurer les modèles de données`,systemSettings:`Paramètres système`,systemSettingsDesc:`Configurez votre espace de travail`},appCard:{noDescription:`Aucune description`,default:`Par défaut`},greetingMorning:`Bonjour`,greetingAfternoon:`Bon après-midi`,greetingEvening:`Bonsoir`,greetingNight:`Travail de nuit`,heroTagline:`Reprenez là où vous vous êtes arrêté ou découvrez quelque chose de nouveau.`,open:`Ouvrir`,stats:{apps:`Applications`,starred:`Étoilés`,recent:`Récents`},recentApps:{title:`Récemment ouverts`,itemType:{object:`Objet`,dashboard:`Tableau de bord`,page:`Page`,record:`Enregistrement`}},starredApps:{title:`Étoilés`},gettingStarted:{title:`Personnaliser l'accueil`,description:`Marquez une application en favori pour l'épingler ici et y accéder en un clic. Tout ce que vous ouvrez apparaîtra automatiquement sous "Récemment ouverts".`,cta:`Parcourir toutes les applications`}},layout:{appSwitcher:{home:`Accueil`,addApp:`Ajouter une application`,editApp:`Modifier l'application`,manageAllApps:`Gérer toutes les applications`,systemConsole:`Console système`,noAppsConfigured:`Aucune application configurée`},activityFeed:{title:`Activité récente`,filter:`Filtrer`,empty:`Aucune activité récente`,ariaLabel:`Fil d'activité`,typeCreate:`Créer`,typeUpdate:`Mettre à jour`,typeDelete:`Supprimer`,typeComment:`Commentaire`,relativeJustNow:`à l'instant`,relativeSecondsAgo:`il y a {{count}}s`,relativeMinutesAgo:`il y a {{count}}m`,relativeHoursAgo:`il y a {{count}}h`,relativeDaysAgo:`il y a {{count}}j`,viewAll:`Voir toute l'activité`},metadata:{label:`Métadonnées`,toggleTitle:`Basculer l'inspecteur de métadonnées`,panelTitle:`Inspecteur de métadonnées`,jsonBadge:`JSON`,copyJson:`Copier JSON`}},search:{title:`Rechercher`,back:`Retour`,placeholder:`Rechercher des objets, tableaux de bord, pages, rapports...`,inputAriaLabel:`Rechercher des objets, tableaux de bord, pages, rapports`,resultsCount:`{{count}} résultat pour "{{query}}"`,resultsCountPlural:`{{count}} résultats pour "{{query}}"`,itemsAvailable:`{{count}} éléments disponibles`,noResults:`Aucun résultat trouvé`,noResultsHint:`Essayez d'ajuster vos termes de recherche`,typeObjects:`Objets`,typeDashboards:`Tableaux de bord`,typePages:`Pages`,typeReports:`Rapports`,badgeObject:`Objet`,badgeDashboard:`Tableau de bord`,badgePage:`Page`,badgeReport:`Rapport`},empty:{objectNotFound:`Objet introuvable`,objectNotFoundDescription:`La définition de l'objet "{{name}}" est manquante. Vérifiez votre configuration ou revenez en arrière.`,pageNotFound:`Page introuvable`,pageNotFoundDescription:`La page "{{name}}" est introuvable. Elle a peut-être été supprimée ou renommée.`,dashboardNotFound:`Tableau de bord introuvable`,dashboardNotFoundDescription:`Le tableau de bord "{{name}}" est introuvable. Il a peut-être été supprimé ou renommé.`,reportNotFound:`Rapport introuvable`,reportNotFoundDescription:`Le rapport "{{name}}" est introuvable. Il a peut-être été supprimé ou renommé.`,noAppsConfigured:`Aucune application configurée`,noAppsConfiguredDescription:`Aucune application n'est enregistrée. Créez votre première application ou visitez les paramètres système.`,createFirstApp:`Créer la première application`,systemSettings:`Paramètres système`,back:`Retour`,recordNotFound:`Enregistrement introuvable`,recordNotFoundDescription:`L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.`},renderer:{noPageSchema:`Aucun schéma de page fourni`,noFormSchema:`Aucun schéma de formulaire fourni`,noDashboardSchema:`Aucun schéma de tableau de bord fourni`,pageRendering:`Rendu de la page : {{name}}`,dashboardRendering:`Rendu du tableau de bord : {{name}}`,formRenderingMode:`Formulaire rendu en mode {{mode}}`,formRenderingFor:`pour l'enregistrement {{id}}`,createRecord:`Créer un enregistrement`,editRecord:`Modifier l'enregistrement`,page:`Page`,dashboard:`Tableau de bord`,save:`Enregistrer`,cancel:`Annuler`},actionDialog:{title:`Paramètres d'action`,description:`Veuillez saisir les informations requises pour continuer.`,selectPlaceholder:`Sélectionner {{label}}`,requiredError:`{{label}} est obligatoire`,cancel:`Annuler`,confirm:`Confirmer`,defaultActionTitle:`Action`,ok:`OK`,lookupPlaceholder:`Coller l'ID d'enregistrement (UUID) pour {{label}}`,lookupHelpText:`Entrez l'ID de l'enregistrement de l'objet référencé. Un sélecteur sera bientôt ajouté.`},rowAction:{openMenu:`Ouvrir le menu`,edit:`Modifier`,delete:`Supprimer`},navigationSync:{addedPage:`Navigation mise à jour : page "{{name}}" ajoutée`,addedDashboard:`Navigation mise à jour : tableau de bord "{{name}}" ajouté`,removedPage:`Navigation mise à jour : page "{{name}}" supprimée`,removedDashboard:`Navigation mise à jour : tableau de bord "{{name}}" supprimé`,renamedPage:`Navigation mise à jour : page "{{oldName}}" renommée en "{{newName}}"`,renamedDashboard:`Navigation mise à jour : tableau de bord "{{oldName}}" renommé en "{{newName}}"`,undoLabel:`Annuler`,undone:`Modification de navigation annulée`,undoFailed:`Impossible d'annuler la modification de navigation`,updateFailed:`Impossible de mettre à jour la navigation`},objectActions:{deleteSuccess:`{{label}} supprimé avec succès`,deleteFailed:`Impossible de supprimer {{label}}`,noRecordId:`Aucun ID d'enregistrement fourni`,deleteConfirm:`Supprimer cet enregistrement ?`,bulkDeleteSuccess:`{{count}} enregistrement(s) {{label}} supprimé(s)`,bulkDeletePartial:`{{succeeded}} supprimé(s), {{failed}} échoué(s)`},objectViewActions:{renameFailed:`Impossible de renommer la vue`,deleteFailed:`Impossible de supprimer la vue`},dashboardActions:{pdfPreparing:`Préparation de l'export PDF…`,exportFailed:`Échec de l'export : {{message}}`,forecastSoon:`La vue de prévision arrive bientôt`},recordDetail:{viewersTooltip:`Utilisateurs consultant cet enregistrement en ce moment`},cellRender:{empty:`Vide`,yes:`Oui`,no:`Non`,systemFields:`Système`},user:{profile:`Profil`,settings:`Paramètres`,logout:`Se déconnecter`,preferences:`Préférences`,theme:`Thème`,language:`Langue`},report:{rowTotal:`Total ligne`,columnTotal:`Total colonne`,grandTotal:`Total général`,totals:`Totaux`,rowsLabel:`Ligne`,columnsLabel:`Colonne`,allLabel:`(Tout)`,emptyLabel:`(Vide)`,loading:`Chargement…`,failedToLoad:`Échec du chargement de la matrice : {{message}}`,needsAcross:"Le rapport matriciel nécessite au moins un champ `groupingsAcross`.",aggregate:{count:`Compter`,countDistinct:`Compter distincts`,sum:`Somme`,avg:`Moyenne`,min:`Minimum`,max:`Maximum`,first:`Premier`},editor:{breadcrumb:`Configuration`,basic:`Général`,title:`Titre`,titlePlaceholder:`ex. Pipeline par trimestre`,description:`Description`,descriptionPlaceholder:`Que montre ce rapport ?`,type:`Type de rapport`,typeTabular:`Tableau — liste à plat`,typeSummary:`Résumé — regroupé avec totaux`,typeMatrix:`Matrice — pivot lignes × colonnes`,typeJoined:`Combiné — plusieurs blocs`,typeHelp:`Choisissez la mise en page correspondant à ce que vous voulez voir.`,data:`Données`,objectName:`Source de données`,objectNamePlaceholder:`ex. opportunity`,objectNameHelp:`Quel objet ce rapport doit-il interroger ?`,limit:`Limite de lignes`,limitPlaceholder:`ex. 100`,columns:`Colonnes`,columnsHint:`Choisissez les champs à afficher en colonnes. Ajoutez une agrégation (Somme, Nombre…) dans les rapports Résumé ou Matrice.`,filters:`Filtres`,filtersHint:`Limitez les lignes incluses dans ce rapport.`,filtersComplex:`Ce rapport utilise un filtre avancé qui ne peut pas être édité ici. L’enregistrement le conservera tel quel.`,groupBy:`Grouper par`,groupByHint:`Regrouper les données et calculer les sous-totaux.`,rows:`Lignes`,rowsHint:`Grouper les lignes par ces champs.`,columnsAxis:`Colonnes`,columnsAxisHint:`Pivoter ces champs en haut.`,values:`Valeurs`,valuesHint:`Nombres affichés dans chaque cellule. Choisissez un ou plusieurs champs et ajoutez une agrégation (Somme, Nombre…).`,grouping:`Groupement`,addGrouping:`Ajouter un groupement`,dateGranularity:`Granularité de la date`,dateGranularityNone:`(valeur brute)`,day:`Jour`,week:`Semaine`,month:`Mois`,quarter:`Trimestre`,year:`Année`,sortAsc:`Croissant`,sortDesc:`Décroissant`,chart:`Graphique`,chartHint:`Visualisation optionnelle affichée à côté du tableau.`,chartType:`Type de graphique`,chartTitle:`Titre du graphique`,chartTitlePlaceholder:`Par défaut, le titre du rapport`,chartXAxis:`Axe X (catégorie)`,chartYAxis:`Axe Y (valeur)`,chartShowLegend:`Afficher la légende`,chartShowDataLabels:`Afficher les étiquettes`,chartNone:`(aucun graphique)`,chartBar:`Barres`,chartLine:`Courbe`,chartArea:`Aires`,chartPie:`Camembert`,chartDonut:`Anneau`,chartFunnel:`Entonnoir`,validationNeedsObject:`Sélectionnez une source de données avant d’ajouter des colonnes.`,validationMatrixNeedsRowsCols:`Les rapports matriciels nécessitent au moins une ligne et une colonne.`,validationSummaryNeedsRows:`Les rapports résumés nécessitent au moins un champ de regroupement.`,blocks:`Blocs`,blocksHint:`Chaque bloc est son propre tableau ou graphique. Les filtres de bloc sont combinés (ET) avec le filtre du rapport.`,addBlock:`Ajouter un bloc`,removeBlock:`Supprimer le bloc`,blockName:`Nom du bloc`,blockNamePlaceholder:`nom_unique_du_bloc`,blockLabel:`Libellé d’affichage`,blockLabelPlaceholder:`Affiché au-dessus du bloc`,blockDescription:`Description`,blockDescriptionPlaceholder:`Contexte optionnel pour ce bloc`,validationJoinedNeedsBlocks:`Les rapports combinés nécessitent au moins un bloc.`,validationBlockNameRequired:`Chaque bloc doit avoir un nom non vide.`,validationBlockNameDuplicate:`Les noms de bloc doivent être uniques dans le rapport.`,validationBlockNeedsColumns:`Chaque bloc doit avoir au moins une colonne.`,noneOption:`(aucun)`,addCondition:`Ajouter une condition`,combineLogic:`Combiner avec`,opContains:`contient`,opIsEmpty:`est vide`,opIsNotEmpty:`n’est pas vide`,formatAuto:`Auto`,formatCurrency:`Devise`,formatPercent:`Pourcentage`,formatInteger:`Entier`,formatDate:`Date`,formatDatetime:`Date et heure`,columnLabelPlaceholder:`Remplacer le libellé`,aggregateColumn:`Agrégation`,formatColumn:`Format`,addColumns:`Ajouter des colonnes`,searchFields:`Rechercher des champs…`,noMatchingFields:`Aucun champ ne correspond à votre recherche.`,noFieldsAvailable:`Aucun champ disponible.`,columnsCount:`{n} colonne(s) sélectionnée(s)`,columnsEmpty:`Aucune colonne sélectionnée pour l'instant.`,fieldPickerTitle:`Sélectionner des champs`,fieldPickerDescription:`Choisissez un ou plusieurs champs à ajouter. Utilisez le champ de recherche pour filtrer la liste.`,fieldPickerChangeTitle:`Changer le champ`,fieldPickerAddGroupingTitle:`Ajouter un regroupement`,fieldPickerEmpty:`(Sélectionner un champ)`,fieldPickerSelected:`{n} sélectionné(s)`,fieldPickerClear:`Effacer la sélection`,fieldPickerAdd:`Ajouter`,fieldPickerAddN:`Ajouter {n}`}},organizations:{mine:`Mes organisations`,title:`Organisations`,heading:`Vos organisations`,subtitle:`Sélectionnez une organisation pour continuer ou créez-en une nouvelle.`,searchPlaceholder:`Rechercher une organisation`,new:`Nouvelle organisation`,current:`Organisation actuelle`,manage:`Gérer`,emptyTitle:`Aucune organisation pour le moment`,emptyDescription:`Créez votre première organisation pour commencer.`,noMatches:`Aucune organisation ne correspond à votre recherche.`},notifications:{empty:`Aucune notification`,markAllRead:`Tout marquer comme lu`,viewAll:`Voir toutes les notifications`,approvalsPending:`{{count}} approbations en attente`,viewApprovals:`Voir les approbations`,noPendingApprovals:`Aucune approbation en attente`,openApprovalsInbox:`Ouvrir la boîte d'approbations`,emptyUnread:`Tout est lu`,filterUnread:`Non lus`,filterAll:`Tous`},publicForm:{submit:`Envoyer`,submitting:`Envoi…`,submitAnother:`Envoyer une autre réponse`,poweredBy:`Propulsé par ObjectStack`,secureNotice:`Vos informations sont transmises en toute sécurité et utilisées uniquement pour traiter votre demande.`,thankYouTitle:`Merci !`,thankYouMessage:`Votre soumission a été reçue avec succès.`,redirecting:`Redirection dans {{seconds}} seconde(s)…`,unavailableTitle:`Formulaire non disponible`,unavailableDescription:`Aucun formulaire public n'est disponible à cette URL. Assurez-vous que la vue sous-jacente a le partage anonyme activé.`,tryDemo:`Essayer la démo`,retry:`Réessayer`,loading:`Chargement du formulaire…`,requiredHint:`* Champ obligatoire`,consentLabelDefault:`J'accepte la politique de confidentialité et consens au traitement de mes données pour cette demande.`,consentLink:`Politique de confidentialité`,consentRequired:`Veuillez accepter la politique de confidentialité pour continuer.`,rateLimited:`Prenez un moment pour vérifier vos réponses avant d'envoyer.`,redirectBlocked:`Soumission acceptée, mais l'URL de redirection a été bloquée pour des raisons de sécurité.`,demo:{contactTitle:`Nous contacter`,contactDescription:`Parlez-nous de votre projet et un représentant commercial vous contactera dans un jour ouvrable.`,supportTitle:`Soumettre une demande d'assistance`,supportDescription:`Décrivez-nous le problème — notre équipe répondra dans un jour ouvrable.`,thankYouSalesTitle:`Merci — nous avons reçu votre message !`,thankYouSalesMessage:`Un représentant commercial vous contactera dans un jour ouvrable.`,thankYouSupportTitle:`C'est bon — votre demande est en file d'attente.`,thankYouSupportMessage:`Un ingénieur d'assistance vous fera un suivi bientôt. Sauvegardez cette page si vous avez des captures d'écran supplémentaires.`,field:{firstName:`Prénom`,lastName:`Nom`,email:`E-mail professionnel`,phone:`Téléphone`,jobTitle:`Titre du poste`,company:`Entreprise`,website:`Site web`,industry:`Secteur`,companySize:`Taille de l'entreprise`,howCanWeHelp:`Comment pouvons-nous vous aider ?`,subject:`Sujet`,description:`Description`,issueType:`Type de problème`,priority:`Priorité`},industry:{technology:`Technologie`,software:`Logiciel / SaaS`,finance:`Finance`,healthcare:`Santé`,retail:`Commerce de détail`,other:`Autre`},issueType:{question:`Question`,problem:`Problème`,bug:`Bug`,feature_request:`Demande de fonctionnalité`},priority:{low:`Faible`,medium:`Moyen`,high:`Élevé`,critical:`Critique`}}},marketplace:{title:`Marketplace d'applications`,subtitle:`Parcourez les applications approuvées publiées dans le catalogue ObjectStack. Cliquez sur une application pour voir les détails et l'installer dans l'un de vos environnements.`,searchPlaceholder:`Rechercher des applications par nom ou ID de manifeste…`,searchAria:`Rechercher des applications du marketplace`,installed:`Installé`,installedCount:`Installées ({{count}})`,refresh:`Actualiser`,all:`Toutes`,noApprovedYet:`Aucune application approuvée pour le marketplace pour l'instant.`,noMatchFilters:`Aucune application ne correspond à vos filtres.`,noDescription:`Aucune description disponible.`,back:`Retour au marketplace`,installedTitle:`Applications installées`,installedSubtitle:`Paquets du marketplace actuellement installés dans le noyau de ce runtime.`,installedEmpty:`Aucune application du marketplace installée dans ce runtime pour l'instant.`,browseLink:`Parcourir le marketplace →`,installedAdditiveNote:`<strong>Remarque :</strong> L'API du noyau est uniquement additive — la désinstallation supprime le manifeste du disque pour que le paquet ne se charge pas au prochain démarrage, mais le noyau en cours d'exécution maintient l'application enregistrée jusqu'au redémarrage.`,installedAt:`Installé {{when}}`,installedBy:`par {{user}}`,installedPackageId:`Paquet`,cachedAs:`Mis en cache sous <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Installé v{{version}}`,load:{failed:`Impossible de charger le marketplace`,failedHint:`Par défaut, ce runtime pointe vers le cloud public ObjectStack. Assurez-vous que le runtime est en ligne.`,packageFailed:`Impossible de charger le paquet`,notFound:`Introuvable.`},detail:{homepage:`Page d'accueil`,installedV:`Installé · v{{version}}`,about:`À propos`,noReadme:`Aucun readme disponible.`,versions:`Versions`,noApprovedVersions:`Aucune version approuvée.`,prerelease:`Prélancement`,moreOptions:`Plus d'options d'installation`,uninstallFromRuntime:`Désinstaller de ce runtime`},action:{install:`Installer`,reinstall:`Réinstaller`,working:`Traitement…`,installToCloud:`Installer dans le cloud…`,installing:`Installation…`,uninstall:`Désinstaller`,uninstalling:`Désinstallation…`,details:`Détails`,close:`Fermer`,dismiss:`Fermer`,openOnCloud:`Ouvrir dans le cloud`,backHome:`Retour à l'accueil`},install:{dialogTitle:`Installer {{name}}`,dialogDescCurrent:`Installer dans cet environnement ({{host}}).`,dialogDescPicker:`Choisissez un environnement où installer cette application. Vous devez être connecté à ObjectStack Cloud.`,environment:`Environnement`,environmentPlaceholder:`Sélectionner un environnement`,includeSampleData:`Inclure des données d'exemple`,noEnvs:`Aucun environnement trouvé dans votre organisation active.`,noPermission:`Vous n'avez pas la permission d'installer des applications dans un environnement. Seuls les propriétaires et administrateurs de l'organisation peuvent installer.`,signInFirst:`Vous devez d'abord vous connecter à ObjectStack Cloud.`,success:`Installé avec succès. Ouvrez l'environnement pour voir la nouvelle application.`,localSuccess:`v{{version}} installé dans ce runtime. "{{name}}" devrait maintenant apparaître dans le sélecteur d'applications.`,localManifestConflict:`{{message}}
|
|
20
|
+
Remarque : Une application locale possède déjà ce manifest_id. Supprimez-la d'abord de objectstack.config.ts.`,localUnauthorized:`Connectez-vous d'abord à ce runtime.`,localMarketplaceUnavailable:`Ce runtime n'a pas de OS_CLOUD_URL configuré.`},uninstall:{confirm:`Désinstaller {{manifestId}} v{{version}} de ce runtime ?
|
|
21
|
+
|
|
22
|
+
Le manifeste en cache sera supprimé.`,successInList:`{{manifestId}} supprimé. Redémarrez le runtime pour le décharger complètement.`,successInDetail:`Manifeste en cache pour {{manifestId}} supprimé.`},accessDenied:{title:`Marketplace réservé aux administrateurs`,description:`Vous n'avez pas la permission d'installer des applications dans cet environnement.`},category:{crm:`CRM`,erp:`ERP`,hr:`RH`,finance:`Finance`,project:`Gestion de projet`,collaboration:`Collaboration`,analytics:`Analytique`,integration:`Intégration`,automation:`Automatisation`,ai:`IA`,security:`Sécurité`,"developer-tools":`Outils développeur`,"ui-theme":`Thème UI`,storage:`Stockage`,other:`Autre`},pricing:{free:`Gratuit`,freemium:`Freemium`,paid:`Payant`,subscription:`Abonnement`,"usage-based":`À l'utilisation`,"contact-sales":`Contacter les ventes`},relativeTime:{today:`aujourd'hui`,daysAgo:`il y a {{count}}j`,monthsAgo:`il y a {{count}} mois`,yearsAgo:`il y a {{count}} ans`}}},es:{common:{addToFavorites:`Añadir a favoritos`,removeFromFavorites:`Quitar de favoritos`,loading:`Cargando...`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,create:`Crear`,search:`Buscar`,filter:`Filtrar`,reset:`Restablecer`,confirm:`Confirmar`,close:`Cerrar`,back:`Atrás`,next:`Siguiente`,previous:`Anterior`,submit:`Enviar`,refresh:`Actualizar`,export:`Exportar`,import:`Importar`,yes:`Sí`,no:`No`,ok:`Aceptar`,actions:`Acciones`,more:`Más`,selectAll:`Seleccionar todo`,clearAll:`Borrar todo`,noData:`Sin datos`,noResults:`No se encontraron resultados`,required:`Obligatorio`,optional:`Opcional`,selectOption:`Seleccionar una opción`,select:`Seleccionar...`,openChat:`Abrir chat`,closeChat:`Cerrar chat`,toggleSidebar:`Alternar barra lateral`},validation:{required:`{{field}} es obligatorio`,minLength:`{{field}} debe tener al menos {{min}} caracteres`,maxLength:`{{field}} debe tener como máximo {{max}} caracteres`,min:`{{field}} debe ser al menos {{min}}`,max:`{{field}} debe ser como máximo {{max}}`,email:`Por favor, introduzca un correo electrónico válido`,url:`Por favor, introduzca una URL válida`,pattern:`El formato de {{field}} no es válido`,unique:`{{field}} debe ser único`,type:`{{field}} debe ser un {{type}} válido`},form:{addItem:`Añadir elemento`,removeItem:`Eliminar elemento`,fieldRequired:`Este campo es obligatorio`,invalidFormat:`Formato no válido`,saveSuccess:`Guardado correctamente`,saveError:`Error al guardar`,unsavedChanges:`Tiene cambios sin guardar. ¿Está seguro de que desea salir?`,stepOf:`Paso {{current}} de {{total}}`,createTitle:`Crear {{object}}`,editTitle:`Editar {{object}}`,createDescription:`Agregar un nuevo {{object}} a su base de datos.`,editDescription:`Actualizar detalles de {{object}}`,saveRecord:`Guardar registro`,create:`Crear`,update:`Actualizar`,createSuccess:`{{object}} creado`,updateSuccess:`{{object}} actualizado`,deleteSuccess:`{{object}} eliminado`},fields:{richText:{format:`Formato: {{format}}`,basicEditorHint:`Editor de texto enriquecido (básico)`,placeholder:`Escribe algo...`}},table:{rowsPerPage:`Filas por página`,showing:`Mostrando {{from}} a {{to}} de {{total}}`,noRows:`No hay filas para mostrar`,sortAsc:`Ordenar ascendente`,sortDesc:`Ordenar descendente`,filterColumn:`Filtrar {{column}}`,columns:`Columnas`,exportCSV:`Exportar CSV`,exportExcel:`Exportar Excel`,selectRow:`Seleccionar fila`,selectAllRows:`Seleccionar todas las filas`,expandRow:`Expandir fila`,collapseRow:`Contraer fila`,hideColumn:`Ocultar columna`,freezeColumn:`Fijar columna`,unfreezeColumn:`Desfijar columna`,pageInfo:`Página {{current}} de {{total}}`,totalRecords:`{{count}} en total`,noResults:`Sin resultados`,noResultsHint:`Intente ajustar sus filtros o términos de búsqueda.`,cancelAll:`Cancelar todo`,saveAll:`Guardar todo ({{count}})`,addRecord:`Agregar registro`,open:`Abrir`,search:`Buscar...`,modified:`{{count}} filas modificadas`,selected:`{{count}} seleccionados`,edit:`Editar`,delete:`Eliminar`},grid:{actions:`Acciones`,edit:`Editar`,delete:`Eliminar`,export:`Exportar`,exportAs:`Exportar como {{format}}`,loading:`Cargando cuadrícula...`,errorLoading:`Error al cargar la cuadrícula`,pullToRefresh:`Desliza para actualizar`,refreshing:`Actualizando…`,openRecord:`Abrir registro`,rowHeight:`Altura de fila: {{mode}}`,openMenu:`Abrir menú`,empty:`Vacío`,yes:`Sí`,no:`No`,systemFields:`Sistema`,toolbar:{densityMode:`Densidad`,densityCompact:`Compacto`,densityComfortable:`Normal`,densitySpacious:`Espacioso`,densityCycleHint:`{{label}} (clic para cambiar)`,densityCycleShortHint:`Clic para cambiar`},import:{title:`Importar {{object}}`,stepUpload:`Cargar`,stepMapping:`Asignación`,stepPreview:`Vista previa`,uploadDescription:`Cargue un archivo CSV para comenzar.`,mappingDescription:`Asigne columnas CSV a los campos del objeto.`,previewDescription:`Revise los datos antes de importar.`,dragDrop:`Arrastre el archivo CSV aquí o haga clic para buscar`,browseFiles:`Buscar archivos`,onlyCsv:`Solo se admiten archivos CSV.`,fileNeedsHeader:`El archivo debe tener una fila de encabezado y al menos una fila de datos.`,mappingTemplate:`Plantilla de asignación:`,chooseTemplate:`Elegir plantilla…`,noSavedTemplates:`Sin plantillas guardadas`,noneOption:`— Ninguno —`,saveCurrent:`Guardar actual`,templateName:`Nombre de la plantilla`,save:`Guardar`,deleteTemplate:`Eliminar plantilla`,csvColumn:`Columna CSV`,mapsTo:`Se asigna a`,status:`Estado`,skipColumn:`Omitir columna`,skip:`— Omitir —`,mapped:`Asignado`,skipped:`Omitido`,rowsWithErrors:`{{count}} fila(s) con errores`,rowsCorrected:`{{count}} fila(s) corregida(s)`,clickToFix:`— haga clic en una celda resaltada para editar en línea.`,showingRows:`Mostrando {{shown}} de {{total}} filas`,importing:`Importando… {{progress}}%`,importComplete:`Importación completada`,imported:`{{count}} importado(s)`,skippedCount:`{{count}} omitido(s)`,moreErrors:`…y {{count}} error(es) más`,cancel:`Cancelar`,back:`Atrás`,next:`Siguiente`,close:`Cerrar`,importNRows:`Importar {{count}} filas`,importingProgress:`Importando…`,requiredMark:`*`,required:`Obligatorio`,invalidType:`{{type}} inválido`}},calendar:{today:`Hoy`,month:`Mes`,week:`Semana`,day:`Día`,agenda:`Agenda`,allDay:`Todo el día`,noEvents:`Sin eventos`,newEvent:`Nuevo evento`,moreEvents:`+{{count}} más`},list:{recordCount:`{{count}} registros`,recordCountOne:`{{count}} registro`,addRecord:`Agregar registro`,tabs:`Pestañas`,allRecords:`Todos los registros`,search:`Buscar`,filter:`Filtrar`,filterRecords:`Filtrar registros`,sort:`Ordenar`,sortRecords:`Ordenar registros`,group:`Agrupar`,groupBy:`Agrupar por`,export:`Exportar`,exportAs:`Exportar como {{format}}`,color:`Color`,rowColor:`Color de fila`,colorByField:`Colorear por campo`,clear:`Borrar`,none:`Ninguno`,hideFields:`Ocultar campos`,noItems:`No se encontraron elementos`,noItemsMessage:`No hay registros para mostrar. Intente ajustar los filtros o agregar nuevos datos.`,showAll:`Mostrar todo`,pullToRefresh:`Tirar para actualizar`,refreshing:`Actualizando…`,share:`Compartir`,print:`Imprimir`,hideFieldsTitle:`Ocultar campos`,dataLimitReached:`Se muestran los primeros {{limit}} registros. Puede haber más datos disponibles.`,viewSettings:`Configuración de vista`,viewSettingsHint:`Agrupación, color, densidad y campos visibles.`,addGroup:`Agregar campo de grupo`,collapsedByDefault:`Contraído por defecto`,removeGroup:`Eliminar`},kanban:{addCard:`Añadir tarjeta`,addColumn:`Añadir columna`,moveCard:`Mover tarjeta`,deleteCard:`Eliminar tarjeta`,deleteColumn:`Eliminar columna`,noCards:`Sin tarjetas`,cardTitlePlaceholder:`Escriba el título de la tarjeta...`},timeline:{bucket:{overdue:`Atrasado`,today:`Hoy`,tomorrow:`Mañana`,thisWeek:`Esta semana`,nextWeek:`Próxima semana`,later:`Más tarde`,noDate:`Sin fecha`,unassigned:`Sin asignar`}},gantt:{column:{taskName:`Nombre de tarea`,start:`Inicio`,end:`Fin`},toolbar:{prevPeriod:`Período anterior`,nextPeriod:`Período siguiente`,zoomIn:`Acercar`,zoomOut:`Alejar`,jumpToToday:`Ir a hoy`,today:`Hoy`,showTaskList:`Mostrar lista de tareas`,hideTaskList:`Ocultar lista de tareas`}},view:{rename:`Renombrar`,duplicateView:`Duplicar vista`,shareView:`Compartir vista`,setAsDefault:`Establecer como predeterminada`,pinView:`Fijar vista`,unpinView:`Desfijar vista`,changeViewType:`Cambiar tipo de vista`,deleteView:`Eliminar vista`,addView:`Añadir vista`,unsavedChanges:`Cambios sin guardar`,saveAsView:`Guardar como vista`,moreViews:`{{count}} más`,activeFilters:`Filtros activos`,activeSort:`Orden activo`,manageViews:`Administrar vistas`,manageAllViews:`Administrar todas las vistas…`,searchViews:`Buscar vistas`,addNewView:`Agregar nueva vista`,done:`Listo`,noViewsFound:`Ninguna vista coincide con su búsqueda.`,dragToReorder:`Arrastrar para reordenar`,defaultView:`Vista predeterminada`,tabActionsFor:`Acciones de vista para {{name}}`,readonlyAriaLabel:`Vista de solo lectura`,readonlyTooltip:`Vista del sistema — duplique para personalizar.`},detail:{back:`Volver`,edit:`Editar`,editInline:`Editar`,save:`Guardar`,saveChanges:`Guardar cambios`,editFieldsInline:`Editar campos`,share:`Compartir`,duplicate:`Duplicar`,export:`Exportar`,viewHistory:`Ver historial`,delete:`Eliminar`,moreActions:`Más acciones`,addToFavorites:`Añadir a favoritos`,removeFromFavorites:`Quitar de favoritos`,previousRecord:`Registro anterior`,nextRecord:`Siguiente registro`,recordOf:`{{current}} de {{total}}`,recordNotFound:`Registro no encontrado`,recordNotFoundDescription:`El registro que busca no existe o puede haber sido eliminado.`,goBack:`Volver`,details:`Detalles`,related:`Relacionados`,relatedRecords:`{{count}} registros`,relatedRecordOne:`{{count}} registro`,noRelatedRecords:`No se encontraron registros relacionados`,loading:`Cargando...`,copyToClipboard:`Copiar al portapapeles`,copied:`¡Copiado!`,deleteConfirmation:`¿Está seguro de que desea eliminar este registro?`,editRecord:`Editar registro`,viewAll:`Ver todo`,new:`Nuevo`,emptyValue:`—`,comments:`Comentarios`,searchComments:`Buscar comentarios…`,addCommentPlaceholder:`Añadir comentario… (Ctrl+Enter para enviar)`,noMatchingComments:`No hay comentarios coincidentes`,noCommentsYet:`Aún no hay comentarios`,pinned:`Fijado`,pin:`Fijar`,unpin:`Desfijar`,justNow:`justo ahora`,minutesAgo:`hace {{count}} min`,hoursAgo:`hace {{count}} h`,daysAgo:`hace {{count}} d`,dropFilesToUpload:`Arrastra archivos aquí o haz clic para subir`,attachmentCount:`{{count}} archivo adjunto`,attachmentCountPlural:`{{count}} archivos adjuntos`,removeAttachment:`Eliminar adjunto`,unifiedDiff:`Vista unificada`,sideBySideDiff:`Vista lado a lado`,noChanges:`Sin cambios`,previousVersion:`Anterior`,currentVersion:`Actual`,discussion:`Discusión`,showDiscussion:`Mostrar discusión ({{count}})`,hideDiscussion:`Ocultar discusión`,bold:`Negrita (Ctrl+B)`,italic:`Cursiva (Ctrl+I)`,listFormat:`Lista`,inlineCode:`Código en línea`,mentionSomeone:`Mencionar a alguien`,preview:`Vista previa`,submitComment:`Enviar (Ctrl+Enter)`,sendComment:`Enviar`,writeComment:`Escribe un comentario…`,subscribedTooltip:`Suscrito — clic para cancelar suscripción`,unsubscribedTooltip:`Suscribirse a notificaciones`,firstRecord:`Primer registro (Inicio)`,previousRecordKey:`Registro anterior (←)`,nextRecordKey:`Siguiente registro (→)`,lastRecord:`Último registro (Fin)`,noRecords:`Sin registros`,searchWhileNavigating:`Buscar mientras navegas`,searchRecords:`Buscar registros…`,allActivity:`Toda la actividad`,commentsOnly:`Solo comentarios`,fieldChangesFilter:`Cambios de campo`,tasksOnly:`Solo tareas`,leaveCommentPlaceholder:`Deja un comentario… (Ctrl+Enter para enviar)`,noActivity:`Sin actividad registrada`,loadMore:`Cargar más`,edited:`(editado)`,via:`vía {{source}}`,replyCount:`{{count}} respuesta`,replyCountPlural:`{{count}} respuestas`,replyPlaceholder:`Responder…`,filterActivity:`Filtrar actividad`,openDiscussion:`Abrir panel de discusión`,closeDiscussion:`Cerrar panel de discusión`,subscribeAriaLabel:`Suscribirse a notificaciones`,unsubscribeAriaLabel:`Cancelar suscripción a notificaciones`,clearSearch:`Borrar búsqueda`,saving:`Guardando…`,lockedByApproval:`Bloqueado para aprobación`,lockedTooltip:`Este registro tiene una solicitud de aprobación pendiente; la edición está bloqueada`,cancelApproval:`Cancelar aprobación`,cancelApprovalInFlight:`Cancelando…`,cancelApprovalTooltip:`Cancelar la solicitud de aprobación pendiente para desbloquear el registro`,cancelApprovalFailed:`No se pudo cancelar la aprobación`,cancelApprovalUnavailable:`La cancelación de aprobaciones no es compatible con esta fuente de datos`,linkCopied:`Enlace copiado al portapapeles`,linkCopyFailed:`No se pudo copiar el enlace`,cancel:`Cancelar`,cancelEdit:`Descartar cambios`,sectionMoreDetails:`Más detalles`,concurrentUpdateTitle:`Este registro fue modificado por otra persona`,concurrentUpdateDescription:`Otro usuario guardó una versión más reciente de {{field}} mientras editaba. Elija cómo resolver el conflicto.`,concurrentUpdateYourEdit:`Su edición`,concurrentUpdateCurrentValue:`Valor actual`,concurrentUpdateUpdatedBy:`Actualizado por {{name}}`,concurrentUpdateUpdatedAt:`Actualizado el {{when}}`,concurrentUpdateReload:`Cargar versión actual`,concurrentUpdateOverwrite:`Sobrescribir de todos modos`,concurrentUpdateCancel:`Cancelar`,openInNewTab:`Abrir en nueva pestaña`,activity:`Actividad`,history:`Historial`,editRow:`Editar`,deleteRow:`Eliminar`,deleteRowConfirmation:`¿Eliminar este registro?`,deleteRowTitle:`Eliminar registro`,actions:`Acciones`,previousPage:`Anterior`,nextPage:`Siguiente`,pageOf:`Página {{current}} de {{total}}`,sortBy:`Ordenar por`,filterPlaceholder:`Filtrar...`,highlightFields:`Campos clave`,createdBy:`Creado por`,updatedBy:`Actualizado por`,showEmptyRelated_one:`+ {{count}} vacío`,showEmptyRelated_other:`+ {{count}} vacíos`,copyEmail:`Copiar correo`,copyPhone:`Copiar teléfono`,copyRecordId:`Copiar ID de registro`,showEmptyFields:`Mostrar {{count}} campos vacíos`,hideEmptyFields:`Ocultar campos vacíos`,noValue:`Sin valor`},chart:{noData:`No hay datos de gráfico disponibles`,loading:`Cargando gráfico...`},map:{searchLocations:`Buscar ubicaciones…`,locationDetails:`Detalles de ubicación`,markersCount:`{{count}} marcadores`,invalidCoordinates:`{{count}} registro con coordenadas faltantes o inválidas excluido del mapa.`,invalidCoordinatesPlural:`{{count}} registros con coordenadas faltantes o inválidas excluidos del mapa.`},workflow:{draft:`Borrador`,active:`Activo`,paused:`En pausa`,completed:`Completado`,cancelled:`Cancelado`,save:`Guardar`,publish:`Publicar`,addNode:`Añadir nodo`,workflowFlow:`Flujo de trabajo`,properties:`Propiedades`,connections:`Conexiones`,quickConnect:`Conexión rápida`,fromPlaceholder:`Desde...`,toPlaceholder:`Hasta...`,connect:`Conectar`,label:`Etiqueta`,type:`Tipo`,description:`Descripción`,assignee:`Responsable`,assigneeType:`Tipo de responsable`,user:`Usuario`,role:`Rol`,group:`Grupo`,expression:`Expresión`,timeoutMinutes:`Tiempo límite (minutos)`,selectNodeToEdit:`Selecciona un nodo para editar sus propiedades`,workflowTitle:`Título del flujo de trabajo`,newWorkflow:`Nuevo flujo de trabajo`,outConnections:`{{count}} salida(s)`,start:`Inicio`,end:`Fin`,task:`Tarea`,userTask:`Tarea de usuario`,serviceTask:`Tarea de servicio`,scriptTask:`Tarea de script`,approval:`Aprobación`,condition:`Condición`,parallelGateway:`Compuerta paralela`,joinGateway:`Compuerta de unión`,boundaryEvent:`Evento límite`,delay:`Retraso`,notification:`Notificación`,webhook:`Webhook`,allowConcurrency:`Permitir (ejecución simultánea)`,forbidConcurrency:`Prohibir (omitir nuevos)`,replaceConcurrency:`Reemplazar (cancelar existentes)`,queueConcurrency:`Cola (ejecutar después)`,conditionEvent:`Condición`,manualEvent:`Manual`,webhookEvent:`Webhook`,timerEvent:`Temporizador`,signalEvent:`Señal`,versionHistory:`Historial de versiones`,importBpmn:`Importar BPMN`,exportBpmn:`Exportar BPMN`,undo:`Deshacer`,redo:`Rehacer`,resetZoom:`Restablecer zoom`},dashboard:{addWidget:`Añadir widget`,removeWidget:`Eliminar widget`,editLayout:`Editar diseño`,saveLayout:`Guardar diseño`,resetLayout:`Restablecer diseño`,total:`Total`,noDataAvailable:`Sin datos disponibles`,noDataSourceFor:`Sin fuente de datos para`,trend:{vsLastQuarter:`vs. trimestre anterior`,vsLastMonth:`vs. mes anterior`,vsLastWeek:`vs. semana anterior`,vsLastYear:`vs. año anterior`,vsYesterday:`vs. ayer`,vsPreviousPeriod:`vs. período anterior`}},configPanel:{save:`Guardar`,discard:`Descartar`,close:`Cerrar`,layout:`Diseño`,columns:`Columnas`,gap:`Espaciado`,rowHeight:`Altura de fila`,data:`Datos`,refreshInterval:`Intervalo de actualización`,appearance:`Apariencia`,title:`Título`,showDescription:`Mostrar descripción`,theme:`Tema`,configuration:`Configuración`,general:`General`,advanced:`Avanzado`},appDesigner:{createApp:`Crear aplicación`,editApp:`Editar aplicación`,basicInfo:`Información básica`,objects:`Objetos`,navigation:`Navegación`,branding:`Marca`,appName:`Nombre de la app`,appTitle:`Título`,appDescription:`Descripción`,appIcon:`Icono`,template:`Plantilla`,layout:`Diseño`,layoutSidebar:`Barra lateral`,layoutHeader:`Encabezado`,layoutEmpty:`Vacío`,selectObjects:`Seleccionar objetos`,searchObjects:`Buscar objetos…`,selectAll:`Seleccionar todo`,deselectAll:`Deseleccionar todo`,navBuilder:`Constructor de navegación`,addGroup:`Agregar grupo`,addUrl:`Agregar URL`,addSeparator:`Agregar separador`,noNavItems:`Aún no hay elementos de navegación.`,logoUrl:`URL del logo`,primaryColor:`Color primario`,faviconUrl:`URL del favicon`,preview:`Vista previa`,complete:`Completar`,snakeCaseHint:`Debe ser snake_case (ej. my_app)`,modeEdit:`Editar`,modePreview:`Vista previa`,modeCode:`Código`,addWidget:`Agregar widget`,widgetProperties:`Propiedades del widget`,dataSource:`Fuente de datos`,valueField:`Campo de valor`,aggregate:`Agregar`,colorVariant:`Variante de color`,addComponent:`Agregar componente`,componentProperties:`Propiedades del componente`,viewType:`Tipo de vista`,fields:`Campos`,toolbar:`Barra de herramientas`,showSearch:`Mostrar búsqueda`,showFilters:`Mostrar filtros`,showSort:`Mostrar orden`,appearance:`Apariencia`,rowHeight:`Altura de fila`,stripedRows:`Filas alternadas`,bordered:`Con borde`,livePreview:`Vista previa en vivo`,stepBasicDesc:`Nombre, título y diseño`,stepObjectsDesc:`Seleccionar objetos de negocio`,stepNavigationDesc:`Construir árbol de navegación`,stepBrandingDesc:`Logo, colores y favicon`,noObjectsFound:`No se encontraron objetos.`,noNavItemsHint:`Aún no hay elementos de navegación. Seleccione objetos en el paso anterior o agregue elementos manualmente.`,separator:`Separador`,separatorLabel:`— Separador —`,newGroup:`Nuevo grupo`,newLink:`Nuevo enlace`,saveDraft:`Guardar borrador`,cancelConfirmTitle:`¿Descartar cambios?`,cancelConfirmMessage:`Tiene cambios sin guardar. ¿Está seguro de que desea cancelar?`,confirmDiscard:`Descartar`,keepEditing:`Seguir editando`,navNoItems:`Sin elementos de navegación. Haga clic en los botones de arriba para agregar elementos.`,navNoPreviewItems:`Sin elementos`,navLivePreview:`Vista previa en vivo`,navCollapseGroup:`Contraer grupo`,navExpandGroup:`Expandir grupo`,navAddChild:`Agregar hijo`,navMoveUp:`Mover arriba`,navMoveDown:`Mover abajo`,navRemove:`Eliminar`,navObjectPage:`Página de objeto`,navDashboard:`Panel de control`,navPage:`Página`,navReport:`Informe`,navGroup:`Grupo`,navUrl:`URL`,navSeparator:`Separador`,navTypeObject:`Objeto`,navTypeDashboard:`Panel`,navTypePage:`Página`,navTypeReport:`Informe`,navTypeUrl:`URL`,navTypeGroup:`Grupo`,navTypeSeparator:`Separador`,navTypeAction:`Acción`,navEditIcon:`Editar icono`,navToggleVisible:`Alternar visibilidad`,navHidden:`Oculto`,navExportSchema:`Exportar JSON`,navImportSchema:`Importar JSON`,navExportSuccess:`Esquema de navegación exportado`,navImportSuccess:`Esquema de navegación importado`,navImportError:`JSON de navegación inválido`,navIconPlaceholder:`Nombre del icono (ej. Users)`,dashboardEditor:`Editor de panel`,noWidgets:`Sin widgets. Haga clic en un botón arriba para agregar uno.`,widgetLayoutSize:`Tamaño de diseño`,widgetWidth:`Ancho`,widgetHeight:`Alto`,dashboardPreview:`Vista previa del panel`,noWidgetsPreview:`Sin widgets para previsualizar`,pageCanvasEditor:`Editor de lienzo de página`,emptyPage:`Página vacía. Haga clic en un botón arriba para agregar un componente.`,pagePreview:`Vista previa de página`,noComponentsPreview:`Sin componentes para previsualizar`,modePage:`Página`,modeDashboard:`Panel`,undo:`Deshacer`,redo:`Rehacer`,brandingEditor:`Editor de marca`,brandingExport:`Exportar JSON`,brandingImport:`Importar JSON`,brandingPreview:`Vista previa`,brandingSampleButton:`Botón de muestra`,brandingSampleText:`Así lucirá su tema de marca.`,colorPalette:`Paleta de colores`,fontFamily:`Familia tipográfica`,fontDefault:`Predeterminada (sistema)`,modeLight:`Claro`,modeDark:`Oscuro`,mobilePreview:`Vista previa móvil`,objectManager:{title:`Administrador de objetos`,addObject:`Nuevo objeto`,searchPlaceholder:`Buscar objetos…`,noObjects:`No se encontraron objetos.`,objectName:`Nombre API`,objectLabel:`Etiqueta`,pluralLabel:`Etiqueta plural`,icon:`Icono`,selectIcon:`Seleccionar icono…`,group:`Grupo`,noGroup:`Sin grupo`,sortOrder:`Orden de clasificación`,enabled:`Habilitado`,relationships:`Relaciones`,systemBadge:`Sistema`,fieldCount:`{{count}} campos`,ungrouped:`Sin grupo`,deleteConfirmTitle:`¿Eliminar objeto?`,deleteConfirmMessage:`Esto eliminará permanentemente el objeto y todos sus campos. Esta acción no se puede deshacer.`},fieldDesigner:{title:`Diseñador de campos`,addField:`Nuevo campo`,searchPlaceholder:`Buscar campos…`,allTypes:`Todos los tipos`,noFields:`No se encontraron campos.`,fieldName:`Nombre API`,fieldLabel:`Etiqueta`,fieldType:`Tipo`,fieldGroup:`Grupo`,description:`Descripción`,required:`Obligatorio`,unique:`Único`,readOnly:`Solo lectura`,hidden:`Oculto`,indexed:`Indexado`,externalId:`ID externo`,trackHistory:`Rastrear historial`,defaultValue:`Valor predeterminado`,placeholder:`Marcador de posición`,referenceTo:`Referencia a`,formula:`Fórmula`,options:`Opciones`,addOption:`Agregar opción`,validationRules:`Reglas de validación`,addRule:`Agregar regla`,systemBadge:`Sistema`,ungrouped:`General`,deleteConfirmTitle:`¿Eliminar campo?`,deleteConfirmMessage:`Esto eliminará permanentemente el campo. Los datos existentes en este campo se perderán.`,basicSection:`Básico`,typeSpecificSection:`Configuración de tipo`,advancedSection:`Avanzado`,typeCategory:{text:`Texto`,number:`Número`,date:`Fecha y hora`,choice:`Elección`,relation:`Relación`,advanced:`Avanzado`}}},console:{title:`Consola ObjectStack`,initializing:`Inicializando aplicación...`,breadcrumb:{dashboards:`Paneles`,pages:`Páginas`,reports:`Informes`,system:`Sistema`},loadingSteps:{connecting:`Conectando a la fuente de datos`,loadingConfig:`Cargando configuración`,preparingWorkspace:`Preparando espacio de trabajo`},error:{connectionFailed:`No se puede conectar al servidor`,serverUnreachable:`El servidor {{url}} no está accesible.`,checkServer:`Compruebe su conexión de red o que el backend esté en ejecución.`,timeout:`Tiempo de conexión agotado tras 10 segundos.`},actions:{retry:`Reintentar`,retrying:`Reintentando…`},shortcuts:{title:`Atajos de teclado`,description:`Referencia rápida de todos los atajos de teclado disponibles.`,groups:{general:`General`,navigation:`Navegación`,dataViews:`Vistas de datos`,preferences:`Preferencias`},openCommandPalette:`Abrir paleta de comandos`,showShortcuts:`Mostrar atajos de teclado`,closeDialog:`Cerrar diálogo / panel`,toggleSidebar:`Alternar barra lateral`,focusSearch:`Enfocar búsqueda`,createRecord:`Crear nuevo registro`,refreshData:`Actualizar datos`,editRecord:`Editar registro seleccionado`,toggleDarkMode:`Alternar modo oscuro`},commandPalette:{placeholder:`Escriba un comando o busque...`,noResults:`No se encontraron resultados.`,objects:`Objetos`,dashboards:`Paneles`,pages:`Páginas`,reports:`Informes`,switchApp:`Cambiar aplicación`,current:`Actual`,preferences:`Preferencias`,lightTheme:`Tema claro`,darkTheme:`Tema oscuro`,systemTheme:`Tema del sistema`,actions:`Acciones`,openFullSearch:`Abrir página de búsqueda completa`,createApp:`Crear nueva aplicación`,searching:`Buscando…`,records:`Registros`,recentRecords:`Visto recientemente`},errors:{somethingWentWrong:`Algo salió mal`,unexpectedError:`Ocurrió un error inesperado al renderizar esta vista.`,tryAgain:`Intentar de nuevo`,goHome:`Ir al inicio`,errorDetails:`Detalles del error (solo desarrollo)`},theme:{toggle:`Cambiar tema`,light:`Claro`,dark:`Oscuro`,system:`Sistema`},objectView:{objectNotFound:`Objeto no encontrado`,objectNotFoundDescription:`El objeto "{{objectName}}" no existe en la configuración actual.`,objectNotFoundHint:`Verifique la configuración de navegación de su aplicación o seleccione un objeto diferente en la barra lateral.`,allRecords:`Todos los registros`,exitDesignMode:`Salir del modo de diseño`,enterDesignMode:`Entrar en modo de diseño`,metadataInspector:`Inspector de metadatos`,editView:`Editar vista`,addView:`Agregar vista`,designTools:`Herramientas de diseño`,new:`Nuevo`,configureView:`Configurar vista`,closePanel:`Cerrar panel`,page:`Página`,pageConfigHint:`Barra de herramientas, navegación y configuración del shell de vista`,listConfigHint:`Renderizado de datos, columnas y apariencia para este tipo de lista`,general:`General`,generalHint:`Título, descripción y tipo de la vista`,toolbar:`Barra de herramientas`,toolbarHint:`Búsqueda, filtro, orden, agrupación y alternancia de densidad`,toolbarEnabledCount:`{{count}} de {{total}} habilitados`,navigationSection:`Navegación`,navigationHint:`Comportamiento al hacer clic en la fila y configuración de la vista detallada`,records:`Registros`,recordsHint:`Modo de selección, agregar registro y edición en línea`,exportPrint:`Exportar e imprimir`,exportPrintHint:`Formatos de exportación, impresión y visualización del recuento de registros`,showAllFields:`Mostrar todo`,hideAllFields:`Ocultar todo`,searchFields:`Buscar campos...`,title:`Título`,description:`Descripción`,data:`Datos`,source:`Fuente`,columns:`Columnas`,filterBy:`Filtrar por`,sortBy:`Ordenar por`,appearance:`Apariencia`,showDescription:`Mostrar descripción`,viewType:`Tipo de vista`,userFilters:`Filtros de usuario`,enableSearch:`Habilitar búsqueda`,enableFilter:`Habilitar filtro`,enableSort:`Habilitar ordenamiento`,enableHideFields:`Habilitar ocultar campos`,enableGroup:`Habilitar agrupación`,enableColor:`Habilitar color`,enableDensity:`Habilitar densidad`,userActions:`Acciones de usuario`,addRecordViaForm:`Agregar registros mediante formulario`,advanced:`Avanzado`,allowExport:`Permitir exportación`,recordCount:`{{count}} registros`,noDescription:`Sin descripción`,none:`Ninguno`,columnsConfigured:`{{count}} columnas`,save:`Guardar`,discard:`Descartar`,createView:`Crear vista`,newView:`Nueva vista`,typeOptions:`Opciones de tipo`,groupByField:`Campo de agrupación`,startDateField:`Campo de fecha de inicio`,titleField:`Campo de título`,latitudeField:`Campo de latitud`,longitudeField:`Campo de longitud`,imageField:`Campo de imagen`,dateField:`Campo de fecha`,selectField:`Seleccionar campo...`,gridOptionsHint:`La vista de cuadrícula usa las columnas configuradas arriba.`,groupBy:`Agrupar por`,prefixField:`Campo de prefijo`,fields:`Campos`,fieldsVisible:`{{count}} visibles`,sortsCount:`{{count}} ordenamientos`,filtersCount:`{{count}} filtros`,endDateField:`Campo de fecha de fin`,color:`Color`,fieldTextColor:`Color del texto del campo`,rowHeight:`Altura de fila`,wrapHeaders:`Ajustar encabezados`,showFieldDescriptions:`Mostrar descripciones de campos`,collapseAllByDefault:`Contraer todo por defecto`,striped:`Filas alternadas`,bordered:`Celdas con borde`,inlineEdit:`Editar registros en línea`,addDeleteRecordsInline:`Agregar/eliminar registros en línea`,clickIntoRecordDetails:`Clic para detalles del registro`,navigationMode:`Modo de navegación`,navigationWidth:`Ancho de navegación`,navigationWidthHint:`Disponible para los modos de navegación cajón, modal y dividido`,openNewTab:`Abrir en nueva pestaña`,openNewTabHint:`Disponible para los modos de navegación página y nueva ventana`,import:`Importar`,importTitle:`Importar desde CSV`,importedToast:`{{count}} fila(s) importada(s).`,importedWithSkipped:`{{ok}} fila(s) importada(s); {{skipped}} omitida(s).`,showAdvancedSettings:`Mostrar configuración avanzada`,showFewerSettings:`Mostrar menos configuraciones`,createViewDesc:`Elija un tipo de vista y asígnele un nombre. Todas las configuraciones se pueden cambiar después.`,cancel:`Cancelar`,create:`Crear`,delete:`Eliminar`,deleteViewTitle:`Eliminar vista`,deleteViewConfirm:`¿Eliminar la vista "{{name}}"? Esto no se puede deshacer.`,bulkDeleteConfirm:`¿Eliminar {{count}} registros seleccionados? Esto no se puede deshacer.`,duplicateViewName:`Ya existe una vista con ese nombre.`,viewTypeGrid:`Cuadrícula`,viewTypeGridDesc:`Tabla tipo hoja de cálculo de registros.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Tarjetas agrupadas en columnas por un campo de selección única.`,viewTypeCalendar:`Calendario`,viewTypeCalendarDesc:`Registros colocados por fecha en un calendario mensual.`,viewTypeGallery:`Galería`,viewTypeGalleryDesc:`Tarjetas de imagen grandes de un campo de adjunto.`,viewTypeTimeline:`Línea de tiempo`,viewTypeTimelineDesc:`Registros a lo largo de un eje de tiempo horizontal.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Barras de proyecto con inicio/fin y dependencias.`,viewTypeMap:`Mapa`,viewTypeMapDesc:`Marcadores geográficos de campos de latitud/longitud.`,viewTypeChart:`Gráfico`,viewTypeChartDesc:`Gráficos de barras/líneas/sectores agregados.`,groupByFieldHelp:`El tablero Kanban agrupa los registros en columnas según los valores del campo.`,startDateFieldHelp:`El calendario coloca los registros en la celda que corresponde a esta fecha.`,ganttStartDateFieldHelp:`El borde izquierdo de cada barra de Gantt usa esta fecha.`,ganttEndDateFieldHelp:`El borde derecho de cada barra de Gantt usa esta fecha.`,timelineDateFieldHelp:`Los registros se posicionan en la línea de tiempo según esta fecha.`,latitudeFieldHelp:`Campo que contiene la latitud (solo campos geográficos).`,longitudeFieldHelp:`Campo que contiene la longitud (solo campos geográficos).`,imageFieldHelp:`La portada de la galería proviene de este campo de imagen o adjunto.`,selectOption:`Seleccionar...`,noEligibleFieldForType:`Ningún campo elegible de ese tipo. Agregue uno al objeto primero.`,viewTypeUnavailable:`Este objeto no tiene un campo que sirva como "{{field}}".`,viewTypeUnavailableShort:`No compatible con este objeto.`,chartType:`Tipo de gráfico`,chartTypeHelp:`Determina cómo se renderizan los datos.`,chartTypeBar:`Gráfico de barras`,chartTypeLine:`Gráfico de líneas`,chartTypePie:`Gráfico circular`,chartTypeArea:`Gráfico de área`,chartTypeScatter:`Gráfico de dispersión`,xAxisField:`Campo eje X`,xAxisFieldHelp:`La dimensión categórica o temporal.`,yAxisField:`Campo eje Y`,yAxisFieldHelp:`El campo numérico para agregar.`,selectionMode:`Modo de selección`,selectionNone:`Ninguno`,selectionSingle:`Individual`,selectionMultiple:`Múltiple`,pageSize:`Tamaño de página`,pageSizeOptions:`Opciones de tamaño de página`,exportFormats:`Formatos de exportación`,exportMaxRecords:`Máximo de registros`,exportIncludeHeaders:`Incluir encabezados`,exportFileNamePrefix:`Prefijo de nombre de archivo`,searchableFields:`Campos buscables`,filterableFields:`Campos filtrables`,resizableColumns:`Columnas redimensionables`,densityCompact:`Compacto`,densityComfortable:`Normal`,densitySpacious:`Espacioso`,densityMode:`Modo de densidad`,hiddenFields:`Campos ocultos`,rowActions:`Acciones de fila`,bulkActions:`Acciones masivas`,sharing:`Compartir`,sharingEnabled:`Compartir habilitado`,sharingVisibility:`Visibilidad`,addRecordEnabled:`Agregar registro habilitado`,addRecordPosition:`Posición`,addRecordMode:`Modo`,addRecordFormView:`Vista de formulario`,conditionalFormatting:`Formato condicional`,addRule:`Agregar regla`,quickFilters:`Filtros rápidos`,addQuickFilter:`Agregar filtro rápido`,ufElements:`Elementos`,ufDropdown:`Desplegable`,ufTabs:`Pestañas`,ufToggle:`Alternar`,ufAddField:`+ Agregar campo de filtro...`,ufNoFields:`Sin campos disponibles`,ufAddTab:`+ Agregar pestaña`,ufTabLabel:`Etiqueta`,ufShowAllRecords:`Mostrar pestaña "Todos los registros"`,ufAllowAddTab:`Permitir agregar pestañas`,showRecordCount:`Mostrar recuento de registros`,allowPrinting:`Permitir impresión`,virtualScroll:`Desplazamiento virtual`,emptyStateTitle:`Título de estado vacío`,emptyStateMessage:`Mensaje de estado vacío`,emptyStateIcon:`Ícono de estado vacío`,ariaLabel:`Etiqueta ARIA`,ariaDescribedBy:`Descrito por ARIA`,ariaLive:`ARIA en vivo`,accessibility:`Accesibilidad`,viewTabs:`Pestañas de vista`},localeSwitcher:{label:`Idioma`},search:`Buscar…`,nav:{pinItem:`Fijar {{name}}`,unpinItem:`Desfijar {{name}}`,dragToReorder:`Arrastrar para reordenar`,favorites:`Favoritos`}},auth:{login:{title:`Inicia sesión en tu cuenta`,description:`Ingresa tu correo electrónico y contraseña para continuar`,emailLabel:`Correo electrónico`,emailPlaceholder:`name@example.com`,passwordLabel:`Contraseña`,passwordPlaceholder:`Ingresa tu contraseña`,forgotPasswordText:`¿Olvidaste tu contraseña?`,submitButton:`Iniciar sesión`,submittingButton:`Iniciando sesión...`,noAccountText:`¿No tienes una cuenta?`,signUpText:`Regístrate`,errors:{invalidCredentials:`Correo o contraseña inválidos. Inténtelo de nuevo.`,emailNotVerified:`Verifique su correo electrónico antes de iniciar sesión.`}},register:{title:`Crear una cuenta`,description:`Ingresa tu información para comenzar`,nameLabel:`Nombre`,namePlaceholder:`Juan Pérez`,emailLabel:`Correo electrónico`,emailPlaceholder:`name@example.com`,passwordLabel:`Contraseña`,passwordPlaceholder:`Crear una contraseña (mín. 8 caracteres)`,confirmPasswordLabel:`Confirmar contraseña`,confirmPasswordPlaceholder:`Confirma tu contraseña`,passwordMismatchError:`Las contraseñas no coinciden`,passwordTooShortError:`La contraseña debe tener al menos 8 caracteres`,submitButton:`Crear cuenta`,submittingButton:`Creando cuenta...`,hasAccountText:`¿Ya tienes una cuenta?`,signInText:`Iniciar sesión`,errors:{userExists:`Ya existe una cuenta con ese correo. Intente iniciar sesión.`},verifyInbox:{title:`Revise su bandeja de entrada`,description:`Enviamos un enlace de verificación a {{email}}. Haga clic en el enlace para activar su cuenta.`,resend:`Reenviar correo de verificación`,resending:`Enviando…`,resent:`Correo de verificación enviado.`,backToSignIn:`Volver al inicio de sesión`}},forgotPassword:{title:`Restablecer tu contraseña`,description:`Ingresa tu dirección de correo electrónico y te enviaremos un enlace para restablecer tu contraseña`,emailLabel:`Correo electrónico`,emailPlaceholder:`name@example.com`,submitButton:`Enviar enlace de restablecimiento`,submittingButton:`Enviando...`,successTitle:`Revisa tu correo electrónico`,successDescription:`Hemos enviado un enlace para restablecer la contraseña a {{email}}. Por favor revisa tu bandeja de entrada.`,backToSignInText:`Volver a iniciar sesión`,rememberPasswordText:`¿Recuerdas tu contraseña?`,signInText:`Iniciar sesión`},resetPassword:{title:`Establecer nueva contraseña`,description:`Elija una contraseña que no haya usado antes.`,newPassword:`Nueva contraseña`,confirmPassword:`Confirmar contraseña`,submit:`Actualizar contraseña`,submitting:`Actualizando…`,success:`Contraseña actualizada`,failed:`Error al restablecer`,invalidToken:`Este enlace de restablecimiento es inválido o ha expirado.`,missingToken:`El enlace de restablecimiento falta o ha expirado`,passwordsMismatch:`Las contraseñas no coinciden`,requestNewLink:`Solicitar nuevo enlace`},verifyEmail:{title:`Verificar dirección de correo`,description:`Enviamos un enlace de verificación a su correo. Haga clic en el enlace para verificar su cuenta.`,sentTo:`Enviado a:`,verifyingTitle:`Verificando…`,verifyingDescription:`Estamos verificando su correo. Por favor espere.`,successTitle:`Correo verificado`,successDescription:`Su correo fue verificado. Ahora puede iniciar sesión.`,errorTitle:`Verificación fallida`,errorDescription:`La verificación falló. Solicite un nuevo enlace.`,missingToken:`Falta un token en el enlace de verificación.`,emailMissing:`Falta la dirección de correo`,resendButton:`Reenviar correo de verificación`,resending:`Enviando…`,resent:`¡Correo enviado! Revise su bandeja de entrada`,resentSuccess:`¡Correo de verificación enviado!`,resentDescription:`Revise su bandeja de entrada y haga clic en el enlace de verificación.`,resendFailed:`No se puede reenviar el correo de verificación`,signInLink:`Ir al inicio de sesión`,backToSignIn:`Volver al inicio de sesión`,backToLogin:`Volver al inicio de sesión`,checkSpam:`¿No recibió el correo? Revise su carpeta de spam o contacte soporte.`,or:`O`},setup:{welcomeTitle:`Bienvenido a ObjectStack`,description:`Cree la primera cuenta de propietario para completar la configuración.`,yourName:`Su nombre`,orgName:`Nombre de la organización`,orgNamePlaceholder:`Empresa Ejemplo S.A.`,emailLabel:`Correo electrónico`,emailPlaceholder:`nombre@ejemplo.com`,passwordLabel:`Contraseña`,passwordHint:`Al menos 8 caracteres`,submit:`Crear cuenta de propietario`,submitting:`Configurando…`,failed:`Error en la configuración`},device:{title:`Autorizar nuevo dispositivo`,subtitle:`Apruebe este dispositivo para iniciar sesión como {{email}}.`,userCodeLabel:`Código del dispositivo`,loggedInAs:`Conectado como {{email}}`,approve:`Aprobar dispositivo`,approving:`Aprobando…`,approvedTitle:`Dispositivo autorizado`,approvedDescription:`Puede regresar al dispositivo — debería iniciar sesión pronto.`,approveSuccess:`Dispositivo autorizado`,approveSuccessDescription:`Puede cerrar esta ventana.`,approveFailed:`Error al aprobar`,deny:`Denegar solicitud`,denying:`Denegando…`,deniedTitle:`Acceso denegado`,deniedDescription:`No se otorgará acceso al dispositivo.`,denyFailed:`No se pudo denegar la solicitud`,invalidTitle:`Enlace de dispositivo inválido`,invalidDescription:`No se proporcionó código de dispositivo en la URL.`,loading:`Cargando…`,cancel:`Cancelar`},shell:{tenantHostHint:`Está iniciando sesión en este espacio de trabajo`}},errors:{networkError:`Error de red. Por favor, compruebe su conexión.`,serverError:`Error del servidor. Por favor, inténtelo de nuevo más tarde.`,notFound:`Recurso no encontrado.`,unauthorized:`No está autorizado para realizar esta acción.`,forbidden:`Acceso denegado.`,timeout:`Tiempo de espera agotado. Por favor, inténtelo de nuevo.`,unknown:`Ha ocurrido un error inesperado.`},workspace:{label:`Espacios de trabajo`,default:`Mi espacio de trabajo`,switch:`Cambiar espacio de trabajo`,create:`Crear espacio de trabajo`,createTitle:`Crear un espacio de trabajo`,createDescription:`Un espacio de trabajo es un lugar compartido para que tu equipo colabore.`,createButton:`Crear espacio de trabajo`,nameLabel:`Nombre del espacio de trabajo`,namePlaceholder:`p.ej., Acme Inc`,slugLabel:`Slug de URL`,slugHint:`Se utiliza en URLs. Solo minúsculas, números y guiones.`,invite:`Invitar miembro`,members:`Miembros`,settings:`Configuración del espacio de trabajo`},sidebar:{settings:`Configuración`,help:`Ayuda`,helpTooltip:`Ayuda y documentación`,activityFeed:`Feed de actividad`,notifications:`Notificaciones`,approvals:`Aprobaciones`,inbox:`Bandeja de entrada`,inboxAriaLabel:`Abrir bandeja de entrada`,area:`Área`,recent:`Reciente`,favorites:`Favoritos`,starred:`Destacados`,removeFromFavorites:`Quitar {{name}} de favoritos`},home:{title:`Inicio`,subtitle:`Panel de tu espacio de trabajo`,nav:`Inicio`,allApps:`Todas las aplicaciones`,loading:`Cargando espacio de trabajo...`,recent:`Recientes`,starred:`Destacados`,welcome:`Bienvenido a ObjectUI`,welcomeDescription:`Comienza creando tu primera aplicación o configura los ajustes del sistema.`,createFirstApp:`Crea tu primera aplicación`,systemSettings:`Configuración del sistema`,browseMarketplace:`Explorar marketplace de apps`,quickActions:{title:`Acciones rápidas`,createApp:`Crear app`,createAppDesc:`Comienza con una nueva aplicación`,manageObjects:`Gestionar objetos`,manageObjectsDesc:`Configura modelos de datos`,systemSettings:`Configuración del sistema`,systemSettingsDesc:`Configura tu espacio de trabajo`},appCard:{noDescription:`Sin descripción`,default:`Predeterminado`},greetingMorning:`Buenos días`,greetingAfternoon:`Buenas tardes`,greetingEvening:`Buenas noches`,greetingNight:`Turno de noche`,heroTagline:`Continúe donde lo dejó o descubra algo nuevo.`,open:`Abrir`,stats:{apps:`Aplicaciones`,starred:`Destacados`,recent:`Recientes`},recentApps:{title:`Abiertos recientemente`,itemType:{object:`Objeto`,dashboard:`Panel`,page:`Página`,record:`Registro`}},starredApps:{title:`Destacados`},gettingStarted:{title:`Personalizar inicio`,description:`Marque una aplicación como favorita para anclarla aquí y acceder con un clic. Todo lo que abra aparecerá automáticamente en "Abiertos recientemente".`,cta:`Explorar todas las aplicaciones`}},layout:{appSwitcher:{home:`Inicio`,addApp:`Agregar aplicación`,editApp:`Editar aplicación`,manageAllApps:`Administrar todas las aplicaciones`,systemConsole:`Consola del sistema`,noAppsConfigured:`Sin aplicaciones configuradas`},activityFeed:{title:`Actividad reciente`,filter:`Filtrar`,empty:`Sin actividad reciente`,ariaLabel:`Feed de actividad`,typeCreate:`Crear`,typeUpdate:`Actualizar`,typeDelete:`Eliminar`,typeComment:`Comentario`,relativeJustNow:`ahora mismo`,relativeSecondsAgo:`hace {{count}}s`,relativeMinutesAgo:`hace {{count}}m`,relativeHoursAgo:`hace {{count}}h`,relativeDaysAgo:`hace {{count}}d`,viewAll:`Ver toda la actividad`},metadata:{label:`Metadatos`,toggleTitle:`Alternar inspector de metadatos`,panelTitle:`Inspector de metadatos`,jsonBadge:`JSON`,copyJson:`Copiar JSON`}},search:{title:`Buscar`,back:`Atrás`,placeholder:`Buscar objetos, paneles, páginas, informes...`,inputAriaLabel:`Buscar objetos, paneles, páginas, informes`,resultsCount:`{{count}} resultado para "{{query}}"`,resultsCountPlural:`{{count}} resultados para "{{query}}"`,itemsAvailable:`{{count}} elementos disponibles`,noResults:`Sin resultados encontrados`,noResultsHint:`Intente ajustar sus términos de búsqueda`,typeObjects:`Objetos`,typeDashboards:`Paneles`,typePages:`Páginas`,typeReports:`Informes`,badgeObject:`Objeto`,badgeDashboard:`Panel`,badgePage:`Página`,badgeReport:`Informe`},empty:{objectNotFound:`Objeto no encontrado`,objectNotFoundDescription:`Falta la definición del objeto "{{name}}". Verifique su configuración o navegue hacia atrás.`,pageNotFound:`Página no encontrada`,pageNotFoundDescription:`La página "{{name}}" no fue encontrada. Puede haber sido eliminada o renombrada.`,dashboardNotFound:`Panel no encontrado`,dashboardNotFoundDescription:`El panel "{{name}}" no fue encontrado. Puede haber sido eliminado o renombrado.`,reportNotFound:`Informe no encontrado`,reportNotFoundDescription:`El informe "{{name}}" no fue encontrado. Puede haber sido eliminado o renombrado.`,noAppsConfigured:`Sin aplicaciones configuradas`,noAppsConfiguredDescription:`No hay aplicaciones registradas. Cree su primera aplicación o visite la configuración del sistema.`,createFirstApp:`Crear primera aplicación`,systemSettings:`Configuración del sistema`,back:`Atrás`,recordNotFound:`Registro no encontrado`,recordNotFoundDescription:`El registro que busca no existe o puede haber sido eliminado.`},renderer:{noPageSchema:`No se proporcionó esquema de página`,noFormSchema:`No se proporcionó esquema de formulario`,noDashboardSchema:`No se proporcionó esquema de panel`,pageRendering:`Renderizando página: {{name}}`,dashboardRendering:`Renderizando panel: {{name}}`,formRenderingMode:`Formulario renderizado en modo {{mode}}`,formRenderingFor:`para registro {{id}}`,createRecord:`Crear registro`,editRecord:`Editar registro`,page:`Página`,dashboard:`Panel`,save:`Guardar`,cancel:`Cancelar`},actionDialog:{title:`Parámetros de acción`,description:`Ingrese la información requerida para continuar.`,selectPlaceholder:`Seleccionar {{label}}`,requiredError:`{{label}} es obligatorio`,cancel:`Cancelar`,confirm:`Confirmar`,defaultActionTitle:`Acción`,ok:`Aceptar`,lookupPlaceholder:`Pegar ID de registro (UUID) para {{label}}`,lookupHelpText:`Ingrese el ID del registro del objeto referenciado. Pronto se añadirá un selector.`},rowAction:{openMenu:`Abrir menú`,edit:`Editar`,delete:`Eliminar`},navigationSync:{addedPage:`Navegación actualizada: página "{{name}}" agregada`,addedDashboard:`Navegación actualizada: panel "{{name}}" agregado`,removedPage:`Navegación actualizada: página "{{name}}" eliminada`,removedDashboard:`Navegación actualizada: panel "{{name}}" eliminado`,renamedPage:`Navegación actualizada: página "{{oldName}}" renombrada a "{{newName}}"`,renamedDashboard:`Navegación actualizada: panel "{{oldName}}" renombrado a "{{newName}}"`,undoLabel:`Deshacer`,undone:`Cambio de navegación deshecho`,undoFailed:`No se pudo deshacer el cambio de navegación`,updateFailed:`No se pudo actualizar la navegación`},objectActions:{deleteSuccess:`{{label}} eliminado correctamente`,deleteFailed:`No se pudo eliminar {{label}}`,noRecordId:`No se proporcionó ID de registro`,deleteConfirm:`¿Eliminar este registro?`,bulkDeleteSuccess:`{{count}} registros de {{label}} eliminados`,bulkDeletePartial:`{{succeeded}} eliminados, {{failed}} fallidos`},objectViewActions:{renameFailed:`No se pudo renombrar la vista`,deleteFailed:`No se pudo eliminar la vista`},dashboardActions:{pdfPreparing:`Preparando exportación PDF…`,exportFailed:`Error al exportar: {{message}}`,forecastSoon:`La vista de pronóstico llegará pronto`},recordDetail:{viewersTooltip:`Usuarios viendo este registro ahora`},cellRender:{empty:`Vacío`,yes:`Sí`,no:`No`,systemFields:`Sistema`},user:{profile:`Perfil`,settings:`Configuración`,logout:`Cerrar sesión`,preferences:`Preferencias`,theme:`Tema`,language:`Idioma`},report:{rowTotal:`Total fila`,columnTotal:`Total columna`,grandTotal:`Gran total`,totals:`Totales`,rowsLabel:`Fila`,columnsLabel:`Columna`,allLabel:`(Todo)`,emptyLabel:`(Vacío)`,loading:`Cargando…`,failedToLoad:`Error al cargar la matriz: {{message}}`,needsAcross:"El informe de matriz requiere al menos un campo `groupingsAcross`.",aggregate:{count:`Contar`,countDistinct:`Contar únicos`,sum:`Suma`,avg:`Promedio`,min:`Mínimo`,max:`Máximo`,first:`Primero`},editor:{breadcrumb:`Configuración`,basic:`General`,title:`Título`,titlePlaceholder:`p. ej. Pipeline por trimestre`,description:`Descripción`,descriptionPlaceholder:`¿Qué muestra este informe?`,type:`Tipo de informe`,typeTabular:`Tabla — lista plana`,typeSummary:`Resumen — agrupado con totales`,typeMatrix:`Matriz — pivote filas × columnas`,typeJoined:`Combinado — varios bloques`,typeHelp:`Elige el diseño que mejor refleje lo que quieres ver.`,data:`Datos`,objectName:`Fuente de datos`,objectNamePlaceholder:`p. ej. opportunity`,objectNameHelp:`¿Qué objeto debe consultar este informe?`,limit:`Límite de filas`,limitPlaceholder:`p. ej. 100`,columns:`Columnas`,columnsHint:`Elige los campos que aparecerán como columnas. Añade una agregación (Suma, Recuento…) en los informes Resumen o Matriz.`,filters:`Filtros`,filtersHint:`Limita las filas incluidas en este informe.`,filtersComplex:`Este informe usa un filtro avanzado que no se puede editar aquí. Al guardar se mantendrá intacto.`,groupBy:`Agrupar por`,groupByHint:`Agrupa los datos y calcula subtotales.`,rows:`Filas`,rowsHint:`Agrupa las filas por estos campos.`,columnsAxis:`Columnas`,columnsAxisHint:`Pivota estos campos en la parte superior.`,values:`Valores`,valuesHint:`Números mostrados en cada celda. Elige uno o varios campos y añade una agregación (Suma, Recuento…).`,grouping:`Agrupación`,addGrouping:`Añadir agrupación`,dateGranularity:`Granularidad de fecha`,dateGranularityNone:`(valor original)`,day:`Día`,week:`Semana`,month:`Mes`,quarter:`Trimestre`,year:`Año`,sortAsc:`Ascendente`,sortDesc:`Descendente`,chart:`Gráfico`,chartHint:`Visualización opcional junto a la tabla.`,chartType:`Tipo de gráfico`,chartTitle:`Título del gráfico`,chartTitlePlaceholder:`Por defecto, el título del informe`,chartXAxis:`Eje X (categoría)`,chartYAxis:`Eje Y (valor)`,chartShowLegend:`Mostrar leyenda`,chartShowDataLabels:`Mostrar etiquetas de datos`,chartNone:`(sin gráfico)`,chartBar:`Barras`,chartLine:`Líneas`,chartArea:`Áreas`,chartPie:`Circular`,chartDonut:`Anillo`,chartFunnel:`Embudo`,validationNeedsObject:`Selecciona una fuente de datos antes de añadir columnas.`,validationMatrixNeedsRowsCols:`Los informes de matriz necesitan al menos una fila y una columna.`,validationSummaryNeedsRows:`Los informes de resumen necesitan al menos un campo de agrupación.`,blocks:`Bloques`,blocksHint:`Cada bloque es su propia tabla o gráfico. Los filtros del bloque se combinan (Y) con el filtro del informe.`,addBlock:`Añadir bloque`,removeBlock:`Eliminar bloque`,blockName:`Nombre del bloque`,blockNamePlaceholder:`nombre_unico_del_bloque`,blockLabel:`Etiqueta a mostrar`,blockLabelPlaceholder:`Se muestra encima del bloque`,blockDescription:`Descripción`,blockDescriptionPlaceholder:`Contexto opcional para este bloque`,validationJoinedNeedsBlocks:`Los informes combinados necesitan al menos un bloque.`,validationBlockNameRequired:`Cada bloque debe tener un nombre no vacío.`,validationBlockNameDuplicate:`Los nombres de bloque deben ser únicos dentro del informe.`,validationBlockNeedsColumns:`Cada bloque debe tener al menos una columna.`,noneOption:`(ninguno)`,addCondition:`Añadir condición`,combineLogic:`Combinar con`,opContains:`contiene`,opIsEmpty:`está vacío`,opIsNotEmpty:`no está vacío`,formatAuto:`Auto`,formatCurrency:`Moneda`,formatPercent:`Porcentaje`,formatInteger:`Entero`,formatDate:`Fecha`,formatDatetime:`Fecha y hora`,columnLabelPlaceholder:`Sobrescribir etiqueta`,aggregateColumn:`Agregación`,formatColumn:`Formato`,addColumns:`Añadir columnas`,searchFields:`Buscar campos…`,noMatchingFields:`Ningún campo coincide con tu búsqueda.`,noFieldsAvailable:`No hay campos disponibles.`,columnsCount:`{n} columna(s) seleccionada(s)`,columnsEmpty:`Aún no hay columnas seleccionadas.`,fieldPickerTitle:`Seleccionar campos`,fieldPickerDescription:`Elija uno o más campos para agregar. Use el campo de búsqueda para filtrar la lista.`,fieldPickerChangeTitle:`Cambiar campo`,fieldPickerAddGroupingTitle:`Agregar agrupación`,fieldPickerEmpty:`(Seleccionar campo)`,fieldPickerSelected:`{n} seleccionado(s)`,fieldPickerClear:`Limpiar selección`,fieldPickerAdd:`Agregar`,fieldPickerAddN:`Agregar {n}`}},organizations:{mine:`Mis organizaciones`,title:`Organizaciones`,heading:`Tus organizaciones`,subtitle:`Selecciona una organización para continuar o crea una nueva.`,searchPlaceholder:`Buscar una organización`,new:`Nueva organización`,current:`Organización actual`,manage:`Administrar`,emptyTitle:`Aún no hay organizaciones`,emptyDescription:`Crea tu primera organización para empezar.`,noMatches:`Ninguna organización coincide con tu búsqueda.`},notifications:{empty:`Sin notificaciones`,markAllRead:`Marcar todo como leído`,viewAll:`Ver todas las notificaciones`,approvalsPending:`{{count}} aprobaciones pendientes`,viewApprovals:`Ver aprobaciones`,noPendingApprovals:`Sin aprobaciones pendientes`,openApprovalsInbox:`Abrir bandeja de aprobaciones`,emptyUnread:`Todo al día`,filterUnread:`No leídos`,filterAll:`Todos`},publicForm:{submit:`Enviar`,submitting:`Enviando…`,submitAnother:`Enviar otra respuesta`,poweredBy:`Desarrollado por ObjectStack`,secureNotice:`Su información se transmite de forma segura y solo se usa para atender su solicitud.`,thankYouTitle:`¡Gracias!`,thankYouMessage:`Su envío fue recibido correctamente.`,redirecting:`Redirigiendo en {{seconds}} segundos…`,unavailableTitle:`Formulario no disponible`,unavailableDescription:`No hay formulario público disponible en esta URL. Asegúrese de que la vista subyacente tenga habilitado el uso compartido anónimo.`,tryDemo:`Probar demo`,retry:`Reintentar`,loading:`Cargando formulario…`,requiredHint:`* Campo obligatorio`,consentLabelDefault:`Acepto la política de privacidad y doy mi consentimiento para procesar mis datos para esta solicitud.`,consentLink:`Política de privacidad`,consentRequired:`Acepte la política de privacidad para continuar.`,rateLimited:`Tómese un momento para revisar sus respuestas antes de enviar.`,redirectBlocked:`Envío aceptado, pero la URL de redirección fue bloqueada por seguridad.`,demo:{contactTitle:`Ponerse en contacto`,contactDescription:`Cuéntenos sobre su proyecto y un representante de ventas le contactará en un día hábil.`,supportTitle:`Enviar solicitud de soporte`,supportDescription:`Descríbanos el problema — nuestro equipo responderá en un día hábil.`,thankYouSalesTitle:`¡Gracias — recibimos su mensaje!`,thankYouSalesMessage:`Un representante de ventas le contactará en un día hábil.`,thankYouSupportTitle:`Listo — su solicitud está en cola.`,thankYouSupportMessage:`Un ingeniero de soporte le dará seguimiento pronto. Guarde esta página si tiene capturas de pantalla adicionales.`,field:{firstName:`Nombre`,lastName:`Apellido`,email:`Correo empresarial`,phone:`Teléfono`,jobTitle:`Cargo`,company:`Empresa`,website:`Sitio web`,industry:`Industria`,companySize:`Tamaño de empresa`,howCanWeHelp:`¿Cómo podemos ayudarle?`,subject:`Asunto`,description:`Descripción`,issueType:`Tipo de problema`,priority:`Prioridad`},industry:{technology:`Tecnología`,software:`Software / SaaS`,finance:`Finanzas`,healthcare:`Salud`,retail:`Retail`,other:`Otro`},issueType:{question:`Pregunta`,problem:`Problema`,bug:`Error`,feature_request:`Solicitud de función`},priority:{low:`Baja`,medium:`Media`,high:`Alta`,critical:`Crítica`}}},marketplace:{title:`Marketplace de aplicaciones`,subtitle:`Explore aplicaciones aprobadas publicadas en el catálogo de ObjectStack. Haga clic en una aplicación para ver detalles e instalarla en uno de sus entornos.`,searchPlaceholder:`Buscar aplicaciones por nombre o ID de manifiesto…`,searchAria:`Buscar aplicaciones del marketplace`,installed:`Instalado`,installedCount:`Instaladas ({{count}})`,refresh:`Actualizar`,all:`Todas`,noApprovedYet:`Aún no hay aplicaciones aprobadas para el marketplace.`,noMatchFilters:`Ninguna aplicación coincide con sus filtros.`,noDescription:`Sin descripción disponible.`,back:`Volver al marketplace`,installedTitle:`Aplicaciones instaladas`,installedSubtitle:`Paquetes del marketplace instalados en el kernel de este runtime.`,installedEmpty:`Aún no hay aplicaciones del marketplace instaladas en este runtime.`,browseLink:`Explorar marketplace →`,installedAdditiveNote:`<strong>Nota:</strong> La API del kernel es solo aditiva — desinstalar elimina el manifiesto del disco para que el paquete no se cargue al próximo inicio, pero el kernel en ejecución mantiene la aplicación registrada hasta reiniciar.`,installedAt:`Instalado {{when}}`,installedBy:`por {{user}}`,installedPackageId:`Paquete`,cachedAs:`Almacenado en caché como <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Instalado v{{version}}`,load:{failed:`No se pudo cargar el marketplace`,failedHint:`Por defecto, este runtime apunta a la nube pública de ObjectStack. Asegúrese de que el runtime esté en línea.`,packageFailed:`No se pudo cargar el paquete`,notFound:`No encontrado.`},detail:{homepage:`Página de inicio`,installedV:`Instalado · v{{version}}`,about:`Acerca de`,noReadme:`Sin readme disponible.`,versions:`Versiones`,noApprovedVersions:`Sin versiones aprobadas.`,prerelease:`Prelanzamiento`,moreOptions:`Más opciones de instalación`,uninstallFromRuntime:`Desinstalar de este runtime`},action:{install:`Instalar`,reinstall:`Reinstalar`,working:`Procesando…`,installToCloud:`Instalar en la nube…`,installing:`Instalando…`,uninstall:`Desinstalar`,uninstalling:`Desinstalando…`,details:`Detalles`,close:`Cerrar`,dismiss:`Descartar`,openOnCloud:`Abrir en la nube`,backHome:`Volver al inicio`},install:{dialogTitle:`Instalar {{name}}`,dialogDescCurrent:`Instalar en este entorno ({{host}}).`,dialogDescPicker:`Elija un entorno donde instalar esta aplicación. Debe haber iniciado sesión en ObjectStack Cloud.`,environment:`Entorno`,environmentPlaceholder:`Seleccionar entorno`,includeSampleData:`Incluir datos de muestra`,noEnvs:`No se encontraron entornos en su organización activa.`,noPermission:`No tiene permiso para instalar aplicaciones en un entorno. Solo los propietarios y administradores de la organización pueden instalar.`,signInFirst:`Primero debe iniciar sesión en ObjectStack Cloud.`,success:`Instalado correctamente. Abra el entorno para ver la nueva aplicación.`,localSuccess:`v{{version}} instalado en este runtime. "{{name}}" debería aparecer en el selector de aplicaciones ahora.`,localManifestConflict:`{{message}}
|
|
23
|
+
Nota: Una aplicación local ya tiene este manifest_id. Primero elimínela de objectstack.config.ts.`,localUnauthorized:`Primero inicie sesión en este runtime.`,localMarketplaceUnavailable:`Este runtime no tiene configurado OS_CLOUD_URL.`},uninstall:{confirm:`¿Desinstalar {{manifestId}} v{{version}} de este runtime?
|
|
24
|
+
|
|
25
|
+
El manifiesto en caché será eliminado.`,successInList:`{{manifestId}} eliminado. Reinicie el runtime para descargarlo completamente.`,successInDetail:`Manifiesto en caché para {{manifestId}} eliminado.`},accessDenied:{title:`Marketplace solo para administradores`,description:`No tiene permiso para instalar aplicaciones en este entorno.`},category:{crm:`CRM`,erp:`ERP`,hr:`RRHH`,finance:`Finanzas`,project:`Gestión de proyectos`,collaboration:`Colaboración`,analytics:`Analítica`,integration:`Integración`,automation:`Automatización`,ai:`IA`,security:`Seguridad`,"developer-tools":`Herramientas de desarrollador`,"ui-theme":`Tema de UI`,storage:`Almacenamiento`,other:`Otro`},pricing:{free:`Gratis`,freemium:`Freemium`,paid:`De pago`,subscription:`Suscripción`,"usage-based":`Por uso`,"contact-sales":`Contactar ventas`},relativeTime:{today:`hoy`,daysAgo:`hace {{count}}d`,monthsAgo:`hace {{count}} meses`,yearsAgo:`hace {{count}} años`}}},pt:{common:{addToFavorites:`Adicionar aos favoritos`,removeFromFavorites:`Remover dos favoritos`,loading:`Carregando...`,save:`Salvar`,cancel:`Cancelar`,delete:`Excluir`,edit:`Editar`,create:`Criar`,search:`Pesquisar`,filter:`Filtrar`,reset:`Redefinir`,confirm:`Confirmar`,close:`Fechar`,back:`Voltar`,next:`Próximo`,previous:`Anterior`,submit:`Enviar`,refresh:`Atualizar`,export:`Exportar`,import:`Importar`,yes:`Sim`,no:`Não`,ok:`OK`,actions:`Ações`,more:`Mais`,selectAll:`Selecionar tudo`,clearAll:`Limpar tudo`,noData:`Sem dados`,noResults:`Nenhum resultado encontrado`,required:`Obrigatório`,optional:`Opcional`,selectOption:`Selecionar uma opção`,select:`Selecionar...`,openChat:`Abrir chat`,closeChat:`Fechar chat`,toggleSidebar:`Alternar barra lateral`},validation:{required:`{{field}} é obrigatório`,minLength:`{{field}} deve ter pelo menos {{min}} caracteres`,maxLength:`{{field}} deve ter no máximo {{max}} caracteres`,min:`{{field}} deve ser pelo menos {{min}}`,max:`{{field}} deve ser no máximo {{max}}`,email:`Por favor, insira um endereço de e-mail válido`,url:`Por favor, insira uma URL válida`,pattern:`O formato de {{field}} é inválido`,unique:`{{field}} deve ser único`,type:`{{field}} deve ser um {{type}} válido`},form:{addItem:`Adicionar item`,removeItem:`Remover item`,fieldRequired:`Este campo é obrigatório`,invalidFormat:`Formato inválido`,saveSuccess:`Salvo com sucesso`,saveError:`Falha ao salvar`,unsavedChanges:`Você tem alterações não salvas. Tem certeza de que deseja sair?`,stepOf:`Etapa {{current}} de {{total}}`,createTitle:`Criar {{object}}`,editTitle:`Editar {{object}}`,createDescription:`Adicionar um novo {{object}} ao seu banco de dados.`,editDescription:`Atualizar detalhes de {{object}}`,saveRecord:`Salvar registro`,create:`Criar`,update:`Atualizar`,createSuccess:`{{object}} criado`,updateSuccess:`{{object}} atualizado`,deleteSuccess:`{{object}} excluído`},fields:{richText:{format:`Formato: {{format}}`,basicEditorHint:`Editor de texto rico (básico)`,placeholder:`Digite algo...`}},table:{rowsPerPage:`Linhas por página`,showing:`Mostrando {{from}} a {{to}} de {{total}}`,noRows:`Nenhuma linha para exibir`,sortAsc:`Ordenar crescente`,sortDesc:`Ordenar decrescente`,filterColumn:`Filtrar {{column}}`,columns:`Colunas`,exportCSV:`Exportar CSV`,exportExcel:`Exportar Excel`,selectRow:`Selecionar linha`,selectAllRows:`Selecionar todas as linhas`,expandRow:`Expandir linha`,collapseRow:`Recolher linha`,hideColumn:`Ocultar coluna`,freezeColumn:`Fixar coluna`,unfreezeColumn:`Soltar coluna`,pageInfo:`Página {{current}} de {{total}}`,totalRecords:`{{count}} no total`,noResults:`Sem resultados`,noResultsHint:`Tente ajustar seus filtros ou termos de pesquisa.`,cancelAll:`Cancelar tudo`,saveAll:`Salvar tudo ({{count}})`,addRecord:`Adicionar registro`,open:`Abrir`,search:`Pesquisar...`,modified:`{{count}} linha(s) modificada(s)`,selected:`{{count}} selecionado(s)`,edit:`Editar`,delete:`Excluir`},grid:{actions:`Ações`,edit:`Editar`,delete:`Excluir`,export:`Exportar`,exportAs:`Exportar como {{format}}`,loading:`Carregando grade...`,errorLoading:`Erro ao carregar grade`,pullToRefresh:`Puxe para atualizar`,refreshing:`Atualizando…`,openRecord:`Abrir registro`,rowHeight:`Altura da linha: {{mode}}`,openMenu:`Abrir menu`,empty:`Vazio`,yes:`Sim`,no:`Não`,systemFields:`Sistema`,toolbar:{densityMode:`Densidade`,densityCompact:`Compacto`,densityComfortable:`Normal`,densitySpacious:`Espaçoso`,densityCycleHint:`{{label}} (clique para alterar)`,densityCycleShortHint:`Clique para alterar`},import:{title:`Importar {{object}}`,stepUpload:`Enviar`,stepMapping:`Mapeamento`,stepPreview:`Pré-visualização`,uploadDescription:`Envie um arquivo CSV para começar.`,mappingDescription:`Mapeie colunas CSV para campos do objeto.`,previewDescription:`Revise os dados antes de importar.`,dragDrop:`Arraste o arquivo CSV aqui ou clique para procurar`,browseFiles:`Procurar arquivos`,onlyCsv:`Apenas arquivos CSV são suportados.`,fileNeedsHeader:`O arquivo deve ter uma linha de cabeçalho e pelo menos uma linha de dados.`,mappingTemplate:`Modelo de mapeamento:`,chooseTemplate:`Escolher modelo…`,noSavedTemplates:`Sem modelos salvos`,noneOption:`— Nenhum —`,saveCurrent:`Salvar atual`,templateName:`Nome do modelo`,save:`Salvar`,deleteTemplate:`Excluir modelo`,csvColumn:`Coluna CSV`,mapsTo:`Mapeia para`,status:`Status`,skipColumn:`Pular coluna`,skip:`— Pular —`,mapped:`Mapeado`,skipped:`Pulado`,rowsWithErrors:`{{count}} linha(s) com erros`,rowsCorrected:`{{count}} linha(s) corrigida(s)`,clickToFix:`— clique em uma célula destacada para editar em linha.`,showingRows:`Mostrando {{shown}} de {{total}} linhas`,importing:`Importando… {{progress}}%`,importComplete:`Importação concluída`,imported:`{{count}} importado(s)`,skippedCount:`{{count}} pulado(s)`,moreErrors:`…e {{count}} erro(s) a mais`,cancel:`Cancelar`,back:`Voltar`,next:`Próximo`,close:`Fechar`,importNRows:`Importar {{count}} linhas`,importingProgress:`Importando…`,requiredMark:`*`,required:`Obrigatório`,invalidType:`{{type}} inválido`}},calendar:{today:`Hoje`,month:`Mês`,week:`Semana`,day:`Dia`,agenda:`Agenda`,allDay:`Dia inteiro`,noEvents:`Sem eventos`,newEvent:`Novo evento`,moreEvents:`+{{count}} mais`},list:{recordCount:`{{count}} registros`,recordCountOne:`{{count}} registro`,addRecord:`Adicionar registro`,tabs:`Abas`,allRecords:`Todos os registros`,search:`Pesquisar`,filter:`Filtrar`,filterRecords:`Filtrar registros`,sort:`Ordenar`,sortRecords:`Ordenar registros`,group:`Agrupar`,groupBy:`Agrupar por`,export:`Exportar`,exportAs:`Exportar como {{format}}`,color:`Cor`,rowColor:`Cor da linha`,colorByField:`Colorir por campo`,clear:`Limpar`,none:`Nenhum`,hideFields:`Ocultar campos`,noItems:`Nenhum item encontrado`,noItemsMessage:`Não há registros para exibir. Tente ajustar os filtros ou adicionar novos dados.`,showAll:`Mostrar tudo`,pullToRefresh:`Puxar para atualizar`,refreshing:`Atualizando…`,share:`Compartilhar`,print:`Imprimir`,hideFieldsTitle:`Ocultar campos`,dataLimitReached:`Os primeiros {{limit}} registros estão sendo exibidos. Pode haver mais dados disponíveis.`,viewSettings:`Configurações de exibição`,viewSettingsHint:`Agrupamento, cor, densidade e campos visíveis.`,addGroup:`Adicionar campo de grupo`,collapsedByDefault:`Recolhido por padrão`,removeGroup:`Remover`},kanban:{addCard:`Adicionar cartão`,addColumn:`Adicionar coluna`,moveCard:`Mover cartão`,deleteCard:`Excluir cartão`,deleteColumn:`Excluir coluna`,noCards:`Sem cartões`,cardTitlePlaceholder:`Digite o título do cartão...`},timeline:{bucket:{overdue:`Atrasado`,today:`Hoje`,tomorrow:`Amanhã`,thisWeek:`Esta semana`,nextWeek:`Próxima semana`,later:`Mais tarde`,noDate:`Sem data`,unassigned:`Não atribuído`}},gantt:{column:{taskName:`Nome da tarefa`,start:`Início`,end:`Fim`},toolbar:{prevPeriod:`Período anterior`,nextPeriod:`Próximo período`,zoomIn:`Ampliar`,zoomOut:`Reduzir`,jumpToToday:`Ir para hoje`,today:`Hoje`,showTaskList:`Mostrar lista de tarefas`,hideTaskList:`Ocultar lista de tarefas`}},view:{rename:`Renomear`,duplicateView:`Duplicar visualização`,shareView:`Compartilhar visualização`,setAsDefault:`Definir como padrão`,pinView:`Fixar visualização`,unpinView:`Desfixar visualização`,changeViewType:`Alterar tipo de visualização`,deleteView:`Excluir visualização`,addView:`Adicionar visualização`,unsavedChanges:`Alterações não salvas`,saveAsView:`Salvar como visualização`,moreViews:`mais {{count}}`,activeFilters:`Filtros ativos`,activeSort:`Ordenação ativa`,manageViews:`Gerenciar exibições`,manageAllViews:`Gerenciar todas as exibições…`,searchViews:`Pesquisar exibições`,addNewView:`Adicionar nova exibição`,done:`Concluído`,noViewsFound:`Nenhuma exibição corresponde à sua pesquisa.`,dragToReorder:`Arrastar para reordenar`,defaultView:`Exibição padrão`,tabActionsFor:`Ações de exibição para {{name}}`,readonlyAriaLabel:`Exibição somente leitura`,readonlyTooltip:`Exibição do sistema — duplique para personalizar.`},detail:{back:`Voltar`,edit:`Editar`,editInline:`Editar`,save:`Salvar`,saveChanges:`Salvar alterações`,editFieldsInline:`Editar campos`,share:`Compartilhar`,duplicate:`Duplicar`,export:`Exportar`,viewHistory:`Ver histórico`,delete:`Excluir`,moreActions:`Mais ações`,addToFavorites:`Adicionar aos favoritos`,removeFromFavorites:`Remover dos favoritos`,previousRecord:`Registro anterior`,nextRecord:`Próximo registro`,recordOf:`{{current}} de {{total}}`,recordNotFound:`Registro não encontrado`,recordNotFoundDescription:`O registro que você está procurando não existe ou pode ter sido excluído.`,goBack:`Voltar`,details:`Detalhes`,related:`Relacionados`,relatedRecords:`{{count}} registros`,relatedRecordOne:`{{count}} registro`,noRelatedRecords:`Nenhum registro relacionado encontrado`,loading:`Carregando...`,copyToClipboard:`Copiar para área de transferência`,copied:`Copiado!`,deleteConfirmation:`Tem certeza de que deseja excluir este registro?`,editRecord:`Editar registro`,viewAll:`Ver tudo`,new:`Novo`,emptyValue:`—`,comments:`Comentários`,searchComments:`Pesquisar comentários…`,addCommentPlaceholder:`Adicionar comentário… (Ctrl+Enter para enviar)`,noMatchingComments:`Nenhum comentário correspondente`,noCommentsYet:`Nenhum comentário ainda`,pinned:`Fixado`,pin:`Fixar`,unpin:`Desfixar`,justNow:`agora mesmo`,minutesAgo:`há {{count}} min`,hoursAgo:`há {{count}} h`,daysAgo:`há {{count}} d`,dropFilesToUpload:`Arraste arquivos aqui ou clique para enviar`,attachmentCount:`{{count}} anexo`,attachmentCountPlural:`{{count}} anexos`,removeAttachment:`Remover anexo`,unifiedDiff:`Visualização unificada`,sideBySideDiff:`Visualização lado a lado`,noChanges:`Sem alterações`,previousVersion:`Anterior`,currentVersion:`Atual`,discussion:`Discussão`,showDiscussion:`Mostrar discussão ({{count}})`,hideDiscussion:`Ocultar discussão`,bold:`Negrito (Ctrl+B)`,italic:`Itálico (Ctrl+I)`,listFormat:`Lista`,inlineCode:`Código inline`,mentionSomeone:`Mencionar alguém`,preview:`Pré-visualização`,submitComment:`Enviar (Ctrl+Enter)`,sendComment:`Enviar`,writeComment:`Escreva um comentário…`,subscribedTooltip:`Inscrito — clique para cancelar inscrição`,unsubscribedTooltip:`Inscrever-se para notificações`,firstRecord:`Primeiro registro (Home)`,previousRecordKey:`Registro anterior (←)`,nextRecordKey:`Próximo registro (→)`,lastRecord:`Último registro (End)`,noRecords:`Sem registros`,searchWhileNavigating:`Pesquisar durante a navegação`,searchRecords:`Pesquisar registros…`,allActivity:`Toda atividade`,commentsOnly:`Apenas comentários`,fieldChangesFilter:`Alterações de campo`,tasksOnly:`Apenas tarefas`,leaveCommentPlaceholder:`Deixar um comentário… (Ctrl+Enter para enviar)`,noActivity:`Nenhuma atividade registrada`,loadMore:`Carregar mais`,edited:`(editado)`,via:`via {{source}}`,replyCount:`{{count}} resposta`,replyCountPlural:`{{count}} respostas`,replyPlaceholder:`Responder…`,filterActivity:`Filtrar atividade`,openDiscussion:`Abrir painel de discussão`,closeDiscussion:`Fechar painel de discussão`,subscribeAriaLabel:`Inscrever-se para notificações`,unsubscribeAriaLabel:`Cancelar inscrição de notificações`,clearSearch:`Limpar pesquisa`,saving:`Salvando…`,lockedByApproval:`Bloqueado para aprovação`,lockedTooltip:`Este registro tem uma solicitação de aprovação pendente; a edição está bloqueada`,cancelApproval:`Cancelar aprovação`,cancelApprovalInFlight:`Cancelando…`,cancelApprovalTooltip:`Cancelar a solicitação de aprovação pendente para desbloquear o registro`,cancelApprovalFailed:`Falha ao cancelar aprovação`,cancelApprovalUnavailable:`O cancelamento de aprovações não é suportado por esta fonte de dados`,linkCopied:`Link copiado para a área de transferência`,linkCopyFailed:`Falha ao copiar o link`,cancel:`Cancelar`,cancelEdit:`Descartar alterações`,sectionMoreDetails:`Mais detalhes`,concurrentUpdateTitle:`Este registro foi modificado por outra pessoa`,concurrentUpdateDescription:`Outro usuário salvou uma versão mais recente de {{field}} durante sua edição. Escolha como resolver o conflito.`,concurrentUpdateYourEdit:`Sua edição`,concurrentUpdateCurrentValue:`Valor atual`,concurrentUpdateUpdatedBy:`Atualizado por {{name}}`,concurrentUpdateUpdatedAt:`Atualizado em {{when}}`,concurrentUpdateReload:`Carregar versão atual`,concurrentUpdateOverwrite:`Sobrescrever mesmo assim`,concurrentUpdateCancel:`Cancelar`,openInNewTab:`Abrir em nova aba`,activity:`Atividade`,history:`Histórico`,editRow:`Editar`,deleteRow:`Excluir`,deleteRowConfirmation:`Excluir este registro?`,deleteRowTitle:`Excluir registro`,actions:`Ações`,previousPage:`Anterior`,nextPage:`Próximo`,pageOf:`Página {{current}} de {{total}}`,sortBy:`Ordenar por`,filterPlaceholder:`Filtrar...`,highlightFields:`Campos principais`,createdBy:`Criado por`,updatedBy:`Atualizado por`,showEmptyRelated_one:`+ {{count}} vazio`,showEmptyRelated_other:`+ {{count}} vazios`,copyEmail:`Copiar e-mail`,copyPhone:`Copiar telefone`,copyRecordId:`Copiar ID do registro`,showEmptyFields:`Mostrar {{count}} campos vazios`,hideEmptyFields:`Ocultar campos vazios`,noValue:`Sem valor`},chart:{noData:`Nenhum dado de gráfico disponível`,loading:`Carregando gráfico...`},map:{searchLocations:`Pesquisar locais…`,locationDetails:`Detalhes do local`,markersCount:`{{count}} marcadores`,invalidCoordinates:`{{count}} registro com coordenadas ausentes ou inválidas excluído do mapa.`,invalidCoordinatesPlural:`{{count}} registros com coordenadas ausentes ou inválidas excluídos do mapa.`},workflow:{draft:`Rascunho`,active:`Ativo`,paused:`Pausado`,completed:`Concluído`,cancelled:`Cancelado`,save:`Salvar`,publish:`Publicar`,addNode:`Adicionar nó`,workflowFlow:`Fluxo de trabalho`,properties:`Propriedades`,connections:`Conexões`,quickConnect:`Conexão rápida`,fromPlaceholder:`De...`,toPlaceholder:`Para...`,connect:`Conectar`,label:`Rótulo`,type:`Tipo`,description:`Descrição`,assignee:`Responsável`,assigneeType:`Tipo de responsável`,user:`Usuário`,role:`Função`,group:`Grupo`,expression:`Expressão`,timeoutMinutes:`Tempo limite (minutos)`,selectNodeToEdit:`Selecione um nó para editar suas propriedades`,workflowTitle:`Título do fluxo de trabalho`,newWorkflow:`Novo fluxo de trabalho`,outConnections:`{{count}} saída(s)`,start:`Início`,end:`Fim`,task:`Tarefa`,userTask:`Tarefa de usuário`,serviceTask:`Tarefa de serviço`,scriptTask:`Tarefa de script`,approval:`Aprovação`,condition:`Condição`,parallelGateway:`Gateway paralelo`,joinGateway:`Gateway de junção`,boundaryEvent:`Evento de limite`,delay:`Atraso`,notification:`Notificação`,webhook:`Webhook`,allowConcurrency:`Permitir (execução simultânea)`,forbidConcurrency:`Proibir (pular novos)`,replaceConcurrency:`Substituir (cancelar existentes)`,queueConcurrency:`Fila (executar após atual)`,conditionEvent:`Condição`,manualEvent:`Manual`,webhookEvent:`Webhook`,timerEvent:`Temporizador`,signalEvent:`Sinal`,versionHistory:`Histórico de versões`,importBpmn:`Importar BPMN`,exportBpmn:`Exportar BPMN`,undo:`Desfazer`,redo:`Refazer`,resetZoom:`Redefinir zoom`},dashboard:{addWidget:`Adicionar widget`,removeWidget:`Remover widget`,editLayout:`Editar layout`,saveLayout:`Salvar layout`,resetLayout:`Redefinir layout`,total:`Total`,noDataAvailable:`Sem dados disponíveis`,noDataSourceFor:`Sem fonte de dados para`,trend:{vsLastQuarter:`vs. trimestre anterior`,vsLastMonth:`vs. mês anterior`,vsLastWeek:`vs. semana anterior`,vsLastYear:`vs. ano anterior`,vsYesterday:`vs. ontem`,vsPreviousPeriod:`vs. período anterior`}},configPanel:{save:`Salvar`,discard:`Descartar`,close:`Fechar`,layout:`Layout`,columns:`Colunas`,gap:`Espaçamento`,rowHeight:`Altura da linha`,data:`Dados`,refreshInterval:`Intervalo de atualização`,appearance:`Aparência`,title:`Título`,showDescription:`Mostrar descrição`,theme:`Tema`,configuration:`Configuração`,general:`Geral`,advanced:`Avançado`},appDesigner:{createApp:`Criar aplicativo`,editApp:`Editar aplicativo`,basicInfo:`Informações básicas`,objects:`Objetos`,navigation:`Navegação`,branding:`Marca`,appName:`Nome do app`,appTitle:`Título`,appDescription:`Descrição`,appIcon:`Ícone`,template:`Modelo`,layout:`Layout`,layoutSidebar:`Barra lateral`,layoutHeader:`Cabeçalho`,layoutEmpty:`Vazio`,selectObjects:`Selecionar objetos`,searchObjects:`Pesquisar objetos…`,selectAll:`Selecionar todos`,deselectAll:`Desmarcar todos`,navBuilder:`Construtor de navegação`,addGroup:`Adicionar grupo`,addUrl:`Adicionar URL`,addSeparator:`Adicionar separador`,noNavItems:`Nenhum item de navegação ainda.`,logoUrl:`Logo URL`,primaryColor:`Cor primária`,faviconUrl:`Favicon URL`,preview:`Pré-visualização`,complete:`Concluir`,snakeCaseHint:`Must be snake_case (e.g. my_app)`,modeEdit:`Editar`,modePreview:`Pré-visualizar`,modeCode:`Código`,addWidget:`Adicionar widget`,widgetProperties:`Propriedades do widget`,dataSource:`Fonte de dados`,valueField:`Campo de valor`,aggregate:`Agregar`,colorVariant:`Variante de cor`,addComponent:`Adicionar componente`,componentProperties:`Propriedades do componente`,viewType:`Tipo de exibição`,fields:`Campos`,toolbar:`Barra de ferramentas`,showSearch:`Mostrar pesquisa`,showFilters:`Mostrar filtros`,showSort:`Mostrar ordenação`,appearance:`Aparência`,rowHeight:`Altura da linha`,stripedRows:`Linhas alternadas`,bordered:`Com borda`,livePreview:`Pré-visualização em tempo real`,stepBasicDesc:`Nome, título e layout`,stepObjectsDesc:`Selecionar objetos de negócio`,stepNavigationDesc:`Construir árvore de navegação`,stepBrandingDesc:`Logo, cores e favicon`,noObjectsFound:`Nenhum objeto encontrado.`,noNavItemsHint:`Sem itens de navegação. Selecione objetos na etapa anterior ou adicione manualmente.`,separator:`Separador`,separatorLabel:`— Separador —`,newGroup:`Novo grupo`,newLink:`Novo link`,saveDraft:`Salvar rascunho`,cancelConfirmTitle:`Descartar alterações?`,cancelConfirmMessage:`Você tem alterações não salvas. Tem certeza de que deseja cancelar?`,confirmDiscard:`Descartar`,keepEditing:`Continuar editando`,navNoItems:`Sem itens de navegação. Clique nos botões acima para adicionar itens.`,navNoPreviewItems:`Sem itens`,navLivePreview:`Pré-visualização ao vivo`,navCollapseGroup:`Recolher grupo`,navExpandGroup:`Expandir grupo`,navAddChild:`Adicionar filho`,navMoveUp:`Mover para cima`,navMoveDown:`Mover para baixo`,navRemove:`Remover`,navObjectPage:`Página de objeto`,navDashboard:`Painel`,navPage:`Página`,navReport:`Relatório`,navGroup:`Grupo`,navUrl:`URL`,navSeparator:`Separador`,navTypeObject:`Objeto`,navTypeDashboard:`Painel`,navTypePage:`Página`,navTypeReport:`Relatório`,navTypeUrl:`URL`,navTypeGroup:`Grupo`,navTypeSeparator:`Separador`,navTypeAction:`Ação`,navEditIcon:`Editar ícone`,navToggleVisible:`Alternar visibilidade`,navHidden:`Oculto`,navExportSchema:`Exportar JSON`,navImportSchema:`Importar JSON`,navExportSuccess:`Esquema de navegação exportado`,navImportSuccess:`Esquema de navegação importado`,navImportError:`JSON de navegação inválido`,navIconPlaceholder:`Nome do ícone (ex. Users)`,dashboardEditor:`Editor de painel`,noWidgets:`Sem widgets. Clique em um botão acima para adicionar um.`,widgetLayoutSize:`Tamanho do layout`,widgetWidth:`Largura`,widgetHeight:`Altura`,dashboardPreview:`Pré-visualização do painel`,noWidgetsPreview:`Sem widgets para pré-visualizar`,pageCanvasEditor:`Editor de tela de página`,emptyPage:`Página vazia. Clique em um botão acima para adicionar um componente.`,pagePreview:`Pré-visualização da página`,noComponentsPreview:`Sem componentes para pré-visualizar`,modePage:`Página`,modeDashboard:`Painel`,undo:`Desfazer`,redo:`Refazer`,brandingEditor:`Editor de marca`,brandingExport:`Exportar JSON`,brandingImport:`Importar JSON`,brandingPreview:`Pré-visualização`,brandingSampleButton:`Botão de exemplo`,brandingSampleText:`É assim que seu tema de marca ficará.`,colorPalette:`Paleta de cores`,fontFamily:`Família de fontes`,fontDefault:`Padrão (sistema)`,modeLight:`Claro`,modeDark:`Escuro`,mobilePreview:`Pré-visualização mobile`,objectManager:{title:`Gerenciador de objetos`,addObject:`Novo objeto`,searchPlaceholder:`Pesquisar objetos…`,noObjects:`Nenhum objeto encontrado.`,objectName:`Nome da API`,objectLabel:`Rótulo`,pluralLabel:`Rótulo plural`,icon:`Ícone`,selectIcon:`Selecionar ícone…`,group:`Grupo`,noGroup:`Sem grupo`,sortOrder:`Ordem de classificação`,enabled:`Habilitado`,relationships:`Relacionamentos`,systemBadge:`Sistema`,fieldCount:`{{count}} campos`,ungrouped:`Sem grupo`,deleteConfirmTitle:`Excluir objeto?`,deleteConfirmMessage:`Isso excluirá permanentemente o objeto e todos os seus campos. Esta ação não pode ser desfeita.`},fieldDesigner:{title:`Designer de campos`,addField:`Novo campo`,searchPlaceholder:`Pesquisar campos…`,allTypes:`Todos os tipos`,noFields:`Nenhum campo encontrado.`,fieldName:`Nome da API`,fieldLabel:`Rótulo`,fieldType:`Tipo`,fieldGroup:`Grupo`,description:`Descrição`,required:`Obrigatório`,unique:`Único`,readOnly:`Somente leitura`,hidden:`Oculto`,indexed:`Indexado`,externalId:`ID externo`,trackHistory:`Rastrear histórico`,defaultValue:`Valor padrão`,placeholder:`Espaço reservado`,referenceTo:`Referência a`,formula:`Fórmula`,options:`Opções`,addOption:`Adicionar opção`,validationRules:`Regras de validação`,addRule:`Adicionar regra`,systemBadge:`Sistema`,ungrouped:`Geral`,deleteConfirmTitle:`Excluir campo?`,deleteConfirmMessage:`O campo será excluído permanentemente. Os dados existentes neste campo serão perdidos.`,basicSection:`Básico`,typeSpecificSection:`Configurações de tipo`,advancedSection:`Avançado`,typeCategory:{text:`Texto`,number:`Número`,date:`Data e hora`,choice:`Escolha`,relation:`Relação`,advanced:`Avançado`}}},console:{title:`Console ObjectStack`,initializing:`Inicializando aplicação...`,breadcrumb:{dashboards:`Painéis`,pages:`Páginas`,reports:`Relatórios`,system:`Sistema`},loadingSteps:{connecting:`Conectando à fonte de dados`,loadingConfig:`Carregando configuração`,preparingWorkspace:`Preparando espaço de trabalho`},error:{connectionFailed:`Não é possível conectar ao servidor`,serverUnreachable:`O servidor {{url}} está inacessível.`,checkServer:`Verifique sua conexão de rede ou se o backend está em execução.`,timeout:`Tempo limite de conexão esgotado após 10 segundos.`},actions:{retry:`Tentar novamente`,retrying:`Tentando novamente…`},shortcuts:{title:`Atalhos de teclado`,description:`Referência rápida de todos os atalhos de teclado disponíveis.`,groups:{general:`Geral`,navigation:`Navegação`,dataViews:`Visualizações de dados`,preferences:`Preferências`},openCommandPalette:`Abrir paleta de comandos`,showShortcuts:`Mostrar atalhos de teclado`,closeDialog:`Fechar diálogo / painel`,toggleSidebar:`Alternar barra lateral`,focusSearch:`Focar na pesquisa`,createRecord:`Criar novo registro`,refreshData:`Atualizar dados`,editRecord:`Editar registro selecionado`,toggleDarkMode:`Alternar modo escuro`},commandPalette:{placeholder:`Digite um comando ou pesquise...`,noResults:`Nenhum resultado encontrado.`,objects:`Objetos`,dashboards:`Painéis`,pages:`Páginas`,reports:`Relatórios`,switchApp:`Trocar aplicativo`,current:`Atual`,preferences:`Preferências`,lightTheme:`Tema claro`,darkTheme:`Tema escuro`,systemTheme:`Tema do sistema`,actions:`Ações`,openFullSearch:`Abrir página de pesquisa completa`,createApp:`Criar novo aplicativo`,searching:`Pesquisando…`,records:`Registros`,recentRecords:`Vistos recentemente`},errors:{somethingWentWrong:`Algo deu errado`,unexpectedError:`Ocorreu um erro inesperado ao renderizar esta visualização.`,tryAgain:`Tentar novamente`,goHome:`Ir para início`,errorDetails:`Detalhes do erro (somente desenvolvimento)`},theme:{toggle:`Alternar tema`,light:`Claro`,dark:`Escuro`,system:`Sistema`},objectView:{objectNotFound:`Objeto não encontrado`,objectNotFoundDescription:`O objeto "{{objectName}}" não existe na configuração atual.`,objectNotFoundHint:`Verifique as configurações de navegação do seu aplicativo ou selecione um objeto diferente na barra lateral.`,allRecords:`Todos os registros`,exitDesignMode:`Sair do modo de design`,enterDesignMode:`Entrar no modo de design`,metadataInspector:`Inspetor de metadados`,editView:`Editar visualização`,addView:`Adicionar visualização`,designTools:`Ferramentas de design`,new:`Novo`,configureView:`Configurar visualização`,closePanel:`Fechar painel`,page:`Página`,pageConfigHint:`Barra de ferramentas, navegação e configurações do shell de visualização`,listConfigHint:`Renderização de dados, colunas e aparência para este tipo de lista`,general:`Geral`,generalHint:`Título, descrição e tipo da visualização`,toolbar:`Barra de ferramentas`,toolbarHint:`Pesquisa, filtro, ordenação, agrupamento e alternância de densidade`,toolbarEnabledCount:`{{count}} de {{total}} habilitados`,navigationSection:`Navegação`,navigationHint:`Comportamento ao clicar na linha e configurações da visualização detalhada`,records:`Registros`,recordsHint:`Modo de seleção, adicionar registro e edição em linha`,exportPrint:`Exportar e imprimir`,exportPrintHint:`Formatos de exportação, impressão e exibição da contagem de registros`,showAllFields:`Mostrar tudo`,hideAllFields:`Ocultar tudo`,searchFields:`Pesquisar campos...`,title:`Título`,description:`Descrição`,data:`Dados`,source:`Fonte`,columns:`Colunas`,filterBy:`Filtrar por`,sortBy:`Ordenar por`,appearance:`Aparência`,showDescription:`Mostrar descrição`,viewType:`Tipo de visualização`,userFilters:`Filtros do usuário`,enableSearch:`Habilitar pesquisa`,enableFilter:`Habilitar filtro`,enableSort:`Habilitar ordenação`,enableHideFields:`Ativar ocultar campos`,enableGroup:`Ativar agrupamento`,enableColor:`Ativar cor`,enableDensity:`Ativar densidade`,userActions:`Ações do usuário`,addRecordViaForm:`Adicionar registros via formulário`,advanced:`Avançado`,allowExport:`Permitir exportação`,recordCount:`{{count}} registros`,noDescription:`Sem descrição`,none:`Nenhum`,columnsConfigured:`{{count}} colunas`,save:`Salvar`,discard:`Descartar`,createView:`Criar visualização`,newView:`Nova visualização`,typeOptions:`Opções de tipo`,groupByField:`Campo de agrupamento`,startDateField:`Campo de data de início`,titleField:`Campo de título`,latitudeField:`Campo de latitude`,longitudeField:`Campo de longitude`,imageField:`Campo de imagem`,dateField:`Campo de data`,selectField:`Selecionar campo...`,gridOptionsHint:`A visualização de grade usa as colunas configuradas acima.`,groupBy:`Agrupar por`,prefixField:`Campo de prefixo`,fields:`Campos`,fieldsVisible:`{{count}} visíveis`,sortsCount:`{{count}} ordenações`,filtersCount:`{{count}} filtros`,endDateField:`Campo de data de término`,color:`Cor`,fieldTextColor:`Cor do texto do campo`,rowHeight:`Altura da linha`,wrapHeaders:`Quebrar cabeçalhos`,showFieldDescriptions:`Mostrar descrições dos campos`,collapseAllByDefault:`Recolher tudo por padrão`,striped:`Linhas listradas`,bordered:`Células com borda`,inlineEdit:`Editar registros em linha`,addDeleteRecordsInline:`Adicionar/excluir registros em linha`,clickIntoRecordDetails:`Clique para detalhes do registro`,navigationMode:`Modo de navegação`,navigationWidth:`Largura de navegação`,navigationWidthHint:`Disponível para os modos de navegação gaveta, modal e dividido`,openNewTab:`Abrir em nova aba`,openNewTabHint:`Disponível para os modos de navegação página e nova janela`,import:`Importar`,importTitle:`Importar do CSV`,importedToast:`{{count}} linha(s) importada(s).`,importedWithSkipped:`{{ok}} linha(s) importada(s); {{skipped}} pulada(s).`,showAdvancedSettings:`Mostrar configurações avançadas`,showFewerSettings:`Mostrar menos configurações`,createViewDesc:`Escolha um tipo de exibição e dê um nome a ela. Todas as configurações podem ser alteradas depois.`,cancel:`Cancelar`,create:`Criar`,delete:`Excluir`,deleteViewTitle:`Excluir exibição`,deleteViewConfirm:`Excluir a exibição "{{name}}"? Isso não pode ser desfeito.`,bulkDeleteConfirm:`Excluir {{count}} registros selecionados? Isso não pode ser desfeito.`,duplicateViewName:`Já existe uma exibição com esse nome.`,viewTypeGrid:`Grade`,viewTypeGridDesc:`Tabela de registros no estilo planilha.`,viewTypeKanban:`Kanban`,viewTypeKanbanDesc:`Cartões agrupados em colunas por um campo de seleção única.`,viewTypeCalendar:`Calendário`,viewTypeCalendarDesc:`Registros colocados por data em um calendário mensal.`,viewTypeGallery:`Galeria`,viewTypeGalleryDesc:`Cartões de imagem grandes de um campo de anexo.`,viewTypeTimeline:`Linha do tempo`,viewTypeTimelineDesc:`Registros ao longo de um eixo de tempo horizontal.`,viewTypeGantt:`Gantt`,viewTypeGanttDesc:`Barras de projeto com início/fim e dependências.`,viewTypeMap:`Mapa`,viewTypeMapDesc:`Marcadores geográficos de campos de latitude/longitude.`,viewTypeChart:`Gráfico`,viewTypeChartDesc:`Gráficos de barras/linhas/pizza agregados.`,groupByFieldHelp:`O quadro Kanban agrupa registros em colunas pelos valores do campo.`,startDateFieldHelp:`O calendário coloca os registros na célula correspondente a esta data.`,ganttStartDateFieldHelp:`A borda esquerda de cada barra Gantt usa esta data.`,ganttEndDateFieldHelp:`A borda direita de cada barra Gantt usa esta data.`,timelineDateFieldHelp:`Os registros são posicionados na linha do tempo com base nesta data.`,latitudeFieldHelp:`Campo contendo a latitude (apenas campos geográficos).`,longitudeFieldHelp:`Campo contendo a longitude (apenas campos geográficos).`,imageFieldHelp:`A capa da galeria vem deste campo de imagem ou anexo.`,selectOption:`Selecionar...`,noEligibleFieldForType:`Nenhum campo elegível desse tipo. Adicione um ao objeto primeiro.`,viewTypeUnavailable:`Este objeto não tem um campo que sirva como "{{field}}".`,viewTypeUnavailableShort:`Não suportado por este objeto.`,chartType:`Tipo de gráfico`,chartTypeHelp:`Determina como os dados são renderizados.`,chartTypeBar:`Gráfico de barras`,chartTypeLine:`Gráfico de linhas`,chartTypePie:`Gráfico de pizza`,chartTypeArea:`Gráfico de área`,chartTypeScatter:`Gráfico de dispersão`,xAxisField:`Campo do eixo X`,xAxisFieldHelp:`A dimensão categórica ou temporal.`,yAxisField:`Campo do eixo Y`,yAxisFieldHelp:`O campo numérico para agregar.`,selectionMode:`Modo de seleção`,selectionNone:`Nenhum`,selectionSingle:`Individual`,selectionMultiple:`Múltiplo`,pageSize:`Tamanho da página`,pageSizeOptions:`Opções de tamanho de página`,exportFormats:`Formatos de exportação`,exportMaxRecords:`Máximo de registros`,exportIncludeHeaders:`Incluir cabeçalhos`,exportFileNamePrefix:`Prefixo do nome do arquivo`,searchableFields:`Campos pesquisáveis`,filterableFields:`Campos filtráveis`,resizableColumns:`Colunas redimensionáveis`,densityCompact:`Compacto`,densityComfortable:`Normal`,densitySpacious:`Espaçoso`,densityMode:`Modo de densidade`,hiddenFields:`Campos ocultos`,rowActions:`Ações de linha`,bulkActions:`Ações em massa`,sharing:`Compartilhamento`,sharingEnabled:`Compartilhamento ativado`,sharingVisibility:`Visibilidade`,addRecordEnabled:`Adição de registro ativada`,addRecordPosition:`Posição`,addRecordMode:`Modo`,addRecordFormView:`Exibição de formulário`,conditionalFormatting:`Formatação condicional`,addRule:`Adicionar regra`,quickFilters:`Filtros rápidos`,addQuickFilter:`Adicionar filtro rápido`,ufElements:`Elementos`,ufDropdown:`Lista suspensa`,ufTabs:`Abas`,ufToggle:`Alternar`,ufAddField:`+ Adicionar campo de filtro...`,ufNoFields:`Sem campos disponíveis`,ufAddTab:`+ Adicionar aba`,ufTabLabel:`Rótulo`,ufShowAllRecords:`Mostrar aba "Todos os registros"`,ufAllowAddTab:`Permitir adicionar abas`,showRecordCount:`Mostrar contagem de registros`,allowPrinting:`Permitir impressão`,virtualScroll:`Rolagem virtual`,emptyStateTitle:`Título do estado vazio`,emptyStateMessage:`Mensagem do estado vazio`,emptyStateIcon:`Ícone do estado vazio`,ariaLabel:`Rótulo ARIA`,ariaDescribedBy:`Descrito por ARIA`,ariaLive:`ARIA ao vivo`,accessibility:`Acessibilidade`,viewTabs:`Abas de exibição`},localeSwitcher:{label:`Idioma`},search:`Pesquisar…`,nav:{pinItem:`Fixar {{name}}`,unpinItem:`Desafixar {{name}}`,dragToReorder:`Arrastar para reordenar`,favorites:`Favoritos`}},auth:{login:{title:`Entre na sua conta`,description:`Digite seu e-mail e senha para continuar`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Senha`,passwordPlaceholder:`Digite sua senha`,forgotPasswordText:`Esqueceu a senha?`,submitButton:`Entrar`,submittingButton:`Entrando...`,noAccountText:`Não tem uma conta?`,signUpText:`Cadastre-se`,errors:{invalidCredentials:`E-mail ou senha inválidos. Por favor, tente novamente.`,emailNotVerified:`Por favor, verifique seu e-mail antes de fazer login.`}},register:{title:`Criar uma conta`,description:`Digite suas informações para começar`,nameLabel:`Nome`,namePlaceholder:`João Silva`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,passwordLabel:`Senha`,passwordPlaceholder:`Criar uma senha (mín. 8 caracteres)`,confirmPasswordLabel:`Confirmar senha`,confirmPasswordPlaceholder:`Confirme sua senha`,passwordMismatchError:`As senhas não coincidem`,passwordTooShortError:`A senha deve ter pelo menos 8 caracteres`,submitButton:`Criar conta`,submittingButton:`Criando conta...`,hasAccountText:`Já tem uma conta?`,signInText:`Entrar`,errors:{userExists:`Já existe uma conta com esse e-mail. Tente fazer login.`},verifyInbox:{title:`Verifique sua caixa de entrada`,description:`Enviamos um link de verificação para {{email}}. Clique no link para ativar sua conta.`,resend:`Reenviar e-mail de verificação`,resending:`Enviando…`,resent:`E-mail de verificação enviado.`,backToSignIn:`Voltar ao login`}},forgotPassword:{title:`Redefinir sua senha`,description:`Digite seu endereço de e-mail e enviaremos um link para redefinir sua senha`,emailLabel:`E-mail`,emailPlaceholder:`name@example.com`,submitButton:`Enviar link de redefinição`,submittingButton:`Enviando...`,successTitle:`Verifique seu e-mail`,successDescription:`Enviamos um link para redefinição de senha para {{email}}. Por favor verifique sua caixa de entrada.`,backToSignInText:`Voltar para o login`,rememberPasswordText:`Lembra da sua senha?`,signInText:`Entrar`},resetPassword:{title:`Definir nova senha`,description:`Escolha uma senha que você não usou antes.`,newPassword:`Nova senha`,confirmPassword:`Confirmar senha`,submit:`Atualizar senha`,submitting:`Atualizando…`,success:`Senha atualizada`,failed:`Falha na redefinição`,invalidToken:`Este link de redefinição é inválido ou expirou.`,missingToken:`O link de redefinição está ausente ou expirou`,passwordsMismatch:`As senhas não coincidem`,requestNewLink:`Solicitar novo link`},verifyEmail:{title:`Verificar endereço de e-mail`,description:`Enviamos um link de verificação para seu endereço de e-mail. Clique no link para verificar sua conta.`,sentTo:`Enviado para:`,verifyingTitle:`Verificando…`,verifyingDescription:`Estamos verificando seu e-mail. Por favor, aguarde.`,successTitle:`E-mail verificado`,successDescription:`Seu e-mail foi verificado. Você pode fazer login agora.`,errorTitle:`Falha na verificação`,errorDescription:`A verificação falhou. Por favor, solicite um novo link.`,missingToken:`Falta um token no link de verificação.`,emailMissing:`Endereço de e-mail ausente`,resendButton:`Reenviar e-mail de verificação`,resending:`Enviando…`,resent:`E-mail enviado! Verifique sua caixa de entrada`,resentSuccess:`E-mail de verificação enviado!`,resentDescription:`Por favor, verifique sua caixa de entrada e clique no link de verificação.`,resendFailed:`Não é possível reenviar o e-mail de verificação`,signInLink:`Ir para o login`,backToSignIn:`Voltar ao login`,backToLogin:`Voltar ao login`,checkSpam:`Não recebeu o e-mail? Verifique sua pasta de spam ou entre em contato com o suporte.`,or:`Ou`},setup:{welcomeTitle:`Bem-vindo ao ObjectStack`,description:`Crie a primeira conta de proprietário para concluir a configuração.`,yourName:`Seu nome`,orgName:`Nome da organização`,orgNamePlaceholder:`Empresa Exemplo Ltda.`,emailLabel:`E-mail`,emailPlaceholder:`nome@exemplo.com.br`,passwordLabel:`Senha`,passwordHint:`Pelo menos 8 caracteres`,submit:`Criar conta de proprietário`,submitting:`Configurando…`,failed:`Falha na configuração`},device:{title:`Autorizar novo dispositivo`,subtitle:`Aprove este dispositivo para fazer login como {{email}}.`,userCodeLabel:`Código do dispositivo`,loggedInAs:`Conectado como {{email}}`,approve:`Aprovar dispositivo`,approving:`Aprovando…`,approvedTitle:`Dispositivo autorizado`,approvedDescription:`Você pode voltar ao dispositivo — ele deve fazer login em breve.`,approveSuccess:`Dispositivo autorizado`,approveSuccessDescription:`Você pode fechar esta janela.`,approveFailed:`Falha na aprovação`,deny:`Negar solicitação`,denying:`Negando…`,deniedTitle:`Acesso negado`,deniedDescription:`O acesso não será concedido ao dispositivo.`,denyFailed:`Não foi possível negar a solicitação`,invalidTitle:`Link de dispositivo inválido`,invalidDescription:`Nenhum código de dispositivo foi fornecido na URL.`,loading:`Carregando…`,cancel:`Cancelar`},shell:{tenantHostHint:`Você está fazendo login neste espaço de trabalho`}},errors:{networkError:`Erro de rede. Por favor, verifique sua conexão.`,serverError:`Erro no servidor. Por favor, tente novamente mais tarde.`,notFound:`Recurso não encontrado.`,unauthorized:`Você não tem permissão para realizar esta ação.`,forbidden:`Acesso negado.`,timeout:`Tempo limite excedido. Por favor, tente novamente.`,unknown:`Ocorreu um erro inesperado.`},workspace:{label:`Espaços de trabalho`,default:`Meu espaço de trabalho`,switch:`Trocar de espaço de trabalho`,create:`Criar espaço de trabalho`,createTitle:`Criar um espaço de trabalho`,createDescription:`Um espaço de trabalho é um espaço compartilhado para colaboração da equipe.`,createButton:`Criar espaço de trabalho`,nameLabel:`Nome do espaço de trabalho`,namePlaceholder:`p.ex., Acme Inc`,slugLabel:`Slug de URL`,slugHint:`Usado em URLs. Apenas letras minúsculas, números e hifens.`,invite:`Convidar membro`,members:`Membros`,settings:`Configurações do espaço de trabalho`},sidebar:{settings:`Configurações`,help:`Ajuda`,helpTooltip:`Ajuda e documentação`,activityFeed:`Feed de atividades`,notifications:`Notificações`,approvals:`Aprovações`,inbox:`Caixa de entrada`,inboxAriaLabel:`Abrir caixa de entrada`,area:`Área`,recent:`Recente`,favorites:`Favoritos`,starred:`Favoritos`,removeFromFavorites:`Remover {{name}} dos favoritos`},home:{title:`Início`,subtitle:`Painel do seu espaço de trabalho`,nav:`Início`,allApps:`Todas as aplicações`,loading:`Carregando espaço de trabalho...`,recent:`Recentes`,starred:`Favoritos`,welcome:`Bem-vindo ao ObjectUI`,welcomeDescription:`Comece criando sua primeira aplicação ou configurando as preferências do sistema.`,createFirstApp:`Crie sua primeira app`,systemSettings:`Configurações do sistema`,browseMarketplace:`Explorar marketplace de apps`,quickActions:{title:`Ações rápidas`,createApp:`Criar app`,createAppDesc:`Comece com uma nova aplicação`,manageObjects:`Gerenciar objetos`,manageObjectsDesc:`Configure modelos de dados`,systemSettings:`Configurações do sistema`,systemSettingsDesc:`Configure seu espaço de trabalho`},appCard:{noDescription:`Sem descrição`,default:`Padrão`},greetingMorning:`Bom dia`,greetingAfternoon:`Boa tarde`,greetingEvening:`Boa noite`,greetingNight:`Turno da noite`,heroTagline:`Continue de onde parou ou descubra algo novo.`,open:`Abrir`,stats:{apps:`Aplicativos`,starred:`Favoritos`,recent:`Recentes`},recentApps:{title:`Abertos recentemente`,itemType:{object:`Objeto`,dashboard:`Painel`,page:`Página`,record:`Registro`}},starredApps:{title:`Favoritos`},gettingStarted:{title:`Personalizar início`,description:`Marque um aplicativo como favorito para fixá-lo aqui e acessá-lo com um clique. Tudo que você abrir aparecerá automaticamente em "Abertos recentemente".`,cta:`Explorar todos os aplicativos`}},layout:{appSwitcher:{home:`Início`,addApp:`Adicionar aplicativo`,editApp:`Editar aplicativo`,manageAllApps:`Gerenciar todos os aplicativos`,systemConsole:`Console do sistema`,noAppsConfigured:`Nenhum aplicativo configurado`},activityFeed:{title:`Atividade recente`,filter:`Filtrar`,empty:`Sem atividade recente`,ariaLabel:`Feed de atividade`,typeCreate:`Criar`,typeUpdate:`Atualizar`,typeDelete:`Excluir`,typeComment:`Comentário`,relativeJustNow:`agora mesmo`,relativeSecondsAgo:`há {{count}}s`,relativeMinutesAgo:`há {{count}}m`,relativeHoursAgo:`há {{count}}h`,relativeDaysAgo:`há {{count}}d`,viewAll:`Ver toda a atividade`},metadata:{label:`Metadados`,toggleTitle:`Alternar inspetor de metadados`,panelTitle:`Inspetor de metadados`,jsonBadge:`JSON`,copyJson:`Copiar JSON`}},search:{title:`Pesquisar`,back:`Voltar`,placeholder:`Pesquisar objetos, painéis, páginas, relatórios...`,inputAriaLabel:`Pesquisar objetos, painéis, páginas, relatórios`,resultsCount:`{{count}} resultado para "{{query}}"`,resultsCountPlural:`{{count}} resultados para "{{query}}"`,itemsAvailable:`{{count}} itens disponíveis`,noResults:`Nenhum resultado encontrado`,noResultsHint:`Tente ajustar seus termos de pesquisa`,typeObjects:`Objetos`,typeDashboards:`Painéis`,typePages:`Páginas`,typeReports:`Relatórios`,badgeObject:`Objeto`,badgeDashboard:`Painel`,badgePage:`Página`,badgeReport:`Relatório`},empty:{objectNotFound:`Objeto não encontrado`,objectNotFoundDescription:`A definição do objeto "{{name}}" está ausente. Verifique sua configuração ou navegue de volta.`,pageNotFound:`Página não encontrada`,pageNotFoundDescription:`A página "{{name}}" não foi encontrada. Ela pode ter sido removida ou renomeada.`,dashboardNotFound:`Painel não encontrado`,dashboardNotFoundDescription:`O painel "{{name}}" não foi encontrado. Ele pode ter sido removido ou renomeado.`,reportNotFound:`Relatório não encontrado`,reportNotFoundDescription:`O relatório "{{name}}" não foi encontrado. Ele pode ter sido removido ou renomeado.`,noAppsConfigured:`Nenhum aplicativo configurado`,noAppsConfiguredDescription:`Nenhum aplicativo está registrado. Crie seu primeiro aplicativo ou visite as configurações do sistema.`,createFirstApp:`Criar primeiro aplicativo`,systemSettings:`Configurações do sistema`,back:`Voltar`,recordNotFound:`Registro não encontrado`,recordNotFoundDescription:`O registro que você está procurando não existe ou pode ter sido excluído.`},renderer:{noPageSchema:`Nenhum esquema de página fornecido`,noFormSchema:`Nenhum esquema de formulário fornecido`,noDashboardSchema:`Nenhum esquema de painel fornecido`,pageRendering:`Renderizando página: {{name}}`,dashboardRendering:`Renderizando painel: {{name}}`,formRenderingMode:`Formulário renderizado no modo {{mode}}`,formRenderingFor:`para registro {{id}}`,createRecord:`Criar registro`,editRecord:`Editar registro`,page:`Página`,dashboard:`Painel`,save:`Salvar`,cancel:`Cancelar`},actionDialog:{title:`Parâmetros de ação`,description:`Insira as informações necessárias para continuar.`,selectPlaceholder:`Selecionar {{label}}`,requiredError:`{{label}} é obrigatório`,cancel:`Cancelar`,confirm:`Confirmar`,defaultActionTitle:`Ação`,ok:`OK`,lookupPlaceholder:`Colar ID do registro (UUID) para {{label}}`,lookupHelpText:`Insira o ID do registro do objeto referenciado. Um seletor será adicionado em breve.`},rowAction:{openMenu:`Abrir menu`,edit:`Editar`,delete:`Excluir`},navigationSync:{addedPage:`Navegação atualizada: página "{{name}}" adicionada`,addedDashboard:`Navegação atualizada: painel "{{name}}" adicionado`,removedPage:`Navegação atualizada: página "{{name}}" removida`,removedDashboard:`Navegação atualizada: painel "{{name}}" removido`,renamedPage:`Navegação atualizada: página "{{oldName}}" renomeada para "{{newName}}"`,renamedDashboard:`Navegação atualizada: painel "{{oldName}}" renomeado para "{{newName}}"`,undoLabel:`Desfazer`,undone:`Alteração de navegação desfeita`,undoFailed:`Não foi possível desfazer a alteração de navegação`,updateFailed:`Não foi possível atualizar a navegação`},objectActions:{deleteSuccess:`{{label}} excluído com sucesso`,deleteFailed:`Não foi possível excluir {{label}}`,noRecordId:`Nenhum ID de registro fornecido`,deleteConfirm:`Excluir este registro?`,bulkDeleteSuccess:`{{count}} registros de {{label}} excluídos`,bulkDeletePartial:`{{succeeded}} excluídos, {{failed}} com falha`},objectViewActions:{renameFailed:`Não foi possível renomear a exibição`,deleteFailed:`Não foi possível excluir a exibição`},dashboardActions:{pdfPreparing:`Preparando exportação PDF…`,exportFailed:`Falha na exportação: {{message}}`,forecastSoon:`A exibição de previsão está chegando em breve`},recordDetail:{viewersTooltip:`Usuários visualizando este registro agora`},cellRender:{empty:`Vazio`,yes:`Sim`,no:`Não`,systemFields:`Sistema`},user:{profile:`Perfil`,settings:`Configurações`,logout:`Sair`,preferences:`Preferências`,theme:`Tema`,language:`Idioma`},report:{rowTotal:`Total da linha`,columnTotal:`Total da coluna`,grandTotal:`Total geral`,totals:`Totais`,rowsLabel:`Linha`,columnsLabel:`Coluna`,allLabel:`(Tudo)`,emptyLabel:`(Vazio)`,loading:`Carregando…`,failedToLoad:`Falha ao carregar a matriz: {{message}}`,needsAcross:"O relatório de matriz requer pelo menos um campo `groupingsAcross`.",aggregate:{count:`Contar`,countDistinct:`Contar distintos`,sum:`Soma`,avg:`Média`,min:`Mínimo`,max:`Máximo`,first:`Primeiro`},editor:{breadcrumb:`Configuração`,basic:`Geral`,title:`Título`,titlePlaceholder:`ex.: Pipeline por trimestre`,description:`Descrição`,descriptionPlaceholder:`O que este relatório mostra?`,type:`Tipo de relatório`,typeTabular:`Tabular — lista plana`,typeSummary:`Resumo — agrupado com totais`,typeMatrix:`Matriz — pivô linhas × colunas`,typeJoined:`Combinado — vários blocos`,typeHelp:`Escolha o layout que corresponde ao que deseja ver.`,data:`Dados`,objectName:`Fonte de dados`,objectNamePlaceholder:`ex.: opportunity`,objectNameHelp:`Qual objeto este relatório deve consultar?`,limit:`Limite de linhas`,limitPlaceholder:`ex.: 100`,columns:`Colunas`,columnsHint:`Escolha quais campos aparecem como colunas. Adicione uma agregação (Soma, Contagem…) em relatórios de Resumo ou Matriz.`,filters:`Filtros`,filtersHint:`Restrinja as linhas incluídas neste relatório.`,filtersComplex:`Este relatório usa um filtro avançado que não pode ser editado aqui. Ao salvar será mantido inalterado.`,groupBy:`Agrupar por`,groupByHint:`Agrupe os dados e calcule subtotais.`,rows:`Linhas`,rowsHint:`Agrupe linhas por estes campos.`,columnsAxis:`Colunas`,columnsAxisHint:`Pivote estes campos no topo.`,values:`Valores`,valuesHint:`Números exibidos em cada célula. Escolha um ou mais campos e adicione uma agregação (Soma, Contagem…).`,grouping:`Agrupamento`,addGrouping:`Adicionar agrupamento`,dateGranularity:`Granularidade de data`,dateGranularityNone:`(usar valor bruto)`,day:`Dia`,week:`Semana`,month:`Mês`,quarter:`Trimestre`,year:`Ano`,sortAsc:`Crescente`,sortDesc:`Decrescente`,chart:`Gráfico`,chartHint:`Visualização opcional ao lado da tabela.`,chartType:`Tipo de gráfico`,chartTitle:`Título do gráfico`,chartTitlePlaceholder:`Padrão: título do relatório`,chartXAxis:`Eixo X (categoria)`,chartYAxis:`Eixo Y (valor)`,chartShowLegend:`Mostrar legenda`,chartShowDataLabels:`Mostrar rótulos de dados`,chartNone:`(sem gráfico)`,chartBar:`Barras`,chartLine:`Linhas`,chartArea:`Áreas`,chartPie:`Pizza`,chartDonut:`Rosca`,chartFunnel:`Funil`,validationNeedsObject:`Escolha uma fonte de dados antes de adicionar colunas.`,validationMatrixNeedsRowsCols:`Relatórios de matriz precisam de pelo menos uma Linha e uma Coluna.`,validationSummaryNeedsRows:`Relatórios de resumo precisam de pelo menos um campo de agrupamento.`,blocks:`Blocos`,blocksHint:`Cada bloco é sua própria tabela ou gráfico. Filtros de bloco são combinados (E) com o filtro do relatório.`,addBlock:`Adicionar bloco`,removeBlock:`Remover bloco`,blockName:`Nome do bloco`,blockNamePlaceholder:`nome_unico_do_bloco`,blockLabel:`Rótulo de exibição`,blockLabelPlaceholder:`Exibido acima do bloco`,blockDescription:`Descrição`,blockDescriptionPlaceholder:`Contexto opcional para este bloco`,validationJoinedNeedsBlocks:`Relatórios combinados precisam de pelo menos um bloco.`,validationBlockNameRequired:`Cada bloco precisa de um nome não vazio.`,validationBlockNameDuplicate:`Os nomes dos blocos devem ser únicos no relatório.`,validationBlockNeedsColumns:`Cada bloco precisa de pelo menos uma coluna.`,noneOption:`(nenhum)`,addCondition:`Adicionar condição`,combineLogic:`Combinar com`,opContains:`contém`,opIsEmpty:`está vazio`,opIsNotEmpty:`não está vazio`,formatAuto:`Automático`,formatCurrency:`Moeda`,formatPercent:`Porcentagem`,formatInteger:`Inteiro`,formatDate:`Data`,formatDatetime:`Data e hora`,columnLabelPlaceholder:`Substituir rótulo`,aggregateColumn:`Agregação`,formatColumn:`Formato`,addColumns:`Adicionar colunas`,searchFields:`Pesquisar campos…`,noMatchingFields:`Nenhum campo corresponde à sua pesquisa.`,noFieldsAvailable:`Nenhum campo disponível.`,columnsCount:`{n} coluna(s) selecionada(s)`,columnsEmpty:`Nenhuma coluna selecionada ainda.`,fieldPickerTitle:`Selecionar campos`,fieldPickerDescription:`Escolha um ou mais campos para adicionar. Use o campo de pesquisa para filtrar a lista.`,fieldPickerChangeTitle:`Alterar campo`,fieldPickerAddGroupingTitle:`Adicionar agrupamento`,fieldPickerEmpty:`(Selecionar campo)`,fieldPickerSelected:`{n} selecionado(s)`,fieldPickerClear:`Limpar seleção`,fieldPickerAdd:`Adicionar`,fieldPickerAddN:`Adicionar {n}`}},organizations:{mine:`Minhas organizações`,title:`Organizações`,heading:`Suas organizações`,subtitle:`Selecione uma organização para continuar ou crie uma nova.`,searchPlaceholder:`Pesquisar uma organização`,new:`Nova organização`,current:`Organização atual`,manage:`Gerenciar`,emptyTitle:`Nenhuma organização ainda`,emptyDescription:`Crie sua primeira organização para começar.`,noMatches:`Nenhuma organização corresponde à sua pesquisa.`},notifications:{empty:`Sem notificações`,markAllRead:`Marcar tudo como lido`,viewAll:`Ver todas as notificações`,approvalsPending:`{{count}} aprovações pendentes`,viewApprovals:`Ver aprovações`,noPendingApprovals:`Sem aprovações pendentes`,openApprovalsInbox:`Abrir caixa de aprovações`,emptyUnread:`Tudo lido`,filterUnread:`Não lidos`,filterAll:`Todos`},publicForm:{submit:`Enviar`,submitting:`Enviando…`,submitAnother:`Enviar outra resposta`,poweredBy:`Desenvolvido por ObjectStack`,secureNotice:`Suas informações são transmitidas com segurança e usadas apenas para processar sua solicitação.`,thankYouTitle:`Obrigado!`,thankYouMessage:`Seu envio foi recebido com sucesso.`,redirecting:`Redirecionando em {{seconds}} segundo(s)…`,unavailableTitle:`Formulário indisponível`,unavailableDescription:`Nenhum formulário público está disponível nesta URL. Certifique-se de que a exibição subjacente tenha o compartilhamento anônimo ativado.`,tryDemo:`Experimentar demo`,retry:`Tentar novamente`,loading:`Carregando formulário…`,requiredHint:`* Campo obrigatório`,consentLabelDefault:`Aceito a política de privacidade e consinto com o processamento dos meus dados para esta solicitação.`,consentLink:`Política de privacidade`,consentRequired:`Por favor, aceite a política de privacidade para continuar.`,rateLimited:`Reserve um momento para revisar suas respostas antes de enviar.`,redirectBlocked:`Envio aceito, mas a URL de redirecionamento foi bloqueada por segurança.`,demo:{contactTitle:`Entrar em contato`,contactDescription:`Conte-nos sobre seu projeto e um representante de vendas entrará em contato em um dia útil.`,supportTitle:`Enviar solicitação de suporte`,supportDescription:`Descreva-nos o problema — nossa equipe responderá em um dia útil.`,thankYouSalesTitle:`Obrigado — recebemos sua mensagem!`,thankYouSalesMessage:`Um representante de vendas entrará em contato em um dia útil.`,thankYouSupportTitle:`Pronto — sua solicitação está na fila.`,thankYouSupportMessage:`Um engenheiro de suporte fará o acompanhamento em breve. Salve esta página se tiver capturas de tela adicionais.`,field:{firstName:`Nome`,lastName:`Sobrenome`,email:`E-mail corporativo`,phone:`Telefone`,jobTitle:`Cargo`,company:`Empresa`,website:`Site`,industry:`Setor`,companySize:`Tamanho da empresa`,howCanWeHelp:`Como podemos ajudar?`,subject:`Assunto`,description:`Descrição`,issueType:`Tipo de problema`,priority:`Prioridade`},industry:{technology:`Tecnologia`,software:`Software / SaaS`,finance:`Finanças`,healthcare:`Saúde`,retail:`Varejo`,other:`Outro`},issueType:{question:`Pergunta`,problem:`Problema`,bug:`Bug`,feature_request:`Solicitação de recurso`},priority:{low:`Baixa`,medium:`Média`,high:`Alta`,critical:`Crítica`}}},marketplace:{title:`Marketplace de aplicativos`,subtitle:`Explore aplicativos aprovados publicados no catálogo ObjectStack. Clique em um aplicativo para ver os detalhes e instalá-lo em um de seus ambientes.`,searchPlaceholder:`Pesquisar aplicativos por nome ou ID de manifesto…`,searchAria:`Pesquisar aplicativos do marketplace`,installed:`Instalado`,installedCount:`Instalados ({{count}})`,refresh:`Atualizar`,all:`Todos`,noApprovedYet:`Nenhum aplicativo aprovado para o marketplace ainda.`,noMatchFilters:`Nenhum aplicativo corresponde aos seus filtros.`,noDescription:`Sem descrição disponível.`,back:`Voltar ao marketplace`,installedTitle:`Aplicativos instalados`,installedSubtitle:`Pacotes do marketplace atualmente instalados no kernel deste runtime.`,installedEmpty:`Nenhum aplicativo do marketplace instalado neste runtime ainda.`,browseLink:`Explorar marketplace →`,installedAdditiveNote:`<strong>Nota:</strong> A API do kernel é apenas aditiva — desinstalar remove o manifesto do disco para que o pacote não seja carregado na próxima inicialização, mas o kernel em execução mantém o aplicativo registrado até reiniciar.`,installedAt:`Instalado {{when}}`,installedBy:`por {{user}}`,installedPackageId:`Pacote`,cachedAs:`Armazenado em cache como <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Instalado v{{version}}`,load:{failed:`Não foi possível carregar o marketplace`,failedHint:`Por padrão, este runtime aponta para o cloud público ObjectStack. Certifique-se de que o runtime está online.`,packageFailed:`Não foi possível carregar o pacote`,notFound:`Não encontrado.`},detail:{homepage:`Página inicial`,installedV:`Instalado · v{{version}}`,about:`Sobre`,noReadme:`Sem readme disponível.`,versions:`Versões`,noApprovedVersions:`Sem versões aprovadas.`,prerelease:`Pré-lançamento`,moreOptions:`Mais opções de instalação`,uninstallFromRuntime:`Desinstalar deste runtime`},action:{install:`Instalar`,reinstall:`Reinstalar`,working:`Processando…`,installToCloud:`Instalar na nuvem…`,installing:`Instalando…`,uninstall:`Desinstalar`,uninstalling:`Desinstalando…`,details:`Detalhes`,close:`Fechar`,dismiss:`Fechar`,openOnCloud:`Abrir na nuvem`,backHome:`Voltar ao início`},install:{dialogTitle:`Instalar {{name}}`,dialogDescCurrent:`Instalar neste ambiente ({{host}}).`,dialogDescPicker:`Escolha um ambiente para instalar este aplicativo. Você deve estar conectado ao ObjectStack Cloud.`,environment:`Ambiente`,environmentPlaceholder:`Selecionar ambiente`,includeSampleData:`Incluir dados de amostra`,noEnvs:`Nenhum ambiente encontrado em sua organização ativa.`,noPermission:`Você não tem permissão para instalar aplicativos em um ambiente. Somente proprietários e administradores da organização podem instalar.`,signInFirst:`Você deve primeiro fazer login no ObjectStack Cloud.`,success:`Instalado com sucesso. Abra o ambiente para ver o novo aplicativo.`,localSuccess:`v{{version}} instalado neste runtime. "{{name}}" deve aparecer no seletor de aplicativos agora.`,localManifestConflict:`{{message}}
|
|
26
|
+
Nota: Um aplicativo local já possui este manifest_id. Remova-o primeiro de objectstack.config.ts.`,localUnauthorized:`Faça login neste runtime primeiro.`,localMarketplaceUnavailable:`Este runtime não tem OS_CLOUD_URL configurado.`},uninstall:{confirm:`Desinstalar {{manifestId}} v{{version}} deste runtime?
|
|
27
|
+
|
|
28
|
+
O manifesto em cache será removido.`,successInList:`{{manifestId}} removido. Reinicie o runtime para descarregá-lo completamente.`,successInDetail:`Manifesto em cache para {{manifestId}} removido.`},accessDenied:{title:`Marketplace somente para administradores`,description:`Você não tem permissão para instalar aplicativos neste ambiente.`},category:{crm:`CRM`,erp:`ERP`,hr:`RH`,finance:`Finanças`,project:`Gestão de projetos`,collaboration:`Colaboração`,analytics:`Análise`,integration:`Integração`,automation:`Automação`,ai:`IA`,security:`Segurança`,"developer-tools":`Ferramentas de desenvolvedor`,"ui-theme":`Tema de UI`,storage:`Armazenamento`,other:`Outro`},pricing:{free:`Grátis`,freemium:`Freemium`,paid:`Pago`,subscription:`Assinatura`,"usage-based":`Por uso`,"contact-sales":`Contatar vendas`},relativeTime:{today:`hoje`,daysAgo:`há {{count}}d`,monthsAgo:`há {{count}} meses`,yearsAgo:`há {{count}} anos`}}},ru:{common:{addToFavorites:`Добавить в избранное`,removeFromFavorites:`Удалить из избранного`,loading:`Загрузка...`,save:`Сохранить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,create:`Создать`,search:`Поиск`,filter:`Фильтр`,reset:`Сбросить`,confirm:`Подтвердить`,close:`Закрыть`,back:`Назад`,next:`Далее`,previous:`Назад`,submit:`Отправить`,refresh:`Обновить`,export:`Экспорт`,import:`Импорт`,yes:`Да`,no:`Нет`,ok:`ОК`,actions:`Действия`,more:`Ещё`,selectAll:`Выбрать все`,clearAll:`Очистить все`,noData:`Нет данных`,noResults:`Результаты не найдены`,required:`Обязательно`,optional:`Необязательно`,selectOption:`Выберите вариант`,select:`Выбрать...`,openChat:`Открыть чат`,closeChat:`Закрыть чат`,toggleSidebar:`Переключить боковую панель`},validation:{required:`Поле {{field}} обязательно для заполнения`,minLength:`{{field}} должно содержать не менее {{min}} символов`,maxLength:`{{field}} должно содержать не более {{max}} символов`,min:`{{field}} должно быть не менее {{min}}`,max:`{{field}} должно быть не более {{max}}`,email:`Пожалуйста, введите корректный адрес электронной почты`,url:`Пожалуйста, введите корректный URL`,pattern:`Неверный формат поля {{field}}`,unique:`{{field}} должно быть уникальным`,type:`{{field}} должно быть допустимым {{type}}`},form:{addItem:`Добавить элемент`,removeItem:`Удалить элемент`,fieldRequired:`Это поле обязательно`,invalidFormat:`Неверный формат`,saveSuccess:`Успешно сохранено`,saveError:`Ошибка сохранения`,unsavedChanges:`У вас есть несохранённые изменения. Вы уверены, что хотите покинуть страницу?`,stepOf:`Шаг {{current}} из {{total}}`,createTitle:`Создать {{object}}`,editTitle:`Редактировать {{object}}`,createDescription:`Добавить новый {{object}} в базу данных.`,editDescription:`Обновить данные {{object}}`,saveRecord:`Сохранить запись`,create:`Создать`,update:`Обновить`,createSuccess:`{{object}} создан`,updateSuccess:`{{object}} обновлён`,deleteSuccess:`{{object}} удалён`},fields:{richText:{format:`Формат: {{format}}`,basicEditorHint:`Редактор форматированного текста (базовый)`,placeholder:`Введите текст...`}},table:{rowsPerPage:`Строк на странице`,showing:`Показано с {{from}} по {{to}} из {{total}}`,noRows:`Нет строк для отображения`,sortAsc:`Сортировка по возрастанию`,sortDesc:`Сортировка по убыванию`,filterColumn:`Фильтр по {{column}}`,columns:`Столбцы`,exportCSV:`Экспорт в CSV`,exportExcel:`Экспорт в Excel`,selectRow:`Выбрать строку`,selectAllRows:`Выбрать все строки`,expandRow:`Развернуть строку`,collapseRow:`Свернуть строку`,hideColumn:`Скрыть столбец`,freezeColumn:`Закрепить столбец`,unfreezeColumn:`Открепить столбец`,pageInfo:`Страница {{current}} из {{total}}`,totalRecords:`Всего {{count}}`,noResults:`Результатов нет`,noResultsHint:`Попробуйте изменить фильтры или поисковые запросы.`,cancelAll:`Отменить всё`,saveAll:`Сохранить всё ({{count}})`,addRecord:`Добавить запись`,open:`Открыть`,search:`Поиск...`,modified:`{{count}} строк изменено`,selected:`{{count}} выбрано`,edit:`Редактировать`,delete:`Удалить`},grid:{actions:`Действия`,edit:`Редактировать`,delete:`Удалить`,export:`Экспорт`,exportAs:`Экспорт в {{format}}`,loading:`Загрузка таблицы...`,errorLoading:`Ошибка загрузки таблицы`,pullToRefresh:`Потяните для обновления`,refreshing:`Обновление…`,openRecord:`Открыть запись`,rowHeight:`Высота строки: {{mode}}`,openMenu:`Открыть меню`,empty:`Пусто`,yes:`Да`,no:`Нет`,systemFields:`Система`,toolbar:{densityMode:`Плотность`,densityCompact:`Компактный`,densityComfortable:`Обычный`,densitySpacious:`Просторный`,densityCycleHint:`{{label}} (нажмите для изменения)`,densityCycleShortHint:`Нажмите для изменения`},import:{title:`Импорт {{object}}`,stepUpload:`Загрузка`,stepMapping:`Сопоставление`,stepPreview:`Предпросмотр`,uploadDescription:`Загрузите CSV-файл для начала работы.`,mappingDescription:`Сопоставьте столбцы CSV с полями объекта.`,previewDescription:`Проверьте данные перед импортом.`,dragDrop:`Перетащите CSV-файл сюда или нажмите для выбора`,browseFiles:`Обзор файлов`,onlyCsv:`Поддерживаются только CSV-файлы.`,fileNeedsHeader:`Файл должен содержать строку заголовка и хотя бы одну строку данных.`,mappingTemplate:`Шаблон сопоставления:`,chooseTemplate:`Выбрать шаблон…`,noSavedTemplates:`Нет сохранённых шаблонов`,noneOption:`— Нет —`,saveCurrent:`Сохранить текущий`,templateName:`Название шаблона`,save:`Сохранить`,deleteTemplate:`Удалить шаблон`,csvColumn:`Столбец CSV`,mapsTo:`Сопоставляется с`,status:`Статус`,skipColumn:`Пропустить столбец`,skip:`— Пропустить —`,mapped:`Сопоставлено`,skipped:`Пропущено`,rowsWithErrors:`{{count}} строк с ошибками`,rowsCorrected:`{{count}} строк исправлено`,clickToFix:`— нажмите на выделенную ячейку для редактирования.`,showingRows:`Отображено {{shown}} из {{total}} строк`,importing:`Импорт… {{progress}}%`,importComplete:`Импорт завершён`,imported:`{{count}} импортировано`,skippedCount:`{{count}} пропущено`,moreErrors:`…ещё {{count}} ошибок`,cancel:`Отмена`,back:`Назад`,next:`Далее`,close:`Закрыть`,importNRows:`Импортировать {{count}} строк`,importingProgress:`Импортируется…`,requiredMark:`*`,required:`Обязательно`,invalidType:`Неверный {{type}}`}},calendar:{today:`Сегодня`,month:`Месяц`,week:`Неделя`,day:`День`,agenda:`Расписание`,allDay:`Весь день`,noEvents:`Нет событий`,newEvent:`Новое событие`,moreEvents:`+{{count}} ещё`},list:{recordCount:`{{count}} записей`,recordCountOne:`{{count}} запись`,addRecord:`Добавить запись`,tabs:`Вкладки`,allRecords:`Все записи`,search:`Поиск`,filter:`Фильтр`,filterRecords:`Фильтр записей`,sort:`Сортировка`,sortRecords:`Сортировка записей`,group:`Группировка`,groupBy:`Группировать по`,export:`Экспорт`,exportAs:`Экспорт в {{format}}`,color:`Цвет`,rowColor:`Цвет строки`,colorByField:`Окраска по полю`,clear:`Очистить`,none:`Нет`,hideFields:`Скрыть поля`,noItems:`Элементы не найдены`,noItemsMessage:`Нет записей для отображения. Попробуйте изменить фильтры или добавить новые данные.`,showAll:`Показать всё`,pullToRefresh:`Потяните для обновления`,refreshing:`Обновление…`,share:`Поделиться`,print:`Печать`,hideFieldsTitle:`Скрыть поля`,dataLimitReached:`Отображаются первые {{limit}} записей. Возможно, есть ещё данные.`,viewSettings:`Настройки представления`,viewSettingsHint:`Группировка, цвет, плотность и отображаемые поля.`,addGroup:`Добавить поле группировки`,collapsedByDefault:`Свёрнуто по умолчанию`,removeGroup:`Удалить`},kanban:{addCard:`Добавить карточку`,addColumn:`Добавить колонку`,moveCard:`Переместить карточку`,deleteCard:`Удалить карточку`,deleteColumn:`Удалить колонку`,noCards:`Нет карточек`,cardTitlePlaceholder:`Введите название карточки...`},timeline:{bucket:{overdue:`Просрочено`,today:`Сегодня`,tomorrow:`Завтра`,thisWeek:`На этой неделе`,nextWeek:`На следующей неделе`,later:`Позже`,noDate:`Без даты`,unassigned:`Не назначено`}},gantt:{column:{taskName:`Название задачи`,start:`Начало`,end:`Конец`},toolbar:{prevPeriod:`Предыдущий период`,nextPeriod:`Следующий период`,zoomIn:`Увеличить`,zoomOut:`Уменьшить`,jumpToToday:`Перейти к сегодня`,today:`Сегодня`,showTaskList:`Показать список задач`,hideTaskList:`Скрыть список задач`}},view:{rename:`Переименовать`,duplicateView:`Дублировать представление`,shareView:`Поделиться представлением`,setAsDefault:`Установить по умолчанию`,pinView:`Закрепить представление`,unpinView:`Открепить представление`,changeViewType:`Изменить тип представления`,deleteView:`Удалить представление`,addView:`Добавить представление`,unsavedChanges:`Несохранённые изменения`,saveAsView:`Сохранить как представление`,moreViews:`ещё {{count}}`,activeFilters:`Фильтры активны`,activeSort:`Сортировка активна`,manageViews:`Управление представлениями`,manageAllViews:`Управление всеми представлениями…`,searchViews:`Поиск представлений`,addNewView:`Добавить новое представление`,done:`Готово`,noViewsFound:`Представления не найдены.`,dragToReorder:`Перетащите для изменения порядка`,defaultView:`Представление по умолчанию`,tabActionsFor:`Действия с представлением {{name}}`,readonlyAriaLabel:`Представление только для чтения`,readonlyTooltip:`Системное представление — скопируйте для настройки.`},detail:{back:`Назад`,edit:`Редактировать`,editInline:`Редактировать`,save:`Сохранить`,saveChanges:`Сохранить изменения`,editFieldsInline:`Редактировать поля`,share:`Поделиться`,duplicate:`Дублировать`,export:`Экспорт`,viewHistory:`Просмотр истории`,delete:`Удалить`,moreActions:`Другие действия`,addToFavorites:`Добавить в избранное`,removeFromFavorites:`Удалить из избранного`,previousRecord:`Предыдущая запись`,nextRecord:`Следующая запись`,recordOf:`{{current}} из {{total}}`,recordNotFound:`Запись не найдена`,recordNotFoundDescription:`Запись, которую вы ищете, не существует или была удалена.`,goBack:`Назад`,details:`Детали`,related:`Связанные`,relatedRecords:`{{count}} записей`,relatedRecordOne:`{{count}} запись`,noRelatedRecords:`Связанные записи не найдены`,loading:`Загрузка...`,copyToClipboard:`Копировать в буфер обмена`,copied:`Скопировано!`,deleteConfirmation:`Вы уверены, что хотите удалить эту запись?`,editRecord:`Редактировать запись`,viewAll:`Показать все`,new:`Создать`,emptyValue:`—`,activity:`Активность`,editRow:`Редактировать`,deleteRow:`Удалить`,deleteRowConfirmation:`Удалить эту запись?`,actions:`Действия`,previousPage:`Назад`,nextPage:`Далее`,pageOf:`Страница {{current}} из {{total}}`,sortBy:`Сортировать по`,filterPlaceholder:`Фильтр...`,highlightFields:`Ключевые поля`,comments:`Комментарии`,searchComments:`Поиск комментариев…`,addCommentPlaceholder:`Добавить комментарий… (Ctrl+Enter для отправки)`,noMatchingComments:`Нет совпадающих комментариев`,noCommentsYet:`Комментариев пока нет`,pinned:`Закреплено`,pin:`Закрепить`,unpin:`Открепить`,justNow:`только что`,minutesAgo:`{{count}} мин. назад`,hoursAgo:`{{count}} ч. назад`,daysAgo:`{{count}} дн. назад`,dropFilesToUpload:`Перетащите файлы сюда или нажмите для загрузки`,attachmentCount:`{{count}} вложение`,attachmentCountPlural:`{{count}} вложений`,removeAttachment:`Удалить вложение`,unifiedDiff:`Единое представление`,sideBySideDiff:`Параллельное представление`,noChanges:`Нет изменений`,previousVersion:`Предыдущая`,currentVersion:`Текущая`,discussion:`Обсуждение`,showDiscussion:`Показать обсуждение ({{count}})`,hideDiscussion:`Скрыть обсуждение`,bold:`Жирный (Ctrl+B)`,italic:`Курсив (Ctrl+I)`,listFormat:`Список`,inlineCode:`Строчный код`,mentionSomeone:`Упомянуть кого-то`,preview:`Предпросмотр`,submitComment:`Отправить (Ctrl+Enter)`,sendComment:`Отправить`,writeComment:`Написать комментарий…`,subscribedTooltip:`Подписаны — нажмите для отписки`,unsubscribedTooltip:`Подписаться на уведомления`,firstRecord:`Первая запись (Home)`,previousRecordKey:`Предыдущая запись (←)`,nextRecordKey:`Следующая запись (→)`,lastRecord:`Последняя запись (End)`,noRecords:`Нет записей`,searchWhileNavigating:`Поиск при навигации`,searchRecords:`Поиск записей…`,allActivity:`Вся активность`,commentsOnly:`Только комментарии`,fieldChangesFilter:`Изменения полей`,tasksOnly:`Только задачи`,leaveCommentPlaceholder:`Оставить комментарий… (Ctrl+Enter для отправки)`,noActivity:`Нет зарегистрированной активности`,loadMore:`Загрузить ещё`,edited:`(изменено)`,via:`через {{source}}`,replyCount:`{{count}} ответ`,replyCountPlural:`{{count}} ответов`,replyPlaceholder:`Ответить…`,filterActivity:`Фильтр активности`,openDiscussion:`Открыть панель обсуждения`,closeDiscussion:`Закрыть панель обсуждения`,subscribeAriaLabel:`Подписаться на уведомления`,unsubscribeAriaLabel:`Отписаться от уведомлений`,clearSearch:`Очистить поиск`,saving:`Сохранение…`,lockedByApproval:`Заблокировано для согласования`,lockedTooltip:`У этой записи есть ожидающий запрос на согласование; редактирование заблокировано`,cancelApproval:`Отменить согласование`,cancelApprovalInFlight:`Отмена…`,cancelApprovalTooltip:`Отмените ожидающий запрос на согласование, чтобы разблокировать запись`,cancelApprovalFailed:`Не удалось отменить согласование`,cancelApprovalUnavailable:`Отмена согласований не поддерживается этим источником данных`,linkCopied:`Ссылка скопирована в буфер обмена`,linkCopyFailed:`Не удалось скопировать ссылку`,cancel:`Отмена`,cancelEdit:`Отменить изменения`,sectionMoreDetails:`Подробнее`,concurrentUpdateTitle:`Эта запись была изменена другим пользователем`,concurrentUpdateDescription:`Другой пользователь сохранил более новую версию {{field}} во время вашего редактирования. Выберите, как разрешить конфликт.`,concurrentUpdateYourEdit:`Ваше изменение`,concurrentUpdateCurrentValue:`Текущее значение`,concurrentUpdateUpdatedBy:`Обновлено пользователем {{name}}`,concurrentUpdateUpdatedAt:`Обновлено {{when}}`,concurrentUpdateReload:`Загрузить текущую версию`,concurrentUpdateOverwrite:`Всё равно перезаписать`,concurrentUpdateCancel:`Отмена`,openInNewTab:`Открыть в новой вкладке`,history:`История`,deleteRowTitle:`Удалить запись`,createdBy:`Создано`,updatedBy:`Обновлено`,showEmptyRelated_one:`+ {{count}} пустое`,showEmptyRelated_other:`+ {{count}} пустых`,copyEmail:`Копировать email`,copyPhone:`Копировать телефон`,copyRecordId:`Копировать ID записи`,showEmptyFields:`Показать {{count}} пустых полей`,hideEmptyFields:`Скрыть пустые поля`,noValue:`Нет значения`},chart:{noData:`Нет данных для графика`,loading:`Загрузка графика...`},map:{searchLocations:`Поиск местоположений…`,locationDetails:`Детали местоположения`,markersCount:`{{count}} маркеров`,invalidCoordinates:`{{count}} запись с отсутствующими или недействительными координатами исключена из карты.`,invalidCoordinatesPlural:`{{count}} записей с отсутствующими или недействительными координатами исключены из карты.`},workflow:{draft:`Черновик`,active:`Активный`,paused:`Приостановлен`,completed:`Завершён`,cancelled:`Отменён`,save:`Сохранить`,publish:`Опубликовать`,addNode:`Добавить узел`,workflowFlow:`Рабочий процесс`,properties:`Свойства`,connections:`Соединения`,quickConnect:`Быстрое соединение`,fromPlaceholder:`От...`,toPlaceholder:`К...`,connect:`Соединить`,label:`Метка`,type:`Тип`,description:`Описание`,assignee:`Ответственный`,assigneeType:`Тип ответственного`,user:`Пользователь`,role:`Роль`,group:`Группа`,expression:`Выражение`,timeoutMinutes:`Тайм-аут (минуты)`,selectNodeToEdit:`Выберите узел для редактирования его свойств`,workflowTitle:`Название рабочего процесса`,newWorkflow:`Новый рабочий процесс`,outConnections:`{{count}} выходов`,start:`Начало`,end:`Конец`,task:`Задача`,userTask:`Задача пользователя`,serviceTask:`Сервисная задача`,scriptTask:`Скриптовая задача`,approval:`Одобрение`,condition:`Условие`,parallelGateway:`Параллельный шлюз`,joinGateway:`Шлюз объединения`,boundaryEvent:`Граничное событие`,delay:`Задержка`,notification:`Уведомление`,webhook:`Webhook`,allowConcurrency:`Разрешить (параллельное выполнение)`,forbidConcurrency:`Запретить (пропустить новые)`,replaceConcurrency:`Заменить (отменить текущие)`,queueConcurrency:`Очередь (выполнить после текущего)`,conditionEvent:`Условие`,manualEvent:`Ручной`,webhookEvent:`Webhook`,timerEvent:`Таймер`,signalEvent:`Сигнал`,versionHistory:`История версий`,importBpmn:`Импорт BPMN`,exportBpmn:`Экспорт BPMN`,undo:`Отменить`,redo:`Повторить`,resetZoom:`Сбросить масштаб`},dashboard:{addWidget:`Добавить виджет`,removeWidget:`Удалить виджет`,editLayout:`Редактировать макет`,saveLayout:`Сохранить макет`,resetLayout:`Сбросить макет`,total:`Итого`,noDataAvailable:`Данные недоступны`,noDataSourceFor:`Нет источника данных для`,trend:{vsLastQuarter:`пред. квартал`,vsLastMonth:`пред. месяц`,vsLastWeek:`пред. неделя`,vsLastYear:`пред. год`,vsYesterday:`вчера`,vsPreviousPeriod:`пред. период`}},configPanel:{save:`Сохранить`,discard:`Отменить`,close:`Закрыть`,layout:`Макет`,columns:`Столбцы`,gap:`Отступ`,rowHeight:`Высота строки`,data:`Данные`,refreshInterval:`Интервал обновления`,appearance:`Внешний вид`,title:`Заголовок`,showDescription:`Показать описание`,theme:`Тема`,configuration:`Конфигурация`,general:`Основные`,advanced:`Дополнительно`},appDesigner:{createApp:`Создать приложение`,editApp:`Редактировать приложение`,basicInfo:`Основная информация`,objects:`Объекты`,navigation:`Навигация`,branding:`Брендинг`,appName:`Название приложения`,appTitle:`Заголовок`,appDescription:`Описание`,appIcon:`Значок`,template:`Шаблон`,layout:`Макет`,layoutSidebar:`Боковая панель`,layoutHeader:`Заголовок`,layoutEmpty:`Пусто`,selectObjects:`Выбрать объекты`,searchObjects:`Поиск объектов…`,selectAll:`Выбрать все`,deselectAll:`Снять все`,navBuilder:`Конструктор навигации`,addGroup:`Добавить группу`,addUrl:`Добавить URL`,addSeparator:`Добавить разделитель`,noNavItems:`Элементов навигации пока нет.`,logoUrl:`Logo URL`,primaryColor:`Основной цвет`,faviconUrl:`Favicon URL`,preview:`Предпросмотр`,complete:`Завершить`,snakeCaseHint:`Must be snake_case (e.g. my_app)`,modeEdit:`Редактировать`,modePreview:`Предпросмотр`,modeCode:`Код`,addWidget:`Добавить виджет`,widgetProperties:`Свойства виджета`,dataSource:`Источник данных`,valueField:`Поле значения`,aggregate:`Агрегат`,colorVariant:`Вариант цвета`,addComponent:`Добавить компонент`,componentProperties:`Свойства компонента`,viewType:`Тип представления`,fields:`Поля`,toolbar:`Панель инструментов`,showSearch:`Показать поиск`,showFilters:`Показать фильтры`,showSort:`Показать сортировку`,appearance:`Внешний вид`,rowHeight:`Высота строки`,stripedRows:`Чередующиеся строки`,bordered:`С рамкой`,livePreview:`Предпросмотр в реальном времени`,stepBasicDesc:`Имя, заголовок и макет`,stepObjectsDesc:`Выбрать бизнес-объекты`,stepNavigationDesc:`Построить дерево навигации`,stepBrandingDesc:`Логотип, цвета и фавикон`,noObjectsFound:`Объекты не найдены.`,noNavItemsHint:`Элементов навигации пока нет. Выберите объекты на предыдущем шаге или добавьте вручную.`,separator:`Разделитель`,separatorLabel:`— Разделитель —`,newGroup:`Новая группа`,newLink:`Новая ссылка`,saveDraft:`Сохранить черновик`,cancelConfirmTitle:`Отменить изменения?`,cancelConfirmMessage:`У вас есть несохранённые изменения. Вы уверены, что хотите отменить?`,confirmDiscard:`Отменить`,keepEditing:`Продолжить редактирование`,navNoItems:`Нет элементов навигации. Нажмите кнопки выше, чтобы добавить элементы.`,navNoPreviewItems:`Нет элементов`,navLivePreview:`Предварительный просмотр`,navCollapseGroup:`Свернуть группу`,navExpandGroup:`Развернуть группу`,navAddChild:`Добавить дочерний элемент`,navMoveUp:`Переместить вверх`,navMoveDown:`Переместить вниз`,navRemove:`Удалить`,navObjectPage:`Страница объекта`,navDashboard:`Дашборд`,navPage:`Страница`,navReport:`Отчёт`,navGroup:`Группа`,navUrl:`URL`,navSeparator:`Разделитель`,navTypeObject:`Объект`,navTypeDashboard:`Панель`,navTypePage:`Страница`,navTypeReport:`Отчёт`,navTypeUrl:`URL`,navTypeGroup:`Группа`,navTypeSeparator:`Разделитель`,navTypeAction:`Действие`,navEditIcon:`Редактировать значок`,navToggleVisible:`Переключить видимость`,navHidden:`Скрыто`,navExportSchema:`Экспорт JSON`,navImportSchema:`Импорт JSON`,navExportSuccess:`Схема навигации экспортирована`,navImportSuccess:`Схема навигации импортирована`,navImportError:`Недействительный JSON навигации`,navIconPlaceholder:`Имя значка (например, Users)`,dashboardEditor:`Редактор панели`,noWidgets:`Нет виджетов. Нажмите кнопку выше для добавления.`,widgetLayoutSize:`Размер макета`,widgetWidth:`Ширина`,widgetHeight:`Высота`,dashboardPreview:`Предпросмотр панели`,noWidgetsPreview:`Нет виджетов для предпросмотра`,pageCanvasEditor:`Редактор холста страницы`,emptyPage:`Пустая страница. Нажмите кнопку выше для добавления компонента.`,pagePreview:`Предпросмотр страницы`,noComponentsPreview:`Нет компонентов для предпросмотра`,modePage:`Страница`,modeDashboard:`Панель`,undo:`Отменить`,redo:`Повторить`,brandingEditor:`Редактор брендинга`,brandingExport:`Экспорт JSON`,brandingImport:`Импорт JSON`,brandingPreview:`Предпросмотр`,brandingSampleButton:`Пример кнопки`,brandingSampleText:`Так будет выглядеть ваша тема бренда.`,colorPalette:`Цветовая палитра`,fontFamily:`Шрифт`,fontDefault:`По умолчанию (системный)`,modeLight:`Светлая`,modeDark:`Тёмная`,mobilePreview:`Предпросмотр мобильной версии`,objectManager:{title:`Менеджер объектов`,addObject:`Новый объект`,searchPlaceholder:`Поиск объектов…`,noObjects:`Объекты не найдены.`,objectName:`API-имя`,objectLabel:`Метка`,pluralLabel:`Метка (мн. ч.)`,icon:`Значок`,selectIcon:`Выбрать значок…`,group:`Группа`,noGroup:`Без группы`,sortOrder:`Порядок сортировки`,enabled:`Включено`,relationships:`Связи`,systemBadge:`Система`,fieldCount:`{{count}} поле(й)`,ungrouped:`Без группы`,deleteConfirmTitle:`Удалить объект?`,deleteConfirmMessage:`Объект и все его поля будут удалены навсегда. Это действие нельзя отменить.`},fieldDesigner:{title:`Конструктор полей`,addField:`Новое поле`,searchPlaceholder:`Поиск полей…`,allTypes:`Все типы`,noFields:`Поля не найдены.`,fieldName:`API-имя`,fieldLabel:`Метка`,fieldType:`Тип`,fieldGroup:`Группа`,description:`Описание`,required:`Обязательно`,unique:`Уникальное`,readOnly:`Только чтение`,hidden:`Скрытое`,indexed:`Индексированное`,externalId:`Внешний ID`,trackHistory:`Отслеживать историю`,defaultValue:`Значение по умолчанию`,placeholder:`Заполнитель`,referenceTo:`Ссылка на`,formula:`Формула`,options:`Параметры`,addOption:`Добавить параметр`,validationRules:`Правила валидации`,addRule:`Добавить правило`,systemBadge:`Система`,ungrouped:`Общее`,deleteConfirmTitle:`Удалить поле?`,deleteConfirmMessage:`Поле будет удалено навсегда. Существующие данные в этом поле будут потеряны.`,basicSection:`Основное`,typeSpecificSection:`Настройки типа`,advancedSection:`Дополнительно`,typeCategory:{text:`Текст`,number:`Число`,date:`Дата и время`,choice:`Выбор`,relation:`Связь`,advanced:`Дополнительно`}}},console:{title:`Консоль ObjectStack`,initializing:`Инициализация приложения...`,breadcrumb:{dashboards:`Панели`,pages:`Страницы`,reports:`Отчёты`,system:`Система`},loadingSteps:{connecting:`Подключение к источнику данных`,loadingConfig:`Загрузка конфигурации`,preparingWorkspace:`Подготовка рабочего пространства`},error:{connectionFailed:`Не удаётся подключиться к серверу`,serverUnreachable:`Сервер {{url}} недоступен.`,checkServer:`Проверьте сетевое подключение или работает ли бэкенд.`,timeout:`Время ожидания подключения истекло (10 секунд).`},actions:{retry:`Повторить`,retrying:`Повтор…`},shortcuts:{title:`Горячие клавиши`,description:`Краткий справочник по всем доступным горячим клавишам.`,groups:{general:`Общие`,navigation:`Навигация`,dataViews:`Представления данных`,preferences:`Настройки`},openCommandPalette:`Открыть палитру команд`,showShortcuts:`Показать горячие клавиши`,closeDialog:`Закрыть диалог / панель`,toggleSidebar:`Переключить боковую панель`,focusSearch:`Фокус на поиске`,createRecord:`Создать новую запись`,refreshData:`Обновить данные`,editRecord:`Редактировать выбранную запись`,toggleDarkMode:`Переключить тёмный режим`},commandPalette:{placeholder:`Введите команду или поиск...`,noResults:`Результаты не найдены.`,objects:`Объекты`,dashboards:`Панели мониторинга`,pages:`Страницы`,reports:`Отчёты`,switchApp:`Переключить приложение`,current:`Текущее`,preferences:`Настройки`,lightTheme:`Светлая тема`,darkTheme:`Тёмная тема`,systemTheme:`Системная тема`,actions:`Действия`,openFullSearch:`Открыть полную страницу поиска`,createApp:`Создать новое приложение`,searching:`Поиск…`,records:`Записи`,recentRecords:`Недавно просмотренные`},errors:{somethingWentWrong:`Что-то пошло не так`,unexpectedError:`При отображении этого представления произошла непредвиденная ошибка.`,tryAgain:`Попробовать снова`,goHome:`На главную`,errorDetails:`Подробности ошибки (только для разработки)`},theme:{toggle:`Переключить тему`,light:`Светлая`,dark:`Тёмная`,system:`Системная`},objectView:{objectNotFound:`Объект не найден`,objectNotFoundDescription:`Объект «{{objectName}}» не существует в текущей конфигурации.`,objectNotFoundHint:`Проверьте настройки навигации приложения или выберите другой объект на боковой панели.`,allRecords:`Все записи`,exitDesignMode:`Выйти из режима дизайна`,enterDesignMode:`Войти в режим дизайна`,metadataInspector:`Инспектор метаданных`,editView:`Редактировать представление`,addView:`Добавить представление`,designTools:`Инструменты дизайна`,new:`Создать`,configureView:`Настроить представление`,closePanel:`Закрыть панель`,page:`Страница`,pageConfigHint:`Панель инструментов, навигация и настройки оболочки представления`,listConfigHint:`Отрисовка данных, столбцы и внешний вид для этого типа списка`,general:`Общие`,generalHint:`Название, описание и тип представления`,toolbar:`Панель инструментов`,toolbarHint:`Поиск, фильтр, сортировка, группировка и переключение плотности`,toolbarEnabledCount:`{{count}} из {{total}} включено`,navigationSection:`Навигация`,navigationHint:`Поведение при нажатии на строку и настройки детального представления`,records:`Записи`,recordsHint:`Режим выбора, добавление записи и встроенное редактирование`,exportPrint:`Экспорт и печать`,exportPrintHint:`Форматы экспорта, печать и отображение количества записей`,showAllFields:`Показать все`,hideAllFields:`Скрыть все`,searchFields:`Поиск полей...`,title:`Заголовок`,description:`Описание`,data:`Данные`,source:`Источник`,columns:`Столбцы`,filterBy:`Фильтр по`,sortBy:`Сортировка по`,appearance:`Внешний вид`,showDescription:`Показать описание`,viewType:`Тип представления`,userFilters:`Фильтры пользователя`,enableSearch:`Включить поиск`,enableFilter:`Включить фильтр`,enableSort:`Включить сортировку`,enableHideFields:`Включить скрытие полей`,enableGroup:`Включить группировку`,enableColor:`Включить цвет`,enableDensity:`Включить плотность`,userActions:`Действия пользователя`,addRecordViaForm:`Добавить записи через форму`,advanced:`Расширенные`,allowExport:`Разрешить экспорт`,recordCount:`{{count}} записей`,noDescription:`Нет описания`,none:`Нет`,columnsConfigured:`{{count}} столбцов`,save:`Сохранить`,discard:`Отменить`,createView:`Создать представление`,newView:`Новое представление`,typeOptions:`Параметры типа`,groupByField:`Поле группировки`,startDateField:`Поле даты начала`,titleField:`Поле заголовка`,latitudeField:`Поле широты`,longitudeField:`Поле долготы`,imageField:`Поле изображения`,dateField:`Поле даты`,selectField:`Выберите поле...`,gridOptionsHint:`Представление таблицы использует столбцы, настроенные выше.`,groupBy:`Группировать по`,prefixField:`Поле префикса`,fields:`Поля`,fieldsVisible:`{{count}} видимых`,sortsCount:`{{count}} сортировок`,filtersCount:`{{count}} фильтров`,endDateField:`Поле даты окончания`,color:`Цвет`,fieldTextColor:`Цвет текста поля`,rowHeight:`Высота строки`,wrapHeaders:`Перенос заголовков`,showFieldDescriptions:`Показать описания полей`,collapseAllByDefault:`Свернуть всё по умолчанию`,striped:`Полосатые строки`,bordered:`Ячейки с границами`,inlineEdit:`Редактировать записи встроенно`,addDeleteRecordsInline:`Добавлять/удалять записи встроенно`,clickIntoRecordDetails:`Нажмите для просмотра деталей записи`,navigationMode:`Режим навигации`,navigationWidth:`Ширина навигации`,navigationWidthHint:`Доступно для режимов навигации: выдвижная панель, модальное окно и разделённый вид`,openNewTab:`Открыть в новой вкладке`,openNewTabHint:`Доступно для режимов навигации: страница и новое окно`,import:`Импорт`,importTitle:`Импорт из CSV`,importedToast:`{{count}} строк импортировано.`,importedWithSkipped:`{{ok}} строк импортировано; {{skipped}} пропущено.`,showAdvancedSettings:`Показать расширенные настройки`,showFewerSettings:`Меньше настроек`,createViewDesc:`Выберите тип представления и задайте ему имя. Все настройки можно изменить позже.`,cancel:`Отмена`,create:`Создать`,delete:`Удалить`,deleteViewTitle:`Удалить представление`,deleteViewConfirm:`Удалить представление "{{name}}"? Это действие нельзя отменить.`,bulkDeleteConfirm:`Удалить {{count}} выбранных записей? Это действие нельзя отменить.`,duplicateViewName:`Представление с таким именем уже существует.`,viewTypeGrid:`Таблица`,viewTypeGridDesc:`Таблица записей в стиле электронной таблицы.`,viewTypeKanban:`Канбан`,viewTypeKanbanDesc:`Карточки, сгруппированные в столбцы по полю единственного выбора.`,viewTypeCalendar:`Календарь`,viewTypeCalendarDesc:`Записи, размещённые по дате в месячном календаре.`,viewTypeGallery:`Галерея`,viewTypeGalleryDesc:`Крупные карточки изображений из поля вложений.`,viewTypeTimeline:`Временная шкала`,viewTypeTimelineDesc:`Записи вдоль горизонтальной временной оси.`,viewTypeGantt:`Гантт`,viewTypeGanttDesc:`Диаграмма Ганта с датами начала/конца и зависимостями.`,viewTypeMap:`Карта`,viewTypeMapDesc:`Географические маркеры из полей широты/долготы.`,viewTypeChart:`Диаграмма`,viewTypeChartDesc:`Агрегированные столбчатые/линейные/круговые диаграммы.`,groupByFieldHelp:`Доска Канбан группирует записи в столбцы по значениям поля.`,startDateFieldHelp:`Календарь размещает записи в ячейке, соответствующей этой дате.`,ganttStartDateFieldHelp:`Левый край каждой полосы Ганта использует эту дату.`,ganttEndDateFieldHelp:`Правый край каждой полосы Ганта использует эту дату.`,timelineDateFieldHelp:`Записи позиционируются на временной шкале по этой дате.`,latitudeFieldHelp:`Поле с широтой (только гео-поля).`,longitudeFieldHelp:`Поле с долготой (только гео-поля).`,imageFieldHelp:`Обложка галереи берётся из этого поля изображения или вложений.`,selectOption:`Выбрать...`,noEligibleFieldForType:`Нет подходящих полей этого типа. Сначала добавьте его к объекту.`,viewTypeUnavailable:`У этого объекта нет поля, которое может служить "{{field}}".`,viewTypeUnavailableShort:`Не поддерживается этим объектом.`,chartType:`Тип диаграммы`,chartTypeHelp:`Определяет способ отображения данных.`,chartTypeBar:`Столбчатая`,chartTypeLine:`Линейная`,chartTypePie:`Круговая`,chartTypeArea:`Областная`,chartTypeScatter:`Точечная`,xAxisField:`Поле оси X`,xAxisFieldHelp:`Категориальное или временное измерение.`,yAxisField:`Поле оси Y`,yAxisFieldHelp:`Числовое поле для агрегации.`,selectionMode:`Режим выбора`,selectionNone:`Нет`,selectionSingle:`Одиночный`,selectionMultiple:`Множественный`,pageSize:`Размер страницы`,pageSizeOptions:`Варианты размера страницы`,exportFormats:`Форматы экспорта`,exportMaxRecords:`Макс. записей`,exportIncludeHeaders:`Включить заголовки`,exportFileNamePrefix:`Префикс имени файла`,searchableFields:`Поля для поиска`,filterableFields:`Поля для фильтрации`,resizableColumns:`Изменяемые столбцы`,densityCompact:`Компактный`,densityComfortable:`Обычный`,densitySpacious:`Просторный`,densityMode:`Режим плотности`,hiddenFields:`Скрытые поля`,rowActions:`Действия строки`,bulkActions:`Массовые действия`,sharing:`Общий доступ`,sharingEnabled:`Общий доступ включён`,sharingVisibility:`Видимость`,addRecordEnabled:`Добавление записей включено`,addRecordPosition:`Позиция`,addRecordMode:`Режим`,addRecordFormView:`Представление формы`,conditionalFormatting:`Условное форматирование`,addRule:`Добавить правило`,quickFilters:`Быстрые фильтры`,addQuickFilter:`Добавить быстрый фильтр`,ufElements:`Элементы`,ufDropdown:`Выпадающий список`,ufTabs:`Вкладки`,ufToggle:`Переключатель`,ufAddField:`+ Добавить поле фильтра...`,ufNoFields:`Поля недоступны`,ufAddTab:`+ Добавить вкладку`,ufTabLabel:`Метка`,ufShowAllRecords:`Показать вкладку "Все записи"`,ufAllowAddTab:`Разрешить добавление вкладок`,showRecordCount:`Показать количество записей`,allowPrinting:`Разрешить печать`,virtualScroll:`Виртуальная прокрутка`,emptyStateTitle:`Заголовок пустого состояния`,emptyStateMessage:`Сообщение пустого состояния`,emptyStateIcon:`Значок пустого состояния`,ariaLabel:`Метка ARIA`,ariaDescribedBy:`Описано ARIA`,ariaLive:`ARIA Live`,accessibility:`Доступность`,viewTabs:`Вкладки представлений`},localeSwitcher:{label:`Язык`},search:`Поиск…`,nav:{pinItem:`Закрепить {{name}}`,unpinItem:`Открепить {{name}}`,dragToReorder:`Перетащите для изменения порядка`,favorites:`Избранное`}},auth:{login:{title:`Войдите в свой аккаунт`,description:`Введите электронную почту и пароль для продолжения`,emailLabel:`Электронная почта`,emailPlaceholder:`name@example.com`,passwordLabel:`Пароль`,passwordPlaceholder:`Введите пароль`,forgotPasswordText:`Забыли пароль?`,submitButton:`Войти`,submittingButton:`Вход...`,noAccountText:`Нет аккаунта?`,signUpText:`Зарегистрироваться`,errors:{invalidCredentials:`Неверный email или пароль. Попробуйте ещё раз.`,emailNotVerified:`Пожалуйста, подтвердите email перед входом.`}},register:{title:`Создать аккаунт`,description:`Введите свои данные, чтобы начать`,nameLabel:`Имя`,namePlaceholder:`Иван Иванов`,emailLabel:`Электронная почта`,emailPlaceholder:`name@example.com`,passwordLabel:`Пароль`,passwordPlaceholder:`Создайте пароль (мин. 8 символов)`,confirmPasswordLabel:`Подтвердите пароль`,confirmPasswordPlaceholder:`Подтвердите свой пароль`,passwordMismatchError:`Пароли не совпадают`,passwordTooShortError:`Пароль должен содержать не менее 8 символов`,submitButton:`Создать аккаунт`,submittingButton:`Создание аккаунта...`,hasAccountText:`Уже есть аккаунт?`,signInText:`Войти`,errors:{userExists:`Аккаунт с таким email уже существует. Попробуйте войти.`},verifyInbox:{title:`Проверьте входящие`,description:`Мы отправили ссылку подтверждения на {{email}}. Нажмите на ссылку для активации аккаунта.`,resend:`Отправить письмо повторно`,resending:`Отправка…`,resent:`Письмо с подтверждением отправлено.`,backToSignIn:`Вернуться к входу`}},forgotPassword:{title:`Сбросить пароль`,description:`Введите адрес электронной почты, и мы отправим вам ссылку для сброса пароля`,emailLabel:`Электронная почта`,emailPlaceholder:`name@example.com`,submitButton:`Отправить ссылку для сброса`,submittingButton:`Отправка...`,successTitle:`Проверьте почту`,successDescription:`Мы отправили ссылку для сброса пароля на {{email}}. Пожалуйста, проверьте свою почту.`,backToSignInText:`Вернуться к входу`,rememberPasswordText:`Помните свой пароль?`,signInText:`Войти`},resetPassword:{title:`Установить новый пароль`,description:`Выберите пароль, который вы ещё не использовали.`,newPassword:`Новый пароль`,confirmPassword:`Подтвердить пароль`,submit:`Обновить пароль`,submitting:`Обновление…`,success:`Пароль обновлён`,failed:`Сброс не удался`,invalidToken:`Эта ссылка для сброса недействительна или истекла.`,missingToken:`Ссылка для сброса отсутствует или истекла`,passwordsMismatch:`Пароли не совпадают`,requestNewLink:`Запросить новую ссылку`},verifyEmail:{title:`Подтвердить адрес email`,description:`Мы отправили ссылку подтверждения на ваш email. Нажмите на ссылку для подтверждения аккаунта.`,sentTo:`Отправлено на:`,verifyingTitle:`Проверка…`,verifyingDescription:`Подтверждаем ваш email. Пожалуйста, подождите.`,successTitle:`Email подтверждён`,successDescription:`Ваш email подтверждён. Теперь вы можете войти.`,errorTitle:`Подтверждение не удалось`,errorDescription:`Подтверждение не удалось. Запросите новую ссылку.`,missingToken:`В ссылке подтверждения отсутствует токен.`,emailMissing:`Email не указан`,resendButton:`Отправить письмо повторно`,resending:`Отправка…`,resent:`Письмо отправлено! Проверьте входящие`,resentSuccess:`Письмо с подтверждением отправлено!`,resentDescription:`Проверьте входящие и нажмите на ссылку подтверждения.`,resendFailed:`Не удаётся отправить письмо повторно`,signInLink:`Перейти ко входу`,backToSignIn:`Вернуться к входу`,backToLogin:`Вернуться ко входу`,checkSpam:`Не получили письмо? Проверьте папку "Спам" или обратитесь в поддержку.`,or:`Или`},setup:{welcomeTitle:`Добро пожаловать в ObjectStack`,description:`Создайте первый аккаунт владельца для завершения настройки.`,yourName:`Ваше имя`,orgName:`Название организации`,orgNamePlaceholder:`ООО Пример`,emailLabel:`Email`,emailPlaceholder:`name@example.ru`,passwordLabel:`Пароль`,passwordHint:`Не менее 8 символов`,submit:`Создать аккаунт владельца`,submitting:`Настройка…`,failed:`Настройка не удалась`},device:{title:`Авторизовать новое устройство`,subtitle:`Одобрите это устройство для входа как {{email}}.`,userCodeLabel:`Код устройства`,loggedInAs:`Вошли как {{email}}`,approve:`Одобрить устройство`,approving:`Одобрение…`,approvedTitle:`Устройство авторизовано`,approvedDescription:`Можете вернуться к устройству — оно должно войти в систему.`,approveSuccess:`Устройство авторизовано`,approveSuccessDescription:`Можете закрыть это окно.`,approveFailed:`Одобрение не удалось`,deny:`Отклонить запрос`,denying:`Отклонение…`,deniedTitle:`Доступ запрещён`,deniedDescription:`Устройству не будет предоставлен доступ.`,denyFailed:`Не удалось отклонить запрос`,invalidTitle:`Недействительная ссылка устройства`,invalidDescription:`В URL не указан код устройства.`,loading:`Загрузка…`,cancel:`Отмена`},shell:{tenantHostHint:`Вы входите в это рабочее пространство`}},errors:{networkError:`Ошибка сети. Проверьте подключение к интернету.`,serverError:`Ошибка сервера. Попробуйте позже.`,notFound:`Ресурс не найден.`,unauthorized:`У вас нет прав для выполнения этого действия.`,forbidden:`Доступ запрещён.`,timeout:`Время ожидания истекло. Попробуйте снова.`,unknown:`Произошла непредвиденная ошибка.`},workspace:{label:`Рабочие пространства`,default:`Моё рабочее пространство`,switch:`Переключить рабочее пространство`,create:`Создать рабочее пространство`,createTitle:`Создать рабочее пространство`,createDescription:`Рабочее пространство — это общее место для совместной работы вашей команды.`,createButton:`Создать рабочее пространство`,nameLabel:`Имя рабочего пространства`,namePlaceholder:`например, Acme Inc`,slugLabel:`URL-слаг`,slugHint:`Используется в URL. Только строчные буквы, цифры и дефисы.`,invite:`Пригласить участника`,members:`Участники`,settings:`Настройки рабочего пространства`},sidebar:{settings:`Настройки`,help:`Помощь`,helpTooltip:`Помощь и документация`,activityFeed:`Лента активности`,notifications:`Уведомления`,approvals:`Согласования`,inbox:`Входящие`,inboxAriaLabel:`Открыть входящие`,area:`Область`,recent:`Недавние`,favorites:`Избранное`,starred:`Отмеченные`,removeFromFavorites:`Убрать {{name}} из избранного`},home:{title:`Главная`,subtitle:`Панель вашего рабочего пространства`,nav:`Главная`,allApps:`Все приложения`,loading:`Загрузка рабочего пространства...`,recent:`Недавние`,starred:`Избранные`,welcome:`Добро пожаловать в ObjectUI`,welcomeDescription:`Начните с создания вашего первого приложения или настройки системы.`,createFirstApp:`Создайте первое приложение`,systemSettings:`Системные настройки`,browseMarketplace:`Обзор маркетплейса приложений`,quickActions:{title:`Быстрые действия`,createApp:`Создать приложение`,createAppDesc:`Начните с нового приложения`,manageObjects:`Управление объектами`,manageObjectsDesc:`Настройте модели данных`,systemSettings:`Системные настройки`,systemSettingsDesc:`Настройте рабочее пространство`},appCard:{noDescription:`Без описания`,default:`По умолчанию`},greetingMorning:`Доброе утро`,greetingAfternoon:`Добрый день`,greetingEvening:`Добрый вечер`,greetingNight:`Ночная смена`,heroTagline:`Продолжите с того места, где остановились, или откройте что-то новое.`,open:`Открыть`,stats:{apps:`Приложения`,starred:`Отмеченные`,recent:`Недавние`},recentApps:{title:`Недавно открытые`,itemType:{object:`Объект`,dashboard:`Панель`,page:`Страница`,record:`Запись`}},starredApps:{title:`Отмеченные`},gettingStarted:{title:`Настройка главной`,description:`Отметьте приложение как избранное, чтобы закрепить его здесь и открывать одним кликом. Всё, что вы открываете, автоматически появляется в "Недавно открытых".`,cta:`Просмотреть все приложения`}},layout:{appSwitcher:{home:`Главная`,addApp:`Добавить приложение`,editApp:`Редактировать приложение`,manageAllApps:`Управление приложениями`,systemConsole:`Системная консоль`,noAppsConfigured:`Нет приложений`},activityFeed:{title:`Последние действия`,filter:`Фильтр`,empty:`Нет действий`,ariaLabel:`Лента активности`,typeCreate:`Создание`,typeUpdate:`Обновление`,typeDelete:`Удаление`,typeComment:`Комментарий`,relativeJustNow:`только что`,relativeSecondsAgo:`{{count}} с назад`,relativeMinutesAgo:`{{count}} м назад`,relativeHoursAgo:`{{count}} ч назад`,relativeDaysAgo:`{{count}} д назад`,viewAll:`Все действия`},metadata:{label:`Метаданные`,toggleTitle:`Инспектор метаданных`,panelTitle:`Инспектор метаданных`,jsonBadge:`JSON`,copyJson:`Копировать JSON`}},search:{title:`Поиск`,back:`Назад`,placeholder:`Поиск объектов, панелей, страниц, отчётов...`,inputAriaLabel:`Поиск объектов, панелей, страниц, отчётов`,resultsCount:`{{count}} результат для "{{query}}"`,resultsCountPlural:`{{count}} результатов для "{{query}}"`,itemsAvailable:`{{count}} доступно`,noResults:`Результатов не найдено`,noResultsHint:`Попробуйте изменить поисковые запросы`,typeObjects:`Объекты`,typeDashboards:`Панели`,typePages:`Страницы`,typeReports:`Отчёты`,badgeObject:`Объект`,badgeDashboard:`Панель`,badgePage:`Страница`,badgeReport:`Отчёт`},empty:{objectNotFound:`Объект не найден`,objectNotFoundDescription:`Определение объекта "{{name}}" отсутствует. Проверьте конфигурацию или вернитесь назад.`,pageNotFound:`Страница не найдена`,pageNotFoundDescription:`Страница "{{name}}" не найдена. Возможно, она была удалена или переименована.`,dashboardNotFound:`Панель не найдена`,dashboardNotFoundDescription:`Панель "{{name}}" не найдена. Возможно, она была удалена или переименована.`,reportNotFound:`Отчёт не найден`,reportNotFoundDescription:`Отчёт "{{name}}" не найден. Возможно, он был удалён или переименован.`,noAppsConfigured:`Нет приложений`,noAppsConfiguredDescription:`Нет зарегистрированных приложений. Создайте первое приложение или посетите системные настройки.`,createFirstApp:`Создать приложение`,systemSettings:`Системные настройки`,back:`Назад`,recordNotFound:`Запись не найдена`,recordNotFoundDescription:`Искомая запись не существует или была удалена.`},renderer:{noPageSchema:`Схема страницы не указана`,noFormSchema:`Схема формы не указана`,noDashboardSchema:`Схема панели не указана`,pageRendering:`Рендеринг страницы: {{name}}`,dashboardRendering:`Рендеринг панели: {{name}}`,formRenderingMode:`Форма в режиме {{mode}}`,formRenderingFor:`для записи {{id}}`,createRecord:`Создать запись`,editRecord:`Редактировать запись`,page:`Страница`,dashboard:`Панель`,save:`Сохранить`,cancel:`Отмена`},actionDialog:{title:`Параметры действия`,description:`Введите необходимую информацию для продолжения.`,selectPlaceholder:`Выбрать {{label}}`,requiredError:`{{label}} обязательно`,cancel:`Отмена`,confirm:`Подтвердить`,defaultActionTitle:`Действие`,ok:`ОК`,lookupPlaceholder:`Вставить ID записи (UUID) для {{label}}`,lookupHelpText:`Введите ID записи связанного объекта. Выбор записи будет добавлен позже.`},rowAction:{openMenu:`Открыть меню`,edit:`Редактировать`,delete:`Удалить`},navigationSync:{addedPage:`Навигация обновлена: страница "{{name}}" добавлена`,addedDashboard:`Навигация обновлена: панель "{{name}}" добавлена`,removedPage:`Навигация обновлена: страница "{{name}}" удалена`,removedDashboard:`Навигация обновлена: панель "{{name}}" удалена`,renamedPage:`Навигация обновлена: страница "{{oldName}}" переименована в "{{newName}}"`,renamedDashboard:`Навигация обновлена: панель "{{oldName}}" переименована в "{{newName}}"`,undoLabel:`Отменить`,undone:`Изменение навигации отменено`,undoFailed:`Не удалось отменить изменение навигации`,updateFailed:`Не удалось обновить навигацию`},objectActions:{deleteSuccess:`{{label}} успешно удалён`,deleteFailed:`Не удалось удалить {{label}}`,noRecordId:`ID записи не указан`,deleteConfirm:`Удалить эту запись?`,bulkDeleteSuccess:`{{count}} записей {{label}} удалено`,bulkDeletePartial:`{{succeeded}} удалено, {{failed}} не удалось`},objectViewActions:{renameFailed:`Не удалось переименовать представление`,deleteFailed:`Не удалось удалить представление`},dashboardActions:{pdfPreparing:`Подготовка экспорта PDF…`,exportFailed:`Ошибка экспорта: {{message}}`,forecastSoon:`Прогнозное представление скоро будет`},recordDetail:{viewersTooltip:`Пользователи, просматривающие эту запись`},cellRender:{empty:`Пусто`,yes:`Да`,no:`Нет`,systemFields:`Система`},user:{profile:`Профиль`,settings:`Настройки`,logout:`Выйти`,preferences:`Настройки`,theme:`Тема`,language:`Язык`},report:{rowTotal:`Итог строки`,columnTotal:`Итог столбца`,grandTotal:`Общий итог`,totals:`Итоги`,rowsLabel:`Строка`,columnsLabel:`Столбец`,allLabel:`(Все)`,emptyLabel:`(Пусто)`,loading:`Загрузка…`,failedToLoad:`Не удалось загрузить матрицу: {{message}}`,needsAcross:"Матричный отчёт требует хотя бы одно поле `groupingsAcross`.",aggregate:{count:`Количество`,countDistinct:`Уникальные`,sum:`Сумма`,avg:`Среднее`,min:`Минимум`,max:`Максимум`,first:`Первый`},editor:{breadcrumb:`Конфигурация`,basic:`Основное`,title:`Заголовок`,titlePlaceholder:`напр., Воронка по кварталам`,description:`Описание`,descriptionPlaceholder:`Что показывает этот отчёт?`,type:`Тип отчёта`,typeTabular:`Табличный — плоский список`,typeSummary:`Сводный — группировка с итогами`,typeMatrix:`Матричный — сводка строки × столбцы`,typeJoined:`Объединённый — несколько блоков`,typeHelp:`Выберите макет, который соответствует тому, что хотите увидеть.`,data:`Данные`,objectName:`Источник данных`,objectNamePlaceholder:`напр., opportunity`,objectNameHelp:`К какому объекту обращается этот отчёт?`,limit:`Лимит строк`,limitPlaceholder:`напр., 100`,columns:`Столбцы`,columnsHint:`Выберите поля для столбцов. В сводных и матричных отчётах добавляйте агрегаты (Сумма, Количество…).`,filters:`Фильтры`,filtersHint:`Ограничьте строки, попадающие в отчёт.`,filtersComplex:`В отчёте используется расширенный фильтр, который нельзя редактировать здесь. При сохранении он останется без изменений.`,groupBy:`Группировать по`,groupByHint:`Сгруппируйте данные и посчитайте промежуточные итоги.`,rows:`Строки`,rowsHint:`Сгруппировать строки по этим полям.`,columnsAxis:`Столбцы`,columnsAxisHint:`Развернуть эти поля по горизонтали.`,values:`Значения`,valuesHint:`Числа в каждой ячейке. Выберите одно или несколько полей и задайте агрегат (Сумма, Количество…).`,grouping:`Группировка`,addGrouping:`Добавить группировку`,dateGranularity:`Гранулярность даты`,dateGranularityNone:`(исходное значение)`,day:`День`,week:`Неделя`,month:`Месяц`,quarter:`Квартал`,year:`Год`,sortAsc:`По возрастанию`,sortDesc:`По убыванию`,chart:`График`,chartHint:`Дополнительная визуализация рядом с таблицей.`,chartType:`Тип графика`,chartTitle:`Заголовок графика`,chartTitlePlaceholder:`По умолчанию — заголовок отчёта`,chartXAxis:`Ось X (категория)`,chartYAxis:`Ось Y (значение)`,chartShowLegend:`Показывать легенду`,chartShowDataLabels:`Показывать подписи данных`,chartNone:`(без графика)`,chartBar:`Столбчатый`,chartLine:`Линейный`,chartArea:`Областной`,chartPie:`Круговой`,chartDonut:`Кольцевой`,chartFunnel:`Воронка`,validationNeedsObject:`Выберите источник данных перед добавлением столбцов.`,validationMatrixNeedsRowsCols:`Для матричного отчёта нужны хотя бы одна строка и один столбец.`,validationSummaryNeedsRows:`Для сводного отчёта нужно хотя бы одно поле группировки.`,blocks:`Блоки`,blocksHint:`Каждый блок — отдельная таблица или график. Фильтры блока объединяются с фильтром отчёта по И.`,addBlock:`Добавить блок`,removeBlock:`Удалить блок`,blockName:`Имя блока`,blockNamePlaceholder:`уникальное_имя_блока`,blockLabel:`Отображаемое название`,blockLabelPlaceholder:`Показывается над блоком`,blockDescription:`Описание`,blockDescriptionPlaceholder:`Необязательный контекст для блока`,validationJoinedNeedsBlocks:`Объединённый отчёт должен содержать хотя бы один блок.`,validationBlockNameRequired:`У каждого блока должно быть непустое имя.`,validationBlockNameDuplicate:`Имена блоков в отчёте должны быть уникальными.`,validationBlockNeedsColumns:`В каждом блоке должна быть хотя бы одна колонка.`,noneOption:`(нет)`,addCondition:`Добавить условие`,combineLogic:`Объединить с`,opContains:`содержит`,opIsEmpty:`пусто`,opIsNotEmpty:`не пусто`,formatAuto:`Авто`,formatCurrency:`Валюта`,formatPercent:`Процент`,formatInteger:`Целое число`,formatDate:`Дата`,formatDatetime:`Дата и время`,columnLabelPlaceholder:`Переопределить подпись`,aggregateColumn:`Агрегат`,formatColumn:`Формат`,addColumns:`Добавить столбцы`,searchFields:`Поиск полей…`,noMatchingFields:`Нет полей, соответствующих запросу.`,noFieldsAvailable:`Полей нет.`,columnsCount:`{n} столбец(ов) выбрано`,columnsEmpty:`Столбцы ещё не выбраны.`,fieldPickerTitle:`Выбрать поля`,fieldPickerDescription:`Выберите одно или несколько полей для добавления. Используйте поиск для фильтрации.`,fieldPickerChangeTitle:`Изменить поле`,fieldPickerAddGroupingTitle:`Добавить группировку`,fieldPickerEmpty:`(Выбрать поле)`,fieldPickerSelected:`{n} выбрано`,fieldPickerClear:`Сбросить выбор`,fieldPickerAdd:`Добавить`,fieldPickerAddN:`Добавить {n}`}},organizations:{mine:`Мои организации`,title:`Организации`,heading:`Ваши организации`,subtitle:`Выберите организацию, чтобы продолжить, или создайте новую.`,searchPlaceholder:`Поиск организации`,new:`Новая организация`,current:`Текущая организация`,manage:`Управление`,emptyTitle:`Пока нет организаций`,emptyDescription:`Создайте свою первую организацию, чтобы начать.`,noMatches:`Нет организаций, соответствующих запросу.`},notifications:{empty:`Нет уведомлений`,markAllRead:`Отметить все как прочитанные`,viewAll:`Показать все уведомления`,approvalsPending:`{{count}} ожидающих утверждений`,viewApprovals:`Показать утверждения`,noPendingApprovals:`Нет ожидающих утверждений`,openApprovalsInbox:`Открыть входящие утверждений`,emptyUnread:`Всё прочитано`,filterUnread:`Непрочитанные`,filterAll:`Все`},publicForm:{submit:`Отправить`,submitting:`Отправка…`,submitAnother:`Отправить ещё ответ`,poweredBy:`Работает на ObjectStack`,secureNotice:`Ваши данные передаются безопасно и используются только для обработки запроса.`,thankYouTitle:`Спасибо!`,thankYouMessage:`Ваш ответ успешно получен.`,redirecting:`Перенаправление через {{seconds}} с…`,unavailableTitle:`Форма недоступна`,unavailableDescription:`По этому URL нет публичной формы. Убедитесь, что базовое представление имеет анонимный доступ.`,tryDemo:`Попробовать демо`,retry:`Повторить`,loading:`Загрузка формы…`,requiredHint:`* Обязательное поле`,consentLabelDefault:`Я принимаю политику конфиденциальности и соглашаюсь на обработку моих данных.`,consentLink:`Политика конфиденциальности`,consentRequired:`Пожалуйста, примите политику конфиденциальности.`,rateLimited:`Проверьте ответы перед отправкой.`,redirectBlocked:`Ответ принят, но URL перенаправления заблокирован по соображениям безопасности.`,demo:{contactTitle:`Связаться с нами`,contactDescription:`Расскажите о вашем проекте, и наш менеджер свяжется с вами в течение рабочего дня.`,supportTitle:`Отправить запрос в поддержку`,supportDescription:`Опишите проблему — наша команда ответит в течение рабочего дня.`,thankYouSalesTitle:`Спасибо — мы получили ваше сообщение!`,thankYouSalesMessage:`Наш менеджер свяжется с вами в течение рабочего дня.`,thankYouSupportTitle:`Готово — ваш запрос в очереди.`,thankYouSupportMessage:`Инженер поддержки скоро свяжется с вами. Сохраните эту страницу, если у вас есть скриншоты.`,field:{firstName:`Имя`,lastName:`Фамилия`,email:`Рабочий email`,phone:`Телефон`,jobTitle:`Должность`,company:`Компания`,website:`Сайт`,industry:`Отрасль`,companySize:`Размер компании`,howCanWeHelp:`Как мы можем помочь?`,subject:`Тема`,description:`Описание`,issueType:`Тип проблемы`,priority:`Приоритет`},industry:{technology:`Технологии`,software:`Программное обеспечение / SaaS`,finance:`Финансы`,healthcare:`Здравоохранение`,retail:`Розница`,other:`Другое`},issueType:{question:`Вопрос`,problem:`Проблема`,bug:`Ошибка`,feature_request:`Пожелание`},priority:{low:`Низкий`,medium:`Средний`,high:`Высокий`,critical:`Критический`}}},marketplace:{title:`Маркетплейс приложений`,subtitle:`Просматривайте одобренные приложения из каталога ObjectStack. Нажмите на приложение, чтобы увидеть подробности и установить его.`,searchPlaceholder:`Поиск приложений по имени или ID манифеста…`,searchAria:`Поиск в маркетплейсе`,installed:`Установлено`,installedCount:`Установлено ({{count}})`,refresh:`Обновить`,all:`Все`,noApprovedYet:`Пока нет одобренных приложений.`,noMatchFilters:`Нет приложений, соответствующих фильтрам.`,noDescription:`Описание отсутствует.`,back:`Назад в маркетплейс`,installedTitle:`Установленные приложения`,installedSubtitle:`Пакеты маркетплейса, установленные в ядре этого рантайма.`,installedEmpty:`Пока нет установленных приложений.`,browseLink:`Маркетплейс →`,installedAdditiveNote:`<strong>Примечание:</strong> API ядра только аддитивный — удаление убирает манифест с диска, чтобы пакет не загружался при следующем запуске, но работающее ядро держит приложение зарегистрированным до перезапуска.`,installedAt:`Установлено {{when}}`,installedBy:`пользователем {{user}}`,installedPackageId:`Пакет`,cachedAs:`Кэшировано как <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`Установлено v{{version}}`,load:{failed:`Не удалось загрузить маркетплейс`,failedHint:`По умолчанию этот рантайм указывает на публичное облако ObjectStack. Убедитесь, что рантайм онлайн.`,packageFailed:`Не удалось загрузить пакет`,notFound:`Не найдено.`},detail:{homepage:`Сайт`,installedV:`Установлено · v{{version}}`,about:`О приложении`,noReadme:`README отсутствует.`,versions:`Версии`,noApprovedVersions:`Нет одобренных версий.`,prerelease:`Пред-релиз`,moreOptions:`Другие варианты установки`,uninstallFromRuntime:`Удалить из рантайма`},action:{install:`Установить`,reinstall:`Переустановить`,working:`Обработка…`,installToCloud:`Установить в облако…`,installing:`Установка…`,uninstall:`Удалить`,uninstalling:`Удаление…`,details:`Подробности`,close:`Закрыть`,dismiss:`Закрыть`,openOnCloud:`Открыть в облаке`,backHome:`На главную`},install:{dialogTitle:`Установить {{name}}`,dialogDescCurrent:`Установить в эту среду ({{host}}).`,dialogDescPicker:`Выберите среду для установки. Требуется вход в ObjectStack Cloud.`,environment:`Среда`,environmentPlaceholder:`Выбрать среду`,includeSampleData:`Включить образцы данных`,noEnvs:`В активной организации нет сред.`,noPermission:`Нет прав на установку. Только владельцы и администраторы могут устанавливать.`,signInFirst:`Сначала войдите в ObjectStack Cloud.`,success:`Установлено. Откройте среду, чтобы увидеть новое приложение.`,localSuccess:`v{{version}} установлено. "{{name}}" должно появиться в переключателе.`,localManifestConflict:`{{message}}
|
|
29
|
+
Примечание: Локальное приложение уже имеет этот manifest_id. Сначала удалите его из objectstack.config.ts.`,localUnauthorized:`Сначала войдите в этот рантайм.`,localMarketplaceUnavailable:`OS_CLOUD_URL не настроен.`},uninstall:{confirm:`Удалить {{manifestId}} v{{version}}?
|
|
30
|
+
|
|
31
|
+
Кэшированный манифест будет удалён.`,successInList:`{{manifestId}} удалён. Перезапустите рантайм для полной выгрузки.`,successInDetail:`Кэшированный манифест {{manifestId}} удалён.`},accessDenied:{title:`Только для администраторов`,description:`Нет прав на установку приложений.`},category:{crm:`CRM`,erp:`ERP`,hr:`HR`,finance:`Финансы`,project:`Управление проектами`,collaboration:`Совместная работа`,analytics:`Аналитика`,integration:`Интеграция`,automation:`Автоматизация`,ai:`ИИ`,security:`Безопасность`,"developer-tools":`Инструменты разработчика`,"ui-theme":`Тема UI`,storage:`Хранилище`,other:`Другое`},pricing:{free:`Бесплатно`,freemium:`Freemium`,paid:`Платно`,subscription:`Подписка`,"usage-based":`По использованию`,"contact-sales":`Связаться с продажами`},relativeTime:{today:`сегодня`,daysAgo:`{{count}} д назад`,monthsAgo:`{{count}} мес назад`,yearsAgo:`{{count}} лет назад`}}},ar:{common:{addToFavorites:`إضافة إلى المفضلة`,removeFromFavorites:`إزالة من المفضلة`,loading:`جاري التحميل...`,save:`حفظ`,cancel:`إلغاء`,delete:`حذف`,edit:`تعديل`,create:`إنشاء`,search:`بحث`,filter:`تصفية`,reset:`إعادة تعيين`,confirm:`تأكيد`,close:`إغلاق`,back:`رجوع`,next:`التالي`,previous:`السابق`,submit:`إرسال`,refresh:`تحديث`,export:`تصدير`,import:`استيراد`,yes:`نعم`,no:`لا`,ok:`موافق`,actions:`إجراءات`,more:`المزيد`,selectAll:`تحديد الكل`,clearAll:`مسح الكل`,noData:`لا توجد بيانات`,noResults:`لم يتم العثور على نتائج`,required:`مطلوب`,optional:`اختياري`,selectOption:`اختر خياراً`,select:`اختر...`,openChat:`فتح المحادثة`,closeChat:`إغلاق المحادثة`,toggleSidebar:`تبديل الشريط الجانبي`},validation:{required:`{{field}} مطلوب`,minLength:`{{field}} يجب أن يكون {{min}} حرفاً على الأقل`,maxLength:`{{field}} يجب ألا يتجاوز {{max}} حرفاً`,min:`{{field}} يجب أن يكون {{min}} على الأقل`,max:`{{field}} يجب ألا يتجاوز {{max}}`,email:`يرجى إدخال بريد إلكتروني صالح`,url:`يرجى إدخال رابط صالح`,pattern:`صيغة {{field}} غير صالحة`,unique:`{{field}} يجب أن يكون فريداً`,type:`{{field}} يجب أن يكون {{type}} صالحاً`},form:{addItem:`إضافة عنصر`,removeItem:`إزالة عنصر`,fieldRequired:`هذا الحقل مطلوب`,invalidFormat:`صيغة غير صالحة`,saveSuccess:`تم الحفظ بنجاح`,saveError:`فشل في الحفظ`,unsavedChanges:`لديك تغييرات غير محفوظة. هل أنت متأكد أنك تريد المغادرة؟`,stepOf:`الخطوة {{current}} من {{total}}`,createTitle:`إنشاء {{object}}`,editTitle:`تعديل {{object}}`,createDescription:`إضافة {{object}} جديد إلى قاعدة البيانات.`,editDescription:`تحديث تفاصيل {{object}}`,saveRecord:`حفظ السجل`,create:`إنشاء`,update:`تحديث`,createSuccess:`تم إنشاء {{object}}`,updateSuccess:`تم تحديث {{object}}`,deleteSuccess:`تم حذف {{object}}`},fields:{richText:{format:`التنسيق: {{format}}`,basicEditorHint:`محرر النص الغني (أساسي)`,placeholder:`اكتب شيئاً...`}},table:{rowsPerPage:`صفوف في الصفحة`,showing:`عرض {{from}} إلى {{to}} من {{total}}`,noRows:`لا توجد صفوف للعرض`,sortAsc:`ترتيب تصاعدي`,sortDesc:`ترتيب تنازلي`,filterColumn:`تصفية {{column}}`,columns:`الأعمدة`,exportCSV:`تصدير CSV`,exportExcel:`تصدير Excel`,selectRow:`تحديد صف`,selectAllRows:`تحديد جميع الصفوف`,expandRow:`توسيع الصف`,collapseRow:`طي الصف`,hideColumn:`إخفاء العمود`,freezeColumn:`تجميد العمود`,unfreezeColumn:`إلغاء تجميد العمود`,pageInfo:`صفحة {{current}} من {{total}}`,totalRecords:`{{count}} إجمالي`,noResults:`لا نتائج`,noResultsHint:`حاول تعديل الفلاتر أو مصطلحات البحث.`,cancelAll:`إلغاء الكل`,saveAll:`حفظ الكل ({{count}})`,addRecord:`إضافة سجل`,open:`فتح`,search:`بحث...`,modified:`{{count}} صف(صفوف) معدّل(ة)`,selected:`{{count}} محدد(ة)`,edit:`تعديل`,delete:`حذف`},grid:{actions:`إجراءات`,edit:`تعديل`,delete:`حذف`,export:`تصدير`,exportAs:`تصدير كـ {{format}}`,loading:`جاري تحميل الشبكة...`,errorLoading:`خطأ في تحميل الشبكة`,pullToRefresh:`اسحب للتحديث`,refreshing:`جاري التحديث…`,openRecord:`فتح السجل`,rowHeight:`ارتفاع الصف: {{mode}}`,openMenu:`فتح القائمة`,empty:`فارغ`,yes:`نعم`,no:`لا`,systemFields:`النظام`,toolbar:{densityMode:`الكثافة`,densityCompact:`مضغوط`,densityComfortable:`عادي`,densitySpacious:`فسيح`,densityCycleHint:`{{label}} (انقر للتغيير)`,densityCycleShortHint:`انقر للتغيير`},import:{title:`استيراد {{object}}`,stepUpload:`رفع`,stepMapping:`تعيين`,stepPreview:`معاينة`,uploadDescription:`ارفع ملف CSV للبدء.`,mappingDescription:`عيّن أعمدة CSV إلى حقول الكائن.`,previewDescription:`راجع البيانات قبل الاستيراد.`,dragDrop:`اسحب ملف CSV هنا أو انقر للتصفح`,browseFiles:`تصفح الملفات`,onlyCsv:`ملفات CSV فقط مدعومة.`,fileNeedsHeader:`يجب أن يحتوي الملف على صف رأسي وصف بيانات واحد على الأقل.`,mappingTemplate:`قالب التعيين:`,chooseTemplate:`اختر قالباً…`,noSavedTemplates:`لا قوالب محفوظة`,noneOption:`— لا شيء —`,saveCurrent:`حفظ الحالي`,templateName:`اسم القالب`,save:`حفظ`,deleteTemplate:`حذف القالب`,csvColumn:`عمود CSV`,mapsTo:`يُعيَّن إلى`,status:`الحالة`,skipColumn:`تخطي العمود`,skip:`— تخطي —`,mapped:`مُعيَّن`,skipped:`مُتخطَّى`,rowsWithErrors:`{{count}} صف(صفوف) بها أخطاء`,rowsCorrected:`{{count}} صف(صفوف) تم تصحيحها`,clickToFix:`— انقر على خلية مميزة للتعديل.`,showingRows:`عرض {{shown}} من {{total}} صف`,importing:`جارٍ الاستيراد… {{progress}}%`,importComplete:`اكتمل الاستيراد`,imported:`{{count}} مُستورَد(ة)`,skippedCount:`{{count}} مُتخطَّى(ة)`,moreErrors:`…و{{count}} خطأ(أخطاء) أخرى`,cancel:`إلغاء`,back:`رجوع`,next:`التالي`,close:`إغلاق`,importNRows:`استيراد {{count}} صف`,importingProgress:`جارٍ الاستيراد…`,requiredMark:`*`,required:`مطلوب`,invalidType:`{{type}} غير صالح`}},calendar:{today:`اليوم`,month:`شهر`,week:`أسبوع`,day:`يوم`,agenda:`جدول أعمال`,allDay:`طوال اليوم`,noEvents:`لا توجد أحداث`,newEvent:`حدث جديد`,moreEvents:`+{{count}} المزيد`},list:{recordCount:`{{count}} سجلات`,recordCountOne:`{{count}} سجل`,addRecord:`إضافة سجل`,tabs:`علامات التبويب`,allRecords:`جميع السجلات`,search:`بحث`,filter:`تصفية`,filterRecords:`تصفية السجلات`,sort:`ترتيب`,sortRecords:`ترتيب السجلات`,group:`تجميع`,groupBy:`تجميع حسب`,export:`تصدير`,exportAs:`تصدير كـ {{format}}`,color:`لون`,rowColor:`لون الصف`,colorByField:`تلوين حسب الحقل`,clear:`مسح`,none:`لا شيء`,hideFields:`إخفاء الحقول`,noItems:`لم يتم العثور على عناصر`,noItemsMessage:`لا توجد سجلات للعرض. حاول تعديل الفلاتر أو إضافة بيانات جديدة.`,showAll:`عرض الكل`,pullToRefresh:`اسحب للتحديث`,refreshing:`جارٍ التحديث…`,share:`مشاركة`,print:`طباعة`,hideFieldsTitle:`إخفاء الحقول`,dataLimitReached:`يتم عرض أول {{limit}} سجل. قد تتوفر بيانات إضافية.`,viewSettings:`إعدادات العرض`,viewSettingsHint:`التجميع واللون والكثافة والحقول المرئية.`,addGroup:`إضافة حقل مجموعة`,collapsedByDefault:`مطوي افتراضياً`,removeGroup:`إزالة`},kanban:{addCard:`إضافة بطاقة`,addColumn:`إضافة عمود`,moveCard:`نقل بطاقة`,deleteCard:`حذف بطاقة`,deleteColumn:`حذف عمود`,noCards:`لا بطاقات`,cardTitlePlaceholder:`أدخل عنوان البطاقة...`},timeline:{bucket:{overdue:`متأخر`,today:`اليوم`,tomorrow:`غداً`,thisWeek:`هذا الأسبوع`,nextWeek:`الأسبوع القادم`,later:`لاحقاً`,noDate:`بدون تاريخ`,unassigned:`غير معين`}},gantt:{column:{taskName:`اسم المهمة`,start:`البداية`,end:`النهاية`},toolbar:{prevPeriod:`الفترة السابقة`,nextPeriod:`الفترة التالية`,zoomIn:`تكبير`,zoomOut:`تصغير`,jumpToToday:`الانتقال إلى اليوم`,today:`اليوم`,showTaskList:`إظهار قائمة المهام`,hideTaskList:`إخفاء قائمة المهام`}},view:{rename:`إعادة تسمية`,duplicateView:`تكرار العرض`,shareView:`مشاركة العرض`,setAsDefault:`تعيين كافتراضي`,pinView:`تثبيت العرض`,unpinView:`إلغاء تثبيت العرض`,changeViewType:`تغيير نوع العرض`,deleteView:`حذف العرض`,addView:`إضافة عرض`,unsavedChanges:`تغييرات غير محفوظة`,saveAsView:`حفظ كعرض`,moreViews:`{{count}} المزيد`,activeFilters:`الفلاتر نشطة`,activeSort:`الترتيب نشط`,manageViews:`إدارة العروض`,manageAllViews:`إدارة جميع العروض…`,searchViews:`البحث في العروض`,addNewView:`إضافة عرض جديد`,done:`تم`,noViewsFound:`لا توجد عروض تطابق بحثك.`,dragToReorder:`اسحب لإعادة الترتيب`,defaultView:`العرض الافتراضي`,tabActionsFor:`إجراءات العرض لـ {{name}}`,readonlyAriaLabel:`عرض للقراءة فقط`,readonlyTooltip:`عرض النظام — انسخ للتخصيص.`},detail:{back:`رجوع`,edit:`تحرير`,editInline:`تحرير`,save:`حفظ`,saveChanges:`حفظ التغييرات`,editFieldsInline:`تحرير الحقول`,share:`مشاركة`,duplicate:`نسخ`,export:`تصدير`,viewHistory:`عرض السجل`,delete:`حذف`,moreActions:`المزيد من الإجراءات`,addToFavorites:`إضافة إلى المفضلة`,removeFromFavorites:`إزالة من المفضلة`,previousRecord:`السجل السابق`,nextRecord:`السجل التالي`,recordOf:`{{current}} من {{total}}`,recordNotFound:`لم يتم العثور على السجل`,recordNotFoundDescription:`السجل الذي تبحث عنه غير موجود أو ربما تم حذفه.`,goBack:`رجوع`,details:`التفاصيل`,related:`ذات صلة`,relatedRecords:`{{count}} سجلات`,relatedRecordOne:`{{count}} سجل`,noRelatedRecords:`لا توجد سجلات ذات صلة`,loading:`جاري التحميل...`,copyToClipboard:`نسخ إلى الحافظة`,copied:`تم النسخ!`,deleteConfirmation:`هل أنت متأكد أنك تريد حذف هذا السجل؟`,editRecord:`تحرير السجل`,viewAll:`عرض الكل`,new:`جديد`,emptyValue:`—`,comments:`التعليقات`,searchComments:`البحث في التعليقات…`,addCommentPlaceholder:`أضف تعليقاً… (Ctrl+Enter للإرسال)`,noMatchingComments:`لا توجد تعليقات مطابقة`,noCommentsYet:`لا توجد تعليقات بعد`,pinned:`مثبت`,pin:`تثبيت`,unpin:`إلغاء التثبيت`,justNow:`الآن`,minutesAgo:`منذ {{count}} دقيقة`,hoursAgo:`منذ {{count}} ساعة`,daysAgo:`منذ {{count}} يوم`,dropFilesToUpload:`اسحب الملفات هنا أو انقر للرفع`,attachmentCount:`{{count}} مرفق`,attachmentCountPlural:`{{count}} مرفقات`,removeAttachment:`إزالة المرفق`,unifiedDiff:`عرض موحد`,sideBySideDiff:`عرض جنباً إلى جنب`,noChanges:`لا توجد تغييرات`,previousVersion:`السابق`,currentVersion:`الحالي`,discussion:`المناقشة`,showDiscussion:`إظهار المناقشة ({{count}})`,hideDiscussion:`إخفاء المناقشة`,bold:`غامق (Ctrl+B)`,italic:`مائل (Ctrl+I)`,listFormat:`قائمة`,inlineCode:`كود مضمن`,mentionSomeone:`إشارة إلى شخص`,preview:`معاينة`,submitComment:`إرسال (Ctrl+Enter)`,sendComment:`إرسال`,writeComment:`اكتب تعليقاً…`,subscribedTooltip:`مشترك — انقر لإلغاء الاشتراك`,unsubscribedTooltip:`الاشتراك في الإشعارات`,firstRecord:`السجل الأول (Home)`,previousRecordKey:`السجل السابق (←)`,nextRecordKey:`السجل التالي (→)`,lastRecord:`السجل الأخير (End)`,noRecords:`لا توجد سجلات`,searchWhileNavigating:`البحث أثناء التصفح`,searchRecords:`البحث في السجلات…`,allActivity:`كل النشاط`,commentsOnly:`التعليقات فقط`,fieldChangesFilter:`تغييرات الحقول`,tasksOnly:`المهام فقط`,leaveCommentPlaceholder:`اترك تعليقاً… (Ctrl+Enter للإرسال)`,noActivity:`لا يوجد نشاط مسجل`,loadMore:`تحميل المزيد`,edited:`(معدل)`,via:`عبر {{source}}`,replyCount:`{{count}} رد`,replyCountPlural:`{{count}} ردود`,replyPlaceholder:`رد…`,filterActivity:`تصفية النشاط`,openDiscussion:`فتح لوحة المناقشة`,closeDiscussion:`إغلاق لوحة المناقشة`,subscribeAriaLabel:`الاشتراك في الإشعارات`,unsubscribeAriaLabel:`إلغاء الاشتراك من الإشعارات`,clearSearch:`مسح البحث`,saving:`جارٍ الحفظ…`,lockedByApproval:`مقفل للموافقة`,lockedTooltip:`يحتوي هذا السجل على طلب موافقة معلق؛ التعديل مقفل`,cancelApproval:`إلغاء الموافقة`,cancelApprovalInFlight:`جارٍ الإلغاء…`,cancelApprovalTooltip:`إلغاء طلب الموافقة المعلق لفتح قفل السجل`,cancelApprovalFailed:`فشل إلغاء الموافقة`,cancelApprovalUnavailable:`إلغاء الموافقات غير مدعوم من مصدر البيانات هذا`,linkCopied:`تم نسخ الرابط إلى الحافظة`,linkCopyFailed:`فشل نسخ الرابط`,cancel:`إلغاء`,cancelEdit:`تجاهل التغييرات`,sectionMoreDetails:`مزيد من التفاصيل`,concurrentUpdateTitle:`تم تعديل هذا السجل من قِبل شخص آخر`,concurrentUpdateDescription:`قام مستخدم آخر بحفظ نسخة أحدث من {{field}} أثناء تعديلك. اختر كيفية حل التعارض.`,concurrentUpdateYourEdit:`تعديلك`,concurrentUpdateCurrentValue:`القيمة الحالية`,concurrentUpdateUpdatedBy:`حدّثه {{name}}`,concurrentUpdateUpdatedAt:`حُدِّث في {{when}}`,concurrentUpdateReload:`تحميل النسخة الحالية`,concurrentUpdateOverwrite:`الكتابة فوقه على أي حال`,concurrentUpdateCancel:`إلغاء`,openInNewTab:`فتح في علامة تبويب جديدة`,activity:`النشاط`,history:`السجل`,editRow:`تعديل`,deleteRow:`حذف`,deleteRowConfirmation:`حذف هذا السجل؟`,deleteRowTitle:`حذف السجل`,actions:`الإجراءات`,previousPage:`السابق`,nextPage:`التالي`,pageOf:`صفحة {{current}} من {{total}}`,sortBy:`ترتيب حسب`,filterPlaceholder:`تصفية...`,highlightFields:`الحقول الرئيسية`,createdBy:`أنشأه`,updatedBy:`حدّثه`,showEmptyRelated_one:`+ {{count}} فارغ`,showEmptyRelated_other:`+ {{count}} فارغة`,copyEmail:`نسخ البريد الإلكتروني`,copyPhone:`نسخ الهاتف`,copyRecordId:`نسخ معرف السجل`,showEmptyFields:`إظهار {{count}} حقل(حقول) فارغة`,hideEmptyFields:`إخفاء الحقول الفارغة`,noValue:`لا قيمة`},chart:{noData:`لا تتوفر بيانات للرسم البياني`,loading:`جاري تحميل الرسم البياني...`},map:{searchLocations:`البحث عن المواقع…`,locationDetails:`تفاصيل الموقع`,markersCount:`{{count}} علامة`,invalidCoordinates:`{{count}} سجل بإحداثيات مفقودة أو غير صالحة مستبعد من الخريطة.`,invalidCoordinatesPlural:`{{count}} سجلات بإحداثيات مفقودة أو غير صالحة مستبعدة من الخريطة.`},workflow:{draft:`مسودة`,active:`نشط`,paused:`متوقف مؤقتاً`,completed:`مكتمل`,cancelled:`ملغي`,save:`حفظ`,publish:`نشر`,addNode:`إضافة عقدة`,workflowFlow:`سير العمل`,properties:`الخصائص`,connections:`الاتصالات`,quickConnect:`اتصال سريع`,fromPlaceholder:`من...`,toPlaceholder:`إلى...`,connect:`ربط`,label:`التسمية`,type:`النوع`,description:`الوصف`,assignee:`المسؤول`,assigneeType:`نوع المسؤول`,user:`مستخدم`,role:`دور`,group:`مجموعة`,expression:`تعبير`,timeoutMinutes:`المهلة (دقائق)`,selectNodeToEdit:`حدد عقدة لتعديل خصائصها`,workflowTitle:`عنوان سير العمل`,newWorkflow:`سير عمل جديد`,outConnections:`{{count}} مخرج`,start:`بداية`,end:`نهاية`,task:`مهمة`,userTask:`مهمة مستخدم`,serviceTask:`مهمة خدمة`,scriptTask:`مهمة نصية`,approval:`موافقة`,condition:`شرط`,parallelGateway:`بوابة متوازية`,joinGateway:`بوابة دمج`,boundaryEvent:`حدث حدودي`,delay:`تأخير`,notification:`إشعار`,webhook:`Webhook`,allowConcurrency:`السماح (تنفيذ متزامن)`,forbidConcurrency:`منع (تخطي الجديد)`,replaceConcurrency:`استبدال (إلغاء الحالي)`,queueConcurrency:`طابور (تنفيذ بعد الحالي)`,conditionEvent:`شرط`,manualEvent:`يدوي`,webhookEvent:`Webhook`,timerEvent:`مؤقت`,signalEvent:`إشارة`,versionHistory:`تاريخ الإصدارات`,importBpmn:`استيراد BPMN`,exportBpmn:`تصدير BPMN`,undo:`تراجع`,redo:`إعادة`,resetZoom:`إعادة تعيين التكبير`},dashboard:{addWidget:`إضافة أداة`,removeWidget:`إزالة أداة`,editLayout:`تعديل التخطيط`,saveLayout:`حفظ التخطيط`,resetLayout:`إعادة تعيين التخطيط`,total:`الإجمالي`,noDataAvailable:`لا بيانات متاحة`,noDataSourceFor:`لا مصدر بيانات لـ`,trend:{vsLastQuarter:`مقابل الربع الماضي`,vsLastMonth:`مقابل الشهر الماضي`,vsLastWeek:`مقابل الأسبوع الماضي`,vsLastYear:`مقابل العام الماضي`,vsYesterday:`مقابل أمس`,vsPreviousPeriod:`مقابل الفترة السابقة`}},configPanel:{save:`حفظ`,discard:`تجاهل`,close:`إغلاق`,layout:`التخطيط`,columns:`الأعمدة`,gap:`المسافة`,rowHeight:`ارتفاع الصف`,data:`البيانات`,refreshInterval:`فترة التحديث`,appearance:`المظهر`,title:`العنوان`,showDescription:`إظهار الوصف`,theme:`السمة`,configuration:`الإعداد`,general:`عام`,advanced:`متقدم`},appDesigner:{createApp:`إنشاء تطبيق`,editApp:`تعديل التطبيق`,basicInfo:`المعلومات الأساسية`,objects:`الكائنات`,navigation:`التنقل`,branding:`العلامة التجارية`,appName:`اسم التطبيق`,appTitle:`العنوان`,appDescription:`الوصف`,appIcon:`الأيقونة`,template:`القالب`,layout:`التخطيط`,layoutSidebar:`الشريط الجانبي`,layoutHeader:`الرأس`,layoutEmpty:`فارغ`,selectObjects:`تحديد الكائنات`,searchObjects:`البحث في الكائنات…`,selectAll:`تحديد الكل`,deselectAll:`إلغاء تحديد الكل`,navBuilder:`منشئ التنقل`,addGroup:`إضافة مجموعة`,addUrl:`إضافة URL`,addSeparator:`إضافة فاصل`,noNavItems:`لا توجد عناصر تنقل بعد.`,logoUrl:`Logo URL`,primaryColor:`اللون الأساسي`,faviconUrl:`Favicon URL`,preview:`معاينة`,complete:`إكمال`,snakeCaseHint:`Must be snake_case (e.g. my_app)`,modeEdit:`تعديل`,modePreview:`معاينة`,modeCode:`كود`,addWidget:`إضافة عنصر واجهة`,widgetProperties:`خصائص العنصر`,dataSource:`مصدر البيانات`,valueField:`حقل القيمة`,aggregate:`تجميع`,colorVariant:`متغير اللون`,addComponent:`إضافة مكون`,componentProperties:`خصائص المكون`,viewType:`نوع العرض`,fields:`الحقول`,toolbar:`شريط الأدوات`,showSearch:`إظهار البحث`,showFilters:`إظهار الفلاتر`,showSort:`إظهار الترتيب`,appearance:`المظهر`,rowHeight:`ارتفاع الصف`,stripedRows:`صفوف متناوبة`,bordered:`محاط بإطار`,livePreview:`معاينة مباشرة`,stepBasicDesc:`الاسم والعنوان والتخطيط`,stepObjectsDesc:`اختيار كائنات الأعمال`,stepNavigationDesc:`بناء شجرة التنقل`,stepBrandingDesc:`الشعار والألوان والأيقونة`,noObjectsFound:`لم يتم العثور على كائنات.`,noNavItemsHint:`لا توجد عناصر تنقل بعد. حدد كائنات في الخطوة السابقة أو أضف عناصر يدويًا.`,separator:`فاصل`,separatorLabel:`— فاصل —`,newGroup:`مجموعة جديدة`,newLink:`رابط جديد`,saveDraft:`حفظ المسودة`,cancelConfirmTitle:`تجاهل التغييرات؟`,cancelConfirmMessage:`لديك تغييرات غير محفوظة. هل أنت متأكد من الإلغاء؟`,confirmDiscard:`تجاهل`,keepEditing:`متابعة التحرير`,navNoItems:`لا توجد عناصر تنقل. انقر على الأزرار أعلاه لإضافة عناصر.`,navNoPreviewItems:`لا توجد عناصر`,navLivePreview:`معاينة مباشرة`,navCollapseGroup:`طي المجموعة`,navExpandGroup:`توسيع المجموعة`,navAddChild:`إضافة عنصر فرعي`,navMoveUp:`نقل لأعلى`,navMoveDown:`نقل لأسفل`,navRemove:`إزالة`,navObjectPage:`صفحة الكائن`,navDashboard:`لوحة القيادة`,navPage:`صفحة`,navReport:`تقرير`,navGroup:`مجموعة`,navUrl:`رابط`,navSeparator:`فاصل`,navTypeObject:`كائن`,navTypeDashboard:`لوحة تحكم`,navTypePage:`صفحة`,navTypeReport:`تقرير`,navTypeUrl:`رابط`,navTypeGroup:`مجموعة`,navTypeSeparator:`فاصل`,navTypeAction:`إجراء`,navEditIcon:`تعديل الأيقونة`,navToggleVisible:`تبديل الرؤية`,navHidden:`مخفي`,navExportSchema:`تصدير JSON`,navImportSchema:`استيراد JSON`,navExportSuccess:`تم تصدير مخطط التنقل`,navImportSuccess:`تم استيراد مخطط التنقل`,navImportError:`JSON تنقل غير صالح`,navIconPlaceholder:`اسم الأيقونة (مثل Users)`,dashboardEditor:`محرر لوحة التحكم`,noWidgets:`لا عناصر واجهة. انقر فوق زر أعلاه لإضافة واحد.`,widgetLayoutSize:`حجم التخطيط`,widgetWidth:`العرض`,widgetHeight:`الارتفاع`,dashboardPreview:`معاينة لوحة التحكم`,noWidgetsPreview:`لا عناصر واجهة للمعاينة`,pageCanvasEditor:`محرر قماش الصفحة`,emptyPage:`صفحة فارغة. انقر فوق زر أعلاه لإضافة مكون.`,pagePreview:`معاينة الصفحة`,noComponentsPreview:`لا مكونات للمعاينة`,modePage:`صفحة`,modeDashboard:`لوحة تحكم`,undo:`تراجع`,redo:`إعادة`,brandingEditor:`محرر العلامة التجارية`,brandingExport:`تصدير JSON`,brandingImport:`استيراد JSON`,brandingPreview:`معاينة`,brandingSampleButton:`زر نموذجي`,brandingSampleText:`هكذا سيبدو سمة علامتك التجارية.`,colorPalette:`لوحة الألوان`,fontFamily:`عائلة الخطوط`,fontDefault:`افتراضي (النظام)`,modeLight:`فاتح`,modeDark:`داكن`,mobilePreview:`معاينة الجوال`,objectManager:{title:`مدير الكائنات`,addObject:`كائن جديد`,searchPlaceholder:`البحث في الكائنات…`,noObjects:`لم يتم العثور على كائنات.`,objectName:`اسم API`,objectLabel:`التسمية`,pluralLabel:`التسمية الجمعية`,icon:`أيقونة`,selectIcon:`اختر أيقونة…`,group:`مجموعة`,noGroup:`بلا مجموعة`,sortOrder:`ترتيب الفرز`,enabled:`مفعل`,relationships:`العلاقات`,systemBadge:`النظام`,fieldCount:`{{count}} حقل(حقول)`,ungrouped:`غير مجمع`,deleteConfirmTitle:`حذف الكائن؟`,deleteConfirmMessage:`سيؤدي هذا إلى حذف الكائن وجميع حقوله بشكل دائم. لا يمكن التراجع عن هذا الإجراء.`},fieldDesigner:{title:`مصمم الحقول`,addField:`حقل جديد`,searchPlaceholder:`البحث في الحقول…`,allTypes:`جميع الأنواع`,noFields:`لم يتم العثور على حقول.`,fieldName:`اسم API`,fieldLabel:`التسمية`,fieldType:`النوع`,fieldGroup:`المجموعة`,description:`الوصف`,required:`مطلوب`,unique:`فريد`,readOnly:`للقراءة فقط`,hidden:`مخفي`,indexed:`مفهرس`,externalId:`معرف خارجي`,trackHistory:`تتبع السجل`,defaultValue:`القيمة الافتراضية`,placeholder:`نص تلميحي`,referenceTo:`مرجع إلى`,formula:`صيغة`,options:`خيارات`,addOption:`إضافة خيار`,validationRules:`قواعد التحقق`,addRule:`إضافة قاعدة`,systemBadge:`النظام`,ungrouped:`عام`,deleteConfirmTitle:`حذف الحقل؟`,deleteConfirmMessage:`سيتم حذف الحقل بشكل دائم. ستُفقد البيانات الموجودة في هذا الحقل.`,basicSection:`أساسي`,typeSpecificSection:`إعدادات النوع`,advancedSection:`متقدم`,typeCategory:{text:`نص`,number:`رقم`,date:`التاريخ والوقت`,choice:`اختيار`,relation:`علاقة`,advanced:`متقدم`}}},console:{title:`وحدة تحكم ObjectStack`,initializing:`جاري تهيئة التطبيق...`,breadcrumb:{dashboards:`لوحات المعلومات`,pages:`الصفحات`,reports:`التقارير`,system:`النظام`},loadingSteps:{connecting:`جاري الاتصال بمصدر البيانات`,loadingConfig:`جاري تحميل الإعدادات`,preparingWorkspace:`جاري تجهيز مساحة العمل`},error:{connectionFailed:`تعذّر الاتصال بالخادم`,serverUnreachable:`الخادم {{url}} غير قابل للوصول.`,checkServer:`يرجى التحقق من اتصال الشبكة أو من تشغيل الواجهة الخلفية.`,timeout:`انتهت مهلة الاتصال بعد 10 ثوانٍ.`},actions:{retry:`إعادة المحاولة`,retrying:`جاري إعادة المحاولة…`},shortcuts:{title:`اختصارات لوحة المفاتيح`,description:`مرجع سريع لجميع اختصارات لوحة المفاتيح المتاحة.`,groups:{general:`عام`,navigation:`التنقل`,dataViews:`عروض البيانات`,preferences:`التفضيلات`},openCommandPalette:`فتح لوحة الأوامر`,showShortcuts:`عرض اختصارات لوحة المفاتيح`,closeDialog:`إغلاق النافذة / اللوحة`,toggleSidebar:`تبديل الشريط الجانبي`,focusSearch:`التركيز على البحث`,createRecord:`إنشاء سجل جديد`,refreshData:`تحديث البيانات`,editRecord:`تعديل السجل المحدد`,toggleDarkMode:`تبديل الوضع الداكن`},commandPalette:{placeholder:`اكتب أمراً أو ابحث...`,noResults:`لم يتم العثور على نتائج.`,objects:`الكائنات`,dashboards:`لوحات المعلومات`,pages:`الصفحات`,reports:`التقارير`,switchApp:`تبديل التطبيق`,current:`الحالي`,preferences:`التفضيلات`,lightTheme:`المظهر الفاتح`,darkTheme:`المظهر الداكن`,systemTheme:`مظهر النظام`,actions:`الإجراءات`,openFullSearch:`فتح صفحة البحث الكاملة`,createApp:`إنشاء تطبيق جديد`,searching:`جارٍ البحث…`,records:`السجلات`,recentRecords:`شوهد مؤخراً`},errors:{somethingWentWrong:`حدث خطأ ما`,unexpectedError:`حدث خطأ غير متوقع أثناء عرض هذا المحتوى.`,tryAgain:`إعادة المحاولة`,goHome:`العودة للرئيسية`,errorDetails:`تفاصيل الخطأ (وضع التطوير فقط)`},theme:{toggle:`تبديل المظهر`,light:`فاتح`,dark:`داكن`,system:`النظام`},objectView:{objectNotFound:`الكائن غير موجود`,objectNotFoundDescription:`الكائن "{{objectName}}" غير موجود في الإعدادات الحالية.`,objectNotFoundHint:`تحقق من إعدادات التنقل في تطبيقك أو اختر كائنًا آخر من الشريط الجانبي.`,allRecords:`جميع السجلات`,exitDesignMode:`الخروج من وضع التصميم`,enterDesignMode:`الدخول إلى وضع التصميم`,metadataInspector:`مفتش البيانات الوصفية`,editView:`تعديل العرض`,addView:`إضافة عرض`,designTools:`أدوات التصميم`,new:`جديد`,configureView:`تكوين العرض`,closePanel:`إغلاق اللوحة`,page:`الصفحة`,pageConfigHint:`شريط الأدوات والتنقل وإعدادات غلاف العرض`,listConfigHint:`عرض البيانات والأعمدة والمظهر لهذا النوع من القائمة`,general:`عام`,generalHint:`عنوان العرض والوصف والنوع`,toolbar:`شريط الأدوات`,toolbarHint:`البحث والتصفية والفرز والتجميع ومفاتيح الكثافة`,toolbarEnabledCount:`{{count}} من {{total}} مفعّل`,navigationSection:`التنقل`,navigationHint:`سلوك النقر على الصف وإعدادات العرض التفصيلي`,records:`السجلات`,recordsHint:`وضع التحديد وإضافة سجل والتحرير المباشر`,exportPrint:`التصدير والطباعة`,exportPrintHint:`صيغ التصدير والطباعة وعرض عدد السجلات`,showAllFields:`إظهار الكل`,hideAllFields:`إخفاء الكل`,searchFields:`البحث في الحقول...`,title:`العنوان`,description:`الوصف`,data:`البيانات`,source:`المصدر`,columns:`الأعمدة`,filterBy:`تصفية حسب`,sortBy:`ترتيب حسب`,appearance:`المظهر`,showDescription:`عرض الوصف`,viewType:`نوع العرض`,userFilters:`مرشحات المستخدم`,enableSearch:`تفعيل البحث`,enableFilter:`تفعيل التصفية`,enableSort:`تفعيل الترتيب`,enableHideFields:`تفعيل إخفاء الحقول`,enableGroup:`تفعيل التجميع`,enableColor:`تفعيل اللون`,enableDensity:`تفعيل الكثافة`,userActions:`إجراءات المستخدم`,addRecordViaForm:`إضافة سجلات عبر النموذج`,advanced:`متقدم`,allowExport:`السماح بالتصدير`,recordCount:`{{count}} سجل`,noDescription:`لا يوجد وصف`,none:`لا شيء`,columnsConfigured:`{{count}} أعمدة`,save:`حفظ`,discard:`تجاهل`,createView:`إنشاء عرض`,newView:`عرض جديد`,typeOptions:`خيارات النوع`,groupByField:`حقل التجميع`,startDateField:`حقل تاريخ البدء`,titleField:`حقل العنوان`,latitudeField:`حقل خط العرض`,longitudeField:`حقل خط الطول`,imageField:`حقل الصورة`,dateField:`حقل التاريخ`,selectField:`اختر حقلاً...`,gridOptionsHint:`يستخدم عرض الشبكة الأعمدة المكونة أعلاه.`,groupBy:`تجميع حسب`,prefixField:`حقل البادئة`,fields:`الحقول`,fieldsVisible:`{{count}} مرئي`,sortsCount:`{{count}} ترتيبات`,filtersCount:`{{count}} مرشحات`,endDateField:`حقل تاريخ الانتهاء`,color:`اللون`,fieldTextColor:`لون نص الحقل`,rowHeight:`ارتفاع الصف`,wrapHeaders:`التفاف العناوين`,showFieldDescriptions:`إظهار أوصاف الحقول`,collapseAllByDefault:`طي الكل افتراضياً`,striped:`صفوف مخططة`,bordered:`خلايا محاطة بحدود`,inlineEdit:`تحرير السجلات مباشرة`,addDeleteRecordsInline:`إضافة/حذف السجلات مباشرة`,clickIntoRecordDetails:`انقر لعرض تفاصيل السجل`,navigationMode:`وضع التنقل`,navigationWidth:`عرض التنقل`,navigationWidthHint:`متاح لأوضاع التنقل: الدرج والنافذة المنبثقة والعرض المقسم`,openNewTab:`فتح في علامة تبويب جديدة`,openNewTabHint:`متاح لأوضاع التنقل: الصفحة والنافذة الجديدة`,import:`استيراد`,importTitle:`استيراد من CSV`,importedToast:`تم استيراد {{count}} صف(صفوف).`,importedWithSkipped:`تم استيراد {{ok}} صف(صفوف)؛ تم تخطي {{skipped}}.`,showAdvancedSettings:`إظهار الإعدادات المتقدمة`,showFewerSettings:`إظهار إعدادات أقل`,createViewDesc:`اختر نوع العرض وأعطه اسماً. يمكن تغيير جميع الإعدادات لاحقاً.`,cancel:`إلغاء`,create:`إنشاء`,delete:`حذف`,deleteViewTitle:`حذف العرض`,deleteViewConfirm:`حذف العرض "{{name}}"؟ لا يمكن التراجع عن ذلك.`,bulkDeleteConfirm:`حذف {{count}} سجل(ات) محدد(ة)؟ لا يمكن التراجع عن ذلك.`,duplicateViewName:`يوجد عرض بهذا الاسم بالفعل.`,viewTypeGrid:`شبكة`,viewTypeGridDesc:`جدول سجلات بأسلوب جدول البيانات.`,viewTypeKanban:`كانبان`,viewTypeKanbanDesc:`بطاقات مجمعة في أعمدة بحقل تحديد واحد.`,viewTypeCalendar:`تقويم`,viewTypeCalendarDesc:`سجلات موضوعة حسب التاريخ في تقويم شهري.`,viewTypeGallery:`معرض`,viewTypeGalleryDesc:`بطاقات صور كبيرة من حقل المرفقات.`,viewTypeTimeline:`الجدول الزمني`,viewTypeTimelineDesc:`سجلات على محور زمني أفقي.`,viewTypeGantt:`غانت`,viewTypeGanttDesc:`أشرطة مشروع مع البداية/النهاية والتبعيات.`,viewTypeMap:`خريطة`,viewTypeMapDesc:`علامات جغرافية من حقول خط العرض/الطول.`,viewTypeChart:`مخطط`,viewTypeChartDesc:`مخططات شريطية/خطية/دائرية مجمعة.`,groupByFieldHelp:`تُجمّع لوحة كانبان السجلات في أعمدة حسب قيم الحقل.`,startDateFieldHelp:`يضع التقويم السجلات في الخلية المقابلة لهذا التاريخ.`,ganttStartDateFieldHelp:`يستخدم الحد الأيسر لكل شريط غانت هذا التاريخ.`,ganttEndDateFieldHelp:`يستخدم الحد الأيمن لكل شريط غانت هذا التاريخ.`,timelineDateFieldHelp:`تُوضع السجلات على الجدول الزمني بناءً على هذا التاريخ.`,latitudeFieldHelp:`حقل يحتوي على خط العرض (حقول جغرافية فقط).`,longitudeFieldHelp:`حقل يحتوي على خط الطول (حقول جغرافية فقط).`,imageFieldHelp:`تأتي غلاف المعرض من هذا الحقل للصورة أو المرفق.`,selectOption:`تحديد...`,noEligibleFieldForType:`لا يوجد حقل مؤهل من هذا النوع. أضف حقلاً إلى الكائن أولاً.`,viewTypeUnavailable:`لا يحتوي هذا الكائن على حقل يمكن أن يعمل كـ "{{field}}".`,viewTypeUnavailableShort:`غير مدعوم من هذا الكائن.`,chartType:`نوع المخطط`,chartTypeHelp:`يحدد كيفية عرض البيانات.`,chartTypeBar:`مخطط شريطي`,chartTypeLine:`مخطط خطي`,chartTypePie:`مخطط دائري`,chartTypeArea:`مخطط مساحة`,chartTypeScatter:`مخطط نقطي`,xAxisField:`حقل المحور X`,xAxisFieldHelp:`البُعد الفئوي أو الزمني.`,yAxisField:`حقل المحور Y`,yAxisFieldHelp:`الحقل الرقمي للتجميع.`,selectionMode:`وضع التحديد`,selectionNone:`لا شيء`,selectionSingle:`فردي`,selectionMultiple:`متعدد`,pageSize:`حجم الصفحة`,pageSizeOptions:`خيارات حجم الصفحة`,exportFormats:`تنسيقات التصدير`,exportMaxRecords:`الحد الأقصى للسجلات`,exportIncludeHeaders:`تضمين الرؤوس`,exportFileNamePrefix:`بادئة اسم الملف`,searchableFields:`الحقول القابلة للبحث`,filterableFields:`الحقول القابلة للتصفية`,resizableColumns:`أعمدة قابلة لتغيير الحجم`,densityCompact:`مضغوط`,densityComfortable:`عادي`,densitySpacious:`فسيح`,densityMode:`وضع الكثافة`,hiddenFields:`الحقول المخفية`,rowActions:`إجراءات الصف`,bulkActions:`إجراءات جماعية`,sharing:`مشاركة`,sharingEnabled:`المشاركة مفعلة`,sharingVisibility:`الرؤية`,addRecordEnabled:`إضافة سجل مفعلة`,addRecordPosition:`الموضع`,addRecordMode:`الوضع`,addRecordFormView:`عرض النموذج`,conditionalFormatting:`التنسيق الشرطي`,addRule:`إضافة قاعدة`,quickFilters:`فلاتر سريعة`,addQuickFilter:`إضافة فلتر سريع`,ufElements:`العناصر`,ufDropdown:`قائمة منسدلة`,ufTabs:`علامات تبويب`,ufToggle:`تبديل`,ufAddField:`+ إضافة حقل فلتر...`,ufNoFields:`لا حقول متاحة`,ufAddTab:`+ إضافة علامة تبويب`,ufTabLabel:`التسمية`,ufShowAllRecords:`إظهار علامة "جميع السجلات"`,ufAllowAddTab:`السماح بإضافة علامات تبويب`,showRecordCount:`إظهار عدد السجلات`,allowPrinting:`السماح بالطباعة`,virtualScroll:`التمرير الافتراضي`,emptyStateTitle:`عنوان الحالة الفارغة`,emptyStateMessage:`رسالة الحالة الفارغة`,emptyStateIcon:`رمز الحالة الفارغة`,ariaLabel:`تسمية ARIA`,ariaDescribedBy:`موصوف بـ ARIA`,ariaLive:`ARIA Live`,accessibility:`إمكانية الوصول`,viewTabs:`علامات تبويب العرض`},localeSwitcher:{label:`اللغة`},search:`بحث…`,nav:{pinItem:`تثبيت {{name}}`,unpinItem:`إلغاء تثبيت {{name}}`,dragToReorder:`اسحب لإعادة الترتيب`,favorites:`المفضلة`}},auth:{login:{title:`تسجيل الدخول إلى حسابك`,description:`أدخل بريدك الإلكتروني وكلمة المرور للمتابعة`,emailLabel:`البريد الإلكتروني`,emailPlaceholder:`name@example.com`,passwordLabel:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,forgotPasswordText:`نسيت كلمة المرور؟`,submitButton:`تسجيل الدخول`,submittingButton:`جارٍ تسجيل الدخول...`,noAccountText:`ليس لديك حساب؟`,signUpText:`إنشاء حساب`,errors:{invalidCredentials:`بريد إلكتروني أو كلمة مرور غير صحيحة. يرجى المحاولة مرة أخرى.`,emailNotVerified:`يرجى التحقق من بريدك الإلكتروني قبل تسجيل الدخول.`}},register:{title:`إنشاء حساب`,description:`أدخل معلوماتك للبدء`,nameLabel:`الاسم`,namePlaceholder:`محمد أحمد`,emailLabel:`البريد الإلكتروني`,emailPlaceholder:`name@example.com`,passwordLabel:`كلمة المرور`,passwordPlaceholder:`إنشاء كلمة مرور (8 أحرف على الأقل)`,confirmPasswordLabel:`تأكيد كلمة المرور`,confirmPasswordPlaceholder:`أكّد كلمة المرور`,passwordMismatchError:`كلمتا المرور غير متطابقتين`,passwordTooShortError:`يجب أن تتكون كلمة المرور من 8 أحرف على الأقل`,submitButton:`إنشاء حساب`,submittingButton:`جارٍ إنشاء الحساب...`,hasAccountText:`لديك حساب بالفعل؟`,signInText:`تسجيل الدخول`,errors:{userExists:`يوجد حساب بهذا البريد الإلكتروني بالفعل. حاول تسجيل الدخول.`},verifyInbox:{title:`تحقق من صندوق الوارد`,description:`أرسلنا رابط التحقق إلى {{email}}. انقر على الرابط لتفعيل حسابك.`,resend:`إعادة إرسال بريد التحقق`,resending:`جارٍ الإرسال…`,resent:`تم إرسال بريد التحقق.`,backToSignIn:`العودة إلى تسجيل الدخول`}},forgotPassword:{title:`إعادة تعيين كلمة المرور`,description:`أدخل عنوان بريدك الإلكتروني وسنرسل لك رابطًا لإعادة تعيين كلمة المرور`,emailLabel:`البريد الإلكتروني`,emailPlaceholder:`name@example.com`,submitButton:`إرسال رابط إعادة التعيين`,submittingButton:`جارٍ الإرسال...`,successTitle:`تحقق من بريدك الإلكتروني`,successDescription:`لقد أرسلنا رابط إعادة تعيين كلمة المرور إلى {{email}}. يرجى التحقق من بريدك الوارد.`,backToSignInText:`العودة إلى تسجيل الدخول`,rememberPasswordText:`تتذكر كلمة المرور؟`,signInText:`تسجيل الدخول`},resetPassword:{title:`تعيين كلمة مرور جديدة`,description:`اختر كلمة مرور لم تستخدمها من قبل.`,newPassword:`كلمة المرور الجديدة`,confirmPassword:`تأكيد كلمة المرور`,submit:`تحديث كلمة المرور`,submitting:`جارٍ التحديث…`,success:`تم تحديث كلمة المرور`,failed:`فشل إعادة التعيين`,invalidToken:`رابط إعادة التعيين هذا غير صالح أو منتهي الصلاحية.`,missingToken:`رابط إعادة التعيين مفقود أو منتهي الصلاحية`,passwordsMismatch:`كلمتا المرور غير متطابقتين`,requestNewLink:`طلب رابط جديد`},verifyEmail:{title:`التحقق من عنوان البريد الإلكتروني`,description:`أرسلنا رابط التحقق إلى بريدك الإلكتروني. انقر على الرابط للتحقق من حسابك.`,sentTo:`أُرسل إلى:`,verifyingTitle:`جارٍ التحقق…`,verifyingDescription:`نقوم بالتحقق من بريدك الإلكتروني. يرجى الانتظار.`,successTitle:`تم التحقق من البريد الإلكتروني`,successDescription:`تم التحقق من بريدك الإلكتروني. يمكنك الآن تسجيل الدخول.`,errorTitle:`فشل التحقق`,errorDescription:`فشل التحقق. يرجى طلب رابط جديد.`,missingToken:`رابط التحقق لا يحتوي على رمز.`,emailMissing:`عنوان البريد الإلكتروني مفقود`,resendButton:`إعادة إرسال بريد التحقق`,resending:`جارٍ الإرسال…`,resent:`تم إرسال البريد! تحقق من صندوق الوارد`,resentSuccess:`تم إرسال بريد التحقق!`,resentDescription:`يرجى التحقق من صندوق الوارد والنقر على رابط التحقق.`,resendFailed:`تعذر إعادة إرسال بريد التحقق`,signInLink:`الانتقال إلى تسجيل الدخول`,backToSignIn:`العودة إلى تسجيل الدخول`,backToLogin:`العودة إلى تسجيل الدخول`,checkSpam:`لم تستلم البريد؟ تحقق من مجلد البريد غير المرغوب أو تواصل مع الدعم.`,or:`أو`},setup:{welcomeTitle:`مرحباً بك في ObjectStack`,description:`أنشئ أول حساب مالك لإتمام الإعداد.`,yourName:`اسمك`,orgName:`اسم المنظمة`,orgNamePlaceholder:`شركة مثال`,emailLabel:`البريد الإلكتروني`,emailPlaceholder:`name@example.com`,passwordLabel:`كلمة المرور`,passwordHint:`8 أحرف على الأقل`,submit:`إنشاء حساب المالك`,submitting:`جارٍ الإعداد…`,failed:`فشل الإعداد`},device:{title:`تفويض جهاز جديد`,subtitle:`وافق على هذا الجهاز لتسجيل الدخول بوصفك {{email}}.`,userCodeLabel:`رمز الجهاز`,loggedInAs:`مسجل الدخول بوصفك {{email}}`,approve:`الموافقة على الجهاز`,approving:`جارٍ الموافقة…`,approvedTitle:`تم تفويض الجهاز`,approvedDescription:`يمكنك العودة إلى الجهاز — يجب أن يسجل الدخول قريباً.`,approveSuccess:`تم تفويض الجهاز`,approveSuccessDescription:`يمكنك إغلاق هذه النافذة.`,approveFailed:`فشلت الموافقة`,deny:`رفض الطلب`,denying:`جارٍ الرفض…`,deniedTitle:`تم رفض الوصول`,deniedDescription:`لن يُمنح الجهاز وصولاً.`,denyFailed:`تعذر رفض الطلب`,invalidTitle:`رابط جهاز غير صالح`,invalidDescription:`لم يتم تقديم رمز جهاز في URL.`,loading:`جارٍ التحميل…`,cancel:`إلغاء`},shell:{tenantHostHint:`تسجل الدخول إلى مساحة العمل هذه`}},errors:{networkError:`خطأ في الشبكة. يرجى التحقق من اتصالك.`,serverError:`خطأ في الخادم. يرجى المحاولة مرة أخرى لاحقاً.`,notFound:`المورد غير موجود.`,unauthorized:`ليس لديك صلاحية لتنفيذ هذا الإجراء.`,forbidden:`تم رفض الوصول.`,timeout:`انتهت مهلة الطلب. يرجى المحاولة مرة أخرى.`,unknown:`حدث خطأ غير متوقع.`},workspace:{label:`مساحات العمل`,default:`مساحة العمل الخاصة بي`,switch:`تبديل مساحة العمل`,create:`إنشاء مساحة عمل`,createTitle:`إنشاء مساحة عمل`,createDescription:`مساحة العمل هي مساحة مشتركة لفريقك للتعاون.`,createButton:`إنشاء مساحة عمل`,nameLabel:`اسم مساحة العمل`,namePlaceholder:`مثلاً، Acme Inc`,slugLabel:`معرف URL`,slugHint:`يستخدم في عناوين URL. أحرف صغيرة وأرقام وشرطات فقط.`,invite:`دعوة عضو`,members:`الأعضاء`,settings:`إعدادات مساحة العمل`},sidebar:{settings:`الإعدادات`,help:`المساعدة`,helpTooltip:`المساعدة والوثائق`,activityFeed:`موجز النشاط`,notifications:`الإشعارات`,approvals:`الموافقات`,inbox:`صندوق الوارد`,inboxAriaLabel:`فتح صندوق الوارد`,area:`المنطقة`,recent:`الأخيرة`,favorites:`المفضلة`,starred:`المميزة`,removeFromFavorites:`إزالة {{name}} من المفضلة`},home:{title:`الرئيسية`,subtitle:`لوحة تحكم مساحة العمل`,nav:`الرئيسية`,allApps:`جميع التطبيقات`,loading:`جارٍ تحميل مساحة العمل...`,recent:`الأخيرة`,starred:`المميزة بنجمة`,welcome:`مرحباً بك في ObjectUI`,welcomeDescription:`ابدأ بإنشاء تطبيقك الأول أو تكوين إعدادات النظام.`,createFirstApp:`أنشئ أول تطبيق لك`,systemSettings:`إعدادات النظام`,browseMarketplace:`تصفح متجر التطبيقات`,quickActions:{title:`إجراءات سريعة`,createApp:`إنشاء تطبيق`,createAppDesc:`ابدأ بتطبيق جديد`,manageObjects:`إدارة الكائنات`,manageObjectsDesc:`تكوين نماذج البيانات`,systemSettings:`إعدادات النظام`,systemSettingsDesc:`تكوين مساحة العمل الخاصة بك`},appCard:{noDescription:`لا يوجد وصف`,default:`افتراضي`},greetingMorning:`صباح الخير`,greetingAfternoon:`مساء الخير`,greetingEvening:`مساء النور`,greetingNight:`وردية الليل`,heroTagline:`استمر من حيث توقفت أو اكتشف شيئاً جديداً.`,open:`فتح`,stats:{apps:`التطبيقات`,starred:`المميزة`,recent:`الأخيرة`},recentApps:{title:`فُتح مؤخراً`,itemType:{object:`كائن`,dashboard:`لوحة تحكم`,page:`صفحة`,record:`سجل`}},starredApps:{title:`المميزة`},gettingStarted:{title:`تخصيص الصفحة الرئيسية`,description:`ضع علامة مميزة على تطبيق لتثبيته هنا والوصول إليه بنقرة واحدة. سيظهر كل ما تفتحه تلقائياً في "فُتح مؤخراً".`,cta:`استعراض جميع التطبيقات`}},layout:{appSwitcher:{home:`الرئيسية`,addApp:`إضافة تطبيق`,editApp:`تعديل التطبيق`,manageAllApps:`إدارة جميع التطبيقات`,systemConsole:`وحدة تحكم النظام`,noAppsConfigured:`لا تطبيقات مُهيأة`},activityFeed:{title:`النشاط الأخير`,filter:`تصفية`,empty:`لا نشاط أخير`,ariaLabel:`تغذية النشاط`,typeCreate:`إنشاء`,typeUpdate:`تحديث`,typeDelete:`حذف`,typeComment:`تعليق`,relativeJustNow:`الآن`,relativeSecondsAgo:`منذ {{count}} ث`,relativeMinutesAgo:`منذ {{count}} د`,relativeHoursAgo:`منذ {{count}} س`,relativeDaysAgo:`منذ {{count}} ي`,viewAll:`عرض كل النشاط`},metadata:{label:`البيانات الوصفية`,toggleTitle:`تبديل مفتش البيانات الوصفية`,panelTitle:`مفتش البيانات الوصفية`,jsonBadge:`JSON`,copyJson:`نسخ JSON`}},search:{title:`بحث`,back:`رجوع`,placeholder:`ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير...`,inputAriaLabel:`ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير`,resultsCount:`{{count}} نتيجة لـ "{{query}}"`,resultsCountPlural:`{{count}} نتيجة لـ "{{query}}"`,itemsAvailable:`{{count}} عنصر(عناصر) متاح(ة)`,noResults:`لم يتم العثور على نتائج`,noResultsHint:`جرب تعديل مصطلحات البحث`,typeObjects:`الكائنات`,typeDashboards:`لوحات التحكم`,typePages:`الصفحات`,typeReports:`التقارير`,badgeObject:`كائن`,badgeDashboard:`لوحة تحكم`,badgePage:`صفحة`,badgeReport:`تقرير`},empty:{objectNotFound:`الكائن غير موجود`,objectNotFoundDescription:`تعريف الكائن "{{name}}" مفقود. تحقق من الإعداد أو ارجع للخلف.`,pageNotFound:`الصفحة غير موجودة`,pageNotFoundDescription:`الصفحة "{{name}}" غير موجودة. ربما تم إزالتها أو إعادة تسميتها.`,dashboardNotFound:`لوحة التحكم غير موجودة`,dashboardNotFoundDescription:`لوحة التحكم "{{name}}" غير موجودة. ربما تم إزالتها أو إعادة تسميتها.`,reportNotFound:`التقرير غير موجود`,reportNotFoundDescription:`التقرير "{{name}}" غير موجود. ربما تم إزالته أو إعادة تسميته.`,noAppsConfigured:`لا تطبيقات مُهيأة`,noAppsConfiguredDescription:`لا تطبيقات مسجلة. أنشئ تطبيقك الأول أو زر إعدادات النظام.`,createFirstApp:`إنشاء أول تطبيق`,systemSettings:`إعدادات النظام`,back:`رجوع`,recordNotFound:`السجل غير موجود`,recordNotFoundDescription:`السجل الذي تبحث عنه غير موجود أو ربما تم حذفه.`},renderer:{noPageSchema:`لم يتم توفير مخطط الصفحة`,noFormSchema:`لم يتم توفير مخطط النموذج`,noDashboardSchema:`لم يتم توفير مخطط لوحة التحكم`,pageRendering:`تصيير الصفحة: {{name}}`,dashboardRendering:`تصيير لوحة التحكم: {{name}}`,formRenderingMode:`تصيير النموذج في وضع {{mode}}`,formRenderingFor:`للسجل {{id}}`,createRecord:`إنشاء سجل`,editRecord:`تعديل السجل`,page:`صفحة`,dashboard:`لوحة تحكم`,save:`حفظ`,cancel:`إلغاء`},actionDialog:{title:`معامِلات الإجراء`,description:`يرجى إدخال المعلومات المطلوبة للمتابعة.`,selectPlaceholder:`تحديد {{label}}`,requiredError:`{{label}} مطلوب`,cancel:`إلغاء`,confirm:`تأكيد`,defaultActionTitle:`إجراء`,ok:`موافق`,lookupPlaceholder:`لصق معرف السجل (UUID) لـ {{label}}`,lookupHelpText:`أدخل معرف سجل الكائن المرجع. سيتم إضافة أداة اختيار قريباً.`},rowAction:{openMenu:`فتح القائمة`,edit:`تعديل`,delete:`حذف`},navigationSync:{addedPage:`تم تحديث التنقل: تمت إضافة الصفحة "{{name}}"`,addedDashboard:`تم تحديث التنقل: تمت إضافة لوحة التحكم "{{name}}"`,removedPage:`تم تحديث التنقل: تمت إزالة الصفحة "{{name}}"`,removedDashboard:`تم تحديث التنقل: تمت إزالة لوحة التحكم "{{name}}"`,renamedPage:`تم تحديث التنقل: تمت إعادة تسمية الصفحة "{{oldName}}" إلى "{{newName}}"`,renamedDashboard:`تم تحديث التنقل: تمت إعادة تسمية لوحة التحكم "{{oldName}}" إلى "{{newName}}"`,undoLabel:`تراجع`,undone:`تم التراجع عن تغيير التنقل`,undoFailed:`تعذر التراجع عن تغيير التنقل`,updateFailed:`تعذر تحديث التنقل`},objectActions:{deleteSuccess:`تم حذف {{label}} بنجاح`,deleteFailed:`تعذر حذف {{label}}`,noRecordId:`لم يتم توفير معرف سجل`,deleteConfirm:`حذف هذا السجل؟`,bulkDeleteSuccess:`تم حذف {{count}} سجل(ات) {{label}}`,bulkDeletePartial:`تم حذف {{succeeded}}، فشل {{failed}}`},objectViewActions:{renameFailed:`تعذر إعادة تسمية العرض`,deleteFailed:`تعذر حذف العرض`},dashboardActions:{pdfPreparing:`جارٍ تحضير تصدير PDF…`,exportFailed:`فشل التصدير: {{message}}`,forecastSoon:`عرض التوقعات قادم قريباً`},recordDetail:{viewersTooltip:`المستخدمون يشاهدون هذا السجل الآن`},cellRender:{empty:`فارغ`,yes:`نعم`,no:`لا`,systemFields:`النظام`},user:{profile:`الملف الشخصي`,settings:`الإعدادات`,logout:`تسجيل الخروج`,preferences:`التفضيلات`,theme:`السمة`,language:`اللغة`},report:{rowTotal:`إجمالي الصف`,columnTotal:`إجمالي العمود`,grandTotal:`الإجمالي الكلي`,totals:`الإجماليات`,rowsLabel:`صف`,columnsLabel:`عمود`,allLabel:`(الكل)`,emptyLabel:`(فارغ)`,loading:`جارٍ التحميل…`,failedToLoad:`فشل تحميل المصفوفة: {{message}}`,needsAcross:"يتطلب تقرير المصفوفة حقل `groupingsAcross` واحداً على الأقل.",aggregate:{count:`عدد`,countDistinct:`عدد الفريد`,sum:`مجموع`,avg:`متوسط`,min:`الحد الأدنى`,max:`الحد الأقصى`,first:`الأول`},editor:{breadcrumb:`الإعدادات`,basic:`أساسي`,title:`العنوان`,titlePlaceholder:`مثال: المسار حسب الربع`,description:`الوصف`,descriptionPlaceholder:`ماذا يعرض هذا التقرير؟`,type:`نوع التقرير`,typeTabular:`جدولي — قائمة مسطّحة`,typeSummary:`ملخص — مجمّع مع المجاميع`,typeMatrix:`مصفوفة — محور صفوف × أعمدة`,typeJoined:`مدمج — كتل متعددة`,typeHelp:`اختر التخطيط الذي يطابق ما تريد رؤيته.`,data:`البيانات`,objectName:`مصدر البيانات`,objectNamePlaceholder:`مثال: opportunity`,objectNameHelp:`أي كائن يجب أن يستعلم عنه هذا التقرير؟`,limit:`حد عدد الصفوف`,limitPlaceholder:`مثال: 100`,columns:`الأعمدة`,columnsHint:`اختر الحقول التي ستظهر كأعمدة. أضف تجميعًا (مجموع، عدد…) في تقارير الملخص أو المصفوفة.`,filters:`عوامل التصفية`,filtersHint:`قيّد الصفوف التي تدخل في هذا التقرير.`,filtersComplex:`يستخدم هذا التقرير عامل تصفية متقدّمًا لا يمكن تحريره هنا. سيُحتفظ به كما هو عند الحفظ.`,groupBy:`التجميع حسب`,groupByHint:`جمّع البيانات واحسب المجاميع الفرعية.`,rows:`الصفوف`,rowsHint:`جمّع الصفوف حسب هذه الحقول.`,columnsAxis:`الأعمدة`,columnsAxisHint:`اعرض هذه الحقول كمحور في الأعلى.`,values:`القيم`,valuesHint:`الأرقام التي تظهر في كل خلية. اختر حقلاً واحدًا أو أكثر وأضف تجميعًا (مجموع، عدد…).`,grouping:`تجميع`,addGrouping:`إضافة تجميع`,dateGranularity:`دقة التاريخ`,dateGranularityNone:`(استخدام القيمة الأصلية)`,day:`يوم`,week:`أسبوع`,month:`شهر`,quarter:`ربع`,year:`سنة`,sortAsc:`تصاعدي`,sortDesc:`تنازلي`,chart:`الرسم البياني`,chartHint:`عرض مرئي اختياري بجانب الجدول.`,chartType:`نوع الرسم`,chartTitle:`عنوان الرسم`,chartTitlePlaceholder:`افتراضيًا يستخدم عنوان التقرير`,chartXAxis:`المحور السيني (الفئة)`,chartYAxis:`المحور الصادي (القيمة)`,chartShowLegend:`إظهار وسيلة الإيضاح`,chartShowDataLabels:`إظهار تسميات البيانات`,chartNone:`(بدون رسم)`,chartBar:`أعمدة`,chartLine:`خطي`,chartArea:`منطقة`,chartPie:`دائري`,chartDonut:`حلقي`,chartFunnel:`قمعي`,validationNeedsObject:`اختر مصدر بيانات قبل إضافة الأعمدة.`,validationMatrixNeedsRowsCols:`تتطلب تقارير المصفوفة صفًا وعمودًا واحدًا على الأقل.`,validationSummaryNeedsRows:`تتطلب تقارير الملخص حقل تجميع واحدًا على الأقل.`,blocks:`الكتل`,blocksHint:`كل كتلة هي جدولها أو رسمها البياني الخاص. عوامل تصفية الكتلة تُدمج مع عامل تصفية التقرير بمنطق AND.`,addBlock:`إضافة كتلة`,removeBlock:`إزالة الكتلة`,blockName:`اسم الكتلة`,blockNamePlaceholder:`اسم_فريد_للكتلة`,blockLabel:`التسمية المعروضة`,blockLabelPlaceholder:`تُعرض فوق الكتلة`,blockDescription:`الوصف`,blockDescriptionPlaceholder:`سياق اختياري لهذه الكتلة`,validationJoinedNeedsBlocks:`تتطلب التقارير المدمجة كتلة واحدة على الأقل.`,validationBlockNameRequired:`يجب أن يكون لكل كتلة اسم غير فارغ.`,validationBlockNameDuplicate:`يجب أن تكون أسماء الكتل فريدة داخل التقرير.`,validationBlockNeedsColumns:`تحتاج كل كتلة إلى عمود واحد على الأقل.`,noneOption:`(بلا)`,addCondition:`إضافة شرط`,combineLogic:`الدمج مع`,opContains:`يحتوي على`,opIsEmpty:`فارغ`,opIsNotEmpty:`ليس فارغًا`,formatAuto:`تلقائي`,formatCurrency:`عملة`,formatPercent:`نسبة مئوية`,formatInteger:`عدد صحيح`,formatDate:`تاريخ`,formatDatetime:`تاريخ ووقت`,columnLabelPlaceholder:`تجاوز التسمية`,aggregateColumn:`تجميع`,formatColumn:`تنسيق`,addColumns:`إضافة أعمدة`,searchFields:`البحث في الحقول…`,noMatchingFields:`لا توجد حقول تطابق بحثك.`,noFieldsAvailable:`لا توجد حقول متاحة.`,columnsCount:`{n} عمود(أعمدة) محدد(ة)`,columnsEmpty:`لم يتم تحديد أعمدة بعد.`,fieldPickerTitle:`تحديد الحقول`,fieldPickerDescription:`اختر حقلاً أو أكثر للإضافة. استخدم مربع البحث لتصفية القائمة.`,fieldPickerChangeTitle:`تغيير الحقل`,fieldPickerAddGroupingTitle:`إضافة تجميع`,fieldPickerEmpty:`(تحديد حقل)`,fieldPickerSelected:`{n} محدد(ة)`,fieldPickerClear:`مسح التحديد`,fieldPickerAdd:`إضافة`,fieldPickerAddN:`إضافة {n}`}},organizations:{mine:`مؤسساتي`,title:`المؤسسات`,heading:`مؤسساتك`,subtitle:`اختر مؤسسة للمتابعة، أو أنشئ مؤسسة جديدة.`,searchPlaceholder:`ابحث عن مؤسسة`,new:`مؤسسة جديدة`,current:`المؤسسة الحالية`,manage:`إدارة`,emptyTitle:`لا توجد مؤسسات بعد`,emptyDescription:`أنشئ مؤسستك الأولى للبدء.`,noMatches:`لا توجد مؤسسات تطابق بحثك.`},notifications:{empty:`لا توجد إشعارات`,markAllRead:`تعليم الكل كمقروء`,viewAll:`عرض جميع الإشعارات`,approvalsPending:`{{count}} موافقات معلقة`,viewApprovals:`عرض الموافقات`,noPendingApprovals:`لا توجد موافقات معلقة`,openApprovalsInbox:`فتح صندوق الموافقات`,emptyUnread:`كل شيء مقروء`,filterUnread:`غير مقروء`,filterAll:`الكل`},publicForm:{submit:`إرسال`,submitting:`جارٍ الإرسال…`,submitAnother:`إرسال رد آخر`,poweredBy:`مدعوم بـ ObjectStack`,secureNotice:`يتم نقل معلوماتك بأمان وتستخدم فقط لمعالجة طلبك.`,thankYouTitle:`شكراً!`,thankYouMessage:`تم استلام إرسالك بنجاح.`,redirecting:`إعادة توجيه خلال {{seconds}} ثانية(ثوانٍ)…`,unavailableTitle:`النموذج غير متاح`,unavailableDescription:`لا يوجد نموذج عام متاح على هذا الرابط. تأكد من تمكين المشاركة المجهولة للعرض الأساسي.`,tryDemo:`تجربة العرض التوضيحي`,retry:`إعادة المحاولة`,loading:`جارٍ تحميل النموذج…`,requiredHint:`* حقل مطلوب`,consentLabelDefault:`أوافق على سياسة الخصوصية وأعطي موافقتي على معالجة بياناتي لهذا الطلب.`,consentLink:`سياسة الخصوصية`,consentRequired:`يرجى قبول سياسة الخصوصية للمتابعة.`,rateLimited:`خذ لحظة لمراجعة إجاباتك قبل الإرسال.`,redirectBlocked:`تم قبول الإرسال، لكن رابط إعادة التوجيه تم حظره لأسباب أمنية.`,demo:{contactTitle:`تواصل معنا`,contactDescription:`أخبرنا عن مشروعك وسيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.`,supportTitle:`إرسال طلب دعم`,supportDescription:`صف لنا المشكلة وسيرد فريقنا خلال يوم عمل.`,thankYouSalesTitle:`شكراً — لقد استلمنا رسالتك!`,thankYouSalesMessage:`سيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.`,thankYouSupportTitle:`تم — طلبك في قائمة الانتظار.`,thankYouSupportMessage:`سيتابع معك مهندس الدعم قريباً. احفظ هذه الصفحة إذا كان لديك لقطات شاشة إضافية.`,field:{firstName:`الاسم الأول`,lastName:`اسم العائلة`,email:`البريد الإلكتروني للعمل`,phone:`الهاتف`,jobTitle:`المسمى الوظيفي`,company:`الشركة`,website:`الموقع الإلكتروني`,industry:`القطاع`,companySize:`حجم الشركة`,howCanWeHelp:`كيف يمكننا مساعدتك؟`,subject:`الموضوع`,description:`الوصف`,issueType:`نوع المشكلة`,priority:`الأولوية`},industry:{technology:`التكنولوجيا`,software:`البرمجيات / SaaS`,finance:`المالية`,healthcare:`الرعاية الصحية`,retail:`التجزئة`,other:`أخرى`},issueType:{question:`سؤال`,problem:`مشكلة`,bug:`خطأ برمجي`,feature_request:`طلب ميزة`},priority:{low:`منخفضة`,medium:`متوسطة`,high:`عالية`,critical:`حرجة`}}},marketplace:{title:`سوق التطبيقات`,subtitle:`استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.`,searchPlaceholder:`ابحث عن التطبيقات بالاسم أو معرف المانيفست…`,searchAria:`البحث في تطبيقات السوق`,installed:`مثبت`,installedCount:`مثبت ({{count}})`,refresh:`تحديث`,all:`الكل`,noApprovedYet:`لا توجد تطبيقات معتمدة للسوق بعد.`,noMatchFilters:`لا توجد تطبيقات تطابق الفلاتر.`,noDescription:`لا وصف متاح.`,back:`العودة إلى السوق`,installedTitle:`التطبيقات المثبتة`,installedSubtitle:`حزم السوق المثبتة حالياً في نواة هذا الوقت التشغيل.`,installedEmpty:`لا توجد تطبيقات سوق مثبتة في هذا الوقت التشغيل بعد.`,browseLink:`استعراض السوق →`,installedAdditiveNote:`<strong>ملاحظة:</strong> واجهة برمجة النواة إضافية فقط — إلغاء التثبيت يزيل المانيفست من القرص لكي لا يتم تحميل الحزمة عند التشغيل التالي، لكن النواة الجارية تبقي التطبيق مسجلاً حتى إعادة التشغيل.`,installedAt:`تم التثبيت {{when}}`,installedBy:`بواسطة {{user}}`,installedPackageId:`الحزمة`,cachedAs:`مخزن مؤقتاً كـ <code>{{path}}</code>`,versionBadge:`v{{version}}`,installedBadge:`مثبت v{{version}}`,load:{failed:`تعذر تحميل السوق`,failedHint:`بشكل افتراضي، يشير هذا الوقت التشغيل إلى سحابة ObjectStack العامة. تأكد من أن الوقت التشغيل متصل بالإنترنت.`,packageFailed:`تعذر تحميل الحزمة`,notFound:`غير موجود.`},detail:{homepage:`الصفحة الرئيسية`,installedV:`مثبت · v{{version}}`,about:`حول`,noReadme:`لا يوجد readme متاح.`,versions:`الإصدارات`,noApprovedVersions:`لا توجد إصدارات معتمدة.`,prerelease:`ما قبل الإصدار`,moreOptions:`مزيد من خيارات التثبيت`,uninstallFromRuntime:`إلغاء التثبيت من هذا الوقت التشغيل`},action:{install:`تثبيت`,reinstall:`إعادة التثبيت`,working:`جارٍ المعالجة…`,installToCloud:`تثبيت في السحابة…`,installing:`جارٍ التثبيت…`,uninstall:`إلغاء التثبيت`,uninstalling:`جارٍ إلغاء التثبيت…`,details:`التفاصيل`,close:`إغلاق`,dismiss:`رفض`,openOnCloud:`فتح في السحابة`,backHome:`العودة إلى الرئيسية`},install:{dialogTitle:`تثبيت {{name}}`,dialogDescCurrent:`تثبيت في هذه البيئة ({{host}}).`,dialogDescPicker:`اختر بيئة لتثبيت هذا التطبيق. يجب أن تكون مسجلاً في ObjectStack Cloud.`,environment:`البيئة`,environmentPlaceholder:`تحديد بيئة`,includeSampleData:`تضمين بيانات نموذجية`,noEnvs:`لم يتم العثور على بيئات في مؤسستك النشطة.`,noPermission:`ليس لديك إذن لتثبيت التطبيقات. فقط مالكو المؤسسة والمشرفون يمكنهم التثبيت.`,signInFirst:`يجب عليك أولاً تسجيل الدخول إلى ObjectStack Cloud.`,success:`تم التثبيت بنجاح. افتح البيئة لرؤية التطبيق الجديد.`,localSuccess:`تم تثبيت v{{version}} في هذا الوقت التشغيل. يجب أن يظهر "{{name}}" الآن في مبدّل التطبيقات.`,localManifestConflict:`{{message}}
|
|
32
|
+
ملاحظة: تطبيق محلي يمتلك بالفعل هذا المعرف. أزله أولاً من objectstack.config.ts.`,localUnauthorized:`سجل الدخول إلى هذا الوقت التشغيل أولاً.`,localMarketplaceUnavailable:`هذا الوقت التشغيل لا يحتوي على OS_CLOUD_URL مُهيأ.`},uninstall:{confirm:`إلغاء تثبيت {{manifestId}} v{{version}} من هذا الوقت التشغيل؟
|
|
33
|
+
|
|
34
|
+
سيتم إزالة المانيفست المخزن مؤقتاً.`,successInList:`تم إزالة {{manifestId}}. أعد تشغيل الوقت التشغيل لتفريغه بالكامل.`,successInDetail:`تم إزالة المانيفست المخزن مؤقتاً لـ {{manifestId}}.`},accessDenied:{title:`سوق التطبيقات للمشرفين فقط`,description:`ليس لديك إذن لتثبيت التطبيقات في هذه البيئة.`},category:{crm:`CRM`,erp:`ERP`,hr:`الموارد البشرية`,finance:`المالية`,project:`إدارة المشاريع`,collaboration:`التعاون`,analytics:`التحليلات`,integration:`التكامل`,automation:`الأتمتة`,ai:`الذكاء الاصطناعي`,security:`الأمان`,"developer-tools":`أدوات المطور`,"ui-theme":`سمة واجهة المستخدم`,storage:`التخزين`,other:`أخرى`},pricing:{free:`مجاني`,freemium:`مجاني جزئياً`,paid:`مدفوع`,subscription:`اشتراك`,"usage-based":`حسب الاستخدام`,"contact-sales":`تواصل مع المبيعات`},relativeTime:{today:`اليوم`,daysAgo:`منذ {{count}} ي`,monthsAgo:`منذ {{count}} شهر(أشهر)`,yearsAgo:`منذ {{count}} سنة(سنوات)`}}}},kr=[`ar`,`he`,`fa`,`ur`];function Ar(e){return kr.includes(e)}var jr=`__ouiLabelProbe`;function Mr(){return typeof process>`u`||!1}function Nr(){let e=new Set;return(t,n,r,i,a,o)=>{if(o&&o.__ouiLabelProbe)return;let s=Array.isArray(t)?t[0]:String(t??``),c=`${s}:${r}`;if(e.has(c))return;e.add(c);let l=i?`"${i}"`:`the key itself`;console.warn(`[object-ui i18n] Missing translation for "${r}" (language "${s}") — falling back to ${l}.`)}}function Pr(e={}){let{defaultLanguage:t=`en`,fallbackLanguage:n=`en`,resources:r={},detectBrowserLanguage:a=!0,interpolation:s,warnMissingKeys:c=Mr()}=e,l={};for(let[e,t]of Object.entries(Or))l[e]={translation:{...t,...r[e]||{}}};for(let[e,t]of Object.entries(r))l[e]||(l[e]={translation:t});let u=t;if(a&&typeof navigator<`u`){let e=navigator.language?.split(`-`)[0];e&&l[e]&&(u=e)}let d=i.createInstance();return d.use(o).init({lng:u,fallbackLng:n,resources:l,interpolation:{escapeValue:!1,...s},returnNull:!1,saveMissing:c,missingKeyHandler:c?Nr():void 0,react:{useSuspense:!1}}),d}function Fr(e){return Ar(e)?`rtl`:`ltr`}var Ir=(0,I.createContext)(null);function Lr({config:e,instance:t,loadLanguage:n,children:r}){let i=(0,I.useMemo)(()=>t||Pr(e),[t,e]),[a,o]=(0,I.useState)(i.language||`en`),c=Fr(a),l=(0,I.useRef)(new Set);(0,I.useEffect)(()=>{let e=e=>{o(e),typeof document<`u`&&(document.documentElement.dir=Fr(e),document.documentElement.lang=e)},t=i.language||a;return typeof document<`u`&&t&&(document.documentElement.dir=Fr(t),document.documentElement.lang=t),i.on(`languageChanged`,e),()=>{i.off(`languageChanged`,e)}},[i]),(0,I.useEffect)(()=>{if(!n)return;let e=i.language||`en`;l.current.has(e)||(l.current.add(e),n(e).then(t=>{t&&Object.keys(t).length>0&&(i.addResourceBundle(e,`translation`,t,!0,!0),o(e))}).catch(t=>{l.current.delete(e),console.warn(`[i18n] Failed to load app translations for '${e}':`,t)}))},[i,n]);let u=(0,I.useMemo)(()=>({language:a,changeLanguage:async e=>{if(n&&!l.current.has(e)){l.current.add(e);try{let t=await n(e);i.addResourceBundle(e,`translation`,t,!0,!0)}catch(t){l.current.delete(e),console.warn(`[i18n] Failed to load app translations for '${e}':`,t)}}await i.changeLanguage(e)},direction:c,i18n:i}),[a,c,i,n]);return I.createElement(Ir.Provider,{value:u},I.createElement(s,{i18n:i},r))}function Rr(e){let t=(0,I.useContext)(Ir),{t:n,i18n:r}=a(e);return{t:n,language:t?.language||r.language||`en`,changeLanguage:t?.changeLanguage||(async e=>{await r.changeLanguage(e)}),direction:t?.direction||`ltr`,i18n:r}}function zr(e,t){return function(){try{let n=Rr();return n.t(t)===t?{t:(t,n)=>{let r=e[t]||t;if(n)for(let[e,t]of Object.entries(n))r=r.replace(`{{${e}}}`,String(t));return r}}:{t:n.t}}catch{return{t:(t,n)=>{let r=e[t]||t;if(n)for(let[e,t]of Object.entries(n))r=r.replace(`{{${e}}}`,String(t));return r}}}}}var Br=zr({"common.selectOption":`Select an option`},`common.selectOption`),Vr=({field:e,methods:t,disabled:n=!1})=>{let{register:r,formState:{errors:i}}=t,{t:a}=Br(),o=e,s=e.widget||`text`,c=e.field,l=i[c],u=Ge(e.label),d=Ge(e.placeholder),f=Ge(e.helpText),p=e=>o.multiple&&e instanceof HTMLCollection?Array.from(e).map(e=>e.value):e;if(e.hidden)return null;let m=t=>(0,L.jsxs)(`div`,{className:`space-y-2`,children:[u&&(0,L.jsxs)(`label`,{htmlFor:c,className:`block text-sm font-medium text-gray-700`,children:[u,e.required&&(0,L.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),t,f&&(0,L.jsx)(`p`,{className:`text-sm text-gray-500`,children:f}),l&&(0,L.jsx)(`p`,{className:`text-sm text-red-600`,children:l.message})]});switch(s.toLowerCase()){case`text`:case`string`:case`email`:case`password`:case`url`:case`tel`:return m((0,L.jsx)(`input`,{id:c,type:s===`string`?`text`:s,placeholder:d,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`number`:case`integer`:case`float`:return m((0,L.jsx)(`input`,{id:c,type:`number`,placeholder:d,disabled:n,step:s===`integer`?`1`:`any`,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,valueAsNumber:!0})}));case`checkbox`:case`boolean`:return(0,L.jsxs)(`div`,{className:`flex items-start space-x-2`,children:[(0,L.jsx)(`input`,{id:c,type:`checkbox`,disabled:n,className:`mt-1 h-4 w-4 text-blue-600 border-gray-300 rounded focus:ring-2 focus:ring-blue-500 disabled:opacity-50`,...r(c)}),(0,L.jsxs)(`div`,{className:`flex-1`,children:[u&&(0,L.jsxs)(`label`,{htmlFor:c,className:`text-sm font-medium text-gray-700`,children:[u,e.required&&(0,L.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),f&&(0,L.jsx)(`p`,{className:`text-sm text-gray-500 mt-1`,children:f}),l&&(0,L.jsx)(`p`,{className:`text-sm text-red-600 mt-1`,children:l.message})]})]});case`textarea`:return m((0,L.jsx)(`textarea`,{id:c,placeholder:d,disabled:n,rows:4,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`select`:case`dropdown`:return m((0,L.jsxs)(`select`,{id:c,disabled:n,multiple:o.multiple,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,setValueAs:p}),children:[!o.multiple&&(0,L.jsx)(`option`,{value:``,children:d||a(`common.selectOption`)}),o.options?.map(e=>(0,L.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))]}));case`date`:return m((0,L.jsx)(`input`,{id:c,type:`date`,placeholder:d,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`datetime`:case`datetime-local`:return m((0,L.jsx)(`input`,{id:c,type:`datetime-local`,placeholder:d,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`time`:return m((0,L.jsx)(`input`,{id:c,type:`time`,placeholder:d,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`currency`:return m((0,L.jsxs)(`div`,{className:`relative`,children:[(0,L.jsx)(`span`,{className:`absolute left-3 top-2 text-gray-500`,children:`$`}),(0,L.jsx)(`input`,{id:c,type:`number`,placeholder:d,disabled:n,step:`0.01`,className:`w-full pl-8 pr-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,valueAsNumber:!0})})]}));case`percent`:return m((0,L.jsxs)(`div`,{className:`relative`,children:[(0,L.jsx)(`input`,{id:c,type:`number`,placeholder:d,disabled:n,step:`0.01`,min:`0`,max:`100`,className:`w-full pr-8 pl-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,valueAsNumber:!0})}),(0,L.jsx)(`span`,{className:`absolute right-3 top-2 text-gray-500`,children:`%`})]}));case`phone`:return m((0,L.jsx)(`input`,{id:c,type:`tel`,placeholder:d||`+1 (555) 000-0000`,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`markdown`:return m((0,L.jsx)(`textarea`,{id:c,placeholder:d||`Enter markdown text...`,disabled:n,rows:8,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed font-mono`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`html`:return m((0,L.jsx)(`textarea`,{id:c,placeholder:d||`Enter HTML...`,disabled:n,rows:8,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed font-mono`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`file`:return m((0,L.jsx)(`input`,{id:c,type:`file`,disabled:n,multiple:o.multiple,accept:o.accept?.join(`,`),className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`image`:return m((0,L.jsx)(`input`,{id:c,type:`file`,disabled:n,multiple:o.multiple,accept:o.accept?.join(`,`)||`image/*`,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100`,...r(c,{required:e.required?`${u||c} is required`:!1})}));case`location`:return m((0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`input`,{id:`${c}-lat`,type:`number`,placeholder:`Latitude`,disabled:n,step:`any`,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(`${c}.lat`,{required:e.required?`Latitude is required`:!1,valueAsNumber:!0})}),(0,L.jsx)(`input`,{id:`${c}-lng`,type:`number`,placeholder:`Longitude`,disabled:n,step:`any`,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(`${c}.lng`,{required:e.required?`Longitude is required`:!1,valueAsNumber:!0})})]}));case`lookup`:case`master_detail`:return m((0,L.jsxs)(`select`,{id:c,disabled:n,multiple:o.multiple,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,setValueAs:p}),children:[!o.multiple&&(0,L.jsx)(`option`,{value:``,children:d||a(`common.selectOption`)}),o.options?.map(e=>(0,L.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))]}));case`user`:case`owner`:return m((0,L.jsxs)(`select`,{id:c,disabled:n,multiple:o.multiple,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1,setValueAs:p}),children:[!o.multiple&&(0,L.jsx)(`option`,{value:``,children:d||`Select user`}),o.options?.map(e=>(0,L.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))]}));case`formula`:case`summary`:case`auto_number`:return m((0,L.jsx)(`input`,{id:c,type:`text`,disabled:!0,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm bg-gray-50 cursor-not-allowed text-gray-600`,...r(c)}));case`object`:return m((0,L.jsx)(`textarea`,{id:c,placeholder:d||`Enter JSON object...`,disabled:n,rows:6,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed font-mono text-sm`,...r(c,{required:e.required?`${u||c} is required`:!1,validate:e=>{if(!e)return!0;try{return JSON.parse(e),!0}catch{return`Invalid JSON format`}}})}));case`vector`:return m((0,L.jsx)(`input`,{id:c,type:`text`,placeholder:d||`Vector data (read-only)`,disabled:!0,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm bg-gray-50 cursor-not-allowed text-gray-600`,...r(c)}));case`grid`:return m((0,L.jsx)(`div`,{className:`w-full px-3 py-2 border border-gray-300 rounded-md bg-gray-50 text-gray-600`,children:(0,L.jsx)(`p`,{className:`text-sm`,children:`Grid editor not yet implemented`})}));default:return m((0,L.jsx)(`input`,{id:c,type:`text`,placeholder:d,disabled:n,className:`w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 disabled:bg-gray-100 disabled:cursor-not-allowed`,...r(c,{required:e.required?`${u||c} is required`:!1})}))}};Vr.displayName=`FieldFactory`;var Hr=({schema:e,data:t={},onSubmit:n,onChange:r,className:i=``,disabled:a=!1})=>{let o=Dr({defaultValues:t,mode:`onChange`}),{handleSubmit:s,watch:c}=o;I.useEffect(()=>{if(r){let e=c(e=>{r(e)});return()=>e.unsubscribe()}},[c,r]);let l=s(async e=>{n&&await n(e)}),u=()=>!e.sections||e.sections.length===0?null:(0,L.jsx)(`div`,{className:`space-y-6`,children:e.sections.map((e,t)=>(0,L.jsx)(Kr,{section:e,methods:o,disabled:a},t))});return(0,L.jsx)(Fn,{...o,children:(0,L.jsxs)(`form`,{onSubmit:l,className:`space-y-6 ${i}`,children:[u(),(0,L.jsx)(`div`,{className:`flex justify-end gap-2`,children:(0,L.jsx)(`button`,{type:`submit`,disabled:a,className:`px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed`,children:`Submit`})})]})})},Ur={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-3`,4:`grid-cols-1 md:grid-cols-2 lg:grid-cols-4`},Wr={1:`col-span-1`,2:`col-span-2`,3:`col-span-3`,4:`col-span-4`};function Gr(e,t){if(e.hidden)return!1;if(e.visibleOn)try{return new O({data:t,form:t}).evaluateCondition(e.visibleOn)}catch{return!0}if(e.dependsOn){let n=t[e.dependsOn];return n!=null&&n!==``}return!0}var Kr=({section:e,methods:t,disabled:n=!1})=>{let[r,i]=I.useState(e.collapsed||!1),a=Ur[e.columns||1],o=I.useMemo(()=>e.fields.some(e=>typeof e==`string`?!1:!!e.dependsOn||!!e.visibleOn),[e.fields]),s=t.watch(),c=o?s:void 0;return(0,L.jsxs)(`div`,{className:`border rounded-lg p-4`,children:[e.label&&(0,L.jsxs)(`div`,{className:`flex items-center justify-between mb-4 ${e.collapsible?`cursor-pointer`:``}`,onClick:()=>{e.collapsible&&i(!r)},children:[(0,L.jsx)(`h3`,{className:`text-lg font-semibold`,children:Ge(e.label)}),e.collapsible&&(0,L.jsx)(`span`,{className:`text-sm text-gray-500`,children:r?`▶`:`▼`})]}),!r&&(0,L.jsx)(`div`,{className:`grid ${a} gap-4`,children:e.fields.map((r,i)=>{let a=typeof r==`string`?r:r.field,o=typeof r==`string`?{field:a}:r;if(!Gr(o,c||{}))return null;let s=o.colSpan||1,l=Wr[Math.min(s,e.columns||1)];return(0,L.jsx)(`div`,{className:l,children:(0,L.jsx)(Vr,{field:o,methods:t,disabled:n||o.readonly})},`${a}-${i}`)})})]})};Hr.displayName=`FormRenderer`;export{ce as $,mt as A,Ve as B,Vt as C,It as D,Ft as E,et as F,ze as G,We as H,nt as I,Pe as J,Fe as K,rt as L,ct as M,at as N,Nt as O,it as P,fe as Q,Qe as R,zt as S,Lt as T,Ue as U,He as V,Be as W,xe as X,Ne as Y,_e as Z,Zt as _,Mn as a,ne as at,Rt as b,Pn as c,v as ct,$t as d,c as dt,se as et,sn as f,Xt as g,tn as h,jr as i,O as it,lt as j,Dt as k,un as l,y as lt,cn as m,Lr as n,ie as nt,Fn as o,x as ot,en as p,Me as q,Rr as r,ae as rt,Dr as s,b as st,zr as t,oe as tt,dn as u,g as ut,qt as v,Ht as w,Bt as x,Wt as y,Ge as z};
|