@object-ui/i18n 11.4.0 → 13.1.0

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.
@@ -83,6 +83,7 @@ const en = {
83
83
  email: 'Please enter a valid email address',
84
84
  url: 'Please enter a valid URL',
85
85
  pattern: '{{field}} format is invalid',
86
+ formInvalid: 'Please check the highlighted fields: {{fields}}',
86
87
  unique: '{{field}} must be unique',
87
88
  type: '{{field}} must be a valid {{type}}',
88
89
  },
@@ -204,6 +205,12 @@ const en = {
204
205
  templateName: 'Template name',
205
206
  save: 'Save',
206
207
  deleteTemplate: 'Delete template',
208
+ savedMapping: 'Saved mapping:',
209
+ chooseSavedMapping: 'Choose a saved mapping…',
210
+ manualMapping: '— Map columns manually —',
211
+ transform: 'Transform',
212
+ savedMappingHint: 'Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.',
213
+ savedMappingPreviewNote: 'The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.',
207
214
  csvColumn: 'Column',
208
215
  mapsTo: 'Maps To',
209
216
  typeMismatch: 'Looks like {{type}}',
@@ -1258,6 +1265,15 @@ const en = {
1258
1265
  dark: 'Dark',
1259
1266
  system: 'System',
1260
1267
  },
1268
+ objectData: {
1269
+ badge: 'Data',
1270
+ description: 'URL-defined data slice — not bound to any saved view.',
1271
+ filteredBy: 'Filtered by',
1272
+ removeFilter: 'Remove filter {{field}}',
1273
+ saveAsView: 'Save as view',
1274
+ noAccessTitle: 'Access denied',
1275
+ noAccess: 'You do not have permission to view this data.',
1276
+ },
1261
1277
  objectView: {
1262
1278
  objectNotFound: 'Object Not Found',
1263
1279
  objectNotFoundDescription: 'The object "{{objectName}}" does not exist in the current configuration.',
@@ -1662,6 +1678,7 @@ const en = {
1662
1678
  },
1663
1679
  topbar: {
1664
1680
  aiAssistant: 'AI Assistant',
1681
+ designInStudio: 'Design in Studio',
1665
1682
  openAssistant: 'Open {{name}} assistant',
1666
1683
  offline: 'Offline',
1667
1684
  usersOnline: 'Users currently online',
@@ -1673,6 +1690,12 @@ const en = {
1673
1690
  disconnected: 'Disconnected',
1674
1691
  error: 'Connection Error',
1675
1692
  },
1693
+ // Platform lifecycle chip shown next to the product wordmark (PreviewBadge).
1694
+ stage: {
1695
+ preview: 'Preview',
1696
+ beta: 'Beta',
1697
+ tooltip: 'This platform is in preview — features may change.',
1698
+ },
1676
1699
  },
1677
1700
  home: {
1678
1701
  title: 'Home',
@@ -1763,6 +1786,7 @@ const en = {
1763
1786
  appsAvailable: '{{count}} apps available',
1764
1787
  addApp: 'Add App',
1765
1788
  editApp: 'Edit App',
1789
+ editNavigation: 'Edit Navigation',
1766
1790
  manageAllApps: 'Manage All Apps',
1767
1791
  systemConsole: 'System Console',
1768
1792
  noAppsConfigured: 'No apps configured',
@@ -1869,6 +1893,12 @@ const en = {
1869
1893
  empty: 'Nothing pending — every draft has been published.',
1870
1894
  kindNew: 'New',
1871
1895
  kindUpdate: 'Update',
1896
+ detailLoading: 'Loading detail…',
1897
+ detailLoadFailed: 'Could not load change detail:',
1898
+ detailNone: 'No differences detected — the draft matches the published version.',
1899
+ detailChangedKeys: 'Also changed:',
1900
+ confirmNote: 'Publishing releases all {{count}} pending drafts of this package atomically.',
1901
+ publishConfirm: 'Publish all',
1872
1902
  },
1873
1903
  },
1874
1904
  renderer: {
@@ -2048,6 +2078,46 @@ const en = {
2048
2078
  },
2049
2079
  },
2050
2080
  },
2081
+ connectAgent: {
2082
+ disabled: {
2083
+ title: 'MCP is disabled on this deployment',
2084
+ body: 'The MCP surface is off (OS_MCP_SERVER_ENABLED=false), so there is nothing to connect. Ask your operator to re-enable it.',
2085
+ },
2086
+ url: {
2087
+ title: 'This environment\'s MCP endpoint',
2088
+ body: 'Any MCP-capable AI client connects with this URL. Identity is self-serve: the deployment is its own OAuth 2.1 authorization server, so interactive clients just open a browser login — you connect as yourself, and every call runs under your own permissions and row-level security.',
2089
+ downloadSkill: 'Download SKILL.md',
2090
+ skillHint: 'The portable agent skill: teaches any skills-capable agent how to work with this environment.',
2091
+ },
2092
+ claude: {
2093
+ body: 'Settings → Connectors → Add custom connector, then paste this URL. Sign in through the browser when prompted.',
2094
+ reachability: 'claude.ai (web) connects from Anthropic\'s servers — the deployment must be reachable over public HTTPS. Claude Desktop and local clients also reach intranet deployments.',
2095
+ },
2096
+ claudeCode: {
2097
+ body: 'One command — the OAuth login opens automatically on first use:',
2098
+ plugin: 'Or install the official plugin (adds the ObjectStack skill and a guided /objectstack:connect command):',
2099
+ },
2100
+ cursor: {
2101
+ addButton: 'Add to Cursor',
2102
+ body: 'Use the one-click button, or add this to .cursor/mcp.json:',
2103
+ },
2104
+ vscode: {
2105
+ body: 'Add to .vscode/mcp.json (or via the MCP: Add Server command):',
2106
+ },
2107
+ codex: {
2108
+ body: 'Add to ~/.codex/config.toml. If your Codex version lacks the OAuth flow, use an API key header instead (see below):',
2109
+ },
2110
+ apiKey: {
2111
+ title: 'API keys',
2112
+ badge: 'headless',
2113
+ body: 'For CI, scripts, and agents without a browser. The key acts as you — treat it like a password. It is shown ONCE.',
2114
+ namePlaceholder: 'Key name (e.g. ci-agent)',
2115
+ mint: 'Create key',
2116
+ minting: 'Creating…',
2117
+ showOnce: 'Key "{{name}}" created — copy it now, it will not be shown again:',
2118
+ done: 'Done — hide it',
2119
+ },
2120
+ },
2051
2121
  marketplace: {
2052
2122
  title: 'App Marketplace',
2053
2123
  subtitle: 'Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.',
@@ -2130,6 +2200,18 @@ const en = {
2130
2200
  localUnauthorized: 'Sign in to this runtime first, then try again.',
2131
2201
  localMarketplaceUnavailable: 'This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.',
2132
2202
  },
2203
+ // ADR-0090 D5/D9 — a package's isDefault permission set is an
2204
+ // install-time suggestion to bind it to the everyone/guest position;
2205
+ // the admin confirms here, the server never auto-binds.
2206
+ suggestedBindings: {
2207
+ promptEveryone: 'This app suggests granting "{{set}}" to all signed-in users (the Everyone position).',
2208
+ promptGuest: 'This app suggests granting "{{set}}" to unauthenticated visitors (the Guest position).',
2209
+ confirm: 'Grant',
2210
+ confirming: 'Granting…',
2211
+ dismiss: 'Dismiss',
2212
+ confirmedToast: '"{{set}}" is now granted to {{anchor}}.',
2213
+ dismissedToast: 'Suggestion for "{{set}}" dismissed.',
2214
+ },
2133
2215
  uninstall: {
2134
2216
  confirm: 'Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.',
2135
2217
  successInList: 'Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.',
@@ -80,6 +80,7 @@ declare const es: {
80
80
  email: string;
81
81
  url: string;
82
82
  pattern: string;
83
+ formInvalid: string;
83
84
  unique: string;
84
85
  type: string;
85
86
  };
@@ -191,6 +192,12 @@ declare const es: {
191
192
  templateName: string;
192
193
  save: string;
193
194
  deleteTemplate: string;
195
+ savedMapping: string;
196
+ chooseSavedMapping: string;
197
+ manualMapping: string;
198
+ transform: string;
199
+ savedMappingHint: string;
200
+ savedMappingPreviewNote: string;
194
201
  csvColumn: string;
195
202
  mapsTo: string;
196
203
  typeMismatch: string;
@@ -1263,6 +1270,7 @@ declare const es: {
1263
1270
  };
1264
1271
  topbar: {
1265
1272
  aiAssistant: string;
1273
+ designInStudio: string;
1266
1274
  };
1267
1275
  home: {
1268
1276
  title: string;
@@ -1693,6 +1701,46 @@ declare const es: {
1693
1701
  };
1694
1702
  };
1695
1703
  };
1704
+ connectAgent: {
1705
+ disabled: {
1706
+ title: string;
1707
+ body: string;
1708
+ };
1709
+ url: {
1710
+ title: string;
1711
+ body: string;
1712
+ downloadSkill: string;
1713
+ skillHint: string;
1714
+ };
1715
+ claude: {
1716
+ body: string;
1717
+ reachability: string;
1718
+ };
1719
+ claudeCode: {
1720
+ body: string;
1721
+ plugin: string;
1722
+ };
1723
+ cursor: {
1724
+ addButton: string;
1725
+ body: string;
1726
+ };
1727
+ vscode: {
1728
+ body: string;
1729
+ };
1730
+ codex: {
1731
+ body: string;
1732
+ };
1733
+ apiKey: {
1734
+ title: string;
1735
+ badge: string;
1736
+ body: string;
1737
+ namePlaceholder: string;
1738
+ mint: string;
1739
+ minting: string;
1740
+ showOnce: string;
1741
+ done: string;
1742
+ };
1743
+ };
1696
1744
  marketplace: {
1697
1745
  title: string;
1698
1746
  subtitle: string;
@@ -1988,6 +2036,12 @@ declare const es: {
1988
2036
  empty: string;
1989
2037
  kindNew: string;
1990
2038
  kindUpdate: string;
2039
+ detailLoading: string;
2040
+ detailLoadFailed: string;
2041
+ detailNone: string;
2042
+ detailChangedKeys: string;
2043
+ confirmNote: string;
2044
+ publishConfirm: string;
1991
2045
  };
1992
2046
  };
1993
2047
  filterBuilder: {
@@ -80,6 +80,7 @@ const es = {
80
80
  email: "Por favor, introduzca un correo electrónico válido",
81
81
  url: "Por favor, introduzca una URL válida",
82
82
  pattern: "El formato de {{field}} no es válido",
83
+ formInvalid: "Por favor, revise los campos resaltados: {{fields}}",
83
84
  unique: "{{field}} debe ser único",
84
85
  type: "{{field}} debe ser un {{type}} válido",
85
86
  },
@@ -191,6 +192,12 @@ const es = {
191
192
  templateName: "Nombre de la plantilla",
192
193
  save: "Guardar",
193
194
  deleteTemplate: "Eliminar plantilla",
195
+ savedMapping: 'Saved mapping:',
196
+ chooseSavedMapping: 'Choose a saved mapping…',
197
+ manualMapping: '— Map columns manually —',
198
+ transform: 'Transform',
199
+ savedMappingHint: 'Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.',
200
+ savedMappingPreviewNote: 'The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.',
194
201
  csvColumn: "Columna",
195
202
  mapsTo: "Se asigna a",
196
203
  typeMismatch: "Parece {{type}}",
@@ -1263,6 +1270,7 @@ const es = {
1263
1270
  },
1264
1271
  topbar: {
1265
1272
  aiAssistant: "Asistente de IA",
1273
+ designInStudio: "Diseñar en Studio",
1266
1274
  },
1267
1275
  home: {
1268
1276
  title: "Inicio",
@@ -1693,6 +1701,46 @@ const es = {
1693
1701
  },
1694
1702
  },
1695
1703
  },
1704
+ connectAgent: {
1705
+ disabled: {
1706
+ title: 'MCP está deshabilitado en esta implementación',
1707
+ body: 'La superficie MCP está apagada (OS_MCP_SERVER_ENABLED=false). Pida a su operador que la vuelva a habilitar.',
1708
+ },
1709
+ url: {
1710
+ title: 'Endpoint MCP de este entorno',
1711
+ body: 'Cualquier cliente de IA compatible con MCP se conecta con esta URL. La identidad es autoservicio: la implementación es su propio servidor de autorización OAuth 2.1 — inicia sesión como usted mismo y cada llamada corre bajo sus permisos y seguridad a nivel de fila.',
1712
+ downloadSkill: 'Descargar SKILL.md',
1713
+ skillHint: 'La skill portátil del agente: enseña a cualquier agente compatible cómo trabajar con este entorno.',
1714
+ },
1715
+ claude: {
1716
+ body: 'Configuración → Conectores → Añadir conector personalizado, pegue esta URL e inicie sesión en el navegador.',
1717
+ reachability: 'claude.ai (web) se conecta desde los servidores de Anthropic — la implementación debe ser accesible por HTTPS público. Claude Desktop y los clientes locales también alcanzan implementaciones de intranet.',
1718
+ },
1719
+ claudeCode: {
1720
+ body: 'Un comando — el inicio de sesión OAuth se abre automáticamente en el primer uso:',
1721
+ plugin: 'O instale el plugin oficial (añade la skill de ObjectStack y el comando guiado /objectstack:connect):',
1722
+ },
1723
+ cursor: {
1724
+ addButton: 'Añadir a Cursor',
1725
+ body: 'Use el botón de un clic o añada esto a .cursor/mcp.json:',
1726
+ },
1727
+ vscode: {
1728
+ body: 'Añadir a .vscode/mcp.json (o mediante el comando MCP: Add Server):',
1729
+ },
1730
+ codex: {
1731
+ body: 'Añadir a ~/.codex/config.toml. Si su versión de Codex no admite el flujo OAuth, use una cabecera de clave API (ver abajo):',
1732
+ },
1733
+ apiKey: {
1734
+ title: 'Claves API',
1735
+ badge: 'headless',
1736
+ body: 'Para CI, scripts y agentes sin navegador. La clave actúa como usted — trátela como una contraseña. Se muestra UNA sola vez.',
1737
+ namePlaceholder: 'Nombre de la clave (p. ej. ci-agent)',
1738
+ mint: 'Crear clave',
1739
+ minting: 'Creando…',
1740
+ showOnce: 'Clave «{{name}}» creada — cópiela ahora, no se volverá a mostrar:',
1741
+ done: 'Listo — ocultar',
1742
+ },
1743
+ },
1696
1744
  marketplace: {
1697
1745
  title: "Marketplace de aplicaciones",
1698
1746
  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.",
@@ -1988,6 +2036,12 @@ const es = {
1988
2036
  empty: 'Nada pendiente — todos los borradores se han publicado.',
1989
2037
  kindNew: 'Nuevo',
1990
2038
  kindUpdate: 'Actualización',
2039
+ detailLoading: 'Cargando detalles…',
2040
+ detailLoadFailed: 'No se pudieron cargar los detalles del cambio:',
2041
+ detailNone: 'No se detectaron diferencias — el borrador coincide con la versión publicada.',
2042
+ detailChangedKeys: 'También cambió:',
2043
+ confirmNote: 'Publicar libera atómicamente los {{count}} borradores pendientes de este paquete.',
2044
+ publishConfirm: 'Publicar todo',
1991
2045
  },
1992
2046
  },
1993
2047
  filterBuilder: {
@@ -80,6 +80,7 @@ declare const fr: {
80
80
  email: string;
81
81
  url: string;
82
82
  pattern: string;
83
+ formInvalid: string;
83
84
  unique: string;
84
85
  type: string;
85
86
  };
@@ -191,6 +192,12 @@ declare const fr: {
191
192
  templateName: string;
192
193
  save: string;
193
194
  deleteTemplate: string;
195
+ savedMapping: string;
196
+ chooseSavedMapping: string;
197
+ manualMapping: string;
198
+ transform: string;
199
+ savedMappingHint: string;
200
+ savedMappingPreviewNote: string;
194
201
  csvColumn: string;
195
202
  mapsTo: string;
196
203
  typeMismatch: string;
@@ -1263,6 +1270,7 @@ declare const fr: {
1263
1270
  };
1264
1271
  topbar: {
1265
1272
  aiAssistant: string;
1273
+ designInStudio: string;
1266
1274
  };
1267
1275
  home: {
1268
1276
  title: string;
@@ -1693,6 +1701,46 @@ declare const fr: {
1693
1701
  };
1694
1702
  };
1695
1703
  };
1704
+ connectAgent: {
1705
+ disabled: {
1706
+ title: string;
1707
+ body: string;
1708
+ };
1709
+ url: {
1710
+ title: string;
1711
+ body: string;
1712
+ downloadSkill: string;
1713
+ skillHint: string;
1714
+ };
1715
+ claude: {
1716
+ body: string;
1717
+ reachability: string;
1718
+ };
1719
+ claudeCode: {
1720
+ body: string;
1721
+ plugin: string;
1722
+ };
1723
+ cursor: {
1724
+ addButton: string;
1725
+ body: string;
1726
+ };
1727
+ vscode: {
1728
+ body: string;
1729
+ };
1730
+ codex: {
1731
+ body: string;
1732
+ };
1733
+ apiKey: {
1734
+ title: string;
1735
+ badge: string;
1736
+ body: string;
1737
+ namePlaceholder: string;
1738
+ mint: string;
1739
+ minting: string;
1740
+ showOnce: string;
1741
+ done: string;
1742
+ };
1743
+ };
1696
1744
  marketplace: {
1697
1745
  title: string;
1698
1746
  subtitle: string;
@@ -1988,6 +2036,12 @@ declare const fr: {
1988
2036
  empty: string;
1989
2037
  kindNew: string;
1990
2038
  kindUpdate: string;
2039
+ detailLoading: string;
2040
+ detailLoadFailed: string;
2041
+ detailNone: string;
2042
+ detailChangedKeys: string;
2043
+ confirmNote: string;
2044
+ publishConfirm: string;
1991
2045
  };
1992
2046
  };
1993
2047
  filterBuilder: {
@@ -80,6 +80,7 @@ const fr = {
80
80
  email: "Veuillez saisir une adresse e-mail valide",
81
81
  url: "Veuillez saisir une URL valide",
82
82
  pattern: "Le format de {{field}} est invalide",
83
+ formInvalid: "Veuillez vérifier les champs en surbrillance : {{fields}}",
83
84
  unique: "{{field}} doit être unique",
84
85
  type: "{{field}} doit être un {{type}} valide",
85
86
  },
@@ -191,6 +192,12 @@ const fr = {
191
192
  templateName: "Nom du modèle",
192
193
  save: "Enregistrer",
193
194
  deleteTemplate: "Supprimer le modèle",
195
+ savedMapping: 'Saved mapping:',
196
+ chooseSavedMapping: 'Choose a saved mapping…',
197
+ manualMapping: '— Map columns manually —',
198
+ transform: 'Transform',
199
+ savedMappingHint: 'Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.',
200
+ savedMappingPreviewNote: 'The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.',
194
201
  csvColumn: "Colonne",
195
202
  mapsTo: "Correspond à",
196
203
  typeMismatch: "Ressemble à {{type}}",
@@ -1263,6 +1270,7 @@ const fr = {
1263
1270
  },
1264
1271
  topbar: {
1265
1272
  aiAssistant: "Assistant IA",
1273
+ designInStudio: "Concevoir dans Studio",
1266
1274
  },
1267
1275
  home: {
1268
1276
  title: "Accueil",
@@ -1693,6 +1701,46 @@ const fr = {
1693
1701
  },
1694
1702
  },
1695
1703
  },
1704
+ connectAgent: {
1705
+ disabled: {
1706
+ title: 'MCP est désactivé sur ce déploiement',
1707
+ body: 'La surface MCP est désactivée (OS_MCP_SERVER_ENABLED=false). Demandez à votre opérateur de la réactiver.',
1708
+ },
1709
+ url: {
1710
+ title: 'Endpoint MCP de cet environnement',
1711
+ body: 'Tout client IA compatible MCP se connecte avec cette URL. L’identité est en libre-service : le déploiement est son propre serveur d’autorisation OAuth 2.1 — vous vous connectez en votre nom, et chaque appel s’exécute sous vos permissions et la sécurité au niveau des lignes.',
1712
+ downloadSkill: 'Télécharger SKILL.md',
1713
+ skillHint: 'La skill d’agent portable : apprend à tout agent compatible à travailler avec cet environnement.',
1714
+ },
1715
+ claude: {
1716
+ body: 'Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez cette URL puis connectez-vous dans le navigateur.',
1717
+ reachability: 'claude.ai (web) se connecte depuis les serveurs d’Anthropic — le déploiement doit être accessible en HTTPS public. Claude Desktop et les clients locaux atteignent aussi les déploiements intranet.',
1718
+ },
1719
+ claudeCode: {
1720
+ body: 'Une seule commande — la connexion OAuth s’ouvre automatiquement à la première utilisation :',
1721
+ plugin: 'Ou installez le plugin officiel (ajoute la skill ObjectStack et la commande guidée /objectstack:connect) :',
1722
+ },
1723
+ cursor: {
1724
+ addButton: 'Ajouter à Cursor',
1725
+ body: 'Utilisez le bouton en un clic, ou ajoutez ceci à .cursor/mcp.json :',
1726
+ },
1727
+ vscode: {
1728
+ body: 'À ajouter dans .vscode/mcp.json (ou via la commande MCP: Add Server) :',
1729
+ },
1730
+ codex: {
1731
+ body: 'À ajouter dans ~/.codex/config.toml. Si votre version de Codex ne gère pas le flux OAuth, utilisez un en-tête de clé API (voir ci-dessous) :',
1732
+ },
1733
+ apiKey: {
1734
+ title: 'Clés API',
1735
+ badge: 'headless',
1736
+ body: 'Pour la CI, les scripts et les agents sans navigateur. La clé agit en votre nom — traitez-la comme un mot de passe. Elle n’est affichée qu’UNE fois.',
1737
+ namePlaceholder: 'Nom de la clé (ex. ci-agent)',
1738
+ mint: 'Créer la clé',
1739
+ minting: 'Création…',
1740
+ showOnce: 'Clé « {{name}} » créée — copiez-la maintenant, elle ne sera plus affichée :',
1741
+ done: 'Terminé — masquer',
1742
+ },
1743
+ },
1696
1744
  marketplace: {
1697
1745
  title: "Marketplace d'applications",
1698
1746
  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.",
@@ -1988,6 +2036,12 @@ const fr = {
1988
2036
  empty: 'Rien en attente — tous les brouillons ont été publiés.',
1989
2037
  kindNew: 'Nouveau',
1990
2038
  kindUpdate: 'Mise à jour',
2039
+ detailLoading: 'Chargement des détails…',
2040
+ detailLoadFailed: 'Impossible de charger les détails de la modification :',
2041
+ detailNone: 'Aucune différence détectée — le brouillon correspond à la version publiée.',
2042
+ detailChangedKeys: 'Également modifié :',
2043
+ confirmNote: 'La publication libère atomiquement les {{count}} brouillons en attente de ce paquet.',
2044
+ publishConfirm: 'Tout publier',
1991
2045
  },
1992
2046
  },
1993
2047
  filterBuilder: {