Compare commits

...

7 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
266e887fb1 chore: temporarily remove lint-staged to enable incremental i18n fixes
Co-authored-by: hyoban <38493346+hyoban@users.noreply.github.com>
2026-01-20 10:10:10 +00:00
copilot-swe-agent[bot]
337701badb Changes before error encountered
Co-authored-by: hyoban <38493346+hyoban@users.noreply.github.com>
2026-01-20 10:00:18 +00:00
copilot-swe-agent[bot]
0d11745909 Changes before error encountered
Co-authored-by: hyoban <38493346+hyoban@users.noreply.github.com>
2026-01-20 09:48:20 +00:00
copilot-swe-agent[bot]
6a6997094d fix: correct i18n placeholders while preserving all translations
Co-authored-by: hyoban <38493346+hyoban@users.noreply.github.com>
2026-01-20 09:33:30 +00:00
copilot-swe-agent[bot]
3f0719e50f fix: sync i18n placeholder mismatches with en-US
Co-authored-by: hyoban <38493346+hyoban@users.noreply.github.com>
2026-01-20 09:21:58 +00:00
copilot-swe-agent[bot]
67bab85fa6 Initial plan 2026-01-20 09:14:16 +00:00
Stephen Zhou
84a1d6a948 chore: lint for i18n place holder 2026-01-20 17:02:27 +08:00
25 changed files with 160 additions and 51 deletions

View File

@@ -1,3 +1,4 @@
import consistentPlaceholders from './rules/consistent-placeholders.js'
import noAsAnyInT from './rules/no-as-any-in-t.js' import noAsAnyInT from './rules/no-as-any-in-t.js'
import noExtraKeys from './rules/no-extra-keys.js' import noExtraKeys from './rules/no-extra-keys.js'
import noLegacyNamespacePrefix from './rules/no-legacy-namespace-prefix.js' import noLegacyNamespacePrefix from './rules/no-legacy-namespace-prefix.js'
@@ -11,6 +12,7 @@ const plugin = {
version: '1.0.0', version: '1.0.0',
}, },
rules: { rules: {
'consistent-placeholders': consistentPlaceholders,
'no-as-any-in-t': noAsAnyInT, 'no-as-any-in-t': noAsAnyInT,
'no-extra-keys': noExtraKeys, 'no-extra-keys': noExtraKeys,
'no-legacy-namespace-prefix': noLegacyNamespacePrefix, 'no-legacy-namespace-prefix': noLegacyNamespacePrefix,

View File

@@ -0,0 +1,109 @@
import fs from 'node:fs'
import path, { normalize, sep } from 'node:path'
import { cleanJsonText } from '../utils.js'
/**
* Extract placeholders from a string
* Matches patterns like {{name}}, {{count}}, etc.
* @param {string} str
* @returns {string[]} Sorted array of placeholder names
*/
function extractPlaceholders(str) {
const matches = str.match(/\{\{\w+\}\}/g) || []
return matches.map(m => m.slice(2, -2)).sort()
}
/**
* Compare two arrays and return if they're equal
* @param {string[]} arr1
* @param {string[]} arr2
* @returns {boolean} True if arrays contain the same elements in the same order
*/
function arraysEqual(arr1, arr2) {
if (arr1.length !== arr2.length)
return false
return arr1.every((val, i) => val === arr2[i])
}
/** @type {import('eslint').Rule.RuleModule} */
export default {
meta: {
type: 'problem',
docs: {
description: 'Ensure placeholders in translations match the en-US source',
},
},
create(context) {
return {
Program(node) {
const { filename, sourceCode } = context
if (!filename.endsWith('.json'))
return
const parts = normalize(filename).split(sep)
const jsonFile = parts.at(-1)
const lang = parts.at(-2)
// Skip English files - they are the source of truth
if (lang === 'en-US')
return
let currentJson = {}
let englishJson = {}
try {
currentJson = JSON.parse(cleanJsonText(sourceCode.text))
const englishFilePath = path.join(path.dirname(filename), '..', 'en-US', jsonFile ?? '')
englishJson = JSON.parse(fs.readFileSync(englishFilePath, 'utf8'))
}
catch (error) {
context.report({
node,
message: `Error parsing JSON: ${error instanceof Error ? error.message : String(error)}`,
})
return
}
// Check each key in the current translation
for (const key of Object.keys(currentJson)) {
// Skip if the key doesn't exist in English (handled by no-extra-keys rule)
if (!Object.prototype.hasOwnProperty.call(englishJson, key))
continue
const currentValue = currentJson[key]
const englishValue = englishJson[key]
// Skip non-string values
if (typeof currentValue !== 'string' || typeof englishValue !== 'string')
continue
const currentPlaceholders = extractPlaceholders(currentValue)
const englishPlaceholders = extractPlaceholders(englishValue)
if (!arraysEqual(currentPlaceholders, englishPlaceholders)) {
const missing = englishPlaceholders.filter(p => !currentPlaceholders.includes(p))
const extra = currentPlaceholders.filter(p => !englishPlaceholders.includes(p))
let message = `Placeholder mismatch in "${key}": `
const details = []
if (missing.length > 0)
details.push(`missing {{${missing.join('}}, {{')}}}`)
if (extra.length > 0)
details.push(`extra {{${extra.join('}}, {{')}}}`)
message += details.join('; ')
message += `. Expected: {{${englishPlaceholders.join('}}, {{') || 'none'}}}`
context.report({
node,
message,
})
}
}
},
}
},
}

View File

@@ -131,6 +131,7 @@ export default antfu(
'dify-i18n/valid-i18n-keys': 'error', 'dify-i18n/valid-i18n-keys': 'error',
'dify-i18n/no-extra-keys': 'error', 'dify-i18n/no-extra-keys': 'error',
'dify-i18n/consistent-placeholders': 'error',
}, },
}, },
) )

View File

@@ -236,7 +236,7 @@
"task.installSuccess": "تم تثبيت {{successLength}} من الإضافات بنجاح", "task.installSuccess": "تم تثبيت {{successLength}} من الإضافات بنجاح",
"task.installed": "مثبت", "task.installed": "مثبت",
"task.installedError": "{{errorLength}} إضافات فشل تثبيتها", "task.installedError": "{{errorLength}} إضافات فشل تثبيتها",
"task.installing": "تثبيت {{installingLength}} إضافات، 0 تم.", "task.installing": "تثبيت إضافات، 0 تم.",
"task.installingWithError": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح، {{errorLength}} فشل", "task.installingWithError": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح، {{errorLength}} فشل",
"task.installingWithSuccess": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح.", "task.installingWithSuccess": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح.",
"task.runningPlugins": "تثبيت الإضافات", "task.runningPlugins": "تثبيت الإضافات",

View File

