feat(i18n): close the pt-PT parity gap (1,794 keys) (#2386)
Co-authored-by: Kandev Agent <agent@kandev.dev> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,8 @@
|
||||
"i18n:check": "node scripts/check-i18n-keys.mjs && node scripts/check-trans-indices.mjs && node scripts/check-inline-plurals.mjs && node scripts/check-module-scope-t.mjs",
|
||||
"i18n:ratchet": "node scripts/run-i18n-ratchet.mjs",
|
||||
"i18n:removed": "node scripts/check-removed-literals.mjs",
|
||||
"i18n:sweep": "node scripts/i18n-sweep.mjs"
|
||||
"i18n:sweep": "node scripts/i18n-sweep.mjs",
|
||||
"i18n:parity": "node scripts/i18n-parity.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@base-ui/react": "^1.0.0",
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Report translation-catalog parity: how many `en` keys each real locale is
|
||||
* missing, and which keys it still carries that `en` no longer defines.
|
||||
*
|
||||
* WHY THIS EXISTS
|
||||
*
|
||||
* Real-locale parity is deliberately advisory (#2272): Chinese is maintained by
|
||||
* a third party and must never be able to fail our builds. That decision stands.
|
||||
* Its cost is that drift is silent — pt-PT shipped complete and then fell 1,791
|
||||
* keys behind, an entire absent namespace among them, without any check going
|
||||
* red. The measurement existed only as a snippet people pasted into chat logs,
|
||||
* which is the same as not existing. This makes it a command.
|
||||
*
|
||||
* It is a REPORT, NOT A GATE. It exits 0 whatever it finds, and it is wired into
|
||||
* neither CI, nor pre-commit, nor `i18n:check`. Making it fail a build would
|
||||
* quietly overturn #2272. The one exception is input it cannot read (a malformed
|
||||
* catalog throws and exits non-zero) — the same line `i18n-sweep.mjs` draws,
|
||||
* because an unparseable file is a broken input, not a finding.
|
||||
*
|
||||
* Locales and namespaces are both discovered from disk via the same helpers
|
||||
* `check-i18n-keys.mjs` uses, so the two can never disagree about what a locale
|
||||
* is. Adding `fr/` tomorrow extends the report with no edit here; a hardcoded
|
||||
* list is the exact shape that let the last gap hide.
|
||||
*
|
||||
* WHAT A CLEAN RUN DOES *NOT* TELL YOU
|
||||
*
|
||||
* 1. It counts MISSING KEYS ONLY. A key whose English text changed after it was
|
||||
* translated still counts as present, so the locale looks complete while the
|
||||
* translation says something the source no longer says. Stale translations are
|
||||
* invisible to this script and no check in this repo detects them today.
|
||||
* 2. It measures PRESENCE, NOT QUALITY. Every key can be present and every one of
|
||||
* them wrong, machine-translated, or in the wrong regional variant, and this
|
||||
* prints a clean table. The pseudo-locale (Settings > General > Appearance)
|
||||
* and human review remain the only checks on whether the copy is any good.
|
||||
*
|
||||
* One deliberate difference from `check-i18n-keys.mjs`: there, a wholly-absent
|
||||
* namespace scores as a single advisory issue. Here it counts as every key it
|
||||
* would have contained. That difference is the whole point — 889 absent keys
|
||||
* reported as "1" is precisely how an entire missing namespace stayed invisible.
|
||||
*
|
||||
* Usage: node scripts/i18n-parity.mjs [localesDir]
|
||||
*/
|
||||
import path from "node:path";
|
||||
|
||||
import { discoverRealLocales, readLocaleNamespaces } from "./lib/i18n-catalogs.mjs";
|
||||
|
||||
const DEFAULT_LOCALES_DIR = path.join(import.meta.dirname, "..", "src", "locales");
|
||||
const LOCALES_DIR = process.argv[2] ?? DEFAULT_LOCALES_DIR;
|
||||
|
||||
const SOURCE_LOCALE = "en";
|
||||
|
||||
/**
|
||||
* Per-namespace counts for one locale.
|
||||
*
|
||||
* `missing` treats an absent namespace file as all of its `en` keys missing —
|
||||
* see the note above on why this deliberately diverges from the advisory check.
|
||||
*/
|
||||
function localeReport(sourceNamespaces, translatedNamespaces) {
|
||||
const missingByNamespace = new Map();
|
||||
const extraKeys = [];
|
||||
const absentNamespaces = [];
|
||||
|
||||
for (const [namespace, sourceMessages] of sourceNamespaces) {
|
||||
const translatedMessages = translatedNamespaces.get(namespace);
|
||||
if (!translatedMessages) {
|
||||
missingByNamespace.set(namespace, sourceMessages.size);
|
||||
absentNamespaces.push(namespace);
|
||||
continue;
|
||||
}
|
||||
let missing = 0;
|
||||
for (const key of sourceMessages.keys()) if (!translatedMessages.has(key)) missing += 1;
|
||||
missingByNamespace.set(namespace, missing);
|
||||
for (const key of translatedMessages.keys()) {
|
||||
if (!sourceMessages.has(key)) extraKeys.push(`${namespace}: ${key}`);
|
||||
}
|
||||
}
|
||||
|
||||
// A namespace the locale has and `en` does not is extra in its entirety.
|
||||
const extraNamespaces = [...translatedNamespaces.keys()].filter(
|
||||
(ns) => !sourceNamespaces.has(ns),
|
||||
);
|
||||
|
||||
return { missingByNamespace, extraKeys, extraNamespaces, absentNamespaces };
|
||||
}
|
||||
|
||||
function pad(value, width, align = "right") {
|
||||
const text = String(value);
|
||||
return align === "right" ? text.padStart(width) : text.padEnd(width);
|
||||
}
|
||||
|
||||
function renderTable(sourceNamespaces, locales, reports) {
|
||||
const namespaces = [...sourceNamespaces.keys()];
|
||||
const rowLabel = (ns) => `${ns}.json`;
|
||||
|
||||
const nameWidth = Math.max("namespace".length, ...namespaces.map((ns) => rowLabel(ns).length), 5);
|
||||
const columnWidth = (locale, values) =>
|
||||
Math.max(locale.length, ...values.map((v) => String(v).length), 4) + 2;
|
||||
|
||||
const sourceTotal = namespaces.reduce((sum, ns) => sum + sourceNamespaces.get(ns).size, 0);
|
||||
const sourceValues = [...namespaces.map((ns) => sourceNamespaces.get(ns).size), sourceTotal];
|
||||
const sourceWidth = columnWidth(SOURCE_LOCALE, sourceValues);
|
||||
|
||||
const localeTotals = locales.map((locale) =>
|
||||
namespaces.reduce((sum, ns) => sum + reports.get(locale).missingByNamespace.get(ns), 0),
|
||||
);
|
||||
const localeWidths = locales.map((locale, index) =>
|
||||
columnWidth(locale, [
|
||||
...namespaces.map((ns) => reports.get(locale).missingByNamespace.get(ns)),
|
||||
localeTotals[index],
|
||||
]),
|
||||
);
|
||||
|
||||
const lines = [];
|
||||
lines.push(
|
||||
pad("namespace", nameWidth, "left") +
|
||||
pad(SOURCE_LOCALE, sourceWidth) +
|
||||
locales.map((locale, i) => pad(locale, localeWidths[i])).join(""),
|
||||
);
|
||||
|
||||
const ruleWidth = nameWidth + sourceWidth + localeWidths.reduce((a, b) => a + b, 0);
|
||||
const rule = "-".repeat(ruleWidth);
|
||||
lines.push(rule);
|
||||
|
||||
for (const ns of namespaces) {
|
||||
lines.push(
|
||||
pad(rowLabel(ns), nameWidth, "left") +
|
||||
pad(sourceNamespaces.get(ns).size, sourceWidth) +
|
||||
locales
|
||||
.map((locale, i) => pad(reports.get(locale).missingByNamespace.get(ns), localeWidths[i]))
|
||||
.join(""),
|
||||
);
|
||||
}
|
||||
|
||||
lines.push(rule);
|
||||
lines.push(
|
||||
pad("TOTAL", nameWidth, "left") +
|
||||
pad(sourceTotal, sourceWidth) +
|
||||
localeTotals.map((total, i) => pad(total, localeWidths[i])).join(""),
|
||||
);
|
||||
return lines.join("\n");
|
||||
}
|
||||
|
||||
const sourceNamespaces = readLocaleNamespaces(LOCALES_DIR, SOURCE_LOCALE);
|
||||
const locales = discoverRealLocales(LOCALES_DIR);
|
||||
const reports = new Map(
|
||||
locales.map((locale) => [
|
||||
locale,
|
||||
localeReport(sourceNamespaces, readLocaleNamespaces(LOCALES_DIR, locale)),
|
||||
]),
|
||||
);
|
||||
|
||||
// Say what was measured over, always. A tool that reports "0 missing" without
|
||||
// naming its denominator is indistinguishable from one that scanned nothing.
|
||||
const sourceKeyCount = [...sourceNamespaces.values()].reduce((sum, m) => sum + m.size, 0);
|
||||
console.log(
|
||||
`scanned ${sourceNamespaces.size} namespace(s) / ${sourceKeyCount} ${SOURCE_LOCALE} key(s) ` +
|
||||
`across ${locales.length} locale(s) from ${LOCALES_DIR}`,
|
||||
);
|
||||
|
||||
if (sourceNamespaces.size === 0) {
|
||||
console.log(`\nNo ${SOURCE_LOCALE} catalog found — nothing to compare against.`);
|
||||
} else if (locales.length === 0) {
|
||||
console.log(`\nNo real locales found (${SOURCE_LOCALE} and pseudo are excluded).`);
|
||||
} else {
|
||||
console.log(`\nMISSING KEYS — the ${SOURCE_LOCALE} column is the denominator, not a finding.\n`);
|
||||
console.log(renderTable(sourceNamespaces, locales, reports));
|
||||
|
||||
const absent = locales.flatMap((locale) =>
|
||||
reports.get(locale).absentNamespaces.map((ns) => `${locale} / ${ns}: namespace file absent`),
|
||||
);
|
||||
if (absent.length) {
|
||||
console.log(`\nABSENT NAMESPACES — counted above as every key they would hold.\n`);
|
||||
for (const line of absent) console.log(` ${line}`);
|
||||
}
|
||||
|
||||
const extras = locales.flatMap((locale) => [
|
||||
...reports.get(locale).extraNamespaces.map((ns) => `${locale} / ${ns}: whole namespace`),
|
||||
...reports.get(locale).extraKeys.map((entry) => `${locale} / ${entry}`),
|
||||
]);
|
||||
console.log(
|
||||
`\nEXTRA KEYS — present in the locale, absent from ${SOURCE_LOCALE}; ` +
|
||||
`a rename or deletion nobody propagated.\n`,
|
||||
);
|
||||
if (extras.length) {
|
||||
for (const line of extras) console.log(` ${line}`);
|
||||
console.log(`\n ${extras.length} extra entr(ies).`);
|
||||
} else {
|
||||
console.log(" (none)");
|
||||
}
|
||||
}
|
||||
|
||||
// Advisory by design — see the header. Never exit non-zero on a finding.
|
||||
process.exit(0);
|
||||
@@ -0,0 +1,166 @@
|
||||
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import path from "node:path";
|
||||
import { spawnSync } from "node:child_process";
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const SCRIPT = path.resolve(import.meta.dirname, "i18n-parity.mjs");
|
||||
|
||||
/** `{ locale: { namespace: { key: value } } }` — materialised as a locales tree. */
|
||||
type Fixture = Record<string, Record<string, Record<string, string>>>;
|
||||
|
||||
interface ParityResult {
|
||||
status: number | null;
|
||||
stdout: string;
|
||||
stderr: string;
|
||||
/** Header row locale names, in printed order, excluding the `en` denominator. */
|
||||
locales: string[];
|
||||
/** `namespace.json` -> `{ en: <denominator>, <locale>: <missing count> }`. */
|
||||
rows: Record<string, Record<string, number>>;
|
||||
/** Lines under "EXTRA KEYS". */
|
||||
extras: string[];
|
||||
/** Lines under "ABSENT NAMESPACES". */
|
||||
absent: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the human table back into structure. Asserting on the rendered report
|
||||
* (rather than an internal API) is deliberate: the printed table IS the product
|
||||
* here, so a change that silently drops the denominator column should fail.
|
||||
*/
|
||||
function parseReport(stdout: string): Pick<ParityResult, "locales" | "rows" | "extras" | "absent"> {
|
||||
const lines = stdout.split("\n");
|
||||
const headerIndex = lines.findIndex((l) => /^namespace\s+en\b/.test(l));
|
||||
const locales = headerIndex === -1 ? [] : lines[headerIndex].trim().split(/\s+/).slice(2);
|
||||
|
||||
const rows: Record<string, Record<string, number>> = {};
|
||||
for (const line of lines) {
|
||||
const match = /^(\S+\.json|TOTAL)\s+(\d+(?:\s+\d+)*)\s*$/.exec(line);
|
||||
if (!match) continue;
|
||||
const counts = match[2].trim().split(/\s+/).map(Number);
|
||||
rows[match[1]] = Object.fromEntries(["en", ...locales].map((name, i) => [name, counts[i]]));
|
||||
}
|
||||
|
||||
const section = (header: string) => {
|
||||
const start = lines.findIndex((l) => l.startsWith(header));
|
||||
if (start === -1) return [];
|
||||
const out: string[] = [];
|
||||
for (const line of lines.slice(start + 1)) {
|
||||
if (/^[A-Z]{2,}/.test(line)) break;
|
||||
const isFinding =
|
||||
/^ {2}\S/.test(line) && !/entr\(ies\)\.$/.test(line) && line.trim() !== "(none)";
|
||||
if (isFinding) out.push(line.trim());
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
return { locales, rows, extras: section("EXTRA KEYS"), absent: section("ABSENT NAMESPACES") };
|
||||
}
|
||||
|
||||
function runParity(fixture: Fixture): ParityResult {
|
||||
const root = mkdtempSync(path.join(tmpdir(), "kandev-i18n-parity-"));
|
||||
try {
|
||||
for (const [locale, namespaces] of Object.entries(fixture)) {
|
||||
mkdirSync(path.join(root, locale), { recursive: true });
|
||||
for (const [namespace, messages] of Object.entries(namespaces)) {
|
||||
writeFileSync(
|
||||
path.join(root, locale, `${namespace}.json`),
|
||||
`${JSON.stringify(messages, null, 2)}\n`,
|
||||
);
|
||||
}
|
||||
}
|
||||
const result = spawnSync(process.execPath, [SCRIPT, root], { encoding: "utf8" });
|
||||
return {
|
||||
status: result.status,
|
||||
stdout: result.stdout,
|
||||
stderr: result.stderr,
|
||||
...parseReport(result.stdout),
|
||||
};
|
||||
} finally {
|
||||
rmSync(root, { recursive: true, force: true });
|
||||
}
|
||||
}
|
||||
|
||||
const EN_COMMON = { save: "Save", cancel: "Cancel", close: "Close" };
|
||||
|
||||
describe("i18n-parity", () => {
|
||||
it("reports keys missing from a locale", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
"pt-pt": { common: { save: "Guardar" } },
|
||||
});
|
||||
|
||||
expect(report.rows["common.json"]).toEqual({ en: 3, "pt-pt": 2 });
|
||||
expect(report.rows.TOTAL).toEqual({ en: 3, "pt-pt": 2 });
|
||||
});
|
||||
|
||||
it("reports keys present in the locale but absent from en", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
"pt-pt": { common: { ...EN_COMMON, renamedAway: "Antigo" } },
|
||||
});
|
||||
|
||||
expect(report.extras).toEqual(["pt-pt / common: renamedAway"]);
|
||||
// An extra key is not a missing key; it must not inflate the missing count.
|
||||
expect(report.rows["common.json"]["pt-pt"]).toBe(0);
|
||||
});
|
||||
|
||||
it("reports zero for a complete locale, and still prints the denominator", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
"pt-pt": { common: { save: "Guardar", cancel: "Cancelar", close: "Fechar" } },
|
||||
});
|
||||
|
||||
expect(report.rows["common.json"]).toEqual({ en: 3, "pt-pt": 0 });
|
||||
expect(report.extras).toEqual([]);
|
||||
// The denominator is the whole point: "0 missing" over 0 keys is not a pass.
|
||||
expect(report.stdout).toContain("3 en key(s)");
|
||||
});
|
||||
|
||||
it("counts a wholly-absent namespace as every key it would hold", () => {
|
||||
// Deliberately unlike check-i18n-keys.mjs, which scores this as one advisory
|
||||
// issue — the shape that let an 889-key namespace stay invisible.
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON, office: { agent: "Agent", routine: "Routine" } },
|
||||
"pt-pt": { common: { save: "Guardar", cancel: "Cancelar", close: "Fechar" } },
|
||||
});
|
||||
|
||||
expect(report.rows["office.json"]["pt-pt"]).toBe(2);
|
||||
expect(report.absent).toEqual(["pt-pt / office: namespace file absent"]);
|
||||
});
|
||||
|
||||
it("discovers locales from disk instead of a hardcoded list", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
"pt-pt": { common: EN_COMMON },
|
||||
fr: { common: { save: "Enregistrer" } },
|
||||
"zh-cn": { common: {} },
|
||||
});
|
||||
|
||||
expect(report.locales).toEqual(["fr", "pt-pt", "zh-cn"]);
|
||||
expect(report.rows["common.json"]).toEqual({ en: 3, fr: 2, "pt-pt": 0, "zh-cn": 3 });
|
||||
});
|
||||
|
||||
it("excludes en and pseudo from the locale columns", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
pseudo: { common: { save: "Śàvē" } },
|
||||
"pt-pt": { common: EN_COMMON },
|
||||
});
|
||||
|
||||
expect(report.locales).toEqual(["pt-pt"]);
|
||||
expect(report.stdout).not.toContain("pseudo /");
|
||||
});
|
||||
|
||||
it("exits 0 even when it finds problems, because it is a report and not a gate", () => {
|
||||
const report = runParity({
|
||||
en: { common: EN_COMMON },
|
||||
"pt-pt": { common: { stale: "Antigo" } },
|
||||
});
|
||||
|
||||
expect(report.rows["common.json"]["pt-pt"]).toBe(3);
|
||||
expect(report.extras).toEqual(["pt-pt / common: stale"]);
|
||||
expect(report.status).toBe(0);
|
||||
});
|
||||
});
|
||||
@@ -2,20 +2,42 @@
|
||||
"aboutContextCompactionCount": "Sobre a contagem inferida de compactações",
|
||||
"activeSubagents_one": "{{count}} subagente em execução",
|
||||
"activeSubagents_other": "{{count}} subagentes em execução",
|
||||
"activeTasks": "Tarefas ativas",
|
||||
"aDirectLocalExecutorProfileIsRequired": "É necessário um perfil de executor local direto para criar e utilizar um repositório vazio.",
|
||||
"agentDashboard": "painel do agente",
|
||||
"agentRun": "execução do agente",
|
||||
"agentRuns": "execuções do agente",
|
||||
"agents": "Agentes",
|
||||
"agentSkillsAskTheAgentTo": "Competências do agente (peça ao agente para executar)",
|
||||
"allowIndexing": "Permitir indexação",
|
||||
"andMoreFiles_one": "+{{count}} mais",
|
||||
"andMoreFiles_other": "+{{count}} mais",
|
||||
"anEnhancedPromptIsAvailable": "Está disponível um prompt melhorado.",
|
||||
"apply": "Aplicar",
|
||||
"autoApproveAllPermissions": "Aprovar automaticamente todas as permissões",
|
||||
"automations": "Automatizações",
|
||||
"availableTemplates": "Modelos disponíveis",
|
||||
"back": "Voltar",
|
||||
"backToTaskOverview": "Voltar à visão geral da tarefa",
|
||||
"baseBranch": "Branch de base",
|
||||
"bootsASecondaryKandevDevInstance": "Arranca uma segunda instância de desenvolvimento do kandev com uma base de dados limpa, para poder verificar a alteração sem mexer na principal.",
|
||||
"bootstrapFailed": "O arranque inicial falhou",
|
||||
"bootstrapFailedCloseAndReopen": "O arranque inicial falhou — feche e reabra para tentar novamente.",
|
||||
"breadcrumb": "trilho de navegação",
|
||||
"browseParentDirectory": "Navegar para o diretório superior",
|
||||
"bugFix": "Correção de erro",
|
||||
"cancel": "Cancelar",
|
||||
"cancelNewFolder": "Cancelar a nova pasta",
|
||||
"changelog": "Registo de alterações",
|
||||
"checkingGithubAuthentication": "A verificar a autenticação do GitHub…",
|
||||
"chooseAFolderOrEnterA": "Escolha uma pasta ou introduza um novo caminho nesta máquina.",
|
||||
"cliClient": "Cliente CLI",
|
||||
"cliModeYourPromptWillBe": "Modo CLI — o seu prompt será injetado automaticamente no terminal",
|
||||
"cliPassthrough": "Passagem direta para a CLI",
|
||||
"close": "Fechar",
|
||||
"closeEsc": "Fechar (Esc)",
|
||||
"commandAgentsSettingsKeywords": "agentes, definições de agentes, perfis de agente, agentes instalados, claude",
|
||||
"commandArchiveTaskKeywords": "arquivar, arquivar tarefa, arquivar a tarefa atual, fechar tarefa, terminar tarefa, arrumar",
|
||||
"commandConfigChatKeywords": "chat de configuração, modo de configuração, configurar kandev, configuração de fluxo de trabalho, configuração mcp",
|
||||
"commandExecutorsSettingsKeywords": "executores, perfis de executor, ambiente de execução, variáveis de ambiente, runtime, computação",
|
||||
"commandGoToAllTasks": "Ir para Todas as tarefas",
|
||||
@@ -33,6 +55,13 @@
|
||||
"commandGroupNavigation": "Navegação",
|
||||
"commandGroupPreferences": "Preferências",
|
||||
"commandGroupSettings": "Definições",
|
||||
"commandGroupTasks": "Tarefas",
|
||||
"commandPaletteMode": "Modo do painel de comandos",
|
||||
"commandPreviewAddTerminalPanel": "Adicionar painel de terminal",
|
||||
"commandPreviewCommitChanges": "Fazer commit das alterações",
|
||||
"commandPreviewGoToHome": "Ir para o Início",
|
||||
"commandPreviewPull": "Pull",
|
||||
"commandPreviewSearchTasks": "Pesquisar tarefas",
|
||||
"commandPromptsSettingsKeywords": "prompts, definições de prompts, prompts personalizados, excertos de prompt, modelos de prompt",
|
||||
"commandQuickChat": "Chat rápido",
|
||||
"commandQuickChatKeywords": "chat rápido, novo chat rápido, pergunta rápida, perguntar ao agente",
|
||||
@@ -40,44 +69,139 @@
|
||||
"commandSwitchToLightMode": "Mudar para o modo claro",
|
||||
"commandThemeKeywords": "tema, tema de cores, aspeto",
|
||||
"commandWorkspaceSettingsKeywords": "área de trabalho, áreas de trabalho",
|
||||
"commitsAndPushesToTheCurrent": "Faz commit e push para o branch atual.",
|
||||
"commitsPushesAndOpensAPull": "Faz commit, push e abre um pull request.",
|
||||
"configurationChat": "Chat de configuração",
|
||||
"configureAUtilityAgentToEnhance": "Configure um agente utilitário nas definições para ativar a melhoria com IA",
|
||||
"configureExecutorsInSettingsToControl": "Configure os executores nas Definições para controlar onde os agentes são executados.",
|
||||
"configureGithub": "Configurar o GitHub",
|
||||
"confirm": "Confirmar",
|
||||
"contents": "Conteúdos",
|
||||
"contentSearchNeedsAnActiveTask": "A pesquisa de conteúdos precisa de uma sessão de tarefa ativa.",
|
||||
"contextCompactionCountHelp": "O Kandev infere esta contagem a partir das quedas observadas na utilização do contexto. Amostras em falta ou reinícios do fornecedor podem torná-la aproximada.",
|
||||
"contextCompactions": "Compactações",
|
||||
"contribute": "Contribuir",
|
||||
"contributingAsLogin": "A contribuir como <1>@{{login}}</1>. {{access}}",
|
||||
"contributingAsYourGithubAccount": "A contribuir com a sua conta do GitHub. {{access}}",
|
||||
"copy": "Copiar",
|
||||
"couldNotPrepareImproveKandev": "Não foi possível preparar o Melhorar o Kandev",
|
||||
"createATaskDescribingYourBug": "Criar uma tarefa que descreva o seu erro ou pedido de funcionalidade",
|
||||
"createAWorkspaceToConfigureThisIntegration": "Crie uma área de trabalho para configurar esta integração.",
|
||||
"createFolder": "Criar pasta",
|
||||
"createNewRepository": "Criar um novo repositório",
|
||||
"createRepository": "Criar repositório",
|
||||
"createsAnEmptyGitRepository": "Cria um repositório Git vazio e regista-o nesta área de trabalho.",
|
||||
"creating": "A criar…",
|
||||
"dAgo": "há {{diffDay}}d",
|
||||
"default": "pré-definido",
|
||||
"defaultBadge": "Pré-definido",
|
||||
"deleteSession": "Eliminar sessão",
|
||||
"describeABugYouHitOr": "Descreva um erro que encontrou ou uma funcionalidade que gostaria de ter, e criamos uma tarefa no seu próprio agente para a implementar no código do kandev.",
|
||||
"destination": "Destino",
|
||||
"discardAndContinue": "Descartar e continuar",
|
||||
"discardLocalChanges": "Descartar as alterações locais?",
|
||||
"discardLocalChangesAtPathDescription": "Iniciar esta tarefa descarta permanentemente as alterações sem commit do seu clone local em {{repoPath}}. Faça uma cópia de segurança do que quiser manter antes de continuar.",
|
||||
"discardLocalChangesDescription": "Iniciar esta tarefa descarta permanentemente as alterações sem commit do seu clone local. Faça uma cópia de segurança do que quiser manter antes de continuar.",
|
||||
"discoveringAgents": "A descobrir agentes...",
|
||||
"doNotShowThisAgain": "Não voltar a mostrar",
|
||||
"edit": "Editar",
|
||||
"editTask": "Editar tarefa",
|
||||
"gitScopeSkipped": "{{scope}} foi ignorado porque uma operação num repositório filho falhou ({{failedScopes}}).",
|
||||
"emptyRepositoriesRunDirectlySwitch": "Os repositórios vazios são executados diretamente nesta máquina. Esta tarefa passa a usar “{{profile}}”.",
|
||||
"enhancePromptWithAi": "Melhorar o prompt com IA",
|
||||
"enterAValue": "Introduza um valor...",
|
||||
"enterValue": "Introduzir valor...",
|
||||
"error": "Erro",
|
||||
"executors": "Executores",
|
||||
"externalMcp": "MCP externo",
|
||||
"failedToCreateFolder": "Não foi possível criar a pasta",
|
||||
"failedToCreateRepository": "Não foi possível criar o repositório",
|
||||
"failedToLoadDirectory": "Não foi possível carregar o diretório",
|
||||
"failedToLoadRoutine": "Não foi possível carregar a rotina",
|
||||
"failedToLoadSetup": "Não foi possível carregar a configuração",
|
||||
"failedToRenderDiagram": "Não foi possível apresentar o diagrama",
|
||||
"featureRequest": "Pedido de funcionalidade",
|
||||
"files": "Ficheiros",
|
||||
"folderName": "Nome da pasta",
|
||||
"folders": "Pastas",
|
||||
"forwardStdinStdoutStraightToThe": "Encaminha o stdin/stdout diretamente para o subprocesso da CLI. Desativa o ACP.",
|
||||
"getStarted": "Começar",
|
||||
"githubCliNotAuthenticated": "A CLI do GitHub não está autenticada",
|
||||
"gitScopeSkipped": "{{scope}} foi ignorado porque uma operação num repositório filho falhou ({{failedScopes}}).",
|
||||
"goToFirstPage": "Ir para a primeira página",
|
||||
"goToLastPage": "Ir para a última página",
|
||||
"goToNextPage": "Ir para a página seguinte",
|
||||
"goToPreviousPage": "Ir para a página anterior",
|
||||
"hAgo": "há {{diffHr}}h",
|
||||
"hideAdvancedOptions": "Ocultar opções avançadas",
|
||||
"howLogContextWorks": "Como funciona o contexto de registos",
|
||||
"improveKandev": "Melhorar o Kandev",
|
||||
"improveKandevBugPlaceholder": "Ex.: Quando abro o quadro kanban, o texto do cabeçalho da coluna sobrepõe-se ao emblema com a contagem de tarefas em ecrãs com menos de 1200 px de largura...",
|
||||
"improveKandevFeaturePlaceholder": "Ex.: Adicionar um atalho de teclado para marcar uma tarefa como Concluída a partir da vista de detalhe da tarefa, e mostrar o atalho no menu de ações da tarefa...",
|
||||
"improveKandevIssuePlaceholder": "Descreva o problema ou o pedido que quer publicar. O agente pedirá os detalhes exigidos pelo modelo de issue do GitHub correspondente...",
|
||||
"includeRecentBackendAndBrowserLogs": "Incluir os registos recentes do backend e do navegador como contexto para o agente",
|
||||
"installed": "Instalado",
|
||||
"integrations": "Integrações",
|
||||
"interruptedByRestart": "Interrompida por reinício",
|
||||
"justNow": "agora mesmo",
|
||||
"kandevAllowsEveryAgentPermissionRequest": "O Kandev permite todos os pedidos de permissão do agente sem o questionar.",
|
||||
"kandevCouldNotLoad": "Não foi possível carregar o Kandev.",
|
||||
"kandevIsOpenSourceAndYou": "O Kandev é de código aberto e pode ajudar a torná-lo melhor.",
|
||||
"kandevKeepsASmallInMemory": "O Kandev mantém em memória um pequeno buffer circular dos registos mais recentes do backend e dos eventos da consola do navegador. Quando esta opção está ativa, esses registos são escritos numa pasta temporária da sua máquina e os caminhos dos ficheiros são acrescentados à descrição da tarefa, para que o agente os possa ler durante a investigação.",
|
||||
"lastRefreshFailed": "A última atualização falhou: {{error}}",
|
||||
"latestReleaseNotes": "Notas da versão mais recente",
|
||||
"loading": "A carregar…",
|
||||
"loadingEllipsis": "A carregar...",
|
||||
"loadingFolder": "A carregar a pasta…",
|
||||
"loadingIndicatorLabel": "A carregar",
|
||||
"loadingLabel": "A carregar {{label}}...",
|
||||
"loadingRoute": "A carregar {{routeName}}…",
|
||||
"loadingRoutine": "A carregar a rotina...",
|
||||
"loadingTask": "A carregar a tarefa…",
|
||||
"loadingWorkflowTemplates": "A carregar os modelos de fluxo de trabalho...",
|
||||
"mAgo": "há {{diffMin}}m",
|
||||
"matchCase": "Distinguir maiúsculas de minúsculas",
|
||||
"mode": "Modo",
|
||||
"model": "Modelo",
|
||||
"multiRepoUnavailableLocal": "As tarefas multi-repositório não estão disponíveis no Local até que o seu percurso de arranque inicial consiga projetar repositórios irmãos.",
|
||||
"multiRepoUnavailableRemoteDocker": "As tarefas multi-repositório não estão disponíveis no Remote Docker até que este suporte a criação de instâncias de tarefa.",
|
||||
"multiRepoUnsupportedExecutor": "As tarefas multi-repositório não são suportadas por este executor.",
|
||||
"navigate": "Navegar",
|
||||
"navigateBetweenPagesSearchTasksTrigger": "Navegue entre páginas, pesquise tarefas, acione operações de Git e faça a gestão dos painéis — tudo sem sair do teclado. Os comandos sensíveis ao contexto aparecem consoante a página ativa.",
|
||||
"newFolder": "Nova pasta",
|
||||
"newFolderName": "Nome da nova pasta",
|
||||
"newReleases_one": "{{count}} nova versão",
|
||||
"newReleases_other": "{{count}} novas versões",
|
||||
"next": "Seguinte",
|
||||
"nextEnter": "Seguinte (Enter)",
|
||||
"noAuth": "Sem autenticação",
|
||||
"noCliClientsInstalledYetInstall": "Ainda não há clientes CLI instalados. Instale o Claude / Codex / OpenCode / Amp para ativar este seletor.",
|
||||
"noCommandsFound": "Nenhum comando encontrado.",
|
||||
"noContentMatchesFound": "Não foram encontradas correspondências no conteúdo.",
|
||||
"noFilesFound": "Nenhum ficheiro encontrado.",
|
||||
"noFoldersHerePickThisOne": "Não há pastas aqui — escolha esta ou suba um nível",
|
||||
"noResults": "Sem resultados.",
|
||||
"notInstalled": "Não instalado",
|
||||
"notYetInstalled": "Ainda não instalado",
|
||||
"officeIsNotEnabledForThis": "O Office não está ativado para este runtime.",
|
||||
"officeRouteNotPortedYet": "Esta rota do Office é tratada pela shell da SPA, mas a sua página de cliente dedicada ainda está a ser migrada: <1>{{pathname}}</1>",
|
||||
"onboardingAgentsAutoApproveWarning": "<0>Atenção:</0> os perfis de agente pré-definidos são executados com a aprovação automática ativa (modo YOLO).",
|
||||
"onboardingAgentsHelp": "Expanda um agente para configurar o respetivo modelo e permissões. As alterações são guardadas quando avançar. Também pode adicionar agentes TUI personalizados mais tarde em Definições > Agentes.",
|
||||
"onboardingStepAgentsDescription": "Faça a gestão dos agentes descobertos e instale novos.",
|
||||
"onboardingStepAgentsTitle": "Agentes de IA",
|
||||
"onboardingStepCommandPanelDescription": "Acesso rápido às ações a partir de qualquer sítio com um atalho de teclado.",
|
||||
"onboardingStepCommandPanelTitle": "Painel de comandos",
|
||||
"onboardingStepExecutorsDescription": "Os agentes podem ser executados em diferentes ambientes de execução — local, em contentor ou remoto.",
|
||||
"onboardingStepExecutorsTitle": "Executores",
|
||||
"onboardingStepWorkflowsDescription": "Os fluxos de trabalho definem os passos e a automatização das suas tarefas.",
|
||||
"onboardingStepWorkflowsTitle": "Fluxos de trabalho com agentes",
|
||||
"open": "Abrir",
|
||||
"openFullPage": "Abrir a página completa",
|
||||
"openingLastTask": "A abrir a última tarefa…",
|
||||
"openIssue": "Abrir issue",
|
||||
"optionalTheRepositoryTheAgentWorks": "Opcional — o repositório em que o agente trabalha.",
|
||||
"panels": "Painéis",
|
||||
"parentDirectory": "Diretório superior",
|
||||
"pending": "Pendente",
|
||||
"permitTheCliToUploadCode": "Permite que a CLI carregue código para indexação na nuvem (auggie / semelhantes).",
|
||||
"pickACliClient": "Escolher um cliente CLI",
|
||||
"pickACliClientToLoad": "Escolha um cliente CLI para carregar os modelos e modos disponíveis.",
|
||||
@@ -85,6 +209,8 @@
|
||||
"pluginPanelUnavailable": "Este painel já não está disponível.",
|
||||
"plugins": "Plugins",
|
||||
"prDetails": "Detalhes do PR",
|
||||
"preparingKandevRepository": "A preparar o repositório do kandev…",
|
||||
"preparingKandevRepositoryInBackground": "A preparar o repositório do kandev em segundo plano. Preencha os detalhes e submeta quando estiver pronto.",
|
||||
"presetIconBug": "Bug",
|
||||
"presetIconCheck": "Visto",
|
||||
"presetIconCode": "Código",
|
||||
@@ -93,15 +219,26 @@
|
||||
"presetIconSearch": "Pesquisa",
|
||||
"presetIconSparkle": "Brilho",
|
||||
"presetIconTool": "Ferramenta",
|
||||
"pressCmdKToOpenItAnytime": "<0>Prima</0><1></1><2>para o abrir a qualquer momento</2>",
|
||||
"pressEnterToConfirm": "Prima Enter para confirmar",
|
||||
"previousShiftEnter": "Anterior (Shift+Enter)",
|
||||
"probing": "A sondar",
|
||||
"profileName": "Nome do perfil",
|
||||
"prompts": "Prompts",
|
||||
"refreshAriaLabel": "Atualizar {{label}}",
|
||||
"refreshBranchesGitFetch": "Atualizar os branches (git fetch)",
|
||||
"refreshingLabel": "A atualizar {{label}}...",
|
||||
"refreshLabelLastFetched": "Atualizar {{label}} (última obtenção {{time}})",
|
||||
"regularExpression": "Expressão regular",
|
||||
"releasedOn": "Lançada a {{date}}",
|
||||
"reload": "Recarregar",
|
||||
"reloadTheApplicationToTryAgain": "Recarregue a aplicação para tentar novamente.",
|
||||
"requestFailed": "O pedido falhou",
|
||||
"rename": "Mudar o nome",
|
||||
"reviewSubmoduleBoundary": "Submódulo: {{scope}}",
|
||||
"repository": "Repositório",
|
||||
"repositoryName": "Nome do repositório",
|
||||
"requestFailed": "O pedido falhou",
|
||||
"reset": "Repor",
|
||||
"resizeTableColumns": "Redimensionar as colunas {{left}} e {{right}} da tabela",
|
||||
"resetting": "A repor…",
|
||||
"resetWatchChecking": "A verificar quantas tarefas seriam eliminadas…",
|
||||
"resetWatchDeleteAllTasks": "Isto irá eliminar todas as tarefas criadas anteriormente pela vigilância, incluindo as arquivadas. O cursor de sondagem da vigilância também é limpo, pelo que a próxima verificação volta a importar todos os itens correspondentes. Esta ação não pode ser anulada.",
|
||||
"resetWatchDeleteTasks_one": "Isto irá eliminar {{count}} tarefa criada anteriormente pela vigilância, incluindo as arquivadas. O cursor de sondagem da vigilância também é limpo, pelo que a próxima verificação volta a importar todos os itens correspondentes. Esta ação não pode ser anulada.",
|
||||
@@ -109,24 +246,78 @@
|
||||
"resetWatchNoTasks": "Esta vigilância ainda não criou tarefas — apenas o estado de sondagem será limpo. O cursor de sondagem da vigilância também é limpo, pelo que a próxima verificação volta a importar todos os itens correspondentes. Esta ação não pode ser anulada.",
|
||||
"resetWatchPreviewFailedRequired": "Não foi possível carregar o número de tarefas afetadas. Tente novamente a pré-visualização antes de repor esta vigilância.",
|
||||
"resetWatchTitle": "Repor {{label}}?",
|
||||
"resetting": "A repor…",
|
||||
"resizeTableColumns": "Redimensionar as colunas {{left}} e {{right}} da tabela",
|
||||
"results": "Resultados",
|
||||
"retryPreview": "Repetir a pré-visualização",
|
||||
"reviewSubmoduleBoundary": "Submódulo: {{scope}}",
|
||||
"rowsPerPage": "Linhas por página",
|
||||
"runsFormatTypecheckTestAndLint": "Executa format, typecheck, test e lint em todo o monorepo.",
|
||||
"runtimeDocker": "Docker",
|
||||
"runtimeDockerDescription": "Execução em contentor para isolamento e reprodutibilidade totais.",
|
||||
"runtimeGitWorktree": "Git Worktree",
|
||||
"runtimeGitWorktreeDescription": "Ambiente de branch isolado sob uma raiz de worktrees para trabalho em paralelo.",
|
||||
"runtimeLocal": "Local",
|
||||
"runtimeLocalDescription": "Execute os agentes diretamente na sua máquina, com acesso total ao seu sistema de ficheiros local.",
|
||||
"runtimeSprites": "Sprites (sprites.dev remoto)",
|
||||
"runtimeSpritesDescription": "Ambiente de execução isolado por hardware para código arbitrário.",
|
||||
"save": "Guardar",
|
||||
"scopeCommands": "Comandos",
|
||||
"scopeContents": "Conteúdos",
|
||||
"scopeFiles": "Ficheiros",
|
||||
"scopeTitleWithShortcut": "{{label}} ({{shortcut}})",
|
||||
"scratchWorkspace": "área de trabalho temporária",
|
||||
"searchEllipsis": "Pesquisar…",
|
||||
"searchFailedEditTheQueryOr": "A pesquisa falhou. Edite a consulta ou reabra a pesquisa para tentar novamente.",
|
||||
"searchForFiles": "Pesquisar ficheiros...",
|
||||
"searchForTasks": "Pesquisar tarefas...",
|
||||
"searchingTaskWorkspace": "A pesquisar na área de trabalho da tarefa…",
|
||||
"searchQueriesAreLimitedTo200": "As pesquisas estão limitadas a 200 caracteres.",
|
||||
"searchTaskContents": "Pesquisar o conteúdo da tarefa…",
|
||||
"select": "Selecionar",
|
||||
"settings": "Definições",
|
||||
"shell": "Shell",
|
||||
"shellCommandPlusSlashCommandSkills": "Comando de shell que pode executar na segunda instância, além das <2>competências</2> invocadas por comandos com barra que pode pedir ao agente para executar durante o fluxo de trabalho.",
|
||||
"showAdvancedOptions": "Mostrar opções avançadas",
|
||||
"showCode": "Mostrar o código",
|
||||
"showDiagram": "Mostrar o diagrama",
|
||||
"showingRange_one": "A mostrar {{from}} a {{to}} de {{count}} resultado",
|
||||
"showingRange_other": "A mostrar {{from}} a {{to}} de {{count}} resultados",
|
||||
"skip": "Ignorar",
|
||||
"stagesAndCommitsChangesUsingConventional": "Prepara e faz commit das alterações usando Conventional Commits.",
|
||||
"status": "Estado",
|
||||
"subtaskTitle": "Título da subtarefa",
|
||||
"switchMode": "Mudar de modo",
|
||||
"system": "Sistema",
|
||||
"taskLoading": "A carregar a tarefa...",
|
||||
"tasks": "Tarefas",
|
||||
"taskUnavailable": "Tarefa indisponível",
|
||||
"taskUnavailableDescription": "Não foi possível carregar esta tarefa. Pode ter sido eliminada ou pode não ter acesso.",
|
||||
"theAgentForksKandevToYourAccount": "O agente faz fork de <1>{{repo}}</1> para a sua conta do GitHub e abre um PR a partir do seu fork, creditado a si",
|
||||
"theBaseBranchTheAgentStarts": "O branch de base a partir do qual o agente começa.",
|
||||
"theFinalStepOpensAPullRequest": "O passo final deste fluxo de trabalho abre um pull request, o que exige que a CLI <1>{{binary}}</1> esteja autenticada. {{message}}",
|
||||
"thisEmptyRepositoryWillRunWith": "Este repositório vazio é executado com “{{profile}}” nesta máquina.",
|
||||
"thisGithubAccountCannotForkKdlbs": "Esta conta do GitHub não pode fazer fork de kdlbs/kandev.",
|
||||
"thisPageCouldNotLoad": "Não foi possível carregar esta página.",
|
||||
"thisWorkflowWillOnlyCreateA": "Este fluxo de trabalho apenas cria uma issue no GitHub a partir do modelo do repositório. O agente pedirá os detalhes em falta e aprovação para publicar; não implementa a alteração nem abre um pull request.",
|
||||
"title": "Título",
|
||||
"toastRegionLabel": "Notificações",
|
||||
"typeACommand": "Escreva um comando...",
|
||||
"typeToSearchFiles": "Escreva para pesquisar ficheiros...",
|
||||
"typeToSearchTaskContents": "Escreva para pesquisar o conteúdo da tarefa…",
|
||||
"unknownPanel": "Painel desconhecido: {{component}}",
|
||||
"unsavedChanges": "Alterações por guardar",
|
||||
"usefulCommandsAgentSkills": "Comandos úteis e competências do agente",
|
||||
"useScratchInstead": "Usar antes uma área temporária",
|
||||
"useThisFolder": "Usar esta pasta",
|
||||
"viewFullReleaseOnGithub": "Ver a versão completa no GitHub",
|
||||
"waitsForCiAndAutomatedReviews": "Aguarda pelo CI e pelas revisões automáticas e depois corrige as falhas e responde aos comentários.",
|
||||
"whatSNew": "Novidades",
|
||||
"whenItsDoneTheAgentOpensAPr": "Quando terminar, o agente abre um pull request para <2>{{repo}}</2> para os responsáveis reverem, poupando-lhes tempo e levando a melhoria a toda a gente.",
|
||||
"workflow": "Fluxo de trabalho",
|
||||
"workflowsControlTheStepsAutomationAnd": "Os fluxos de trabalho controlam os passos, a automatização e o comportamento do agente nas suas tarefas. Pode adicionar mais fluxos de trabalho nas Definições.",
|
||||
"workspace": "Área de trabalho",
|
||||
"workspaces": "Áreas de trabalho",
|
||||
"youCanUseTheNavigationOr": "Pode usar a navegação ou recarregar para tentar novamente."
|
||||
"youCanUseTheNavigationOr": "Pode usar a navegação ou recarregar para tentar novamente.",
|
||||
"yourAgentImplementsItInThe": "O seu agente implementa-a no repositório do kandev, com testes",
|
||||
"youVerifyAndTestTheChange": "Verifica e testa a alteração numa segunda instância do kandev"
|
||||
}
|
||||
|
||||
@@ -2,31 +2,38 @@
|
||||
"addDetailsAboutThisChange": "Adicione detalhes sobre esta alteração...",
|
||||
"allRepos": "Todos os repositórios",
|
||||
"anErrorOccurred": "Ocorreu um erro",
|
||||
"authRequiredHeading": "É necessária autenticação no {{name}}",
|
||||
"authRequiredInline": "É necessária autenticação no {{name}}.",
|
||||
"authenticated": "Autenticado",
|
||||
"authenticationFailed": "A autenticação falhou: {{error}}",
|
||||
"authRequiredHeading": "É necessária autenticação no {{name}}",
|
||||
"authRequiredInline": "É necessária autenticação no {{name}}.",
|
||||
"branchPushedNotCreated": "Branch enviado; {{shortName}} não criado",
|
||||
"branchWasPushedRetryCreation": "O branch foi enviado; tente novamente criar o {{longName}}.",
|
||||
"checkedRelative": "· verificado {{relative}}",
|
||||
"commit": "Commit",
|
||||
"commitChangedFiles_one": "Fazer commit de {{count}} ficheiro alterado",
|
||||
"commitChangedFiles_other": "Fazer commit de {{count}} ficheiros alterados",
|
||||
"commitChanges": "Fazer commit das alterações",
|
||||
"commitChangesScoped": "Fazer commit das alterações — {{scopedRepo}}",
|
||||
"commitsAheadAriaLabel": "{{value}} commits à frente",
|
||||
"commitsBehindAriaLabel": "{{value}} commits atrás",
|
||||
"committingEllipsis": "A fazer commit...",
|
||||
"configureAUtilityAgentInSettings": "Configure um agente utilitário nas definições para ativar a geração por IA",
|
||||
"copiedConfigTo": "Configuração do {{label}} copiada para {{targetName}}.",
|
||||
"copyConfig": "Copiar configuração",
|
||||
"copyConfigSettingsOnly": "Copie as definições do {{label}} de <4>{{sourceName}}</4> para outra área de trabalho. Isto substitui a configuração atual do {{label}} na área de trabalho de destino. As vigilâncias e as automatizações não são copiadas.",
|
||||
"copyConfigToAnotherWorkspace": "Copiar a configuração para outra área de trabalho",
|
||||
"copyConfigWithCredentials": "Copie as definições e as credenciais do {{label}} de <4>{{sourceName}}</4> para outra área de trabalho. Isto substitui a configuração atual do {{label}} na área de trabalho de destino. As vigilâncias e as automatizações não são copiadas.",
|
||||
"copyConfiguration": "Copiar a configuração do {{label}}",
|
||||
"copyConfigWithCredentials": "Copie as definições e as credenciais do {{label}} de <4>{{sourceName}}</4> para outra área de trabalho. Isto substitui a configuração atual do {{label}} na área de trabalho de destino. As vigilâncias e as automatizações não são copiadas.",
|
||||
"copyingConfigTo": "A copiar a configuração do {{label}} para {{targetName}}…",
|
||||
"createAsDraft": "Criar como rascunho",
|
||||
"createdSuccessfully": "{{longName}} criado com êxito",
|
||||
"createFailed": "Não foi possível criar o {{shortName}}",
|
||||
"createLongName": "Criar {{longName}}",
|
||||
"createPr": "Criar PR",
|
||||
"createPrCommitsAhead_one": "Criar PR ({{count}} commit à frente)",
|
||||
"createPrCommitsAhead_other": "Criar PR ({{count}} commits à frente)",
|
||||
"createScoped": "Criar {{longName}} — {{scopedRepo}}",
|
||||
"createShortName": "Criar {{shortName}}",
|
||||
"createdSuccessfully": "{{longName}} criado com êxito",
|
||||
"creatingEllipsis": "A criar...",
|
||||
"creatingFrom": "A criar o {{shortName}} a partir de <4>{{displayBranch}}</4>",
|
||||
"creatingFromInto": "A criar o {{shortName}} a partir de <4>{{displayBranch}}</4> → <6>{{baseBranch}}</6>",
|
||||
@@ -40,6 +47,8 @@
|
||||
"failedToCopyConfig": "Não foi possível copiar a configuração: {{err}}",
|
||||
"filesChanged_one": "<0>{{count}}</0> ficheiro alterado",
|
||||
"filesChanged_other": "<0>{{count}}</0> ficheiros alterados",
|
||||
"forcePush": "Forçar push",
|
||||
"fromBranch": "de {{branch}}",
|
||||
"generateCommitDescriptionWithAi": "Gerar a descrição do commit com IA",
|
||||
"generateCommitMessageWithAi": "Gerar a mensagem de commit com IA",
|
||||
"generateDescriptionWithAi": "Gerar a descrição do {{shortName}} com IA",
|
||||
@@ -47,8 +56,22 @@
|
||||
"loading": "A carregar…",
|
||||
"longNameTitle": "Título do {{longName}}",
|
||||
"longNameTitlePlaceholder": "Título do {{longName}}...",
|
||||
"merge": "Merge",
|
||||
"noChangesToCommit": "Não há alterações para commit",
|
||||
"noSavedQueriesYet": "Ainda não há consultas guardadas",
|
||||
"ontoBranch": "sobre {{branch}}",
|
||||
"openVcsOptions": "Abrir as opções de VCS",
|
||||
"pickActionThenRepo": "Escolha a ação e depois o repositório",
|
||||
"pickARepositoryForCommit": "Escolha um repositório para Commit",
|
||||
"pickARepositoryForCreatePr": "Escolha um repositório para Criar PR",
|
||||
"pickARepositoryForPush": "Escolha um repositório para Push",
|
||||
"pickARepositoryForRebase": "Escolha um repositório para Rebase",
|
||||
"pull": "Pull",
|
||||
"push": "Push",
|
||||
"pushCommitsToRemote_one": "Enviar {{count}} commit para o remoto",
|
||||
"pushCommitsToRemote_other": "Enviar {{count}} commits para o remoto",
|
||||
"rebase": "Rebase",
|
||||
"rebaseOntoBranchBehind": "Rebase sobre {{branch}} ({{behind}} atrás)",
|
||||
"reconnectProvider": "Voltar a ligar o {{name}}",
|
||||
"repository": "Repositório",
|
||||
"retryShortName": "Repetir o {{shortName}}",
|
||||
|
||||
@@ -0,0 +1,891 @@
|
||||
{
|
||||
"aCronScheduleExample": "Um agendamento cron (por exemplo, <1>{{cron}}</1> para dias úteis às 9h)",
|
||||
"actionOnExceed": "Ação ao exceder",
|
||||
"actions": "Ações",
|
||||
"actionsByAgentsAndUsersAre": "As ações dos agentes e dos utilizadores são registadas aqui.",
|
||||
"actionValue": "Ação: {{action}}",
|
||||
"activeAgents": "Agentes ativos",
|
||||
"activeSessionCount_one": "{{count}} sessão ativa",
|
||||
"activeSessionCount_other": "{{count}} sessões ativas",
|
||||
"activity": "Atividade",
|
||||
"activityFilterAll": "Todos os tipos",
|
||||
"activityFilterBudget": "Orçamento",
|
||||
"activityFilterTask": "Tarefa",
|
||||
"activityStatusChangedTo": "estado alterado para {{status}}",
|
||||
"adapter": "Adaptador",
|
||||
"add": "Adicionar",
|
||||
"addADescription": "Adicione uma descrição...",
|
||||
"addApprover": "Adicionar aprovador",
|
||||
"addApprovers": "Adicionar aprovadores",
|
||||
"addAsLocalPath": "Adicionar como caminho local",
|
||||
"addAsRemoteUrl": "Adicionar como URL remoto",
|
||||
"addATitleToCreateATask": "Adicione um título para criar uma tarefa",
|
||||
"addChannel": "Adicionar canal",
|
||||
"addCustom": "Adicionar personalizado",
|
||||
"addDescription": "Adicionar descrição...",
|
||||
"addPolicy": "Adicionar política",
|
||||
"addProvider": "Adicionar fornecedor…",
|
||||
"addRepository": "Adicionar repositório",
|
||||
"addReviewer": "Adicionar revisor",
|
||||
"addReviewers": "Adicionar revisores",
|
||||
"addToOrder": "Adicionar à ordem",
|
||||
"advanced": "Avançado",
|
||||
"agent": "Agente",
|
||||
"agentAutoPaused": "Agente pausado automaticamente",
|
||||
"agentAwaitingApproval": "Agente à espera de aprovação",
|
||||
"agentConfigurationUpdated": "Configuração do agente atualizada",
|
||||
"agentCount_one": "{{count}} agente",
|
||||
"agentCount_other": "{{count}} agentes",
|
||||
"agentCreated": "Agente criado",
|
||||
"agentCreatedSkillsMustBeApproved": "As competências criadas por agentes têm de ser aprovadas antes da ativação",
|
||||
"agentError": "Erro do agente",
|
||||
"agentFinishedWorkspaceReadyForReview": "Agente terminou — área de trabalho pronta para revisão",
|
||||
"agentIsActivelyWorkingOnThis": "O agente está a trabalhar ativamente nesta tarefa",
|
||||
"agentIsWorkingMessageWillBe": "O agente está a trabalhar... a mensagem fica em fila",
|
||||
"agentName": "Nome do agente",
|
||||
"agentNotFound": "Agente não encontrado.",
|
||||
"agentRecentTasks": "Tarefas recentes",
|
||||
"agentRunActivity": "Atividade das execuções",
|
||||
"agentRunFailed": "A execução do agente falhou",
|
||||
"agents": "Agentes",
|
||||
"agentSections": "Secções do agente",
|
||||
"agentsEnabled": "Agentes ativados",
|
||||
"agentSessionEnded": "Sessão do agente terminada",
|
||||
"agentsInheritThisTierUnlessThey": "Os agentes herdam este escalão, exceto se o substituírem. Todos os fornecedores encaminhados têm de mapear este escalão para um modelo.",
|
||||
"agentsThatHaveThisSkillAssigned": "Agentes a quem esta competência está atribuída",
|
||||
"agentSuccessRate": "Taxa de sucesso",
|
||||
"agentThatPicksUpRunsTriggered": "Agente que assume as execuções acionadas por esta rotina",
|
||||
"agentTierProfiles": "Perfis de escalão dos agentes",
|
||||
"agentUpdated": "Agente atualizado",
|
||||
"agentWillUseThisStarterTask": "O {{name}} usa esta tarefa inicial para inspecionar os repositórios, montar a equipa e propor o próximo trabalho para aprovação.",
|
||||
"agentWorkedForSeconds": "{{agent}} trabalhou durante {{seconds}} s",
|
||||
"agentWorkedForSecondsRanCommands_one": "{{agent}} trabalhou durante {{seconds}} s · executou {{count}} comando",
|
||||
"agentWorkedForSecondsRanCommands_other": "{{agent}} trabalhou durante {{seconds}} s · executou {{count}} comandos",
|
||||
"agentWorkingForSeconds": "{{agent}} a trabalhar há {{seconds}} s",
|
||||
"agentWorkingForSecondsRanCommands_one": "{{agent}} a trabalhar há {{seconds}} s · executou {{count}} comando",
|
||||
"agentWorkingForSecondsRanCommands_other": "{{agent}} a trabalhar há {{seconds}} s · executou {{count}} comandos",
|
||||
"alertPercent": "Alerta: {{percent}}%",
|
||||
"alertThreshold": "Limiar de alerta (%)",
|
||||
"all": "Tudo",
|
||||
"allClear": "Está tudo em ordem.",
|
||||
"allMemoryCleared": "Toda a memória foi limpa",
|
||||
"allProvidersHealthy": "Todos os fornecedores estão saudáveis.",
|
||||
"alwaysCreate": "Criar sempre",
|
||||
"aNameEGDailyStandup": "Um nome (por exemplo, \"Reunião diária\")",
|
||||
"aNameForYourWorkspaceYou": "Um nome para a sua área de trabalho. Pode alterá-lo mais tarde.",
|
||||
"appearance": "Aspeto",
|
||||
"appearanceSettingsSaved": "Definições de aspeto guardadas",
|
||||
"applying": "A aplicar...",
|
||||
"applyOnDiskYamlFilesTo": "Aplicar os ficheiros YAML em disco à base de dados.",
|
||||
"approval": "Aprovação",
|
||||
"approvalsAlertsAndItemsNeedingYour": "As aprovações, os alertas e os itens que precisam da sua atenção aparecem aqui.",
|
||||
"approve": "Aprovar",
|
||||
"approved": "Aprovado",
|
||||
"approver": "Aprovador",
|
||||
"asc": "Asc",
|
||||
"aSkillWithThisNameAlready": "Já existe uma competência com este nome",
|
||||
"assembledPrompt": "Prompt montado",
|
||||
"assignATaskToThisAgent": "Atribua uma tarefa a este agente para ver o histórico de execuções.",
|
||||
"assignee": "Responsável",
|
||||
"aTaskTitleDescriptionWhatThe": "Um título e uma descrição de tarefa (o que o agente deve fazer em cada execução)",
|
||||
"aUniqueNameForThisAgent": "Um nome único para este agente (por exemplo, CEO, Trabalhador de Frontend)",
|
||||
"autoCommitAfterApproval": "Fazer commit automático após a aprovação",
|
||||
"automaticProviderFallback": "Recurso automático a outro fornecedor",
|
||||
"backToTasks": "Voltar às tarefas",
|
||||
"barTotal": "{{label}}: {{total}}",
|
||||
"beingWorkedOn": "em curso",
|
||||
"beyondThisCountMissedTicksAre": "Acima deste número, os ticks perdidos são descartados (pré-definição: 25)",
|
||||
"blockedActionRequired": "Bloqueada — é necessária uma ação",
|
||||
"blockNewTasks": "Bloquear novas tarefas",
|
||||
"boardView": "Vista de quadro",
|
||||
"botTokenChatId": "{\"bot_token\": \"...\", \"chat_id\": \"...\"}",
|
||||
"branch": "Branch",
|
||||
"browseSkillsSh": "Explorar skills.sh",
|
||||
"budgetAlert": "Alerta de orçamento",
|
||||
"budgetAmount": "Orçamento: {{amount}}",
|
||||
"budgetCapConcurrencyAndExecutionEnvironment": "Limite de orçamento, concorrência e ambiente de execução.",
|
||||
"budgetLimitsConcurrencyAndExecutionEnvironment": "Limites de orçamento, concorrência e ambiente de execução.",
|
||||
"budgetPolicies": "Políticas de orçamento",
|
||||
"budgetPolicyCreated": "Política de orçamento criada",
|
||||
"budgetPolicyDeleted": "Política de orçamento eliminada",
|
||||
"budgets": "Orçamentos",
|
||||
"bundledWithKandev": "Incluída no kandev",
|
||||
"bundledWithKandevVersion": "Incluída no kandev v{{version}}",
|
||||
"byAgent": "Por agente",
|
||||
"byModel": "Por modelo",
|
||||
"byProject": "Por projeto",
|
||||
"byProvider": "Por fornecedor",
|
||||
"cached": "Em cache:",
|
||||
"cachedTokens": "Tokens em cache",
|
||||
"cancelReasonAssigneeChanged": "o responsável mudou",
|
||||
"cancelReasonReviewParticipantChanged": "o revisor mudou",
|
||||
"cancelReasonTaskNotFound": "tarefa não encontrada",
|
||||
"cancelReasonTaskTerminal": "tarefa concluída",
|
||||
"capabilities": "Capacidades",
|
||||
"capabilityCreateAgent": "Criar agente",
|
||||
"capabilityCreateSubtask": "Criar subtarefa",
|
||||
"capabilityDeleteSkills": "Eliminar competências",
|
||||
"capabilityListSkills": "Listar competências",
|
||||
"capabilityModifyAgents": "Modificar agentes",
|
||||
"capabilityPostComment": "Publicar comentário",
|
||||
"capabilityReadMemory": "Ler a memória",
|
||||
"capabilityRequestApproval": "Pedir aprovação",
|
||||
"capabilitySpawnAgentRun": "Lançar execução",
|
||||
"capabilityUpdateTaskStatus": "Atualizar o estado da tarefa",
|
||||
"capabilityWriteMemory": "Escrever na memória",
|
||||
"catchUpMax": "Máximo de recuperação",
|
||||
"catchUpPolicy": "Política de recuperação",
|
||||
"ceoManagesOtherAgentsWorkersExecute": "O CEO faz a gestão dos outros agentes; os trabalhadores executam as tarefas",
|
||||
"changesPushed": "Alterações enviadas",
|
||||
"channelAdded": "Canal adicionado",
|
||||
"channelDeleted": "Canal eliminado",
|
||||
"chooseTheProfileFamilyOfficeShould": "Escolha a família de perfis que o Office deve usar quando forem atribuídos aos agentes trabalhos Frontier, Balanced ou Economy.",
|
||||
"clearAll": "Limpar tudo",
|
||||
"clearAllMemory": "Limpar toda a memória?",
|
||||
"clearFilters": "Limpar os filtros",
|
||||
"cliAgentProfile": "Perfil de agente CLI",
|
||||
"clickToOpenRoutines": "Clique para abrir as Rotinas.",
|
||||
"clone": "Clonar",
|
||||
"cloneFailed": "A clonagem falhou",
|
||||
"cloning": "A clonar...",
|
||||
"coalesce": "Fundir",
|
||||
"coalesceIfActive": "Fundir se estiver ativa",
|
||||
"collapse": "Recolher",
|
||||
"color": "Cor",
|
||||
"comingSoonOnlyLocalIsSupported": "Em breve — de momento, só é suportado o Local.",
|
||||
"commitMessage": "Mensagem do commit",
|
||||
"compareWorkspaceDatabaseWithOnDisk": "Comparar a base de dados da área de trabalho com os ficheiros de configuração em disco.",
|
||||
"concurrency": "Concorrência",
|
||||
"concurrencyPolicy": "Política de concorrência",
|
||||
"configJson": "Configuração (JSON)",
|
||||
"configuration": "Configuração",
|
||||
"configure": "Configurar",
|
||||
"configured": "Configurado",
|
||||
"configuredRouteTooltip": "Rota principal a partir das substituições da área de trabalho e do agente.",
|
||||
"confirmTheDetailsBelowEverythingCan": "Confirme os detalhes abaixo. Tudo pode ser alterado mais tarde.",
|
||||
"connectAGitRepositoryToVersion": "Ligue um repositório Git para controlar as versões desta configuração da área de trabalho.",
|
||||
"controlWhatThisAgentIsAllowed": "Controle o que este agente pode fazer. As pré-definições baseiam-se no papel do agente.",
|
||||
"coordinatorAgent": "Agente coordenador",
|
||||
"copied": "Copiado!",
|
||||
"copySlug": "Copiar o slug",
|
||||
"cost": "Custo",
|
||||
"costs": "Custos",
|
||||
"countAvailable_one": "{{count}} disponível",
|
||||
"countAvailable_other": "{{count}} disponíveis",
|
||||
"countDone_one": "{{count}} concluída",
|
||||
"countDone_other": "{{count}} concluídas",
|
||||
"countInProgress_one": "{{count}} em curso",
|
||||
"countInProgress_other": "{{count}} em curso",
|
||||
"countLive_one": "{{count}} ativa",
|
||||
"countLive_other": "{{count}} ativas",
|
||||
"cpuCores": "Núcleos de CPU",
|
||||
"create": "Criar",
|
||||
"createACeoAgentToStart": "Crie um agente CEO para começar a orquestrar o trabalho nos seus projetos.",
|
||||
"createAgent": "Criar agente",
|
||||
"createAgentsAndSetTheirReporting": "Crie agentes e defina a respetiva estrutura hierárquica para ver o organograma.",
|
||||
"createANewCliProfile": "+ Criar um novo perfil de CLI",
|
||||
"createATaskOrLetAgents": "Crie uma tarefa ou deixe os agentes gerá-las a partir de rotinas.",
|
||||
"createLaunch": "Criar e lançar",
|
||||
"createNewSkill": "Criar nova competência",
|
||||
"createOneInline": "Criar uma aqui mesmo",
|
||||
"createPolicy": "Criar política",
|
||||
"createProject": "Criar projeto",
|
||||
"createRoutine": "Criar rotina",
|
||||
"createSkill": "Criar competência",
|
||||
"createTask": "Criar tarefa",
|
||||
"createYourCoordinatorAgent": "Crie o seu agente coordenador",
|
||||
"createYourFirstProject": "Crie o seu primeiro projeto",
|
||||
"creating": "A criar...",
|
||||
"cron": "Cron",
|
||||
"cronExpression": "Expressão cron",
|
||||
"cronExpressionTitleCase": "Expressão cron",
|
||||
"current": "Atual",
|
||||
"currentlyMapsTo": "Atualmente mapeia para",
|
||||
"currentRouteTooltip": "Reflete a escolha do próximo lançamento. Os detalhes das sessões em curso estão em cada execução.",
|
||||
"currentUtilizationOfSubscriptionRateLimit": "Utilização atual das janelas de limite de taxa da subscrição.",
|
||||
"dailyDepUpdate": "Atualização diária de dependências",
|
||||
"dailySuccessRate": "Taxa de sucesso diária",
|
||||
"dangerZone": "Zona de perigo",
|
||||
"dashboard": "Painel",
|
||||
"date": "Data",
|
||||
"defaultFor": "PRÉ-DEFINIDO PARA",
|
||||
"defaultForRole": "pré-definido para {{role}}",
|
||||
"defaultTier": "Escalão pré-definido",
|
||||
"defaultWorkspace": "Área de trabalho pré-definida",
|
||||
"degraded": "Degradado",
|
||||
"delete": "Eliminar",
|
||||
"deleteChannel": "Eliminar canal",
|
||||
"deleted": "{{filename}} eliminado",
|
||||
"deleteEntry": "Eliminar entrada",
|
||||
"deletePolicy": "Eliminar política",
|
||||
"deleteProject": "Eliminar projeto",
|
||||
"deleteWorkspace": "Eliminar área de trabalho",
|
||||
"deleteWorkspaceSummary": "Isto elimina permanentemente {{agents}} agentes, {{tasks}} tarefas, {{skills}} competências e a pasta da área de trabalho.",
|
||||
"deleting": "A eliminar...",
|
||||
"desc": "Desc",
|
||||
"description": "Descrição",
|
||||
"directoryPath": "Caminho do diretório",
|
||||
"dirty": "com alterações",
|
||||
"discardDraft": "Descartar o rascunho",
|
||||
"discord": "Discord",
|
||||
"dockerImage": "Imagem Docker",
|
||||
"dockerImageExample": "por exemplo, node:20-slim",
|
||||
"dockerImageWithExample": "Imagem Docker (por exemplo, node:20-slim)",
|
||||
"duration": "Duração",
|
||||
"editable": "Editável",
|
||||
"editOrgChartFromTheAgents": "Edite o organograma a partir da lista de agentes.",
|
||||
"editRoutine": "Editar rotina",
|
||||
"effectiveActionsThisAgentCanRequest": "Ações efetivas que este agente pode pedir durante as execuções do Office.",
|
||||
"eGCodeReview": "por exemplo, code-review",
|
||||
"eGFrontendWorker": "por exemplo, Trabalhador de Frontend",
|
||||
"enqueueMissedWithCap": "Colocar em fila os perdidos (com limite)",
|
||||
"entityId": "ID da entidade",
|
||||
"events": "Eventos",
|
||||
"exceeded": "Excedido",
|
||||
"executor": "Executor",
|
||||
"executorConfiguration": "Configuração do executor",
|
||||
"executorConfigurationSaved": "Configuração do executor guardada",
|
||||
"executorPreference": "Preferência de executor",
|
||||
"executorType": "Tipo de executor",
|
||||
"existingConfigurationFound": "Foi encontrada configuração existente",
|
||||
"expand": "Expandir",
|
||||
"export": "Exportar",
|
||||
"exportedToFilesystem": "Exportado para o sistema de ficheiros",
|
||||
"exportFilesCount_one": "Exportar {{count}} ficheiro",
|
||||
"exportFilesCount_other": "Exportar {{count}} ficheiros",
|
||||
"exportSelectionSummary": "Exportação de {{workspace}} · {{selected}} / {{total}} ficheiros selecionados",
|
||||
"exportSvg": "Exportar SVG",
|
||||
"exportToFilesystem": "Exportar para o sistema de ficheiros",
|
||||
"failed": "Falhadas",
|
||||
"failedToAddChannel": "Não foi possível adicionar o canal",
|
||||
"failedToAddRepository": "Não foi possível adicionar o repositório",
|
||||
"failedToApprove": "Não foi possível aprovar",
|
||||
"failedToClearMemory": "Não foi possível limpar a memória",
|
||||
"failedToCompleteSetup": "Não foi possível concluir a configuração",
|
||||
"failedToCreateAgent": "Não foi possível criar o agente",
|
||||
"failedToCreateBudgetPolicy": "Não foi possível criar a política de orçamento",
|
||||
"failedToCreateFile": "Não foi possível criar o ficheiro",
|
||||
"failedToCreateIssue": "Não foi possível criar a issue",
|
||||
"failedToCreateProject": "Não foi possível criar o projeto",
|
||||
"failedToCreateRoutine": "Não foi possível criar a rotina",
|
||||
"failedToCreateSkill": "Não foi possível criar a competência",
|
||||
"failedToDelete": "Não foi possível eliminar",
|
||||
"failedToDeleteBudgetPolicy": "Não foi possível eliminar a política de orçamento",
|
||||
"failedToDeleteChannel": "Não foi possível eliminar o canal",
|
||||
"failedToDeleteMemoryEntry": "Não foi possível eliminar a entrada de memória",
|
||||
"failedToDeleteProject": "Não foi possível eliminar o projeto",
|
||||
"failedToDeleteRoutine": "Não foi possível eliminar a rotina",
|
||||
"failedToDeleteWorkspace": "Não foi possível eliminar a área de trabalho",
|
||||
"failedToExportToFilesystem": "Não foi possível exportar para o sistema de ficheiros",
|
||||
"failedToImportFromFilesystem": "Não foi possível importar do sistema de ficheiros",
|
||||
"failedToImportSettings": "Não foi possível importar as definições",
|
||||
"failedToImportSkill": "Não foi possível importar a competência: {{msg}}",
|
||||
"failedToLoad": "Não foi possível carregar",
|
||||
"failedToLoadActivity": "Não foi possível carregar a atividade",
|
||||
"failedToLoadBudgets": "Não foi possível carregar os orçamentos",
|
||||
"failedToLoadChannels": "Não foi possível carregar os canais",
|
||||
"failedToLoadCostData": "Não foi possível carregar os dados de custos",
|
||||
"failedToLoadDeletionSummary": "Não foi possível carregar o resumo da eliminação",
|
||||
"failedToLoadDiffs": "Não foi possível carregar os diffs",
|
||||
"failedToLoadExportBundle": "Não foi possível carregar o pacote de exportação",
|
||||
"failedToLoadInstructions": "Não foi possível carregar as instruções",
|
||||
"failedToLoadMemory": "Não foi possível carregar a memória",
|
||||
"failedToLoadMoreTasks": "Não foi possível carregar mais tarefas",
|
||||
"failedToLoadProject": "Não foi possível carregar o projeto",
|
||||
"failedToLoadTask": "Não foi possível carregar a tarefa",
|
||||
"failedToLoadTasks": "Não foi possível carregar as tarefas",
|
||||
"failedToRefreshTasks": "Não foi possível atualizar as tarefas",
|
||||
"failedToRefreshUtilization": "Não foi possível atualizar a utilização",
|
||||
"failedToReject": "Não foi possível rejeitar",
|
||||
"failedToRemoveRepository": "Não foi possível remover o repositório",
|
||||
"failedToRunRoutine": "Não foi possível executar a rotina",
|
||||
"failedToSave": "Não foi possível guardar",
|
||||
"failedToSaveExecutorConfiguration": "Não foi possível guardar a configuração do executor",
|
||||
"failedToSaveProject": "Não foi possível guardar o projeto",
|
||||
"failedToSaveRoutine": "Não foi possível guardar a rotina",
|
||||
"failedToSaveSettings": "Não foi possível guardar as definições",
|
||||
"failedToUpdateAgent": "Não foi possível atualizar o agente",
|
||||
"failedToUpdateRoutine": "Não foi possível atualizar a rotina",
|
||||
"failedToUpdateSkills": "Não foi possível atualizar as competências",
|
||||
"fallback": "Recurso",
|
||||
"filter": "Filtrar",
|
||||
"filterSkills": "Filtrar competências...",
|
||||
"finished": "Terminada",
|
||||
"finishedAgo": "Terminada {{ago}}",
|
||||
"firesNow": "dispara agora",
|
||||
"firstTask": "Primeira tarefa",
|
||||
"fitToScreen": "Ajustar ao ecrã",
|
||||
"forAgentInProject": "<0>Para</0> <1></1> <2>em</2> <3></3>",
|
||||
"foundWorkspacesOnFilesystem_one": "Foi encontrada {{count}} área de trabalho no sistema de ficheiros. Importar as definições para começar?",
|
||||
"foundWorkspacesOnFilesystem_other": "Foram encontradas {{count}} áreas de trabalho no sistema de ficheiros. Importar as definições para começar?",
|
||||
"general": "Geral",
|
||||
"gitUrlsOrLocalPathsWhere": "URLs de Git ou caminhos locais onde os agentes vão trabalhar neste projeto.",
|
||||
"gitUrlsOrLocalPathsWhereShort": "URLs de Git ou caminhos locais onde os agentes vão trabalhar",
|
||||
"giveAgentSomethingToDo": "Dê algo para fazer ao seu {{name}}",
|
||||
"groupBy": "Agrupar por",
|
||||
"healthy": "Saudável",
|
||||
"hideApprover": "Ocultar o aprovador",
|
||||
"hideReviewer": "Ocultar o revisor",
|
||||
"highestUtilizationAcrossSubscriptionAgents": "Utilização mais alta entre os agentes com subscrição",
|
||||
"hours": "horas",
|
||||
"howAgentSessionsRunForThis": "Como são executadas as sessões de agente neste projeto.",
|
||||
"howAgentSessionsRunInheritProject": "Como são executadas as sessões de agente (herdar usa a pré-definição do projeto ou da área de trabalho)",
|
||||
"howAgentSessionsRunInheritUses": "Como são executadas as sessões de agente (herdar usa a pré-definição da área de trabalho)",
|
||||
"howFarBackToLookFor": "Até que ponto recuar na procura de tarefas por iniciar durante as varreduras de recuperação",
|
||||
"howManyTasksThisAgentCan": "Quantas tarefas este agente pode executar em simultâneo",
|
||||
"identifier": "Identificador",
|
||||
"identity": "Identidade",
|
||||
"importContinue": "Importar e continuar",
|
||||
"importedConfigEntries": "{{importedCount}} entradas de configuração importadas",
|
||||
"importedFromFilesystemCreatedUpdated": "Importado do sistema de ficheiros ({{created}} criadas, {{updated}} atualizadas)",
|
||||
"importFromFilesystem": "Importar do sistema de ficheiros",
|
||||
"importing": "A importar...",
|
||||
"in": "Entrada:",
|
||||
"inbox": "Caixa de entrada",
|
||||
"incomingFilesystemDatabase": "A receber (sistema de ficheiros → base de dados)",
|
||||
"inFlight": "em curso",
|
||||
"inherit": "Herdar",
|
||||
"inheritFromProjectWorkspace": "Herdar do projeto ou da área de trabalho",
|
||||
"inheritFromWorkspace": "Herdar da área de trabalho",
|
||||
"inheritsTierFromWorkspace": "Herda <1>{{tier}}</1> da área de trabalho.",
|
||||
"inheritsWorkspacePolicyList": "Herda a política da área de trabalho: {{list}}.",
|
||||
"inheritsWorkspacePolicyNoneSet": "Herda a política da área de trabalho (ainda não há escalões definidos por motivo de despertar).",
|
||||
"injectedContinuationSummary": "Resumo de continuação injetado",
|
||||
"inProgress": "Em curso",
|
||||
"input": "Entrada",
|
||||
"inputTokens": "Tokens de entrada",
|
||||
"inReview": "Em revisão",
|
||||
"instructionFileCompletionDetail": "ficheiro de instruções",
|
||||
"instructionsTheAgentReceivesWhenThis": "Instruções que o agente recebe quando esta rotina é acionada",
|
||||
"intended": "Pretendida",
|
||||
"itemsWaitingForYourReview": "Itens à espera da sua revisão",
|
||||
"kind": "Tipo",
|
||||
"last14Days": "Últimos 14 dias",
|
||||
"last30Days": "Últimos 30 dias",
|
||||
"lastFired": "Último disparo: {{when}}",
|
||||
"lastRun": "Última execução",
|
||||
"lastRunFailedAgo": "A última execução falhou {{ago}}",
|
||||
"lastRunNever": "Nunca",
|
||||
"latestRun": "Execução mais recente",
|
||||
"leadAgent": "Agente responsável",
|
||||
"leadAgentName": "Responsável: {{name}}",
|
||||
"limit": "Limite ($)",
|
||||
"linked": "Associado",
|
||||
"listView": "Vista de lista",
|
||||
"live": "Ativa",
|
||||
"liveNow": "Ativa agora",
|
||||
"loadingExportBundle": "A carregar o pacote de exportação...",
|
||||
"loadingInstructions": "A carregar as instruções...",
|
||||
"loadingProject": "A carregar o projeto...",
|
||||
"loadingRuns": "A carregar as execuções...",
|
||||
"loadingTasks": "A carregar as tarefas...",
|
||||
"loadMore": "Carregar mais",
|
||||
"localDocker": "Docker local",
|
||||
"localStandalone": "Local (autónomo)",
|
||||
"logo": "Logótipo",
|
||||
"main": "main",
|
||||
"manage": "Gerir",
|
||||
"manageSkillsInCompany": "Faça a gestão das competências em Empresa",
|
||||
"mapOfficeAgentsToProvidersAnd": "Mapeie os agentes do Office para fornecedores e escalões com recurso controlado a alternativas. Avançado; desativado por pré-definição.",
|
||||
"markFixed": "Marcar como corrigido",
|
||||
"marking": "A marcar…",
|
||||
"maxConcurrent": "Máximo em simultâneo",
|
||||
"maxConcurrentSessions": "Máximo de sessões em simultâneo",
|
||||
"memoryEntryDeleted": "Entrada de memória eliminada",
|
||||
"memoryIsAccumulatedAsTheAgent": "A memória é acumulada à medida que o agente trabalha nas tarefas.",
|
||||
"memoryMb": "Memória (MB)",
|
||||
"metaKey": "CHAVE",
|
||||
"metaMode": "MODO",
|
||||
"metaSource": "ORIGEM",
|
||||
"mine": "Meus",
|
||||
"missingCount_one": "{{count}} em falta",
|
||||
"missingCount_other": "{{count}} em falta",
|
||||
"modelsUsed": "Modelos usados",
|
||||
"monthly": "Mensal",
|
||||
"monthlyBudget": "Orçamento mensal ($)",
|
||||
"monthlySpendingLimit0Unlimited": "Limite de despesa mensal ($0 = ilimitado)",
|
||||
"monthSpend": "Despesa do mês",
|
||||
"moreInfoAbout": "Mais informações sobre {{label}}",
|
||||
"moreOptions": "Mais opções",
|
||||
"moveDown": "Mover para baixo",
|
||||
"moveUp": "Mover para cima",
|
||||
"name": "Nome",
|
||||
"nameRoleAndReportingStructureFor": "Nome, papel e estrutura hierárquica deste agente.",
|
||||
"needsAction": "Precisa de ação",
|
||||
"never": "nunca",
|
||||
"neverRun": "Nunca executada",
|
||||
"newAgent": "Novo agente",
|
||||
"newAgentHiresMustBeApproved": "As novas contratações de agentes têm de ser aprovadas antes da ativação",
|
||||
"newAgentsMatchingTheseRolesGet": "Os novos agentes com estes papéis recebem esta competência automaticamente",
|
||||
"newIssue": "Nova issue",
|
||||
"newProject": "Novo projeto",
|
||||
"newRoutine": "Nova rotina",
|
||||
"newSkill": "Nova competência",
|
||||
"newTask": "Nova tarefa",
|
||||
"nextFire": "Próximo disparo: {{when}}",
|
||||
"nextIn": "próximo dentro de {{when}}",
|
||||
"noActiveExecutionProfilesAreAvailable": "Não há perfis de execução ativos disponíveis para este fornecedor.",
|
||||
"noActiveSessionForThisTask": "Não há nenhuma sessão ativa para esta tarefa.",
|
||||
"noActivityYet": "Ainda não há atividade.",
|
||||
"noAgentProfileConfigured": "Nenhum perfil de agente configurado",
|
||||
"noAgentsAttached": "Nenhum agente associado",
|
||||
"noAgentsInThisWorkspaceYet": "Ainda não há agentes nesta área de trabalho.",
|
||||
"noAgentsToDisplay": "Não há agentes para mostrar.",
|
||||
"noAgentsYet": "Ainda não há agentes.",
|
||||
"noBudget": "Sem orçamento",
|
||||
"noBudgetPoliciesConfiguredAddOne": "Nenhuma política de orçamento configurada. Adicione uma para impor limites de despesa.",
|
||||
"noChangesDetected": "Não foram detetadas alterações.",
|
||||
"noChannelsConfiguredAddAChannel": "Nenhum canal configurado. Adicione um canal para ativar as mensagens externas.",
|
||||
"noCliAgentProfilesAvailableYet": "Ainda não há perfis de agente CLI disponíveis.",
|
||||
"noConversationLinkedToThisRun": "Não há nenhuma conversa associada a esta execução.",
|
||||
"noCostDataYetCostsAre": "Ainda não há dados de custos. Os custos são registados quando os agentes executam tarefas.",
|
||||
"noEventsRecordedForThisRun": "Ainda não há eventos registados para esta execução.",
|
||||
"noGrouping": "Sem agrupamento",
|
||||
"noInitialTask": "Sem tarefa inicial",
|
||||
"noInstructionFilesYet": "Ainda não há ficheiros de instruções.",
|
||||
"noMatches": "Sem correspondências.",
|
||||
"noMatchingSkills": "Nenhuma competência correspondente",
|
||||
"noMemoryEntriesYet": "Ainda não há entradas de memória.",
|
||||
"noMoreRuns": "Não há mais execuções",
|
||||
"none": "Nenhum",
|
||||
"noneLower": "nenhum",
|
||||
"noneTopLevel": "Nenhum (nível superior)",
|
||||
"noProject": "Sem projeto",
|
||||
"noProjectsYet": "Ainda não há projetos.",
|
||||
"noProviderHasTierMapped": "Nenhum fornecedor tem o escalão {{tier}} mapeado — defina um modelo para {{tier}} em Mapeamento de escalões do fornecedor, abaixo.",
|
||||
"noProviderInOrderHasTierMapped": "Nenhum fornecedor da ordem efetiva tem {{tier}} mapeado.",
|
||||
"noProviderMappedForTierHelp": "Nenhum fornecedor da ordem efetiva tem o escalão {{tier}} mapeado. Selecione um perfil de execução para {{tier}} em pelo menos um fornecedor em Área de trabalho → Encaminhamento de fornecedores.",
|
||||
"noProvidersConfigured": "Nenhum fornecedor configurado.",
|
||||
"noProvidersSelected": "Nenhum fornecedor selecionado.",
|
||||
"noRecentActivityActionsByAgents": "Sem atividade recente. As ações dos agentes e dos utilizadores aparecem aqui.",
|
||||
"noRecentTasks": "Não há tarefas recentes.",
|
||||
"noRepositoriesAddedYet": "Ainda não foram adicionados repositórios.",
|
||||
"noRoute": "sem rota",
|
||||
"noRoutinesYet": "Ainda não há rotinas.",
|
||||
"noRuns": "Sem execuções",
|
||||
"noRunsWithCostDataYet": "Ainda não há execuções com dados de custos.",
|
||||
"noRunsYet": "Ainda não há execuções.",
|
||||
"noRunsYetShort": "Ainda não há execuções",
|
||||
"noScheduledWakeUpsManageRoutines": "Não há despertares agendados — faça a gestão das rotinas",
|
||||
"noSkillsRegisteredYet": "Ainda não há competências registadas.",
|
||||
"noSkillsYetImportFromGithub": "Ainda não há competências. Importe do GitHub ou crie as suas.",
|
||||
"noTasksFound": "Nenhuma tarefa encontrada.",
|
||||
"noTasksInThisProjectYet": "Ainda não há tarefas neste projeto.",
|
||||
"noTasksTouchedYet": "Ainda não foram tocadas tarefas.",
|
||||
"noTasksWereModifiedDuringThis": "Não foram modificadas tarefas durante esta execução.",
|
||||
"notConfigured": "Não configurado",
|
||||
"notifyOnly": "Apenas notificar",
|
||||
"noUtilizationDataAvailable": "Não há dados de utilização disponíveis.",
|
||||
"noUtilizationDataClickRefreshTo": "Não há dados de utilização. Clique em atualizar para obter a utilização atual.",
|
||||
"observed": "Observado",
|
||||
"off": "Desligado",
|
||||
"officeTurnsYourBacklogIntoAutonomous": "O Office transforma o seu backlog em trabalho autónomo. Um agente coordenador decompõe cada tarefa, delega em agentes trabalhadores especializados e reporta-lhe o progresso. Nos próximos passos vai dar um nome a esta área de trabalho, criar o seu coordenador e, se quiser, entregar-lhe uma primeira tarefa para arrancar.",
|
||||
"on": "Ligado",
|
||||
"onDisk": "Em disco",
|
||||
"onDiskBadge": "em disco",
|
||||
"oneLineSummary": "Resumo numa linha",
|
||||
"openAgent": "Abrir {{name}}",
|
||||
"openBlocked": "{{open}} abertas, {{blocked}} bloqueadas",
|
||||
"openInAdvancedView": "Abrir na vista avançada",
|
||||
"optional": "opcional",
|
||||
"optionalDescription": "Descrição opcional",
|
||||
"orchestration": "Orquestração",
|
||||
"orgChart": "Organograma",
|
||||
"other": "Outras",
|
||||
"out": "Saída:",
|
||||
"outgoingDatabaseFilesystem": "A enviar (base de dados → sistema de ficheiros)",
|
||||
"output": "Saída",
|
||||
"outputTokens": "Tokens de saída",
|
||||
"overrideTheWorkspaceTierOrProvider": "Substitua o escalão ou a ordem de fornecedores da área de trabalho para este agente.",
|
||||
"overrideWakeReasonTiers": "Substituir os escalões por motivo de despertar",
|
||||
"overrideWakeReasonTiersHelp": "Isto é raro. Substitua apenas se este agente precisar mesmo de um comportamento diferente no trabalho em segundo plano — por exemplo, um agente crítico para a segurança que tenha de usar Frontier mesmo em verificações de rotina. A maioria dos agentes deve herdar a política da área de trabalho.",
|
||||
"overrideWhichModelTierRunsFor": "Substitua o escalão de modelo usado em tipos específicos de trabalho do agente. A maioria dos utilizadores mantém as pré-definições da área de trabalho — Economy para tarefas em segundo plano, Balanced para execuções normais. Os heartbeats, as rotinas agendadas e os alertas de orçamento são constantes em segundo plano, pelo que usar aqui um escalão mais barato pode reduzir muito o custo sem afetar o trabalho que interessa.",
|
||||
"overrideWorkspacePolicyForThisAgent": "Substituir a política da área de trabalho neste agente",
|
||||
"overrideWorkspaceProviderOrder": "Substituir a ordem de fornecedores da área de trabalho",
|
||||
"overrideWorkspaceTier": "Substituir o escalão da área de trabalho",
|
||||
"overRuns": "{{overall}}% em {{total}} execuções",
|
||||
"overview": "Visão geral",
|
||||
"parent": "Tarefa-mãe",
|
||||
"parseErrors": "Erros de análise (",
|
||||
"participantsSelected_one": "{{count}} selecionado",
|
||||
"participantsSelected_other": "{{count}} selecionados",
|
||||
"pathGithubUrlOrSkillsSh": "Caminho, URL do GitHub ou skills.sh",
|
||||
"pauseAgent": "Pausar agente",
|
||||
"pausedConsecutiveFailures_one": "Pausado — {{count}} falha consecutiva",
|
||||
"pausedConsecutiveFailures_other": "Pausado — {{count}} falhas consecutivas",
|
||||
"pendingApproval": "Aprovação pendente",
|
||||
"pendingApprovals": "Aprovações pendentes",
|
||||
"period": "Período",
|
||||
"periodValue": "Período: {{period}}",
|
||||
"permissions": "Permissões",
|
||||
"permissionSettingsSaved": "Definições de permissões guardadas",
|
||||
"permissionsUpdated": "Permissões atualizadas",
|
||||
"pickAWorkspaceRepoADiscovered": "Escolha um repositório da área de trabalho, um caminho local descoberto ou cole um URL.",
|
||||
"picksTheCliClientModelMode": "Escolhe o cliente CLI, o modelo, o modo e as flags que este agente vai usar.",
|
||||
"platform": "Plataforma",
|
||||
"preferences": "Preferências",
|
||||
"primary": "Principal",
|
||||
"priority": "Prioridade",
|
||||
"priorityCritical": "Crítica",
|
||||
"priorityHigh": "Alta",
|
||||
"priorityLow": "Baixa",
|
||||
"priorityMedium": "Média",
|
||||
"project": "Projeto",
|
||||
"projectCreated": "Projeto criado",
|
||||
"projectDeleted": "Projeto eliminado",
|
||||
"projectDescription": "Descrição do projeto...",
|
||||
"projectName": "Nome do projeto",
|
||||
"projects": "Projetos",
|
||||
"projectSaved": "Projeto guardado",
|
||||
"projectsGroupRelatedTasksAndRepositories": "Os projetos agrupam tarefas e repositórios relacionados.",
|
||||
"projectStatusActive": "Ativo",
|
||||
"projectStatusArchived": "Arquivado",
|
||||
"projectStatusCompleted": "Concluído",
|
||||
"projectStatusOnHold": "Suspenso",
|
||||
"prompt": "Prompt",
|
||||
"provider": "Fornecedor",
|
||||
"providerCandidatesTriedForThisRun": "Fornecedores candidatos tentados nesta execução, por ordem.",
|
||||
"providerDegraded": "Fornecedor degradado",
|
||||
"providerHealth": "Saúde dos fornecedores",
|
||||
"providerOrder": "Ordem dos fornecedores",
|
||||
"providerRouting": "Encaminhamento de fornecedores",
|
||||
"providerRoutingHeading": "Encaminhamento de fornecedores",
|
||||
"providers": "Fornecedores",
|
||||
"pulledLatestChanges": "Últimas alterações obtidas",
|
||||
"pullFailed": "O pull falhou",
|
||||
"pulling": "A fazer pull...",
|
||||
"push": "Push",
|
||||
"pushFailed": "O push falhou",
|
||||
"pushing": "A fazer push...",
|
||||
"readOnly": "Só de leitura",
|
||||
"readOnlyReasonGit": "As competências geridas pelo GitHub são só de leitura",
|
||||
"readOnlyReasonLocalPath": "As competências de caminho local são só de leitura",
|
||||
"readOnlyReasonSkillsSh": "As competências geridas pelo skills.sh são só de leitura",
|
||||
"ready": "Pronto",
|
||||
"reason": "Motivo",
|
||||
"recent": "Recentes",
|
||||
"recentActivity": "Atividade recente",
|
||||
"recentRuns": "Execuções recentes",
|
||||
"recentTasks": "Tarefas recentes",
|
||||
"reconnect": "Voltar a ligar",
|
||||
"recovery": "Recuperação",
|
||||
"recoveryLookbackWindow": "Janela de retrospetiva da recuperação",
|
||||
"recoverySettingsSaved": "Definições de recuperação guardadas",
|
||||
"refresh": "Atualizar",
|
||||
"refreshSkills": "Atualizar as competências",
|
||||
"refreshUtilization": "Atualizar a utilização",
|
||||
"reject": "Rejeitar",
|
||||
"rejected": "Rejeitado",
|
||||
"remainingAmount": "Restante: {{amount}}",
|
||||
"remoteDocker": "Docker remoto",
|
||||
"remove": "Remover",
|
||||
"removeApprover": "Remover o aprovador",
|
||||
"removeRepository": "Remover repositório",
|
||||
"removeReviewer": "Remover o revisor",
|
||||
"removeSkill": "Remover a competência",
|
||||
"repoCount_one": "{{count}} repositório",
|
||||
"repoCount_other": "{{count}} repositórios",
|
||||
"reportsTo": "Reporta a",
|
||||
"repositories": "Repositórios",
|
||||
"repositoryAdded": "Repositório adicionado",
|
||||
"repositoryCloned": "Repositório clonado",
|
||||
"repositoryRemoved": "Repositório removido",
|
||||
"repositoryUrl": "URL do repositório",
|
||||
"requested": "Pedida",
|
||||
"requireApprovalForNewAgents": "Exigir aprovação para novos agentes",
|
||||
"requireApprovalForSkillChanges": "Exigir aprovação para alterações de competências",
|
||||
"requireApprovalForTaskCompletion": "Exigir aprovação para a conclusão das tarefas",
|
||||
"required": "Obrigatório",
|
||||
"resetsInHoursMinutes": "Repõe dentro de {{hours}}h {{minutes}}m",
|
||||
"resetsInMinutes": "Repõe dentro de {{minutes}}m",
|
||||
"resettingSoon": "a repor em breve",
|
||||
"resolved": "Resolvida",
|
||||
"resolvedRoutes": "Rotas resolvidas",
|
||||
"resumeSession": "Retomar a sessão",
|
||||
"retry": "Tentar novamente",
|
||||
"retryAtSuffix": "· nova tentativa {{retryAt}}",
|
||||
"retryAtWhen": "Nova tentativa a {{when}}",
|
||||
"retryCancelledReassigned": "nova tentativa cancelada — reatribuída",
|
||||
"retrying": "A tentar novamente…",
|
||||
"retryNow": "Tentar novamente agora",
|
||||
"reviewAndLaunch": "Rever e lançar",
|
||||
"reviewer": "Revisor",
|
||||
"reviewers": "Revisores",
|
||||
"reviewRequest": "Pedido de revisão",
|
||||
"reviewStages": "Fases de revisão",
|
||||
"role": "Papel",
|
||||
"roleAssistant": "Assistente",
|
||||
"roleCeo": "CEO",
|
||||
"roleDefault": "papel pré-definido",
|
||||
"roleDevops": "DevOps",
|
||||
"roleQa": "QA",
|
||||
"roleSecurity": "Segurança",
|
||||
"roleSpecialist": "Especialista",
|
||||
"roleWorker": "Trabalhador",
|
||||
"routeAttempts": "Tentativas de encaminhamento",
|
||||
"routeBlocked": "Bloqueada",
|
||||
"routeOutcomeFailedOther": "falhou por outro motivo",
|
||||
"routeOutcomeFailedProviderUnavailable": "falhou por fornecedor indisponível",
|
||||
"routeOutcomeLaunched": "lançada",
|
||||
"routeOutcomeSkippedDegraded": "ignorado por estar degradado",
|
||||
"routeOutcomeSkippedMaxAttempts": "ignorado por máximo de tentativas",
|
||||
"routeOutcomeSkippedMissingMapping": "ignorado por falta de mapeamento",
|
||||
"routeOutcomeSkippedUserAction": "ignorado por ação do utilizador",
|
||||
"routineActivated": "Rotina ativada",
|
||||
"routineCreated": "Rotina criada",
|
||||
"routineDeleted": "Rotina eliminada",
|
||||
"routineFired": "Rotina disparada",
|
||||
"routinePaused": "Rotina pausada",
|
||||
"routines": "Rotinas",
|
||||
"routinesAutomaticallyCreateTasksOnA": "As rotinas criam tarefas automaticamente com base num agendamento ou num acionador de webhook.",
|
||||
"routineSaved": "Rotina guardada",
|
||||
"routineStarted": "Rotina iniciada",
|
||||
"routineStatusActive": "Ativa",
|
||||
"routineStatusArchived": "Arquivada",
|
||||
"routineStatusPaused": "Pausada",
|
||||
"routingOverridesSaved": "Substituições de encaminhamento guardadas",
|
||||
"routingSettingsSaved": "Definições de encaminhamento guardadas",
|
||||
"run": "Execução",
|
||||
"runActivity": "Atividade das execuções",
|
||||
"runCancelAssigneeChanged": "O responsável mudou",
|
||||
"runCancelRetryStale": "Nova tentativa obsoleta",
|
||||
"runCancelReviewParticipantChanged": "O revisor mudou",
|
||||
"runCancelTaskCancelled": "Tarefa cancelada",
|
||||
"runCancelTaskNotFound": "Tarefa não encontrada",
|
||||
"runCancelTaskTerminal": "Tarefa concluída",
|
||||
"runCount_one": "{{count}} execução",
|
||||
"runCount_other": "{{count}} execuções",
|
||||
"runInALocalDockerContainer": "Executar num contentor Docker local",
|
||||
"runInASpritesCloudEnvironment": "Executar num ambiente na nuvem do Sprites",
|
||||
"runningPausedErrors": "{{running}} em execução, {{paused}} pausadas, {{errors}} com erros",
|
||||
"runNow": "Executar agora",
|
||||
"runNowTitleCase": "Executar agora",
|
||||
"runOnHostMachine": "Executar na máquina anfitriã",
|
||||
"runs": "Execuções",
|
||||
"runsAppearHereWhenARoutine": "As execuções aparecem aqui quando uma rotina é acionada.",
|
||||
"runStatusCancelled": "cancelada",
|
||||
"runStatusCoalesced": "fundida",
|
||||
"runStatusDone": "concluída",
|
||||
"runStatusFailed": "falhada",
|
||||
"runStatusReceived": "recebida",
|
||||
"runStatusSkipped": "ignorada",
|
||||
"runStatusTaskCreated": "tarefa criada",
|
||||
"runtime": "Runtime",
|
||||
"runtimeCapabilities": "Capacidades do runtime",
|
||||
"saveChanges": "Guardar alterações",
|
||||
"saveConfiguration": "Guardar configuração",
|
||||
"saved": "{{filename}} guardado",
|
||||
"saveOverrides": "Guardar as substituições",
|
||||
"savePermissions": "Guardar permissões",
|
||||
"saveSkills": "Guardar competências",
|
||||
"saving": "A guardar...",
|
||||
"savingEllipsis": "A guardar…",
|
||||
"schedule": "Agendamento",
|
||||
"scopeId": "ID do âmbito",
|
||||
"scopeType": "Tipo de âmbito",
|
||||
"search": "Pesquisar...",
|
||||
"searchFiles": "Pesquisar ficheiros...",
|
||||
"searchingYourMachine": "A pesquisar na sua máquina…",
|
||||
"searchMemory": "Pesquisar na memória...",
|
||||
"searchOrPasteAUrlOr": "Pesquise ou cole um URL ou caminho…",
|
||||
"searchTasks": "Pesquisar tarefas...",
|
||||
"selectAFileToPreview": "Selecione um ficheiro para pré-visualizar",
|
||||
"selectAFileToViewOr": "Selecione um ficheiro para ver ou editar.",
|
||||
"selectAgent": "Selecionar agente",
|
||||
"selectAgentOptional": "Selecionar agente (opcional)",
|
||||
"selectAnAgentProfile": "Selecione um perfil de agente...",
|
||||
"selectApprover": "Selecionar aprovador",
|
||||
"selectAProjectToCreateATask": "Selecione um projeto para criar uma tarefa",
|
||||
"selectASkillToView": "Selecione uma competência para ver",
|
||||
"selectAWorkspaceToViewActivity": "Selecione uma área de trabalho para ver a atividade.",
|
||||
"selectAWorkspaceToViewCosts": "Selecione uma área de trabalho para ver os custos.",
|
||||
"selectExecutionProfile": "Selecionar perfil de execução",
|
||||
"selectExecutor": "Selecionar executor...",
|
||||
"selectProfile": "Selecionar perfil...",
|
||||
"sendAMessage": "Envie uma mensagem...",
|
||||
"sendAMessageToStartA": "Envie uma mensagem para iniciar uma sessão...",
|
||||
"sendMessage": "Enviar mensagem",
|
||||
"session": "Sessão",
|
||||
"sessionId": "ID da sessão",
|
||||
"sessionIdAfter": "ID da sessão (depois)",
|
||||
"sessionIdBefore": "ID da sessão (antes)",
|
||||
"setSpendingLimitsPerAgentOr": "Defina limites de despesa por agente ou por projeto. Os agentes são pausados quando os limites são excedidos.",
|
||||
"setupTierAgentProfiles": "Configurar os perfis de agente por escalão",
|
||||
"setUpYourOfficeWorkspace": "Configure a sua área de trabalho do Office",
|
||||
"ship": "Entrega",
|
||||
"showSystemTasks": "Mostrar as tarefas de sistema",
|
||||
"skillAutoAttachedToRole": "Esta competência é associada automaticamente aos novos agentes {{role}}. Ainda assim, pode desmarcá-la para este agente.",
|
||||
"skillCount_one": "{{count}} competência",
|
||||
"skillCount_other": "{{count}} competências",
|
||||
"skillMdContent": "Conteúdo do SKILL.md",
|
||||
"skillNameInstructionsForTheAgent": "# Nome da competência\n\nInstruções para o agente...",
|
||||
"skills": "Competências",
|
||||
"skillSourceGithub": "GitHub",
|
||||
"skillSourceGitRepository": "Repositório Git",
|
||||
"skillSourceInline": "Em linha",
|
||||
"skillSourceInlineEditable": "Em linha (editar no navegador)",
|
||||
"skillSourceKandev": "Kandev",
|
||||
"skillSourceLocal": "Local",
|
||||
"skillSourceLocalPath": "Caminho local",
|
||||
"skillSourceSkillsSh": "skills.sh",
|
||||
"skillSourceUserHome": "Pasta pessoal do utilizador",
|
||||
"skillsTeachAgentsHowToPerform": "As competências ensinam os agentes a realizar tarefas específicas. Importe do GitHub ou crie as suas.",
|
||||
"skillsThisAgentOwnsSkillsAre": "Competências deste agente. As competências são injetadas no prompt de sistema do agente no início da sessão.",
|
||||
"skillsUpdated": "Competências atualizadas",
|
||||
"skipIfActive": "Ignorar se estiver ativa",
|
||||
"skipMissed": "Ignorar os perdidos",
|
||||
"sort": "Ordenar",
|
||||
"sortBy": "Ordenar por",
|
||||
"sortCreated": "Criado",
|
||||
"sortUpdated": "Atualizado",
|
||||
"sourceType": "Tipo de origem",
|
||||
"spritesRemoteSandbox": "Sprites (sandbox remota)",
|
||||
"staleRunCancelled": "execução obsoleta cancelada",
|
||||
"standardCronExpressionExample": "Expressão cron padrão (por exemplo, {{cron}} para todas as segundas-feiras às 9h)",
|
||||
"startASessionOrSendA": "Inicie uma sessão ou envie uma mensagem para começar.",
|
||||
"started": "Iniciada",
|
||||
"startFresh": "Começar de novo",
|
||||
"startFreshSentence": "Começar de novo",
|
||||
"starting": "A iniciar...",
|
||||
"startSession": "Iniciar sessão",
|
||||
"statusBacklog": "Backlog",
|
||||
"statusBlocked": "Bloqueada",
|
||||
"statusCancelled": "Cancelada",
|
||||
"statusChanged": "estado alterado",
|
||||
"statusDone": "Concluída",
|
||||
"statusInProgress": "Em curso",
|
||||
"statusInReview": "Em revisão",
|
||||
"statusTodo": "Por fazer",
|
||||
"stepDetails": "Detalhes",
|
||||
"stepNumberTitle": "Passo {{number}}: {{title}}",
|
||||
"stepSchedule": "Agendamento",
|
||||
"stepTaskTemplate": "Modelo de tarefa",
|
||||
"stepXOfYTitle": "Passo {{number}} de {{total}} — {{title}}",
|
||||
"structuredResult": "Resultado estruturado",
|
||||
"subIssueOfParent": "Subissue de {{parent}}",
|
||||
"subscriptionQuota": "Quota da subscrição",
|
||||
"succeeded": "Bem-sucedidas",
|
||||
"successRate": "Taxa de sucesso",
|
||||
"sync": "Sincronizar",
|
||||
"syncTheWorkspaceDatabaseWithOn": "Sincronize a base de dados da área de trabalho com os ficheiros YAML em disco ou transfira um pacote de exportação portátil.",
|
||||
"system": "Sistema",
|
||||
"tabChannels": "Canais",
|
||||
"tabConfiguration": "Configuração",
|
||||
"tabInstructions": "Instruções",
|
||||
"tabMemory": "Memória",
|
||||
"tabPermissions": "Permissões",
|
||||
"taskCount_one": "{{count}} tarefa",
|
||||
"taskCount_other": "{{count}} tarefas",
|
||||
"taskCreated": "Tarefa criada",
|
||||
"taskDescription": "Descrição da tarefa",
|
||||
"taskDescriptionTemplate": "Modelo de descrição da tarefa",
|
||||
"taskNotFound": "Tarefa não encontrada",
|
||||
"taskPrefix": "Prefixo das tarefas",
|
||||
"taskReview": "Revisão da tarefa",
|
||||
"tasks": "Tarefas",
|
||||
"tasksByPriority": "Tarefas por prioridade",
|
||||
"tasksByStatus": "Tarefas por estado",
|
||||
"tasksInProgress": "Tarefas em curso",
|
||||
"tasksMustBeReviewedBeforeThey": "As tarefas têm de ser revistas antes de poderem ser marcadas como concluídas",
|
||||
"tasksTouched": "Tarefas tocadas",
|
||||
"tasksWillBeNumbered": "As tarefas são numeradas {{prefix}}-1, {{prefix}}-2, etc.",
|
||||
"tasksWorkedOnByPriority": "Tarefas trabalhadas, por prioridade",
|
||||
"tasksWorkedOnByStatus": "Tarefas trabalhadas, por estado",
|
||||
"taskTitle": "Título da tarefa",
|
||||
"taskTitleTemplate": "Modelo de título da tarefa",
|
||||
"telegram": "Telegram",
|
||||
"theAgentResponsibleForManagingThis": "O agente responsável pela gestão deste projeto",
|
||||
"theCoordinatorCanCreateWorkerAgents": "O coordenador pode criar agentes trabalhadores e escolher um escalão para cada um. Cada escalão resolve para o perfil aqui selecionado e pode ser alterado mais tarde no encaminhamento da área de trabalho.",
|
||||
"theCoordinatorManagesOtherAgentsDelegates": "O coordenador faz a gestão dos outros agentes, delega tarefas e monitoriza o progresso.",
|
||||
"thisAgentAsTheAssignee": "Este agente como responsável",
|
||||
"thisCoordinatorHasNoScheduledWake": "Este coordenador não tem despertares agendados — só dispara com comentários, erros ou acionadores manuais.",
|
||||
"thisPermanentlyDeletesAgentsTasksSkills": "Isto elimina permanentemente agentes, tarefas, competências, rotinas e configuração.",
|
||||
"thisProvider": "este fornecedor",
|
||||
"thisWillPermanentlyDeleteAllMemory": "Isto elimina permanentemente todas as entradas de memória deste agente. Esta ação não pode ser anulada.",
|
||||
"thisWillPermanentlyDeleteThisInstruction": "Isto elimina permanentemente este ficheiro de instruções. Esta ação não pode ser anulada.",
|
||||
"tier": "Escalão",
|
||||
"tierBalanced": "Balanced",
|
||||
"tierBalancedDescription": "Usado nos agentes trabalhadores gerais, quando o coordenador atribui o escalão Balanced.",
|
||||
"tierBalancedHint": "Capacidade padrão",
|
||||
"tierBalancedQualified": "Balanced (padrão)",
|
||||
"tierBalancedUsage": "Utilização do escalão Balanced",
|
||||
"tierEconomy": "Economy",
|
||||
"tierEconomyDescription": "Usado nos agentes de QA, de rotina e de menor custo, quando o coordenador atribui o escalão Economy.",
|
||||
"tierEconomyHint": "Modelo viável mais barato",
|
||||
"tierEconomyQualified": "Economy (mais barato)",
|
||||
"tierEconomyUsage": "Utilização do escalão Economy",
|
||||
"tierFrontier": "Frontier",
|
||||
"tierFrontierDescription": "Usado quando o coordenador cria agentes para o trabalho de maior capacidade ou atribui o escalão Frontier.",
|
||||
"tierFrontierHint": "Melhor capacidade por fornecedor",
|
||||
"tierFrontierQualified": "Frontier (melhor capacidade)",
|
||||
"tierFrontierUsage": "Utilização do escalão Frontier",
|
||||
"tierNameBalanced": "Balanced",
|
||||
"tierNameEconomy": "Economy",
|
||||
"tierNameFrontier": "Frontier",
|
||||
"timezone": "Fuso horário",
|
||||
"title": "Título",
|
||||
"titleForAutoCreatedTasksUse": "Título das tarefas criadas automaticamente. Use {{name}} e {{date}} como marcadores.",
|
||||
"toggleNesting": "Alternar o aninhamento",
|
||||
"topToBottomFallbackOrderAgents": "Ordem de recurso, de cima para baixo. Os agentes tentam o primeiro fornecedor saudável, exceto se a substituírem.",
|
||||
"toSetUpARoutineYou": "Para configurar uma rotina, vai precisar de:",
|
||||
"total": "Total",
|
||||
"totalApiCostsThisBillingPeriod": "Custos totais de API neste período de faturação",
|
||||
"totalCost": "Custo total",
|
||||
"totalSpend": "Despesa total",
|
||||
"trigger": "Acionador",
|
||||
"triggerComment": "Comentário",
|
||||
"triggerRoutine": "Rotina",
|
||||
"triggerTask": "Tarefa",
|
||||
"triggerType": "Tipo de acionador",
|
||||
"type": "Tipo",
|
||||
"typeNameToConfirm": "Escreva {{name}} para confirmar",
|
||||
"typicalMappingAtLaunchTimeThe": "Mapeamento típico. No momento do lançamento, o encaminhador percorre a ordem dos fornecedores e escolhe o primeiro que estiver saudável, pelo que um fornecedor principal degradado pode fazer com que esta execução use um fornecedor/modelo diferente do aqui apresentado.",
|
||||
"unassigned": "Sem responsável",
|
||||
"unassignedParen": "(sem responsável)",
|
||||
"unknownError": "Erro desconhecido",
|
||||
"unstartedTaskRecovered": "tarefa por iniciar recuperada",
|
||||
"untitled": "(sem título)",
|
||||
"updateWorkspaceConfiguration": "Atualizar a configuração da área de trabalho",
|
||||
"upload": "Carregar",
|
||||
"uploadLogo": "Carregar logótipo",
|
||||
"useAgentSNormalTier": "Usar o escalão normal do agente",
|
||||
"usedBy": "USADO POR",
|
||||
"useQuery": "Usar “{{query}}”",
|
||||
"usingThisAgentsWakeReasonOverrides": "A usar as substituições por motivo de despertar deste agente.",
|
||||
"variables": "Variáveis",
|
||||
"waiting": "À espera…",
|
||||
"waitingForCapacity": "À espera de capacidade",
|
||||
"wakeBudgetAlert": "Alerta de orçamento",
|
||||
"wakeBudgetAlertLong": "Os alertas de orçamento são confirmações rápidas — o agente lê o alerta, decide se pausa o trabalho ou notifica uma pessoa, e volta a adormecer. Não há raciocínio pesado envolvido, pelo que o escalão mais barato é quase sempre suficiente.",
|
||||
"wakeBudgetAlertRecommendation": "Trabalho de confirmação rápida → um escalão mais barato chega.",
|
||||
"wakeBudgetAlertShort": "O agente é notificado quando o orçamento de uma área de trabalho ou de um projeto está perto do limite e pode ser preciso abrandar ou escalar.",
|
||||
"wakeHeartbeat": "Heartbeat",
|
||||
"wakeHeartbeatLong": "Os heartbeats mantêm o agente reativo: uma análise rápida da caixa de entrada, das tarefas abertas e dos alertas de orçamento. Disparam constantemente em segundo plano, pelo que usar aqui um escalão mais barato pode reduzir muito a sua despesa mensal sem afetar o trabalho que interessa.",
|
||||
"wakeHeartbeatRecommendation": "Muito frequente → recomenda-se um escalão mais barato.",
|
||||
"wakeHeartbeatShort": "Verificação periódica que o seu agente faz de forma agendada (a cada poucos minutos) para ver se há algo novo a precisar de atenção.",
|
||||
"wakeReasonTierPolicy": "Política de escalões por motivo de despertar",
|
||||
"wakeRoutineTrigger": "Acionador de rotina",
|
||||
"wakeRoutineTriggerLong": "Os acionadores de rotina disparam segundo um agendamento cron que você controla. A carga de trabalho é previsível e raramente crítica no tempo, pelo que um escalão mais barato costuma ser suficiente. Substitua por agente se uma rotina específica precisar do modelo mais capaz.",
|
||||
"wakeRoutineTriggerRecommendation": "Carga previsível → um escalão mais barato costuma chegar.",
|
||||
"wakeRoutineTriggerShort": "Trabalhos agendados que configurou em Rotinas (por exemplo, \"resumir os PRs todas as segundas-feiras de manhã\").",
|
||||
"warning": "Aviso",
|
||||
"webhook": "Webhook",
|
||||
"whatEachAgentWouldLaunchWith": "O que cada agente lançaria com as definições atuais.",
|
||||
"whatHappensIfThePreviousRun": "O que acontece se a execução anterior ainda estiver ativa",
|
||||
"whatHappensToTicksMissedWhile": "O que acontece aos ticks perdidos enquanto o backend esteve offline",
|
||||
"whatTheAgentReceivedAndProduced": "O que o agente recebeu e produziu.",
|
||||
"whenEnabledProviderLimitsCanMove": "Quando ativado, os limites do fornecedor podem passar uma execução para o perfil de execução seguinte. Quando desativado, o Office usa apenas o primeiro fornecedor do escalão selecionado.",
|
||||
"whetherThisSkillSContentCan": "Se o conteúdo desta competência pode ser editado no Kandev",
|
||||
"whichAgentManagesThisOne": "Que agente faz a gestão deste",
|
||||
"workingDir": "Diretório de trabalho",
|
||||
"workspaceCreatedSuccessfully": "Área de trabalho criada com sucesso",
|
||||
"workspaceDefaultForThisReason": "Pré-definição da área de trabalho para este motivo:",
|
||||
"workspaceDefaultTier": "Escalão pré-definido da área de trabalho",
|
||||
"workspaceDefaultTierHint": "Vamos tratar <1>{{model}}</1> como o escalão {{tier}} para {{provider}}. Pode alterá-lo mais tarde em Área de trabalho → Encaminhamento de fornecedores.",
|
||||
"workspaceDeleted": "Área de trabalho eliminada",
|
||||
"workspaceName": "Nome da área de trabalho",
|
||||
"writeTheDatabaseStateToOn": "Escrever o estado da base de dados em ficheiros YAML no disco.",
|
||||
"yourModel": "o seu modelo",
|
||||
"zoomIn": "Aproximar",
|
||||
"zoomOut": "Afastar"
|
||||
}
|
||||
@@ -28,6 +28,7 @@
|
||||
"appriseUrlRequired": "É obrigatório pelo menos um URL de serviço Apprise.",
|
||||
"archiveConfirmation": "Confirmação de arquivo",
|
||||
"arrangeSplit": "Organizar a divisão",
|
||||
"autoApprove": "Aprovação automática",
|
||||
"autoInstallIfNotFound": "Instalar automaticamente se não for encontrado",
|
||||
"autoStart": "Arranque automático",
|
||||
"autoStartLanguageServer": "Iniciar automaticamente o servidor de linguagem de {{language}}",
|
||||
@@ -350,6 +351,8 @@
|
||||
"makesAgentctlValuesAvailableToPlugins": "Disponibiliza os valores do agentctl a plugins e outros consumidores. A barra de estado incorporada continua limitada ao anfitrião.",
|
||||
"manageApiKeysAndCredentialsSecrets": "Faça a gestão das chaves de API e das credenciais. Os segredos são guardados encriptados e injetados nos ambientes dos agentes através das variáveis de ambiente do perfil de executor.",
|
||||
"globalScope": "Global",
|
||||
"modelWithValue": "Modelo: {{model}}",
|
||||
"temperatureWithValue": "Temperatura: {{temperature}}",
|
||||
"workspaceScope": "Área de trabalho",
|
||||
"workspaceSecretsDescription": "Faça a gestão dos segredos disponíveis para os repositórios desta área de trabalho. Os perfis de agente e de executor partilhados só podem usar segredos Globais.",
|
||||
"revealSecretNamed": "Revelar o segredo {{name}}",
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
"connectionUnstable": "Ligação instável",
|
||||
"connectionUnstableDescription": "Ligação instável. A voltar a ligar ao Kandev.",
|
||||
"costs": "Custos",
|
||||
"disabledBadge": "Desativado",
|
||||
"enabledBadge": "Ativado",
|
||||
"expandGroup": "Expandir {{label}}",
|
||||
"expandSidebar": "Expandir a barra lateral",
|
||||
@@ -39,6 +40,7 @@
|
||||
"logOut": "Terminar sessão",
|
||||
"maxViews_one": "máx. {{count}}",
|
||||
"maxViews_other": "máx. {{count}}",
|
||||
"nestUnder": "Aninhar em {{title}}",
|
||||
"newKanbanWorkspace": "Nova área de trabalho kanban",
|
||||
"newOfficeWorkspace": "Nova área de trabalho de escritório",
|
||||
"newTask": "Nova tarefa",
|
||||
@@ -52,9 +54,14 @@
|
||||
"offline": "Sem ligação",
|
||||
"openStatus": "Abrir estado",
|
||||
"pausedBadge": "em pausa",
|
||||
"pollModeFastLabel": "focada, sondagem de 2 s",
|
||||
"pollModePausedLabel": "sem subscritores",
|
||||
"pollModeSlowLabel": "subscrita, sondagem de 30 s",
|
||||
"preferences": "Preferências",
|
||||
"profileAndPassword": "Perfil e palavra-passe",
|
||||
"projects": "Projetos",
|
||||
"queuedPromptCount_one": "{{count}} prompt em fila",
|
||||
"queuedPromptCount_other": "{{count}} prompts em fila",
|
||||
"quickChat": "Chat rápido",
|
||||
"quickTerminal": "Terminal rápido",
|
||||
"quickChatTerminals": "Terminais",
|
||||
|
||||
@@ -131,6 +131,9 @@
|
||||
"healthSystemChecks": "Verificações do sistema",
|
||||
"healthTitle": "Saúde",
|
||||
"healthWhatsMonitored": "O que é monitorizado",
|
||||
"host": "Anfitrião",
|
||||
"hostMetrics": "Métricas do anfitrião",
|
||||
"hostWithLabel": "Anfitrião: {{label}}",
|
||||
"inviteCopied": "Ligação de convite copiada",
|
||||
"inviteCopy": "Copiar a ligação de convite",
|
||||
"inviteCreate": "Criar ligação de convite",
|
||||
@@ -143,10 +146,14 @@
|
||||
"inviteReadyTitle": "Ligação de convite pronta",
|
||||
"inviteTitle": "Convidar um utilizador",
|
||||
"inviteUrlLabel": "Ligação de convite",
|
||||
"ioLoadHelp": "Número médio de tarefas em execução ou à espera de CPU durante o último minuto. Compare este valor com o número de núcleos de CPU do anfitrião.",
|
||||
"issuesNeedAttention_one": "{{count}} problema precisa da sua atenção",
|
||||
"issuesNeedAttention_other": "{{count}} problemas precisam da sua atenção",
|
||||
"jobStateDone": "Concluído",
|
||||
"jobStateFailed": "Falhou",
|
||||
"jobStateQueued": "Em fila",
|
||||
"jobStateRunning": "Em execução",
|
||||
"lastUpdateUnknown": "Última atualização desconhecida",
|
||||
"licensesCount": "{{visible}} de {{total}}",
|
||||
"licensesEmpty": "Nenhuma entrada corresponde ao filtro.",
|
||||
"licensesFilterPlaceholder": "Filtrar por nome, licença ou ecossistema...",
|
||||
@@ -167,6 +174,9 @@
|
||||
"messageQueueLoadFailed": "Não foi possível carregar as definições da fila de mensagens.",
|
||||
"messageQueueLoading": "A carregar as definições da fila de mensagens…",
|
||||
"messageQueueMaximumLabel": "Máximo de mensagens por sessão",
|
||||
"messageQueueMergeDescription": "Permite-lhe fundir uma mensagem em fila na mensagem imediatamente acima antes de o agente as recolher, combinando rajadas de seguimentos relacionados num único turno.",
|
||||
"messageQueueMergeNotice": "Só podem ser fundidas mensagens adjacentes do mesmo remetente: as suas próprias mensagens em fila fundem-se entre si, e as mensagens colocadas em fila pelo agente de outra tarefa só se fundem quando partilham a mesma tarefa de origem. As mensagens de fluxo de trabalho, de sistema e em trânsito nunca podem ser fundidas. A fusão também é rejeitada se as referências a entidades das duas mensagens, combinadas e sem duplicados, ultrapassarem 100, o limite partilhado por mensagem. Desativar esta opção oculta de imediato o controlo de fusão e não afeta as mensagens já fundidas.",
|
||||
"messageQueueMergeToggleLabel": "Ativar a fusão de mensagens em fila",
|
||||
"messageQueueRetry": "Tentar novamente",
|
||||
"messageQueueSaveFailed": "Não foi possível guardar as definições da fila de mensagens.",
|
||||
"messageQueueSourceDefault": "Pré-definição",
|
||||
@@ -176,6 +186,12 @@
|
||||
"messageQueueUnlimited": "Ilimitado",
|
||||
"messageQueueUnlimitedHelp": "Defina 0 para ilimitado. Um número inteiro positivo rejeita novas mensagens depois de esse número estar pendente numa sessão.",
|
||||
"messageQueueValidation": "Introduza um número inteiro igual ou superior a 0.",
|
||||
"metricCpuPercent": "CPU",
|
||||
"metricCpuTemp": "Temperatura da CPU",
|
||||
"metricDiskPercent": "Disco",
|
||||
"metricIoLoad": "Carga do sistema (1 min)",
|
||||
"metricMemoryPercent": "Memória",
|
||||
"metricsUnavailable": "Métricas indisponíveis",
|
||||
"navAbout": "Acerca",
|
||||
"navBackups": "Cópias de segurança",
|
||||
"navDatabase": "Base de dados",
|
||||
@@ -226,6 +242,7 @@
|
||||
"selfUpdateStartingUnknown": "A iniciar a atualização para a nova versão…",
|
||||
"selfUpdateTimedOut": "A atualização está a demorar mais do que o esperado. Atualize para ver a versão atual.",
|
||||
"settingsRouteNotPorted": "Esta rota de definições é tratada pela shell da SPA, mas a sua página de cliente dedicada ainda está a ser migrada: <1>{{pathname}}</1>",
|
||||
"setupIssues": "Problemas de configuração",
|
||||
"statusPageDescription": "Verificações de saúde, utilização do disco e resumo da versão.",
|
||||
"storageAcknowledgeDaemon": "Reconhecer o daemon",
|
||||
"storageAcknowledgeDedicatedFirst": "Reconheça primeiro um daemon do Docker dedicado.",
|
||||
@@ -395,11 +412,13 @@
|
||||
"storageWorkspacesDescription": "Recupere recursos que o Kandev consegue identificar com segurança como já não estando em uso.",
|
||||
"storageWorkspacesDetail": "{{reclaimable}} recuperáveis após o período de tolerância · {{active}} ativas",
|
||||
"storageWorkspacesTitle": "Áreas de trabalho e contentores",
|
||||
"systemMetrics": "Métricas do sistema",
|
||||
"uiStateHelp": "Limpa as preferências de esquema e de interface guardadas no seu navegador (tamanhos dos painéis, tarefas afixadas, grupos expandidos, etc.). Use isto se a aplicação parecer avariada, se os painéis estiverem bloqueados ou se o esquema parecer errado. As suas tarefas, sessões e dados do servidor não são afetados - apenas o estado da interface de cada navegador. A página é recarregada após a reposição.",
|
||||
"uiStateReset": "Repor",
|
||||
"uiStateResetLabel": "Repor o esquema do navegador",
|
||||
"uiStateTitle": "Estado da interface",
|
||||
"updateAvailable": "Atualização disponível",
|
||||
"updatedRelative": "Atualizado {{relative}}",
|
||||
"updatesApply": "Aplicar a atualização",
|
||||
"updatesApplyConfirmDesktop": "O Kandev instala a {{version}} e reinicia a aplicação de ambiente de trabalho.",
|
||||
"updatesApplyConfirmService": "O Kandev atualiza para a {{version}}, reinstala o serviço do utilizador e reinicia-o.",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -181,6 +181,12 @@
|
||||
"startStepHelp": "As novas tarefas começam neste passo. Só um passo por fluxo de trabalho pode ser o passo inicial.",
|
||||
"stepIsPartOfReplayCycle": "{{stepName}} faz parte de um ciclo de repetição",
|
||||
"stepNamePlaceholder": "Nome do passo",
|
||||
"workflowPrompt": "Prompt do fluxo de trabalho",
|
||||
"workflowPromptHelp": "Instruções opcionais incluídas na entrada de cada passo, antes do prompt do passo. Suporta referências {task_id} e @prompt-guardado (a mesma expansão dos prompts de passo). {{taskPrompt}} só existe nos passos. Deixe vazio para desativar. Visível para o agente e mostrado recolhido no chat.",
|
||||
"workflowPromptPlaceholder": "Se o PR estiver integrado ou fechado, mova a tarefa para Concluída.\nSe precisar de criar vários pull requests, prefira orquestrar subtarefas.",
|
||||
"workflowPromptCollapsedHint": "Opcional — expanda para adicionar instruções partilhadas de entrada nos passos",
|
||||
"workflowPromptSetHint": "Configurado — expanda para editar",
|
||||
"workflowInstructionsCollapsed": "Instruções do fluxo de trabalho",
|
||||
"stepPrompt": "Prompt do passo",
|
||||
"stepPromptHelp": "Instruções personalizadas para o agente neste passo. Use {{taskPrompt}} para incluir a descrição da tarefa.",
|
||||
"stepPromptPlaceholderExample": "Implementar a autenticação de utilizadores com OAuth2",
|
||||
@@ -225,6 +231,7 @@
|
||||
"wipLimit": "Limite de WIP",
|
||||
"wipLimitHelp": "Máximo de tarefas admitidas (ativas) neste passo. O excedente permanece visível numa fila. Use 0 para ilimitado.",
|
||||
"wipLimitsNote": "O WIP limita o trabalho ativo, não a visibilidade. O excedente permanece no quadro até haver capacidade; se um alimentador selecionado também estiver cheio, a criação de novas tarefas é rejeitada.",
|
||||
"workflow": "Fluxo de trabalho",
|
||||
"workflowCycleBlocked": "Ciclo do fluxo de trabalho bloqueado",
|
||||
"workflowCycleBlockedDescription": "Altere os passos do fluxo de trabalho para remover o ciclo automático antes de continuar.",
|
||||
"workflowCycleBlockingBody": "Este percurso volta a entrar em \"{{stepName}}\" e pode iniciar o agente novamente sem outra ação do utilizador.",
|
||||
|
||||
Reference in New Issue
Block a user