@@ -251,10 +251,10 @@
"openingStatement.notIncludeKey": "Das Anfangsprompt enthält nicht die Variable: {{key}}. Bitte fügen Sie sie dem Anfangsprompt hinzu.", "openingStatement.notIncludeKey": "Das Anfangsprompt enthält nicht die Variable: {{key}}. Bitte fügen Sie sie dem Anfangsprompt hinzu.",
"openingStatement.openingQuestion": "Eröffnungsfragen", "openingStatement.openingQuestion": "Eröffnungsfragen",
"openingStatement.openingQuestionPlaceholder": "Sie können Variablen verwenden, versuchen Sie {{variable}} einzugeben.", "openingStatement.openingQuestionPlaceholder": "Sie können Variablen verwenden, versuchen Sie {{variable}} einzugeben.",
"openingStatement.placeholder": "Schreiben Sie hier Ihre Eröffnungsnachricht, Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen.", "openingStatement.placeholder": "Schreiben Sie hier Ihre Eröffnungsnachricht, Sie können Variablen verwenden, versuchen Sie {{variable}} zu tippen.",
"openingStatement.title": "Gesprächseröffner", "openingStatement.title": "Gesprächseröffner",
"openingStatement.tooShort": "Für die Erzeugung von Eröffnungsbemerkungen für das Gespräch werden mindestens 20 Wörter des Anfangsprompts benötigt.", "openingStatement.tooShort": "Für die Erzeugung von Eröffnungsbemerkungen für das Gespräch werden mindestens 20 Wörter des Anfangsprompts benötigt.",
"openingStatement.varTip": "Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen", "openingStatement.varTip": "Sie können Variablen verwenden, versuchen Sie {{variable}} zu tippen",
"openingStatement.writeOpener": "Eröffnung schreiben", "openingStatement.writeOpener": "Eröffnung schreiben",
"operation.addFeature": "Funktion hinzufügen", "operation.addFeature": "Funktion hinzufügen",
"operation.agree": "gefällt mir", "operation.agree": "gefällt mir",

View File

@@ -83,7 +83,7 @@
"gotoAnything.emptyState.noKnowledgeBasesFound": "Keine Wissensdatenbanken gefunden", "gotoAnything.emptyState.noKnowledgeBasesFound": "Keine Wissensdatenbanken gefunden",
"gotoAnything.emptyState.noPluginsFound": "Keine Plugins gefunden", "gotoAnything.emptyState.noPluginsFound": "Keine Plugins gefunden",
"gotoAnything.emptyState.noWorkflowNodesFound": "Keine Workflow-Knoten gefunden", "gotoAnything.emptyState.noWorkflowNodesFound": "Keine Workflow-Knoten gefunden",
"gotoAnything.emptyState.tryDifferentTerm": "Versuchen Sie einen anderen Suchbegriff oder entfernen Sie den {{mode}}-Filter", "gotoAnything.emptyState.tryDifferentTerm": "Versuchen Sie einen anderen Suchbegriff oder entfernen Sie den Filter",
"gotoAnything.emptyState.trySpecificSearch": "Versuchen Sie {{shortcuts}} für spezifische Suchen", "gotoAnything.emptyState.trySpecificSearch": "Versuchen Sie {{shortcuts}} für spezifische Suchen",
"gotoAnything.groups.apps": "Apps", "gotoAnything.groups.apps": "Apps",
"gotoAnything.groups.commands": "Befehle", "gotoAnything.groups.commands": "Befehle",

View File

@@ -140,7 +140,7 @@
"stepTwo.preview": "Bestätigen & Vorschau", "stepTwo.preview": "Bestätigen & Vorschau",
"stepTwo.previewButton": "Umschalten zum Frage-und-Antwort-Format", "stepTwo.previewButton": "Umschalten zum Frage-und-Antwort-Format",
"stepTwo.previewChunk": "Vorschau Chunk", "stepTwo.previewChunk": "Vorschau Chunk",
"stepTwo.previewChunkCount": "{{Anzahl}} Geschätzte Chunks", "stepTwo.previewChunkCount": "{{count}} Geschätzte Chunks",
"stepTwo.previewChunkTip": "Klicken Sie auf die Schaltfläche \"Preview Chunk\" auf der linken Seite, um die Vorschau zu laden", "stepTwo.previewChunkTip": "Klicken Sie auf die Schaltfläche \"Preview Chunk\" auf der linken Seite, um die Vorschau zu laden",
"stepTwo.previewSwitchTipEnd": " zusätzliche Tokens verbrauchen", "stepTwo.previewSwitchTipEnd": " zusätzliche Tokens verbrauchen",
"stepTwo.previewSwitchTipStart": "Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird", "stepTwo.previewSwitchTipStart": "Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird",

View File

@@ -81,7 +81,7 @@
"debugInfo.title": "Debuggen", "debugInfo.title": "Debuggen",
"debugInfo.viewDocs": "Dokumente anzeigen", "debugInfo.viewDocs": "Dokumente anzeigen",
"deprecated": "Abgelehnt", "deprecated": "Abgelehnt",
"detailPanel.actionNum": "{{num}} {{Aktion}} IINKLUSIVE", "detailPanel.actionNum": "{{num}} {{action}} IINKLUSIVE",
"detailPanel.categoryTip.debugging": "Debuggen-Plugin", "detailPanel.categoryTip.debugging": "Debuggen-Plugin",
"detailPanel.categoryTip.github": "Installiert von Github", "detailPanel.categoryTip.github": "Installiert von Github",
"detailPanel.categoryTip.local": "Lokales Plugin", "detailPanel.categoryTip.local": "Lokales Plugin",
@@ -116,7 +116,7 @@
"detailPanel.operation.update": "Aktualisieren", "detailPanel.operation.update": "Aktualisieren",
"detailPanel.operation.viewDetail": "Im Detail sehen", "detailPanel.operation.viewDetail": "Im Detail sehen",
"detailPanel.serviceOk": "Service in Ordnung", "detailPanel.serviceOk": "Service in Ordnung",
"detailPanel.strategyNum": "{{num}} {{Strategie}} IINKLUSIVE", "detailPanel.strategyNum": "{{num}} {{strategy}} IINKLUSIVE",
"detailPanel.switchVersion": "Version wechseln", "detailPanel.switchVersion": "Version wechseln",
"detailPanel.toolSelector.auto": "Auto", "detailPanel.toolSelector.auto": "Auto",
"detailPanel.toolSelector.descriptionLabel": "Beschreibung des Werkzeugs", "detailPanel.toolSelector.descriptionLabel": "Beschreibung des Werkzeugs",
@@ -236,7 +236,7 @@
"task.installSuccess": "{{successLength}} plugins installed successfully", "task.installSuccess": "{{successLength}} plugins installed successfully",
"task.installed": "Installed", "task.installed": "Installed",
"task.installedError": "{{errorLength}} Plugins konnten nicht installiert werden", "task.installedError": "{{errorLength}} Plugins konnten nicht installiert werden",
"task.installing": "Installation von {{installingLength}} Plugins, 0 erledigt.", "task.installing": "Installation von Plugins, 0 erledigt.",
"task.installingWithError": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich, {{errorLength}} fehlgeschlagen", "task.installingWithError": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich, {{errorLength}} fehlgeschlagen",
"task.installingWithSuccess": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich.", "task.installingWithSuccess": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich.",
"task.runningPlugins": "Installing Plugins", "task.runningPlugins": "Installing Plugins",

View File

@@ -363,7 +363,7 @@
"nodes.agent.strategyNotFoundDescAndSwitchVersion": "Die installierte Plugin-Version bietet diese Strategie nicht. Klicken Sie hier, um die Version zu wechseln.", "nodes.agent.strategyNotFoundDescAndSwitchVersion": "Die installierte Plugin-Version bietet diese Strategie nicht. Klicken Sie hier, um die Version zu wechseln.",
"nodes.agent.strategyNotInstallTooltip": "{{strategy}} ist nicht installiert", "nodes.agent.strategyNotInstallTooltip": "{{strategy}} ist nicht installiert",
"nodes.agent.strategyNotSet": "Agentische Strategie nicht festgelegt", "nodes.agent.strategyNotSet": "Agentische Strategie nicht festgelegt",
"nodes.agent.toolNotAuthorizedTooltip": "{{Werkzeug}} Nicht autorisiert", "nodes.agent.toolNotAuthorizedTooltip": "{{tool}} Nicht autorisiert",
"nodes.agent.toolNotInstallTooltip": "{{tool}} ist nicht installiert", "nodes.agent.toolNotInstallTooltip": "{{tool}} ist nicht installiert",
"nodes.agent.toolbox": "Werkzeugkasten", "nodes.agent.toolbox": "Werkzeugkasten",
"nodes.agent.tools": "Werkzeuge", "nodes.agent.tools": "Werkzeuge",
@@ -549,8 +549,8 @@
"nodes.iteration.deleteDesc": "Das Löschen des Iterationsknotens löscht alle untergeordneten Knoten", "nodes.iteration.deleteDesc": "Das Löschen des Iterationsknotens löscht alle untergeordneten Knoten",
"nodes.iteration.deleteTitle": "Iterationsknoten löschen?", "nodes.iteration.deleteTitle": "Iterationsknoten löschen?",
"nodes.iteration.errorResponseMethod": "Methode der Fehlerantwort", "nodes.iteration.errorResponseMethod": "Methode der Fehlerantwort",
"nodes.iteration.error_one": "{{Anzahl}} Fehler", "nodes.iteration.error_one": "{{count}} Fehler",
"nodes.iteration.error_other": "{{Anzahl}} Irrtümer", "nodes.iteration.error_other": "{{count}} Irrtümer",
"nodes.iteration.flattenOutput": "Ausgabe abflachen", "nodes.iteration.flattenOutput": "Ausgabe abflachen",
"nodes.iteration.flattenOutputDesc": "Wenn aktiviert, werden alle Iterationsergebnisse, die Arrays sind, in ein einzelnes Array zusammengeführt. Wenn deaktiviert, behalten die Ergebnisse eine verschachtelte Array-Struktur bei.", "nodes.iteration.flattenOutputDesc": "Wenn aktiviert, werden alle Iterationsergebnisse, die Arrays sind, in ein einzelnes Array zusammengeführt. Wenn deaktiviert, behalten die Ergebnisse eine verschachtelte Array-Struktur bei.",
"nodes.iteration.input": "Eingabe", "nodes.iteration.input": "Eingabe",

View File

@@ -83,7 +83,7 @@
"gotoAnything.emptyState.noKnowledgeBasesFound": "No se han encontrado bases de conocimiento", "gotoAnything.emptyState.noKnowledgeBasesFound": "No se han encontrado bases de conocimiento",
"gotoAnything.emptyState.noPluginsFound": "No se encontraron complementos", "gotoAnything.emptyState.noPluginsFound": "No se encontraron complementos",
"gotoAnything.emptyState.noWorkflowNodesFound": "No se encontraron nodos de flujo de trabajo", "gotoAnything.emptyState.noWorkflowNodesFound": "No se encontraron nodos de flujo de trabajo",
"gotoAnything.emptyState.tryDifferentTerm": "Intenta un término de búsqueda diferente o elimina el filtro {{mode}}", "gotoAnything.emptyState.tryDifferentTerm": "Intenta un término de búsqueda diferente o elimina el filtro",
"gotoAnything.emptyState.trySpecificSearch": "Prueba {{shortcuts}} para búsquedas específicas", "gotoAnything.emptyState.trySpecificSearch": "Prueba {{shortcuts}} para búsquedas específicas",
"gotoAnything.groups.apps": "Aplicaciones", "gotoAnything.groups.apps": "Aplicaciones",
"gotoAnything.groups.commands": "Comandos", "gotoAnything.groups.commands": "Comandos",
@@ -161,8 +161,8 @@
"newApp.dropDSLToCreateApp": "Suelta el archivo DSL aquí para crear la aplicación", "newApp.dropDSLToCreateApp": "Suelta el archivo DSL aquí para crear la aplicación",
"newApp.forAdvanced": "PARA USUARIOS AVANZADOS", "newApp.forAdvanced": "PARA USUARIOS AVANZADOS",
"newApp.forBeginners": "Tipos de aplicación más básicos", "newApp.forBeginners": "Tipos de aplicación más básicos",
"newApp.foundResult": "{{conteo}} Resultado", "newApp.foundResult": "{{count}} Resultado",
"newApp.foundResults": "{{conteo}} Resultados", "newApp.foundResults": "{{count}} Resultados",
"newApp.hideTemplates": "Volver a la selección de modo", "newApp.hideTemplates": "Volver a la selección de modo",
"newApp.import": "Importación", "newApp.import": "Importación",
"newApp.learnMore": "Aprende más", "newApp.learnMore": "Aprende más",

View File

@@ -140,7 +140,7 @@
"stepTwo.preview": "Confirmar y vista previa", "stepTwo.preview": "Confirmar y vista previa",
"stepTwo.previewButton": "Cambiar a formato de pregunta y respuesta", "stepTwo.previewButton": "Cambiar a formato de pregunta y respuesta",
"stepTwo.previewChunk": "Fragmento de vista previa", "stepTwo.previewChunk": "Fragmento de vista previa",
"stepTwo.previewChunkCount": "{{conteo}} Fragmentos estimados", "stepTwo.previewChunkCount": "{{count}} Fragmentos estimados",
"stepTwo.previewChunkTip": "Haga clic en el botón 'Vista previa de fragmento' a la izquierda para cargar la vista previa", "stepTwo.previewChunkTip": "Haga clic en el botón 'Vista previa de fragmento' a la izquierda para cargar la vista previa",
"stepTwo.previewSwitchTipEnd": " consumirá tokens adicionales", "stepTwo.previewSwitchTipEnd": " consumirá tokens adicionales",
"stepTwo.previewSwitchTipStart": "La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta", "stepTwo.previewSwitchTipStart": "La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta",

View File

@@ -81,7 +81,7 @@
"debugInfo.title": "Depuración", "debugInfo.title": "Depuración",
"debugInfo.viewDocs": "Ver documentos", "debugInfo.viewDocs": "Ver documentos",
"deprecated": "Obsoleto", "deprecated": "Obsoleto",
"detailPanel.actionNum": "{{num}} {{acción}} INCLUIDO", "detailPanel.actionNum": "{{num}} {{action}} INCLUIDO",
"detailPanel.categoryTip.debugging": "Complemento de depuración", "detailPanel.categoryTip.debugging": "Complemento de depuración",
"detailPanel.categoryTip.github": "Instalado desde Github", "detailPanel.categoryTip.github": "Instalado desde Github",
"detailPanel.categoryTip.local": "Plugin Local", "detailPanel.categoryTip.local": "Plugin Local",
@@ -96,7 +96,7 @@
"detailPanel.deprecation.reason.noMaintainer": "sin mantenedor", "detailPanel.deprecation.reason.noMaintainer": "sin mantenedor",
"detailPanel.deprecation.reason.ownershipTransferred": "propiedad transferida", "detailPanel.deprecation.reason.ownershipTransferred": "propiedad transferida",
"detailPanel.disabled": "Deshabilitado", "detailPanel.disabled": "Deshabilitado",
"detailPanel.endpointDeleteContent": "¿Te gustaría eliminar {{nombre}}?", "detailPanel.endpointDeleteContent": "¿Te gustaría eliminar {{name}}?",
"detailPanel.endpointDeleteTip": "Eliminar punto de conexión", "detailPanel.endpointDeleteTip": "Eliminar punto de conexión",
"detailPanel.endpointDisableContent": "¿Te gustaría desactivar {{name}}?", "detailPanel.endpointDisableContent": "¿Te gustaría desactivar {{name}}?",
"detailPanel.endpointDisableTip": "Deshabilitar punto de conexión", "detailPanel.endpointDisableTip": "Deshabilitar punto de conexión",
@@ -116,7 +116,7 @@
"detailPanel.operation.update": "Actualizar", "detailPanel.operation.update": "Actualizar",
"detailPanel.operation.viewDetail": "Ver Detalle", "detailPanel.operation.viewDetail": "Ver Detalle",
"detailPanel.serviceOk": "Servicio OK", "detailPanel.serviceOk": "Servicio OK",
"detailPanel.strategyNum": "{{num}} {{estrategia}} INCLUIDO", "detailPanel.strategyNum": "{{num}} {{strategy}} INCLUIDO",
"detailPanel.switchVersion": "Versión del interruptor", "detailPanel.switchVersion": "Versión del interruptor",
"detailPanel.toolSelector.auto": "Auto", "detailPanel.toolSelector.auto": "Auto",
"detailPanel.toolSelector.descriptionLabel": "Descripción de la herramienta", "detailPanel.toolSelector.descriptionLabel": "Descripción de la herramienta",
@@ -236,7 +236,7 @@
"task.installSuccess": "{{successLength}} plugins installed successfully", "task.installSuccess": "{{successLength}} plugins installed successfully",
"task.installed": "Installed", "task.installed": "Installed",
"task.installedError": "Los complementos {{errorLength}} no se pudieron instalar", "task.installedError": "Los complementos {{errorLength}} no se pudieron instalar",
"task.installing": "Instalando plugins {{installingLength}}, 0 hecho.", "task.installing": "Instalando plugins, 0 hecho.",
"task.installingWithError": "Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido", "task.installingWithError": "Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido",
"task.installingWithSuccess": "Instalando plugins {{installingLength}}, {{successLength}} éxito.", "task.installingWithSuccess": "Instalando plugins {{installingLength}}, {{successLength}} éxito.",
"task.runningPlugins": "Installing Plugins", "task.runningPlugins": "Installing Plugins",

View File

@@ -303,10 +303,10 @@
"errorMsg.fields.visionVariable": "Variable de visión", "errorMsg.fields.visionVariable": "Variable de visión",
"errorMsg.invalidJson": "{{field}} no es un JSON válido", "errorMsg.invalidJson": "{{field}} no es un JSON válido",
"errorMsg.invalidVariable": "Variable no válida", "errorMsg.invalidVariable": "Variable no válida",
"errorMsg.noValidTool": "{{campo}} no se ha seleccionado ninguna herramienta válida", "errorMsg.noValidTool": "{{field}} no se ha seleccionado ninguna herramienta válida",
"errorMsg.rerankModelRequired": "Antes de activar el modelo de reclasificación, confirme que el modelo se ha configurado correctamente en la configuración.", "errorMsg.rerankModelRequired": "Antes de activar el modelo de reclasificación, confirme que el modelo se ha configurado correctamente en la configuración.",
"errorMsg.startNodeRequired": "Por favor, agregue primero un nodo de inicio antes de {{operation}}", "errorMsg.startNodeRequired": "Por favor, agregue primero un nodo de inicio antes de {{operation}}",
"errorMsg.toolParameterRequired": "{{campo}}: el parámetro [{{param}}] es obligatorio", "errorMsg.toolParameterRequired": "{{field}}: el parámetro [{{param}}] es obligatorio",
"globalVar.description": "Las variables del sistema son variables globales que cualquier nodo puede usar sin conexiones cuando el tipo es correcto, como el ID del usuario final y el ID del flujo de trabajo.", "globalVar.description": "Las variables del sistema son variables globales que cualquier nodo puede usar sin conexiones cuando el tipo es correcto, como el ID del usuario final y el ID del flujo de trabajo.",
"globalVar.fieldsDescription.appId": "ID de la aplicación", "globalVar.fieldsDescription.appId": "ID de la aplicación",
"globalVar.fieldsDescription.conversationId": "ID de la conversación", "globalVar.fieldsDescription.conversationId": "ID de la conversación",
@@ -361,10 +361,10 @@
"nodes.agent.strategy.tooltip": "Diferentes estrategias agentic determinan cómo el sistema planifica y ejecuta las llamadas a herramientas de varios pasos", "nodes.agent.strategy.tooltip": "Diferentes estrategias agentic determinan cómo el sistema planifica y ejecuta las llamadas a herramientas de varios pasos",
"nodes.agent.strategyNotFoundDesc": "La versión del plugin instalado no proporciona esta estrategia.", "nodes.agent.strategyNotFoundDesc": "La versión del plugin instalado no proporciona esta estrategia.",
"nodes.agent.strategyNotFoundDescAndSwitchVersion": "La versión del plugin instalado no proporciona esta estrategia. Haga clic para cambiar de versión.", "nodes.agent.strategyNotFoundDescAndSwitchVersion": "La versión del plugin instalado no proporciona esta estrategia. Haga clic para cambiar de versión.",
"nodes.agent.strategyNotInstallTooltip": "{{estrategia}} no está instalado", "nodes.agent.strategyNotInstallTooltip": "{{strategy}} no está instalado",
"nodes.agent.strategyNotSet": "Estrategia agentica No establecida", "nodes.agent.strategyNotSet": "Estrategia agentica No establecida",
"nodes.agent.toolNotAuthorizedTooltip": "{{herramienta}} No autorizado", "nodes.agent.toolNotAuthorizedTooltip": "{{tool}} No autorizado",
"nodes.agent.toolNotInstallTooltip": "{{herramienta}} no está instalada", "nodes.agent.toolNotInstallTooltip": "{{tool}} no está instalada",
"nodes.agent.toolbox": "caja de herramientas", "nodes.agent.toolbox": "caja de herramientas",
"nodes.agent.tools": "Herramientas", "nodes.agent.tools": "Herramientas",
"nodes.agent.unsupportedStrategy": "Estrategia no respaldada", "nodes.agent.unsupportedStrategy": "Estrategia no respaldada",
@@ -438,7 +438,7 @@
"nodes.common.retry.retries": "{{num}} Reintentos", "nodes.common.retry.retries": "{{num}} Reintentos",
"nodes.common.retry.retry": "Reintentar", "nodes.common.retry.retry": "Reintentar",
"nodes.common.retry.retryFailed": "Error en el reintento", "nodes.common.retry.retryFailed": "Error en el reintento",
"nodes.common.retry.retryFailedTimes": "{{veces}} reintentos fallidos", "nodes.common.retry.retryFailedTimes": "{{times}} reintentos fallidos",
"nodes.common.retry.retryInterval": "Intervalo de reintento", "nodes.common.retry.retryInterval": "Intervalo de reintento",
"nodes.common.retry.retryOnFailure": "Volver a intentarlo en caso de error", "nodes.common.retry.retryOnFailure": "Volver a intentarlo en caso de error",
"nodes.common.retry.retrySuccessful": "Volver a intentarlo correctamente", "nodes.common.retry.retrySuccessful": "Volver a intentarlo correctamente",
@@ -453,7 +453,7 @@
"nodes.docExtractor.inputVar": "Variable de entrada", "nodes.docExtractor.inputVar": "Variable de entrada",
"nodes.docExtractor.learnMore": "Aprende más", "nodes.docExtractor.learnMore": "Aprende más",
"nodes.docExtractor.outputVars.text": "Texto extraído", "nodes.docExtractor.outputVars.text": "Texto extraído",
"nodes.docExtractor.supportFileTypes": "Tipos de archivos de soporte: {{tipos}}.", "nodes.docExtractor.supportFileTypes": "Tipos de archivos de soporte: {{types}}.",
"nodes.end.output.type": "tipo de salida", "nodes.end.output.type": "tipo de salida",
"nodes.end.output.variable": "variable de salida", "nodes.end.output.variable": "variable de salida",
"nodes.end.outputs": "Salidas", "nodes.end.outputs": "Salidas",
@@ -549,8 +549,8 @@
"nodes.iteration.deleteDesc": "Eliminar el nodo de iteración eliminará todos los nodos secundarios", "nodes.iteration.deleteDesc": "Eliminar el nodo de iteración eliminará todos los nodos secundarios",
"nodes.iteration.deleteTitle": "¿Eliminar nodo de iteración?", "nodes.iteration.deleteTitle": "¿Eliminar nodo de iteración?",
"nodes.iteration.errorResponseMethod": "Método de respuesta a errores", "nodes.iteration.errorResponseMethod": "Método de respuesta a errores",
"nodes.iteration.error_one": "{{conteo}} Error", "nodes.iteration.error_one": "{{count}} Error",
"nodes.iteration.error_other": "{{conteo}} Errores", "nodes.iteration.error_other": "{{count}} Errores",
"nodes.iteration.flattenOutput": "Aplanar salida", "nodes.iteration.flattenOutput": "Aplanar salida",
"nodes.iteration.flattenOutputDesc": "Cuando está habilitado, si todas las salidas de la iteración son arrays, se aplanarán en un solo array. Cuando está deshabilitado, las salidas mantendrán una estructura de array anidada.", "nodes.iteration.flattenOutputDesc": "Cuando está habilitado, si todas las salidas de la iteración son arrays, se aplanarán en un solo array. Cuando está deshabilitado, las salidas mantendrán una estructura de array anidada.",
"nodes.iteration.input": "Entrada", "nodes.iteration.input": "Entrada",

View File

@@ -83,7 +83,7 @@
"gotoAnything.emptyState.noKnowledgeBasesFound": "هیچ پایگاه دانش یافت نشد", "gotoAnything.emptyState.noKnowledgeBasesFound": "هیچ پایگاه دانش یافت نشد",
"gotoAnything.emptyState.noPluginsFound": "هیچ افزونه ای یافت نشد", "gotoAnything.emptyState.noPluginsFound": "هیچ افزونه ای یافت نشد",
"gotoAnything.emptyState.noWorkflowNodesFound": "هیچ گره گردش کاری یافت نشد", "gotoAnything.emptyState.noWorkflowNodesFound": "هیچ گره گردش کاری یافت نشد",
"gotoAnything.emptyState.tryDifferentTerm": "یک عبارت جستجوی متفاوت را امتحان کنید یا فیلتر {{mode}} را حذف کنید", "gotoAnything.emptyState.tryDifferentTerm": "یک عبارت جستجوی متفاوت را امتحان کنید یا فیلتر را حذف کنید",
"gotoAnything.emptyState.trySpecificSearch": "{{shortcuts}} را برای جستجوهای خاص امتحان کنید", "gotoAnything.emptyState.trySpecificSearch": "{{shortcuts}} را برای جستجوهای خاص امتحان کنید",
"gotoAnything.groups.apps": "برنامه‌ها", "gotoAnything.groups.apps": "برنامه‌ها",
"gotoAnything.groups.commands": "دستورات", "gotoAnything.groups.commands": "دستورات",

View File

@@ -140,7 +140,7 @@
"stepTwo.preview": "تأیید و پیشنمایش", "stepTwo.preview": "تأیید و پیشنمایش",
"stepTwo.previewButton": "تغییر به قالب پرسش و پاسخ", "stepTwo.previewButton": "تغییر به قالب پرسش و پاسخ",
"stepTwo.previewChunk": "پیش نمایش تکه", "stepTwo.previewChunk": "پیش نمایش تکه",
"stepTwo.previewChunkCount": "{{تعداد}} تکه های تخمینی", "stepTwo.previewChunkCount": "{{count}} تکه های تخمینی",
"stepTwo.previewChunkTip": "روی دکمه \"پیش نمایش قطعه\" در سمت چپ کلیک کنید تا پیش نمایش بارگیری شود", "stepTwo.previewChunkTip": "روی دکمه \"پیش نمایش قطعه\" در سمت چپ کلیک کنید تا پیش نمایش بارگیری شود",
"stepTwo.previewSwitchTipEnd": " توکنهای اضافی مصرف خواهد کرد", "stepTwo.previewSwitchTipEnd": " توکنهای اضافی مصرف خواهد کرد",
"stepTwo.previewSwitchTipStart": "پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ", "stepTwo.previewSwitchTipStart": "پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ",

View File

@@ -147,7 +147,7 @@
"parentMode.paragraph": "پاراگراف", "parentMode.paragraph": "پاراگراف",
"partialEnabled_one": "مجموعاً {{count}} سند، {{num}} موجود", "partialEnabled_one": "مجموعاً {{count}} سند، {{num}} موجود",
"partialEnabled_other": "مجموع {{count}} سند، {{num}} موجود", "partialEnabled_other": "مجموع {{count}} سند، {{num}} موجود",
"preprocessDocument": "{{عدد}} اسناد پیش پردازش", "preprocessDocument": "{{num}} اسناد پیش پردازش",
"rerankSettings": "تنظیمات دوباره رتبه‌بندی", "rerankSettings": "تنظیمات دوباره رتبه‌بندی",
"retrieval.change": "تغییر", "retrieval.change": "تغییر",
"retrieval.changeRetrievalMethod": "تغییر روش بازیابی", "retrieval.changeRetrievalMethod": "تغییر روش بازیابی",

View File

@@ -81,7 +81,7 @@
"debugInfo.title": "اشکال زدایی", "debugInfo.title": "اشکال زدایی",
"debugInfo.viewDocs": "مشاهده اسناد", "debugInfo.viewDocs": "مشاهده اسناد",
"deprecated": "منسوخ شده", "deprecated": "منسوخ شده",
"detailPanel.actionNum": "{{عدد}} {{اقدام}} شامل", "detailPanel.actionNum": "{{num}} {{action}} شامل",
"detailPanel.categoryTip.debugging": "اشکال زدایی پلاگین", "detailPanel.categoryTip.debugging": "اشکال زدایی پلاگین",
"detailPanel.categoryTip.github": "نصب شده از Github", "detailPanel.categoryTip.github": "نصب شده از Github",
"detailPanel.categoryTip.local": "پلاگین محلی", "detailPanel.categoryTip.local": "پلاگین محلی",
@@ -106,7 +106,7 @@
"detailPanel.endpointsDocLink": "مشاهده سند", "detailPanel.endpointsDocLink": "مشاهده سند",
"detailPanel.endpointsEmpty": "برای افزودن نقطه پایانی روی دکمه \"+\" کلیک کنید", "detailPanel.endpointsEmpty": "برای افزودن نقطه پایانی روی دکمه \"+\" کلیک کنید",
"detailPanel.endpointsTip": "این افزونه عملکردهای خاصی را از طریق نقاط پایانی ارائه می دهد و می توانید چندین مجموعه نقطه پایانی را برای فضای کاری فعلی پیکربندی کنید.", "detailPanel.endpointsTip": "این افزونه عملکردهای خاصی را از طریق نقاط پایانی ارائه می دهد و می توانید چندین مجموعه نقطه پایانی را برای فضای کاری فعلی پیکربندی کنید.",
"detailPanel.modelNum": "{{عدد}} مدل های گنجانده شده است", "detailPanel.modelNum": "{{num}} مدل های گنجانده شده است",
"detailPanel.operation.back": "بازگشت", "detailPanel.operation.back": "بازگشت",
"detailPanel.operation.checkUpdate": "به روز رسانی را بررسی کنید", "detailPanel.operation.checkUpdate": "به روز رسانی را بررسی کنید",
"detailPanel.operation.detail": "جزئیات", "detailPanel.operation.detail": "جزئیات",
@@ -116,7 +116,7 @@
"detailPanel.operation.update": "روز رسانی", "detailPanel.operation.update": "روز رسانی",
"detailPanel.operation.viewDetail": "نمایش جزئیات", "detailPanel.operation.viewDetail": "نمایش جزئیات",
"detailPanel.serviceOk": "خدمات خوب", "detailPanel.serviceOk": "خدمات خوب",
"detailPanel.strategyNum": "{{عدد}} {{استراتژی}} شامل", "detailPanel.strategyNum": "{{num}} {{strategy}} شامل",
"detailPanel.switchVersion": "نسخه سوئیچ", "detailPanel.switchVersion": "نسخه سوئیچ",
"detailPanel.toolSelector.auto": "خودکار", "detailPanel.toolSelector.auto": "خودکار",
"detailPanel.toolSelector.descriptionLabel": "توضیحات ابزار", "detailPanel.toolSelector.descriptionLabel": "توضیحات ابزار",
@@ -236,7 +236,7 @@
"task.installSuccess": "{{successLength}} plugins installed successfully", "task.installSuccess": "{{successLength}} plugins installed successfully",
"task.installed": "Installed", "task.installed": "Installed",
"task.installedError": "افزونه های {{errorLength}} نصب نشدند", "task.installedError": "افزونه های {{errorLength}} نصب نشدند",
"task.installing": "نصب پلاگین های {{installingLength}}، 0 انجام شد.", "task.installing": "نصب پلاگین های ، 0 انجام شد.",
"task.installingWithError": "نصب پلاگین های {{installingLength}}، {{successLength}} با موفقیت مواجه شد، {{errorLength}} ناموفق بود", "task.installingWithError": "نصب پلاگین های {{installingLength}}، {{successLength}} با موفقیت مواجه شد، {{errorLength}} ناموفق بود",
"task.installingWithSuccess": "نصب پلاگین های {{installingLength}}، {{successLength}} موفقیت آمیز است.", "task.installingWithSuccess": "نصب پلاگین های {{installingLength}}، {{successLength}} موفقیت آمیز است.",
"task.runningPlugins": "Installing Plugins", "task.runningPlugins": "Installing Plugins",

View File

@@ -363,8 +363,8 @@
"nodes.agent.strategyNotFoundDescAndSwitchVersion": "نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.", "nodes.agent.strategyNotFoundDescAndSwitchVersion": "نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.",
"nodes.agent.strategyNotInstallTooltip": "{{strategy}} نصب نشده است", "nodes.agent.strategyNotInstallTooltip": "{{strategy}} نصب نشده است",
"nodes.agent.strategyNotSet": "استراتژی عامل تنظیم نشده است", "nodes.agent.strategyNotSet": "استراتژی عامل تنظیم نشده است",
"nodes.agent.toolNotAuthorizedTooltip": "{{ابزار}} مجاز نیست", "nodes.agent.toolNotAuthorizedTooltip": "{{tool}} مجاز نیست",
"nodes.agent.toolNotInstallTooltip": "{{ابزار}} نصب نشده است", "nodes.agent.toolNotInstallTooltip": "{{tool}} نصب نشده است",
"nodes.agent.toolbox": "جعبه ابزار", "nodes.agent.toolbox": "جعبه ابزار",
"nodes.agent.tools": "ابزار", "nodes.agent.tools": "ابزار",
"nodes.agent.unsupportedStrategy": "استراتژی پشتیبانی نشده", "nodes.agent.unsupportedStrategy": "استراتژی پشتیبانی نشده",
@@ -435,10 +435,10 @@
"nodes.common.pluginNotInstalled": "افزونه نصب نشده است", "nodes.common.pluginNotInstalled": "افزونه نصب نشده است",
"nodes.common.retry.maxRetries": "حداکثر تلاش مجدد", "nodes.common.retry.maxRetries": "حداکثر تلاش مجدد",
"nodes.common.retry.ms": "خانم", "nodes.common.retry.ms": "خانم",
"nodes.common.retry.retries": "{{عدد}} تلاش های مجدد", "nodes.common.retry.retries": "{{num}} تلاش های مجدد",
"nodes.common.retry.retry": "دوباره", "nodes.common.retry.retry": "دوباره",
"nodes.common.retry.retryFailed": "تلاش مجدد ناموفق بود", "nodes.common.retry.retryFailed": "تلاش مجدد ناموفق بود",
"nodes.common.retry.retryFailedTimes": "{{بار}} تلاش های مجدد ناموفق بود", "nodes.common.retry.retryFailedTimes": "{{times}} تلاش های مجدد ناموفق بود",
"nodes.common.retry.retryInterval": "فاصله تلاش مجدد", "nodes.common.retry.retryInterval": "فاصله تلاش مجدد",
"nodes.common.retry.retryOnFailure": "در مورد شکست دوباره امتحان کنید", "nodes.common.retry.retryOnFailure": "در مورد شکست دوباره امتحان کنید",
"nodes.common.retry.retrySuccessful": "امتحان مجدد با موفقیت انجام دهید", "nodes.common.retry.retrySuccessful": "امتحان مجدد با موفقیت انجام دهید",
@@ -549,8 +549,8 @@
"nodes.iteration.deleteDesc": "حذف نود تکرار باعث حذف تمام نودهای فرزند خواهد شد", "nodes.iteration.deleteDesc": "حذف نود تکرار باعث حذف تمام نودهای فرزند خواهد شد",
"nodes.iteration.deleteTitle": "حذف نود تکرار؟", "nodes.iteration.deleteTitle": "حذف نود تکرار؟",
"nodes.iteration.errorResponseMethod": "روش پاسخ به خطا", "nodes.iteration.errorResponseMethod": "روش پاسخ به خطا",
"nodes.iteration.error_one": "{{تعداد}} خطا", "nodes.iteration.error_one": "{{count}} خطا",
"nodes.iteration.error_other": "{{تعداد}} خطاهای", "nodes.iteration.error_other": "{{count}} خطاهای",
"nodes.iteration.flattenOutput": "صاف کردن خروجی", "nodes.iteration.flattenOutput": "صاف کردن خروجی",
"nodes.iteration.flattenOutputDesc": "هنگامی که فعال باشد، اگر تمام خروجی‌های تکرار آرایه باشند، آنها به یک آرایهٔ واحد تبدیل خواهند شد. هنگامی که غیرفعال باشد، خروجی‌ها ساختار آرایهٔ تو در تو را حفظ می‌کنند.", "nodes.iteration.flattenOutputDesc": "هنگامی که فعال باشد، اگر تمام خروجی‌های تکرار آرایه باشند، آنها به یک آرایهٔ واحد تبدیل خواهند شد. هنگامی که غیرفعال باشد، خروجی‌ها ساختار آرایهٔ تو در تو را حفظ می‌کنند.",
"nodes.iteration.input": "ورودی", "nodes.iteration.input": "ورودی",

View File

@@ -83,7 +83,7 @@
"gotoAnything.emptyState.noKnowledgeBasesFound": "Aucune base de connaissances trouvée", "gotoAnything.emptyState.noKnowledgeBasesFound": "Aucune base de connaissances trouvée",
"gotoAnything.emptyState.noPluginsFound": "Aucun plugin trouvé", "gotoAnything.emptyState.noPluginsFound": "Aucun plugin trouvé",
"gotoAnything.emptyState.noWorkflowNodesFound": "Aucun nœud de workflow trouvé", "gotoAnything.emptyState.noWorkflowNodesFound": "Aucun nœud de workflow trouvé",
"gotoAnything.emptyState.tryDifferentTerm": "Essayez un terme de recherche différent ou supprimez le filtre {{mode}}", "gotoAnything.emptyState.tryDifferentTerm": "Essayez un terme de recherche différent ou supprimez le filtre",
"gotoAnything.emptyState.trySpecificSearch": "Essayez {{shortcuts}} pour des recherches spécifiques", "gotoAnything.emptyState.trySpecificSearch": "Essayez {{shortcuts}} pour des recherches spécifiques",
"gotoAnything.groups.apps": "Applications", "gotoAnything.groups.apps": "Applications",
"gotoAnything.groups.commands": "Commandes", "gotoAnything.groups.commands": "Commandes",

View File

@@ -305,7 +305,7 @@
"modelProvider.addModel": "Ajouter un modèle", "modelProvider.addModel": "Ajouter un modèle",
"modelProvider.addMoreModelProvider": "AJOUTER PLUS DE FOURNISSEUR DE MODÈLE", "modelProvider.addMoreModelProvider": "AJOUTER PLUS DE FOURNISSEUR DE MODÈLE",
"modelProvider.apiKey": "API-KEY", "modelProvider.apiKey": "API-KEY",
"modelProvider.apiKeyRateLimit": "La limite de débit a été atteinte, disponible après {{secondes}}s", "modelProvider.apiKeyRateLimit": "La limite de débit a été atteinte, disponible après {{seconds}}s",
"modelProvider.apiKeyStatusNormal": "Létat de lAPIKey est normal", "modelProvider.apiKeyStatusNormal": "Létat de lAPIKey est normal",
"modelProvider.auth.addApiKey": "Ajouter une clé API", "modelProvider.auth.addApiKey": "Ajouter une clé API",
"modelProvider.auth.addCredential": "Ajouter un identifiant", "modelProvider.auth.addCredential": "Ajouter un identifiant",

View File

@@ -116,7 +116,7 @@
"detailPanel.operation.update": "Mettre à jour", "detailPanel.operation.update": "Mettre à jour",
"detailPanel.operation.viewDetail": "Voir les détails", "detailPanel.operation.viewDetail": "Voir les détails",
"detailPanel.serviceOk": "Service OK", "detailPanel.serviceOk": "Service OK",
"detailPanel.strategyNum": "{{num}} {{stratégie}} INCLUS", "detailPanel.strategyNum": "{{num}} {{strategy}} INCLUS",
"detailPanel.switchVersion": "Version du commutateur", "detailPanel.switchVersion": "Version du commutateur",
"detailPanel.toolSelector.auto": "Auto", "detailPanel.toolSelector.auto": "Auto",
"detailPanel.toolSelector.descriptionLabel": "Description de loutil", "detailPanel.toolSelector.descriptionLabel": "Description de loutil",
@@ -236,7 +236,7 @@
"task.installSuccess": "{{successLength}} plugins installed successfully", "task.installSuccess": "{{successLength}} plugins installed successfully",
"task.installed": "Installed", "task.installed": "Installed",
"task.installedError": "{{errorLength}} les plugins nont pas pu être installés", "task.installedError": "{{errorLength}} les plugins nont pas pu être installés",
"task.installing": "Installation des plugins {{installingLength}}, 0 fait.", "task.installing": "Installation des plugins, 0 fait.",
"task.installingWithError": "Installation des plugins {{installingLength}}, succès de {{successLength}}, échec de {{errorLength}}", "task.installingWithError": "Installation des plugins {{installingLength}}, succès de {{successLength}}, échec de {{errorLength}}",
"task.installingWithSuccess": "Installation des plugins {{installingLength}}, succès de {{successLength}}.", "task.installingWithSuccess": "Installation des plugins {{installingLength}}, succès de {{successLength}}.",
"task.runningPlugins": "Installing Plugins", "task.runningPlugins": "Installing Plugins",

View File

@@ -83,7 +83,7 @@
"gotoAnything.emptyState.noKnowledgeBasesFound": "कोई ज्ञान आधार नहीं मिले", "gotoAnything.emptyState.noKnowledgeBasesFound": "कोई ज्ञान आधार नहीं मिले",
"gotoAnything.emptyState.noPluginsFound": "कोई प्लगइन नहीं मिले", "gotoAnything.emptyState.noPluginsFound": "कोई प्लगइन नहीं मिले",
"gotoAnything.emptyState.noWorkflowNodesFound": "कोई कार्यप्रवाह नोड नहीं मिला", "gotoAnything.emptyState.noWorkflowNodesFound": "कोई कार्यप्रवाह नोड नहीं मिला",
"gotoAnything.emptyState.tryDifferentTerm": "एक अलग खोज शब्द आज़माएं या {{mode}} फ़िल्टर हटा दें", "gotoAnything.emptyState.tryDifferentTerm": "एक अलग खोज शब्द आज़माएं या फ़िल्टर हटा दें",
"gotoAnything.emptyState.trySpecificSearch": "विशिष्ट खोज के लिए {{shortcuts}} आज़माएं", "gotoAnything.emptyState.trySpecificSearch": "विशिष्ट खोज के लिए {{shortcuts}} आज़माएं",
"gotoAnything.groups.apps": "ऐप्स", "gotoAnything.groups.apps": "ऐप्स",
"gotoAnything.groups.commands": "आदेश", "gotoAnything.groups.commands": "आदेश",

View File

@@ -140,7 +140,7 @@
"stepTwo.preview": "पुष्टि करें और पूर्वावलोकन करें", "stepTwo.preview": "पुष्टि करें और पूर्वावलोकन करें",
"stepTwo.previewButton": "प्रश्न-उत्तर प्रारूप में स्विच करना", "stepTwo.previewButton": "प्रश्न-उत्तर प्रारूप में स्विच करना",
"stepTwo.previewChunk": "पूर्वावलोकन चंक", "stepTwo.previewChunk": "पूर्वावलोकन चंक",
"stepTwo.previewChunkCount": "{{गिनती}} अनुमानित खंड", "stepTwo.previewChunkCount": "{{count}} अनुमानित खंड",
"stepTwo.previewChunkTip": "पूर्वावलोकन लोड करने के लिए बाईं ओर 'पूर्वावलोकन चंक' बटन पर क्लिक करें", "stepTwo.previewChunkTip": "पूर्वावलोकन लोड करने के लिए बाईं ओर 'पूर्वावलोकन चंक' बटन पर क्लिक करें",
"stepTwo.previewSwitchTipEnd": " अतिरिक्त टोकन खर्च होंगे", "stepTwo.previewSwitchTipEnd": " अतिरिक्त टोकन खर्च होंगे",
"stepTwo.previewSwitchTipStart": "वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से", "stepTwo.previewSwitchTipStart": "वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से",

View File

@@ -116,7 +116,7 @@
"detailPanel.operation.update": "अपडेट", "detailPanel.operation.update": "अपडेट",
"detailPanel.operation.viewDetail": "विवरण देखें", "detailPanel.operation.viewDetail": "विवरण देखें",
"detailPanel.serviceOk": "सेवा ठीक है", "detailPanel.serviceOk": "सेवा ठीक है",
"detailPanel.strategyNum": "{{num}} {{रणनीति}} शामिल", "detailPanel.strategyNum": "{{num}} {{strategy}} शामिल",
"detailPanel.switchVersion": "स्विच संस्करण", "detailPanel.switchVersion": "स्विच संस्करण",
"detailPanel.toolSelector.auto": "स्वचालित", "detailPanel.toolSelector.auto": "स्वचालित",
"detailPanel.toolSelector.descriptionLabel": "उपकरण का विवरण", "detailPanel.toolSelector.descriptionLabel": "उपकरण का विवरण",

View File

@@ -286,8 +286,5 @@
"pbkdf2": "~3.1.3", "pbkdf2": "~3.1.3",
"prismjs": "~1.30", "prismjs": "~1.30",
"string-width": "~4.2.3" "string-width": "~4.2.3"
},
"lint-staged": {
"*": "eslint --fix"
} }
} }