mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-24 23:32:19 +10:00
feat(agent): adopt AI SDK v7 — crash safety, context pruning, HITL approvals (#3362)
* docs(adr): propose agent AI SDK v7 adoption plan * fix(ai): bind analyzeResume through aiService in service test The test destructured analyzeResume as a named export that does not exist; main was red. * test(agent): keep pure ai helpers real via spread-actual mock factory * feat(agent): add run guards, patch version guard, run wall-clock timeout * feat(agent): validate UI messages at the send boundary * feat(agent): crash-safe draft-row persistence and server-side cancellation * feat(agent): reap stale run claims at boot, on send, and on thread open * feat(agent): fresh-document patch output and tiered context pruning * feat(ai): shared agent tool contracts and message metadata schema * feat(agent): add per-thread review-patches setting with update endpoint * feat(agent): gate resume patches behind hmac-signed tool approval * feat(agent): merge question answers and approval decisions before run claim * feat(agent): approval ui with composed auto-send and fixture-driven tests * feat(agent): usage metadata, tool activity cards, smoother streaming * feat(agent): tool-call repair, input examples, structured step logging * chore(i18n): translate new agent workspace strings across all locales * fix(agent): gate stale-run draft cancellation on winning the claim clear Snapshot streaming drafts before the conditional clear and skip the flip entirely when another reaper or a replacement run already cleared the claim. Also address review nits in eleven locale catalogs. * fix(agent): flip reaped drafts only when their snapshotted state is unchanged * fix(agent): address review findings across run lifecycle, context budget, and approval flow - bind patches to the revision the model read via signed baseUpdatedAt - claim the run before consuming a continuation; recorded-but-unexecuted approvals retry as pending continuations - keep run ownership on stop() until cancellation persists; preserve the claim for the reaper when final persistence fails - estimate tokens without serializing binary attachments (tokenx) and enforce the budget by dropping oldest whole turns - mark crash-recovered patch results as snapshot boundaries; strip /data prefixes at execution time - retry failed continuations without regenerate; mount a single AgentChat; disable response controls on read-only threads; freeze review toggle during runs (client+server) - accumulate usage across continuations and match the SDK's nested usage shape; label-form token strings; reorderable source label; accessible note field; state-neutral web-search label * chore(i18n): translate revised agent strings across all locales * fix(agent): harden baseUpdatedAt validation and address review follow-ups - bundle tokenx in the server runtime dependencies (e2e boot failure) - strict ISO schema for baseUpdatedAt plus loud executor rejection of unparseable values - it-IT source label consistency (Fonte) - prove penultimate-turn retention in the context pruning test * chore(deps): exempt tokenx from knip for the externalized server bundle
This commit is contained in:
@@ -79,6 +79,7 @@
|
|||||||
"react-pdf-html": "^2.1.5",
|
"react-pdf-html": "^2.1.5",
|
||||||
"resumable-stream": "^2.2.12",
|
"resumable-stream": "^2.2.12",
|
||||||
"sharp": "^0.35.3",
|
"sharp": "^0.35.3",
|
||||||
|
"tokenx": "^2.1.0",
|
||||||
"ts-pattern": "^5.9.0",
|
"ts-pattern": "^5.9.0",
|
||||||
"unique-names-generator": "^4.7.1",
|
"unique-names-generator": "^4.7.1",
|
||||||
"uuid": "^14.0.1",
|
"uuid": "^14.0.1",
|
||||||
|
|||||||
@@ -61,7 +61,18 @@ async function validateLocalStoragePath() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function reapStaleAgentRuns() {
|
||||||
|
try {
|
||||||
|
const { reapStaleAgentRunsAtBoot } = await import("@reactive-resume/api/features/agent/runs");
|
||||||
|
await reapStaleAgentRunsAtBoot();
|
||||||
|
} catch (error) {
|
||||||
|
// A reap failure must not block serving traffic; stuck runs also heal lazily on access.
|
||||||
|
console.error("Failed to reap stale agent runs at boot", { error });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function runStartupChecks() {
|
export async function runStartupChecks() {
|
||||||
await runDatabaseMigrations();
|
await runDatabaseMigrations();
|
||||||
await validateLocalStoragePath();
|
await validateLocalStoragePath();
|
||||||
|
await reapStaleAgentRuns();
|
||||||
}
|
}
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Aansoek gedoen"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Toegepas op"
|
msgstr "Toegepas op"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Keur goed"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Goedgekeur — wag vir die agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabies"
|
msgstr "Arabies"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Besig om jou API-sleutel uit te vee..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Besig om jou CV uit te vee..."
|
msgstr "Besig om jou CV uit te vee..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Geweier — wag vir die agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Weier"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Beskryf wat jy gedoen het sodat die inskrywing sleutelwoorde vir passing bydra."
|
msgstr "Beskryf wat jy gedoen het sodat die inskrywing sleutelwoorde vir passing bydra."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Skenk"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Skenk aan Reactive Resume"
|
msgstr "Skenk aan Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Klaar"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Bewerk inhoud in volskermmodus"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Wysig datum"
|
msgstr "Wysig datum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Wysiging afgekeur"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Voer jou CV onmiddellik na PDF uit, sonder enige wagtyd of vertragings."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Uitgevoerde pyplyn-vloei.png"
|
msgstr "Uitgevoerde pyplyn-vloei.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Misluk"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Het misluk om die CV te ontleed."
|
msgstr "Het misluk om die CV te ontleed."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Misluk om die verskaffer los te koppel. Probeer asseblief weer."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Kon nie verskaffer opdateer nie."
|
msgstr "Kon nie verskaffer opdateer nie."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Kon nie draadinstellings opdateer nie."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "maak in nuwe oortjie oop"
|
msgstr "maak in nuwe oortjie oop"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Opsionele nota vir die agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Opsionele nota vir die agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Jy kan opsioneel 'n wagwoord stel sodat slegs mense met die wagwoord jou CV via die skakel kan bekyk."
|
msgstr "Jy kan opsioneel 'n wagwoord stel sodat slegs mense met die wagwoord jou CV via die skakel kan bekyk."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikasies"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Uitgewer"
|
msgstr "Uitgewer"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Rou JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Hertelling"
|
msgstr "Hertelling"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiewe CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktiewe CV v4 (JSON)"
|
msgstr "Reaktiewe CV v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Het 'n aanhegsel gelees"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lees die gids oor die toepassing van persoonlike style."
|
msgstr "Lees die gids oor die toepassing van persoonlike style."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Het die CV gelees"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Lees die werksplasing…"
|
msgstr "Lees die werksplasing…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Herstel"
|
msgstr "Herstel"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Herstel die CV na voor hierdie opdatering? Dit sal hierdie opdatering en enige opdaterings wat daarna toegepas is, terugrol."
|
msgstr "Herstel die CV na die toestand voor hierdie pleister?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV-analise voltooi."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV-inhoud"
|
msgstr "CV-inhoud"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV-wysiging"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV-lêer"
|
msgstr "CV-lêer"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV's"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Probeer weer"
|
msgstr "Probeer weer"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Hersien wysigings"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Hersien die CV teenoor 'n posbeskrywing en vra my vrae voordat jy onsekere afdelings verander."
|
msgstr "Hersien die CV teenoor 'n posbeskrywing en vra my vrae voordat jy onsekere afdelings verander."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Hersien hierdie wysiging"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Hersien die opsomming sodat dit op 'n senior ingenieursbestuurderrol gemik is sonder om generies te klink."
|
msgstr "Hersien die opsomming sodat dit op 'n senior ingenieursbestuurderrol gemik is sonder om generies te klink."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotasie"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Voer jou eerste ontleding uit om 'n puntkaart, sterkpunte en geprioritiseerde voorstelle te kry."
|
msgstr "Voer jou eerste ontleding uit om 'n puntkaart, sterkpunte en geprioritiseerde voorstelle te kry."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Besig…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russies"
|
msgstr "Russies"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Bron"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Bronkode"
|
msgstr "Bronkode"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Bron: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Bronne"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Spasiëring (horisontaal)"
|
msgstr "Spasiëring (horisontaal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Hierdie assistent kon nie oopgemaak word nie."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Hierdie datum sal nie korrek gelees word nie."
|
msgstr "Hierdie datum sal nie korrek gelees word nie."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Hierdie wysigingsversoek kan nie meer beantwoord word nie."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Hierdie e-posadres sal nie herken word nie."
|
msgstr "Hierdie e-posadres sal nie herken word nie."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Dit sal jou help om dit later te identifiseer, as jy beplan om verskeie
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Dit sal alle items uit hierdie afdeling verwyder."
|
msgstr "Dit sal alle items uit hierdie afdeling verwyder."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Dit sal hierdie pleister en enige pleisters wat daarna toegepas is, terugrol."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Skakel regterkantpaneel aan"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Wissel drade"
|
msgstr "Wissel drade"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} gekas)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Volg 'n werk waarvoor jy aansoek doen en skakel die CV wat jy gestuur het."
|
msgstr "Volg 'n werk waarvoor jy aansoek doen en skakel die CV wat jy gestuur het."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Ons kon nie die formaat outomaties opspoor nie — kies dit asseblief hi
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Ons kon nie daardie bladsy vind nie"
|
msgstr "Ons kon nie daardie bladsy vind nie"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Websoektog"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zoem uit"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zoeloe"
|
msgstr "Zoeloe"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "ተመልክቷል"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "የተተገበረው በ"
|
msgstr "የተተገበረው በ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "አጽድቅ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "ጸድቋል — ወኪሉን በመጠበቅ ላይ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "ዓረብኛ"
|
msgstr "ዓረብኛ"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API ቁልፎትን በመሰረዝ ላይ…"
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "የየታሪክዎን በመሰረዝ ላይ…"
|
msgstr "የየታሪክዎን በመሰረዝ ላይ…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "ተከልክሏል — ወኪሉን በመጠበቅ ላይ…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "ከልክል"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "ግቤቱ ለማዛመድ ቁልፍ ቃላትን እንዲያበረክት ያደረጉትን ይግለጹ።"
|
msgstr "ግቤቱ ለማዛመድ ቁልፍ ቃላትን እንዲያበረክት ያደረጉትን ይግለጹ።"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "ይለግሱ"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "ለ Reactive Resume መዋጮ አድርግ"
|
msgstr "ለ Reactive Resume መዋጮ አድርግ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "ተጠናቅቋል"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ይዘትን በሙሉ ማያ ገጽ ሁነታ አርትዕ"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "ቀን አርትዕ"
|
msgstr "ቀን አርትዕ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "አርትዖቱ ውድቅ ተደርጓል"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ያለምንም መዘግየት ወይም መጠበቅ፣ የስራ ል
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "ወደ ውጭ የተላከ የ pipeline-flow.png"
|
msgstr "ወደ ውጭ የተላከ የ pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "አልተሳካም"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "የሥራ ማመልከቻ ሰነድን መተንተን አልተሳካም።"
|
msgstr "የሥራ ማመልከቻ ሰነድን መተንተን አልተሳካም።"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "ከአቅራቢው ጋር ያለውን ግንኙነት ማቋረጥ አ
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "አቅራቢውን ማዘመን አልተሳካም።"
|
msgstr "አቅራቢውን ማዘመን አልተሳካም።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "የክሩን ቅንብሮች ማዘመን አልተሳካም።"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "በአዲስ ታብ ይከፈታል"
|
msgstr "በአዲስ ታብ ይከፈታል"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ለወኪሉ አማራጭ ማስታወሻ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ለወኪሉ አማራጭ ማስታወሻ…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "በፈቃድ የይለፍ ቃል በመቀበል ብቻ እንዲመለከቱት ለምታስችላቸው ሰዎች የይለፍ ቃል ያቀናብሩ።"
|
msgstr "በፈቃድ የይለፍ ቃል በመቀበል ብቻ እንዲመለከቱት ለምታስችላቸው ሰዎች የይለፍ ቃል ያቀናብሩ።"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "ህትመቶች"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "አታሚ"
|
msgstr "አታሚ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "ጥሬ JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "እንደገና ውጤት አስመዝግቧል"
|
msgstr "እንደገና ውጤት አስመዝግቧል"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "ምላሽ ሰጪ የስራ ልምድ v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "አባሪ አንብቧል"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "የአጠቃቀም ብጁ ቅጦች መመሪያን ያንብቡ።"
|
msgstr "የአጠቃቀም ብጁ ቅጦች መመሪያን ያንብቡ።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "የስራ ልምድ ማስረጃውን አንብቧል"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "ማስታወቂያውን በማንበብ ላይ…"
|
msgstr "ማስታወቂያውን በማንበብ ላይ…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "ወደነበረበት መልስ"
|
msgstr "ወደነበረበት መልስ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ከዚህ ፓች በፊት የነበረውን የስራ ልምድ (ሲቪ) ወደነበረበት ይመልሱ? ይህ ይህንን ፓች እና ከእሱ በኋላ የተተገበሩትን ፓችዎች ይመልሳል።"
|
msgstr "የስራ ልምድ ማስረጃው ከዚህ ፓች በፊት ወደነበረበት ይመለስ?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "የሥራ ማመልከቻ ሰነድ ትንተና ተጠናቋል።"
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "የሪቪው ይዘት"
|
msgstr "የሪቪው ይዘት"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "የስራ ልምድ ማስረጃ አርትዖት"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "የሪዙሜ ፋይል"
|
msgstr "የሪዙሜ ፋይል"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "የየታሪክ ማቅረቢያዎች"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "እንደገና ሞክር"
|
msgstr "እንደገና ሞክር"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "አርትዖቶችን ገምግም"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "የሥራ መግለጫውን ከስራ መግለጫ ጋር በማነፃፀር ይገምግሙ እና እርግጠኛ ያልሆኑ ክፍሎችን ከመቀየርዎ በፊት ጥያቄዎችን ይጠይቁኝ።"
|
msgstr "የሥራ መግለጫውን ከስራ መግለጫ ጋር በማነፃፀር ይገምግሙ እና እርግጠኛ ያልሆኑ ክፍሎችን ከመቀየርዎ በፊት ጥያቄዎችን ይጠይቁኝ።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ይህን አርትዖት ገምግም"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "አጠቃላይ የሚመስል ሳይመስል የከፍተኛ የምህንድስና ሥራ አስኪያጅ ሚናን ኢላማ ለማድረግ ማጠቃለያውን እንደገና ያስተካክሉ።"
|
msgstr "አጠቃላይ የሚመስል ሳይመስል የከፍተኛ የምህንድስና ሥራ አስኪያጅ ሚናን ኢላማ ለማድረግ ማጠቃለያውን እንደገና ያስተካክሉ።"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "ማሽከርከር"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "የውጤት ካርድ፣ ጥንካሬዎች እና ቅድሚያ የተሰጣቸው አስተያየቶችን ለማግኘት የመጀመሪያ ትንተናዎን ያከናውኑ።"
|
msgstr "የውጤት ካርድ፣ ጥንካሬዎች እና ቅድሚያ የተሰጣቸው አስተያየቶችን ለማግኘት የመጀመሪያ ትንተናዎን ያከናውኑ።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "በሂደት ላይ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ሩስኛ"
|
msgstr "ሩስኛ"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ምንጭ"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "የምንጭ ኮድ"
|
msgstr "የምንጭ ኮድ"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ምንጭ: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ምንጮች"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "ክፍተት (አግድም)"
|
msgstr "ክፍተት (አግድም)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ይህ ረዳት ሊከፈት አልቻለም።"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ይህ ቀን በትክክል አይነበብም።"
|
msgstr "ይህ ቀን በትክክል አይነበብም።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "ይህ የአርትዖት ጥያቄ ከእንግዲህ ምላሽ ሊሰጠው አይችልም።"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ይህ ኢሜይል አድራሻ አይታወቅም።"
|
msgstr "ይህ ኢሜይል አድራሻ አይታወቅም።"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "ብዙ ፓስኪዎች እንዲኖሩዎት ካሰቡ፣ ይህ በኋ
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "ይህ ከዚህ ክፍል ውስጥ ያሉ ሁሉንም ንጥሎች ያስወግዳል።"
|
msgstr "ይህ ከዚህ ክፍል ውስጥ ያሉ ሁሉንም ንጥሎች ያስወግዳል።"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "ይህ ይህን ፓች እና ከእሱ በኋላ የተተገበሩ ማናቸውንም ፓቾች ወደ ኋላ ይመልሳል።"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "የቀኝ የጎን አሞሌን ቀያይር"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "ክሮችን ቀያይር"
|
msgstr "ክሮችን ቀያይር"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "ቶከኖች: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "ቶከኖች: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "ቶከኖች: {total} ({cached} የተሸጎጠ)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "የሚያመለክቱበትን ሥራ ይከታተሉ እና የላኩትን የሥራ ልምድ (ሲቪ) ያገናኙ።"
|
msgstr "የሚያመለክቱበትን ሥራ ይከታተሉ እና የላኩትን የሥራ ልምድ (ሲቪ) ያገናኙ።"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "ቅርጸቱን በራስ-ሰር ማግኘት አልቻልንም፤ እ
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "ያንን ገጽ ማግኘት አልቻልንም"
|
msgstr "ያንን ገጽ ማግኘት አልቻልንም"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "የድር ፍለጋ"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "አጉር"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ዙሉ"
|
msgstr "ዙሉ"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "تم التقديم"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "تم التقديم في"
|
msgstr "تم التقديم في"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "موافقة"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "تمت الموافقة — في انتظار الوكيل…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "العربية"
|
msgstr "العربية"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "جاري حذف مفتاح واجهة برمجة التطبيقات (API
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "جاري حذف سيرتك الذاتية..."
|
msgstr "جاري حذف سيرتك الذاتية..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "تم الرفض — في انتظار الوكيل…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "رفض"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "قم بوصف ما قمت به حتى يساهم الإدخال بكلمات رئيسية للمطابقة."
|
msgstr "قم بوصف ما قمت به حتى يساهم الإدخال بكلمات رئيسية للمطابقة."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "يتبرع"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "تبرع لـReactive Resume"
|
msgstr "تبرع لـReactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "تم"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "تحرير المحتوى في وضع ملء الشاشة"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "تعديل التاريخ"
|
msgstr "تعديل التاريخ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "تم رفض التعديل"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "قم بتصدير سيرتك الذاتية إلى ملف PDF على ا
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "تم تصدير ملف pipeline-flow.png"
|
msgstr "تم تصدير ملف pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "فشل"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "فشل في تحليل السيرة الذاتية."
|
msgstr "فشل في تحليل السيرة الذاتية."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "فشل إلغاء ربط الموفر. يرجى المحاولة مرة
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "فشل تحديث الموفر."
|
msgstr "فشل تحديث الموفر."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "فشل تحديث إعدادات الموضوع."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "الموجه المفتوح (OpenRouter)"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "يفتح في علامة تبويب جديدة"
|
msgstr "يفتح في علامة تبويب جديدة"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ملاحظة اختيارية للوكيل"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ملاحظة اختيارية للوكيل…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "اختياريًا، يمكنك تعيين كلمة مرور حتى يتمكن فقط الأشخاص الذين لديهم كلمة المرور من عرض سيرتك الذاتية عبر الرابط."
|
msgstr "اختياريًا، يمكنك تعيين كلمة مرور حتى يتمكن فقط الأشخاص الذين لديهم كلمة المرور من عرض سيرتك الذاتية عبر الرابط."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "المنشورات"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "الناشر"
|
msgstr "الناشر"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON خام"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "إعادة التقييم"
|
msgstr "إعادة التقييم"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "السيرة الذاتية التفاعلية v<0>{__APP_VERSION__}</0>
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "استئناف تفاعلي الإصدار 4 (JSON)"
|
msgstr "استئناف تفاعلي الإصدار 4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "قرأ مرفقًا"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "اقرأ دليل تطبيق الأنماط المخصصة."
|
msgstr "اقرأ دليل تطبيق الأنماط المخصصة."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "قرأ السيرة الذاتية"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "جارٍ قراءة الإعلان…"
|
msgstr "جارٍ قراءة الإعلان…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "يعيد"
|
msgstr "يعيد"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "هل تريد استعادة النظام إلى ما قبل هذا التحديث؟ سيؤدي هذا إلى التراجع عن هذا التحديث وأي تحديثات أخرى تم تطبيقها بعده."
|
msgstr "استعادة السيرة الذاتية إلى ما قبل هذه الرقعة؟"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "اكتمل تحليل السيرة الذاتية."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "محتوى السيرة الذاتية"
|
msgstr "محتوى السيرة الذاتية"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "تعديل السيرة الذاتية"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ملف السيرة الذاتية"
|
msgstr "ملف السيرة الذاتية"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "السير الذاتية"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "إعادة المحاولة"
|
msgstr "إعادة المحاولة"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "مراجعة التعديلات"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "راجع السيرة الذاتية مع وصف الوظيفة واطرح عليّ أسئلة قبل تغيير الأقسام غير الواضحة."
|
msgstr "راجع السيرة الذاتية مع وصف الوظيفة واطرح عليّ أسئلة قبل تغيير الأقسام غير الواضحة."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "مراجعة هذا التعديل"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "أعد صياغة الملخص بحيث يستهدف منصب مدير هندسي رفيع المستوى دون أن يبدو عاماً."
|
msgstr "أعد صياغة الملخص بحيث يستهدف منصب مدير هندسي رفيع المستوى دون أن يبدو عاماً."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "الدوران"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "قم بإجراء تحليلك الأول للحصول على بطاقة الأداء ونقاط القوة والاقتراحات ذات الأولوية."
|
msgstr "قم بإجراء تحليلك الأول للحصول على بطاقة الأداء ونقاط القوة والاقتراحات ذات الأولوية."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "قيد التشغيل…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "الروسية"
|
msgstr "الروسية"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "مصدر"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "شفرة المصدر"
|
msgstr "شفرة المصدر"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "المصدر: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "المصادر"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "تباعد (أفقي)"
|
msgstr "تباعد (أفقي)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "تعذر فتح هذا المساعد."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "لن يتم قراءة هذا التاريخ بشكل صحيح."
|
msgstr "لن يتم قراءة هذا التاريخ بشكل صحيح."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "لم يعد من الممكن الرد على طلب التعديل هذا."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "لن يتم التعرف على عنوان البريد الإلكتروني هذا."
|
msgstr "لن يتم التعرف على عنوان البريد الإلكتروني هذا."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "سيساعدك هذا في تحديدها لاحقاً، إذا كنت
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "سيؤدي ذلك إلى إزالة جميع العناصر من هذا القسم."
|
msgstr "سيؤدي ذلك إلى إزالة جميع العناصر من هذا القسم."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "سيؤدي هذا إلى التراجع عن هذه الرقعة وأي رقع طُبّقت بعدها."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "تبديل الشريط الجانبي الأيمن"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "تبديل الخيوط"
|
msgstr "تبديل الخيوط"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "الرموز: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "الرموز: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "الرموز: {total} ({cached} مخزّنة مؤقتًا)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "تتبع الوظيفة التي تتقدم لها وقم بربط السيرة الذاتية التي أرسلتها."
|
msgstr "تتبع الوظيفة التي تتقدم لها وقم بربط السيرة الذاتية التي أرسلتها."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "لم نتمكن من اكتشاف التنسيق تلقائيًا - ير
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "لم نتمكن من العثور على تلك الصفحة"
|
msgstr "لم نتمكن من العثور على تلك الصفحة"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "بحث الويب"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "تصغير"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "الزولو"
|
msgstr "الزولو"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Müraciət edildi"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Tətbiq edildiyi tarix"
|
msgstr "Tətbiq edildiyi tarix"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Təsdiqlə"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Təsdiqləndi — agent gözlənilir…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Ərəb"
|
msgstr "Ərəb"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API açarınız silinir..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Özgeçmişiniz silinir..."
|
msgstr "Özgeçmişiniz silinir..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Rədd edildi — agent gözlənilir…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Rədd et"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Nə etdiyinizi təsvir edin ki, giriş uyğunluq üçün açar sözlərə kömək etsin."
|
msgstr "Nə etdiyinizi təsvir edin ki, giriş uyğunluq üçün açar sözlərə kömək etsin."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Bağışlayın"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume‑yə ianə et"
|
msgstr "Reactive Resume‑yə ianə et"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Tamamlandı"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Məzmununu tam ekran rejimində redaktə edin"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Tarixi redaktə et"
|
msgstr "Tarixi redaktə et"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Redaktə rədd edildi"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "CV-nizi heç bir gözləmə və ya gecikmə olmadan dərhal PDF formatı
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "İxrac edilmiş boru kəməri axını.png"
|
msgstr "İxrac edilmiş boru kəməri axını.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Uğursuz oldu"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Rezüməni təhlil etmək mümkün olmadı."
|
msgstr "Rezüməni təhlil etmək mümkün olmadı."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Təchizatçını ayırmaq mümkün olmadı. Zəhmət olmasa yenidən cə
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Provayderi yeniləmək alınmadı."
|
msgstr "Provayderi yeniləmək alınmadı."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Mövzu parametrlərini yeniləmək mümkün olmadı."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "AçıqRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "yeni vərəqdə açılır"
|
msgstr "yeni vərəqdə açılır"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Agent üçün istəyə bağlı qeyd"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Agent üçün istəyə bağlı qeyd…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "İstəyə görə parol təyin edin ki, link vasitəsilə yalnız parolu bilənlər özgeçmişinizə baxa bilsin."
|
msgstr "İstəyə görə parol təyin edin ki, link vasitəsilə yalnız parolu bilənlər özgeçmişinizə baxa bilsin."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Nəşrlər"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Nəşriyyatçı"
|
msgstr "Nəşriyyatçı"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Xam JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Yenidən hesablayın"
|
msgstr "Yenidən hesablayın"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiv CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktiv Rezume v4 (JSON)"
|
msgstr "Reaktiv Rezume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Əlavəni oxudu"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Xüsusi Stillərin Tətbiqi təlimatını oxuyun."
|
msgstr "Xüsusi Stillərin Tətbiqi təlimatını oxuyun."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "CV-ni oxudu"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Elan oxunur…"
|
msgstr "Elan oxunur…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Bərpa et"
|
msgstr "Bərpa et"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "CV-ni bu yamadan əvvəlki vəziyyətinə bərpa etsinlər? Bu, bu yamanı və ondan sonra tətbiq olunan bütün yamaları geri qaytaracaq."
|
msgstr "CV bu yamaqdan əvvəlki vəziyyətinə qaytarılsın?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Təcrübə təhlili tamamlandı."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV məzmunu"
|
msgstr "CV məzmunu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV redaktəsi"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV faylı"
|
msgstr "CV faylı"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Özgeçmişlər"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Təkrar cəhd edin"
|
msgstr "Təkrar cəhd edin"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Redaktələri nəzərdən keçir"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "CV-ni iş təsviri ilə müqayisə edin və qeyri-müəyyən bölmələri dəyişdirməzdən əvvəl mənə suallar verin."
|
msgstr "CV-ni iş təsviri ilə müqayisə edin və qeyri-müəyyən bölmələri dəyişdirməzdən əvvəl mənə suallar verin."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Bu redaktəni nəzərdən keçir"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Xülasəni ümumi səslənmədən baş mühəndislik meneceri vəzifəsini hədəf alacaq şəkildə yenidən işləyin."
|
msgstr "Xülasəni ümumi səslənmədən baş mühəndislik meneceri vəzifəsini hədəf alacaq şəkildə yenidən işləyin."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Döndürmə"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "İlk təhlilinizi işə salın, skor kartı, güclü tərəflər və prioritetləşdirilmiş təkliflər əldə edin."
|
msgstr "İlk təhlilinizi işə salın, skor kartı, güclü tərəflər və prioritetləşdirilmiş təkliflər əldə edin."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "İcra olunur…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rus"
|
msgstr "Rus"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Mənbə"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Mənbə Kodu"
|
msgstr "Mənbə Kodu"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Mənbə: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Mənbələr"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Aralıq (Üfüqi)"
|
msgstr "Aralıq (Üfüqi)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Bu köməkçi açıla bilmədi."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Bu tarix düzgün oxunmayacaq."
|
msgstr "Bu tarix düzgün oxunmayacaq."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Bu redaktə sorğusuna artıq cavab vermək mümkün deyil."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Bu e-poçt ünvanı tanınmayacaq."
|
msgstr "Bu e-poçt ünvanı tanınmayacaq."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Əgər bir neçə keçid açarı planlaşdırırsınızsa, bu, sonradan
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Bu, bu bölmədən bütün elementləri siləcək."
|
msgstr "Bu, bu bölmədən bütün elementləri siləcək."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Bu, həmin yamağı və ondan sonra tətbiq edilən bütün yamaqları geri qaytaracaq."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Sağ yan menyunu aç/bağla"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Mövzuları aç/bağla"
|
msgstr "Mövzuları aç/bağla"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokenlər: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokenlər: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokenlər: {total} ({cached} keşlənmiş)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Müraciət etdiyiniz işi izləyin və göndərdiyiniz CV-ni əlaqələndirin."
|
msgstr "Müraciət etdiyiniz işi izləyin və göndərdiyiniz CV-ni əlaqələndirin."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Formatı avtomatik olaraq aşkarlaya bilmədik — zəhmət olmasa, yuxa
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Həmin səhifəni tapa bilmədik"
|
msgstr "Həmin səhifəni tapa bilmədik"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Veb axtarışı"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Uzaqlaşdır"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Кандидатствано"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Приложено на"
|
msgstr "Приложено на"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Одобряване"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Одобрено — изчакване на агента…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Арабски"
|
msgstr "Арабски"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Изтриване на вашия API ключ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Вашата автобиография се изтрива..."
|
msgstr "Вашата автобиография се изтрива..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Отхвърлено — изчакване на агента…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Отхвърляне"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Опишете какво сте направили, така че записът да допринесе с ключови думи за съвпадение."
|
msgstr "Опишете какво сте направили, така че записът да допринесе с ключови думи за съвпадение."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Дарете"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Дарете на Reactive Resume"
|
msgstr "Дарете на Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Готово"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Редактиране на съдържание в режим на ця
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Редактиране на дата"
|
msgstr "Редактиране на дата"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Редакцията е отхвърлена"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Експортирайте автобиографията си в PDF ф
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Експортиран pipeline-flow.png"
|
msgstr "Експортиран pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Неуспешно"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Не успя да анализира резюме."
|
msgstr "Не успя да анализира резюме."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Неуспех при развързването на доставчик
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Актуализирането на доставчика не бе успешно."
|
msgstr "Актуализирането на доставчика не бе успешно."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Неуспешно актуализиране на настройките на нишката."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "отваря се в нов раздел"
|
msgstr "отваря се в нов раздел"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Незадължителна бележка за агента"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Незадължителна бележка за агента…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "По желание задайте парола, така че само хората с нея да могат да виждат автобиографията ви чрез връзката."
|
msgstr "По желание задайте парола, така че само хората с нея да могат да виждат автобиографията ви чрез връзката."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Публикации"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Издател"
|
msgstr "Издател"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Суров JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Преоценка"
|
msgstr "Преоценка"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Реактивно резюме v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Прочете прикачен файл"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Прочетете ръководството за прилагане на персонализирани стилове."
|
msgstr "Прочетете ръководството за прилагане на персонализирани стилове."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Прочете автобиографията"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Обявата се чете…"
|
msgstr "Обявата се чете…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Възстановяване"
|
msgstr "Възстановяване"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Да се възстанови ли автобиографията до състоянието преди този пач? Това ще отмени този пач и всички пачове, приложени след него."
|
msgstr "Възстановяване на автобиографията до състоянието преди този пач?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Анализът на автобиографията е завършен
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Съдържание на автобиографията"
|
msgstr "Съдържание на автобиографията"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Редакция на автобиографията"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Файл с автобиография"
|
msgstr "Файл с автобиография"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Автобиографии"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Опитай отново"
|
msgstr "Опитай отново"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Преглед на редакциите"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Прегледайте автобиографията си спрямо описанието на длъжността и ми задайте въпроси, преди да променяте неясните части."
|
msgstr "Прегледайте автобиографията си спрямо описанието на длъжността и ми задайте въпроси, преди да променяте неясните части."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Преглед на тази редакция"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Преработете резюмето, така че да е насочено към позицията на старши инженерен мениджър, без да звучи обобщено."
|
msgstr "Преработете резюмето, така че да е насочено към позицията на старши инженерен мениджър, без да звучи обобщено."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Завъртане"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Извършете първия си анализ, за да получите карта с резултати, силни страни и предложения по приоритети."
|
msgstr "Извършете първия си анализ, за да получите карта с резултати, силни страни и предложения по приоритети."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Изпълнява се…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Руски"
|
msgstr "Руски"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Източник"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Изходен код"
|
msgstr "Изходен код"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Източник: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Източници"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Разстояние (хоризонтално)"
|
msgstr "Разстояние (хоризонтално)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Този асистент не можа да бъде отворен."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Тази дата няма да бъде разчетена правилно."
|
msgstr "Тази дата няма да бъде разчетена правилно."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "На тази заявка за редакция вече не може да се отговори."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Този имейл адрес няма да бъде разпознат."
|
msgstr "Този имейл адрес няма да бъде разпознат."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Това ще ви помогне да го идентифицирате
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Това ще премахне всички елементи от този раздел."
|
msgstr "Това ще премахне всички елементи от този раздел."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Това ще върне този пач и всички пачове, приложени след него."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Превключване на дясната странична лент
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Превключване на нишки"
|
msgstr "Превключване на нишки"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Токени: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Токени: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Токени: {total} ({cached} кеширани)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Проследете работата, за която кандидатствате, и добавете линк към автобиографията, която сте изпратили."
|
msgstr "Проследете работата, за която кандидатствате, и добавете линк към автобиографията, която сте изпратили."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Не успяхме да разпознаем формата автом
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Не успяхме да намерим тази страница"
|
msgstr "Не успяхме да намерим тази страница"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Уеб търсене"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Намаляване"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Зулуски"
|
msgstr "Зулуски"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "আবেদন করা হয়েছে"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "প্রয়োগ করা হয়েছে"
|
msgstr "প্রয়োগ করা হয়েছে"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "অনুমোদন করুন"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "অনুমোদিত — এজেন্টের জন্য অপেক্ষা করা হচ্ছে…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "আরবি"
|
msgstr "আরবি"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "আপনার API কী মুছে ফেলা হচ্ছে..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "আপনার জীবনবৃত্তান্ত মুছে ফেলা হচ্ছে..."
|
msgstr "আপনার জীবনবৃত্তান্ত মুছে ফেলা হচ্ছে..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "প্রত্যাখ্যাত — এজেন্টের জন্য অপেক্ষা করা হচ্ছে…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "প্রত্যাখ্যান করুন"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "আপনি কি করেছেন তা বর্ণনা করুন যাতে এন্ট্রিটি মিলের জন্য কীওয়ার্ডে অবদান রাখে।"
|
msgstr "আপনি কি করেছেন তা বর্ণনা করুন যাতে এন্ট্রিটি মিলের জন্য কীওয়ার্ডে অবদান রাখে।"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "দান করুন"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume-এ অনুদান দিন"
|
msgstr "Reactive Resume-এ অনুদান দিন"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "সম্পন্ন"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ফুলস্ক্রিন মোডে বিষয়বস্ত
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "তারিখ সম্পাদনা করুন"
|
msgstr "তারিখ সম্পাদনা করুন"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "সম্পাদনা প্রত্যাখ্যান করা হয়েছে"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "কোনো অপেক্ষা বা বিলম্ব ছাড
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "রপ্তানিকৃত পাইপলাইন-প্রবাহ.png"
|
msgstr "রপ্তানিকৃত পাইপলাইন-প্রবাহ.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ব্যর্থ হয়েছে"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "রিজিউম বিশ্লেষণ করতে ব্যর্থ।"
|
msgstr "রিজিউম বিশ্লেষণ করতে ব্যর্থ।"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "প্রোভাইডার আনলিঙ্ক করতে ব্
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "প্রোভাইডার আপডেট করতে ব্যর্থ হয়েছে।"
|
msgstr "প্রোভাইডার আপডেট করতে ব্যর্থ হয়েছে।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "থ্রেড সেটিংস আপডেট করা সম্ভব হয়নি।"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ওপেনরাউটার"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "নতুন ট্যাবে খুলবে"
|
msgstr "নতুন ট্যাবে খুলবে"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "এজেন্টের জন্য ঐচ্ছিক নোট"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "এজেন্টের জন্য ঐচ্ছিক নোট…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "প্রয়োজনে একটি পাসওয়ার্ড সেট করুন, যাতে শুধু পাসওয়ার্ড জানা ব্যক্তিরাই লিঙ্কের মাধ্যমে আপনার জীবনবৃত্তান্ত দেখতে পারে।"
|
msgstr "প্রয়োজনে একটি পাসওয়ার্ড সেট করুন, যাতে শুধু পাসওয়ার্ড জানা ব্যক্তিরাই লিঙ্কের মাধ্যমে আপনার জীবনবৃত্তান্ত দেখতে পারে।"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "প্রকাশনাসমূহ"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "প্রকাশক"
|
msgstr "প্রকাশক"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "কাঁচা JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "পুনরায় স্কোর করুন"
|
msgstr "পুনরায় স্কোর করুন"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "প্রতিক্রিয়াশীল জীবনবৃত্
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "প্রতিক্রিয়াশীল রিজ্যুম v4 (JSON)"
|
msgstr "প্রতিক্রিয়াশীল রিজ্যুম v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "একটি সংযুক্তি পড়া হয়েছে"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "কাস্টম স্টাইল প্রয়োগ করার নির্দেশিকাটি পড়ুন।"
|
msgstr "কাস্টম স্টাইল প্রয়োগ করার নির্দেশিকাটি পড়ুন।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "জীবনবৃত্তান্ত পড়া হয়েছে"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "বিজ্ঞপ্তি পড়া হচ্ছে…"
|
msgstr "বিজ্ঞপ্তি পড়া হচ্ছে…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "পুনরুদ্ধার করুন"
|
msgstr "পুনরুদ্ধার করুন"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "এই প্যাচের আগের অবস্থায় রেজিউমটি পুনরুদ্ধার করবেন? এটি এই প্যাচ এবং এর পরে প্রয়োগ করা যেকোনো প্যাচকে রোল ব্যাক করবে।"
|
msgstr "এই প্যাচের আগের অবস্থায় জীবনবৃত্তান্ত পুনরুদ্ধার করবেন?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "রিজিউমে বিশ্লেষণ সম্পন্ন।"
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "জীবনবৃত্তান্তের বিষয়বস্তু"
|
msgstr "জীবনবৃত্তান্তের বিষয়বস্তু"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "জীবনবৃত্তান্ত সম্পাদনা"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "জীবনবৃত্তান্ত ফাইল"
|
msgstr "জীবনবৃত্তান্ত ফাইল"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "জীবনবৃত্তান্তসমূহ"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "পুনরায় চেষ্টা করুন"
|
msgstr "পুনরায় চেষ্টা করুন"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "সম্পাদনাগুলি পর্যালোচনা করুন"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "চাকরির বিবরণের সাথে জীবনবৃত্তান্তটি মিলিয়ে পর্যালোচনা করুন এবং কোনো অস্পষ্ট অংশ পরিবর্তন করার আগে আমাকে প্রশ্ন করুন।"
|
msgstr "চাকরির বিবরণের সাথে জীবনবৃত্তান্তটি মিলিয়ে পর্যালোচনা করুন এবং কোনো অস্পষ্ট অংশ পরিবর্তন করার আগে আমাকে প্রশ্ন করুন।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "এই সম্পাদনাটি পর্যালোচনা করুন"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "সারাংশটি এমনভাবে পুনর্গঠন করুন যাতে এটি গতানুগতিক না হয়ে একজন সিনিয়র ইঞ্জিনিয়ারিং ম্যানেজারের পদকে লক্ষ্য করে তৈরি হয়।"
|
msgstr "সারাংশটি এমনভাবে পুনর্গঠন করুন যাতে এটি গতানুগতিক না হয়ে একজন সিনিয়র ইঞ্জিনিয়ারিং ম্যানেজারের পদকে লক্ষ্য করে তৈরি হয়।"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "রোটেশন"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "আপনার প্রথম বিশ্লেষণ চালান একটি স্কোরকার্ড, শক্তি এবং অগ্রাধিকারপ্রাপ্ত পরামর্শ পেতে।"
|
msgstr "আপনার প্রথম বিশ্লেষণ চালান একটি স্কোরকার্ড, শক্তি এবং অগ্রাধিকারপ্রাপ্ত পরামর্শ পেতে।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "চলছে…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "রুশ"
|
msgstr "রুশ"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "উৎস"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "সোর্স কোড"
|
msgstr "সোর্স কোড"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "উৎস: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "উৎসসমূহ"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "স্পেসিং (অনুভূমিক)"
|
msgstr "স্পেসিং (অনুভূমিক)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "এই সহকারীকে খোলা যায়নি।"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "এই তারিখ সঠিকভাবে পড়া হবে না."
|
msgstr "এই তারিখ সঠিকভাবে পড়া হবে না."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "এই সম্পাদনার অনুরোধের আর উত্তর দেওয়া যাবে না।"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "এই ইমেল ঠিকানা স্বীকৃত হবে না."
|
msgstr "এই ইমেল ঠিকানা স্বীকৃত হবে না."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "যদি আপনি একাধিক পাসকি ব্যব
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "এটি এই বিভাগের সমস্ত আইটেম মুছে ফেলবে।"
|
msgstr "এটি এই বিভাগের সমস্ত আইটেম মুছে ফেলবে।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "এটি এই প্যাচ এবং এর পরে প্রয়োগ করা সমস্ত প্যাচ ফিরিয়ে নেবে।"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "ডান সাইডবার টগল করুন"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "থ্রেড টগল করুন"
|
msgstr "থ্রেড টগল করুন"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "টোকেন: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "টোকেন: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "টোকেন: {total} ({cached} ক্যাশ করা)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "যে চাকরিতে আবেদন করছেন তার খোঁজ রাখুন এবং আপনার পাঠানো জীবনবৃত্তান্তটি লিঙ্ক করুন।"
|
msgstr "যে চাকরিতে আবেদন করছেন তার খোঁজ রাখুন এবং আপনার পাঠানো জীবনবৃত্তান্তটি লিঙ্ক করুন।"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "আমরা স্বয়ংক্রিয়ভাবে ফরম
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "আমরা সেই পৃষ্ঠাটি খুঁজে পাইনি।"
|
msgstr "আমরা সেই পৃষ্ঠাটি খুঁজে পাইনি।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ওয়েব অনুসন্ধান"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "জুম আউট"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "জুলু"
|
msgstr "জুলু"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Sol·licitada"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplicat a"
|
msgstr "Aplicat a"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Aprova"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Aprovat — esperant l'agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Àrab"
|
msgstr "Àrab"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "S’està suprimint la clau API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "S’està suprimint el currículum..."
|
msgstr "S’està suprimint el currículum..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Denegat — esperant l'agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Denega"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Descriu què has fet perquè l'entrada aporti paraules clau per a la coincidència."
|
msgstr "Descriu què has fet perquè l'entrada aporti paraules clau per a la coincidència."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donar"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Fes una donació a Reactive Resume"
|
msgstr "Fes una donació a Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Fet"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Edita el contingut en mode de pantalla completa"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edita la data"
|
msgstr "Edita la data"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edició rebutjada"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exporta el teu currículum a PDF a l'instant, sense esperes ni demores."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "S'ha exportat el flux de la canonada.png"
|
msgstr "S'ha exportat el flux de la canonada.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Ha fallat"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "S'ha fallat l'anàlisi del currículum."
|
msgstr "S'ha fallat l'anàlisi del currículum."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "S'ha fallat la desactivació del proveïdor. Torni a provar."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "No s'ha pogut actualitzar el proveïdor."
|
msgstr "No s'ha pogut actualitzar el proveïdor."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "No s'ha pogut actualitzar la configuració del fil."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "Routador obert"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "s’obre en una pestanya nova"
|
msgstr "s’obre en una pestanya nova"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota opcional per a l'agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota opcional per a l'agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcionalment, estableix una contrasenya perquè només les persones que la tinguin puguin veure el currículum mitjançant l’enllaç."
|
msgstr "Opcionalment, estableix una contrasenya perquè només les persones que la tinguin puguin veure el currículum mitjançant l’enllaç."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicacions"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editor"
|
msgstr "Editor"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON en brut"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Torna a puntuar"
|
msgstr "Torna a puntuar"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Currículum reactiu v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Ha llegit un adjunt"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Llegiu la guia Aplicació d'estils personalitzats."
|
msgstr "Llegiu la guia Aplicació d'estils personalitzats."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Ha llegit el currículum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "S'està llegint l'oferta…"
|
msgstr "S'està llegint l'oferta…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Voleu restaurar el currículum anterior a aquest pegat? Això reverteix aquest pegat i qualsevol pegat aplicat després."
|
msgstr "Vols restaurar el currículum a l'estat anterior a aquest pegat?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Anàlisi del currículum completada."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Reprendre el contingut"
|
msgstr "Reprendre el contingut"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edició del currículum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Fitxer de currículum"
|
msgstr "Fitxer de currículum"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Currículums"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Torna-ho a intentar"
|
msgstr "Torna-ho a intentar"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Revisa les edicions"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Revisa el currículum en relació amb la descripció del lloc de treball i fes-me preguntes abans de canviar les seccions incertes."
|
msgstr "Revisa el currículum en relació amb la descripció del lloc de treball i fes-me preguntes abans de canviar les seccions incertes."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Revisa aquesta edició"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Reelabora el resum perquè s'adreci a un rol de gerent sènior d'enginyeria sense que sembli genèric."
|
msgstr "Reelabora el resum perquè s'adreci a un rol de gerent sènior d'enginyeria sense que sembli genèric."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotació"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Executa la teva primera anàlisi per obtenir un quadre de comandament, els punts forts i suggeriments prioritzats."
|
msgstr "Executa la teva primera anàlisi per obtenir un quadre de comandament, els punts forts i suggeriments prioritzats."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "S'està executant…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rus"
|
msgstr "Rus"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Font"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Codi font"
|
msgstr "Codi font"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Font: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Fonts"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Espaiat (horitzontal)"
|
msgstr "Espaiat (horitzontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "No s'ha pogut obrir aquest assistent."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Aquesta data no es llegirà correctament."
|
msgstr "Aquesta data no es llegirà correctament."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Aquesta sol·licitud d'edició ja no es pot respondre."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Aquesta adreça de correu electrònic no serà reconeguda."
|
msgstr "Aquesta adreça de correu electrònic no serà reconeguda."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Això t'ajudarà a identificar-la més endavant, si tens previst tenir d
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Això eliminarà tots els elements d'aquesta secció."
|
msgstr "Això eliminarà tots els elements d'aquesta secció."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Això desfarà aquest pegat i tots els pegats aplicats després."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Canvia la barra lateral dreta"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Activa/desactiva els fils"
|
msgstr "Activa/desactiva els fils"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} en memòria cau)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Fes un seguiment de la feina a la qual estàs sol·licitant i enllaça el currículum que has enviat."
|
msgstr "Fes un seguiment de la feina a la qual estàs sol·licitant i enllaça el currículum que has enviat."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "No hem pogut detectar el format automàticament. Trieu-lo a dalt."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "No hem pogut trobar aquesta pàgina"
|
msgstr "No hem pogut trobar aquesta pàgina"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Cerca web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Allunya"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulú"
|
msgstr "Zulú"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Podáno"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplikováno na"
|
msgstr "Aplikováno na"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Schválit"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Schváleno — čeká se na agenta…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabština"
|
msgstr "Arabština"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Mazání API klíče…"
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Mazání životopisu…"
|
msgstr "Mazání životopisu…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Zamítnuto — čeká se na agenta…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Zamítnout"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Popište, co jste udělali, aby záznam přispěl ke shodě klíčových slov."
|
msgstr "Popište, co jste udělali, aby záznam přispěl ke shodě klíčových slov."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Darovat"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Přispět na Reactive Resume"
|
msgstr "Přispět na Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Hotovo"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Úprava obsahu v celoobrazovkovém režimu"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Upravit datum"
|
msgstr "Upravit datum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Úprava zamítnuta"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportujte svůj životopis do PDF okamžitě, bez čekání nebo zpožd
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exportovaný soubor pipeline-flow.png"
|
msgstr "Exportovaný soubor pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Selhalo"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Nepodařilo se analyzovat životopis."
|
msgstr "Nepodařilo se analyzovat životopis."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Nepodařilo se zrušit propojení poskytovatele. Zkuste to prosím znovu
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Aktualizace poskytovatele se nezdařilo."
|
msgstr "Aktualizace poskytovatele se nezdařilo."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nepodařilo se aktualizovat nastavení vlákna."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "otevře se na nové kartě"
|
msgstr "otevře se na nové kartě"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Volitelná poznámka pro agenta"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Volitelná poznámka pro agenta…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Volitelně můžete nastavit heslo, aby si váš životopis mohli přes odkaz prohlédnout jen lidé, kteří heslo znají."
|
msgstr "Volitelně můžete nastavit heslo, aby si váš životopis mohli přes odkaz prohlédnout jen lidé, kteří heslo znají."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikace"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Vydavatel"
|
msgstr "Vydavatel"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Surový JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Přehodnotit"
|
msgstr "Přehodnotit"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktivní životopis v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktivní životopis v4 (JSON)"
|
msgstr "Reaktivní životopis v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Přečetl přílohu"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Přečtěte si průvodce Použití vlastních stylů."
|
msgstr "Přečtěte si průvodce Použití vlastních stylů."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Přečetl životopis"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Čtení inzerátu…"
|
msgstr "Čtení inzerátu…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Obnovit"
|
msgstr "Obnovit"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Obnovit životopis do stavu před touto opravou? Tato akce vrátí zpět tuto opravu a všechny opravy použité po ní."
|
msgstr "Obnovit životopis do stavu před touto záplatou?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analýza životopisu dokončena."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Obsah životopisu"
|
msgstr "Obsah životopisu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Úprava životopisu"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Soubor životopisu"
|
msgstr "Soubor životopisu"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Životopisy"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Zkusit znovu"
|
msgstr "Zkusit znovu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Zkontrolovat úpravy"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Projděte si životopis s ohledem na popis práce a před změnou nejasných částí se mě zeptejte na otázky."
|
msgstr "Projděte si životopis s ohledem na popis práce a před změnou nejasných částí se mě zeptejte na otázky."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Zkontrolovat tuto úpravu"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Přepracujte shrnutí tak, aby se zaměřovalo na pozici seniorního technického manažera, aniž by znělo genericky."
|
msgstr "Přepracujte shrnutí tak, aby se zaměřovalo na pozici seniorního technického manažera, aniž by znělo genericky."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Otočení"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Proveďte první analýzu a získejte hodnotící tabulku, silné stránky a návrhy priorit."
|
msgstr "Proveďte první analýzu a získejte hodnotící tabulku, silné stránky a návrhy priorit."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Probíhá…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ruština"
|
msgstr "Ruština"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Zdroj"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Zdrojový kód"
|
msgstr "Zdrojový kód"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Zdroj: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Zdroje"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Rozestupy (vodorovné)"
|
msgstr "Rozestupy (vodorovné)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Tohoto asistenta se nepodařilo otevřít."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Toto datum nebude správně přečteno."
|
msgstr "Toto datum nebude správně přečteno."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Na tuto žádost o úpravu již nelze odpovědět."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Tato e-mailová adresa nebude rozpoznána."
|
msgstr "Tato e-mailová adresa nebude rozpoznána."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "To vám pomůže identifikovat jej později, pokud plánujete mít více
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Tím se z této sekce odstraní všechny položky."
|
msgstr "Tím se z této sekce odstraní všechny položky."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Tím se vrátí zpět tato záplata a všechny záplaty použité po ní."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Přepnutí pravého postranního panelu"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Přepnout vlákna"
|
msgstr "Přepnout vlákna"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokeny: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokeny: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokeny: {total} ({cached} v mezipaměti)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Sledujte pracovní pozici, o kterou se ucházíte, a přidejte odkaz na životopis, který jste odeslali."
|
msgstr "Sledujte pracovní pozici, o kterou se ucházíte, a přidejte odkaz na životopis, který jste odeslali."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Formát se nám nepodařilo automaticky rozpoznat – vyberte jej prosí
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Tuto stránku jsme nenašli"
|
msgstr "Tuto stránku jsme nenašli"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Vyhledávání na webu"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Oddálit"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Ansøgt"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Anvendt den"
|
msgstr "Anvendt den"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Godkend"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Godkendt — venter på agenten…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabisk"
|
msgstr "Arabisk"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Sletter din API-nøgle..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Sletter dit CV..."
|
msgstr "Sletter dit CV..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Afvist — venter på agenten…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Afvis"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Beskriv, hvad du gjorde, så posten bidrager med søgeord til matchning."
|
msgstr "Beskriv, hvad du gjorde, så posten bidrager med søgeord til matchning."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donér"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donér til Reactive Resume"
|
msgstr "Donér til Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Færdig"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Rediger indhold i fuldskærmstilstand"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Rediger dato"
|
msgstr "Rediger dato"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Redigering afvist"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksporter dit CV til PDF med det samme, uden ventetid eller forsinkelser
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Eksporteret pipeline-flow.png"
|
msgstr "Eksporteret pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Mislykkedes"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Kunne ikke analysere CV'et."
|
msgstr "Kunne ikke analysere CV'et."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Det lykkedes ikke at fjerne forbindelsen til udbyderen. Prøv venligst i
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Kunne ikke opdatere udbyderen."
|
msgstr "Kunne ikke opdatere udbyderen."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Kunne ikke opdatere trådindstillinger."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "åbner i ny fane"
|
msgstr "åbner i ny fane"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Valgfri note til agenten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Valgfri note til agenten…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Du kan valgfrit angive en adgangskode, så kun personer med adgangskoden kan se dit CV via linket."
|
msgstr "Du kan valgfrit angive en adgangskode, så kun personer med adgangskoden kan se dit CV via linket."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikationer"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Udgiver"
|
msgstr "Udgiver"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Rå JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Omscor"
|
msgstr "Omscor"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktivt CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktivt CV v4 (JSON)"
|
msgstr "Reaktivt CV v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Læste en vedhæftet fil"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Læs vejledningen til anvendelse af brugerdefinerede stilarter."
|
msgstr "Læs vejledningen til anvendelse af brugerdefinerede stilarter."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Læste CV'et"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Læser opslaget…"
|
msgstr "Læser opslaget…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Gendan"
|
msgstr "Gendan"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Vil du gendanne cv'et til før denne patch? Dette vil rulle denne patch og eventuelle patches, der blev anvendt efter den, tilbage."
|
msgstr "Gendan CV'et til før denne programrettelse?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV-analysen er færdig."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV-indhold"
|
msgstr "CV-indhold"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV-redigering"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV-fil"
|
msgstr "CV-fil"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV'er"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Prøv igen"
|
msgstr "Prøv igen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Gennemgå redigeringer"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Gennemgå CV'et i forhold til en jobbeskrivelse, og stil mig spørgsmål, før du ændrer usikre afsnit."
|
msgstr "Gennemgå CV'et i forhold til en jobbeskrivelse, og stil mig spørgsmål, før du ændrer usikre afsnit."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Gennemgå denne redigering"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Omarbejd resuméet, så det er målrettet en stilling som senioringeniør uden at lyde generisk."
|
msgstr "Omarbejd resuméet, så det er målrettet en stilling som senioringeniør uden at lyde generisk."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotation"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Kør din første analyse for at få et scorekort, styrker og prioriterede forslag."
|
msgstr "Kør din første analyse for at få et scorekort, styrker og prioriterede forslag."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Kører…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russisk"
|
msgstr "Russisk"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Kilde"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kildekode"
|
msgstr "Kildekode"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Kilde: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Kilder"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Mellemrum (vandret)"
|
msgstr "Mellemrum (vandret)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Denne assistent kunne ikke åbnes."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Denne dato vil ikke blive læst korrekt."
|
msgstr "Denne dato vil ikke blive læst korrekt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Denne redigeringsanmodning kan ikke længere besvares."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Denne e-mailadresse vil ikke blive genkendt."
|
msgstr "Denne e-mailadresse vil ikke blive genkendt."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Det vil hjælpe dig med at identificere den senere, hvis du planlægger
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Dette vil fjerne alle elementer fra denne sektion."
|
msgstr "Dette vil fjerne alle elementer fra denne sektion."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Dette vil rulle denne programrettelse tilbage samt alle programrettelser, der er anvendt efter den."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Skift til højre sidepanel"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Slå tråde til/fra"
|
msgstr "Slå tråde til/fra"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} cachelagret)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Spor et job, du søger, og link det CV, du har sendt."
|
msgstr "Spor et job, du søger, og link det CV, du har sendt."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Vi kunne ikke registrere formatet automatisk – vælg det venligst oven
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Vi kunne ikke finde den side"
|
msgstr "Vi kunne ikke finde den side"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Websøgning"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zoom ud"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Beworben"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Beworben am"
|
msgstr "Beworben am"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Genehmigen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Genehmigt — Warten auf den Agenten…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabisch"
|
msgstr "Arabisch"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Dein API-Schlüssel wird gelöscht ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Ihr Lebenslauf wird gelöscht..."
|
msgstr "Ihr Lebenslauf wird gelöscht..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Abgelehnt — Warten auf den Agenten…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Ablehnen"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Beschreiben Sie, was Sie getan haben, damit der Eintrag Schlüsselwörter für den Abgleich beisteuert."
|
msgstr "Beschreiben Sie, was Sie getan haben, damit der Eintrag Schlüsselwörter für den Abgleich beisteuert."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Spenden"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "An Reactive Resume spenden"
|
msgstr "An Reactive Resume spenden"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Fertig"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Inhalt im Vollbildmodus bearbeiten"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Datum bearbeiten"
|
msgstr "Datum bearbeiten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Bearbeitung abgelehnt"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportieren Sie Ihren Lebenslauf sofort als PDF – ohne Wartezeiten ode
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png exportiert"
|
msgstr "pipeline-flow.png exportiert"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Fehlgeschlagen"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Analyse des Lebenslaufs fehlgeschlagen."
|
msgstr "Analyse des Lebenslaufs fehlgeschlagen."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Die Verknüpfung des Anbieters konnte nicht aufgehoben werden. Bitte ver
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Fehler beim Aktualisieren des Providers."
|
msgstr "Fehler beim Aktualisieren des Providers."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Thread-Einstellungen konnten nicht aktualisiert werden."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "öffnet in neuem Tab"
|
msgstr "öffnet in neuem Tab"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Optionale Notiz für den Agenten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Optionale Notiz für den Agenten…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Optional können Sie ein Passwort festlegen, damit nur Personen mit dem Passwort Ihren Lebenslauf über den Link ansehen können."
|
msgstr "Optional können Sie ein Passwort festlegen, damit nur Personen mit dem Passwort Ihren Lebenslauf über den Link ansehen können."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Veröffentlichungen"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Verlag"
|
msgstr "Verlag"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Roh-JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Neu bewerten"
|
msgstr "Neu bewerten"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiver Lebenslauf v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktiver Lebenslauf v4 (JSON)"
|
msgstr "Reaktiver Lebenslauf v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Anhang gelesen"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lesen Sie den Leitfaden zum Anwenden benutzerdefinierter Stile."
|
msgstr "Lesen Sie den Leitfaden zum Anwenden benutzerdefinierter Stile."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Lebenslauf gelesen"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Ausschreibung wird gelesen…"
|
msgstr "Ausschreibung wird gelesen…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Wiederherstellen"
|
msgstr "Wiederherstellen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Soll der Spielstand auf den Stand vor diesem Patch wiederhergestellt werden? Dadurch werden dieser Patch und alle nachfolgend angewendeten Patches rückgängig gemacht."
|
msgstr "Lebenslauf auf den Stand vor diesem Patch wiederherstellen?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analyse des Lebenslaufs abgeschlossen."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Lebenslaufinhalt"
|
msgstr "Lebenslaufinhalt"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Lebenslauf-Bearbeitung"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Lebenslauf-Datei"
|
msgstr "Lebenslauf-Datei"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Lebensläufe"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Wiederholen"
|
msgstr "Wiederholen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Bearbeitungen prüfen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Prüfen Sie Ihren Lebenslauf anhand der Stellenbeschreibung und stellen Sie mir Fragen, bevor Sie unklare Abschnitte ändern."
|
msgstr "Prüfen Sie Ihren Lebenslauf anhand der Stellenbeschreibung und stellen Sie mir Fragen, bevor Sie unklare Abschnitte ändern."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Diese Bearbeitung prüfen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Überarbeiten Sie die Zusammenfassung so, dass sie auf eine leitende Position im Ingenieurwesen zugeschnitten ist, ohne dabei zu allgemein zu klingen."
|
msgstr "Überarbeiten Sie die Zusammenfassung so, dass sie auf eine leitende Position im Ingenieurwesen zugeschnitten ist, ohne dabei zu allgemein zu klingen."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Drehung"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Führen Sie Ihre erste Analyse durch, um eine Scorecard, Stärken und priorisierte Vorschläge zu erhalten."
|
msgstr "Führen Sie Ihre erste Analyse durch, um eine Scorecard, Stärken und priorisierte Vorschläge zu erhalten."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Wird ausgeführt…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russisch"
|
msgstr "Russisch"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Quelle"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Quellcode"
|
msgstr "Quellcode"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Quelle: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Quellen"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Abstand (horizontal)"
|
msgstr "Abstand (horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Dieser Assistent konnte nicht geöffnet werden."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Dieses Datum wird nicht korrekt gelesen."
|
msgstr "Dieses Datum wird nicht korrekt gelesen."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Diese Bearbeitungsanfrage kann nicht mehr beantwortet werden."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Diese E-Mail-Adresse wird nicht erkannt."
|
msgstr "Diese E-Mail-Adresse wird nicht erkannt."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Dies hilft Ihnen später bei der Identifizierung, wenn Sie mehrere Passk
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Dadurch werden alle Artikel aus diesem Bereich entfernt."
|
msgstr "Dadurch werden alle Artikel aus diesem Bereich entfernt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Dadurch werden dieser Patch und alle danach angewendeten Patches zurückgesetzt."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Rechte Seitenleiste umschalten"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Threads umschalten"
|
msgstr "Threads umschalten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} im Cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Verfolge eine Stelle, auf die du dich bewirbst, und verknüpfe den gesendeten Lebenslauf."
|
msgstr "Verfolge eine Stelle, auf die du dich bewirbst, und verknüpfe den gesendeten Lebenslauf."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Das Format konnte nicht automatisch erkannt werden – bitte wählen Sie
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Wir konnten diese Seite nicht finden."
|
msgstr "Wir konnten diese Seite nicht finden."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Websuche"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Herauszoomen"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+104
-4
@@ -543,6 +543,14 @@ msgstr "Υποβλήθηκε"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Ημερομηνία αίτησης"
|
msgstr "Ημερομηνία αίτησης"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Έγκριση"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Εγκρίθηκε — αναμονή για τον πράκτορα…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Αραβικά"
|
msgstr "Αραβικά"
|
||||||
@@ -636,7 +644,7 @@ msgstr "Επισύναψη αρχείων"
|
|||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Attachment"
|
msgid "Attachment"
|
||||||
msgstr "Προσάρτημα"
|
msgstr "Συνημμένο"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Attachment uploaded."
|
msgid "Attachment uploaded."
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Διαγραφή του κλειδιού API σας..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Διαγραφή του βιογραφικού σας σημειώματος..."
|
msgstr "Διαγραφή του βιογραφικού σας σημειώματος..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Απορρίφθηκε — αναμονή για τον πράκτορα…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Απόρριψη"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Περιγράψτε τι κάνατε, ώστε η καταχώριση να συνεισφέρει λέξεις-κλειδιά για αντιστοίχιση."
|
msgstr "Περιγράψτε τι κάνατε, ώστε η καταχώριση να συνεισφέρει λέξεις-κλειδιά για αντιστοίχιση."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Προσφέρω"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Κάντε μία δωρεά στο Reactive Resume"
|
msgstr "Κάντε μία δωρεά στο Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Ολοκληρώθηκε"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Επεξεργασία περιεχομένου σε λειτουργί
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Επεξεργασία ημερομηνίας"
|
msgstr "Επεξεργασία ημερομηνίας"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Η επεξεργασία απορρίφθηκε"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Εξαγάγετε το βιογραφικό σας σε μορφή PDF
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Έγινε εξαγωγή του pipeline-flow.png"
|
msgstr "Έγινε εξαγωγή του pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Απέτυχε"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Απέτυχε να αναλύσει το βιογραφικό σημείωμα."
|
msgstr "Απέτυχε να αναλύσει το βιογραφικό σημείωμα."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Απέτυχε η αποσύνδεση του παρόχου. Προσπ
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Αποτυχία ενημέρωσης παρόχου."
|
msgstr "Αποτυχία ενημέρωσης παρόχου."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Αποτυχία ενημέρωσης των ρυθμίσεων νήματος."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "ανοίγει σε νέα καρτέλα"
|
msgstr "ανοίγει σε νέα καρτέλα"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Προαιρετική σημείωση για τον πράκτορα"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Προαιρετική σημείωση για τον πράκτορα…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Προαιρετικά, ορίστε έναν κωδικό πρόσβασης ώστε μόνο τα άτομα που γνωρίζουν τον κωδικό να μπορούν να βλέπουν το βιογραφικό σας σημείωμα μέσω του συνδέσμου."
|
msgstr "Προαιρετικά, ορίστε έναν κωδικό πρόσβασης ώστε μόνο τα άτομα που γνωρίζουν τον κωδικό να μπορούν να βλέπουν το βιογραφικό σας σημείωμα μέσω του συνδέσμου."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Δημοσιεύσεις"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Εκδότης"
|
msgstr "Εκδότης"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Ακατέργαστο JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Επαναβαθμολόγηση"
|
msgstr "Επαναβαθμολόγηση"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Αντιδραστικό βιογραφικό v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Αντιδραστικό βιογραφικό σημείωμα v4 (JSON)"
|
msgstr "Αντιδραστικό βιογραφικό σημείωμα v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Ανάγνωση συνημμένου"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Διαβάστε τον οδηγό Εφαρμογή προσαρμοσμένων στυλ."
|
msgstr "Διαβάστε τον οδηγό Εφαρμογή προσαρμοσμένων στυλ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Ανάγνωση του βιογραφικού"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Ανάγνωση της αγγελίας…"
|
msgstr "Ανάγνωση της αγγελίας…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Επαναφέρω"
|
msgstr "Επαναφέρω"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Επαναφορά του βιογραφικού σημειώματος πριν από αυτήν την ενημέρωση κώδικα; Αυτό θα ακυρώσει αυτήν την ενημέρωση κώδικα και τυχόν ενημερώσεις κώδικα που εφαρμόστηκαν μετά από αυτήν."
|
msgstr "Επαναφορά του βιογραφικού στην κατάσταση πριν από αυτήν την ενημέρωση κώδικα;"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Η ανάλυση του βιογραφικού ολοκληρώθηκε
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Περιεχόμενο βιογραφικού"
|
msgstr "Περιεχόμενο βιογραφικού"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Επεξεργασία βιογραφικού"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Αρχείο βιογραφικού"
|
msgstr "Αρχείο βιογραφικού"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Βιογραφικά σημειώματα"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Δοκιμάζω πάλι"
|
msgstr "Δοκιμάζω πάλι"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Έλεγχος επεξεργασιών"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Ελέγξτε το βιογραφικό σημείωμα με βάση την περιγραφή της θέσης εργασίας και κάντε μου ερωτήσεις πριν αλλάξετε αβέβαια σημεία."
|
msgstr "Ελέγξτε το βιογραφικό σημείωμα με βάση την περιγραφή της θέσης εργασίας και κάντε μου ερωτήσεις πριν αλλάξετε αβέβαια σημεία."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Έλεγχος αυτής της επεξεργασίας"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Επαναδιατυπώστε την περίληψη ώστε να στοχεύει σε έναν ρόλο ανώτερου διευθυντή μηχανικών χωρίς να ακούγεται γενική."
|
msgstr "Επαναδιατυπώστε την περίληψη ώστε να στοχεύει σε έναν ρόλο ανώτερου διευθυντή μηχανικών χωρίς να ακούγεται γενική."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Περιστροφή"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Εκτελέστε την πρώτη σας ανάλυση για να λάβετε έναν πίνακα βαθμολογίας, τα δυνατά σημεία και τις προτάσεις με προτεραιότητες."
|
msgstr "Εκτελέστε την πρώτη σας ανάλυση για να λάβετε έναν πίνακα βαθμολογίας, τα δυνατά σημεία και τις προτάσεις με προτεραιότητες."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Εκτελείται…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ρωσικά"
|
msgstr "Ρωσικά"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Πηγή"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Πηγαίος κώδικας"
|
msgstr "Πηγαίος κώδικας"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Πηγή: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Πηγές"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Κενό (οριζόντιο)"
|
msgstr "Κενό (οριζόντιο)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Δεν ήταν δυνατό το άνοιγμα αυτού του βο
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Αυτή η ημερομηνία δεν θα διαβαστεί σωστά."
|
msgstr "Αυτή η ημερομηνία δεν θα διαβαστεί σωστά."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Αυτό το αίτημα επεξεργασίας δεν μπορεί πλέον να απαντηθεί."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Αυτή η διεύθυνση email δεν θα αναγνωριστεί."
|
msgstr "Αυτή η διεύθυνση email δεν θα αναγνωριστεί."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Αυτό θα σας βοηθήσει να το αναγνωρίσετε
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Αυτό θα αφαιρέσει όλα τα στοιχεία από αυτό το τμήμα."
|
msgstr "Αυτό θα αφαιρέσει όλα τα στοιχεία από αυτό το τμήμα."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Αυτό θα αναιρέσει αυτήν την ενημέρωση κώδικα και όλες τις ενημερώσεις που εφαρμόστηκαν μετά από αυτήν."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Εναλλαγή δεξιάς πλευρικής γραμμής"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Εναλλαγή νημάτων"
|
msgstr "Εναλλαγή νημάτων"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} στην κρυφή μνήμη)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Παρακολουθήστε μια θέση στην οποία κάνετε αίτηση και συνδέστε το βιογραφικό που στείλατε."
|
msgstr "Παρακολουθήστε μια θέση στην οποία κάνετε αίτηση και συνδέστε το βιογραφικό που στείλατε."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Δεν ήταν δυνατός ο αυτόματος εντοπισμό
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Δεν μπορέσαμε να βρούμε αυτήν τη σελίδα"
|
msgstr "Δεν μπορέσαμε να βρούμε αυτήν τη σελίδα"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Αναζήτηση στον ιστό"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Σμίκρυνση"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Ζουλού"
|
msgstr "Ζουλού"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Applied"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Applied on"
|
msgstr "Applied on"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Approve"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Approved — waiting for the agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabic"
|
msgstr "Arabic"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Deleting your API key..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Deleting your resume..."
|
msgstr "Deleting your resume..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Denied — waiting for the agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Deny"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Describe what you did so the entry contributes keywords for matching."
|
msgstr "Describe what you did so the entry contributes keywords for matching."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donate"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donate to Reactive Resume"
|
msgstr "Donate to Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Done"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Edit content in fullscreen mode"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edit date"
|
msgstr "Edit date"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edit declined"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Export your resume to PDF instantly, without any waiting or delays."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exported pipeline-flow.png"
|
msgstr "Exported pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Failed"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Failed to analyze resume."
|
msgstr "Failed to analyze resume."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Failed to unlink provider. Please try again."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Failed to update provider."
|
msgstr "Failed to update provider."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Failed to update thread settings."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "opens in new tab"
|
msgstr "opens in new tab"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Optional note for the agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Optional note for the agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgstr "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publications"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Publisher"
|
msgstr "Publisher"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Raw JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Re-score"
|
msgstr "Re-score"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Read an attachment"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Read the Applying Custom Styles guide."
|
msgstr "Read the Applying Custom Styles guide."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Read the resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Reading the posting…"
|
msgstr "Reading the posting…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restore"
|
msgstr "Restore"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgstr "Restore the resume to before this patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Resume analysis complete."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Resume content"
|
msgstr "Resume content"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Resume edit"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Resume file"
|
msgstr "Resume file"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Resumes"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Retry"
|
msgstr "Retry"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Review edits"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgstr "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Review this edit"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgstr "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotation"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Running…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russian"
|
msgstr "Russian"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Source"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Source Code"
|
msgstr "Source Code"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Source: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Sources"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Spacing (Horizontal)"
|
msgstr "Spacing (Horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "This assistant could not be opened."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "This date will not be read correctly."
|
msgstr "This date will not be read correctly."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "This edit request can no longer be answered."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "This email address will not be recognized."
|
msgstr "This email address will not be recognized."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "This will help you identify it later, if you plan to have multiple passk
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "This will remove all items from this section."
|
msgstr "This will remove all items from this section."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "This will roll back this patch and any patches applied after it."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Toggle right sidebar"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Toggle threads"
|
msgstr "Toggle threads"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} cached)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Track a job you're applying to and link the resume you sent."
|
msgstr "Track a job you're applying to and link the resume you sent."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "We couldn't detect the format automatically — please choose it above."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "We couldn't find that page"
|
msgstr "We couldn't find that page"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Web search"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zoom out"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-2
@@ -538,6 +538,14 @@ msgstr "Applied"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Applied on"
|
msgstr "Applied on"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Approve"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Approved — waiting for the agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabic"
|
msgstr "Arabic"
|
||||||
@@ -1457,6 +1465,14 @@ msgstr "Deleting your API key..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Deleting your resume..."
|
msgstr "Deleting your resume..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Denied — waiting for the agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Deny"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Describe what you did so the entry contributes keywords for matching."
|
msgstr "Describe what you did so the entry contributes keywords for matching."
|
||||||
@@ -1525,6 +1541,10 @@ msgstr "Donate"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donate to Reactive Resume"
|
msgstr "Donate to Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Done"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1637,6 +1657,10 @@ msgstr "Edit content in fullscreen mode"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edit date"
|
msgstr "Edit date"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edit declined"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1832,6 +1856,10 @@ msgstr "Export your resume to PDF instantly, without any waiting or delays."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exported pipeline-flow.png"
|
msgstr "Exported pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Failed"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Failed to analyze resume."
|
msgstr "Failed to analyze resume."
|
||||||
@@ -1962,6 +1990,10 @@ msgstr "Failed to unlink provider. Please try again."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Failed to update provider."
|
msgstr "Failed to update provider."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Failed to update thread settings."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3148,6 +3180,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "opens in new tab"
|
msgstr "opens in new tab"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Optional note for the agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Optional note for the agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgstr "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
@@ -3494,6 +3534,10 @@ msgstr "Publications"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Publisher"
|
msgstr "Publisher"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Raw JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Re-score"
|
msgstr "Re-score"
|
||||||
@@ -3541,10 +3585,18 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Read an attachment"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Read the Applying Custom Styles guide."
|
msgstr "Read the Applying Custom Styles guide."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Read the resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Reading the posting…"
|
msgstr "Reading the posting…"
|
||||||
@@ -3695,8 +3747,8 @@ msgid "Restore"
|
|||||||
msgstr "Restore"
|
msgstr "Restore"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgstr "Restore the resume to before this patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3721,6 +3773,10 @@ msgstr "Resume analysis complete."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Resume content"
|
msgstr "Resume content"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Resume edit"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Resume file"
|
msgstr "Resume file"
|
||||||
@@ -3749,10 +3805,18 @@ msgstr "Resumes"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Retry"
|
msgstr "Retry"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Review edits"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgstr "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Review this edit"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgstr "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
@@ -3793,6 +3857,10 @@ msgstr "Rotation"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Running…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russian"
|
msgstr "Russian"
|
||||||
@@ -4248,6 +4316,15 @@ msgstr "Source"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Source Code"
|
msgstr "Source Code"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Source: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Sources"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Spacing (Horizontal)"
|
msgstr "Spacing (Horizontal)"
|
||||||
@@ -4599,6 +4676,10 @@ msgstr "This assistant could not be opened."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "This date will not be read correctly."
|
msgstr "This date will not be read correctly."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "This edit request can no longer be answered."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "This email address will not be recognized."
|
msgstr "This email address will not be recognized."
|
||||||
@@ -4707,6 +4788,10 @@ msgstr "This will help you identify it later, if you plan to have multiple passk
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "This will remove all items from this section."
|
msgstr "This will remove all items from this section."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "This will roll back this patch and any patches applied after it."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4789,6 +4874,18 @@ msgstr "Toggle right sidebar"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Toggle threads"
|
msgstr "Toggle threads"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} cached)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Track a job you're applying to and link the resume you sent."
|
msgstr "Track a job you're applying to and link the resume you sent."
|
||||||
@@ -5208,6 +5305,10 @@ msgstr "We couldn't detect the format automatically — please choose it above."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "We couldn't find that page"
|
msgstr "We couldn't find that page"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Web search"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Enviada"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Postulado el"
|
msgstr "Postulado el"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Aprobar"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Aprobado — esperando al agente…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Árabe"
|
msgstr "Árabe"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Eliminando tu clave API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Eliminando tu currículum..."
|
msgstr "Eliminando tu currículum..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Denegado — esperando al agente…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Denegar"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Describe lo que hiciste para que la entrada aporte palabras clave para la concordancia."
|
msgstr "Describe lo que hiciste para que la entrada aporte palabras clave para la concordancia."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donar"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donar a Reactive Resume"
|
msgstr "Donar a Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Hecho"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Editar contenidos en modo de pantalla completa"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Editar fecha"
|
msgstr "Editar fecha"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edición rechazada"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exporta tu currículum a PDF al instante, sin esperas ni demoras."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png exportado"
|
msgstr "pipeline-flow.png exportado"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Falló"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Fallo al analizar el currículum."
|
msgstr "Fallo al analizar el currículum."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Fallo al desvincular el proveedor. Por favor, inténtelo de nuevo."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "No se pudo actualizar el proveedor."
|
msgstr "No se pudo actualizar el proveedor."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "No se pudieron actualizar los ajustes del hilo."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "abrir en una nueva pestaña"
|
msgstr "abrir en una nueva pestaña"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota opcional para el agente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota opcional para el agente…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcionalmente, establece una contraseña para que solo las personas que la tengan puedan ver tu currículum a través del enlace."
|
msgstr "Opcionalmente, establece una contraseña para que solo las personas que la tengan puedan ver tu currículum a través del enlace."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicaciones"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editor"
|
msgstr "Editor"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON sin procesar"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Volver a puntuar"
|
msgstr "Volver a puntuar"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reanudación reactiva v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Currículum reactivo v4 (JSON)"
|
msgstr "Currículum reactivo v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Leyó un adjunto"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lea la guía sobre cómo aplicar estilos personalizados."
|
msgstr "Lea la guía sobre cómo aplicar estilos personalizados."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Leyó el currículum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Leyendo la oferta…"
|
msgstr "Leyendo la oferta…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "¿Restaurar el estado anterior a este parche? Esto revertirá este parche y cualquier parche aplicado posteriormente."
|
msgstr "¿Restaurar el currículum al estado anterior a este parche?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Análisis del currículum finalizado."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Contenido del currículum"
|
msgstr "Contenido del currículum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edición del currículum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Archivo de currículum"
|
msgstr "Archivo de currículum"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Currículums"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Rever"
|
msgstr "Rever"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Revisar ediciones"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Revisa el currículum comparándolo con la descripción del puesto y hazme preguntas antes de modificar las secciones que te generen dudas."
|
msgstr "Revisa el currículum comparándolo con la descripción del puesto y hazme preguntas antes de modificar las secciones que te generen dudas."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Revisar esta edición"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Revisa el resumen para que se dirija a un puesto de gerente de ingeniería sénior sin que suene genérico."
|
msgstr "Revisa el resumen para que se dirija a un puesto de gerente de ingeniería sénior sin que suene genérico."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotación"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Realice su primer análisis para obtener un cuadro de mando, los puntos fuertes y las sugerencias priorizadas."
|
msgstr "Realice su primer análisis para obtener un cuadro de mando, los puntos fuertes y las sugerencias priorizadas."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Ejecutando…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ruso"
|
msgstr "Ruso"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Fuente"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Código fuente"
|
msgstr "Código fuente"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Origen: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Fuentes"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Espaciado (horizontal)"
|
msgstr "Espaciado (horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "No se pudo abrir este asistente."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Esta fecha no se leerá correctamente."
|
msgstr "Esta fecha no se leerá correctamente."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Esta solicitud de edición ya no puede responderse."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Esta dirección de correo electrónico no será reconocida."
|
msgstr "Esta dirección de correo electrónico no será reconocida."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Esto le ayudará a identificarlo más tarde, si planea tener varias clav
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Esto eliminará todos los elementos de esta sección."
|
msgstr "Esto eliminará todos los elementos de esta sección."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Esto revertirá este parche y todos los parches aplicados después."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Alternar la barra lateral derecha"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Cambiar de hilo"
|
msgstr "Cambiar de hilo"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} en caché)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Haz seguimiento de un empleo al que te postulas y vincula el currículum que enviaste."
|
msgstr "Haz seguimiento de un empleo al que te postulas y vincula el currículum que enviaste."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "No pudimos detectar el formato automáticamente; por favor, selecciónel
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "No pudimos encontrar esa página"
|
msgstr "No pudimos encontrar esa página"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Búsqueda web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Alejar"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulú"
|
msgstr "Zulú"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "ارسالشده"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "تاریخ درخواست"
|
msgstr "تاریخ درخواست"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "تأیید"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "تأیید شد — در انتظار عامل…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "عربی"
|
msgstr "عربی"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "در حال حذف کلید API شما..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "در حال حذف رزومه شما..."
|
msgstr "در حال حذف رزومه شما..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "رد شد — در انتظار عامل…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "رد"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "کاری را که انجام دادهاید شرح دهید تا این مورد کلمات کلیدی لازم برای تطبیق را داشته باشد."
|
msgstr "کاری را که انجام دادهاید شرح دهید تا این مورد کلمات کلیدی لازم برای تطبیق را داشته باشد."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "اهدا کنید"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "به Reactive Resume دونیت کنید"
|
msgstr "به Reactive Resume دونیت کنید"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "انجام شد"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ویرایش محتوا در حالت تمامصفحه"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "ویرایش تاریخ"
|
msgstr "ویرایش تاریخ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "ویرایش رد شد"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "رزومه خود را فوراً و بدون هیچ گونه انتظا
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png خروجی گرفته شد"
|
msgstr "pipeline-flow.png خروجی گرفته شد"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ناموفق"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "در تحلیل رزومه شکست خورد."
|
msgstr "در تحلیل رزومه شکست خورد."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "لینک ارائهدهنده را نمیتوان قطع کرد.
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "بهروزرسانی ارائهدهنده ناموفق بود."
|
msgstr "بهروزرسانی ارائهدهنده ناموفق بود."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "تنظیمات تاپیک بهروزرسانی نشد."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "روتر آزاد"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "در زبانهٔ جدید باز میشود"
|
msgstr "در زبانهٔ جدید باز میشود"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "یادداشت اختیاری برای عامل"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "یادداشت اختیاری برای عامل…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "در صورت تمایل میتوانید گذرواژهای تنظیم کنید تا فقط افرادی که گذرواژه را دارند بتوانند از طریق لینک، رزومه شما را ببینند."
|
msgstr "در صورت تمایل میتوانید گذرواژهای تنظیم کنید تا فقط افرادی که گذرواژه را دارند بتوانند از طریق لینک، رزومه شما را ببینند."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "انتشارها"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "منتشرکننده"
|
msgstr "منتشرکننده"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON خام"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "امتیازدهی دوباره"
|
msgstr "امتیازدهی دوباره"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "رزومه واکنشی نسخه<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "رزومهٔ واکنشی نسخهٔ ۴ (JSON)"
|
msgstr "رزومهٔ واکنشی نسخهٔ ۴ (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "یک پیوست خوانده شد"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "راهنمای اعمال سبکهای سفارشی را مطالعه کنید."
|
msgstr "راهنمای اعمال سبکهای سفارشی را مطالعه کنید."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "رزومه خوانده شد"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "در حال خواندن آگهی…"
|
msgstr "در حال خواندن آگهی…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "بازیابی"
|
msgstr "بازیابی"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "بازگرداندن از سرگیری به قبل از این وصله؟ این کار این وصله و هر وصلهای که بعد از آن اعمال شده را به حالت قبل برمیگرداند."
|
msgstr "رزومه به حالت قبل از این پچ بازیابی شود؟"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "تحلیل رزومه کامل شد."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "محتوای رزومه"
|
msgstr "محتوای رزومه"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "ویرایش رزومه"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "فایل رزومه"
|
msgstr "فایل رزومه"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "رزومهها"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "دوباره امتحان کنید"
|
msgstr "دوباره امتحان کنید"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "بررسی ویرایشها"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "رزومه را با شرح شغل مقایسه کنید و قبل از تغییر بخشهای نامشخص، از من سوال بپرسید."
|
msgstr "رزومه را با شرح شغل مقایسه کنید و قبل از تغییر بخشهای نامشخص، از من سوال بپرسید."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "بررسی این ویرایش"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "خلاصه را طوری اصلاح کنید که نقش مدیر ارشد مهندسی را هدف قرار دهد، بدون اینکه کلی به نظر برسد."
|
msgstr "خلاصه را طوری اصلاح کنید که نقش مدیر ارشد مهندسی را هدف قرار دهد، بدون اینکه کلی به نظر برسد."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "چرخش"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "اولین تحلیل خود را اجرا کنید تا کارت امتیاز، نقاط قوت و پیشنهادهای اولویتبندیشده را دریافت کنید."
|
msgstr "اولین تحلیل خود را اجرا کنید تا کارت امتیاز، نقاط قوت و پیشنهادهای اولویتبندیشده را دریافت کنید."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "در حال اجرا…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "روسی"
|
msgstr "روسی"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "منبع"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "کد منبع"
|
msgstr "کد منبع"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "منبع: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "منابع"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "فاصله (افقی)"
|
msgstr "فاصله (افقی)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "این دستیار قابل باز شدن نیست."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "این تاریخ بهدرستی خوانده نخواهد شد."
|
msgstr "این تاریخ بهدرستی خوانده نخواهد شد."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "دیگر نمیتوان به این درخواست ویرایش پاسخ داد."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "این نشانی ایمیل شناسایی نخواهد شد."
|
msgstr "این نشانی ایمیل شناسایی نخواهد شد."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "این به شما کمک میکند تا بعداً آن را شنا
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "این همه موارد را از این بخش حذف خواهد کرد."
|
msgstr "این همه موارد را از این بخش حذف خواهد کرد."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "این کار این پچ و همه پچهای اعمالشده پس از آن را برمیگرداند."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "گوشهای کردن نوار کناری راست"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "تغییر وضعیت موضوعات"
|
msgstr "تغییر وضعیت موضوعات"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "توکنها: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "توکنها: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "توکنها: {total} ({cached} کششده)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "شغلی را که برایش درخواست میدهید پیگیری کنید و رزومهٔ ارسالی را پیوند دهید."
|
msgstr "شغلی را که برایش درخواست میدهید پیگیری کنید و رزومهٔ ارسالی را پیوند دهید."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "ما نتوانستیم قالب را به طور خودکار تشخی
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "ما نتوانستیم آن صفحه را پیدا کنیم"
|
msgstr "ما نتوانستیم آن صفحه را پیدا کنیم"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "جستجوی وب"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "کوچکنمایی"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "زولو"
|
msgstr "زولو"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Haettu"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Haettu"
|
msgstr "Haettu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Hyväksy"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Hyväksytty — odotetaan agenttia…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "arabia"
|
msgstr "arabia"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Poistetaan API-avaintasi..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Poistetaan ansioluetteloasi..."
|
msgstr "Poistetaan ansioluetteloasi..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Hylätty — odotetaan agenttia…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Hylkää"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Kuvaile mitä teit, jotta merkintä antaa avainsanat hakua varten."
|
msgstr "Kuvaile mitä teit, jotta merkintä antaa avainsanat hakua varten."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Lahjoittaa"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Lahjoita Reactive Resumelle"
|
msgstr "Lahjoita Reactive Resumelle"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Valmis"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Muokkaa sisältöä koko näytön tilassa"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Muokkaa päivämäärää"
|
msgstr "Muokkaa päivämäärää"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Muokkaus hylätty"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Vie ansioluettelosi PDF-muotoon välittömästi, ilman odottelua tai vii
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png viety"
|
msgstr "pipeline-flow.png viety"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Epäonnistui"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Epäonnistuin analysoimaan ansioluetteloa."
|
msgstr "Epäonnistuin analysoimaan ansioluetteloa."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Palveluntarjoajan linkityksen poistaminen epäonnistui. Yritä uudelleen
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Palveluntarjoajan päivittäminen epäonnistui."
|
msgstr "Palveluntarjoajan päivittäminen epäonnistui."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Ketjun asetusten päivitys epäonnistui."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "avautuu uuteen välilehteen"
|
msgstr "avautuu uuteen välilehteen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Valinnainen huomautus agentille"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Valinnainen huomautus agentille…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Halutessasi voit asettaa salasanan, jotta vain salasanan tietävät voivat nähdä ansioluettelosi linkin kautta."
|
msgstr "Halutessasi voit asettaa salasanan, jotta vain salasanan tietävät voivat nähdä ansioluettelosi linkin kautta."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Julkaisut"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Julkaisija"
|
msgstr "Julkaisija"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Raaka JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Pisteytä uudelleen"
|
msgstr "Pisteytä uudelleen"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiivinen ansioluettelo v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktiivinen ansioluettelo v4 (JSON)"
|
msgstr "Reaktiivinen ansioluettelo v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Luki liitteen"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lue opas Mukautettujen tyylien käyttäminen."
|
msgstr "Lue opas Mukautettujen tyylien käyttäminen."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Luki ansioluettelon"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Luetaan ilmoitusta…"
|
msgstr "Luetaan ilmoitusta…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Palauttaa"
|
msgstr "Palauttaa"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Palautetaanko ansioluettelo tätä korjausta edeltävään tilaan? Tämä palauttaa tämän korjauksen ja kaikki sen jälkeen asennetut korjaukset vanhaan tilaan."
|
msgstr "Palautetaanko ansioluettelo tilaan ennen tätä korjausta?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Ansioluettelon analyysi valmis."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Ansioluettelon sisältö"
|
msgstr "Ansioluettelon sisältö"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Ansioluettelon muokkaus"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Ansioluettelotiedosto"
|
msgstr "Ansioluettelotiedosto"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Ansioluettelot"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Yritä uudelleen"
|
msgstr "Yritä uudelleen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Tarkista muokkaukset"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Tarkista ansioluettelo työpaikkailmoitusta vasten ja kysy minulta kysymyksiä ennen kuin muutat epävarmoja kohtia."
|
msgstr "Tarkista ansioluettelo työpaikkailmoitusta vasten ja kysy minulta kysymyksiä ennen kuin muutat epävarmoja kohtia."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Tarkista tämä muokkaus"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Muotoile yhteenveto uudelleen niin, että se kohdistuu vanhemman teknisen päällikön rooliin kuulostamatta kuitenkaan yleisluontoiselta."
|
msgstr "Muotoile yhteenveto uudelleen niin, että se kohdistuu vanhemman teknisen päällikön rooliin kuulostamatta kuitenkaan yleisluontoiselta."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Kierrätys"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Suorita ensimmäinen analyysi, jotta saat tuloskortin, vahvuudet ja priorisoidut ehdotukset."
|
msgstr "Suorita ensimmäinen analyysi, jotta saat tuloskortin, vahvuudet ja priorisoidut ehdotukset."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Suoritetaan…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "venäjä"
|
msgstr "venäjä"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Lähde"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Lähdekoodi"
|
msgstr "Lähdekoodi"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Lähde: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Lähteet"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Väli (vaaka)"
|
msgstr "Väli (vaaka)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Tätä avustajaa ei voitu avata."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Tätä päivämäärää ei lueta oikein."
|
msgstr "Tätä päivämäärää ei lueta oikein."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Tähän muokkauspyyntöön ei voi enää vastata."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Tätä sähköpostiosoitetta ei tunnisteta."
|
msgstr "Tätä sähköpostiosoitetta ei tunnisteta."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Tämä auttaa sinua tunnistamaan sen myöhemmin, jos aiot käyttää use
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Tämä poistaa kaikki kohteet tästä osiosta."
|
msgstr "Tämä poistaa kaikki kohteet tästä osiosta."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Tämä peruu tämän korjauksen ja kaikki sen jälkeen tehdyt korjaukset."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Oikean sivupalkin vaihtaminen"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Näytä/piilota ketjut"
|
msgstr "Näytä/piilota ketjut"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokenit: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokenit: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokenit: {total} ({cached} välimuistista)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Seuraa työpaikkaa, johon haet, ja linkitä lähettämäsi ansioluettelo."
|
msgstr "Seuraa työpaikkaa, johon haet, ja linkitä lähettämäsi ansioluettelo."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Emme havainneet muotoa automaattisesti – valitse se yllä."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Emme löytäneet kyseistä sivua"
|
msgstr "Emme löytäneet kyseistä sivua"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Verkkohaku"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Loitonna"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Candidature envoyée"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Postulé le"
|
msgstr "Postulé le"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Approuver"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Approuvé — en attente de l'agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabe"
|
msgstr "Arabe"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Suppression de votre clé API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Suppression de votre CV en cours..."
|
msgstr "Suppression de votre CV en cours..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Refusé — en attente de l'agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Refuser"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Décrivez ce que vous avez fait pour que l'entrée fournisse des mots-clés pour la correspondance."
|
msgstr "Décrivez ce que vous avez fait pour que l'entrée fournisse des mots-clés pour la correspondance."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Faire un don"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Faire un don à Reactive Resume"
|
msgstr "Faire un don à Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Terminé"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Modifier le contenu en mode plein écran"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Modifier la date"
|
msgstr "Modifier la date"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Modification refusée"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportez instantanément votre CV au format PDF, sans attente ni délai.
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png exporté"
|
msgstr "pipeline-flow.png exporté"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Échec"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Échec de l'analyse du curriculum vitae."
|
msgstr "Échec de l'analyse du curriculum vitae."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Échec de la déconnexion du fournisseur. Veuillez réessayer."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Impossible de mettre à jour le fournisseur."
|
msgstr "Impossible de mettre à jour le fournisseur."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Impossible de mettre à jour les paramètres du thread."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "s'ouvre dans un nouvel onglet"
|
msgstr "s'ouvre dans un nouvel onglet"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Note facultative pour l'agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Note facultative pour l'agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Eventuellement, définissez un mot de passe pour que seules les personnes ayant le mot de passe puissent consulter votre CV par le biais du lien."
|
msgstr "Eventuellement, définissez un mot de passe pour que seules les personnes ayant le mot de passe puissent consulter votre CV par le biais du lien."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publications"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Éditeur"
|
msgstr "Éditeur"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON brut"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Réévaluer"
|
msgstr "Réévaluer"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "React Resume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Lecture d'une pièce jointe"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Consultez le guide « Application des styles personnalisés »."
|
msgstr "Consultez le guide « Application des styles personnalisés »."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Lecture du CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Lecture de l'annonce…"
|
msgstr "Lecture de l'annonce…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurer"
|
msgstr "Restaurer"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restaurer la reprise à un état antérieur à ce correctif ? Cette action annulera ce correctif ainsi que tous les correctifs appliqués ultérieurement."
|
msgstr "Restaurer le CV tel qu'il était avant ce correctif ?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "L'analyse du curriculum vitae est terminée."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Contenu du CV"
|
msgstr "Contenu du CV"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Modification du CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Fichier de CV"
|
msgstr "Fichier de CV"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CVs"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Réessayer"
|
msgstr "Réessayer"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Examiner les modifications"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Veuillez vérifier votre CV en le comparant à la description du poste et posez-moi des questions avant de modifier les sections qui vous semblent incertaines."
|
msgstr "Veuillez vérifier votre CV en le comparant à la description du poste et posez-moi des questions avant de modifier les sections qui vous semblent incertaines."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Examiner cette modification"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Remaniez le résumé pour qu'il cible un poste de responsable d'ingénierie senior sans paraître générique."
|
msgstr "Remaniez le résumé pour qu'il cible un poste de responsable d'ingénierie senior sans paraître générique."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotation"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Effectuez votre première analyse pour obtenir un tableau de bord, des points forts et des suggestions classées par ordre de priorité."
|
msgstr "Effectuez votre première analyse pour obtenir un tableau de bord, des points forts et des suggestions classées par ordre de priorité."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "En cours d'exécution…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russe"
|
msgstr "Russe"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Origine"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Code source"
|
msgstr "Code source"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Source : {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Sources"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Espacement (horizontal)"
|
msgstr "Espacement (horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Impossible d'ouvrir cet assistant."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Cette date ne sera pas lue correctement."
|
msgstr "Cette date ne sera pas lue correctement."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Il n'est plus possible de répondre à cette demande de modification."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Cette adresse email ne sera pas reconnue."
|
msgstr "Cette adresse email ne sera pas reconnue."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Cela vous aidera à l'identifier plus tard, si vous prévoyez d'avoir pl
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Cette opération permet de supprimer tous les éléments de cette section."
|
msgstr "Cette opération permet de supprimer tous les éléments de cette section."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Cela annulera ce correctif ainsi que tous les correctifs appliqués après celui-ci."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Barre latérale droite"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Basculer les fils"
|
msgstr "Basculer les fils"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Jetons : {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Jetons : {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Jetons : {total} ({cached} en cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Suivez une offre à laquelle vous postulez et liez le CV envoyé."
|
msgstr "Suivez une offre à laquelle vous postulez et liez le CV envoyé."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nous n'avons pas pu détecter le format automatiquement — veuillez le
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nous n'avons pas trouvé cette page."
|
msgstr "Nous n'avons pas trouvé cette page."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Recherche web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zoom arrière"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zoulou"
|
msgstr "Zoulou"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "הוגש"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "הוגש בתאריך"
|
msgstr "הוגש בתאריך"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "אישור"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "אושר — ממתין לסוכן…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "ערבית"
|
msgstr "ערבית"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "מוחק את מפתח ה־API שלך..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "מוחק את קורות החיים שלך..."
|
msgstr "מוחק את קורות החיים שלך..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "נדחה — ממתין לסוכן…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "דחייה"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "תאר מה עשית כדי שהרשומה תוסיף מילות מפתח להתאמה."
|
msgstr "תאר מה עשית כדי שהרשומה תוסיף מילות מפתח להתאמה."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "לִתְרוֹם"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "תרומה ל־Reactive Resume"
|
msgstr "תרומה ל־Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "הושלם"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ערוך תוכן במצב מסך מלא"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "עריכת תאריך"
|
msgstr "עריכת תאריך"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "העריכה נדחתה"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ייצא את קורות החיים שלך ל-PDF באופן מיידי,
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png יוצא"
|
msgstr "pipeline-flow.png יוצא"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "נכשל"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "לא ניתן לנתח את קורות החיים."
|
msgstr "לא ניתן לנתח את קורות החיים."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "לא הצליח לבטל את הקישור לספק. אנא נסה שו
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "עדכון הספק נכשל."
|
msgstr "עדכון הספק נכשל."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "עדכון הגדרות השרשור נכשל."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "נפתח בלשונית חדשה"
|
msgstr "נפתח בלשונית חדשה"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "הערה אופציונלית לסוכן"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "הערה אופציונלית לסוכן…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "רשותך להגדיר סיסמה כך שרק מי שמכיר אותה יוכל לצפות בקורות החיים דרך הקישור."
|
msgstr "רשותך להגדיר סיסמה כך שרק מי שמכיר אותה יוכל לצפות בקורות החיים דרך הקישור."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "פרסומים"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "מוציא לאור"
|
msgstr "מוציא לאור"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON גולמי"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "דרג מחדש"
|
msgstr "דרג מחדש"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "קורות חיים ריאקטיביים v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "קורות חיים תגובתיים גרסה 4 (JSON)"
|
msgstr "קורות חיים תגובתיים גרסה 4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "קרא קובץ מצורף"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "קרא את המדריך להחלת סגנונות מותאמים אישית."
|
msgstr "קרא את המדריך להחלת סגנונות מותאמים אישית."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "קרא את קורות החיים"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "קורא את המודעה…"
|
msgstr "קורא את המודעה…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "לְשַׁחְזֵר"
|
msgstr "לְשַׁחְזֵר"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "לשחזר את קורות החיים למצב שלפני תיקון זה? פעולה זו תחזיר את התיקון הזה וכל תיקון שהוחל לאחריו."
|
msgstr "לשחזר את קורות החיים למצב שלפני התיקון הזה?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "ניתוח קורות החיים הושלם."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "תוכן קורות חיים"
|
msgstr "תוכן קורות חיים"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "עריכת קורות חיים"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "קובץ קורות חיים"
|
msgstr "קובץ קורות חיים"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "מסמכי קורות חיים"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "נסה שוב"
|
msgstr "נסה שוב"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "סקירת עריכות"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "בדוק את קורות החיים מול תיאור התפקיד ושאל אותי שאלות לפני שינוי חלקים לא ודאיים."
|
msgstr "בדוק את קורות החיים מול תיאור התפקיד ושאל אותי שאלות לפני שינוי חלקים לא ודאיים."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "סקירת העריכה הזו"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "עבדו מחדש את הסיכום כך שיתמקד בתפקיד מנהל הנדסה בכיר מבלי להישמע כללי."
|
msgstr "עבדו מחדש את הסיכום כך שיתמקד בתפקיד מנהל הנדסה בכיר מבלי להישמע כללי."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "סיבוב"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "בצע את הניתוח הראשון שלך כדי לקבל דוח ביצועים, נקודות חוזק והצעות מסודרות לפי סדר עדיפויות."
|
msgstr "בצע את הניתוח הראשון שלך כדי לקבל דוח ביצועים, נקודות חוזק והצעות מסודרות לפי סדר עדיפויות."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "פועל…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "רוסית"
|
msgstr "רוסית"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "מקור"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "קוד מקור"
|
msgstr "קוד מקור"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "מקור: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "מקורות"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "ריווח (אופקי)"
|
msgstr "ריווח (אופקי)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "לא ניתן היה לפתוח את העוזר הזה."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "התאריך הזה לא ייקרא כראוי."
|
msgstr "התאריך הזה לא ייקרא כראוי."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "לא ניתן עוד להשיב על בקשת העריכה הזו."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "כתובת הדוא״ל הזו לא תזוהה."
|
msgstr "כתובת הדוא״ל הזו לא תזוהה."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "זה יעזור לך לזהות אותו בהמשך, אם אתה מתכ
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "פעולה זו תסיר את כל הפריטים מהקטע הזה."
|
msgstr "פעולה זו תסיר את כל הפריטים מהקטע הזה."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "פעולה זו תבטל את התיקון הזה ואת כל התיקונים שהוחלו אחריו."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "הצג את הסרגל הצדדי הימני"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "החלף שרשורים"
|
msgstr "החלף שרשורים"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "טוקנים: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "טוקנים: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "טוקנים: {total} ({cached} מהמטמון)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "עקוב אחר משרה שאליה אתה מגיש מועמדות וקשר את קורות החיים ששלחת."
|
msgstr "עקוב אחר משרה שאליה אתה מגיש מועמדות וקשר את קורות החיים ששלחת."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "לא הצלחנו לזהות את הפורמט באופן אוטומטי
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "לא הצלחנו למצוא את הדף הזה"
|
msgstr "לא הצלחנו למצוא את הדף הזה"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "חיפוש באינטרנט"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "התרחקות"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "זולו"
|
msgstr "זולו"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "आवेदन किया"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "आवेदन की तारीख"
|
msgstr "आवेदन की तारीख"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "स्वीकृत करें"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "स्वीकृत — एजेंट की प्रतीक्षा में…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "अरबी"
|
msgstr "अरबी"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "आपकी API कुंजी हटाई जा रही है...
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "आपका रेज़्यूमे हटाया जा रहा है..."
|
msgstr "आपका रेज़्यूमे हटाया जा रहा है..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "अस्वीकृत — एजेंट की प्रतीक्षा में…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "अस्वीकार करें"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "वर्णन करें कि आपने क्या किया ताकि प्रविष्टि मिलान के लिए कीवर्ड का योगदान दे सके।"
|
msgstr "वर्णन करें कि आपने क्या किया ताकि प्रविष्टि मिलान के लिए कीवर्ड का योगदान दे सके।"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "दान करें"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "रिएक्टिव रेज़्यूमे के लिए दान करें"
|
msgstr "रिएक्टिव रेज़्यूमे के लिए दान करें"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "पूर्ण"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "पूर्ण स्क्रीन मोड में सामग
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "तारीख संपादित करें"
|
msgstr "तारीख संपादित करें"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "संपादन अस्वीकृत"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "बिना किसी प्रतीक्षा या देर
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png निर्यात किया गया"
|
msgstr "pipeline-flow.png निर्यात किया गया"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "विफल"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "रिज़्यूमे का विश्लेषण करने में असफल।"
|
msgstr "रिज़्यूमे का विश्लेषण करने में असफल।"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "प्रदाता को अनलिंक करने में
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "प्रदाता को अपडेट करने में विफल।"
|
msgstr "प्रदाता को अपडेट करने में विफल।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "थ्रेड सेटिंग्स अपडेट नहीं हो सकीं।"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ओपनराउटर"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "नए टैब में खुलता है"
|
msgstr "नए टैब में खुलता है"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "एजेंट के लिए वैकल्पिक नोट"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "एजेंट के लिए वैकल्पिक नोट…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "वैकल्पिक रूप से, एक पासवर्ड सेट करें ताकि केवल पासवर्ड वाले लोग ही लिंक के माध्यम से आपका रेज़्यूमे देख सकें।"
|
msgstr "वैकल्पिक रूप से, एक पासवर्ड सेट करें ताकि केवल पासवर्ड वाले लोग ही लिंक के माध्यम से आपका रेज़्यूमे देख सकें।"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "प्रकाशन"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "प्रकाशक"
|
msgstr "प्रकाशक"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "रॉ JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "फिर से स्कोर करें"
|
msgstr "फिर से स्कोर करें"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "रिएक्टिव रिज्यूम v<0>{__APP_VERSION__}</0>
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "प्रतिक्रियाशील रिज़्यूमे v4 (JSON)"
|
msgstr "प्रतिक्रियाशील रिज़्यूमे v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "अटैचमेंट पढ़ा"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "कस्टम स्टाइल लागू करने संबंधी गाइड पढ़ें।"
|
msgstr "कस्टम स्टाइल लागू करने संबंधी गाइड पढ़ें।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "रेज़्यूमे पढ़ा"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "पोस्टिंग पढ़ी जा रही है…"
|
msgstr "पोस्टिंग पढ़ी जा रही है…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "पुनर्स्थापित करना"
|
msgstr "पुनर्स्थापित करना"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "क्या हम रिज्यूम को इस पैच से पहले की स्थिति में रीस्टोर करना चाहते हैं? इससे यह पैच और इसके बाद लागू किए गए सभी पैच वापस ले लिए जाएंगे।"
|
msgstr "रेज़्यूमे को इस पैच से पहले की स्थिति में पुनर्स्थापित करें?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "रिज़्यूमे विश्लेषण पूरा हो
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "रिज्यूमे की सामग्री"
|
msgstr "रिज्यूमे की सामग्री"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "रेज़्यूमे संपादन"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "रेज़्यूमे फ़ाइल"
|
msgstr "रेज़्यूमे फ़ाइल"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "रेज़्यूमे"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "पुन: प्रयास करें"
|
msgstr "पुन: प्रयास करें"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "संपादनों की समीक्षा करें"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "नौकरी के विवरण के आधार पर रिज्यूमे की समीक्षा करें और अनिश्चित अनुभागों में बदलाव करने से पहले मुझसे प्रश्न पूछें।"
|
msgstr "नौकरी के विवरण के आधार पर रिज्यूमे की समीक्षा करें और अनिश्चित अनुभागों में बदलाव करने से पहले मुझसे प्रश्न पूछें।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "इस संपादन की समीक्षा करें"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "सारांश को इस तरह से संशोधित करें कि यह एक वरिष्ठ इंजीनियरिंग प्रबंधक की भूमिका को लक्षित करे, लेकिन सामान्य न लगे।"
|
msgstr "सारांश को इस तरह से संशोधित करें कि यह एक वरिष्ठ इंजीनियरिंग प्रबंधक की भूमिका को लक्षित करे, लेकिन सामान्य न लगे।"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "रोटेशन"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "अपना पहला विश्लेषण चलाएँ ताकि आपको एक स्कोरकार्ड, ताकतें और प्राथमिकता-आधारित सुझाव मिल सकें।"
|
msgstr "अपना पहला विश्लेषण चलाएँ ताकि आपको एक स्कोरकार्ड, ताकतें और प्राथमिकता-आधारित सुझाव मिल सकें।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "चल रहा है…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "रूसी"
|
msgstr "रूसी"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "स्रोत"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "स्रोत कोड"
|
msgstr "स्रोत कोड"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "स्रोत: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "स्रोत"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "स्पेसिंग (क्षैतिज)"
|
msgstr "स्पेसिंग (क्षैतिज)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "इस सहायक को खोला नहीं जा सका
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "यह तारीख सही से नहीं पढ़ी जाएगी."
|
msgstr "यह तारीख सही से नहीं पढ़ी जाएगी."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "इस संपादन अनुरोध का अब उत्तर नहीं दिया जा सकता।"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "यह ईमेल पता पहचाना नहीं जाएगा."
|
msgstr "यह ईमेल पता पहचाना नहीं जाएगा."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "यदि आप कई पासकी रखने की योजन
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "यह इस अनुभाग से सभी आइटम हटा देगा।"
|
msgstr "यह इस अनुभाग से सभी आइटम हटा देगा।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "इससे यह पैच और इसके बाद लागू किए गए सभी पैच वापस हो जाएँगे।"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "दाएँ साइडबार टॉगल करें"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "टॉगल थ्रेड्स"
|
msgstr "टॉगल थ्रेड्स"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "टोकन: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "टोकन: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "टोकन: {total} ({cached} कैश किए गए)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "जिस नौकरी के लिए आप आवेदन कर रहे हैं उसे ट्रैक करें और भेजा गया रेज़्यूमे लिंक करें।"
|
msgstr "जिस नौकरी के लिए आप आवेदन कर रहे हैं उसे ट्रैक करें और भेजा गया रेज़्यूमे लिंक करें।"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "हम प्रारूप का स्वचालित रूप
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "हमें वह पेज नहीं मिला"
|
msgstr "हमें वह पेज नहीं मिला"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "वेब खोज"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "ज़ूम आउट"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ज़ुलु"
|
msgstr "ज़ुलु"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Jelentkezve"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Jelentkezés dátuma"
|
msgstr "Jelentkezés dátuma"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Jóváhagyás"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Jóváhagyva — várakozás az ügynökre…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "arab"
|
msgstr "arab"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API kulcs törlése..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Önéletrajz törlése..."
|
msgstr "Önéletrajz törlése..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Elutasítva — várakozás az ügynökre…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Elutasítás"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Írja le, mit tett, hogy a bejegyzés kulcsszavakat adjon az egyezéshez."
|
msgstr "Írja le, mit tett, hogy a bejegyzés kulcsszavakat adjon az egyezéshez."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Adományoz"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Adományozzon a Reactive Resume-nak"
|
msgstr "Adományozzon a Reactive Resume-nak"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Kész"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Tartalom szerkesztése teljes képernyős módban"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Dátum szerkesztése"
|
msgstr "Dátum szerkesztése"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Szerkesztés elutasítva"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportálja önéletrajzát PDF formátumba azonnal, várakozás vagy k
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "A pipeline-flow.png exportálva."
|
msgstr "A pipeline-flow.png exportálva."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Sikertelen"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Nem sikerült elemezni az önéletrajzot."
|
msgstr "Nem sikerült elemezni az önéletrajzot."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Sikertelen a szolgáltató függetlenítése. Kérjük, próbálja újra
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Nem sikerült frissíteni a szolgáltatót."
|
msgstr "Nem sikerült frissíteni a szolgáltatót."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nem sikerült frissíteni a szál beállításait."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "új lapon nyílik meg"
|
msgstr "új lapon nyílik meg"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Opcionális megjegyzés az ügynöknek"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Opcionális megjegyzés az ügynöknek…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcionálisan beállíthatsz egy jelszót is, így csak azok tekinthetik meg a linkkel elérhető önéletrajzodat, akik ismerik a jelszót."
|
msgstr "Opcionálisan beállíthatsz egy jelszót is, így csak azok tekinthetik meg a linkkel elérhető önéletrajzodat, akik ismerik a jelszót."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikációk"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Kiadó"
|
msgstr "Kiadó"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Nyers JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Újrapontozás"
|
msgstr "Újrapontozás"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktív önéletrajz v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktív önéletrajz v4 (JSON)"
|
msgstr "Reaktív önéletrajz v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Elolvasott egy mellékletet"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Olvasd el az Egyéni stílusok alkalmazása útmutatót."
|
msgstr "Olvasd el az Egyéni stílusok alkalmazása útmutatót."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Elolvasta az önéletrajzot"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Hirdetés beolvasása…"
|
msgstr "Hirdetés beolvasása…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Visszaállítás"
|
msgstr "Visszaállítás"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Visszaállítja az önéletrajzot a javítás előtti állapotra? Ez visszaállítja a jelenlegi javítást és az utána telepített javításokat."
|
msgstr "Visszaállítja az önéletrajzot a javítás előtti állapotra?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Az önéletrajzelemzés befejeződött."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Önéletrajz tartalma"
|
msgstr "Önéletrajz tartalma"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Önéletrajz-szerkesztés"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Önéletrajzfájl"
|
msgstr "Önéletrajzfájl"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Önéletrajzok"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Újrapróbálkozás"
|
msgstr "Újrapróbálkozás"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Szerkesztések áttekintése"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Ellenőrizd az önéletrajzot a munkaköri leírás alapján, és tegyél fel kérdéseket, mielőtt megváltoztatod a bizonytalan részeket."
|
msgstr "Ellenőrizd az önéletrajzot a munkaköri leírás alapján, és tegyél fel kérdéseket, mielőtt megváltoztatod a bizonytalan részeket."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Szerkesztés áttekintése"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Alakítsd át az összefoglalót úgy, hogy egy vezető mérnöki vezetői szerepkörre összpontosítson anélkül, hogy általánosnak tűnne."
|
msgstr "Alakítsd át az összefoglalót úgy, hogy egy vezető mérnöki vezetői szerepkörre összpontosítson anélkül, hogy általánosnak tűnne."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Forgatás"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Futtassa le az első elemzést, hogy kapjon egy értékelőlapot, erősségeket és rangsorolt javaslatokat."
|
msgstr "Futtassa le az első elemzést, hogy kapjon egy értékelőlapot, erősségeket és rangsorolt javaslatokat."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Folyamatban…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "orosz"
|
msgstr "orosz"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Forrás"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Forráskód"
|
msgstr "Forráskód"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Forrás: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Források"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Térköz (vízszintes)"
|
msgstr "Térköz (vízszintes)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Ez az asszisztens nem nyitható meg."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ez a dátum nem lesz helyesen olvasható."
|
msgstr "Ez a dátum nem lesz helyesen olvasható."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Erre a szerkesztési kérésre már nem lehet válaszolni."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ezt az e-mail címet a rendszer nem ismeri fel."
|
msgstr "Ezt az e-mail címet a rendszer nem ismeri fel."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Ez segít a későbbi azonosításban, ha több jelszókulcsot tervez."
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Ezzel az összes elemet eltávolítja ebből a szakaszból."
|
msgstr "Ezzel az összes elemet eltávolítja ebből a szakaszból."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Ez visszavonja ezt a javítást és minden utána alkalmazott javítást."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Jobb oldalsáv bekapcsolása"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Témák ki-/bekapcsolása"
|
msgstr "Témák ki-/bekapcsolása"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokenek: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokenek: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokenek: {total} ({cached} gyorsítótárazva)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Kövesd nyomon az állást, amelyre jelentkezel, és kapcsold hozzá az elküldött önéletrajzot."
|
msgstr "Kövesd nyomon az állást, amelyre jelentkezel, és kapcsold hozzá az elküldött önéletrajzot."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nem tudtuk automatikusan felismerni a formátumot – kérjük, válassz
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nem találtuk meg az oldalt"
|
msgstr "Nem találtuk meg az oldalt"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Webes keresés"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Kicsinyítés"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Dilamar"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Dilamar pada"
|
msgstr "Dilamar pada"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Setujui"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Disetujui — menunggu agen…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arab"
|
msgstr "Arab"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Menghapus API key Anda..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Menghapus resume Anda..."
|
msgstr "Menghapus resume Anda..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Ditolak — menunggu agen…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Tolak"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Jelaskan apa yang Anda lakukan sehingga entri tersebut menyumbangkan kata kunci untuk pencocokan."
|
msgstr "Jelaskan apa yang Anda lakukan sehingga entri tersebut menyumbangkan kata kunci untuk pencocokan."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Menyumbangkan"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donasi ke Reactive Resume"
|
msgstr "Donasi ke Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Selesai"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Mengedit konten dalam mode layar penuh"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edit tanggal"
|
msgstr "Edit tanggal"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edit ditolak"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Ekspor resume Anda ke PDF secara instan, tanpa menunggu atau mengalami p
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png diekspor"
|
msgstr "pipeline-flow.png diekspor"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Gagal"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Gagal menganalisis resume."
|
msgstr "Gagal menganalisis resume."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Gagal memutuskan tautan penyedia. Silakan coba lagi."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Gagal memperbarui penyedia."
|
msgstr "Gagal memperbarui penyedia."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Gagal memperbarui pengaturan thread."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "terbuka di tab baru"
|
msgstr "terbuka di tab baru"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Catatan opsional untuk agen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Catatan opsional untuk agen…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Secara opsional, atur kata sandi sehingga hanya orang yang memiliki kata sandi yang dapat melihat resume Anda melalui tautan."
|
msgstr "Secara opsional, atur kata sandi sehingga hanya orang yang memiliki kata sandi yang dapat melihat resume Anda melalui tautan."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikasi"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Penerbit"
|
msgstr "Penerbit"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON mentah"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Nilai ulang"
|
msgstr "Nilai ulang"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktif Lanjutkan v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Lanjutkan Reaktif v4 (JSON)"
|
msgstr "Lanjutkan Reaktif v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Membaca lampiran"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Bacalah panduan Menerapkan Gaya Kustom."
|
msgstr "Bacalah panduan Menerapkan Gaya Kustom."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Membaca resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Membaca lowongan…"
|
msgstr "Membaca lowongan…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Memulihkan"
|
msgstr "Memulihkan"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Pulihkan resume ke sebelum patch ini? Ini akan mengembalikan patch ini dan semua patch yang diterapkan setelahnya."
|
msgstr "Pulihkan resume ke kondisi sebelum patch ini?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Lanjutkan analisis hingga selesai."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Isi resume"
|
msgstr "Isi resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edit resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "File resume"
|
msgstr "File resume"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Resume"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Mencoba kembali"
|
msgstr "Mencoba kembali"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Tinjau edit"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Tinjau resume Anda dan bandingkan dengan deskripsi pekerjaan, serta ajukan pertanyaan kepada saya sebelum mengubah bagian-bagian yang kurang jelas."
|
msgstr "Tinjau resume Anda dan bandingkan dengan deskripsi pekerjaan, serta ajukan pertanyaan kepada saya sebelum mengubah bagian-bagian yang kurang jelas."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Tinjau edit ini"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Perbaiki ringkasan tersebut agar sesuai dengan peran manajer teknik senior tanpa terdengar umum."
|
msgstr "Perbaiki ringkasan tersebut agar sesuai dengan peran manajer teknik senior tanpa terdengar umum."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotasi"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Jalankan analisis pertama Anda untuk mendapatkan kartu skor, kekuatan, dan saran yang diprioritaskan."
|
msgstr "Jalankan analisis pertama Anda untuk mendapatkan kartu skor, kekuatan, dan saran yang diprioritaskan."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Berjalan…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusia"
|
msgstr "Rusia"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Sumber"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kode Sumber"
|
msgstr "Kode Sumber"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Sumber: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Sumber"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Jarak (Horizontal)"
|
msgstr "Jarak (Horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Asisten ini tidak dapat dibuka."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Tanggal ini tidak akan terbaca dengan benar."
|
msgstr "Tanggal ini tidak akan terbaca dengan benar."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Permintaan edit ini tidak dapat dijawab lagi."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Alamat email ini tidak akan dikenali."
|
msgstr "Alamat email ini tidak akan dikenali."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Ini akan membantu Anda mengidentifikasinya nanti, jika Anda berencana un
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Hal ini akan menghapus semua item dari bagian ini."
|
msgstr "Hal ini akan menghapus semua item dari bagian ini."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Ini akan membatalkan patch ini dan semua patch yang diterapkan setelahnya."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Beralih ke bilah sisi kanan"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Alihkan utas"
|
msgstr "Alihkan utas"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token: {total} ({cached} di-cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Lacak pekerjaan yang kamu lamar dan tautkan resume yang kamu kirim."
|
msgstr "Lacak pekerjaan yang kamu lamar dan tautkan resume yang kamu kirim."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Kami tidak dapat mendeteksi format secara otomatis — silakan pilih for
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Kami tidak dapat menemukan halaman itu."
|
msgstr "Kami tidak dapat menemukan halaman itu."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Pencarian web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Perkecil"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Candidatura inviata"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Candidatura inviata il"
|
msgstr "Candidatura inviata il"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Approva"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Approvato — in attesa dell'agente…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabo"
|
msgstr "Arabo"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Eliminazione della chiave API in corso..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Eliminazione del tuo curriculum in corso..."
|
msgstr "Eliminazione del tuo curriculum in corso..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Rifiutato — in attesa dell'agente…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Rifiuta"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Descrivi cosa hai fatto in modo che la voce fornisca parole chiave per la corrispondenza."
|
msgstr "Descrivi cosa hai fatto in modo che la voce fornisca parole chiave per la corrispondenza."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donare"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Fai una donazione a Reactive Resume"
|
msgstr "Fai una donazione a Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Completato"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Modifica dei contenuti in modalità fullscreen"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Modifica data"
|
msgstr "Modifica data"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Modifica rifiutata"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Esporta il tuo curriculum in PDF all'istante, senza attese né ritardi."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png esportato"
|
msgstr "pipeline-flow.png esportato"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Non riuscito"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Non è riuscito ad analizzare il curriculum."
|
msgstr "Non è riuscito ad analizzare il curriculum."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Impossibile scollegare il provider. Provi di nuovo."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Impossibile aggiornare il provider."
|
msgstr "Impossibile aggiornare il provider."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Impossibile aggiornare le impostazioni della discussione."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "apre in una nuova scheda"
|
msgstr "apre in una nuova scheda"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota facoltativa per l'agente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota facoltativa per l'agente…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Facoltativamente, imposta una password affinché solo le persone che la conoscono possano visualizzare il tuo curriculum tramite il link."
|
msgstr "Facoltativamente, imposta una password affinché solo le persone che la conoscono possano visualizzare il tuo curriculum tramite il link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Pubblicazioni"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editore"
|
msgstr "Editore"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON grezzo"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Ricalcola punteggio"
|
msgstr "Ricalcola punteggio"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Ripresa reattiva v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Ripresa reattiva v4 (JSON)"
|
msgstr "Ripresa reattiva v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Ha letto un allegato"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Leggi la guida \"Applicazione di stili personalizzati\"."
|
msgstr "Leggi la guida \"Applicazione di stili personalizzati\"."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Ha letto il curriculum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Lettura dell'annuncio…"
|
msgstr "Lettura dell'annuncio…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Ripristinare"
|
msgstr "Ripristinare"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Ripristinare il ripristino a prima di questa patch? Questa opzione annullerà questa patch e tutte le patch applicate successivamente."
|
msgstr "Ripristinare il curriculum allo stato precedente a questa patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analisi del curriculum completata."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Contenuto del curriculum"
|
msgstr "Contenuto del curriculum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Modifica al curriculum"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "File curriculum"
|
msgstr "File curriculum"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Curriculum"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Riprova"
|
msgstr "Riprova"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Rivedi le modifiche"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Esamina il curriculum confrontandolo con la descrizione del lavoro e fammi delle domande prima di modificare le sezioni in cui hai dei dubbi."
|
msgstr "Esamina il curriculum confrontandolo con la descrizione del lavoro e fammi delle domande prima di modificare le sezioni in cui hai dei dubbi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Rivedi questa modifica"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Rielabora il riepilogo in modo che si rivolga a un ruolo di responsabile senior dell'ingegneria senza risultare generico."
|
msgstr "Rielabora il riepilogo in modo che si rivolga a un ruolo di responsabile senior dell'ingegneria senza risultare generico."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotazione"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Esegua la prima analisi per ottenere una scorecard, i punti di forza e i suggerimenti prioritari."
|
msgstr "Esegua la prima analisi per ottenere una scorecard, i punti di forza e i suggerimenti prioritari."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "In esecuzione…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russo"
|
msgstr "Russo"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Fonte"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Codice sorgente"
|
msgstr "Codice sorgente"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Fonte: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Fonti"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Spaziatura (orizzontale)"
|
msgstr "Spaziatura (orizzontale)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Impossibile aprire questo assistente."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Questa data non verrà letta correttamente."
|
msgstr "Questa data non verrà letta correttamente."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Non è più possibile rispondere a questa richiesta di modifica."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Questo indirizzo email non verrà riconosciuto."
|
msgstr "Questo indirizzo email non verrà riconosciuto."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Questo la aiuterà a identificarlo in seguito, se prevede di avere più
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Questo rimuoverà tutti gli elementi da questa sezione."
|
msgstr "Questo rimuoverà tutti gli elementi da questa sezione."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Questa operazione annullerà questa patch e tutte le patch applicate successivamente."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Alterna la barra laterale destra"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Discussioni di attivazione/disattivazione"
|
msgstr "Discussioni di attivazione/disattivazione"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token: {total} ({cached} in cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Tieni traccia di un lavoro per cui ti candidi e collega il curriculum inviato."
|
msgstr "Tieni traccia di un lavoro per cui ti candidi e collega il curriculum inviato."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Non siamo riusciti a rilevare automaticamente il formato: selezionalo qu
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Non siamo riusciti a trovare quella pagina"
|
msgstr "Non siamo riusciti a trovare quella pagina"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Ricerca web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Rimpicciolisci"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "応募済み"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "応募日"
|
msgstr "応募日"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "承認"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "承認済み — エージェントを待っています…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "アラビア語"
|
msgstr "アラビア語"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API キーを削除しています..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "レジュメを削除しています…"
|
msgstr "レジュメを削除しています…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "拒否済み — エージェントを待っています…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "拒否"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "エントリが一致するキーワードに貢献するために行ったことを説明してください。"
|
msgstr "エントリが一致するキーワードに貢献するために行ったことを説明してください。"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "寄付する"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume に寄付"
|
msgstr "Reactive Resume に寄付"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完了"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "フルスクリーンモードでのコンテンツ編集"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "日付を編集"
|
msgstr "日付を編集"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "編集は拒否されました"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "待ち時間や遅延なく、即座にPDF形式でエクスポートで
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png をエクスポートしました"
|
msgstr "pipeline-flow.png をエクスポートしました"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "失敗"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "レジュメの解析に失敗しました。"
|
msgstr "レジュメの解析に失敗しました。"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "プロバイダのリンク解除に失敗しました。もう一度お
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "プロバイダーの更新に失敗しました。"
|
msgstr "プロバイダーの更新に失敗しました。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "スレッド設定の更新に失敗しました。"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "新しいタブで開きます"
|
msgstr "新しいタブで開きます"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "エージェントへのメモ(任意)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "エージェントへのメモ(任意)…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "必要に応じてパスワードを設定し、パスワードを知っている人だけがリンクを閲覧できるようにすることもできます。"
|
msgstr "必要に応じてパスワードを設定し、パスワードを知っている人だけがリンクを閲覧できるようにすることもできます。"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "著作物"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "出版社"
|
msgstr "出版社"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "生のJSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "再採点"
|
msgstr "再採点"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "リアクティブレジューム v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "添付ファイルを読み取りました"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "カスタムスタイルの適用ガイドをお読みください。"
|
msgstr "カスタムスタイルの適用ガイドをお読みください。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "レジュメを読み取りました"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "求人情報を読み取り中…"
|
msgstr "求人情報を読み取り中…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "復元する"
|
msgstr "復元する"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "このパッチ適用前の状態に復元しますか?これにより、このパッチと、その後に適用されたすべてのパッチがロールバックされます。"
|
msgstr "このパッチ適用前の状態にレジュメを復元しますか?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "レジュメの分析が完了しました。"
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "履歴書の内容"
|
msgstr "履歴書の内容"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "レジュメの編集"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "履歴書ファイル"
|
msgstr "履歴書ファイル"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "レジュメ"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "リトライ"
|
msgstr "リトライ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "編集内容を確認"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "レジュメを求人内容と照らし合わせて確認し、不明な点があれば変更する前に私に質問してください。"
|
msgstr "レジュメを求人内容と照らし合わせて確認し、不明な点があれば変更する前に私に質問してください。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "この編集を確認"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "要約を修正して、一般的な表現にならないように、上級エンジニアリングマネージャーの職務を的確に捉えられるようにしてください。"
|
msgstr "要約を修正して、一般的な表現にならないように、上級エンジニアリングマネージャーの職務を的確に捉えられるようにしてください。"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "回転"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "分析を実行すると、スコアカード・強み・改善提案が表示されます。"
|
msgstr "分析を実行すると、スコアカード・強み・改善提案が表示されます。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "実行中…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ロシア語"
|
msgstr "ロシア語"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ソース"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "ソースコード"
|
msgstr "ソースコード"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ソース: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ソース"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "間隔(左右)"
|
msgstr "間隔(左右)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "このアシスタントを開くことができませんでした。"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "この日付は正しく読み取れません。"
|
msgstr "この日付は正しく読み取れません。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "この編集リクエストには回答できなくなりました。"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "このメールアドレスは認識されません。"
|
msgstr "このメールアドレスは認識されません。"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "複数のパスキーを使用する予定がある場合、後で識別
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "これでこのセクションからすべての項目が削除される。"
|
msgstr "これでこのセクションからすべての項目が削除される。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "このパッチと、その後に適用されたすべてのパッチがロールバックされます。"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "右サイドバーの切り替え"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "スレッドの切り替え"
|
msgstr "スレッドの切り替え"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "トークン: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "トークン: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "トークン: {total}({cached} キャッシュ済み)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "応募中の求人を追跡し、送付した履歴書をリンクします。"
|
msgstr "応募中の求人を追跡し、送付した履歴書をリンクします。"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "フォーマットを自動的に検出できませんでした。上記
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "そのページは見つかりませんでした"
|
msgstr "そのページは見つかりませんでした"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ウェブ検索"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "ズームアウト"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ズールー語"
|
msgstr "ズールー語"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "បានដាក់ពាក្យ"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "បានដាក់ពាក្យនៅ"
|
msgstr "បានដាក់ពាក្យនៅ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "អនុម័ត"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "បានអនុម័ត — កំពុងរង់ចាំភ្នាក់ងារ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabic"
|
msgstr "Arabic"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "កំពុងលុបកូនសោ API របស់អ្
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "កំពុងលុបប្រវត្តិរូបរបស់អ្នក..."
|
msgstr "កំពុងលុបប្រវត្តិរូបរបស់អ្នក..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "បានបដិសេធ — កំពុងរង់ចាំភ្នាក់ងារ…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "បដិសេធ"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "ពណ៌នាអំពីអ្វីដែលអ្នកបានធ្វើ ដូច្នេះធាតុចូលរួមចំណែកពាក្យគន្លឹះសម្រាប់ការផ្គូផ្គង។"
|
msgstr "ពណ៌នាអំពីអ្វីដែលអ្នកបានធ្វើ ដូច្នេះធាតុចូលរួមចំណែកពាក្យគន្លឹះសម្រាប់ការផ្គូផ្គង។"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "បរិច្ចាគ"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "បរិច្ចាគឲ្យ Reactive Resume"
|
msgstr "បរិច្ចាគឲ្យ Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "រួចរាល់"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "កែសម្រួលមាតិកាក្នុងរបៀបព
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "កែសម្រួលកាលបរិច្ឆេទ"
|
msgstr "កែសម្រួលកាលបរិច្ឆេទ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "ការកែសម្រួលត្រូវបានបដិសេធ"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "នាំចេញប្រវត្តិរូបសង្ខេបរ
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "បាននាំចេញ pipeline-flow.png"
|
msgstr "បាននាំចេញ pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "បរាជ័យ"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "ការវិភាគប្រវត្តិរូបបានបរាជ័យ។"
|
msgstr "ការវិភាគប្រវត្តិរូបបានបរាជ័យ។"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "បរាជ័យក្នុងការផ្តាច់អ្នក
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "មិនអាចធ្វើបច្ចុប្បន្នភាពអ្នកផ្តល់សេវាបានទេ។"
|
msgstr "មិនអាចធ្វើបច្ចុប្បន្នភាពអ្នកផ្តល់សេវាបានទេ។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "បរាជ័យក្នុងការធ្វើបច្ចុប្បន្នភាពការកំណត់ខ្សែស្រឡាយ។"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "បើកក្នុងផ្ទាំងថ្មី"
|
msgstr "បើកក្នុងផ្ទាំងថ្មី"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ចំណាំស្រេចចិត្តសម្រាប់ភ្នាក់ងារ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ចំណាំស្រេចចិត្តសម្រាប់ភ្នាក់ងារ…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "ជាជម្រើស អ្នកអាចកំណត់ពាក្យសម្ងាត់មួយ ដូច្នេះតែមនុស្សដែលមានពាក្យសម្ងាត់ប៉ុណ្ណោះ អាចមើលប្រវត្តិរូបរបស់អ្នកតាមតំណបាន។"
|
msgstr "ជាជម្រើស អ្នកអាចកំណត់ពាក្យសម្ងាត់មួយ ដូច្នេះតែមនុស្សដែលមានពាក្យសម្ងាត់ប៉ុណ្ណោះ អាចមើលប្រវត្តិរូបរបស់អ្នកតាមតំណបាន។"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "អត្ថបទផ្សព្វផ្សាយ"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "អ្នកបោះពុម្ពផ្សាយ"
|
msgstr "អ្នកបោះពុម្ពផ្សាយ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON ដើម"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "ដាក់ពិន្ទុម្តងទៀត"
|
msgstr "ដាក់ពិន្ទុម្តងទៀត"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "ប្រវត្តិរូបសង្ខេបដែលមានប
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "បានអានឯកសារភ្ជាប់"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "សូមអានការណែនាំអំពីការអនុវត្តរចនាប័ទ្មផ្ទាល់ខ្លួន។"
|
msgstr "សូមអានការណែនាំអំពីការអនុវត្តរចនាប័ទ្មផ្ទាល់ខ្លួន។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "បានអានប្រវត្តិរូបសង្ខេប"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "កំពុងអានការប្រកាសការងារ…"
|
msgstr "កំពុងអានការប្រកាសការងារ…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "ស្ដារឡើងវិញ"
|
msgstr "ស្ដារឡើងវិញ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ស្ដារប្រវត្តិរូបសង្ខេបទៅមុនបំណះនេះ? វានឹងរំកិលបំណះនេះ និងបំណះណាមួយដែលបានអនុវត្តបន្ទាប់ពីវា។"
|
msgstr "ស្ដារប្រវត្តិរូបសង្ខេបទៅស្ថានភាពមុនបំណះនេះ?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "ការវិភាគប្រវត្តិរូបបានបញ
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "ខ្លឹមសារនៃប្រវត្តិរូបសង្ខេប"
|
msgstr "ខ្លឹមសារនៃប្រវត្តិរូបសង្ខេប"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "ការកែសម្រួលប្រវត្តិរូបសង្ខេប"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ឯកសារប្រវត្តិរូបសង្ខេប"
|
msgstr "ឯកសារប្រវត្តិរូបសង្ខេប"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "ប្រវត្តិរូប"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "សាកល្បងម្តងទៀត"
|
msgstr "សាកល្បងម្តងទៀត"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "ពិនិត្យការកែសម្រួល"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "សូមពិនិត្យមើលប្រវត្តិរូបសង្ខេបជាមួយនឹងការពិពណ៌នាការងារ ហើយសួរខ្ញុំនូវសំណួរមុនពេលផ្លាស់ប្តូរផ្នែកដែលមិនច្បាស់លាស់។"
|
msgstr "សូមពិនិត្យមើលប្រវត្តិរូបសង្ខេបជាមួយនឹងការពិពណ៌នាការងារ ហើយសួរខ្ញុំនូវសំណួរមុនពេលផ្លាស់ប្តូរផ្នែកដែលមិនច្បាស់លាស់។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ពិនិត្យការកែសម្រួលនេះ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "សូមធ្វើការសង្ខេបឡើងវិញ ដើម្បីឱ្យវាផ្តោតលើតួនាទីជាអ្នកគ្រប់គ្រងវិស្វកម្មជាន់ខ្ពស់ ដោយមិនស្តាប់ទៅដូចជាទូទៅ។"
|
msgstr "សូមធ្វើការសង្ខេបឡើងវិញ ដើម្បីឱ្យវាផ្តោតលើតួនាទីជាអ្នកគ្រប់គ្រងវិស្វកម្មជាន់ខ្ពស់ ដោយមិនស្តាប់ទៅដូចជាទូទៅ។"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "មុំបង្វែរ"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "ដំណើរការវិភាគលើកដំបូងរបស់អ្នកដើម្បីទទួលបានតារាងពិន្ទុ ចំណុចខ្លាំង និងសំណើដែលបានកំណត់អាទិភាព។"
|
msgstr "ដំណើរការវិភាគលើកដំបូងរបស់អ្នកដើម្បីទទួលបានតារាងពិន្ទុ ចំណុចខ្លាំង និងសំណើដែលបានកំណត់អាទិភាព។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "កំពុងដំណើរការ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russian"
|
msgstr "Russian"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ប្រភព"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "កូដប្រភព"
|
msgstr "កូដប្រភព"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ប្រភព៖ {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ប្រភព"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "គម្លាត (ផ្ដេក)"
|
msgstr "គម្លាត (ផ្ដេក)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "មិនអាចបើកជំនួយការនេះបានទ
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "កាលបរិច្ឆេទនេះនឹងមិនត្រូវបានអានត្រឹមត្រូវទេ។"
|
msgstr "កាលបរិច្ឆេទនេះនឹងមិនត្រូវបានអានត្រឹមត្រូវទេ។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "សំណើកែសម្រួលនេះមិនអាចឆ្លើយតបបានទៀតទេ។"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "អាសយដ្ឋានអ៊ីមែលនេះនឹងមិនត្រូវបានទទួលស្គាល់ទេ។"
|
msgstr "អាសយដ្ឋានអ៊ីមែលនេះនឹងមិនត្រូវបានទទួលស្គាល់ទេ។"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "វានឹងជួយអ្នកកំណត់អត្តសញ្
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "វានឹងលុបធាតុទាំងអស់ចេញពីផ្នែកនេះ។"
|
msgstr "វានឹងលុបធាតុទាំងអស់ចេញពីផ្នែកនេះ។"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "វានឹងត្រឡប់បំណះនេះ និងបំណះទាំងអស់ដែលបានអនុវត្តបន្ទាប់ពីវាមកវិញ។"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "បិទបើករបារចំហៀងខាងស្តាំ"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "បិទ/បើកខ្សែស្រឡាយ"
|
msgstr "បិទ/បើកខ្សែស្រឡាយ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "ថូខឹន៖ {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "ថូខឹន៖ {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "ថូខឹន៖ {total} ({cached} ក្នុងឃ្លាំងសម្ងាត់)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "តាមដានការងារដែលអ្នកកំពុងដាក់ពាក្យ ហើយភ្ជាប់ប្រវត្តិរូបដែលបានផ្ញើ។"
|
msgstr "តាមដានការងារដែលអ្នកកំពុងដាក់ពាក្យ ហើយភ្ជាប់ប្រវត្តិរូបដែលបានផ្ញើ។"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "យើងមិនអាចរកឃើញទម្រង់ដោយស
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "យើងរកមិនឃើញទំព័រនោះទេ"
|
msgstr "យើងរកមិនឃើញទំព័រនោះទេ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ការស្វែងរកតាមអ៊ីនធឺណិត"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "បង្រួម"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "ಅರ್ಜಿಸಲಾಗಿದೆ"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "ಅರ್ಜಿ ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ"
|
msgstr "ಅರ್ಜಿ ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "ಅನುಮೋದಿಸಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "ಅನುಮೋದಿಸಲಾಗಿದೆ — ಏಜೆಂಟ್ಗಾಗಿ ಕಾಯಲಾಗುತ್ತಿದೆ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "ಅರೇಬಿಕ್"
|
msgstr "ಅರೇಬಿಕ್"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "ನಿಮ್ಮ API ಕೀಲಿಯನ್ನು ಅಳಿಸಲಾಗು
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅಳಿಸಲಾಗುತ್ತಿದೆ..."
|
msgstr "ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅಳಿಸಲಾಗುತ್ತಿದೆ..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "ನಿರಾಕರಿಸಲಾಗಿದೆ — ಏಜೆಂಟ್ಗಾಗಿ ಕಾಯಲಾಗುತ್ತಿದೆ…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "ನಿರಾಕರಿಸಿ"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "ನೀವು ಏನು ಮಾಡಿದ್ದೀರಿ ಎಂಬುದನ್ನು ವಿವರಿಸಿ ಆದ್ದರಿಂದ ನಮೂದು ಹೊಂದಾಣಿಕೆಗೆ ಕೀವರ್ಡ್ಗಳನ್ನು ಕೊಡುಗೆ ನೀಡುತ್ತದೆ."
|
msgstr "ನೀವು ಏನು ಮಾಡಿದ್ದೀರಿ ಎಂಬುದನ್ನು ವಿವರಿಸಿ ಆದ್ದರಿಂದ ನಮೂದು ಹೊಂದಾಣಿಕೆಗೆ ಕೀವರ್ಡ್ಗಳನ್ನು ಕೊಡುಗೆ ನೀಡುತ್ತದೆ."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "ದಾನ ಮಾಡಿ"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮ್ಗೆ ದೇಣಿಗೆ ನೀಡಿ"
|
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮ್ಗೆ ದೇಣಿಗೆ ನೀಡಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "ಮುಗಿದಿದೆ"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ಪೂರ್ಣಪರದೆ ಮೋಡ್ನಲ್ಲಿ ವಿಷಯ
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "ದಿನಾಂಕ ಸಂಪಾದಿಸಿ"
|
msgstr "ದಿನಾಂಕ ಸಂಪಾದಿಸಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "ಸಂಪಾದನೆ ನಿರಾಕರಿಸಲಾಗಿದೆ"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ಯಾವುದೇ ಕಾಯುವಿಕೆ ಅಥವಾ ವಿಳಂಬ
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png ರಫ್ತು ಮಾಡಲಾಗಿದೆ"
|
msgstr "pipeline-flow.png ರಫ್ತು ಮಾಡಲಾಗಿದೆ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ವಿಫಲವಾಗಿದೆ"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "ರೆಸ್ಯೂಮ್ ವಿಶ್ಲೇಷಣೆ ವಿಫಲವಾಗಿದೆ."
|
msgstr "ರೆಸ್ಯೂಮ್ ವಿಶ್ಲೇಷಣೆ ವಿಫಲವಾಗಿದೆ."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "ಪ್ರೊವೈಡರ್ ಅನ್ನು ಅನ್ಲಿಂಕ್
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "ಪೂರೈಕೆದಾರರನ್ನು ನವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ."
|
msgstr "ಪೂರೈಕೆದಾರರನ್ನು ನವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "ಥ್ರೆಡ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯುತ್ತದೆ"
|
msgstr "ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯುತ್ತದೆ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ಏಜೆಂಟ್ಗೆ ಐಚ್ಛಿಕ ಟಿಪ್ಪಣಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ಏಜೆಂಟ್ಗೆ ಐಚ್ಛಿಕ ಟಿಪ್ಪಣಿ…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "ಐಚ್ಛಿಕವಾಗಿ, ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸಿ, ಆಗ ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿರುವವರಿಗಷ್ಟೇ ಲಿಂಕ್ ಮೂಲಕ ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."
|
msgstr "ಐಚ್ಛಿಕವಾಗಿ, ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸಿ, ಆಗ ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿರುವವರಿಗಷ್ಟೇ ಲಿಂಕ್ ಮೂಲಕ ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "ಪ್ರಕಟನೆಗಳು"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "ಪ್ರಕಾಶಕರು"
|
msgstr "ಪ್ರಕಾಶಕರು"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "ಕಚ್ಚಾ JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "ಮರು ಅಂಕೀಕರಿಸಿ"
|
msgstr "ಮರು ಅಂಕೀಕರಿಸಿ"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "ಪ್ರತಿಕ್ರಿಯಾತ್ಮಕ ಪುನರಾರಂಭ v
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮೇ v4 (JSON)"
|
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮೇ v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "ಲಗತ್ತನ್ನು ಓದಲಾಗಿದೆ"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "ಕಸ್ಟಮ್ ಶೈಲಿಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಓದಿ."
|
msgstr "ಕಸ್ಟಮ್ ಶೈಲಿಗಳನ್ನು ಅನ್ವಯಿಸುವ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಓದಿ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "ರೆಸ್ಯೂಮ್ ಅನ್ನು ಓದಲಾಗಿದೆ"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "ಪೋಸ್ಟಿಂಗ್ ಓದಲಾಗುತ್ತಿದೆ…"
|
msgstr "ಪೋಸ್ಟಿಂಗ್ ಓದಲಾಗುತ್ತಿದೆ…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "ಮರುಸ್ಥಾಪಿಸಿ"
|
msgstr "ಮರುಸ್ಥಾಪಿಸಿ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ಈ ಪ್ಯಾಚ್ಗಿಂತ ಮೊದಲಿನ ಸ್ಥಿತಿಗೆ ರೆಸ್ಯೂಮ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದೇ? ಇದು ಈ ಪ್ಯಾಚ್ ಮತ್ತು ಅದರ ನಂತರ ಅನ್ವಯಿಸಲಾದ ಯಾವುದೇ ಪ್ಯಾಚ್ಗಳನ್ನು ಹಿಂದಕ್ಕೆ ತಿರುಗಿಸುತ್ತದೆ."
|
msgstr "ಈ ಪ್ಯಾಚ್ಗೆ ಮೊದಲಿನ ಸ್ಥಿತಿಗೆ ರೆಸ್ಯೂಮ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದೇ?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "ರೆಸ್ಯೂಮ್ ವಿಶ್ಲೇಷಣೆ ಪೂರ್ಣಗ
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "ವಿಷಯವನ್ನು ಪುನರಾರಂಭಿಸಿ"
|
msgstr "ವಿಷಯವನ್ನು ಪುನರಾರಂಭಿಸಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "ರೆಸ್ಯೂಮ್ ಸಂಪಾದನೆ"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ರೆಸ್ಯೂಮ್ ಫೈಲ್"
|
msgstr "ರೆಸ್ಯೂಮ್ ಫೈಲ್"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "ರೆಸ್ಯೂಮೇ"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "ಮರುಪ್ರಯತ್ನಿಸಿ"
|
msgstr "ಮರುಪ್ರಯತ್ನಿಸಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "ಸಂಪಾದನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "ಅನಿಶ್ಚಿತ ವಿಭಾಗಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲು, ಕೆಲಸದ ವಿವರಣೆಯೊಂದಿಗೆ ರೆಸ್ಯೂಮ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ನನಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ."
|
msgstr "ಅನಿಶ್ಚಿತ ವಿಭಾಗಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲು, ಕೆಲಸದ ವಿವರಣೆಯೊಂದಿಗೆ ರೆಸ್ಯೂಮ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ನನಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ಈ ಸಂಪಾದನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "ಸಾರಾಂಶವನ್ನು ಪುನಃ ಕೆಲಸ ಮಾಡಿ ಇದರಿಂದ ಅದು ಸಾಮಾನ್ಯವೆಂದು ತೋರದೆ ಹಿರಿಯ ಎಂಜಿನಿಯರಿಂಗ್ ವ್ಯವಸ್ಥಾಪಕ ಪಾತ್ರವನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಳ್ಳುತ್ತದೆ."
|
msgstr "ಸಾರಾಂಶವನ್ನು ಪುನಃ ಕೆಲಸ ಮಾಡಿ ಇದರಿಂದ ಅದು ಸಾಮಾನ್ಯವೆಂದು ತೋರದೆ ಹಿರಿಯ ಎಂಜಿನಿಯರಿಂಗ್ ವ್ಯವಸ್ಥಾಪಕ ಪಾತ್ರವನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಳ್ಳುತ್ತದೆ."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "ಭ್ರಮನ"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "ಸ್ಕೋರ್ಕಾರ್ಡ್, ಬಲಗಳು ಮತ್ತು ಆದ್ಯತೆಯ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಮೊದಲ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಚಲಾಯಿಸಿ."
|
msgstr "ಸ್ಕೋರ್ಕಾರ್ಡ್, ಬಲಗಳು ಮತ್ತು ಆದ್ಯತೆಯ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಮೊದಲ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಚಲಾಯಿಸಿ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "ಚಾಲನೆಯಲ್ಲಿದೆ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ರಷಿಯನ್"
|
msgstr "ರಷಿಯನ್"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ಮೂಲ"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "ಮೂಲ ಕೋಡ್"
|
msgstr "ಮೂಲ ಕೋಡ್"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ಮೂಲ: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ಮೂಲಗಳು"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "ಅಂತರ (ಅಡ್ಡ)"
|
msgstr "ಅಂತರ (ಅಡ್ಡ)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ಈ ಸಹಾಯಕವನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯ
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ಈ ದಿನಾಂಕವನ್ನು ಸರಿಯಾಗಿ ಓದಲಾಗುವುದಿಲ್ಲ."
|
msgstr "ಈ ದಿನಾಂಕವನ್ನು ಸರಿಯಾಗಿ ಓದಲಾಗುವುದಿಲ್ಲ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "ಈ ಸಂಪಾದನೆ ವಿನಂತಿಗೆ ಇನ್ನು ಮುಂದೆ ಉತ್ತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ಈ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಗುರುತಿಸಲಾಗುವುದಿಲ್ಲ."
|
msgstr "ಈ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಗುರುತಿಸಲಾಗುವುದಿಲ್ಲ."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "ನೀವು ಹಲವಾರು ಪಾಸ್ಕೀಗಳನ್ನು
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "ಇದು ಈ ವಿಭಾಗದಿಂದ ಎಲ್ಲಾ ಐಟಂಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."
|
msgstr "ಇದು ಈ ವಿಭಾಗದಿಂದ ಎಲ್ಲಾ ಐಟಂಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "ಇದು ಈ ಪ್ಯಾಚ್ ಮತ್ತು ಅದರ ನಂತರ ಅನ್ವಯಿಸಲಾದ ಎಲ್ಲಾ ಪ್ಯಾಚ್ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "ಬಲ ಸೈಡ್ಬಾರ್ ಟಾಗಲ್ ಮಾಡಿ"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "ಥ್ರೆಡ್ಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"
|
msgstr "ಥ್ರೆಡ್ಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "ಟೋಕನ್ಗಳು: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "ಟೋಕನ್ಗಳು: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "ಟೋಕನ್ಗಳು: {total} ({cached} ಕ್ಯಾಶ್ ಮಾಡಲಾಗಿದೆ)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "ನೀವು ಅರ್ಜಿ ಸಲ್ಲಿಸುತ್ತಿರುವ ಉದ್ಯೋಗವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ ಮತ್ತು ಕಳುಹಿಸಿದ ರೆಸ್ಯೂಮೆಯನ್ನು ಲಿಂಕ್ ಮಾಡಿ."
|
msgstr "ನೀವು ಅರ್ಜಿ ಸಲ್ಲಿಸುತ್ತಿರುವ ಉದ್ಯೋಗವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ ಮತ್ತು ಕಳುಹಿಸಿದ ರೆಸ್ಯೂಮೆಯನ್ನು ಲಿಂಕ್ ಮಾಡಿ."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "ನಮಗೆ ಸ್ವರೂಪವನ್ನು ಸ್ವಯಂಚಾಲ
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "ನಮಗೆ ಆ ಪುಟ ಸಿಗಲಿಲ್ಲ."
|
msgstr "ನಮಗೆ ಆ ಪುಟ ಸಿಗಲಿಲ್ಲ."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ವೆಬ್ ಹುಡುಕಾಟ"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ಜೂಲೂ"
|
msgstr "ಜೂಲೂ"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "지원함"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "지원일"
|
msgstr "지원일"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "승인"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "승인됨 — 에이전트를 기다리는 중…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "아랍어"
|
msgstr "아랍어"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API 키를 삭제하는 중입니다..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "이력서를 삭제하는 중입니다..."
|
msgstr "이력서를 삭제하는 중입니다..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "거부됨 — 에이전트를 기다리는 중…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "거부"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "항목이 일치하는 키워드에 기여하도록 수행한 작업을 설명하십시오."
|
msgstr "항목이 일치하는 키워드에 기여하도록 수행한 작업을 설명하십시오."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "기부하세요"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume에 기부하기"
|
msgstr "Reactive Resume에 기부하기"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "완료"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "전체 화면 모드에서 콘텐츠 편집"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "날짜 수정"
|
msgstr "날짜 수정"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "편집 거부됨"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "기다림이나 지연 없이 이력서를 즉시 PDF로 내보내세요
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png를 내보냈습니다"
|
msgstr "pipeline-flow.png를 내보냈습니다"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "실패"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "이력서를 분석하지 못했습니다."
|
msgstr "이력서를 분석하지 못했습니다."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "공급자 연결을 해제하지 못했습니다. 다시 시도하세요
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "공급자 업데이트에 실패했습니다."
|
msgstr "공급자 업데이트에 실패했습니다."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "스레드 설정을 업데이트하지 못했습니다."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "새 탭에서 열림"
|
msgstr "새 탭에서 열림"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "에이전트를 위한 메모(선택 사항)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "에이전트를 위한 메모(선택 사항)…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "원한다면 링크에 비밀번호를 설정해, 비밀번호를 아는 사람만 이력서를 볼 수 있도록 할 수 있습니다."
|
msgstr "원한다면 링크에 비밀번호를 설정해, 비밀번호를 아는 사람만 이력서를 볼 수 있도록 할 수 있습니다."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "출판물"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "발행인"
|
msgstr "발행인"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "원시 JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "다시 점수화"
|
msgstr "다시 점수화"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "반응형 재개 v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "리액티브 이력서 v4(JSON)"
|
msgstr "리액티브 이력서 v4(JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "첨부 파일을 읽음"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "사용자 지정 스타일 적용 가이드를 읽어보세요."
|
msgstr "사용자 지정 스타일 적용 가이드를 읽어보세요."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "이력서를 읽음"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "공고를 읽는 중…"
|
msgstr "공고를 읽는 중…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "복원하다"
|
msgstr "복원하다"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "이 패치 이전 상태로 복원하시겠습니까? 이렇게 하면 이 패치와 그 이후에 적용된 모든 패치가 롤백됩니다."
|
msgstr "이 패치 적용 이전 상태로 이력서를 복원하시겠습니까?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "이력서 분석 완료."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "이력서 내용"
|
msgstr "이력서 내용"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "이력서 편집"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "이력서 파일"
|
msgstr "이력서 파일"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "이력서"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "다시 해 보다"
|
msgstr "다시 해 보다"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "편집 검토"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "이력서를 직무 설명과 대조해 보고, 불확실한 부분을 수정하기 전에 저에게 질문해 주세요."
|
msgstr "이력서를 직무 설명과 대조해 보고, 불확실한 부분을 수정하기 전에 저에게 질문해 주세요."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "이 편집 검토"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "요약 내용을 수정하여 일반적인 느낌이 들지 않도록 선임 엔지니어링 관리자 직책을 구체적으로 나타내세요."
|
msgstr "요약 내용을 수정하여 일반적인 느낌이 들지 않도록 선임 엔지니어링 관리자 직책을 구체적으로 나타내세요."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "회전"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "첫 번째 분석을 실행하여 스코어카드, 강점, 우선순위가 지정된 제안을 확인하세요."
|
msgstr "첫 번째 분석을 실행하여 스코어카드, 강점, 우선순위가 지정된 제안을 확인하세요."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "실행 중…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "러시아어"
|
msgstr "러시아어"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "출처"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "소스 코드"
|
msgstr "소스 코드"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "소스: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "출처"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "간격(가로)"
|
msgstr "간격(가로)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "이 도우미를 열 수 없습니다."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "이 날짜는 올바르게 읽혀지지 않습니다."
|
msgstr "이 날짜는 올바르게 읽혀지지 않습니다."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "이 편집 요청에는 더 이상 응답할 수 없습니다."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "이 이메일 주소는 인식되지 않습니다."
|
msgstr "이 이메일 주소는 인식되지 않습니다."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "나중에 여러 개의 패스키를 사용하려는 경우 이를 식
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "이렇게 하면 이 섹션에서 모든 항목이 제거됩니다."
|
msgstr "이렇게 하면 이 섹션에서 모든 항목이 제거됩니다."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "이 패치와 그 이후에 적용된 모든 패치가 롤백됩니다."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "오른쪽 사이드바 토글"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "스레드 토글"
|
msgstr "스레드 토글"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "토큰: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "토큰: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "토큰: {total} ({cached} 캐시됨)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "지원 중인 공고를 추적하고 보낸 이력서를 연결하세요."
|
msgstr "지원 중인 공고를 추적하고 보낸 이력서를 연결하세요."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "형식을 자동으로 감지할 수 없습니다. 위에서 직접 선
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "해당 페이지를 찾을 수 없습니다."
|
msgstr "해당 페이지를 찾을 수 없습니다."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "웹 검색"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "축소"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "줄루어"
|
msgstr "줄루어"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Pateikta"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Pateikta"
|
msgstr "Pateikta"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Patvirtinti"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Patvirtinta — laukiama agento…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabų"
|
msgstr "Arabų"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Ištrinamas jūsų API raktas..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Jūsų gyvenimo aprašymas ištrinamas..."
|
msgstr "Jūsų gyvenimo aprašymas ištrinamas..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Atmesta — laukiama agento…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Atmesti"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Aprašykite, ką padarėte, kad įraše būtų pateikti atitikimo raktiniai žodžiai."
|
msgstr "Aprašykite, ką padarėte, kad įraše būtų pateikti atitikimo raktiniai žodžiai."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Paaukoti"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Paaukoti „Reactive Resume“"
|
msgstr "Paaukoti „Reactive Resume“"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Atlikta"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Turinio redagavimas viso ekrano režimu"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Redaguoti datą"
|
msgstr "Redaguoti datą"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Redagavimas atmestas"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksportuokite savo gyvenimo aprašymą į PDF formatą akimirksniu, be j
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png eksportuota"
|
msgstr "pipeline-flow.png eksportuota"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Nepavyko"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Nepavyko išanalizuoti atnaujinimo."
|
msgstr "Nepavyko išanalizuoti atnaujinimo."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Nepavyko atjungti paslaugų teikėjo. Bandykite dar kartą."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Nepavyko atnaujinti teikėjo."
|
msgstr "Nepavyko atnaujinti teikėjo."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nepavyko atnaujinti temos nustatymų."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "\"OpenRouter\""
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "atidaro naujame skirtuke"
|
msgstr "atidaro naujame skirtuke"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Neprivaloma pastaba agentui"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Neprivaloma pastaba agentui…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Papildomai galite nustatyti slaptažodį, kad per nuorodą gyvenimo aprašymą matytų tik slaptažodį žinantys žmonės."
|
msgstr "Papildomai galite nustatyti slaptažodį, kad per nuorodą gyvenimo aprašymą matytų tik slaptažodį žinantys žmonės."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikacijos"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Leidėjas"
|
msgstr "Leidėjas"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Neapdorotas JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Vertinti iš naujo"
|
msgstr "Vertinti iš naujo"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktyvus gyvenimo aprašymas v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktyvusis CV v4 (JSON)"
|
msgstr "Reaktyvusis CV v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Perskaitė priedą"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Perskaitykite vadovą „Pasirinktinių stilių taikymas“."
|
msgstr "Perskaitykite vadovą „Pasirinktinių stilių taikymas“."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Perskaitė gyvenimo aprašymą"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Skaitomas skelbimas…"
|
msgstr "Skaitomas skelbimas…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Atkurti"
|
msgstr "Atkurti"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Atkurti gyvenimo aprašymą į ankstesnę būseną? Tai anuliuos šį ir visus po jo pritaikytus pataisymus."
|
msgstr "Atkurti gyvenimo aprašymą į būseną prieš šį pataisymą?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Baigta gyvenimo aprašymo analizė."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Gyvenimo aprašymo turinys"
|
msgstr "Gyvenimo aprašymo turinys"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Gyvenimo aprašymo redagavimas"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Gyvenimo aprašymo failas"
|
msgstr "Gyvenimo aprašymo failas"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Gyvenimo aprašymai"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Bandyti dar kartą"
|
msgstr "Bandyti dar kartą"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Peržiūrėti redagavimus"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Peržiūrėkite gyvenimo aprašymą pagal pareigybės aprašymą ir užduokite man klausimus prieš keisdami neaiškias dalis."
|
msgstr "Peržiūrėkite gyvenimo aprašymą pagal pareigybės aprašymą ir užduokite man klausimus prieš keisdami neaiškias dalis."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Peržiūrėti šį redagavimą"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Pertvarkykite santrauką taip, kad ji būtų skirta vyresniojo inžinerijos vadovo pareigoms, bet neskambėtų bendro pobūdžio."
|
msgstr "Pertvarkykite santrauką taip, kad ji būtų skirta vyresniojo inžinerijos vadovo pareigoms, bet neskambėtų bendro pobūdžio."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Sukimas"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Atlikite pirmąją analizę, kad gautumėte rezultatų lentelę, stipriąsias puses ir prioritetinius pasiūlymus."
|
msgstr "Atlikite pirmąją analizę, kad gautumėte rezultatų lentelę, stipriąsias puses ir prioritetinius pasiūlymus."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Vykdoma…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusų"
|
msgstr "Rusų"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Šaltinis"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Programos kodas"
|
msgstr "Programos kodas"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Šaltinis: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Šaltiniai"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Tarpai (horizontalūs)"
|
msgstr "Tarpai (horizontalūs)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Šio asistento atidaryti nepavyko."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ši data nebus perskaityta teisingai."
|
msgstr "Ši data nebus perskaityta teisingai."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Į šią redagavimo užklausą nebegalima atsakyti."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Šis el. pašto adresas nebus atpažintas."
|
msgstr "Šis el. pašto adresas nebus atpažintas."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Jei planuojate turėti kelis slaptažodžius, tai padės vėliau juos nu
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Taip iš šio skyriaus bus pašalinti visi elementai."
|
msgstr "Taip iš šio skyriaus bus pašalinti visi elementai."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Tai atšauks šį pataisymą ir visus po jo pritaikytus pataisymus."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Dešiniosios šoninės juostos perjungimas"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Perjungti gijas"
|
msgstr "Perjungti gijas"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Žetonai: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Žetonai: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Žetonai: {total} ({cached} talpykloje)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Sekite darbą, į kurį kandidatuojate, ir susiekite išsiųstą gyvenimo aprašymą."
|
msgstr "Sekite darbą, į kurį kandidatuojate, ir susiekite išsiųstą gyvenimo aprašymą."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nepavyko automatiškai aptikti formato – pasirinkite jį aukščiau."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nepavyko rasti to puslapio"
|
msgstr "Nepavyko rasti to puslapio"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Žiniatinklio paieška"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Tolinti"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulų"
|
msgstr "Zulų"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Pieteikts"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Pieteikts"
|
msgstr "Pieteikts"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Apstiprināt"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Apstiprināts — gaida aģentu…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arābu"
|
msgstr "Arābu"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Tiek dzēsta jūsu API atslēga..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Tiek dzēsts jūsu CV..."
|
msgstr "Tiek dzēsts jūsu CV..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Noraidīts — gaida aģentu…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Noraidīt"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Aprakstiet, ko darījāt, lai ierakstā tiktu izmantoti atbilstības atslēgvārdi."
|
msgstr "Aprakstiet, ko darījāt, lai ierakstā tiktu izmantoti atbilstības atslēgvārdi."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Ziedot"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Ziedot Reactive Resume"
|
msgstr "Ziedot Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Pabeigts"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Satura rediģēšana pilnekrāna režīmā"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Rediģēt datumu"
|
msgstr "Rediģēt datumu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Labojums noraidīts"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksportējiet savu CV PDF formātā acumirklī, bez gaidīšanas vai kav
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png eksportēts"
|
msgstr "pipeline-flow.png eksportēts"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Neizdevās"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Neizdevās analizēt atsākšanu."
|
msgstr "Neizdevās analizēt atsākšanu."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Neizdevās atvienot pakalpojumu sniedzēju. Lūdzu, mēģiniet vēlreiz.
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Neizdevās atjaunināt pakalpojumu sniedzēju."
|
msgstr "Neizdevās atjaunināt pakalpojumu sniedzēju."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Neizdevās atjaunināt pavediena iestatījumus."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "atveras jaunā cilnē"
|
msgstr "atveras jaunā cilnē"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Neobligāta piezīme aģentam"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Neobligāta piezīme aģentam…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Pēc izvēles varat iestatīt paroli, lai tikai cilvēki ar paroli varētu skatīt jūsu CV, izmantojot saiti."
|
msgstr "Pēc izvēles varat iestatīt paroli, lai tikai cilvēki ar paroli varētu skatīt jūsu CV, izmantojot saiti."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikācijas"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Izdevējs"
|
msgstr "Izdevējs"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Neapstrādāts JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Vērtēt atkārtoti"
|
msgstr "Vērtēt atkārtoti"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktīvs CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Izlasīja pielikumu"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Izlasiet rokasgrāmatu Pielāgotu stilu lietošana."
|
msgstr "Izlasiet rokasgrāmatu Pielāgotu stilu lietošana."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Izlasīja CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Notiek sludinājuma lasīšana…"
|
msgstr "Notiek sludinājuma lasīšana…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Atjaunot"
|
msgstr "Atjaunot"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Vai atjaunot CV versiju pirms šī ielāpa? Tādējādi tiks atiestatīts gan šis ielāps, gan visi pēc tā lietotie ielāpi."
|
msgstr "Vai atjaunot CV stāvoklī pirms šī ielāpa?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV analīze pabeigta."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV saturs"
|
msgstr "CV saturs"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV labojums"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV fails"
|
msgstr "CV fails"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Mēģināt vēlreiz"
|
msgstr "Mēģināt vēlreiz"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Pārskatīt labojumus"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Salīdzini CV ar amata aprakstu un uzdod man jautājumus, pirms maināt neskaidrās sadaļas."
|
msgstr "Salīdzini CV ar amata aprakstu un uzdod man jautājumus, pirms maināt neskaidrās sadaļas."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Pārskatīt šo labojumu"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Pārstrādājiet kopsavilkumu, lai tas būtu paredzēts vecākā inženierzinātņu vadītāja amatam, neizklausoties vispārīgi."
|
msgstr "Pārstrādājiet kopsavilkumu, lai tas būtu paredzēts vecākā inženierzinātņu vadītāja amatam, neizklausoties vispārīgi."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotācija"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Veiciet pirmo analīzi, lai iegūtu rezultātu tabulu, stiprās puses un prioritizētus ieteikumus."
|
msgstr "Veiciet pirmo analīzi, lai iegūtu rezultātu tabulu, stiprās puses un prioritizētus ieteikumus."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Darbojas…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Krievu"
|
msgstr "Krievu"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Avots"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Pirmkods"
|
msgstr "Pirmkods"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Avots: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Avoti"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Atstatums (horizontāli)"
|
msgstr "Atstatums (horizontāli)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Šo palīgu nevarēja atvērt."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Šis datums netiks nolasīts pareizi."
|
msgstr "Šis datums netiks nolasīts pareizi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Uz šo rediģēšanas pieprasījumu vairs nevar atbildēt."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Šī e-pasta adrese netiks atpazīta."
|
msgstr "Šī e-pasta adrese netiks atpazīta."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Tas palīdzēs to identificēt vēlāk, ja plānojat izmantot vairākus
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Tādējādi no šīs sadaļas tiks noņemti visi elementi."
|
msgstr "Tādējādi no šīs sadaļas tiks noņemti visi elementi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Tas atsauks šo ielāpu un visus pēc tā lietotos ielāpus."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Pārslēgt labo sānjjoslu"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Pārslēgt pavedienus"
|
msgstr "Pārslēgt pavedienus"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokeni: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokeni: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokeni: {total} ({cached} kešatmiņā)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Sekojiet darbam, uz kuru piesakāties, un piesaistiet nosūtīto CV."
|
msgstr "Sekojiet darbam, uz kuru piesakāties, un piesaistiet nosūtīto CV."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Mēs nevarējām automātiski noteikt formātu — lūdzu, izvēlieties
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Mēs nevarējām atrast šo lapu."
|
msgstr "Mēs nevarējām atrast šo lapu."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Meklēšana tīmeklī"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Tālināt"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "അപേക്ഷിച്ചു"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "പ്രയോഗിച്ചു"
|
msgstr "പ്രയോഗിച്ചു"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "അംഗീകരിക്കുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "അംഗീകരിച്ചു — ഏജന്റിനായി കാത്തിരിക്കുന്നു…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "അറബിക്"
|
msgstr "അറബിക്"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "നിങ്ങളുടെ API കീ ഡിലീറ്റ് ചെ
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "നിങ്ങളുടെ റിസ്യൂം ഡിലീറ്റ് ചെയ്യുന്നു..."
|
msgstr "നിങ്ങളുടെ റിസ്യൂം ഡിലീറ്റ് ചെയ്യുന്നു..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "നിരസിച്ചു — ഏജന്റിനായി കാത്തിരിക്കുന്നു…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "നിരസിക്കുക"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "നിങ്ങൾ എന്താണ് ചെയ്തതെന്ന് വിവരിക്കുക, അതിനാൽ എൻട്രി പൊരുത്തപ്പെടുത്തുന്നതിന് കീവേഡുകൾ സംഭാവന ചെയ്യുന്നു."
|
msgstr "നിങ്ങൾ എന്താണ് ചെയ്തതെന്ന് വിവരിക്കുക, അതിനാൽ എൻട്രി പൊരുത്തപ്പെടുത്തുന്നതിന് കീവേഡുകൾ സംഭാവന ചെയ്യുന്നു."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "സംഭാവന ചെയ്യുക"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume‑ന് സംഭാവന ചെയ്യുക"
|
msgstr "Reactive Resume‑ന് സംഭാവന ചെയ്യുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "പൂർത്തിയായി"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ഉള്ളടക്കം ഫുൾസ്ക്രീൻ മോഡി
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "തീയതി തിരുത്തുക"
|
msgstr "തീയതി തിരുത്തുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "എഡിറ്റ് നിരസിച്ചു"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "കാത്തിരിപ്പോ കാലതാമസമോ ഇല
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "കയറ്റുമതി ചെയ്ത പൈപ്പ്ലൈൻ-ഫ്ലോ.png"
|
msgstr "കയറ്റുമതി ചെയ്ത പൈപ്പ്ലൈൻ-ഫ്ലോ.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "പരാജയപ്പെട്ടു"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "റെസ്യൂമെ വിശകലനം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു."
|
msgstr "റെസ്യൂമെ വിശകലനം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "പ്രൊവൈഡർ അൺലിങ്ക് ചെയ്യുന
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "ദാതാവിനെ അപ്ഡേറ്റ് ചെയ്യാനായില്ല."
|
msgstr "ദാതാവിനെ അപ്ഡേറ്റ് ചെയ്യാനായില്ല."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "ത്രെഡ് ക്രമീകരണങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ഓപ്പൺ റൂട്ടർ"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "പുതിയ ടാബിൽ തുറക്കും"
|
msgstr "പുതിയ ടാബിൽ തുറക്കും"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ഏജന്റിനുള്ള ഓപ്ഷണൽ കുറിപ്പ്"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ഏജന്റിനുള്ള ഓപ്ഷണൽ കുറിപ്പ്…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "ഓപ്ഷണലായി, ലിങ്ക് വഴി നിങ്ങളുടെ റിസ്യൂം കാണാൻ പാസ്വേഡ് ഉള്ളവർക്കു മാത്രമാകുന്നതിനായി ഒരു പാസ്വേഡ് സജ്ജമാക്കാം."
|
msgstr "ഓപ്ഷണലായി, ലിങ്ക് വഴി നിങ്ങളുടെ റിസ്യൂം കാണാൻ പാസ്വേഡ് ഉള്ളവർക്കു മാത്രമാകുന്നതിനായി ഒരു പാസ്വേഡ് സജ്ജമാക്കാം."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "പ്രസിദ്ധീകരണങ്ങൾ"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "പ്രസാധകൻ"
|
msgstr "പ്രസാധകൻ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "റോ JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "വീണ്ടും സ്കോർ ചെയ്യുക"
|
msgstr "വീണ്ടും സ്കോർ ചെയ്യുക"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "റിയാക്ടീവ് റെസ്യൂമെ v<0>{__APP_VERSI
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "റിയാക്ടീവ് റെസ്യൂമെ v4 (ജെസൺ)"
|
msgstr "റിയാക്ടീവ് റെസ്യൂമെ v4 (ജെസൺ)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "ഒരു അറ്റാച്ച്മെന്റ് വായിച്ചു"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "ഇഷ്ടാനുസൃത ശൈലികൾ പ്രയോഗിക്കുന്നതിനുള്ള ഗൈഡ് വായിക്കുക."
|
msgstr "ഇഷ്ടാനുസൃത ശൈലികൾ പ്രയോഗിക്കുന്നതിനുള്ള ഗൈഡ് വായിക്കുക."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "റിസ്യൂം വായിച്ചു"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "പോസ്റ്റിംഗ് വായിക്കുന്നു…"
|
msgstr "പോസ്റ്റിംഗ് വായിക്കുന്നു…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "പുനഃസ്ഥാപിക്കുക"
|
msgstr "പുനഃസ്ഥാപിക്കുക"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ഈ പാച്ചിന് മുമ്പുള്ളതിലേക്ക് റെസ്യൂമെ പുനഃസ്ഥാപിക്കണോ? ഇത് ഈ പാച്ചും അതിനു ശേഷം പ്രയോഗിക്കുന്ന ഏതെങ്കിലും പാച്ചുകളും പഴയപടിയാക്കും."
|
msgstr "ഈ പാച്ചിന് മുമ്പുള്ള നിലയിലേക്ക് റിസ്യൂം പുനഃസ്ഥാപിക്കണോ?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "റെസ്യൂമെ വിശകലനം പൂർത്തിയ
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "ഉള്ളടക്കം പുനരാരംഭിക്കുക"
|
msgstr "ഉള്ളടക്കം പുനരാരംഭിക്കുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "റിസ്യൂം എഡിറ്റ്"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "റെസ്യൂമേ ഫയൽ"
|
msgstr "റെസ്യൂമേ ഫയൽ"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "റിസ്യൂങ്ങൾ"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "വീണ്ടും ശ്രമിക്കുക"
|
msgstr "വീണ്ടും ശ്രമിക്കുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "എഡിറ്റുകൾ അവലോകനം ചെയ്യുക"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "ജോലി വിവരണവുമായി പൊരുത്തപ്പെടുന്ന വിധത്തിൽ റെസ്യൂമെ പരിശോധിച്ച്, അനിശ്ചിതമായ വിഭാഗങ്ങൾ മാറ്റുന്നതിനുമുമ്പ് എന്നോട് ചോദ്യങ്ങൾ ചോദിക്കുക."
|
msgstr "ജോലി വിവരണവുമായി പൊരുത്തപ്പെടുന്ന വിധത്തിൽ റെസ്യൂമെ പരിശോധിച്ച്, അനിശ്ചിതമായ വിഭാഗങ്ങൾ മാറ്റുന്നതിനുമുമ്പ് എന്നോട് ചോദ്യങ്ങൾ ചോദിക്കുക."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ഈ എഡിറ്റ് അവലോകനം ചെയ്യുക"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "പൊതുവായി തോന്നാതെ ഒരു സീനിയർ എഞ്ചിനീയറിംഗ് മാനേജർ റോളിനെ ലക്ഷ്യം വയ്ക്കുന്ന തരത്തിൽ സംഗ്രഹം പുനഃക്രമീകരിക്കുക."
|
msgstr "പൊതുവായി തോന്നാതെ ഒരു സീനിയർ എഞ്ചിനീയറിംഗ് മാനേജർ റോളിനെ ലക്ഷ്യം വയ്ക്കുന്ന തരത്തിൽ സംഗ്രഹം പുനഃക്രമീകരിക്കുക."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "ററോട്ടേഷൻ"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "നിങ്ങളുടെ ആദ്യ വിശകലനം നടത്തി ഒരു സ്കോർകാർഡ്, ശക്തികൾ, മുൻഗണനാ നിർദ്ദേശങ്ങൾ എന്നിവ നേടുക."
|
msgstr "നിങ്ങളുടെ ആദ്യ വിശകലനം നടത്തി ഒരു സ്കോർകാർഡ്, ശക്തികൾ, മുൻഗണനാ നിർദ്ദേശങ്ങൾ എന്നിവ നേടുക."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "പ്രവർത്തിക്കുന്നു…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "റഷ്യൻ"
|
msgstr "റഷ്യൻ"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ഉറവിടം"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "സോഴ്സ് কোഡ്"
|
msgstr "സോഴ്സ് কোഡ്"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ഉറവിടം: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ഉറവിടങ്ങൾ"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "സ്പേസിംഗ് (തിരശ്ചീനം)"
|
msgstr "സ്പേസിംഗ് (തിരശ്ചീനം)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ഈ അസിസ്റ്റന്റ് തുറക്കാൻ കഴ
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ഈ തീയതി ശരിയായി വായിക്കില്ല."
|
msgstr "ഈ തീയതി ശരിയായി വായിക്കില്ല."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "ഈ എഡിറ്റ് അഭ്യർത്ഥനയ്ക്ക് ഇനി ഉത്തരം നൽകാൻ കഴിയില്ല."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ഈ ഇമെയിൽ വിലാസം തിരിച്ചറിയപ്പെടില്ല."
|
msgstr "ഈ ഇമെയിൽ വിലാസം തിരിച്ചറിയപ്പെടില്ല."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "നിങ്ങൾ ഒന്നിലധികം പാസ്കീ
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "ഇത് ഈ വിഭാഗത്തിലെ എല്ലാ ഇനങ്ങളും നീക്കം ചെയ്യും."
|
msgstr "ഇത് ഈ വിഭാഗത്തിലെ എല്ലാ ഇനങ്ങളും നീക്കം ചെയ്യും."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "ഇത് ഈ പാച്ചും അതിനുശേഷം പ്രയോഗിച്ച എല്ലാ പാച്ചുകളും തിരികെ റോൾ ചെയ്യും."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "വലത് സൈഡ്ബാർ ഓൺ/ഓഫ് ചെയ്യു
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "ത്രെഡുകൾ ടോഗിൾ ചെയ്യുക"
|
msgstr "ത്രെഡുകൾ ടോഗിൾ ചെയ്യുക"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "ടോക്കണുകൾ: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "ടോക്കണുകൾ: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "ടോക്കണുകൾ: {total} ({cached} കാഷെ ചെയ്തത്)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "നിങ്ങൾ അപേക്ഷിക്കുന്ന ജോലി ട്രാക്ക് ചെയ്യുകയും നിങ്ങൾ അയച്ച റെസ്യൂമെ ലിങ്ക് ചെയ്യുകയും ചെയ്യുക."
|
msgstr "നിങ്ങൾ അപേക്ഷിക്കുന്ന ജോലി ട്രാക്ക് ചെയ്യുകയും നിങ്ങൾ അയച്ച റെസ്യൂമെ ലിങ്ക് ചെയ്യുകയും ചെയ്യുക."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "ഞങ്ങൾക്ക് ഫോർമാറ്റ് സ്വയമ
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "ഞങ്ങൾക്ക് ആ പേജ് കണ്ടെത്താൻ കഴിഞ്ഞില്ല."
|
msgstr "ഞങ്ങൾക്ക് ആ പേജ് കണ്ടെത്താൻ കഴിഞ്ഞില്ല."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "വെബ് തിരയൽ"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "സൂം ഔട്ട് ചെയ്യുക"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "സൂളു"
|
msgstr "സൂളു"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "अर्ज केला"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "वर अर्ज केला"
|
msgstr "वर अर्ज केला"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "मंजूर करा"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "मंजूर केले — एजंटची वाट पाहत आहे…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "अरबी"
|
msgstr "अरबी"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "तुमची API key हटवली जात आहे..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "तुमचा रेझ्युमे हटवला जात आहे..."
|
msgstr "तुमचा रेझ्युमे हटवला जात आहे..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "नाकारले — एजंटची वाट पाहत आहे…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "नाकारा"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "तुम्ही काय केले याचे वर्णन करा जेणेकरून एंट्री जुळण्यासाठी कीवर्डचे योगदान देते."
|
msgstr "तुम्ही काय केले याचे वर्णन करा जेणेकरून एंट्री जुळण्यासाठी कीवर्डचे योगदान देते."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "दान करा"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "रिअॅक्टिव्ह रेझ्युमेला दान करा"
|
msgstr "रिअॅक्टिव्ह रेझ्युमेला दान करा"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "पूर्ण झाले"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "पूर्णस्क्रीन मोडमध्ये साम
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "तारीख संपादित करा"
|
msgstr "तारीख संपादित करा"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "संपादन नाकारले"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "कोणताही विलंब न होता, तुमचा
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "निर्यात केलेली पाइपलाइन-प्रवाह.png"
|
msgstr "निर्यात केलेली पाइपलाइन-प्रवाह.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "अयशस्वी"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "बायोडाटाचे विश्लेषण करण्यात अयशस्वी."
|
msgstr "बायोडाटाचे विश्लेषण करण्यात अयशस्वी."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "प्रदात्याचे अनलिंक करण्या
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "प्रोव्हायडर अद्ययावत करण्यात अयशस्वी."
|
msgstr "प्रोव्हायडर अद्ययावत करण्यात अयशस्वी."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "थ्रेड सेटिंग्ज अपडेट करता आल्या नाहीत."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ओपनराऊटर"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "नवीन टॅबमध्ये उघडतो"
|
msgstr "नवीन टॅबमध्ये उघडतो"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "एजंटसाठी ऐच्छिक टीप"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "एजंटसाठी ऐच्छिक टीप…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "पर्यायी पद्धतीने, पासवर्ड सेट करा जेणेकरून लिंकद्वारे फक्त पासवर्ड माहित असलेले लोकच तुमचा रेझ्युमे पाहू शकतील."
|
msgstr "पर्यायी पद्धतीने, पासवर्ड सेट करा जेणेकरून लिंकद्वारे फक्त पासवर्ड माहित असलेले लोकच तुमचा रेझ्युमे पाहू शकतील."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "प्रकाशने"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "प्रकाशक"
|
msgstr "प्रकाशक"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "रॉ JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "री-स्कोअर"
|
msgstr "री-स्कोअर"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "रिॲक्टिव्ह रिझ्युमे v<0>{__APP_VERSI
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "संलग्नक वाचले"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "कस्टम स्टाईल लागू करण्याविषयीची मार्गदर्शिका वाचा."
|
msgstr "कस्टम स्टाईल लागू करण्याविषयीची मार्गदर्शिका वाचा."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "रेझ्युमे वाचला"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "जाहिरात वाचत आहे…"
|
msgstr "जाहिरात वाचत आहे…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "पुनर्संचयित करा"
|
msgstr "पुनर्संचयित करा"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "या पॅचच्या आधीची स्थिती पुन्हा सुरू करायची आहे का? असे केल्यास हा पॅच आणि त्यानंतर लागू केलेले कोणतेही पॅचेस पूर्ववत होतील."
|
msgstr "या पॅचपूर्वीच्या स्थितीत रेझ्युमे पुनर्संचयित करायचा?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "रेझ्युमे विश्लेषण पूर्ण झा
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "रिझ्युमेमधील मजकूर"
|
msgstr "रिझ्युमेमधील मजकूर"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "रेझ्युमे संपादन"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "रेझ्युमे फाइल"
|
msgstr "रेझ्युमे फाइल"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "रेझ्युमे"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "पुन्हा प्रयत्न करा"
|
msgstr "पुन्हा प्रयत्न करा"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "संपादनांचे पुनरावलोकन करा"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "नोकरीच्या वर्णनानुसार रेझ्युमे तपासा आणि शंकास्पद भाग बदलण्यापूर्वी मला प्रश्न विचारा."
|
msgstr "नोकरीच्या वर्णनानुसार रेझ्युमे तपासा आणि शंकास्पद भाग बदलण्यापूर्वी मला प्रश्न विचारा."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "या संपादनाचे पुनरावलोकन करा"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "सारांशाची पुनर्रचना करा जेणेकरून तो सर्वसाधारण न वाटता वरिष्ठ अभियांत्रिकी व्यवस्थापकाच्या भूमिकेला लक्ष्य करेल."
|
msgstr "सारांशाची पुनर्रचना करा जेणेकरून तो सर्वसाधारण न वाटता वरिष्ठ अभियांत्रिकी व्यवस्थापकाच्या भूमिकेला लक्ष्य करेल."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "रोटेशन"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "तुमचे पहिले विश्लेषण चालवा आणि स्कोरकार्ड, सामर्थ्ये आणि प्राधान्यक्रमाने सुचवलेल्या सूचना मिळवा."
|
msgstr "तुमचे पहिले विश्लेषण चालवा आणि स्कोरकार्ड, सामर्थ्ये आणि प्राधान्यक्रमाने सुचवलेल्या सूचना मिळवा."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "चालू आहे…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "रशियन"
|
msgstr "रशियन"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "स्त्रोत"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "स्रोत कोड"
|
msgstr "स्रोत कोड"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "स्त्रोत: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "स्त्रोत"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "स्पेसिंग (आडवे)"
|
msgstr "स्पेसिंग (आडवे)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "हा असिस्टंट उघडता आला नाही."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ही तारीख बरोबर वाचली जाणार नाही."
|
msgstr "ही तारीख बरोबर वाचली जाणार नाही."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "या संपादन विनंतीला आता उत्तर देता येणार नाही."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "हा ईमेल पत्ता ओळखला जाणार नाही."
|
msgstr "हा ईमेल पत्ता ओळखला जाणार नाही."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "जर तुम्ही अनेक पासकी ठेवण्
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "यामुळे या विभागातील सर्व आयटम हटवले जातील."
|
msgstr "यामुळे या विभागातील सर्व आयटम हटवले जातील."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "यामुळे हा पॅच आणि त्यानंतर लावलेले सर्व पॅच मागे घेतले जातील."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "उजव्या साइडबारची टॉगल"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "थ्रेड्स टॉगल करा"
|
msgstr "थ्रेड्स टॉगल करा"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "टोकन: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "टोकन: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "टोकन: {total} ({cached} कॅश केलेले)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "तुम्ही अर्ज करत असलेल्या नोकरीचा मागोवा घ्या आणि तुम्ही पाठवलेल्या रेझ्युमेशी लिंक करा."
|
msgstr "तुम्ही अर्ज करत असलेल्या नोकरीचा मागोवा घ्या आणि तुम्ही पाठवलेल्या रेझ्युमेशी लिंक करा."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "आम्ही फॉरमॅट आपोआप ओळखू शक
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "आम्हाला ते पान सापडले नाही."
|
msgstr "आम्हाला ते पान सापडले नाही."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "वेब शोध"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "बाहेर झूम करा"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "झुलू"
|
msgstr "झुलू"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Dimohon"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Digunakan pada"
|
msgstr "Digunakan pada"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Luluskan"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Diluluskan — menunggu ejen…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Bahasa Arab"
|
msgstr "Bahasa Arab"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Memadam kunci API anda..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Memadam resume anda..."
|
msgstr "Memadam resume anda..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Ditolak — menunggu ejen…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Tolak"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Terangkan perkara yang anda lakukan supaya entri menyumbang kata kunci untuk pemadanan."
|
msgstr "Terangkan perkara yang anda lakukan supaya entri menyumbang kata kunci untuk pemadanan."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Derma"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Derma kepada Reactive Resume"
|
msgstr "Derma kepada Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Selesai"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Sunting kandungan dalam mod skrin penuh"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edit tarikh"
|
msgstr "Edit tarikh"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Suntingan ditolak"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksport resume anda ke PDF serta-merta, tanpa sebarang menunggu atau ber
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Aliran saluran paip yang dieksport.png"
|
msgstr "Aliran saluran paip yang dieksport.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Gagal"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Gagal menganalisis resume."
|
msgstr "Gagal menganalisis resume."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Gagal menyahpaut penyedia. Sila cuba lagi."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Gagal mengemas kini pembekal."
|
msgstr "Gagal mengemas kini pembekal."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Gagal mengemas kini tetapan bebenang."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "dibuka dalam tab baharu"
|
msgstr "dibuka dalam tab baharu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota pilihan untuk ejen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota pilihan untuk ejen…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Secara pilihan, tetapkan kata laluan supaya hanya orang yang mempunyai kata laluan boleh melihat resume anda melalui pautan tersebut."
|
msgstr "Secara pilihan, tetapkan kata laluan supaya hanya orang yang mempunyai kata laluan boleh melihat resume anda melalui pautan tersebut."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Penerbitan"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Penerbit"
|
msgstr "Penerbit"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON mentah"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Skor semula"
|
msgstr "Skor semula"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Resume Reaktif v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktif Resume v4 (JSON)"
|
msgstr "Reaktif Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Membaca lampiran"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Baca panduan Menggunakan Gaya Tersuai."
|
msgstr "Baca panduan Menggunakan Gaya Tersuai."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Membaca resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Membaca iklan kerja…"
|
msgstr "Membaca iklan kerja…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Pulihkan"
|
msgstr "Pulihkan"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Pulihkan resume ke tahap sebelum tampalan ini? Ini akan mengembalikan tampalan ini dan sebarang tampalan yang digunakan selepasnya."
|
msgstr "Pulihkan resume ke keadaan sebelum tampalan ini?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analisis resume selesai."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Kandungan resume"
|
msgstr "Kandungan resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Suntingan resume"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Fail resume"
|
msgstr "Fail resume"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Resume"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Cuba semula"
|
msgstr "Cuba semula"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Semak suntingan"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Semak resume berdasarkan huraian kerja dan ajukan soalan kepada saya sebelum menukar bahagian yang tidak pasti."
|
msgstr "Semak resume berdasarkan huraian kerja dan ajukan soalan kepada saya sebelum menukar bahagian yang tidak pasti."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Semak suntingan ini"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Ubah suai ringkasan supaya ia menyasarkan peranan pengurus kejuruteraan kanan tanpa kedengaran generik."
|
msgstr "Ubah suai ringkasan supaya ia menyasarkan peranan pengurus kejuruteraan kanan tanpa kedengaran generik."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Putaran"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Jalankan analisis pertama anda untuk mendapatkan kad skor, kekuatan, dan cadangan yang diutamakan."
|
msgstr "Jalankan analisis pertama anda untuk mendapatkan kad skor, kekuatan, dan cadangan yang diutamakan."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Sedang berjalan…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusia"
|
msgstr "Rusia"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Sumber"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kod Sumber"
|
msgstr "Kod Sumber"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Sumber: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Sumber"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Jarak (Mengufuk)"
|
msgstr "Jarak (Mengufuk)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Pembantu ini tidak dapat dibuka."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Tarikh ini tidak akan dibaca dengan betul."
|
msgstr "Tarikh ini tidak akan dibaca dengan betul."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Permintaan suntingan ini tidak lagi boleh dijawab."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Alamat e-mel ini tidak akan dikenali."
|
msgstr "Alamat e-mel ini tidak akan dikenali."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Ini akan membantu anda mengenalinya kemudian, jika anda merancang untuk
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Ini akan membuang semua item daripada bahagian ini."
|
msgstr "Ini akan membuang semua item daripada bahagian ini."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Ini akan menggulung ke belakang tampalan ini dan semua tampalan yang digunakan selepasnya."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Togol bar sisi kanan"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Togol thread"
|
msgstr "Togol thread"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token: {total} ({cached} dalam cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Jejaki pekerjaan yang anda mohon dan pautkan resume yang anda hantar."
|
msgstr "Jejaki pekerjaan yang anda mohon dan pautkan resume yang anda hantar."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Kami tidak dapat mengesan format secara automatik — sila pilihnya di a
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Kami tidak dapat menemui halaman itu"
|
msgstr "Kami tidak dapat menemui halaman itu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Carian web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zum keluar"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "आवेदन गरियो"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "मा लागू गरियो"
|
msgstr "मा लागू गरियो"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "स्वीकृत गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "स्वीकृत गरियो — एजेन्टको प्रतीक्षा गर्दै…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "अरबी"
|
msgstr "अरबी"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "तपाईंको API key मेटाइँदैछ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "तपाईंको बायोडाटा मेटाउँदै..."
|
msgstr "तपाईंको बायोडाटा मेटाउँदै..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "अस्वीकार गरियो — एजेन्टको प्रतीक्षा गर्दै…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "अस्वीकार गर्नुहोस्"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "तपाईंले के गर्नुभयो वर्णन गर्नुहोस् ताकि प्रविष्टिले मिलानको लागि कुञ्जी शब्दहरू योगदान गर्दछ।"
|
msgstr "तपाईंले के गर्नुभयो वर्णन गर्नुहोस् ताकि प्रविष्टिले मिलानको लागि कुञ्जी शब्दहरू योगदान गर्दछ।"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "दान गर्नुहोस्"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume लाई दान गर्नुहोस्"
|
msgstr "Reactive Resume लाई दान गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "सम्पन्न भयो"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "पूर्ण स्क्रिन मोडमा सामग्र
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "मिति सम्पादन गर्नुहोस्"
|
msgstr "मिति सम्पादन गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "सम्पादन अस्वीकार गरियो"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "कुनै पनि पर्खाइ वा ढिलाइ बि
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "निर्यात गरिएको पाइपलाइन प्रवाह।png"
|
msgstr "निर्यात गरिएको पाइपलाइन प्रवाह।png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "असफल भयो"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "बायोडाटा विश्लेषण गर्न असफल भयो।"
|
msgstr "बायोडाटा विश्लेषण गर्न असफल भयो।"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "प्रदायक अनलिङ्क गर्न असफल
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "प्रदायक अद्यावधिक गर्न असफल भयो।"
|
msgstr "प्रदायक अद्यावधिक गर्न असफल भयो।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "थ्रेड सेटिङहरू अपडेट गर्न सकिएन।"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ओपनराउटर"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "नयाँ ट्याबमा खुल्छ"
|
msgstr "नयाँ ट्याबमा खुल्छ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "एजेन्टका लागि वैकल्पिक टिप्पणी"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "एजेन्टका लागि वैकल्पिक टिप्पणी…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "वैकल्पिक रूपमा, पासवर्ड राख्न सक्नुहुन्छ ताकि लिङ्कमार्फत बायोडाटा हेर्न केवल पासवर्ड भएको व्यक्तिले मात्र सकोस्।"
|
msgstr "वैकल्पिक रूपमा, पासवर्ड राख्न सक्नुहुन्छ ताकि लिङ्कमार्फत बायोडाटा हेर्न केवल पासवर्ड भएको व्यक्तिले मात्र सकोस्।"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "प्रकाशनहरू"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "प्रकाशक"
|
msgstr "प्रकाशक"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "कच्चा JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "पुन: स्कोर"
|
msgstr "पुन: स्कोर"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "प्रतिक्रियाशील रिजुमे v<0>{__APP
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "संलग्नक पढियो"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "अनुकूलन शैलीहरू लागू गर्ने गाइड पढ्नुहोस्।"
|
msgstr "अनुकूलन शैलीहरू लागू गर्ने गाइड पढ्नुहोस्।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "बायोडाटा पढियो"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "पोस्टिंग पढ्दै…"
|
msgstr "पोस्टिंग पढ्दै…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "पुनर्स्थापना गर्नुहोस्"
|
msgstr "पुनर्स्थापना गर्नुहोस्"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "यो प्याचभन्दा पहिलेको रिजुमे पुनर्स्थापित गर्ने हो? यसले यो प्याच र त्यसपछि लागू गरिएका कुनै पनि प्याचहरूलाई रोलब्याक गर्नेछ।"
|
msgstr "यो प्याचअघिको अवस्थामा बायोडाटा पुनर्स्थापना गर्ने हो?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "बायोडाटा विश्लेषण पूरा भयो
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "सामग्री पुनःसुरु गर्नुहोस्"
|
msgstr "सामग्री पुनःसुरु गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "बायोडाटा सम्पादन"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "रेजुमे फाइल"
|
msgstr "रेजुमे फाइल"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "बायोडाटाहरू"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "पुन: प्रयास गर्नुहोस्"
|
msgstr "पुन: प्रयास गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "सम्पादनहरू समीक्षा गर्नुहोस्"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "जागिरको विवरणसँग बायोडाटा समीक्षा गर्नुहोस् र अनिश्चित खण्डहरू परिवर्तन गर्नु अघि मलाई प्रश्नहरू सोध्नुहोस्।"
|
msgstr "जागिरको विवरणसँग बायोडाटा समीक्षा गर्नुहोस् र अनिश्चित खण्डहरू परिवर्तन गर्नु अघि मलाई प्रश्नहरू सोध्नुहोस्।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "यो सम्पादन समीक्षा गर्नुहोस्"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "सामान्य नलाग्ने गरी वरिष्ठ इन्जिनियरिङ प्रबन्धकको भूमिकालाई लक्षित गरी सारांशलाई पुन: तयार पार्नुहोस्।"
|
msgstr "सामान्य नलाग्ने गरी वरिष्ठ इन्जिनियरिङ प्रबन्धकको भूमिकालाई लक्षित गरी सारांशलाई पुन: तयार पार्नुहोस्।"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "घुमाउने कोण (Rotation)"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "स्कोरकार्ड, शक्तिहरू, र प्राथमिकता दिइएका सुझावहरू प्राप्त गर्न आफ्नो पहिलो विश्लेषण चलाउनुहोस्।"
|
msgstr "स्कोरकार्ड, शक्तिहरू, र प्राथमिकता दिइएका सुझावहरू प्राप्त गर्न आफ्नो पहिलो विश्लेषण चलाउनुहोस्।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "चलिरहेको छ…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "रुसियन"
|
msgstr "रुसियन"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "स्रोत"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "स्रोत कोड"
|
msgstr "स्रोत कोड"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "स्रोत: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "स्रोतहरू"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "स्पेसिङ (तेर्सो)"
|
msgstr "स्पेसिङ (तेर्सो)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "यो सहायक खोल्न सकिएन।"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "यो मिति सही रूपमा पढिने छैन।"
|
msgstr "यो मिति सही रूपमा पढिने छैन।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "यो सम्पादन अनुरोधको अब जवाफ दिन सकिँदैन।"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "यो इमेल ठेगाना पहिचान गरिने छैन।"
|
msgstr "यो इमेल ठेगाना पहिचान गरिने छैन।"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "यदि तपाईंले धेरै पासकीहरू
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "यसले यस खण्डका सबै वस्तुहरू हटाउनेछ।"
|
msgstr "यसले यस खण्डका सबै वस्तुहरू हटाउनेछ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "यसले यो प्याच र त्यसपछि लागू गरिएका सबै प्याचहरू फिर्ता गर्नेछ।"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "दायाँ साइडबार स्विच गर्नुह
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "थ्रेडहरू टगल गर्नुहोस्"
|
msgstr "थ्रेडहरू टगल गर्नुहोस्"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "टोकनहरू: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "टोकनहरू: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "टोकनहरू: {total} ({cached} क्यास गरिएको)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "तपाईंले आवेदन गरिरहनुभएको जागिर ट्र्याक गर्नुहोस् र तपाईंले पठाउनुभएको पुन: सुरुवात लिङ्क गर्नुहोस्।"
|
msgstr "तपाईंले आवेदन गरिरहनुभएको जागिर ट्र्याक गर्नुहोस् र तपाईंले पठाउनुभएको पुन: सुरुवात लिङ्क गर्नुहोस्।"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "हामीले स्वचालित रूपमा ढाँच
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "हामीले त्यो पृष्ठ फेला पार्न सकेनौं।"
|
msgstr "हामीले त्यो पृष्ठ फेला पार्न सकेनौं।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "वेब खोज"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "जूम आउट"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "जुलु"
|
msgstr "जुलु"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Gesolliciteerd"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Toegepast op"
|
msgstr "Toegepast op"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Goedkeuren"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Goedgekeurd — wachten op de agent…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabisch"
|
msgstr "Arabisch"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Uw API-sleutel wordt verwijderd..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Uw cv wordt verwijderd..."
|
msgstr "Uw cv wordt verwijderd..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Geweigerd — wachten op de agent…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Weigeren"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Alle controles zijn geslaagd. Niets hier zou een parser moeten verhinderen je cv te lezen."
|
msgstr "Alle controles zijn geslaagd. Niets hier zou een parser moeten verhinderen je cv te lezen."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Doneer"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Doneer aan Reactive Resume"
|
msgstr "Doneer aan Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Klaar"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Inhoud bewerken in volledig scherm"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Datum bewerken"
|
msgstr "Datum bewerken"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Bewerking afgewezen"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exporteer je cv direct naar PDF, zonder wachttijden of vertragingen."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Geëxporteerde pijplijnstroom.png"
|
msgstr "Geëxporteerde pijplijnstroom.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Mislukt"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Kan cv niet analyseren."
|
msgstr "Kan cv niet analyseren."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Het ontkoppelen van de provider is mislukt. Probeer het opnieuw."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Provider kon niet worden bijgewerkt."
|
msgstr "Provider kon niet worden bijgewerkt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Kan de threadinstellingen niet bijwerken."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "opent in nieuw tabblad"
|
msgstr "opent in nieuw tabblad"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Optionele notitie voor de agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Optionele notitie voor de agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "U kunt optioneel een wachtwoord instellen zodat alleen mensen met het wachtwoord uw cv via de link kunnen bekijken."
|
msgstr "U kunt optioneel een wachtwoord instellen zodat alleen mensen met het wachtwoord uw cv via de link kunnen bekijken."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicaties"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Uitgever"
|
msgstr "Uitgever"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Ruwe JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Opnieuw scoren"
|
msgstr "Opnieuw scoren"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reactief hervatten v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactieve cv v4 (JSON)"
|
msgstr "Reactieve cv v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Bijlage gelezen"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lees de handleiding 'Aangepaste stijlen toepassen'."
|
msgstr "Lees de handleiding 'Aangepaste stijlen toepassen'."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Cv gelezen"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Vacature lezen…"
|
msgstr "Vacature lezen…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Herstellen"
|
msgstr "Herstellen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Wil je het systeem terugzetten naar de situatie van vóór deze patch? Hiermee worden deze patch en alle patches die erna zijn toegepast, teruggedraaid."
|
msgstr "Het cv herstellen naar de staat van vóór deze patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV-analyse voltooid."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Inhoud van het cv"
|
msgstr "Inhoud van het cv"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Cv-bewerking"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Cv-bestand"
|
msgstr "Cv-bestand"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Cv's"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Opnieuw proberen"
|
msgstr "Opnieuw proberen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Bewerkingen beoordelen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Vergelijk je cv met de functieomschrijving en stel me vragen voordat je onderdelen wijzigt waar je nog niet zeker van bent."
|
msgstr "Vergelijk je cv met de functieomschrijving en stel me vragen voordat je onderdelen wijzigt waar je nog niet zeker van bent."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Deze bewerking beoordelen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Herschrijf de samenvatting zodat deze zich richt op een senior engineering manager-functie zonder generiek over te komen."
|
msgstr "Herschrijf de samenvatting zodat deze zich richt op een senior engineering manager-functie zonder generiek over te komen."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotatie"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Voer uw eerste analyse uit om een scorekaart, sterke punten en geprioriteerde suggesties te krijgen."
|
msgstr "Voer uw eerste analyse uit om een scorekaart, sterke punten en geprioriteerde suggesties te krijgen."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Bezig…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russisch"
|
msgstr "Russisch"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Bron"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Broncode"
|
msgstr "Broncode"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Bron: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Bronnen"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Afstand (horizontaal)"
|
msgstr "Afstand (horizontaal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Deze assistent kon niet worden geopend."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Dit e-mailadres wordt niet herkend."
|
msgstr "Dit e-mailadres wordt niet herkend."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Dit bewerkingsverzoek kan niet meer worden beantwoord."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Dit item bevat geen datums."
|
msgstr "Dit item bevat geen datums."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Dit zal u helpen om het later te identificeren, als u van plan bent om m
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Hiermee worden alle items uit deze sectie verwijderd."
|
msgstr "Hiermee worden alle items uit deze sectie verwijderd."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Hiermee worden deze patch en alle daarna toegepaste patches teruggedraaid."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Schakel rechter zijbalk in"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Schakel threads in/uit"
|
msgstr "Schakel threads in/uit"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} in cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Volg een vacature waarop u solliciteert en koppel het cv dat u heeft verzonden."
|
msgstr "Volg een vacature waarop u solliciteert en koppel het cv dat u heeft verzonden."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "We konden het formaat niet automatisch detecteren — selecteer het hier
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "We konden die pagina niet vinden."
|
msgstr "We konden die pagina niet vinden."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Zoeken op het web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Uitzoomen"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Søkt"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Påført på"
|
msgstr "Påført på"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Godkjenn"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Godkjent — venter på agenten…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabisk"
|
msgstr "Arabisk"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Sletter API-nøkkelen din..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Sletter CV-en din..."
|
msgstr "Sletter CV-en din..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Avslått — venter på agenten…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Avslå"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Beskriv hva du gjorde, slik at oppføringen bidrar med nøkkelord for matching."
|
msgstr "Beskriv hva du gjorde, slik at oppføringen bidrar med nøkkelord for matching."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donere"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Doner til Reactive Resume"
|
msgstr "Doner til Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Ferdig"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Rediger innhold i fullskjermmodus"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Rediger dato"
|
msgstr "Rediger dato"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Redigering avslått"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksporter CV-en din til PDF umiddelbart, uten venting eller forsinkelser
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Eksportert pipeline-flow.png"
|
msgstr "Eksportert pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Mislyktes"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Kunne ikke analysere CV-en."
|
msgstr "Kunne ikke analysere CV-en."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Kunne ikke koble fra leverandør. Prøv igjen."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Kunne ikke oppdatere leverandøren."
|
msgstr "Kunne ikke oppdatere leverandøren."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Kunne ikke oppdatere trådinnstillingene."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "åpnes i ny fane"
|
msgstr "åpnes i ny fane"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Valgfri merknad til agenten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Valgfri merknad til agenten…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Du kan eventuelt angi et passord slik at bare personer med passordet kan se CV-en din via lenken."
|
msgstr "Du kan eventuelt angi et passord slik at bare personer med passordet kan se CV-en din via lenken."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikasjoner"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Utgiver"
|
msgstr "Utgiver"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Rå JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Score på nytt"
|
msgstr "Score på nytt"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiv CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Leste et vedlegg"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Les veiledningen for bruk av tilpassede stiler."
|
msgstr "Les veiledningen for bruk av tilpassede stiler."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Leste CV-en"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Leser utlysningen…"
|
msgstr "Leser utlysningen…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurere"
|
msgstr "Restaurere"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Vil du gjenopprette CV-en til før denne oppdateringen? Dette vil tilbakestille denne oppdateringen og eventuelle oppdateringer som ble brukt etter den."
|
msgstr "Gjenopprette CV-en til slik den var før denne oppdateringen?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV-analysen er fullført."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV-innhold"
|
msgstr "CV-innhold"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV-redigering"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV-fil"
|
msgstr "CV-fil"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV-er"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Prøv på nytt"
|
msgstr "Prøv på nytt"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Gjennomgå redigeringer"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Gjennomgå CV-en mot en stillingsbeskrivelse og still meg spørsmål før du endrer usikre deler."
|
msgstr "Gjennomgå CV-en mot en stillingsbeskrivelse og still meg spørsmål før du endrer usikre deler."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Gjennomgå denne redigeringen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Omarbeid sammendraget slik at det retter seg mot en stilling som senioringeniør uten å høres generisk ut."
|
msgstr "Omarbeid sammendraget slik at det retter seg mot en stilling som senioringeniør uten å høres generisk ut."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotasjon"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Kjør din første analyse for å få et poengkort, styrker og prioriterte forslag."
|
msgstr "Kjør din første analyse for å få et poengkort, styrker og prioriterte forslag."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Kjører…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russisk"
|
msgstr "Russisk"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Kilde"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kildekode"
|
msgstr "Kildekode"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Kilde: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Kilder"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Avstand (horisontal)"
|
msgstr "Avstand (horisontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Denne assistenten kunne ikke åpnes."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Denne datoen vil ikke bli lest riktig."
|
msgstr "Denne datoen vil ikke bli lest riktig."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Denne redigeringsforespørselen kan ikke lenger besvares."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Denne e-postadressen vil ikke bli gjenkjent."
|
msgstr "Denne e-postadressen vil ikke bli gjenkjent."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Dette vil hjelpe deg med å identifisere den senere hvis du planlegger
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Dette vil fjerne alle elementer fra denne seksjonen."
|
msgstr "Dette vil fjerne alle elementer fra denne seksjonen."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Dette vil rulle tilbake denne oppdateringen og alle oppdateringer som er brukt etter den."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Veksle høyre sidepanel"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Veksle tråder"
|
msgstr "Veksle tråder"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} bufret)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Spor en jobb du søker på og koble til CV-en du sendte."
|
msgstr "Spor en jobb du søker på og koble til CV-en du sendte."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Vi kunne ikke oppdage formatet automatisk – velg det ovenfor."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Vi fant ikke den siden"
|
msgstr "Vi fant ikke den siden"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Nettsøk"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zoom ut"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "ଆବେଦନ କରାଯାଇଛି"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "ପ୍ରୟୋଗ ହୋଇଛି |"
|
msgstr "ପ୍ରୟୋଗ ହୋଇଛି |"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "ଅନୁମୋଦନ କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "ଅନୁମୋଦିତ — ଏଜେଣ୍ଟଙ୍କୁ ଅପେକ୍ଷା କରୁଛି…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "ଆରବୀ"
|
msgstr "ଆରବୀ"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "ଆପଣଙ୍କ API କି ବିଲୋପ ହେଉଛି..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ବିଲୋପ ହୋଇଯାଉଛି..."
|
msgstr "ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ବିଲୋପ ହୋଇଯାଉଛି..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "ଅସ୍ୱୀକୃତ — ଏଜେଣ୍ଟଙ୍କୁ ଅପେକ୍ଷା କରୁଛି…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "ଅସ୍ୱୀକାର କରନ୍ତୁ"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "ମେଳ କରିବା ପାଇଁ ଏଣ୍ଟ୍ରିରେ କୀୱାର୍ଡ ଯୋଗ ହେବା ଭଳି ଆପଣ କଣ କରିଥିଲେ ଲେଖନ୍ତୁ।"
|
msgstr "ମେଳ କରିବା ପାଇଁ ଏଣ୍ଟ୍ରିରେ କୀୱାର୍ଡ ଯୋଗ ହେବା ଭଳି ଆପଣ କଣ କରିଥିଲେ ଲେଖନ୍ତୁ।"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "ଦାନ କରନ୍ତୁ"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume କୁ ଦାନ କରନ୍ତୁ"
|
msgstr "Reactive Resume କୁ ଦାନ କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ପୂର୍ଣ୍ଣପର୍ଦ୍ଦା ମୋଡ୍ରେ ବି
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "ତାରିଖ ସମ୍ପାଦନ କରନ୍ତୁ"
|
msgstr "ତାରିଖ ସମ୍ପାଦନ କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "ସମ୍ପାଦନ ଅସ୍ୱୀକୃତ ହୋଇଛି"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ଅପେକ୍ଷା କିମ୍ବା ବିଳମ୍ବ ନକରି
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "ରପ୍ତାନି ହୋଇଥିବା ପାଇପଲାଇନ-ପ୍ରବାହ। png |"
|
msgstr "ରପ୍ତାନି ହୋଇଥିବା ପାଇପଲାଇନ-ପ୍ରବାହ। png |"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ବିଫଳ ହୋଇଛି"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "ରେଜ୍ୟୁମେ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ ହେଲା।"
|
msgstr "ରେଜ୍ୟୁମେ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ ହେଲା।"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "ପ୍ରଦାନକାରୀକୁ ଅନଲିଙ୍କ କରିବ
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "ପ୍ରଦାତାଙ୍କୁ ଅପଡେଟ୍ କରିବାରେ ବିଫଳ ହୋଇଛି।"
|
msgstr "ପ୍ରଦାତାଙ୍କୁ ଅପଡେଟ୍ କରିବାରେ ବିଫଳ ହୋଇଛି।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "ଥ୍ରେଡ୍ ସେଟିଂଗୁଡ଼ିକ ଅପଡେଟ୍ କରିବାରେ ବିଫଳ ହେଲା।"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "ନୂତନ ଟାବ୍ରେ ଖୋଲେ"
|
msgstr "ନୂତନ ଟାବ୍ରେ ଖୋଲେ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ଏଜେଣ୍ଟଙ୍କ ପାଇଁ ଇଚ୍ଛାଧୀନ ଟିପ୍ପଣୀ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ଏଜେଣ୍ଟଙ୍କ ପାଇଁ ଇଚ୍ଛାଧୀନ ଟିପ୍ପଣୀ…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "ଇଚ୍ଛାକୃତ ଭାବେ, ଏକ ପାସୱାର୍ଡ ସେଟ୍ କରନ୍ତୁ ଯାହାଦ୍ୱାରା କେବଳ ପାସୱାର୍ଡ ଥିବା ଲୋକମାନେ ଲିଙ୍କ ମାଧ୍ୟମରେ ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ଦେଖିପାରିବେ।"
|
msgstr "ଇଚ୍ଛାକୃତ ଭାବେ, ଏକ ପାସୱାର୍ଡ ସେଟ୍ କରନ୍ତୁ ଯାହାଦ୍ୱାରା କେବଳ ପାସୱାର୍ଡ ଥିବା ଲୋକମାନେ ଲିଙ୍କ ମାଧ୍ୟମରେ ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ଦେଖିପାରିବେ।"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "ପ୍ରକାଶନଗୁଡିକ"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "ପ୍ରକାଶକ"
|
msgstr "ପ୍ରକାଶକ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "କଞ୍ଚା JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "ପୁନ score ସ୍କୋର କରନ୍ତୁ |"
|
msgstr "ପୁନ score ସ୍କୋର କରନ୍ତୁ |"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "ପ୍ରତିକ୍ରିୟାଶୀଳ ରିଜ୍ୟୁମ୍ v<0>
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "ଗୋଟିଏ ଆଟାଚମେଣ୍ଟ୍ ପଢ଼ାଗଲା"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "କଷ୍ଟମ୍ ଷ୍ଟାଇଲ୍ସ ପ୍ରୟୋଗ କରିବା ଗାଇଡ୍ ପଢ଼ନ୍ତୁ।"
|
msgstr "କଷ୍ଟମ୍ ଷ୍ଟାଇଲ୍ସ ପ୍ରୟୋଗ କରିବା ଗାଇଡ୍ ପଢ଼ନ୍ତୁ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "ରେଜ୍ୟୁମେ ପଢ଼ାଗଲା"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "ପୋଷ୍ଟିଂ ପଢ଼ାଯାଉଛି…"
|
msgstr "ପୋଷ୍ଟିଂ ପଢ଼ାଯାଉଛି…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "ପୁନଃସ୍ଥାପନ କରନ୍ତୁ"
|
msgstr "ପୁନଃସ୍ଥାପନ କରନ୍ତୁ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ଏହି ପ୍ୟାଚ୍ ପୂର୍ବରୁ ଥିବା ରିଜ୍ୟୁମ୍ ପୁନଃସ୍ଥାପିତ କରିବେ କି? ଏହା ଏହି ପ୍ୟାଚ୍ ଏବଂ ଏହା ପରେ ଲାଗୁ ହୋଇଥିବା ଯେକୌଣସି ପ୍ୟାଚ୍କୁ ରୋଲ୍ବ୍ୟାକ୍ କରିବ।"
|
msgstr "ଏହି ପ୍ୟାଚ୍ ପୂର୍ବର ଅବସ୍ଥାକୁ ରେଜ୍ୟୁମେ ପୁନଃସ୍ଥାପନ କରିବେ କି?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "ରେଜ୍ୟୁମେ ବିଶ୍ଳେଷଣ ସମ୍ପୂର୍
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "ବିଷୟବସ୍ତୁକୁ ପୁଣି ଆରମ୍ଭ କରନ୍ତୁ"
|
msgstr "ବିଷୟବସ୍ତୁକୁ ପୁଣି ଆରମ୍ଭ କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "ରେଜ୍ୟୁମେ ସମ୍ପାଦନ"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ରେଜୁମେ ଫାଇଲ୍"
|
msgstr "ରେଜୁମେ ଫାଇଲ୍"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "ରେଜ୍ୟୁମେଗୁଡିକ"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "ପୁନଃଚେଷ୍ଟା କରନ୍ତୁ"
|
msgstr "ପୁନଃଚେଷ୍ଟା କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "ସମ୍ପାଦନଗୁଡ଼ିକର ସମୀକ୍ଷା କରନ୍ତୁ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "ଚାକିରି ବର୍ଣ୍ଣନା ସହିତ ଜୀବନ ଜୀବିକା ସମୀକ୍ଷା କରନ୍ତୁ ଏବଂ ଅନିଶ୍ଚିତ ବିଭାଗ ପରିବର୍ତ୍ତନ କରିବା ପୂର୍ବରୁ ମୋତେ ପ୍ରଶ୍ନ ପଚାରନ୍ତୁ।"
|
msgstr "ଚାକିରି ବର୍ଣ୍ଣନା ସହିତ ଜୀବନ ଜୀବିକା ସମୀକ୍ଷା କରନ୍ତୁ ଏବଂ ଅନିଶ୍ଚିତ ବିଭାଗ ପରିବର୍ତ୍ତନ କରିବା ପୂର୍ବରୁ ମୋତେ ପ୍ରଶ୍ନ ପଚାରନ୍ତୁ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ଏହି ସମ୍ପାଦନର ସମୀକ୍ଷା କରନ୍ତୁ"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "ସାଧାରଣ ଶବ୍ଦ ନ ଶୁଣାଇ ଜଣେ ବରିଷ୍ଠ ଇଞ୍ଜିନିୟରିଂ ପରିଚାଳକ ଭୂମିକାକୁ ଲକ୍ଷ୍ୟ କରି ସାରାଂଶକୁ ପୁନଃନିର୍ମାଣ କରନ୍ତୁ।"
|
msgstr "ସାଧାରଣ ଶବ୍ଦ ନ ଶୁଣାଇ ଜଣେ ବରିଷ୍ଠ ଇଞ୍ଜିନିୟରିଂ ପରିଚାଳକ ଭୂମିକାକୁ ଲକ୍ଷ୍ୟ କରି ସାରାଂଶକୁ ପୁନଃନିର୍ମାଣ କରନ୍ତୁ।"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "ଘୁର୍ଣ୍ଣନ"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "ସ୍କୋରକାର୍ଡ, ଶକ୍ତି ଏବଂ ପ୍ରାଥମିକତାଭିତ୍ତିକ ପରାମର୍ଶ ପାଇବା ପାଇଁ ଆପଣଙ୍କ ପ୍ରଥମ ବିଶ୍ଳେଷଣ ଚଲାନ୍ତୁ।"
|
msgstr "ସ୍କୋରକାର୍ଡ, ଶକ୍ତି ଏବଂ ପ୍ରାଥମିକତାଭିତ୍ତିକ ପରାମର୍ଶ ପାଇବା ପାଇଁ ଆପଣଙ୍କ ପ୍ରଥମ ବିଶ୍ଳେଷଣ ଚଲାନ୍ତୁ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "ଚାଲୁଛି…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ରୁଷିଆନ୍"
|
msgstr "ରୁଷିଆନ୍"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ଉତ୍ସ"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "ସୋର୍ସ କୋଡ୍"
|
msgstr "ସୋର୍ସ କୋଡ୍"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "ଉତ୍ସ: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ଉତ୍ସଗୁଡ଼ିକ"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "ଅନୁପ୍ରାସ୍ଥିତ ଭାବେ ଖାଲି ସ୍ଥାନ"
|
msgstr "ଅନୁପ୍ରାସ୍ଥିତ ଭାବେ ଖାଲି ସ୍ଥାନ"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ଏହି ସହାୟକକୁ ଖୋଲାଯାଇପାରିଲା
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ଏହି ତାରିଖକୁ ଠିକ୍ଭାବେ ପଢ଼ାଯିବ ନାହିଁ।"
|
msgstr "ଏହି ତାରିଖକୁ ଠିକ୍ଭାବେ ପଢ଼ାଯିବ ନାହିଁ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "ଏହି ସମ୍ପାଦନା ଅନୁରୋଧର ଆଉ ଉତ୍ତର ଦିଆଯାଇପାରିବ ନାହିଁ।"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ଏହି ଇମେଲ୍ ଠିକଣାକୁ ଚିହ୍ନଟ କରାଯିବ ନାହିଁ।"
|
msgstr "ଏହି ଇମେଲ୍ ଠିକଣାକୁ ଚିହ୍ନଟ କରାଯିବ ନାହିଁ।"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "ଯଦି ଆପଣ ଅନେକ ପାସକି ରଖିବାକୁ
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "ଏହା ଏହି ବିଭାଗରୁ ସମସ୍ତ ଆଇଟମ୍ କାଢିଦେବ।"
|
msgstr "ଏହା ଏହି ବିଭାଗରୁ ସମସ୍ତ ଆଇଟମ୍ କାଢିଦେବ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "ଏହା ଏହି ପ୍ୟାଚ୍ ଏବଂ ଏହା ପରେ ଲାଗୁ କରାଯାଇଥିବା ସମସ୍ତ ପ୍ୟାଚ୍କୁ ପଛକୁ ଘୁଞ୍ଚାଇଦେବ।"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "ଡାହାଣ ସାଇଡବାର୍ ଟୋଗଲ୍ କରନ୍ତ
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "ଥ୍ରେଡଗୁଡ଼ିକୁ ଟୋଗଲ୍ କରନ୍ତୁ"
|
msgstr "ଥ୍ରେଡଗୁଡ଼ିକୁ ଟୋଗଲ୍ କରନ୍ତୁ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "ଟୋକେନ୍: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "ଟୋକେନ୍: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "ଟୋକେନ୍: {total} ({cached} କ୍ୟାଶ୍ ହୋଇଛି)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "ଆପଣ ଆବେଦନ କରୁଥିବା ଏକ କାର୍ଯ୍ୟକୁ ଟ୍ରାକ୍ କରନ୍ତୁ ଏବଂ ଆପଣ ପଠାଇଥିବା ରିଜ୍ୟୁମକୁ ଲିଙ୍କ୍ କରନ୍ତୁ |"
|
msgstr "ଆପଣ ଆବେଦନ କରୁଥିବା ଏକ କାର୍ଯ୍ୟକୁ ଟ୍ରାକ୍ କରନ୍ତୁ ଏବଂ ଆପଣ ପଠାଇଥିବା ରିଜ୍ୟୁମକୁ ଲିଙ୍କ୍ କରନ୍ତୁ |"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "ଆମେ ସ୍ଵଚାଳିତ ଭାବରେ ଫର୍ମାଟ୍
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "ଆମେ ସେହି ପୃଷ୍ଠା ପାଇଲୁ ନାହିଁ।"
|
msgstr "ଆମେ ସେହି ପୃଷ୍ଠା ପାଇଲୁ ନାହିଁ।"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ୱେବ୍ ଖୋଜ"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "ଜୁମ୍ ଆଉଟ୍ କରନ୍ତୁ"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ଜୁଲୁ"
|
msgstr "ଜୁଲୁ"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Złożono aplikację"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Zastosowano"
|
msgstr "Zastosowano"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Zatwierdź"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Zatwierdzono — oczekiwanie na agenta…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabski"
|
msgstr "Arabski"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Usuwanie klucza API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Usuwanie CV..."
|
msgstr "Usuwanie CV..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Odrzucono — oczekiwanie na agenta…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Odrzuć"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Opisz, co robiłeś, aby wpis zawierał słowa kluczowe pomocne przy dopasowaniu."
|
msgstr "Opisz, co robiłeś, aby wpis zawierał słowa kluczowe pomocne przy dopasowaniu."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Podarować"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Przekaż darowiznę na rzecz Reactive Resume"
|
msgstr "Przekaż darowiznę na rzecz Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Gotowe"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Edycja zawartości w trybie pełnoekranowym"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Edytuj datę"
|
msgstr "Edytuj datę"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edycja odrzucona"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksportuj swoje CV do formatu PDF natychmiast, bez czekania i opóźnie
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Wyeksportowany przepływ potoku.png"
|
msgstr "Wyeksportowany przepływ potoku.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Niepowodzenie"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Nie udało się przeanalizować wznowienia."
|
msgstr "Nie udało się przeanalizować wznowienia."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Nie udało się odłączyć dostawcy. Proszę spróbować ponownie."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Nie udało się zaktualizować dostawcy."
|
msgstr "Nie udało się zaktualizować dostawcy."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nie udało się zaktualizować ustawień wątku."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "otwiera się w nowej karcie"
|
msgstr "otwiera się w nowej karcie"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Opcjonalna notatka dla agenta"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Opcjonalna notatka dla agenta…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcjonalnie możesz ustawić hasło, aby tylko osoby je znające mogły wyświetlać Twoje CV przez link."
|
msgstr "Opcjonalnie możesz ustawić hasło, aby tylko osoby je znające mogły wyświetlać Twoje CV przez link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikacje"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Wydawca"
|
msgstr "Wydawca"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Surowy JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Ponownie zdobądź wynik"
|
msgstr "Ponownie zdobądź wynik"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktywne CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Odczytano załącznik"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Przeczytaj przewodnik Stosowanie niestandardowych stylów."
|
msgstr "Przeczytaj przewodnik Stosowanie niestandardowych stylów."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Odczytano CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Odczytywanie ogłoszenia…"
|
msgstr "Odczytywanie ogłoszenia…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Przywrócić"
|
msgstr "Przywrócić"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Przywrócić stan sprzed tej poprawki? Spowoduje to wycofanie tej poprawki i wszystkich poprawek zastosowanych po niej."
|
msgstr "Przywrócić CV do stanu sprzed tej poprawki?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analiza CV zakończona."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Wznów treść"
|
msgstr "Wznów treść"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edycja CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Plik CV"
|
msgstr "Plik CV"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Spróbować ponownie"
|
msgstr "Spróbować ponownie"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Przejrzyj edycje"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Porównaj CV z opisem stanowiska pracy i zadaj mi pytania, zanim zmienisz niejasne sekcje."
|
msgstr "Porównaj CV z opisem stanowiska pracy i zadaj mi pytania, zanim zmienisz niejasne sekcje."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Przejrzyj tę edycję"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Przeredaguj podsumowanie tak, aby odnosiło się do stanowiska starszego kierownika ds. inżynierii i nie brzmiało zbyt ogólnikowo."
|
msgstr "Przeredaguj podsumowanie tak, aby odnosiło się do stanowiska starszego kierownika ds. inżynierii i nie brzmiało zbyt ogólnikowo."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Obrót"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Proszę przeprowadzić pierwszą analizę, aby uzyskać kartę wyników, mocne strony i sugestie dotyczące priorytetów."
|
msgstr "Proszę przeprowadzić pierwszą analizę, aby uzyskać kartę wyników, mocne strony i sugestie dotyczące priorytetów."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "W toku…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rosyjski"
|
msgstr "Rosyjski"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Źródło"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kod źródłowy"
|
msgstr "Kod źródłowy"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Źródło: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Źródła"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Odstępy (poziome)"
|
msgstr "Odstępy (poziome)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Nie udało się otworzyć tego asystenta."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ta data nie zostanie poprawnie odczytana."
|
msgstr "Ta data nie zostanie poprawnie odczytana."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Na tę prośbę o edycję nie można już odpowiedzieć."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ten adres e-mail nie zostanie rozpoznany."
|
msgstr "Ten adres e-mail nie zostanie rozpoznany."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Pomoże to zidentyfikować go później, jeśli planują Państwo mieć
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Spowoduje to usunięcie wszystkich elementów z tej sekcji."
|
msgstr "Spowoduje to usunięcie wszystkich elementów z tej sekcji."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Spowoduje to wycofanie tej poprawki oraz wszystkich poprawek zastosowanych po niej."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Przełączanie prawego paska bocznego"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Przełącz wątki"
|
msgstr "Przełącz wątki"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokeny: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokeny: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokeny: {total} ({cached} z pamięci podręcznej)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Śledź ofertę pracy, na którą aplikujesz i połącz wysłane CV."
|
msgstr "Śledź ofertę pracy, na którą aplikujesz i połącz wysłane CV."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nie udało się wykryć formatu automatycznie — wybierz go powyżej."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nie znaleźliśmy tej strony"
|
msgstr "Nie znaleźliśmy tej strony"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Wyszukiwanie w internecie"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Pomniejsz"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Aplicado"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplicado em"
|
msgstr "Aplicado em"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Aprovar"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Aprovado — aguardando o agente…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Árabe"
|
msgstr "Árabe"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Excluindo sua chave de API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Excluindo seu currículo..."
|
msgstr "Excluindo seu currículo..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Negado — aguardando o agente…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Negar"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Descreva o que você fez para que a entrada contribua com palavras-chave para a correspondência."
|
msgstr "Descreva o que você fez para que a entrada contribua com palavras-chave para a correspondência."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Doar"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Doe para o Reactive Resume"
|
msgstr "Doe para o Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Concluído"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Editar conteúdo no modo de tela cheia"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Editar data"
|
msgstr "Editar data"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edição recusada"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exporte seu currículo para PDF instantaneamente, sem esperas ou atrasos
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Fluxo de pipeline exportado.png"
|
msgstr "Fluxo de pipeline exportado.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Falhou"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Falha ao analisar o currículo."
|
msgstr "Falha ao analisar o currículo."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Falha ao desvincular o provedor. Por favor, tente novamente."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Falha ao atualizar o provedor."
|
msgstr "Falha ao atualizar o provedor."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Falha ao atualizar as configurações da conversa."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "abre em nova aba"
|
msgstr "abre em nova aba"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota opcional para o agente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota opcional para o agente…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcionalmente, defina uma senha para que apenas pessoas com a senha possam visualizar seu currículo através do link."
|
msgstr "Opcionalmente, defina uma senha para que apenas pessoas com a senha possam visualizar seu currículo através do link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicações"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editor"
|
msgstr "Editor"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON bruto"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Re-pontuação"
|
msgstr "Re-pontuação"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Retomar reativo v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Currículo reativo v4 (JSON)"
|
msgstr "Currículo reativo v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Leu um anexo"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Leia o guia Aplicando Estilos Personalizados."
|
msgstr "Leia o guia Aplicando Estilos Personalizados."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Leu o currículo"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Lendo o anúncio…"
|
msgstr "Lendo o anúncio…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restaurar o progresso para antes desta atualização? Isso reverterá esta atualização e quaisquer atualizações aplicadas posteriormente."
|
msgstr "Restaurar o currículo ao estado anterior a este patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Análise de currículo concluída."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Conteúdo do currículo"
|
msgstr "Conteúdo do currículo"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edição do currículo"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Arquivo de currículo"
|
msgstr "Arquivo de currículo"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Currículos"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Tentar novamente"
|
msgstr "Tentar novamente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Revisar edições"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Analise o currículo comparando-o com a descrição da vaga e tire suas dúvidas antes de alterar qualquer informação que você não tenha certeza."
|
msgstr "Analise o currículo comparando-o com a descrição da vaga e tire suas dúvidas antes de alterar qualquer informação que você não tenha certeza."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Revisar esta edição"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Reformule o resumo para que ele se concentre em um cargo de gerente sênior de engenharia, sem soar genérico."
|
msgstr "Reformule o resumo para que ele se concentre em um cargo de gerente sênior de engenharia, sem soar genérico."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotação"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Faça sua primeira análise para obter um quadro de resultados, pontos fortes e sugestões priorizadas."
|
msgstr "Faça sua primeira análise para obter um quadro de resultados, pontos fortes e sugestões priorizadas."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Executando…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russo"
|
msgstr "Russo"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Fonte"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Código-fonte"
|
msgstr "Código-fonte"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Fonte: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Fontes"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Espaçamento (horizontal)"
|
msgstr "Espaçamento (horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Não foi possível abrir este assistente."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Esta data não será lida corretamente."
|
msgstr "Esta data não será lida corretamente."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Esta solicitação de edição não pode mais ser respondida."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Este endereço de e-mail não será reconhecido."
|
msgstr "Este endereço de e-mail não será reconhecido."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Isso ajudará o senhor a identificá-la mais tarde, caso pretenda ter v
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Isso removerá todos os itens dessa seção."
|
msgstr "Isso removerá todos os itens dessa seção."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Isso reverterá este patch e todos os patches aplicados depois dele."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Alternar a barra lateral direita"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Alternar tópicos"
|
msgstr "Alternar tópicos"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} em cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Acompanhe uma vaga para a qual você está se candidatando e vincule o currículo que você enviou."
|
msgstr "Acompanhe uma vaga para a qual você está se candidatando e vincule o currículo que você enviou."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Não foi possível detectar o formato automaticamente — por favor, sel
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Não conseguimos encontrar essa página."
|
msgstr "Não conseguimos encontrar essa página."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Pesquisa na web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Diminuir zoom"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Candidatura enviada"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplicado em"
|
msgstr "Aplicado em"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Aprovar"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Aprovado — a aguardar o agente…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Árabe"
|
msgstr "Árabe"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "A apagar a sua chave API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "A apagar o seu currículo..."
|
msgstr "A apagar o seu currículo..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Recusado — a aguardar o agente…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Recusar"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Descreva o que você fez para que a entrada contribua com palavras-chave para correspondência."
|
msgstr "Descreva o que você fez para que a entrada contribua com palavras-chave para correspondência."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Doar"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Faça um donativo para o Reactive Resume"
|
msgstr "Faça um donativo para o Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Concluído"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Edite conteúdos no modo de ecrã inteiro"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Editar data"
|
msgstr "Editar data"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Edição recusada"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exporte o seu currículo para PDF instantaneamente, sem esperas ou atras
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Pipeline-flow. png exportado"
|
msgstr "Pipeline-flow. png exportado"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Falhou"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Falha na análise do currículo."
|
msgstr "Falha na análise do currículo."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Falha na desvinculação do fornecedor. Tente novamente."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Falha ao atualizar o fornecedor."
|
msgstr "Falha ao atualizar o fornecedor."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Não foi possível atualizar as definições do thread."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "abre num novo separador"
|
msgstr "abre num novo separador"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Nota opcional para o agente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Nota opcional para o agente…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opcionalmente, defina uma senha para que apenas as pessoas com a senha possam ver o seu currículo através do link."
|
msgstr "Opcionalmente, defina uma senha para que apenas as pessoas com a senha possam ver o seu currículo através do link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicações"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editora"
|
msgstr "Editora"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON bruto"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Re-pontuação"
|
msgstr "Re-pontuação"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reativo reativo v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Currículo reativo v4 (JSON)"
|
msgstr "Currículo reativo v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Leu um anexo"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Leia o guia Aplicando Estilos Personalizados."
|
msgstr "Leia o guia Aplicando Estilos Personalizados."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Leu o currículo"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "A ler o anúncio…"
|
msgstr "A ler o anúncio…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restaurar"
|
msgstr "Restaurar"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restaurar o progresso para antes desta atualização? Isto reverterá esta atualização e quaisquer atualizações aplicadas posteriormente."
|
msgstr "Restaurar o currículo para antes deste patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Análise do currículo concluída."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Conteúdo do currículo"
|
msgstr "Conteúdo do currículo"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Edição do currículo"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Ficheiro de currículo"
|
msgstr "Ficheiro de currículo"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Currículos"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Tentar novamente"
|
msgstr "Tentar novamente"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Rever edições"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Analise o currículo comparando-o com a descrição da função e tire as suas dúvidas antes de alterar qualquer informação que não tenha a certeza."
|
msgstr "Analise o currículo comparando-o com a descrição da função e tire as suas dúvidas antes de alterar qualquer informação que não tenha a certeza."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Rever esta edição"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Reformule o resumo para que se concentre num cargo de gestor sénior de engenharia, sem soar genérico."
|
msgstr "Reformule o resumo para que se concentre num cargo de gestor sénior de engenharia, sem soar genérico."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotação"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Execute a sua primeira análise para obter um quadro de pontuação, pontos fortes e sugestões prioritárias."
|
msgstr "Execute a sua primeira análise para obter um quadro de pontuação, pontos fortes e sugestões prioritárias."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "A executar…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russo"
|
msgstr "Russo"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Fonte"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Código-fonte"
|
msgstr "Código-fonte"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Origem: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Fontes"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Espaçamento (horizontal)"
|
msgstr "Espaçamento (horizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Não foi possível abrir este assistente."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Esta data não será lida corretamente."
|
msgstr "Esta data não será lida corretamente."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Este pedido de edição já não pode ser respondido."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Este endereço de e-mail não será reconhecido."
|
msgstr "Este endereço de e-mail não será reconhecido."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Isto ajudá-lo-á a identificá-la mais tarde, se planear ter várias ch
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Isto irá remover todos os itens desta secção."
|
msgstr "Isto irá remover todos os itens desta secção."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Isto irá reverter este patch e todos os patches aplicados depois dele."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Alternar a barra lateral direita"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Alternar tópicos"
|
msgstr "Alternar tópicos"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} em cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Acompanhe uma vaga para a qual se está a candidatar e vincule o currículo que enviou."
|
msgstr "Acompanhe uma vaga para a qual se está a candidatar e vincule o currículo que enviou."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Não foi possível detetar o formato automaticamente — por favor, sele
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Não conseguimos encontrar essa página."
|
msgstr "Não conseguimos encontrar essa página."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Pesquisa na web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Afastar"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Candidatură trimisă"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplicat pe"
|
msgstr "Aplicat pe"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Aprobă"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Aprobat — se așteaptă agentul…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabă"
|
msgstr "Arabă"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Se șterge cheia API..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Se șterge CV-ul..."
|
msgstr "Se șterge CV-ul..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Refuzat — se așteaptă agentul…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Refuză"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Descrieți ce ați făcut, astfel încât intrarea să contribuie cu cuvinte cheie pentru potrivire."
|
msgstr "Descrieți ce ați făcut, astfel încât intrarea să contribuie cu cuvinte cheie pentru potrivire."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Dona"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donează către Reactive Resume"
|
msgstr "Donează către Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Finalizat"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Editarea conținutului în modul fullscreen"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Editați data"
|
msgstr "Editați data"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Editare refuzată"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportă-ți CV-ul instantaneu în format PDF, fără nicio așteptare s
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exportat pipeline-flow.png"
|
msgstr "Exportat pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Eșuat"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "A eșuat analiza CV-ului."
|
msgstr "A eșuat analiza CV-ului."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "A eșuat dezlegarea furnizorului. Vă rugăm să încercați din nou."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Nu s-a putut actualiza furnizorul."
|
msgstr "Nu s-a putut actualiza furnizorul."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nu s-au putut actualiza setările firului de execuție."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "se deschide într-o filă nouă"
|
msgstr "se deschide într-o filă nouă"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Notă opțională pentru agent"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Notă opțională pentru agent…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opțional, setați o parolă astfel încât doar persoanele care o cunosc să poată vedea CV-ul prin link."
|
msgstr "Opțional, setați o parolă astfel încât doar persoanele care o cunosc să poată vedea CV-ul prin link."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publicații"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Editor"
|
msgstr "Editor"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON brut"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Re-scorați"
|
msgstr "Re-scorați"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "CV reactiv v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "CV reactiv v4 (JSON)"
|
msgstr "CV reactiv v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "A citit un atașament"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Citiți ghidul Aplicarea stilurilor personalizate."
|
msgstr "Citiți ghidul Aplicarea stilurilor personalizate."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "A citit CV-ul"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Se citește postarea…"
|
msgstr "Se citește postarea…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Restabili"
|
msgstr "Restabili"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Restaurați CV-ul la starea anterioară acestui patch? Această acțiune va anula acest patch și orice patch-uri aplicate după acesta."
|
msgstr "Restaurați CV-ul la starea de dinaintea acestui patch?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analiza CV-ului este completă."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Conținut CV"
|
msgstr "Conținut CV"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Editare CV"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Fișier CV"
|
msgstr "Fișier CV"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV-uri"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Reîncercați"
|
msgstr "Reîncercați"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Revizuiește editările"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Verifică CV-ul în raport cu fișa postului și pune-mi întrebări înainte de a modifica secțiunile incerte."
|
msgstr "Verifică CV-ul în raport cu fișa postului și pune-mi întrebări înainte de a modifica secțiunile incerte."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Revizuiește această editare"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Reelaborați rezumatul astfel încât să vizeze un rol de manager senior de inginerie, fără a suna generic."
|
msgstr "Reelaborați rezumatul astfel încât să vizeze un rol de manager senior de inginerie, fără a suna generic."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotire"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Efectuați prima analiză pentru a obține o fișă de evaluare, puncte forte și sugestii prioritizate."
|
msgstr "Efectuați prima analiză pentru a obține o fișă de evaluare, puncte forte și sugestii prioritizate."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Se execută…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusă"
|
msgstr "Rusă"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Sursă"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Cod sursă"
|
msgstr "Cod sursă"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Sursă: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Surse"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Spațiere (orizontală)"
|
msgstr "Spațiere (orizontală)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Acest asistent nu a putut fi deschis."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Această dată nu va fi citită corect."
|
msgstr "Această dată nu va fi citită corect."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Această solicitare de editare nu mai poate primi răspuns."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Această adresă de e-mail nu va fi recunoscută."
|
msgstr "Această adresă de e-mail nu va fi recunoscută."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Acest lucru vă va ajuta să o identificați ulterior, dacă intenționa
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Acest lucru va elimina toate elementele din această secțiune."
|
msgstr "Acest lucru va elimina toate elementele din această secțiune."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Acest lucru va retrage acest patch și toate patch-urile aplicate după el."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Alternați bara laterală din dreapta"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Comutare fir de discuție"
|
msgstr "Comutare fir de discuție"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokeni: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokeni: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokeni: {total} ({cached} în cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Urmăriți un loc de muncă la care aplicați și conectați CV-ul pe care l-ați trimis."
|
msgstr "Urmăriți un loc de muncă la care aplicați și conectați CV-ul pe care l-ați trimis."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nu am putut detecta formatul automat — vă rugăm să îl alegeți mai
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nu am putut găsi pagina respectivă"
|
msgstr "Nu am putut găsi pagina respectivă"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Căutare pe web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Micșorează"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Отклик отправлен"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Применяется на"
|
msgstr "Применяется на"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Одобрить"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Одобрено — ожидание агента…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Арабский"
|
msgstr "Арабский"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Удаление вашего API-ключа..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Удаление вашего резюме..."
|
msgstr "Удаление вашего резюме..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Отклонено — ожидание агента…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Отклонить"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Опишите, что вы сделали, чтобы в запись были добавлены ключевые слова для сопоставления."
|
msgstr "Опишите, что вы сделали, чтобы в запись были добавлены ключевые слова для сопоставления."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Пожертвовать"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Пожертвовать Reactive Resume"
|
msgstr "Пожертвовать Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Готово"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Редактируйте содержимое в полноэкранн
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Изменить дату"
|
msgstr "Изменить дату"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Правка отклонена"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Мгновенно экспортируйте свое резюме в
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Экспортированный конвейер-flow.png"
|
msgstr "Экспортированный конвейер-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Ошибка"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Не удалось проанализировать резюме."
|
msgstr "Не удалось проанализировать резюме."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Не удалось отвязать провайдера. Пожалу
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Не удалось обновить поставщика услуг."
|
msgstr "Не удалось обновить поставщика услуг."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Не удалось обновить настройки потока."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "открывается в новой вкладке"
|
msgstr "открывается в новой вкладке"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Необязательная заметка для агента"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Необязательная заметка для агента…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "При желании вы можете установить пароль, чтобы просматривать резюме по ссылке могли только пользователи с паролем."
|
msgstr "При желании вы можете установить пароль, чтобы просматривать резюме по ссылке могли только пользователи с паролем."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Публикации"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Издатель"
|
msgstr "Издатель"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Необработанный JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Повторный результат"
|
msgstr "Повторный результат"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Реактивное возобновление v<0>{__APP_VERSION__}</0
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Прочитал вложение"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Ознакомьтесь с руководством по применению пользовательских стилей."
|
msgstr "Ознакомьтесь с руководством по применению пользовательских стилей."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Прочитал резюме"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Чтение объявления…"
|
msgstr "Чтение объявления…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Восстановить"
|
msgstr "Восстановить"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Восстановить состояние до установки этого обновления? Это отменит данное обновление и все обновления, установленные после него."
|
msgstr "Восстановить резюме к состоянию до этого патча?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Анализ резюме завершен."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Содержание резюме"
|
msgstr "Содержание резюме"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Правка резюме"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Файл резюме"
|
msgstr "Файл резюме"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Резюме"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Повторить попытку"
|
msgstr "Повторить попытку"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Просмотреть правки"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Сравните резюме с описанием вакансии и задайте мне вопросы, прежде чем вносить изменения в непонятные разделы."
|
msgstr "Сравните резюме с описанием вакансии и задайте мне вопросы, прежде чем вносить изменения в непонятные разделы."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Просмотреть эту правку"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Переработайте резюме так, чтобы оно было ориентировано на должность старшего инженерного менеджера, но при этом не звучало слишком шаблонно."
|
msgstr "Переработайте резюме так, чтобы оно было ориентировано на должность старшего инженерного менеджера, но при этом не звучало слишком шаблонно."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Поворот"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Проведите свой первый анализ, чтобы получить оценочный лист, сильные стороны и приоритетные предложения."
|
msgstr "Проведите свой первый анализ, чтобы получить оценочный лист, сильные стороны и приоритетные предложения."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Выполняется…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Русский"
|
msgstr "Русский"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Источник"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Исходный код"
|
msgstr "Исходный код"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Источник: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Источники"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Интервал (по горизонтали)"
|
msgstr "Интервал (по горизонтали)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Не удалось открыть этого помощника."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Эта дата не будет прочитана правильно."
|
msgstr "Эта дата не будет прочитана правильно."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "На этот запрос на редактирование больше нельзя ответить."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Этот адрес электронной почты не будет распознан."
|
msgstr "Этот адрес электронной почты не будет распознан."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Это поможет Вам определить его позже, е
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Это позволит удалить все элементы из этого раздела."
|
msgstr "Это позволит удалить все элементы из этого раздела."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Это откатит этот патч и все патчи, применённые после него."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Переключите правую боковую панель"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Переключить потоки"
|
msgstr "Переключить потоки"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Токены: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Токены: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Токены: {total} ({cached} из кэша)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Отслеживайте вакансию, на которую вы претендуете, и связывайте отправленное вами резюме."
|
msgstr "Отслеживайте вакансию, на которую вы претендуете, и связывайте отправленное вами резюме."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Нам не удалось автоматически определит
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Мы не смогли найти эту страницу."
|
msgstr "Мы не смогли найти эту страницу."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Веб-поиск"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Уменьшить"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Зулу"
|
msgstr "Зулу"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Odoslané"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplikované dňa"
|
msgstr "Aplikované dňa"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Schváliť"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Schválené — čaká sa na agenta…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabčina"
|
msgstr "Arabčina"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Vymazávam tvoj API kľúč..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Vymazávam tvoj životopis..."
|
msgstr "Vymazávam tvoj životopis..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Zamietnuté — čaká sa na agenta…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Zamietnuť"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Popíšte, čo ste urobili, aby záznam prispel k zhode kľúčových slov."
|
msgstr "Popíšte, čo ste urobili, aby záznam prispel k zhode kľúčových slov."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Darovať"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Prispej projektu Reactive Resume"
|
msgstr "Prispej projektu Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Hotovo"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Úprava obsahu v režime celej obrazovky"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Upraviť dátum"
|
msgstr "Upraviť dátum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Úprava zamietnutá"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportujte svoj životopis do PDF okamžite, bez čakania alebo zdržani
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exportované pipeline-flow.png"
|
msgstr "Exportované pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Zlyhalo"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Nepodarilo sa analyzovať životopis."
|
msgstr "Nepodarilo sa analyzovať životopis."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Nepodarilo sa odpojiť poskytovateľa. Skúste to prosím znova."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Aktualizácia poskytovateľa zlyhala."
|
msgstr "Aktualizácia poskytovateľa zlyhala."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nepodarilo sa aktualizovať nastavenia vlákna."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "otvorí sa na novej karte"
|
msgstr "otvorí sa na novej karte"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Voliteľná poznámka pre agenta"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Voliteľná poznámka pre agenta…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Voliteľne môžeš nastaviť heslo, aby si životopis cez odkaz mohli pozrieť len ľudia, ktorí heslo poznajú."
|
msgstr "Voliteľne môžeš nastaviť heslo, aby si životopis cez odkaz mohli pozrieť len ľudia, ktorí heslo poznajú."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikácie"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Vydavateľ"
|
msgstr "Vydavateľ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Surový JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Opätovné skóre"
|
msgstr "Opätovné skóre"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktívny životopis v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktívny životopis v4 (JSON)"
|
msgstr "Reaktívny životopis v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Prečítal prílohu"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Prečítajte si príručku Používanie vlastných štýlov."
|
msgstr "Prečítajte si príručku Používanie vlastných štýlov."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Prečítal životopis"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Číta sa inzerát…"
|
msgstr "Číta sa inzerát…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Obnoviť"
|
msgstr "Obnoviť"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Obnoviť životopis do stavu pred touto opravou? Táto akcia vráti späť túto opravu a všetky opravy použité po nej."
|
msgstr "Obnoviť životopis do stavu pred touto záplatou?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Dokončenie analýzy životopisu."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Obsah životopisu"
|
msgstr "Obsah životopisu"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Úprava životopisu"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Súbor životopisu"
|
msgstr "Súbor životopisu"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Životopisy"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Skúsiť znova"
|
msgstr "Skúsiť znova"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Skontrolovať úpravy"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Pred zmenou nejasných častí si skontrolujte životopis v porovnaní s popisom práce a položte mi otázky."
|
msgstr "Pred zmenou nejasných častí si skontrolujte životopis v porovnaní s popisom práce a položte mi otázky."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Skontrolovať túto úpravu"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Prepracujte súhrn tak, aby sa zameriaval na pozíciu senior inžinierskeho manažéra bez toho, aby znel všeobecne."
|
msgstr "Prepracujte súhrn tak, aby sa zameriaval na pozíciu senior inžinierskeho manažéra bez toho, aby znel všeobecne."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Otočenie"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Spustite prvú analýzu, aby ste získali hodnotiacu tabuľku, silné stránky a prioritné návrhy."
|
msgstr "Spustite prvú analýzu, aby ste získali hodnotiacu tabuľku, silné stránky a prioritné návrhy."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Prebieha…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ruština"
|
msgstr "Ruština"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Zdroj"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Zdrojový kód"
|
msgstr "Zdrojový kód"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Zdroj: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Zdroje"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Rozostup (vodorovne)"
|
msgstr "Rozostup (vodorovne)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Tohto asistenta sa nepodarilo otvoriť."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Tento dátum sa neprečíta správne."
|
msgstr "Tento dátum sa neprečíta správne."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Na túto žiadosť o úpravu už nie je možné odpovedať."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Táto e-mailová adresa nebude rozpoznaná."
|
msgstr "Táto e-mailová adresa nebude rozpoznaná."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "To vám pomôže identifikovať ho neskôr, ak plánujete mať viacero p
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Týmto odstránite všetky položky z tejto časti."
|
msgstr "Týmto odstránite všetky položky z tejto časti."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Týmto sa vráti späť táto záplata a všetky záplaty použité po nej."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Prepnutie pravého bočného panela"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Prepínať vlákna"
|
msgstr "Prepínať vlákna"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokeny: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokeny: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokeny: {total} ({cached} z medzipamäte)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Sledujte prácu, o ktorú sa uchádzate, a prepojte životopis, ktorý ste poslali."
|
msgstr "Sledujte prácu, o ktorú sa uchádzate, a prepojte životopis, ktorý ste poslali."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Formát sa nám nepodarilo automaticky rozpoznať – vyberte ho vyšši
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Túto stránku sme nenašli"
|
msgstr "Túto stránku sme nenašli"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Vyhľadávanie na webe"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Oddialiť"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Prijavljeno"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Uporabljeno na"
|
msgstr "Uporabljeno na"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Odobri"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Odobreno — čakanje na agenta…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabščina"
|
msgstr "Arabščina"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Brišem vaš API ključ ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Brišem vaš življenjepis..."
|
msgstr "Brišem vaš življenjepis..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Zavrnjeno — čakanje na agenta…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Zavrni"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Opišite, kaj ste storili, da vnos prispeva ključne besede za ujemanje."
|
msgstr "Opišite, kaj ste storili, da vnos prispeva ključne besede za ujemanje."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donirajte"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donirajte za Reactive Resume"
|
msgstr "Donirajte za Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Končano"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Urejanje vsebine v celozaslonskem načinu"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Uredi datum"
|
msgstr "Uredi datum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Sprememba zavrnjena"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Izvozite svoj življenjepis v PDF takoj, brez čakanja ali zamud."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Izvožen pipeline-flow.png"
|
msgstr "Izvožen pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Ni uspelo"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Ni uspelo analizirati življenjepisa."
|
msgstr "Ni uspelo analizirati življenjepisa."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Ni uspelo odvezati ponudnika. Poskusite znova."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Ponudnika ni bilo mogoče posodobiti."
|
msgstr "Ponudnika ni bilo mogoče posodobiti."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nastavitev niti ni bilo mogoče posodobiti."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "odpre se v novem zavihku"
|
msgstr "odpre se v novem zavihku"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Neobvezna opomba za agenta"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Neobvezna opomba za agenta…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Po želji nastavite geslo, tako da si lahko vaš življenjepis preko povezave ogledajo le tisti, ki imajo geslo."
|
msgstr "Po želji nastavite geslo, tako da si lahko vaš življenjepis preko povezave ogledajo le tisti, ki imajo geslo."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikacije"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Založnik"
|
msgstr "Založnik"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Neobdelan JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Ponovno rezultat"
|
msgstr "Ponovno rezultat"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktivni življenjepis v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktivni življenjepis v4 (JSON)"
|
msgstr "Reaktivni življenjepis v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Prebral prilogo"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Preberite vodnik Uporaba slogov po meri."
|
msgstr "Preberite vodnik Uporaba slogov po meri."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Prebral življenjepis"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Branje objave…"
|
msgstr "Branje objave…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Obnovi"
|
msgstr "Obnovi"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Želite obnoviti življenjepis na stanje pred tem popravkom? S tem boste povrnili ta popravek in vse popravke, ki so bili uporabljeni po njem."
|
msgstr "Želite obnoviti življenjepis v stanje pred tem popravkom?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analiza življenjepisa je končana."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Vsebina življenjepisa"
|
msgstr "Vsebina življenjepisa"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Urejanje življenjepisa"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Datoteka življenjepisa"
|
msgstr "Datoteka življenjepisa"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Življenjepisi"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Poskusi znova"
|
msgstr "Poskusi znova"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Preglej spremembe"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Preden spremenite negotove dele, preglejte življenjepis glede na opis delovnega mesta in mi postavite vprašanja."
|
msgstr "Preden spremenite negotove dele, preglejte življenjepis glede na opis delovnega mesta in mi postavite vprašanja."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Preglej to spremembo"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Preoblikujte povzetek, da bo namenjen višjemu inženirskemu vodji, ne da bi zvenel generično."
|
msgstr "Preoblikujte povzetek, da bo namenjen višjemu inženirskemu vodji, ne da bi zvenel generično."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotacija"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Izvedite prvo analizo in pridobite preglednico, prednosti in prednostne predloge."
|
msgstr "Izvedite prvo analizo in pridobite preglednico, prednosti in prednostne predloge."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Izvajanje…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ruščina"
|
msgstr "ruščina"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Vir"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Izvorna koda"
|
msgstr "Izvorna koda"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Vir: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Viri"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Razmik (vodoravno)"
|
msgstr "Razmik (vodoravno)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Tega pomočnika ni bilo mogoče odpreti."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ta datum ne bo pravilno prebran."
|
msgstr "Ta datum ne bo pravilno prebran."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Na to zahtevo za urejanje ni več mogoče odgovoriti."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ta e-poštni naslov ne bo prepoznan."
|
msgstr "Ta e-poštni naslov ne bo prepoznan."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Če nameravate imeti več ključev, vam bo to pomagalo pri kasnejši ide
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "S tem boste odstranili vse elemente iz tega razdelka."
|
msgstr "S tem boste odstranili vse elemente iz tega razdelka."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "To bo razveljavilo ta popravek in vse popravke, uporabljene po njem."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Preklapljanje desne stranske vrstice"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Preklopi niti"
|
msgstr "Preklopi niti"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Žetoni: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Žetoni: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Žetoni: {total} ({cached} predpomnjenih)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Sledite delovnemu mestu, na katerega se prijavljate, in povežite življenjepis, ki ste ga poslali."
|
msgstr "Sledite delovnemu mestu, na katerega se prijavljate, in povežite življenjepis, ki ste ga poslali."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Oblike ni bilo mogoče samodejno zaznati – izberite jo zgoraj."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Te strani nismo mogli najti."
|
msgstr "Te strani nismo mogli najti."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Spletno iskanje"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Oddalji"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zuluščina"
|
msgstr "Zuluščina"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Aplikuar"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Aplikuar në"
|
msgstr "Aplikuar në"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Mirato"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Miratuar — në pritje të agjentit…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabisht"
|
msgstr "Arabisht"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Po fshihet API key-ja juaj..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Po fshihet CV-ja juaj..."
|
msgstr "Po fshihet CV-ja juaj..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Refuzuar — në pritje të agjentit…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Refuzo"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Përshkruani atë që keni bërë në mënyrë që hyrja të kontribuojë me fjalë kyçe për përputhje."
|
msgstr "Përshkruani atë që keni bërë në mënyrë që hyrja të kontribuojë me fjalë kyçe për përputhje."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Dhuro"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Dhuro në Reactive Resume"
|
msgstr "Dhuro në Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "U krye"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Redakto përmbajtjen në modalitetin me ekran të plotë"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Redakto datën"
|
msgstr "Redakto datën"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Modifikimi u refuzua"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Eksportoni CV-në tuaj në PDF menjëherë, pa pritje ose vonesa."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Pipeline-flow.png u eksportua"
|
msgstr "Pipeline-flow.png u eksportua"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Dështoi"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Dështoi të analizojë CV-në."
|
msgstr "Dështoi të analizojë CV-në."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Dështoi shkëputja e lidhjes me ofruesin. Ju lutemi provoni përsëri."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Përditësimi i ofruesit dështoi."
|
msgstr "Përditësimi i ofruesit dështoi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Nuk u përditësuan dot parametrat e fijes."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "Ruter i hapur"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "hapet në skedë të re"
|
msgstr "hapet në skedë të re"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Shënim opsional për agjentin"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Shënim opsional për agjentin…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Opsionalisht, vendosni një fjalëkalim në mënyrë që vetëm personat me fjalëkalim të mund ta shikojnë CV-në tuaj përmes linkut."
|
msgstr "Opsionalisht, vendosni një fjalëkalim në mënyrë që vetëm personat me fjalëkalim të mund ta shikojnë CV-në tuaj përmes linkut."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikime"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Botues"
|
msgstr "Botues"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON i papërpunuar"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Ri-shënoni"
|
msgstr "Ri-shënoni"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Rezyme Reaktive v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reactive Resume v4 (JSON)"
|
msgstr "Reactive Resume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Lexoi një shtojcë"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Lexoni udhëzuesin Zbatimi i Stileve të Personalizuara."
|
msgstr "Lexoni udhëzuesin Zbatimi i Stileve të Personalizuara."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Lexoi CV-në"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Po lexohet shpallja…"
|
msgstr "Po lexohet shpallja…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Rivendos"
|
msgstr "Rivendos"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Të rikthehet CV-ja në gjendjen para këtij përditësimi? Kjo do ta anulojë këtë përditësim dhe çdo përditësim të aplikuar pas tij."
|
msgstr "Të rikthehet CV-ja në gjendjen para këtij patch-i?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Analiza e rezumesë e përfunduar."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Përmbajtja e rifillimit"
|
msgstr "Përmbajtja e rifillimit"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Modifikim i CV-së"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Skedari i CV-së"
|
msgstr "Skedari i CV-së"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV-të"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Riprovo"
|
msgstr "Riprovo"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Shqyrto modifikimet"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Rishikoni CV-në tuaj me një përshkrim pune dhe më bëni pyetje përpara se të ndryshoni seksionet e pasigurta."
|
msgstr "Rishikoni CV-në tuaj me një përshkrim pune dhe më bëni pyetje përpara se të ndryshoni seksionet e pasigurta."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Shqyrto këtë modifikim"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Ripërpunoni përmbledhjen në mënyrë që të synojë një rol të menaxherit të lartë të inxhinierisë pa tingëlluar si i përgjithshëm."
|
msgstr "Ripërpunoni përmbledhjen në mënyrë që të synojë një rol të menaxherit të lartë të inxhinierisë pa tingëlluar si i përgjithshëm."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rrotullimi"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Ekzekutoni analizën tuaj të parë për të marrë një kartë rezultatesh, pikat e forta dhe sugjerime të prioritizuara."
|
msgstr "Ekzekutoni analizën tuaj të parë për të marrë një kartë rezultatesh, pikat e forta dhe sugjerime të prioritizuara."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Duke u ekzekutuar…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusisht"
|
msgstr "Rusisht"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Burimi"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kodi burim"
|
msgstr "Kodi burim"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Burimi: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Burimet"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Hapësira (Horizontale)"
|
msgstr "Hapësira (Horizontale)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Ky asistent nuk mund të hapej."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Kjo datë nuk do të lexohet saktë”."
|
msgstr "Kjo datë nuk do të lexohet saktë”."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Kësaj kërkese për redaktim nuk mund t'i përgjigjeni më."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Kjo adresë emaili nuk do të njihet."
|
msgstr "Kjo adresë emaili nuk do të njihet."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Kjo do t'ju ndihmojë ta identifikoni më vonë, nëse planifikoni të k
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Kjo do të heqë të gjitha artikujt nga ky seksion."
|
msgstr "Kjo do të heqë të gjitha artikujt nga ky seksion."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Kjo do ta rikthejë këtë patch dhe të gjitha patch-et e aplikuara pas tij."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Aktivizo shiritin anësor të djathtë"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Aktivizo/çaktivizo temat"
|
msgstr "Aktivizo/çaktivizo temat"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokenë: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokenë: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokenë: {total} ({cached} në cache)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Ndiqni një punë për të cilën po aplikoni dhe lidhni CV-në që keni dërguar."
|
msgstr "Ndiqni një punë për të cilën po aplikoni dhe lidhni CV-në që keni dërguar."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Nuk mundëm ta zbulonim formatin automatikisht — ju lutemi zgjidhni at
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Nuk mundëm ta gjenim atë faqe"
|
msgstr "Nuk mundëm ta gjenim atë faqe"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Kërkim në internet"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zvogëlo"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Пријављено"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Примењено на"
|
msgstr "Примењено на"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Одобри"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Одобрено — чека се агент…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Арапски"
|
msgstr "Арапски"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Брисање вашег API кључа..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Брисање вашег резимеа..."
|
msgstr "Брисање вашег резимеа..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Одбијено — чека се агент…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Одбиј"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Опишите шта сте урадили како би унос допринео кључним речима за подударање."
|
msgstr "Опишите шта сте урадили како би унос допринео кључним речима за подударање."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Донирајте"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Донирајте Реактивном Резимеу"
|
msgstr "Донирајте Реактивном Резимеу"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Готово"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Уређивати садржај у режиму пуног екран
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Уреди датум"
|
msgstr "Уреди датум"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Измена одбијена"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Експортујте свој животопис у ПДФ одмах,
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Извезен пипелине-флов.пнг"
|
msgstr "Извезен пипелине-флов.пнг"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Неуспешно"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Није успело да анализира резиме."
|
msgstr "Није успело да анализира резиме."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Није успело да се уклони провајдер. Мол
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Ажурирање добављача није успело."
|
msgstr "Ажурирање добављача није успело."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Није могуће ажурирати подешавања нити."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "Отворени рутер"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "отвара се у новом језичку"
|
msgstr "отвара се у новом језичку"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Опциона напомена за агента"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Опциона напомена за агента…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Опционално подесите лозинку тако да само особе са лозинком могу да виде ваш резиме путем везе."
|
msgstr "Опционално подесите лозинку тако да само особе са лозинком могу да виде ваш резиме путем везе."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Публикације"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Издавач"
|
msgstr "Издавач"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Сирови JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Ре-сцоре"
|
msgstr "Ре-сцоре"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Реактивни резиме v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Реактивни резиме v4 (JSON)"
|
msgstr "Реактивни резиме v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Прочитан прилог"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Прочитајте водич за примену прилагођених стилова."
|
msgstr "Прочитајте водич за примену прилагођених стилова."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Прочитан животопис"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Читање огласа…"
|
msgstr "Читање огласа…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Врати"
|
msgstr "Врати"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Врати животопис на стање пре ове закрпе? Ово ће вратити ову закрпу и све закрпе примењене након ње."
|
msgstr "Вратити животопис на стање пре ове закрпе?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Анализа резимеа је завршена."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Садржај резимеа"
|
msgstr "Садржај резимеа"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Измена животописа"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Датотека резимеа"
|
msgstr "Датотека резимеа"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Резимеи"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Покушај поново"
|
msgstr "Покушај поново"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Прегледај измене"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Упоредите биографију са описом посла и поставите ми питања пре него што измените несигурне делове."
|
msgstr "Упоредите биографију са описом посла и поставите ми питања пре него што измените несигурне делове."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Прегледај ову измену"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Прерадите резиме тако да циља на позицију вишег инжењерског менаџера, а да притом не звучи генерички."
|
msgstr "Прерадите резиме тако да циља на позицију вишег инжењерског менаџера, а да притом не звучи генерички."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Ротација"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Покрените прву анализу да бисте добили контролну таблу, снаге и приоритезоване предлоге."
|
msgstr "Покрените прву анализу да бисте добили контролну таблу, снаге и приоритезоване предлоге."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "У току…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Руски"
|
msgstr "Руски"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Извор"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Изворни код"
|
msgstr "Изворни код"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Извор: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Извори"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Размак (хоризонтални)"
|
msgstr "Размак (хоризонтални)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Овај помоћник није могао бити отворен."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Овај датум неће бити правилно прочитан“."
|
msgstr "Овај датум неће бити правилно прочитан“."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "На овај захтев за измену више није могуће одговорити."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ова адреса е-поште неће бити препозната."
|
msgstr "Ова адреса е-поште неће бити препозната."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Ово ће вам помоћи да га касније идентиф
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Ово ће уклонити све ставке из овог одељка."
|
msgstr "Ово ће уклонити све ставке из овог одељка."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Ово ће поништити ову закрпу и све закрпе примењене после ње."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Пребаци десну бочну траку"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Укључи/искључи нити"
|
msgstr "Укључи/искључи нити"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Токени: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Токени: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Токени: {total} ({cached} кеширано)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Пратите посао за који се пријављујете и повежите животопис који сте послали."
|
msgstr "Пратите посао за који се пријављујете и повежите животопис који сте послали."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Нисмо могли аутоматски да детектујемо
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Нисмо могли да пронађемо ту страницу"
|
msgstr "Нисмо могли да пронађемо ту страницу"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Веб претрага"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Умањи"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Зулу"
|
msgstr "Зулу"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Ansökt"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Tillämpas på"
|
msgstr "Tillämpas på"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Godkänn"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Godkänt — väntar på agenten…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabiska"
|
msgstr "Arabiska"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Raderar din API-nyckel..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Raderar ditt CV..."
|
msgstr "Raderar ditt CV..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Nekat — väntar på agenten…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Neka"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Beskriv vad du gjorde så att posten bidrar med sökord för matchning."
|
msgstr "Beskriv vad du gjorde så att posten bidrar med sökord för matchning."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Donera"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Donera till Reactive Resume"
|
msgstr "Donera till Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Klart"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Redigera innehåll i helskärmsläge"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Redigera datum"
|
msgstr "Redigera datum"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Redigering avböjd"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Exportera ditt CV till PDF direkt, utan väntetid eller förseningar."
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Exporterad pipeline-flow.png"
|
msgstr "Exporterad pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Misslyckades"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Misslyckades med att analysera CV."
|
msgstr "Misslyckades med att analysera CV."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Misslyckades med att koppla bort leverantören. Vänligen försök igen.
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Misslyckades med att uppdatera leverantören."
|
msgstr "Misslyckades med att uppdatera leverantören."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Det gick inte att uppdatera trådinställningarna."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "öppnas i ny flik"
|
msgstr "öppnas i ny flik"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Valfri anteckning till agenten"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Valfri anteckning till agenten…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Valfritt kan du ange ett lösenord så att endast personer med lösenordet kan visa ditt CV via länken."
|
msgstr "Valfritt kan du ange ett lösenord så att endast personer med lösenordet kan visa ditt CV via länken."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Publikationer"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Utgivare"
|
msgstr "Utgivare"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Rå JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Gör om poäng"
|
msgstr "Gör om poäng"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktivt CV v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktivt CV v4 (JSON)"
|
msgstr "Reaktivt CV v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Läste en bilaga"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Läs guiden för att tillämpa anpassade stilar."
|
msgstr "Läs guiden för att tillämpa anpassade stilar."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Läste CV:t"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Läser annonsen…"
|
msgstr "Läser annonsen…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Återställa"
|
msgstr "Återställa"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Återställa CV:t till före den här patchen? Detta kommer att återställa den här patchen och alla patchar som installerats efter den."
|
msgstr "Återställ CV:t till innan den här patchen?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "CV-analysen är klar."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "CV-innehåll"
|
msgstr "CV-innehåll"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "CV-redigering"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "CV-fil"
|
msgstr "CV-fil"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "CV"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Försöka igen"
|
msgstr "Försöka igen"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Granska redigeringar"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Granska CV:t mot en arbetsbeskrivning och ställ frågor till mig innan du ändrar osäkra avsnitt."
|
msgstr "Granska CV:t mot en arbetsbeskrivning och ställ frågor till mig innan du ändrar osäkra avsnitt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Granska den här redigeringen"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Omarbeta sammanfattningen så att den riktar sig till en roll som senior teknisk chef utan att låta generisk."
|
msgstr "Omarbeta sammanfattningen så att den riktar sig till en roll som senior teknisk chef utan att låta generisk."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Rotation"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Kör din första analys för att få ett scorecard, styrkor och prioriterade förslag."
|
msgstr "Kör din första analys för att få ett scorecard, styrkor och prioriterade förslag."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Körs…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ryska"
|
msgstr "Ryska"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Källa"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Källkod"
|
msgstr "Källkod"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Källa: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Källor"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Mellanrum (horisontellt)"
|
msgstr "Mellanrum (horisontellt)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Den här assistenten kunde inte öppnas."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Detta datum kommer inte att läsas korrekt."
|
msgstr "Detta datum kommer inte att läsas korrekt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Den här redigeringsförfrågan kan inte längre besvaras."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Denna e-postadress kommer inte att kännas igen."
|
msgstr "Denna e-postadress kommer inte att kännas igen."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Detta hjälper dig att identifiera den senare, om du planerar att ha fle
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Detta kommer att ta bort alla objekt från detta avsnitt."
|
msgstr "Detta kommer att ta bort alla objekt från detta avsnitt."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Detta rullar tillbaka den här patchen och alla patchar som tillämpats efter den."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Växla höger sidofält"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Växla trådar"
|
msgstr "Växla trådar"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokens: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokens: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokens: {total} ({cached} cachade)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Spåra ett jobb du ansöker till och länka det CV du skickade."
|
msgstr "Spåra ett jobb du ansöker till och länka det CV du skickade."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Vi kunde inte identifiera formatet automatiskt — vänligen välj det o
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Vi kunde inte hitta den sidan"
|
msgstr "Vi kunde inte hitta den sidan"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Webbsökning"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Zooma ut"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "விண்ணப்பிக்கப்பட்டது"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "அன்று விண்ணப்பித்தது"
|
msgstr "அன்று விண்ணப்பித்தது"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "அங்கீகரி"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "அங்கீகரிக்கப்பட்டது — ஏஜென்டுக்காகக் காத்திருக்கிறது…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "அரபிக்"
|
msgstr "அரபிக்"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "உங்கள் API விசையை நீக்கிக் க
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "உங்கள் ரெஸ்யூமியை நீக்கிக் கொண்டிருக்கிறது..."
|
msgstr "உங்கள் ரெஸ்யூமியை நீக்கிக் கொண்டிருக்கிறது..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "நிராகரிக்கப்பட்டது — ஏஜென்டுக்காகக் காத்திருக்கிறது…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "நிராகரி"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "நீங்கள் என்ன செய்தீர்கள் என்பதை விவரிக்கவும்."
|
msgstr "நீங்கள் என்ன செய்தீர்கள் என்பதை விவரிக்கவும்."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "நன்கொடை அளிக்கவும்"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume-க்கு நன்கொடை அளிக்கவும்"
|
msgstr "Reactive Resume-க்கு நன்கொடை அளிக்கவும்"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "முடிந்தது"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "முழுத்திரை பயன்முறையில் உ
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "தேதியைத் திருத்து"
|
msgstr "தேதியைத் திருத்து"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "திருத்தம் நிராகரிக்கப்பட்டது"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "உங்கள் சுயவிவரத்தை எந்தவி
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "ஏற்றுமதி செய்யப்பட்ட குழாய்-ஓட்டம்.png"
|
msgstr "ஏற்றுமதி செய்யப்பட்ட குழாய்-ஓட்டம்.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "தோல்வியடைந்தது"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "வாழ்க்கை வரலாற்றை பகுப்பாய்வு செய்யத் தவறியது."
|
msgstr "வாழ்க்கை வரலாற்றை பகுப்பாய்வு செய்யத் தவறியது."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "செயலியைத் துண்டிக்கத் தவற
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "வழங்குநரைப் புதுப்பிக்க முடியவில்லை."
|
msgstr "வழங்குநரைப் புதுப்பிக்க முடியவில்லை."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "த்ரெட் அமைப்புகளைப் புதுப்பிக்க முடியவில்லை."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ஓப்பன்ரவுட்டர்"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "புதிய தாவலில் திறக்கிறது"
|
msgstr "புதிய தாவலில் திறக்கிறது"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ஏஜென்டுக்கான விருப்பக் குறிப்பு"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ஏஜென்டுக்கான விருப்பக் குறிப்பு…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "விருப்பமாக, ஒரு கடவுச்சொல்லை அமைக்கலாம்; அப்போது அந்த கடவுச்சொல்லை தெரிந்தவர்களுக்கே இணைப்பின் மூலம் உங்கள் ரெஸ்யூமியைப் பார்க்க முடியும்."
|
msgstr "விருப்பமாக, ஒரு கடவுச்சொல்லை அமைக்கலாம்; அப்போது அந்த கடவுச்சொல்லை தெரிந்தவர்களுக்கே இணைப்பின் மூலம் உங்கள் ரெஸ்யூமியைப் பார்க்க முடியும்."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "வெளியீடுகள்"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "பதிப்பாளர்"
|
msgstr "பதிப்பாளர்"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "மூல JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "மீண்டும் மதிப்பெண்"
|
msgstr "மீண்டும் மதிப்பெண்"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "ரியாக்டிவ் ரெஸ்யூம் v<0>{__APP_VERSI
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "எதிர்வினை ரெஸ்யூம் v4 (ஜேசன்)"
|
msgstr "எதிர்வினை ரெஸ்யூம் v4 (ஜேசன்)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "ஒரு இணைப்பைப் படித்தது"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "தனிப்பயன் பாணிகளைப் பயன்படுத்துதல் வழிகாட்டியைப் படிக்கவும்."
|
msgstr "தனிப்பயன் பாணிகளைப் பயன்படுத்துதல் வழிகாட்டியைப் படிக்கவும்."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "சுயவிவரத்தைப் படித்தது"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "அறிவிப்பைப் படிக்கிறது…"
|
msgstr "அறிவிப்பைப் படிக்கிறது…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "மீட்டெடு"
|
msgstr "மீட்டெடு"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "இந்தப் பேட்ச்சிற்கு முந்தைய நிலைக்கு மீட்டமைப்பதா? இது இந்தப் பேட்ச்சையும், இதற்குப் பிறகு செயல்படுத்தப்பட்ட பேட்ச்கள் அனைத்தையும் பின்னோக்கிச் செலுத்தும்."
|
msgstr "இந்தப் பேட்ச்சுக்கு முந்தைய நிலைக்கு சுயவிவரத்தை மீட்டெடுக்கவா?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "விண்ணப்பப் பகுப்பாய்வு நி
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "சுயவிவர உள்ளடக்கம்"
|
msgstr "சுயவிவர உள்ளடக்கம்"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "சுயவிவரத் திருத்தம்"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ரெஸ்யூம் கோப்பு"
|
msgstr "ரெஸ்யூம் கோப்பு"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "ரெஸ்யூமிகள்"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "மீண்டும் முயற்சிக்கவும்"
|
msgstr "மீண்டும் முயற்சிக்கவும்"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "திருத்தங்களை மதிப்பாய்வு செய்"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "பணி விவரத்துடன் சுயவிவரத்தை ஒப்பிட்டுப் பார்த்து, உறுதியற்ற பகுதிகளை மாற்றுவதற்கு முன் என்னிடம் கேள்விகளைக் கேளுங்கள்."
|
msgstr "பணி விவரத்துடன் சுயவிவரத்தை ஒப்பிட்டுப் பார்த்து, உறுதியற்ற பகுதிகளை மாற்றுவதற்கு முன் என்னிடம் கேள்விகளைக் கேளுங்கள்."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "இந்தத் திருத்தத்தை மதிப்பாய்வு செய்"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "பொதுவானதாகத் தோன்றாமல், மூத்த பொறியியல் மேலாளர் பதவியைக் குறிவைக்கும் வகையில் சுருக்கத்தை மாற்றி அமைக்கவும்."
|
msgstr "பொதுவானதாகத் தோன்றாமல், மூத்த பொறியியல் மேலாளர் பதவியைக் குறிவைக்கும் வகையில் சுருக்கத்தை மாற்றி அமைக்கவும்."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "சுழற்சி"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "மதிப்பெண் அட்டை, பலங்கள் மற்றும் முன்னுரிமைப்படுத்தப்பட்ட பரிந்துரைகளைப் பெற உங்கள் முதல் பகுப்பாய்வை இயக்கவும்."
|
msgstr "மதிப்பெண் அட்டை, பலங்கள் மற்றும் முன்னுரிமைப்படுத்தப்பட்ட பரிந்துரைகளைப் பெற உங்கள் முதல் பகுப்பாய்வை இயக்கவும்."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "இயங்குகிறது…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ரஷ்யன்"
|
msgstr "ரஷ்யன்"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "ஆதாரம்"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "மூல குறியீடு"
|
msgstr "மூல குறியீடு"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "மூலம்: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "ஆதாரங்கள்"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "இடைவெளி (கிடைமட்ட)"
|
msgstr "இடைவெளி (கிடைமட்ட)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "இந்த உதவியாளரைத் திறக்க மு
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "இந்த தேதி சரியாக படிக்கப்படாது."
|
msgstr "இந்த தேதி சரியாக படிக்கப்படாது."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "இந்தத் திருத்தக் கோரிக்கைக்கு இனி பதிலளிக்க முடியாது."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "இந்த மின்னஞ்சல் முகவரி அங்கீகரிக்கப்படாது."
|
msgstr "இந்த மின்னஞ்சல் முகவரி அங்கீகரிக்கப்படாது."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "நீங்கள் பல பாஸ்கீகளை வைத்த
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "இது இந்தப் பிரிவிலிருந்து அனைத்துப் பொருட்களையும் நீக்கும்."
|
msgstr "இது இந்தப் பிரிவிலிருந்து அனைத்துப் பொருட்களையும் நீக்கும்."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "இது இந்தப் பேட்ச்சையும் அதன் பிறகு பயன்படுத்தப்பட்ட அனைத்துப் பேட்ச்களையும் திரும்பப் பெறும்."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "வலது பக்கப் பட்டை மாற்று"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "இழைகளை நிலைமாற்று"
|
msgstr "இழைகளை நிலைமாற்று"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "டோக்கன்கள்: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "டோக்கன்கள்: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "டோக்கன்கள்: {total} ({cached} கேச் செய்யப்பட்டவை)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "நீங்கள் விண்ணப்பிக்கும் வேலையைக் கண்காணித்து, நீங்கள் அனுப்பிய விண்ணப்பத்தை இணைக்கவும்."
|
msgstr "நீங்கள் விண்ணப்பிக்கும் வேலையைக் கண்காணித்து, நீங்கள் அனுப்பிய விண்ணப்பத்தை இணைக்கவும்."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "எங்களால் வடிவமைப்பைத் தான
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "எங்களால் அந்தப் பக்கத்தைக் கண்டுபிடிக்க முடியவில்லை."
|
msgstr "எங்களால் அந்தப் பக்கத்தைக் கண்டுபிடிக்க முடியவில்லை."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "இணையத் தேடல்"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "சிறிதாக்கு"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ஜூலு"
|
msgstr "ஜூலு"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "దరఖాస్తు చేశారు"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "దరఖాస్తు చేసిన తేదీ"
|
msgstr "దరఖాస్తు చేసిన తేదీ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "ఆమోదించు"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "ఆమోదించబడింది — ఏజెంట్ కోసం వేచి ఉంది…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "అరబిక్"
|
msgstr "అరబిక్"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "మీ API కీ తొలగించబడుతోంది..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "మీ రిజ్యూమ్ను తొలగిస్తున్నారు..."
|
msgstr "మీ రిజ్యూమ్ను తొలగిస్తున్నారు..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "తిరస్కరించబడింది — ఏజెంట్ కోసం వేచి ఉంది…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "తిరస్కరించు"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "మీరు ఏమి చేశారో వివరించండి, తద్వారా నమోదు సరిపోలిక కోసం కీలకపదాలను అందిస్తుంది."
|
msgstr "మీరు ఏమి చేశారో వివరించండి, తద్వారా నమోదు సరిపోలిక కోసం కీలకపదాలను అందిస్తుంది."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "విరాళం ఇవ్వండి"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume కు దానం చేయండి"
|
msgstr "Reactive Resume కు దానం చేయండి"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "పూర్తయింది"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "ఫుల్స్క్రీన్ మోడ్లో కంట
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "తేదీని సవరించండి"
|
msgstr "తేదీని సవరించండి"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "సవరణ తిరస్కరించబడింది"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ఎటువంటి నిరీక్షణ లేదా ఆలస్
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png ఎగుమతి చేయబడింది"
|
msgstr "pipeline-flow.png ఎగుమతి చేయబడింది"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "విఫలమైంది"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "రిజ్యూమ్ను విశ్లేషించడంలో విఫలమయ్యాము."
|
msgstr "రిజ్యూమ్ను విశ్లేషించడంలో విఫలమయ్యాము."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "ప్రొవైడర్ను అన్లింక్ చే
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "ప్రొవైడర్ను అప్డేట్ చేయడంలో విఫలమైంది."
|
msgstr "ప్రొవైడర్ను అప్డేట్ చేయడంలో విఫలమైంది."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "థ్రెడ్ సెట్టింగ్లను నవీకరించడంలో విఫలమైంది."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "ఓపెన్రౌటర్"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "కొత్త ట్యాబ్లో తెరవబడుతుంది"
|
msgstr "కొత్త ట్యాబ్లో తెరవబడుతుంది"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "ఏజెంట్ కోసం ఐచ్ఛిక గమనిక"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "ఏజెంట్ కోసం ఐచ్ఛిక గమనిక…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "ఆప్షనల్గా, పాస్వర్డ్ సెట్ చేయండి, అప్పుడు పాస్వర్డ్ ఉన్నవారు మాత్రమే లింక్ ద్వారా మీ రిజ్యూమ్ను చూడగలుగుతారు."
|
msgstr "ఆప్షనల్గా, పాస్వర్డ్ సెట్ చేయండి, అప్పుడు పాస్వర్డ్ ఉన్నవారు మాత్రమే లింక్ ద్వారా మీ రిజ్యూమ్ను చూడగలుగుతారు."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "పబ్లికేషన్స్"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "పబ్లిషర్"
|
msgstr "పబ్లిషర్"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "ముడి JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "మళ్లీ స్కోర్ చేయండి"
|
msgstr "మళ్లీ స్కోర్ చేయండి"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "రియాక్టివ్ రెజ్యూమ్ v<0>{__APP_VERSI
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "రియాక్టివ్ రెజ్యూమ్ v4 (JSON)"
|
msgstr "రియాక్టివ్ రెజ్యూమ్ v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "అటాచ్మెంట్ను చదివింది"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "కస్టమ్ స్టైల్స్ వర్తింపజేయడం గైడ్ను చదవండి."
|
msgstr "కస్టమ్ స్టైల్స్ వర్తింపజేయడం గైడ్ను చదవండి."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "రెజ్యూమెను చదివింది"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "పోస్టింగ్ను చదువుతోంది…"
|
msgstr "పోస్టింగ్ను చదువుతోంది…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "పునరుద్ధరించండి"
|
msgstr "పునరుద్ధరించండి"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "ఈ ప్యాచ్కు ముందు స్థితికి రెస్యూమ్ను పునరుద్ధరించాలా? ఇది ఈ ప్యాచ్ను మరియు దాని తర్వాత వర్తింపజేసిన ఏవైనా ప్యాచ్లను వెనక్కి తీసుకుంటుంది."
|
msgstr "ఈ ప్యాచ్కు ముందు స్థితికి రెజ్యూమెను పునరుద్ధరించాలా?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "రిజ్యూమ్ విశ్లేషణ పూర్తయి
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "పునఃప్రారంభ కంటెంట్"
|
msgstr "పునఃప్రారంభ కంటెంట్"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "రెజ్యూమె సవరణ"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "రెజ్యూమే ఫైల్"
|
msgstr "రెజ్యూమే ఫైల్"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "రిజ్యూమ్స్"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "మళ్ళీ ప్రయత్నించండి"
|
msgstr "మళ్ళీ ప్రయత్నించండి"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "సవరణలను సమీక్షించండి"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "ఉద్యోగ వివరణతో రెజ్యూమెను సరిపోల్చి చూసుకోండి మరియు సందేహాస్పదమైన విభాగాలలో మార్పులు చేసే ముందు నన్ను ప్రశ్నలు అడగండి."
|
msgstr "ఉద్యోగ వివరణతో రెజ్యూమెను సరిపోల్చి చూసుకోండి మరియు సందేహాస్పదమైన విభాగాలలో మార్పులు చేసే ముందు నన్ను ప్రశ్నలు అడగండి."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ఈ సవరణను సమీక్షించండి"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "సారాంశాన్ని సాధారణంగా అనిపించకుండా, సీనియర్ ఇంజనీరింగ్ మేనేజర్ పాత్రను లక్ష్యంగా చేసుకునే విధంగా తిరిగి రూపొందించండి."
|
msgstr "సారాంశాన్ని సాధారణంగా అనిపించకుండా, సీనియర్ ఇంజనీరింగ్ మేనేజర్ పాత్రను లక్ష్యంగా చేసుకునే విధంగా తిరిగి రూపొందించండి."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "రోటేషన్"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "స్కోర్కార్డ్, బలాలు మరియు ప్రాధాన్యతా సూచనలను పొందడానికి మీ మొదటి విశ్లేషణను అమలు చేయండి."
|
msgstr "స్కోర్కార్డ్, బలాలు మరియు ప్రాధాన్యతా సూచనలను పొందడానికి మీ మొదటి విశ్లేషణను అమలు చేయండి."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "అమలవుతోంది…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "రష్యన్"
|
msgstr "రష్యన్"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "మూలం"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "సోర్స్ కోడ్"
|
msgstr "సోర్స్ కోడ్"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "మూలం: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "మూలాలు"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "స్పేసింగ్ (అడ్డంగా)"
|
msgstr "స్పేసింగ్ (అడ్డంగా)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ఈ సహాయకుడిని తెరవలేకపోయిం
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "ఈ తేదీ సరిగ్గా చదవబడదు."
|
msgstr "ఈ తేదీ సరిగ్గా చదవబడదు."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "ఈ సవరణ అభ్యర్థనకు ఇకపై సమాధానం ఇవ్వడం సాధ్యం కాదు."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ఈ ఇమెయిల్ చిరునామా గుర్తించబడదు."
|
msgstr "ఈ ఇమెయిల్ చిరునామా గుర్తించబడదు."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "మీరు బహుళ పాస్కీలను కలిగి
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "ఇది ఈ విభాగంలోని అన్ని అంశాలను తొలగిస్తుంది."
|
msgstr "ఇది ఈ విభాగంలోని అన్ని అంశాలను తొలగిస్తుంది."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "ఇది ఈ ప్యాచ్ను, దాని తర్వాత వర్తింపజేసిన అన్ని ప్యాచ్లను వెనక్కి తీసుకుంటుంది."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "కుడి వైపు పక్క పట్టీని టోగ
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "థ్రెడ్లను టోగుల్ చేయండి"
|
msgstr "థ్రెడ్లను టోగుల్ చేయండి"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "టోకెన్లు: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "టోకెన్లు: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "టోకెన్లు: {total} ({cached} కాష్ చేయబడినవి)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "మీరు దరఖాస్తు చేస్తున్న ఉద్యోగాన్ని ట్రాక్ చేసి, పంపిన రెజ్యూమ్ను లింక్ చేయండి."
|
msgstr "మీరు దరఖాస్తు చేస్తున్న ఉద్యోగాన్ని ట్రాక్ చేసి, పంపిన రెజ్యూమ్ను లింక్ చేయండి."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "మేము ఫార్మాట్ను స్వయంచాల
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "మేము ఆ పేజీని కనుగొనలేకపోయాము"
|
msgstr "మేము ఆ పేజీని కనుగొనలేకపోయాము"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "వెబ్ శోధన"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "జూమ్ అవుట్ చేయండి"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "జులు"
|
msgstr "జులు"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "สมัครแล้ว"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "สมัครเมื่อ"
|
msgstr "สมัครเมื่อ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "อนุมัติ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "อนุมัติแล้ว — กำลังรอตัวแทน…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "อารบิก"
|
msgstr "อารบิก"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "กำลังลบคีย์ API ของคุณ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "กำลังลบเรซูเม่ของคุณ..."
|
msgstr "กำลังลบเรซูเม่ของคุณ..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "ปฏิเสธแล้ว — กำลังรอตัวแทน…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "ปฏิเสธ"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "อธิบายสิ่งที่คุณทำเพื่อให้รายการมีส่วนช่วยในการจับคู่คำหลัก"
|
msgstr "อธิบายสิ่งที่คุณทำเพื่อให้รายการมีส่วนช่วยในการจับคู่คำหลัก"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "บริจาค"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "บริจาคให้กับ Reactive Resume"
|
msgstr "บริจาคให้กับ Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "เสร็จสิ้น"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "แก้ไขเนื้อหาในโหมดเต็มหน
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "แก้ไขวันที่"
|
msgstr "แก้ไขวันที่"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "การแก้ไขถูกปฏิเสธ"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "ส่งออกเรซูเม่ของคุณเป็นไ
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "ส่งออก pipeline-flow.png แล้ว"
|
msgstr "ส่งออก pipeline-flow.png แล้ว"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ล้มเหลว"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "ไม่สามารถวิเคราะห์ประวัติการทำงานได้"
|
msgstr "ไม่สามารถวิเคราะห์ประวัติการทำงานได้"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "ไม่สามารถยกเลิกการเชื่อม
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "ไม่สามารถอัปเดตผู้ให้บริการได้"
|
msgstr "ไม่สามารถอัปเดตผู้ให้บริการได้"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "ไม่สามารถอัปเดตการตั้งค่ากระทู้ได้"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "โอเพ่นรูเตอร์"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "เปิดในแท็บใหม่"
|
msgstr "เปิดในแท็บใหม่"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "หมายเหตุถึงตัวแทน (ไม่บังคับ)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "หมายเหตุถึงตัวแทน (ไม่บังคับ)…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "คุณสามารถตั้งรหัสผ่านเพิ่มเติมได้ เพื่อให้เฉพาะผู้ที่มีรหัสผ่านจึงจะดูเรซูเม่ของคุณผ่านลิงก์ได้"
|
msgstr "คุณสามารถตั้งรหัสผ่านเพิ่มเติมได้ เพื่อให้เฉพาะผู้ที่มีรหัสผ่านจึงจะดูเรซูเม่ของคุณผ่านลิงก์ได้"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "สิ่งตีพิมพ์"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "สำนักพิมพ์"
|
msgstr "สำนักพิมพ์"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON ดิบ"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "ให้คะแนนใหม่"
|
msgstr "ให้คะแนนใหม่"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "เรแอคทีฟ เรซูเม่ v4 (JSON)"
|
msgstr "เรแอคทีฟ เรซูเม่ v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "อ่านไฟล์แนบแล้ว"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "โปรดอ่านคู่มือการใช้สไตล์ที่กำหนดเอง"
|
msgstr "โปรดอ่านคู่มือการใช้สไตล์ที่กำหนดเอง"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "อ่านเรซูเม่แล้ว"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "กำลังอ่านประกาศ…"
|
msgstr "กำลังอ่านประกาศ…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "คืนค่า"
|
msgstr "คืนค่า"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "กู้คืนสถานะก่อนการติดตั้งแพทช์นี้หรือไม่? การดำเนินการนี้จะย้อนกลับแพทช์นี้และแพทช์ใดๆ ที่ติดตั้งหลังจากนั้น"
|
msgstr "กู้คืนเรซูเม่กลับไปเป็นสถานะก่อนแพทช์นี้หรือไม่?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "การวิเคราะห์ประวัติย่อเส
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "เนื้อหาประวัติย่อ"
|
msgstr "เนื้อหาประวัติย่อ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "การแก้ไขเรซูเม่"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "ไฟล์เรซูเม่"
|
msgstr "ไฟล์เรซูเม่"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "เรซูเม่"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "ลองใหม่อีกครั้ง"
|
msgstr "ลองใหม่อีกครั้ง"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "ตรวจสอบการแก้ไข"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "โปรดตรวจสอบประวัติการทำงานของคุณเทียบกับรายละเอียดงาน และสอบถามฉันได้ก่อนที่จะแก้ไขส่วนใดส่วนหนึ่งที่ไม่แน่ใจ"
|
msgstr "โปรดตรวจสอบประวัติการทำงานของคุณเทียบกับรายละเอียดงาน และสอบถามฉันได้ก่อนที่จะแก้ไขส่วนใดส่วนหนึ่งที่ไม่แน่ใจ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "ตรวจสอบการแก้ไขนี้"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "ปรับปรุงบทสรุปให้เหมาะสมกับตำแหน่งผู้จัดการฝ่ายวิศวกรรมอาวุโสโดยไม่ให้ฟังดูทั่วไปเกินไป"
|
msgstr "ปรับปรุงบทสรุปให้เหมาะสมกับตำแหน่งผู้จัดการฝ่ายวิศวกรรมอาวุโสโดยไม่ให้ฟังดูทั่วไปเกินไป"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "การหมุน"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "ดำเนินการวิเคราะห์ครั้งแรกของคุณเพื่อรับสกอร์การ์ด จุดแข็ง และข้อเสนอแนะที่จัดลำดับความสำคัญ"
|
msgstr "ดำเนินการวิเคราะห์ครั้งแรกของคุณเพื่อรับสกอร์การ์ด จุดแข็ง และข้อเสนอแนะที่จัดลำดับความสำคัญ"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "กำลังทำงาน…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "รัสเซีย"
|
msgstr "รัสเซีย"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "แหล่งที่มา"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "ซอร์สโค้ด"
|
msgstr "ซอร์สโค้ด"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "แหล่งที่มา: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "แหล่งที่มา"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "ระยะห่าง (แนวนอน)"
|
msgstr "ระยะห่าง (แนวนอน)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "ไม่สามารถเปิดผู้ช่วยนี้ไ
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "วันที่นี้จะอ่านไม่ถูกต้อง"
|
msgstr "วันที่นี้จะอ่านไม่ถูกต้อง"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "คำขอแก้ไขนี้ไม่สามารถตอบกลับได้อีกต่อไป"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "ที่อยู่อีเมลนี้จะไม่ถูกจดจำ"
|
msgstr "ที่อยู่อีเมลนี้จะไม่ถูกจดจำ"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "สิ่งนี้จะช่วยให้คุณระบุไ
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "นี่จะลบรายการทั้งหมดออกจากส่วนนี้"
|
msgstr "นี่จะลบรายการทั้งหมดออกจากส่วนนี้"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "การดำเนินการนี้จะยกเลิกแพทช์นี้และแพทช์ทั้งหมดที่ใช้หลังจากนั้น"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "สลับแถบด้านขวา"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "สลับเธรด"
|
msgstr "สลับเธรด"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "โทเค็น: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "โทเค็น: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "โทเค็น: {total} ({cached} จากแคช)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "ติดตามงานที่คุณกำลังสมัครและเชื่อมโยงเรซูเม่ที่ส่งไป"
|
msgstr "ติดตามงานที่คุณกำลังสมัครและเชื่อมโยงเรซูเม่ที่ส่งไป"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "เราไม่สามารถตรวจจับรูปแบ
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "เราไม่พบหน้านั้น"
|
msgstr "เราไม่พบหน้านั้น"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "ค้นหาเว็บ"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "ซูมออก"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "ซูลู"
|
msgstr "ซูลู"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Başvuruldu"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Başvuru tarihi"
|
msgstr "Başvuru tarihi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Onayla"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Onaylandı — ajan bekleniyor…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arapça"
|
msgstr "Arapça"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API anahtarınız siliniyor..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Özgeçmişiniz siliniyor..."
|
msgstr "Özgeçmişiniz siliniyor..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Reddedildi — ajan bekleniyor…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Reddet"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Girişin eşleştirme için anahtar kelimelere katkıda bulunması için ne yaptığınızı açıklayın."
|
msgstr "Girişin eşleştirme için anahtar kelimelere katkıda bulunması için ne yaptığınızı açıklayın."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Bağış yapmak"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reaktif Özgeçmiş'e Bağış Yapın"
|
msgstr "Reaktif Özgeçmiş'e Bağış Yapın"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Tamamlandı"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "İçeriği tam ekran modunda düzenleme"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Tarihi düzenle"
|
msgstr "Tarihi düzenle"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Düzenleme reddedildi"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Özgeçmişinizi herhangi bir bekleme veya gecikme olmadan anında PDF'y
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png dışa aktarıldı"
|
msgstr "pipeline-flow.png dışa aktarıldı"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Başarısız"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Özgeçmiş analiz edilemedi."
|
msgstr "Özgeçmiş analiz edilemedi."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Sağlayıcının bağlantısı kaldırılamadı. Lütfen tekrar deneyin.
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Sağlayıcı güncellenemedi."
|
msgstr "Sağlayıcı güncellenemedi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Konu ayarları güncellenemedi."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "yeni sekmede açılır"
|
msgstr "yeni sekmede açılır"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Ajan için isteğe bağlı not"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Ajan için isteğe bağlı not…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "İsterseniz bir şifre belirleyin, böylece yalnızca şifreye sahip olanlar bağlantı üzerinden özgeçmişinizi görüntüleyebilir."
|
msgstr "İsterseniz bir şifre belirleyin, böylece yalnızca şifreye sahip olanlar bağlantı üzerinden özgeçmişinizi görüntüleyebilir."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Yayınlar"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Yayınlayıcı"
|
msgstr "Yayınlayıcı"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Ham JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Yeniden puanla"
|
msgstr "Yeniden puanla"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktif Özgeçmiş v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktif Özgeçmiş v4 (JSON)"
|
msgstr "Reaktif Özgeçmiş v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Bir eki okudu"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Özel Stilleri Uygulama kılavuzunu okuyun."
|
msgstr "Özel Stilleri Uygulama kılavuzunu okuyun."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Özgeçmişi okudu"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "İlan okunuyor…"
|
msgstr "İlan okunuyor…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Eski haline getirmek"
|
msgstr "Eski haline getirmek"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Bu yamadan önceki haline geri döndür? Bu işlem, bu yamayı ve sonrasında uygulanan tüm yamaları geri alacaktır."
|
msgstr "Özgeçmiş bu yamadan önceki hâline geri yüklensin mi?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Özgeçmiş analizi tamamlandı."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Özgeçmiş içeriği"
|
msgstr "Özgeçmiş içeriği"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Özgeçmiş düzenlemesi"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Özgeçmiş dosyası"
|
msgstr "Özgeçmiş dosyası"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Özgeçmişler"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Tekrar dene"
|
msgstr "Tekrar dene"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Düzenlemeleri incele"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Özgeçmişinizi iş tanımıyla karşılaştırın ve emin olmadığınız bölümleri değiştirmeden önce bana sorular sorun."
|
msgstr "Özgeçmişinizi iş tanımıyla karşılaştırın ve emin olmadığınız bölümleri değiştirmeden önce bana sorular sorun."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Bu düzenlemeyi incele"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Özeti, genel bir ifade kullanmadan, kıdemli mühendislik yöneticisi rolünü hedefleyecek şekilde yeniden düzenleyin."
|
msgstr "Özeti, genel bir ifade kullanmadan, kıdemli mühendislik yöneticisi rolünü hedefleyecek şekilde yeniden düzenleyin."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Döndürme"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Bir puan kartı, güçlü yönler ve önceliklendirilmiş öneriler elde etmek için ilk analizinizi çalıştırın."
|
msgstr "Bir puan kartı, güçlü yönler ve önceliklendirilmiş öneriler elde etmek için ilk analizinizi çalıştırın."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Çalışıyor…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rusça"
|
msgstr "Rusça"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Kaynak"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Kaynak Kod"
|
msgstr "Kaynak Kod"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Kaynak: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Kaynaklar"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Boşluk (Yatay)"
|
msgstr "Boşluk (Yatay)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Bu asistan açılamadı."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Bu tarih doğru okunmayacaktır."
|
msgstr "Bu tarih doğru okunmayacaktır."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Bu düzenleme isteği artık yanıtlanamaz."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Bu e-posta adresi tanınmayacak."
|
msgstr "Bu e-posta adresi tanınmayacak."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Bu, birden fazla geçiş anahtarına sahip olmayı planlıyorsanız, dah
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Bu, bu bölümdeki tüm öğeleri kaldıracaktır."
|
msgstr "Bu, bu bölümdeki tüm öğeleri kaldıracaktır."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Bu işlem, bu yamayı ve sonrasında uygulanan tüm yamaları geri alacaktır."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Sağ kenar çubuğunu aç / kapat"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Konuları açıp kapat"
|
msgstr "Konuları açıp kapat"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token: {total} ({cached} önbelleğe alınmış)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Başvurduğunuz işi takip edin ve gönderdiğiniz özgeçmişi bağlayın."
|
msgstr "Başvurduğunuz işi takip edin ve gönderdiğiniz özgeçmişi bağlayın."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Formatı otomatik olarak algılayamadık — lütfen yukarıdan seçin."
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "O sayfayı bulamadık."
|
msgstr "O sayfayı bulamadık."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Web araması"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Uzaklaştır"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Подано"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Подано"
|
msgstr "Подано"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Схвалити"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Схвалено — очікування агента…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Арабська"
|
msgstr "Арабська"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Видаляємо ваш API-ключ..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Видалення вашого резюме..."
|
msgstr "Видалення вашого резюме..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Відхилено — очікування агента…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Відхилити"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Опишіть, що ви зробили, щоб запис додав ключові слова для відповідності."
|
msgstr "Опишіть, що ви зробили, щоб запис додав ключові слова для відповідності."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Пожертвувати"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Пожертвувати на Reactive Resume"
|
msgstr "Пожертвувати на Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Готово"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Редагувати вміст у повноекранному режи
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Редагувати дату"
|
msgstr "Редагувати дату"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Редагування відхилено"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Експортуйте своє резюме у PDF миттєво, бе
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Експортовано pipeline-flow.png"
|
msgstr "Експортовано pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Помилка"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Не вдалося проаналізувати резюме."
|
msgstr "Не вдалося проаналізувати резюме."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Не вдалося від'єднати провайдера. Спроб
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Не вдалося оновити постачальника."
|
msgstr "Не вдалося оновити постачальника."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Не вдалося оновити налаштування ланцюжка повідомлень."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "відкриється у новій вкладці"
|
msgstr "відкриється у новій вкладці"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Необов'язкова примітка для агента"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Необов'язкова примітка для агента…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "За бажанням встановіть пароль, щоб лише користувачі з паролем могли переглядати ваше резюме через посилання."
|
msgstr "За бажанням встановіть пароль, щоб лише користувачі з паролем могли переглядати ваше резюме через посилання."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Публікації"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Видавець"
|
msgstr "Видавець"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Необроблений JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Переоцінити"
|
msgstr "Переоцінити"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Реактивне резюме v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Реактивне резюме v4 (JSON)"
|
msgstr "Реактивне резюме v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Прочитано вкладення"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Ознайомтеся з посібником із застосування власних стилів."
|
msgstr "Ознайомтеся з посібником із застосування власних стилів."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Прочитано резюме"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Читання оголошення…"
|
msgstr "Читання оголошення…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Відновити"
|
msgstr "Відновити"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Відновити резюме до стану до цього патчу? Це призведе до скасування цього патчу та будь-яких патчів, застосованих після нього."
|
msgstr "Відновити резюме до стану перед цим патчем?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Аналіз резюме завершено."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Зміст резюме"
|
msgstr "Зміст резюме"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Редагування резюме"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Файл резюме"
|
msgstr "Файл резюме"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Резюме"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Повторити спробу"
|
msgstr "Повторити спробу"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Переглянути редагування"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Перегляньте резюме на відповідність опису вакансії та поставте мені запитання, перш ніж вносити зміни до невизначених розділів."
|
msgstr "Перегляньте резюме на відповідність опису вакансії та поставте мені запитання, перш ніж вносити зміни до невизначених розділів."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Переглянути це редагування"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Переробіть резюме, щоб воно було орієнтоване на посаду старшого інженера-менеджера, але не звучало шаблонно."
|
msgstr "Переробіть резюме, щоб воно було орієнтоване на посаду старшого інженера-менеджера, але не звучало шаблонно."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Обертання"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Проведіть перший аналіз, щоб отримати оціночну таблицю, сильні сторони та пріоритетні пропозиції."
|
msgstr "Проведіть перший аналіз, щоб отримати оціночну таблицю, сильні сторони та пріоритетні пропозиції."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Виконується…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Російська"
|
msgstr "Російська"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Джерело"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Вихідний код"
|
msgstr "Вихідний код"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Джерело: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Джерела"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Відступи (горизонтальні)"
|
msgstr "Відступи (горизонтальні)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Цей помічник не вдалося відкрити."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ця дата не буде прочитана правильно."
|
msgstr "Ця дата не буде прочитана правильно."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "На цей запит на редагування більше не можна відповісти."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ця електронна адреса не буде розпізнана."
|
msgstr "Ця електронна адреса не буде розпізнана."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Це допоможе вам ідентифікувати його пі
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Це призведе до видалення всіх елементів з цього розділу."
|
msgstr "Це призведе до видалення всіх елементів з цього розділу."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Це відкотить цей патч і всі патчі, застосовані після нього."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Перемикання правої бічної панелі"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Перемикання тем"
|
msgstr "Перемикання тем"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Токени: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Токени: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Токени: {total} ({cached} кешовано)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Відстежуйте вакансію, на яку подаєтеся, і прив'яжіть надіслане резюме."
|
msgstr "Відстежуйте вакансію, на яку подаєтеся, і прив'яжіть надіслане резюме."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Нам не вдалося автоматично визначити ф
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Нам не вдалося знайти цю сторінку"
|
msgstr "Нам не вдалося знайти цю сторінку"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Пошук в інтернеті"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Зменшити"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Зулу"
|
msgstr "Зулу"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Topshirildi"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Ariza sanasi"
|
msgstr "Ariza sanasi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Tasdiqlash"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Tasdiqlandi — agent kutilmoqda…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arab tili"
|
msgstr "Arab tili"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "API kalitingiz o'chirilmoqda..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Rezyumeni o‘chirilmoqda..."
|
msgstr "Rezyumeni o‘chirilmoqda..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Rad etildi — agent kutilmoqda…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Rad etish"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Nima qilganingizni tasvirlab bering, shunda kirish mos keladigan kalit so'zlarga hissa qo'shadi."
|
msgstr "Nima qilganingizni tasvirlab bering, shunda kirish mos keladigan kalit so'zlarga hissa qo'shadi."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Xayriya qiling"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Reactive Resume'ga xayriya qiling"
|
msgstr "Reactive Resume'ga xayriya qiling"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Bajarildi"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Mazmunni to'liq ekran rejimida tahrirlang"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Sanani tahrirlash"
|
msgstr "Sanani tahrirlash"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Tahrir rad etildi"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Rezyumeni PDF formatiga darhol, hech qanday kutish yoki kechikishlarsiz
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "pipeline-flow.png eksport qilindi"
|
msgstr "pipeline-flow.png eksport qilindi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Muvaffaqiyatsiz"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Rezyumeni tahlil qilish muvaffaqiyatsiz bo'ldi."
|
msgstr "Rezyumeni tahlil qilish muvaffaqiyatsiz bo'ldi."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Provayderni bog'lanishni bekor qila olmadik. Iltimos, yana urinib ko'rin
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Provayderni yangilashda xatolik yuz berdi."
|
msgstr "Provayderni yangilashda xatolik yuz berdi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Mavzu sozlamalarini yangilab bo'lmadi."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "Ochiq marshrutizator"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "yangi tabda ochiladi"
|
msgstr "yangi tabda ochiladi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Agent uchun ixtiyoriy izoh"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Agent uchun ixtiyoriy izoh…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Istasangiz, maxfiy soʻz kiriting, faqat parolni bilganlar havola orqali rezyumeni koʻra oladi."
|
msgstr "Istasangiz, maxfiy soʻz kiriting, faqat parolni bilganlar havola orqali rezyumeni koʻra oladi."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Nashrlar"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Nashriyotchi"
|
msgstr "Nashriyotchi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "Xom JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Qayta baholash"
|
msgstr "Qayta baholash"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reaktiv rezyume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Reaktiv Rezume v4 (JSON)"
|
msgstr "Reaktiv Rezume v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Ilovani o'qidi"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Maxsus uslublarni qo'llash qo'llanmasini o'qing."
|
msgstr "Maxsus uslublarni qo'llash qo'llanmasini o'qing."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Rezyumeni o'qidi"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "E'lon o'qilmoqda…"
|
msgstr "E'lon o'qilmoqda…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Qayta tiklash"
|
msgstr "Qayta tiklash"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Rezyume ushbu yamoqni avvalgi holatiga qaytarilsinmi? Bu ushbu yamoqni va undan keyin qo'llanilgan barcha yamoqlarni orqaga qaytaradi."
|
msgstr "Rezyume ushbu yamoqdan oldingi holatiga qaytarilsinmi?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Rezyume tahlili yakunlandi."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Rezyume mazmuni"
|
msgstr "Rezyume mazmuni"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Rezyume tahriri"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Rezyume fayli"
|
msgstr "Rezyume fayli"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Rezyumelar"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Qayta urinish"
|
msgstr "Qayta urinish"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Tahrirlarni ko'rib chiqish"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Rezyumeni ish tavsifi bilan taqqoslang va noaniq bo'limlarni o'zgartirishdan oldin menga savollar bering."
|
msgstr "Rezyumeni ish tavsifi bilan taqqoslang va noaniq bo'limlarni o'zgartirishdan oldin menga savollar bering."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Ushbu tahrirni ko'rib chiqish"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Xulosa umumiy ko'rinmasdan, katta muhandislik menejeri lavozimiga yo'naltirilgan bo'lishi uchun uni qayta ishlang."
|
msgstr "Xulosa umumiy ko'rinmasdan, katta muhandislik menejeri lavozimiga yo'naltirilgan bo'lishi uchun uni qayta ishlang."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Aylantirish"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Birinchi tahlilingizni ishga tushiring va ballar jadvali, kuchli tomonlar hamda ustuvor tavsiyalarni oling."
|
msgstr "Birinchi tahlilingizni ishga tushiring va ballar jadvali, kuchli tomonlar hamda ustuvor tavsiyalarni oling."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Bajarilmoqda…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Rus tili"
|
msgstr "Rus tili"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Manba"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Manba kodi"
|
msgstr "Manba kodi"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Manba: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Manbalar"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Bo'shliq (gorizontal)"
|
msgstr "Bo'shliq (gorizontal)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Bu yordamchini ochib bo'lmadi."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Bu sana to'g'ri o'qilmaydi."
|
msgstr "Bu sana to'g'ri o'qilmaydi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Bu tahrirlash so'roviga endi javob berib bo'lmaydi."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Ushbu elektron pochta manzili tanib bo'lmaydi."
|
msgstr "Ushbu elektron pochta manzili tanib bo'lmaydi."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Agar bir nechta passkey bo'lishni rejalashtirsangiz, bu keyinchalik uni
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Bu bo'limdagi barcha elementlarni o'chirib tashlaydi."
|
msgstr "Bu bo'limdagi barcha elementlarni o'chirib tashlaydi."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Bu ushbu yamoqni va undan keyin qo'llanilgan barcha yamoqlarni orqaga qaytaradi."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "O'ng yon panelni yoqish/o'chirish"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Mavzularni ochish/o'chirish"
|
msgstr "Mavzularni ochish/o'chirish"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Tokenlar: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Tokenlar: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Tokenlar: {total} ({cached} keshlangan)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Ariza topshirayotgan ishni kuzating va yuborgan rezyumeni bog'lang."
|
msgstr "Ariza topshirayotgan ishni kuzating va yuborgan rezyumeni bog'lang."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Formatni avtomatik ravishda aniqlay olmadik — iltimos, uni yuqoridan t
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Biz o'sha sahifani topa olmadik"
|
msgstr "Biz o'sha sahifani topa olmadik"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Veb-qidiruv"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Kichraytirish"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "Đã ứng tuyển"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "Đã ứng tuyển vào"
|
msgstr "Đã ứng tuyển vào"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "Phê duyệt"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "Đã phê duyệt — đang chờ tác nhân…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Tiếng Ả Rập"
|
msgstr "Tiếng Ả Rập"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "Đang xoá khoá API của bạn..."
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "Đang xóa bản lý lịch của bạn..."
|
msgstr "Đang xóa bản lý lịch của bạn..."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "Đã từ chối — đang chờ tác nhân…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "Từ chối"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "Mô tả những gì bạn đã làm để mục nhập đóng góp từ khóa cho việc đối sánh."
|
msgstr "Mô tả những gì bạn đã làm để mục nhập đóng góp từ khóa cho việc đối sánh."
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "Quyên tặng"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "Đóng góp cho Reactive Resume"
|
msgstr "Đóng góp cho Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Hoàn tất"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "Chỉnh sửa nội dung ở chế độ toàn màn hình"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "Sửa ngày"
|
msgstr "Sửa ngày"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "Chỉnh sửa bị từ chối"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "Xuất CV của bạn sang PDF ngay lập tức, không cần chờ đ
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "Đã xuất pipeline-flow.png"
|
msgstr "Đã xuất pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Thất bại"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "Không thể phân tích sơ yếu lý lịch."
|
msgstr "Không thể phân tích sơ yếu lý lịch."
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "Không thể hủy liên kết nhà cung cấp. Vui lòng thử lại."
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "Không thể cập nhật nhà cung cấp."
|
msgstr "Không thể cập nhật nhà cung cấp."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "Không thể cập nhật cài đặt chủ đề."
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "mở ở tab mới"
|
msgstr "mở ở tab mới"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "Ghi chú tùy chọn cho tác nhân"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "Ghi chú tùy chọn cho tác nhân…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "Tùy chọn, đặt mật khẩu để chỉ những ai có mật khẩu mới có thể xem sơ yếu lý lịch của bạn qua liên kết này."
|
msgstr "Tùy chọn, đặt mật khẩu để chỉ những ai có mật khẩu mới có thể xem sơ yếu lý lịch của bạn qua liên kết này."
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "Ấn phẩm"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Nhà xuất bản"
|
msgstr "Nhà xuất bản"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "JSON thô"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "Chấm điểm lại"
|
msgstr "Chấm điểm lại"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "Sơ yếu lý lịch phản hồi phiên bản 4 (JSON)"
|
msgstr "Sơ yếu lý lịch phản hồi phiên bản 4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "Đã đọc tệp đính kèm"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "Hãy đọc hướng dẫn Áp dụng kiểu tùy chỉnh."
|
msgstr "Hãy đọc hướng dẫn Áp dụng kiểu tùy chỉnh."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "Đã đọc sơ yếu lý lịch"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "Đang đọc tin tuyển dụng…"
|
msgstr "Đang đọc tin tuyển dụng…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "Khôi phục"
|
msgstr "Khôi phục"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "Khôi phục trạng thái trước khi cập nhật bản vá này? Thao tác này sẽ hoàn tác bản vá này và bất kỳ bản vá nào được áp dụng sau đó."
|
msgstr "Khôi phục sơ yếu lý lịch về trạng thái trước bản vá này?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "Việc phân tích sơ yếu lý lịch đã hoàn tất."
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "Nội dung sơ yếu lý lịch"
|
msgstr "Nội dung sơ yếu lý lịch"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "Chỉnh sửa sơ yếu lý lịch"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "Tệp CV"
|
msgstr "Tệp CV"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "Sơ yếu lý lịch"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "Thử lại"
|
msgstr "Thử lại"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "Xem lại các chỉnh sửa"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "Hãy xem lại sơ yếu lý lịch so với mô tả công việc và đặt câu hỏi cho tôi trước khi thay đổi những phần không chắc chắn."
|
msgstr "Hãy xem lại sơ yếu lý lịch so với mô tả công việc và đặt câu hỏi cho tôi trước khi thay đổi những phần không chắc chắn."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "Xem lại chỉnh sửa này"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "Chỉnh sửa lại phần tóm tắt sao cho phù hợp với vị trí quản lý kỹ thuật cấp cao mà không gây cảm giác chung chung."
|
msgstr "Chỉnh sửa lại phần tóm tắt sao cho phù hợp với vị trí quản lý kỹ thuật cấp cao mà không gây cảm giác chung chung."
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "Xoay"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "Hãy thực hiện phân tích đầu tiên để nhận được bảng điểm, điểm mạnh và các đề xuất được sắp xếp theo mức độ ưu tiên."
|
msgstr "Hãy thực hiện phân tích đầu tiên để nhận được bảng điểm, điểm mạnh và các đề xuất được sắp xếp theo mức độ ưu tiên."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "Đang chạy…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Nga"
|
msgstr "Nga"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "Nguồn"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "Mã nguồn"
|
msgstr "Mã nguồn"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "Nguồn: {0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "Nguồn"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "Khoảng cách (Ngang)"
|
msgstr "Khoảng cách (Ngang)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "Không thể mở trình trợ lý này."
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "Ngày này sẽ không được đọc chính xác."
|
msgstr "Ngày này sẽ không được đọc chính xác."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "Không thể trả lời yêu cầu chỉnh sửa này được nữa."
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "Địa chỉ email này sẽ không được công nhận."
|
msgstr "Địa chỉ email này sẽ không được công nhận."
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "Điều này sẽ giúp bạn nhận diện nó sau này, nếu bạn d
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "Thao tác này sẽ xóa tất cả các mục trong phần này."
|
msgstr "Thao tác này sẽ xóa tất cả các mục trong phần này."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "Thao tác này sẽ hoàn tác bản vá này và mọi bản vá được áp dụng sau nó."
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "Bật/tắt thanh bên phải"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "Luồng chuyển đổi"
|
msgstr "Luồng chuyển đổi"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token: {threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token: {total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token: {total} ({cached} từ bộ nhớ đệm)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "Theo dõi công việc bạn đang ứng tuyển và liên kết sơ yếu lý lịch đã gửi."
|
msgstr "Theo dõi công việc bạn đang ứng tuyển và liên kết sơ yếu lý lịch đã gửi."
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "Chúng tôi không thể tự động nhận diện định dạng — v
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "Chúng tôi không tìm thấy trang đó."
|
msgstr "Chúng tôi không tìm thấy trang đó."
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "Tìm kiếm trên web"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "Thu nhỏ"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "Zulu"
|
msgstr "Zulu"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "已申请"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "申请日期"
|
msgstr "申请日期"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "批准"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "已批准 — 正在等待代理…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "阿拉伯语"
|
msgstr "阿拉伯语"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "正在删除你的 API key…"
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "正在删除你的简历…"
|
msgstr "正在删除你的简历…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "已拒绝 — 正在等待代理…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "拒绝"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "描述您做了什么,以便该条目提供用于匹配的关键字。”"
|
msgstr "描述您做了什么,以便该条目提供用于匹配的关键字。”"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "捐赠"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "为 Reactive Resume 捐款"
|
msgstr "为 Reactive Resume 捐款"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完成"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "在全屏模式下编辑内容"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "编辑日期"
|
msgstr "编辑日期"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "编辑已被拒绝"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "立即将简历导出为PDF格式,无需等待或延迟。"
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "已导出 pipeline-flow.png"
|
msgstr "已导出 pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "失败"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "简历分析失败。"
|
msgstr "简历分析失败。"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "取消链接提供商失败。请重试。"
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "更新提供商失败。"
|
msgstr "更新提供商失败。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "更新线程设置失败。"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "开放路由器"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "在新标签页中打开"
|
msgstr "在新标签页中打开"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "给代理的备注(可选)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "给代理的备注(可选)…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "你也可以选择设置密码,这样只有拥有密码的人才能通过链接查看你的简历。"
|
msgstr "你也可以选择设置密码,这样只有拥有密码的人才能通过链接查看你的简历。"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "出版物"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "发布者"
|
msgstr "发布者"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "原始 JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "重新评分"
|
msgstr "重新评分"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "响应式恢复 v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "反应式简历 v4(JSON)"
|
msgstr "反应式简历 v4(JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "已读取附件"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "请阅读“应用自定义样式”指南。"
|
msgstr "请阅读“应用自定义样式”指南。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "已读取简历"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "正在读取招聘信息…"
|
msgstr "正在读取招聘信息…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "恢复"
|
msgstr "恢复"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "恢复到此补丁之前的状态?这将回滚此补丁以及其后应用的所有补丁。"
|
msgstr "将简历恢复到此补丁之前的状态?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "简历分析完毕。"
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "简历内容"
|
msgstr "简历内容"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "简历编辑"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "简历文件"
|
msgstr "简历文件"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "简历"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "重试"
|
msgstr "重试"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "审核编辑"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "请对照职位描述仔细检查简历,如有疑问请随时向我咨询,然后再修改不确定的部分。"
|
msgstr "请对照职位描述仔细检查简历,如有疑问请随时向我咨询,然后再修改不确定的部分。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "审核此编辑"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "修改摘要,使其针对高级工程经理职位,避免显得过于笼统。"
|
msgstr "修改摘要,使其针对高级工程经理职位,避免显得过于笼统。"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "旋转"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "进行首次分析,以获得记分卡、优势和优先建议。"
|
msgstr "进行首次分析,以获得记分卡、优势和优先建议。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "运行中…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "俄语"
|
msgstr "俄语"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "来源"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "源代码"
|
msgstr "源代码"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "来源:{0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "来源"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "间距(水平)"
|
msgstr "间距(水平)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "此助手无法打开。"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "该日期将无法正确读取。”"
|
msgstr "该日期将无法正确读取。”"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "此编辑请求已无法回应。"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "该电子邮件地址将不会被识别。”"
|
msgstr "该电子邮件地址将不会被识别。”"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "如果您计划使用多个密码匙,这将有助于您以后识别密
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "这将删除该部分的所有项目。"
|
msgstr "这将删除该部分的所有项目。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "这将回滚此补丁以及之后应用的所有补丁。"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "切换右侧边栏"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "切换线程"
|
msgstr "切换线程"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token:{threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token:{total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token:{total}({cached} 已缓存)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "跟踪你正在申请的职位并关联已发送的简历。"
|
msgstr "跟踪你正在申请的职位并关联已发送的简历。"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "我们无法自动检测格式——请在上方选择格式。"
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "我们找不到那一页"
|
msgstr "我们找不到那一页"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "网络搜索"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "缩小"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "祖鲁语"
|
msgstr "祖鲁语"
|
||||||
|
|
||||||
|
|||||||
+103
-3
@@ -543,6 +543,14 @@ msgstr "已申請"
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr "應徵日期"
|
msgstr "應徵日期"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr "核准"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr "已核准 — 正在等待代理…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "阿拉伯文"
|
msgstr "阿拉伯文"
|
||||||
@@ -1462,6 +1470,14 @@ msgstr "正在刪除您的 API Key…"
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr "正在刪除您的履歷…"
|
msgstr "正在刪除您的履歷…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr "已拒絕 — 正在等待代理…"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr "拒絕"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr "描述您做了什麼,以便該條目提供用於匹配的關鍵字。 」"
|
msgstr "描述您做了什麼,以便該條目提供用於匹配的關鍵字。 」"
|
||||||
@@ -1530,6 +1546,10 @@ msgstr "捐"
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr "捐助 Reactive Resume"
|
msgstr "捐助 Reactive Resume"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完成"
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1642,6 +1662,10 @@ msgstr "在全螢幕模式下編輯內容"
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr "編輯日期"
|
msgstr "編輯日期"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr "編輯已被拒絕"
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1837,6 +1861,10 @@ msgstr "立即將履歷匯出為PDF格式,無需等待或延遲。"
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr "已匯出 pipeline-flow.png"
|
msgstr "已匯出 pipeline-flow.png"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "失敗"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr "分析履歷失敗。"
|
msgstr "分析履歷失敗。"
|
||||||
@@ -1967,6 +1995,10 @@ msgstr "解除供應商的連結失敗。請再試一次。"
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr "更新提供者失敗。"
|
msgstr "更新提供者失敗。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr "更新線程設定失敗。"
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3153,6 +3185,14 @@ msgstr "OpenRouter"
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr "在新分頁中開啟"
|
msgstr "在新分頁中開啟"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr "給代理的備註(選填)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr "給代理的備註(選填)…"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr "您也可以選擇設定密碼,讓只有知道密碼的人才能透過連結檢視您的履歷。"
|
msgstr "您也可以選擇設定密碼,讓只有知道密碼的人才能透過連結檢視您的履歷。"
|
||||||
@@ -3499,6 +3539,10 @@ msgstr "出版品"
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "出版者"
|
msgstr "出版者"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr "原始 JSON"
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr "重新評分"
|
msgstr "重新評分"
|
||||||
@@ -3546,10 +3590,18 @@ msgstr "響應式恢復 v<0>{__APP_VERSION__}</0>"
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr "反應式履歷 v4 (JSON)"
|
msgstr "反應式履歷 v4 (JSON)"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr "讀取附件"
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr "請閱讀“套用自訂樣式”指南。"
|
msgstr "請閱讀“套用自訂樣式”指南。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr "讀取簡歷"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr "正在讀取職缺公告…"
|
msgstr "正在讀取職缺公告…"
|
||||||
@@ -3700,8 +3752,8 @@ msgid "Restore"
|
|||||||
msgstr "恢復"
|
msgstr "恢復"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr "恢復到此補丁之前的狀態?這將回滾此補丁以及其後套用的所有補丁。"
|
msgstr "將簡歷恢復到此補丁之前的狀態?"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
msgid "Restore this version?"
|
msgid "Restore this version?"
|
||||||
@@ -3726,6 +3778,10 @@ msgstr "履歷分析完成。"
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr "履歷內容"
|
msgstr "履歷內容"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr "簡歷編輯"
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr "履歷檔案"
|
msgstr "履歷檔案"
|
||||||
@@ -3754,10 +3810,18 @@ msgstr "履歷"
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr "重試"
|
msgstr "重試"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr "審核編輯"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr "請對照職位描述仔細檢查履歷,如有疑問請隨時向我諮詢,然後再修改不確定的部分。"
|
msgstr "請對照職位描述仔細檢查履歷,如有疑問請隨時向我諮詢,然後再修改不確定的部分。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr "審核此編輯"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr "修改摘要,使其針對高階工程經理職位,避免顯得過於籠統。"
|
msgstr "修改摘要,使其針對高階工程經理職位,避免顯得過於籠統。"
|
||||||
@@ -3798,6 +3862,10 @@ msgstr "旋轉"
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr "執行您的第一次分析,以獲得計分卡、優勢和優先建議。"
|
msgstr "執行您的第一次分析,以獲得計分卡、優勢和優先建議。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr "執行中…"
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "俄文"
|
msgstr "俄文"
|
||||||
@@ -4253,6 +4321,15 @@ msgstr "來源"
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr "原始碼"
|
msgstr "原始碼"
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr "來源:{0}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr "來源"
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr "間距(水平)"
|
msgstr "間距(水平)"
|
||||||
@@ -4604,6 +4681,10 @@ msgstr "此助手無法打開。"
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr "該日期將無法正確讀取。 」"
|
msgstr "該日期將無法正確讀取。 」"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr "此編輯請求已無法回應。"
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr "該電子郵件地址將不會被辨識。 」"
|
msgstr "該電子郵件地址將不會被辨識。 」"
|
||||||
@@ -4712,6 +4793,10 @@ msgstr "如果您打算使用多個通行鑰,這將有助於您稍後辨識。
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr "這將移除此區中的所有項目。"
|
msgstr "這將移除此區中的所有項目。"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr "這將回滾此補丁以及之後套用的所有補丁。"
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4794,6 +4879,18 @@ msgstr "切換右側邊欄"
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr "切換線程"
|
msgstr "切換線程"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr "Token:{threadTokenTotal}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr "Token:{total}"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr "Token:{total}({cached} 已快取)"
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr "追蹤你正在應徵的職缺並連結已送出的履歷。"
|
msgstr "追蹤你正在應徵的職缺並連結已送出的履歷。"
|
||||||
@@ -5213,6 +5310,10 @@ msgstr "我們無法自動偵測格式—請在上方選擇格式。"
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr "我們找不到那一頁"
|
msgstr "我們找不到那一頁"
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr "網路搜尋"
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
@@ -5445,4 +5546,3 @@ msgstr "縮小"
|
|||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Zulu"
|
msgid "Zulu"
|
||||||
msgstr "祖魯語"
|
msgstr "祖魯語"
|
||||||
|
|
||||||
|
|||||||
+102
-1
@@ -538,6 +538,14 @@ msgstr ""
|
|||||||
msgid "Applied on"
|
msgid "Applied on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approve"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Approved — waiting for the agent…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1457,6 +1465,14 @@ msgstr ""
|
|||||||
msgid "Deleting your resume..."
|
msgid "Deleting your resume..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Denied — waiting for the agent…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Deny"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "Describe what you did so the entry contributes keywords for matching."
|
msgid "Describe what you did so the entry contributes keywords for matching."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1525,6 +1541,10 @@ msgstr ""
|
|||||||
msgid "Donate to Reactive Resume"
|
msgid "Donate to Reactive Resume"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Done"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Action button to download two-factor backup codes as a text file
|
#. Action button to download two-factor backup codes as a text file
|
||||||
#. Primary action in the builder header to open resume download options
|
#. Primary action in the builder header to open resume download options
|
||||||
#: src/dialogs/auth/enable-two-factor.tsx
|
#: src/dialogs/auth/enable-two-factor.tsx
|
||||||
@@ -1637,6 +1657,10 @@ msgstr ""
|
|||||||
msgid "Edit date"
|
msgid "Edit date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Edit declined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Resume card context menu action to edit resume metadata
|
#. Resume card context menu action to edit resume metadata
|
||||||
#. Resume card dropdown action to edit resume metadata
|
#. Resume card dropdown action to edit resume metadata
|
||||||
#: src/routes/builder/$resumeId/-components/header.tsx
|
#: src/routes/builder/$resumeId/-components/header.tsx
|
||||||
@@ -1832,6 +1856,10 @@ msgstr ""
|
|||||||
msgid "Exported pipeline-flow.png"
|
msgid "Exported pipeline-flow.png"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
|
||||||
msgid "Failed to analyze resume."
|
msgid "Failed to analyze resume."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1962,6 +1990,10 @@ msgstr ""
|
|||||||
msgid "Failed to update provider."
|
msgid "Failed to update provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Failed to update thread settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Fallback toast when changing account password fails
|
#. Fallback toast when changing account password fails
|
||||||
#: src/dialogs/auth/change-password.tsx
|
#: src/dialogs/auth/change-password.tsx
|
||||||
msgid "Failed to update your password. Please try again."
|
msgid "Failed to update your password. Please try again."
|
||||||
@@ -3148,6 +3180,14 @@ msgstr ""
|
|||||||
msgid "opens in new tab"
|
msgid "opens in new tab"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Optional note for the agent…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
|
||||||
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
msgid "Optionally, set a password so that only people with the password can view your resume through the link."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3494,6 +3534,10 @@ msgstr ""
|
|||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Raw JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/features/applications/components/application-ai-copilot.tsx
|
#: src/features/applications/components/application-ai-copilot.tsx
|
||||||
msgid "Re-score"
|
msgid "Re-score"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3541,10 +3585,18 @@ msgstr ""
|
|||||||
msgid "Reactive Resume v4 (JSON)"
|
msgid "Reactive Resume v4 (JSON)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read an attachment"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/features/resume/stylesheet/editor.tsx
|
#: src/features/resume/stylesheet/editor.tsx
|
||||||
msgid "Read the Applying Custom Styles guide."
|
msgid "Read the Applying Custom Styles guide."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Read the resume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Reading the posting…"
|
msgid "Reading the posting…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3695,7 +3747,7 @@ msgid "Restore"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Restore the resume to before this patch? This will roll back this patch and any patches applied after it."
|
msgid "Restore the resume to before this patch?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
#: src/routes/builder/$resumeId/-components/version-history.tsx
|
||||||
@@ -3721,6 +3773,10 @@ msgstr ""
|
|||||||
msgid "Resume content"
|
msgid "Resume content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Resume edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/features/applications/components/application-detail-sheet.tsx
|
#: src/features/applications/components/application-detail-sheet.tsx
|
||||||
msgid "Resume file"
|
msgid "Resume file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3749,10 +3805,18 @@ msgstr ""
|
|||||||
msgid "Retry"
|
msgid "Retry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Review edits"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
msgid "Review the resume against a job description and ask me questions before changing uncertain sections."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Review this edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
msgid "Rework the summary so it targets a senior engineering manager role without sounding generic."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3793,6 +3857,10 @@ msgstr ""
|
|||||||
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Running…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/libs/locale.ts
|
#: src/libs/locale.ts
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4248,6 +4316,15 @@ msgstr ""
|
|||||||
msgid "Source Code"
|
msgid "Source Code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. placeholder {0}: operation.from
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "Source: {0}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Sources"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
|
||||||
msgid "Spacing (Horizontal)"
|
msgid "Spacing (Horizontal)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4599,6 +4676,10 @@ msgstr ""
|
|||||||
msgid "This date will not be read correctly."
|
msgid "This date will not be read correctly."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/patch-approval-card.tsx
|
||||||
|
msgid "This edit request can no longer be answered."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/libs/resume/ats.ts
|
#: src/libs/resume/ats.ts
|
||||||
msgid "This email address will not be recognized."
|
msgid "This email address will not be recognized."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4707,6 +4788,10 @@ msgstr ""
|
|||||||
msgid "This will remove all items from this section."
|
msgid "This will remove all items from this section."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "This will roll back this patch and any patches applied after it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/routes/agent/-components/agent-chat.tsx
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
#: src/routes/agent/-components/thread-sidebar.tsx
|
#: src/routes/agent/-components/thread-sidebar.tsx
|
||||||
msgid "Thread actions"
|
msgid "Thread actions"
|
||||||
@@ -4789,6 +4874,18 @@ msgstr ""
|
|||||||
msgid "Toggle threads"
|
msgid "Toggle threads"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {threadTokenTotal}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/agent-chat.tsx
|
||||||
|
msgid "Tokens: {total} ({cached} cached)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/features/applications/components/application-form-sheet.tsx
|
#: src/features/applications/components/application-form-sheet.tsx
|
||||||
msgid "Track a job you're applying to and link the resume you sent."
|
msgid "Track a job you're applying to and link the resume you sent."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5208,6 +5305,10 @@ msgstr ""
|
|||||||
msgid "We couldn't find that page"
|
msgid "We couldn't find that page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/routes/agent/-components/tool-part-card.tsx
|
||||||
|
msgid "Web search"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/dialogs/resume/sections/award.tsx
|
#: src/dialogs/resume/sections/award.tsx
|
||||||
#: src/dialogs/resume/sections/certification.tsx
|
#: src/dialogs/resume/sections/certification.tsx
|
||||||
#: src/dialogs/resume/sections/education.tsx
|
#: src/dialogs/resume/sections/education.tsx
|
||||||
|
|||||||
@@ -101,6 +101,7 @@
|
|||||||
"@lingui/vite-plugin": "^6.6.0",
|
"@lingui/vite-plugin": "^6.6.0",
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
"@rolldown/plugin-babel": "^0.2.3",
|
"@rolldown/plugin-babel": "^0.2.3",
|
||||||
|
"@shadcn/helpers": "^0.2.0",
|
||||||
"@tanstack/devtools-vite": "^0.8.3",
|
"@tanstack/devtools-vite": "^0.8.3",
|
||||||
"@tanstack/react-devtools": "^0.10.10",
|
"@tanstack/react-devtools": "^0.10.10",
|
||||||
"@tanstack/react-query-devtools": "^5.101.4",
|
"@tanstack/react-query-devtools": "^5.101.4",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Trans } from "@lingui/react/macro";
|
|||||||
import { ChatCircleDotsIcon, SidebarSimpleIcon, SquaresFourIcon } from "@phosphor-icons/react";
|
import { ChatCircleDotsIcon, SidebarSimpleIcon, SquaresFourIcon } from "@phosphor-icons/react";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
||||||
import { useCallback, useRef, useState } from "react";
|
import { useCallback, useRef, useState, useSyncExternalStore } from "react";
|
||||||
import { Button } from "@reactive-resume/ui/components/button";
|
import { Button } from "@reactive-resume/ui/components/button";
|
||||||
import { ResizableGroup, ResizablePanel, ResizableSeparator } from "@reactive-resume/ui/components/resizable";
|
import { ResizableGroup, ResizablePanel, ResizableSeparator } from "@reactive-resume/ui/components/resizable";
|
||||||
import { Tabs, TabsList, TabsTrigger } from "@reactive-resume/ui/components/tabs";
|
import { Tabs, TabsList, TabsTrigger } from "@reactive-resume/ui/components/tabs";
|
||||||
@@ -19,6 +19,26 @@ export const Route = createFileRoute("/agent/$threadId")({
|
|||||||
component: RouteComponent,
|
component: RouteComponent,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Matches Tailwind's `lg` breakpoint, which this route's two layouts switch on.
|
||||||
|
const DESKTOP_QUERY = "(min-width: 1024px)";
|
||||||
|
|
||||||
|
// Exactly one layout may mount: each AgentChat owns its own useChat state and stream
|
||||||
|
// reconnection, so CSS-hiding a second instance would double-connect streams and expose
|
||||||
|
// stale pending approval controls after a resize.
|
||||||
|
function useIsDesktopLayout() {
|
||||||
|
const [mediaQueryList] = useState(() => (typeof window === "undefined" ? null : window.matchMedia(DESKTOP_QUERY)));
|
||||||
|
|
||||||
|
return useSyncExternalStore(
|
||||||
|
(onStoreChange) => {
|
||||||
|
if (!mediaQueryList) return () => {};
|
||||||
|
mediaQueryList.addEventListener("change", onStoreChange);
|
||||||
|
return () => mediaQueryList.removeEventListener("change", onStoreChange);
|
||||||
|
},
|
||||||
|
() => mediaQueryList?.matches ?? false,
|
||||||
|
() => false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function RouteComponent() {
|
function RouteComponent() {
|
||||||
const { threadId } = Route.useParams();
|
const { threadId } = Route.useParams();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -27,6 +47,7 @@ function RouteComponent() {
|
|||||||
const resumePanelRef = useRef<PanelImperativeHandle | null>(null);
|
const resumePanelRef = useRef<PanelImperativeHandle | null>(null);
|
||||||
const [isThreadsCollapsed, setIsThreadsCollapsed] = useState(false);
|
const [isThreadsCollapsed, setIsThreadsCollapsed] = useState(false);
|
||||||
const [isResumeCollapsed, setIsResumeCollapsed] = useState(false);
|
const [isResumeCollapsed, setIsResumeCollapsed] = useState(false);
|
||||||
|
const isDesktopLayout = useIsDesktopLayout();
|
||||||
const { data, isLoading, error } = useQuery(orpc.agent.threads.get.queryOptions({ input: { id: threadId } }));
|
const { data, isLoading, error } = useQuery(orpc.agent.threads.get.queryOptions({ input: { id: threadId } }));
|
||||||
useAgentResumeUpdateSubscription({ resumeId: data?.resume?.id, threadId });
|
useAgentResumeUpdateSubscription({ resumeId: data?.resume?.id, threadId });
|
||||||
|
|
||||||
@@ -79,7 +100,8 @@ function RouteComponent() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-svh min-w-0 overflow-hidden bg-background">
|
<div className="h-svh min-w-0 overflow-hidden bg-background">
|
||||||
<div className="hidden h-full lg:block">
|
{isDesktopLayout ? (
|
||||||
|
<div className="h-full">
|
||||||
<ResizableGroup orientation="horizontal" className="h-full">
|
<ResizableGroup orientation="horizontal" className="h-full">
|
||||||
<ResizablePanel
|
<ResizablePanel
|
||||||
id="threads"
|
id="threads"
|
||||||
@@ -101,6 +123,7 @@ function RouteComponent() {
|
|||||||
isReadOnly={data.isReadOnly}
|
isReadOnly={data.isReadOnly}
|
||||||
readOnlyReason={readOnlyReason}
|
readOnlyReason={readOnlyReason}
|
||||||
threadStatus={data.thread.status}
|
threadStatus={data.thread.status}
|
||||||
|
reviewPatches={data.thread.reviewPatches}
|
||||||
activeRunId={data.thread.activeRunId}
|
activeRunId={data.thread.activeRunId}
|
||||||
actions={data.actions}
|
actions={data.actions}
|
||||||
onToggleThreads={toggleThreadsPanel}
|
onToggleThreads={toggleThreadsPanel}
|
||||||
@@ -124,8 +147,8 @@ function RouteComponent() {
|
|||||||
</ResizablePanel>
|
</ResizablePanel>
|
||||||
</ResizableGroup>
|
</ResizableGroup>
|
||||||
</div>
|
</div>
|
||||||
|
) : (
|
||||||
<div className="flex h-full min-w-0 flex-col lg:hidden">
|
<div className="flex h-full min-w-0 flex-col">
|
||||||
<div className="shrink-0 border-b p-2">
|
<div className="shrink-0 border-b p-2">
|
||||||
<Tabs value={mobileTab} onValueChange={setMobileTab}>
|
<Tabs value={mobileTab} onValueChange={setMobileTab}>
|
||||||
<TabsList className="grid w-full grid-cols-3">
|
<TabsList className="grid w-full grid-cols-3">
|
||||||
@@ -155,6 +178,7 @@ function RouteComponent() {
|
|||||||
isReadOnly={data.isReadOnly}
|
isReadOnly={data.isReadOnly}
|
||||||
readOnlyReason={readOnlyReason}
|
readOnlyReason={readOnlyReason}
|
||||||
threadStatus={data.thread.status}
|
threadStatus={data.thread.status}
|
||||||
|
reviewPatches={data.thread.reviewPatches}
|
||||||
activeRunId={data.thread.activeRunId}
|
activeRunId={data.thread.activeRunId}
|
||||||
actions={data.actions}
|
actions={data.actions}
|
||||||
/>
|
/>
|
||||||
@@ -164,6 +188,7 @@ function RouteComponent() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
// @vitest-environment happy-dom
|
||||||
|
|
||||||
|
// Backend-free approval flow: a scripted ChatTransport from @shadcn/helpers drives useChat through
|
||||||
|
// halt (approval-requested) → user decision → composed sendAutomaticallyWhen → continuation.
|
||||||
|
import type { AgentUIMessage } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
|
import { render, screen, waitFor } from "@testing-library/react";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { useChat } from "@ai-sdk/react";
|
||||||
|
import { createChat } from "@shadcn/helpers/ai-sdk";
|
||||||
|
import { lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
||||||
|
|
||||||
|
function buildScriptedChat() {
|
||||||
|
return createChat<AgentUIMessage>()
|
||||||
|
.user("Tighten my summary")
|
||||||
|
.assistant(({ writer }) => {
|
||||||
|
writer.text("I would like to apply this edit.", { mode: "instant" });
|
||||||
|
writer.tool("apply_resume_patch", {
|
||||||
|
toolCallId: "call-1",
|
||||||
|
approvalId: "approval-1",
|
||||||
|
needsApproval: true,
|
||||||
|
input: {
|
||||||
|
title: "Tighten summary",
|
||||||
|
operations: [{ op: "replace", path: "/sections/summary/content", value: "Impact-driven engineer" }],
|
||||||
|
},
|
||||||
|
// With needsApproval, output means "stream this after approval"; denial streams
|
||||||
|
// tool-output-denied automatically.
|
||||||
|
output: {
|
||||||
|
actionId: "action-1",
|
||||||
|
resumeId: "resume-1",
|
||||||
|
title: "Tighten summary",
|
||||||
|
operations: [{ op: "replace", path: "/sections/summary/content", value: "Impact-driven engineer" }],
|
||||||
|
appliedUpdatedAt: "2026-08-20T00:00:00.000Z",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.assistant(({ writer, toolCall }) => {
|
||||||
|
writer.text(toolCall?.denied ? "Understood, I left the resume unchanged." : "Done — the edit is applied.", {
|
||||||
|
mode: "instant",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
type HarnessProps = {
|
||||||
|
chat: ReturnType<typeof buildScriptedChat>;
|
||||||
|
decision: { approved: boolean; reason?: string };
|
||||||
|
};
|
||||||
|
|
||||||
|
// Minimal stand-in for AgentChat's wiring: same composed auto-send, same approval response call.
|
||||||
|
// AgentChat itself is deliberately not refactored to accept a transport prop for tests.
|
||||||
|
function ApprovalHarness({ chat, decision }: HarnessProps) {
|
||||||
|
const { messages, sendMessage, addToolApprovalResponse } = useChat<AgentUIMessage>({
|
||||||
|
transport: chat.transport({ delayMs: undefined }),
|
||||||
|
sendAutomaticallyWhen: (options) =>
|
||||||
|
lastAssistantMessageIsCompleteWithToolCalls(options) ||
|
||||||
|
lastAssistantMessageIsCompleteWithApprovalResponses(options),
|
||||||
|
});
|
||||||
|
|
||||||
|
const pendingApproval = messages
|
||||||
|
.flatMap((message) => message.parts)
|
||||||
|
.find((part) => "state" in part && part.state === "approval-requested") as
|
||||||
|
| { approval?: { id: string } }
|
||||||
|
| undefined;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<button type="button" onClick={() => sendMessage({ text: "Tighten my summary" })}>
|
||||||
|
send
|
||||||
|
</button>
|
||||||
|
{pendingApproval?.approval ? (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => void addToolApprovalResponse({ id: pendingApproval.approval?.id ?? "", ...decision })}
|
||||||
|
>
|
||||||
|
respond
|
||||||
|
</button>
|
||||||
|
) : null}
|
||||||
|
<output>
|
||||||
|
{messages
|
||||||
|
.flatMap((message) => message.parts)
|
||||||
|
.map((part) => ("state" in part && typeof part.state === "string" ? part.state : part.type))
|
||||||
|
.join(",")}
|
||||||
|
</output>
|
||||||
|
<pre>
|
||||||
|
{messages.map((message) => message.parts.map((part) => ("text" in part ? part.text : "")).join(" ")).join("\n")}
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("agent approval flow (scripted transport)", () => {
|
||||||
|
it("halts on approval-requested, then approves and streams the continuation with the tool output", async () => {
|
||||||
|
render(<ApprovalHarness chat={buildScriptedChat()} decision={{ approved: true }} />);
|
||||||
|
|
||||||
|
screen.getByRole("button", { name: "send" }).click();
|
||||||
|
await waitFor(() => expect(screen.getByRole("status").textContent).toContain("approval-requested"));
|
||||||
|
|
||||||
|
screen.getByRole("button", { name: "respond" }).click();
|
||||||
|
|
||||||
|
// Composed sendAutomaticallyWhen fires the continuation without a manual send.
|
||||||
|
await waitFor(() => expect(screen.getByText(/Done — the edit is applied/)).toBeInTheDocument());
|
||||||
|
await waitFor(() => expect(screen.getByRole("status").textContent).toContain("output-available"));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("denies: the call ends output-denied and the continuation reflects the denial", async () => {
|
||||||
|
render(<ApprovalHarness chat={buildScriptedChat()} decision={{ approved: false, reason: "Wrong section" }} />);
|
||||||
|
|
||||||
|
screen.getByRole("button", { name: "send" }).click();
|
||||||
|
await waitFor(() => expect(screen.getByRole("status").textContent).toContain("approval-requested"));
|
||||||
|
|
||||||
|
screen.getByRole("button", { name: "respond" }).click();
|
||||||
|
|
||||||
|
await waitFor(() => expect(screen.getByText(/left the resume unchanged/)).toBeInTheDocument());
|
||||||
|
await waitFor(() => expect(screen.getByRole("status").textContent).toContain("output-denied"));
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import type { AgentUIMessage } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
import type { UIMessage, UIMessageChunk } from "ai";
|
import type { UIMessage, UIMessageChunk } from "ai";
|
||||||
import type * as React from "react";
|
import type * as React from "react";
|
||||||
import type { RouterOutput } from "@/libs/orpc/client";
|
import type { RouterOutput } from "@/libs/orpc/client";
|
||||||
|
import type { PatchApprovalResponse } from "./patch-approval-card";
|
||||||
import { useChat } from "@ai-sdk/react";
|
import { useChat } from "@ai-sdk/react";
|
||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { Trans } from "@lingui/react/macro";
|
import { Trans } from "@lingui/react/macro";
|
||||||
@@ -23,11 +25,12 @@ import {
|
|||||||
} from "@phosphor-icons/react";
|
} from "@phosphor-icons/react";
|
||||||
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
||||||
import { useNavigate } from "@tanstack/react-router";
|
import { useNavigate } from "@tanstack/react-router";
|
||||||
import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
import { lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
||||||
import { m } from "motion/react";
|
import { m } from "motion/react";
|
||||||
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||||
import ReactMarkdown from "react-markdown";
|
import ReactMarkdown from "react-markdown";
|
||||||
import remarkGfm from "remark-gfm";
|
import remarkGfm from "remark-gfm";
|
||||||
|
import { agentMessageMetadataSchema } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
import {
|
import {
|
||||||
Attachment,
|
Attachment,
|
||||||
AttachmentContent,
|
AttachmentContent,
|
||||||
@@ -39,6 +42,7 @@ import { Bubble, BubbleContent } from "@reactive-resume/ui/components/bubble";
|
|||||||
import { Button } from "@reactive-resume/ui/components/button";
|
import { Button } from "@reactive-resume/ui/components/button";
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
|
DropdownMenuCheckboxItem,
|
||||||
DropdownMenuContent,
|
DropdownMenuContent,
|
||||||
DropdownMenuItem,
|
DropdownMenuItem,
|
||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
@@ -73,6 +77,8 @@ import { useConfirm } from "@/hooks/use-confirm";
|
|||||||
import { getOrpcErrorMessage } from "@/libs/error-message";
|
import { getOrpcErrorMessage } from "@/libs/error-message";
|
||||||
import { client, orpc, streamClient } from "@/libs/orpc/client";
|
import { client, orpc, streamClient } from "@/libs/orpc/client";
|
||||||
import { attachmentIdsFromTransportBody, buildAgentChatSubmission } from "../-helpers/chat-attachments";
|
import { attachmentIdsFromTransportBody, buildAgentChatSubmission } from "../-helpers/chat-attachments";
|
||||||
|
import { OperationRow, PatchApprovalCard } from "./patch-approval-card";
|
||||||
|
import { ToolPartCard } from "./tool-part-card";
|
||||||
|
|
||||||
type AgentThreadDetail = RouterOutput["agent"]["threads"]["get"];
|
type AgentThreadDetail = RouterOutput["agent"]["threads"]["get"];
|
||||||
type AgentAction = AgentThreadDetail["actions"][number];
|
type AgentAction = AgentThreadDetail["actions"][number];
|
||||||
@@ -103,13 +109,16 @@ type FileAttachmentProps = {
|
|||||||
type AskUserQuestionProps = {
|
type AskUserQuestionProps = {
|
||||||
part: UIMessage["parts"][number];
|
part: UIMessage["parts"][number];
|
||||||
answer: string | null;
|
answer: string | null;
|
||||||
|
disabled?: boolean;
|
||||||
onAnswer: (toolCallId: string, answer: string) => void;
|
onAnswer: (toolCallId: string, answer: string) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
type MessagePartProps = {
|
type MessagePartProps = {
|
||||||
part: UIMessage["parts"][number];
|
part: UIMessage["parts"][number];
|
||||||
isUser: boolean;
|
isUser: boolean;
|
||||||
|
isReadOnly: boolean;
|
||||||
onAnswer: (toolCallId: string, answer: string) => void;
|
onAnswer: (toolCallId: string, answer: string) => void;
|
||||||
|
onApprovalRespond: (response: PatchApprovalResponse) => void;
|
||||||
onRevert: (actionId: string) => void;
|
onRevert: (actionId: string) => void;
|
||||||
isReverting: boolean;
|
isReverting: boolean;
|
||||||
actionsById: Map<string, AgentAction>;
|
actionsById: Map<string, AgentAction>;
|
||||||
@@ -117,7 +126,9 @@ type MessagePartProps = {
|
|||||||
|
|
||||||
type ChatMessageProps = {
|
type ChatMessageProps = {
|
||||||
message: UIMessage;
|
message: UIMessage;
|
||||||
|
isReadOnly: boolean;
|
||||||
onAnswer: (toolCallId: string, answer: string) => void;
|
onAnswer: (toolCallId: string, answer: string) => void;
|
||||||
|
onApprovalRespond: (response: PatchApprovalResponse) => void;
|
||||||
onRevert: (actionId: string) => void;
|
onRevert: (actionId: string) => void;
|
||||||
isReverting: boolean;
|
isReverting: boolean;
|
||||||
actionsById: Map<string, AgentAction>;
|
actionsById: Map<string, AgentAction>;
|
||||||
@@ -129,6 +140,7 @@ export type AgentChatProps = {
|
|||||||
isReadOnly: boolean;
|
isReadOnly: boolean;
|
||||||
readOnlyReason: "archived" | "missing" | null;
|
readOnlyReason: "archived" | "missing" | null;
|
||||||
threadStatus: string;
|
threadStatus: string;
|
||||||
|
reviewPatches: boolean;
|
||||||
activeRunId: string | null;
|
activeRunId: string | null;
|
||||||
actions: AgentAction[];
|
actions: AgentAction[];
|
||||||
onToggleThreads?: () => void;
|
onToggleThreads?: () => void;
|
||||||
@@ -149,6 +161,7 @@ type AgentChatMessagesProps = {
|
|||||||
isStreaming: boolean;
|
isStreaming: boolean;
|
||||||
messages: UIMessage[];
|
messages: UIMessage[];
|
||||||
onAnswer: (toolCallId: string, answer: string) => void;
|
onAnswer: (toolCallId: string, answer: string) => void;
|
||||||
|
onApprovalRespond: (response: PatchApprovalResponse) => void;
|
||||||
onRevert: (actionId: string) => void;
|
onRevert: (actionId: string) => void;
|
||||||
onRetry: () => void;
|
onRetry: () => void;
|
||||||
onStarterSelect: (prompt: string) => void;
|
onStarterSelect: (prompt: string) => void;
|
||||||
@@ -158,12 +171,17 @@ type AgentChatHeaderProps = {
|
|||||||
isArchived: boolean;
|
isArchived: boolean;
|
||||||
isArchivePending: boolean;
|
isArchivePending: boolean;
|
||||||
isDeletePending: boolean;
|
isDeletePending: boolean;
|
||||||
|
isUpdatePending: boolean;
|
||||||
|
isStreaming: boolean;
|
||||||
|
reviewPatches: boolean;
|
||||||
|
threadTokenTotal: number;
|
||||||
onArchive: () => void;
|
onArchive: () => void;
|
||||||
onCopyConversation: () => void;
|
onCopyConversation: () => void;
|
||||||
onCopyConversationJson: () => void;
|
onCopyConversationJson: () => void;
|
||||||
onDelete: () => void;
|
onDelete: () => void;
|
||||||
onClose?: () => void;
|
onClose?: () => void;
|
||||||
onToggleResume?: () => void;
|
onToggleResume?: () => void;
|
||||||
|
onToggleReviewPatches: (reviewPatches: boolean) => void;
|
||||||
onToggleThreads?: () => void;
|
onToggleThreads?: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -263,9 +281,21 @@ function PatchToolCard({ part, action, onRevert, isReverting }: PatchToolCardPro
|
|||||||
</Button>
|
</Button>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
<pre className="max-h-72 overflow-auto whitespace-pre-wrap break-words rounded border bg-background p-3 font-mono text-[0.7rem] leading-relaxed">
|
{operations.length > 0 ? (
|
||||||
|
<ul className="max-h-48 space-y-1 overflow-auto rounded border bg-background p-2">
|
||||||
|
{operations.map((operation, index) => (
|
||||||
|
<OperationRow key={`${String((operation as { path?: unknown }).path)}-${index}`} operation={operation} />
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
) : null}
|
||||||
|
<details>
|
||||||
|
<summary className="cursor-pointer text-muted-foreground/70 hover:text-foreground">
|
||||||
|
<Trans>Raw JSON</Trans>
|
||||||
|
</summary>
|
||||||
|
<pre className="mt-1 max-h-72 overflow-auto whitespace-pre-wrap break-words rounded border bg-background p-3 font-mono text-[0.7rem] leading-relaxed">
|
||||||
{rawPayload}
|
{rawPayload}
|
||||||
</pre>
|
</pre>
|
||||||
|
</details>
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
);
|
);
|
||||||
@@ -397,7 +427,8 @@ function StarterPromptMarquee({ onSelect }: StarterPromptMarqueeProps) {
|
|||||||
// unique key. Content-derived keys collide — every `step-start` part serializes identically.
|
// unique key. Content-derived keys collide — every `step-start` part serializes identically.
|
||||||
const getMessagePartKey = (messageId: string, index: number) => `${messageId}-${index}`;
|
const getMessagePartKey = (messageId: string, index: number) => `${messageId}-${index}`;
|
||||||
|
|
||||||
export function AssistantMarkdown({ text }: AssistantMarkdownProps) {
|
// Memoized on the text string, so completed markdown stops re-rendering during streaming.
|
||||||
|
export const AssistantMarkdown = memo(function AssistantMarkdown({ text }: AssistantMarkdownProps) {
|
||||||
return (
|
return (
|
||||||
<ReactMarkdown
|
<ReactMarkdown
|
||||||
skipHtml
|
skipHtml
|
||||||
@@ -437,7 +468,7 @@ export function AssistantMarkdown({ text }: AssistantMarkdownProps) {
|
|||||||
{text}
|
{text}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
|
|
||||||
function FileAttachment({ filename, mediaType, state = "done" }: FileAttachmentProps) {
|
function FileAttachment({ filename, mediaType, state = "done" }: FileAttachmentProps) {
|
||||||
return (
|
return (
|
||||||
@@ -456,7 +487,7 @@ function FileAttachment({ filename, mediaType, state = "done" }: FileAttachmentP
|
|||||||
// The agent asks one question at a time, so this is a single-item Questionnaire: radio choices plus a
|
// The agent asks one question at a time, so this is a single-item Questionnaire: radio choices plus a
|
||||||
// freeform answer, submitted as the tool output. `Questionnaire` owns the fieldset/legend semantics,
|
// freeform answer, submitted as the tool output. `Questionnaire` owns the fieldset/legend semantics,
|
||||||
// keyboard shortcuts, focus management, and required-answer validation.
|
// keyboard shortcuts, focus management, and required-answer validation.
|
||||||
export function AskUserQuestion({ part, answer, onAnswer }: AskUserQuestionProps) {
|
export function AskUserQuestion({ part, answer, disabled, onAnswer }: AskUserQuestionProps) {
|
||||||
const input =
|
const input =
|
||||||
"input" in part && typeof part.input === "object" && part.input ? (part.input as Record<string, unknown>) : {};
|
"input" in part && typeof part.input === "object" && part.input ? (part.input as Record<string, unknown>) : {};
|
||||||
const choices = Array.isArray(input.choices)
|
const choices = Array.isArray(input.choices)
|
||||||
@@ -465,7 +496,9 @@ export function AskUserQuestion({ part, answer, onAnswer }: AskUserQuestionProps
|
|||||||
const question = typeof input.question === "string" ? input.question : t`The agent needs your input.`;
|
const question = typeof input.question === "string" ? input.question : t`The agent needs your input.`;
|
||||||
const toolCallId = "toolCallId" in part && typeof part.toolCallId === "string" ? part.toolCallId : null;
|
const toolCallId = "toolCallId" in part && typeof part.toolCallId === "string" ? part.toolCallId : null;
|
||||||
|
|
||||||
if (answer !== null || !toolCallId) {
|
// Read-only threads (archived, missing resume/provider) render the static view: answering would
|
||||||
|
// only mutate local state before the server rejects the continuation.
|
||||||
|
if (answer !== null || !toolCallId || disabled) {
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<p className="font-medium">{question}</p>
|
<p className="font-medium">{question}</p>
|
||||||
@@ -507,7 +540,16 @@ export function AskUserQuestion({ part, answer, onAnswer }: AskUserQuestionProps
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function MessagePart({ part, isUser, onAnswer, onRevert, isReverting, actionsById }: MessagePartProps) {
|
function MessagePart({
|
||||||
|
part,
|
||||||
|
isUser,
|
||||||
|
isReadOnly,
|
||||||
|
onAnswer,
|
||||||
|
onApprovalRespond,
|
||||||
|
onRevert,
|
||||||
|
isReverting,
|
||||||
|
actionsById,
|
||||||
|
}: MessagePartProps) {
|
||||||
if (part.type === "text") {
|
if (part.type === "text") {
|
||||||
return (
|
return (
|
||||||
<Bubble variant={isUser ? "default" : "ghost"} align={isUser ? "end" : "start"}>
|
<Bubble variant={isUser ? "default" : "ghost"} align={isUser ? "end" : "start"}>
|
||||||
@@ -543,13 +585,25 @@ function MessagePart({ part, isUser, onAnswer, onRevert, isReverting, actionsByI
|
|||||||
return (
|
return (
|
||||||
<Bubble variant="outline" className="max-w-full">
|
<Bubble variant="outline" className="max-w-full">
|
||||||
<BubbleContent className="w-full">
|
<BubbleContent className="w-full">
|
||||||
<AskUserQuestion part={part} answer={answer} onAnswer={onAnswer} />
|
<AskUserQuestion part={part} answer={answer} disabled={isReadOnly} onAnswer={onAnswer} />
|
||||||
</BubbleContent>
|
</BubbleContent>
|
||||||
</Bubble>
|
</Bubble>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (part.type === "tool-apply_resume_patch") {
|
if (part.type === "tool-apply_resume_patch") {
|
||||||
|
const state = "state" in part && typeof part.state === "string" ? part.state : null;
|
||||||
|
|
||||||
|
if (state === "approval-requested" || state === "approval-responded" || state === "output-denied") {
|
||||||
|
return (
|
||||||
|
<Bubble variant="outline" className="max-w-full">
|
||||||
|
<BubbleContent className="w-full">
|
||||||
|
<PatchApprovalCard part={part} disabled={isReadOnly} onRespond={onApprovalRespond} />
|
||||||
|
</BubbleContent>
|
||||||
|
</Bubble>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const output =
|
const output =
|
||||||
"output" in part && typeof part.output === "object" && part.output
|
"output" in part && typeof part.output === "object" && part.output
|
||||||
? (part.output as Record<string, unknown>)
|
? (part.output as Record<string, unknown>)
|
||||||
@@ -566,55 +620,149 @@ function MessagePart({ part, isUser, onAnswer, onRevert, isReverting, actionsByI
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (part.type === "source-url") {
|
if (part.type === "file") {
|
||||||
const title = part.title?.trim() || null;
|
return <FileAttachment filename={part.filename ?? part.url} mediaType={part.mediaType} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Previously-invisible tool activity: read_resume, read_attachment, provider-native web_search,
|
||||||
|
// and dynamic tools echoed back after a provider switch.
|
||||||
|
if (
|
||||||
|
part.type === "tool-read_resume" ||
|
||||||
|
part.type === "tool-read_attachment" ||
|
||||||
|
part.type === "tool-web_search" ||
|
||||||
|
part.type === "dynamic-tool"
|
||||||
|
) {
|
||||||
return (
|
return (
|
||||||
<Bubble variant="ghost" className="max-w-full">
|
<Bubble variant="ghost" className="max-w-full">
|
||||||
<BubbleContent className="w-full">
|
<BubbleContent className="w-full">
|
||||||
<a className="block text-primary text-sm underline" href={part.url} target="_blank" rel="noreferrer">
|
<ToolPartCard part={part} />
|
||||||
{title ? (
|
|
||||||
<>
|
|
||||||
<span className="block truncate">{title}</span>
|
|
||||||
<span className="block truncate text-muted-foreground">{part.url}</span>
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<span className="block truncate">{part.url}</span>
|
|
||||||
)}
|
|
||||||
</a>
|
|
||||||
</BubbleContent>
|
</BubbleContent>
|
||||||
</Bubble>
|
</Bubble>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (part.type === "file") {
|
|
||||||
return <FileAttachment filename={part.filename ?? part.url} mediaType={part.mediaType} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ChatMessage({ message, onAnswer, onRevert, isReverting, actionsById }: ChatMessageProps) {
|
type SourceUrlPartLike = { type: "source-url"; url: string; title?: string | null };
|
||||||
|
|
||||||
|
function SourcesBlock({ parts }: { parts: SourceUrlPartLike[] }) {
|
||||||
|
return (
|
||||||
|
<Bubble variant="ghost" className="max-w-full">
|
||||||
|
<BubbleContent className="w-full">
|
||||||
|
<p className="mb-1 font-medium text-muted-foreground text-xs">
|
||||||
|
<Trans>Sources</Trans>
|
||||||
|
</p>
|
||||||
|
<ul className="space-y-1">
|
||||||
|
{parts.map((part, index) => {
|
||||||
|
const title = part.title?.trim() || null;
|
||||||
|
return (
|
||||||
|
// Providers can cite the same URL more than once; the index keeps keys unique.
|
||||||
|
<li key={`${part.url}-${index}`}>
|
||||||
|
<a className="block text-primary text-sm underline" href={part.url} target="_blank" rel="noreferrer">
|
||||||
|
<span className="block truncate">{title ?? part.url}</span>
|
||||||
|
{title ? <span className="block truncate text-muted-foreground">{part.url}</span> : null}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
</BubbleContent>
|
||||||
|
</Bubble>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
type MessageRenderItem =
|
||||||
|
| { kind: "part"; key: string; part: UIMessage["parts"][number] }
|
||||||
|
| { kind: "sources"; key: string; parts: SourceUrlPartLike[] };
|
||||||
|
|
||||||
|
// Consecutive source-url parts collapse into one sources block instead of a bubble per link.
|
||||||
|
function buildRenderItems(message: UIMessage): MessageRenderItem[] {
|
||||||
|
const items: MessageRenderItem[] = [];
|
||||||
|
|
||||||
|
for (const [index, part] of message.parts.entries()) {
|
||||||
|
if (part.type === "source-url") {
|
||||||
|
const last = items.at(-1);
|
||||||
|
if (last?.kind === "sources") {
|
||||||
|
last.parts.push(part as SourceUrlPartLike);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
items.push({ kind: "sources", key: getMessagePartKey(message.id, index), parts: [part as SourceUrlPartLike] });
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
items.push({ kind: "part", key: getMessagePartKey(message.id, index), part });
|
||||||
|
}
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
type MessageUsageMetadata = {
|
||||||
|
model?: string;
|
||||||
|
usage?: { totalTokens?: number; cachedInputTokens?: number };
|
||||||
|
};
|
||||||
|
|
||||||
|
function MessageTokenFooter({ message }: { message: UIMessage }) {
|
||||||
|
// Loose read: legacy rows have no metadata and must keep rendering.
|
||||||
|
const metadata = (message as { metadata?: MessageUsageMetadata }).metadata;
|
||||||
|
const total = metadata?.usage?.totalTokens;
|
||||||
|
if (typeof total !== "number") return null;
|
||||||
|
const cached = metadata?.usage?.cachedInputTokens;
|
||||||
|
|
||||||
|
// Label-form ("Tokens: N") avoids noun declension against the count entirely, so the string
|
||||||
|
// stays grammatical at N=1 in every locale without ICU plural catalogs.
|
||||||
|
return (
|
||||||
|
<p className="px-1 text-[0.7rem] text-muted-foreground/70">
|
||||||
|
{metadata?.model ? `${metadata.model} · ` : null}
|
||||||
|
{typeof cached === "number" && cached > 0 ? (
|
||||||
|
<Trans>
|
||||||
|
Tokens: {total} ({cached} cached)
|
||||||
|
</Trans>
|
||||||
|
) : (
|
||||||
|
<Trans>Tokens: {total}</Trans>
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Memoized: completed messages keep stable part references, so they stop re-rendering while a
|
||||||
|
// later message streams (the handlers passed down are useCallback-stable).
|
||||||
|
const ChatMessage = memo(function ChatMessage({
|
||||||
|
message,
|
||||||
|
isReadOnly,
|
||||||
|
onAnswer,
|
||||||
|
onApprovalRespond,
|
||||||
|
onRevert,
|
||||||
|
isReverting,
|
||||||
|
actionsById,
|
||||||
|
}: ChatMessageProps) {
|
||||||
const isUser = message.role === "user";
|
const isUser = message.role === "user";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Message align={isUser ? "end" : "start"}>
|
<Message align={isUser ? "end" : "start"}>
|
||||||
<MessageContent className={cn(isUser ? "items-end" : "items-start")}>
|
<MessageContent className={cn(isUser ? "items-end" : "items-start")}>
|
||||||
{message.parts.map((part, index) => (
|
{buildRenderItems(message).map((item) =>
|
||||||
|
item.kind === "sources" ? (
|
||||||
|
<SourcesBlock key={item.key} parts={item.parts} />
|
||||||
|
) : (
|
||||||
<MessagePart
|
<MessagePart
|
||||||
key={getMessagePartKey(message.id, index)}
|
key={item.key}
|
||||||
part={part}
|
part={item.part}
|
||||||
isUser={isUser}
|
isUser={isUser}
|
||||||
|
isReadOnly={isReadOnly}
|
||||||
onAnswer={onAnswer}
|
onAnswer={onAnswer}
|
||||||
|
onApprovalRespond={onApprovalRespond}
|
||||||
onRevert={onRevert}
|
onRevert={onRevert}
|
||||||
isReverting={isReverting}
|
isReverting={isReverting}
|
||||||
actionsById={actionsById}
|
actionsById={actionsById}
|
||||||
/>
|
/>
|
||||||
))}
|
),
|
||||||
|
)}
|
||||||
|
{message.role === "assistant" ? <MessageTokenFooter message={message} /> : null}
|
||||||
</MessageContent>
|
</MessageContent>
|
||||||
</Message>
|
</Message>
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
|
|
||||||
export function AgentChat({
|
export function AgentChat({
|
||||||
threadId,
|
threadId,
|
||||||
@@ -622,6 +770,7 @@ export function AgentChat({
|
|||||||
isReadOnly,
|
isReadOnly,
|
||||||
readOnlyReason,
|
readOnlyReason,
|
||||||
threadStatus,
|
threadStatus,
|
||||||
|
reviewPatches,
|
||||||
activeRunId,
|
activeRunId,
|
||||||
actions,
|
actions,
|
||||||
onToggleThreads,
|
onToggleThreads,
|
||||||
@@ -642,6 +791,7 @@ export function AgentChat({
|
|||||||
const revertMutation = useMutation(orpc.agent.actions.revert.mutationOptions());
|
const revertMutation = useMutation(orpc.agent.actions.revert.mutationOptions());
|
||||||
const archiveMutation = useMutation(orpc.agent.threads.archive.mutationOptions());
|
const archiveMutation = useMutation(orpc.agent.threads.archive.mutationOptions());
|
||||||
const deleteMutation = useMutation(orpc.agent.threads.delete.mutationOptions());
|
const deleteMutation = useMutation(orpc.agent.threads.delete.mutationOptions());
|
||||||
|
const updateThreadMutation = useMutation(orpc.agent.threads.update.mutationOptions());
|
||||||
const isArchived = threadStatus === "archived";
|
const isArchived = threadStatus === "archived";
|
||||||
|
|
||||||
const refreshThread = useCallback(async () => {
|
const refreshThread = useCallback(async () => {
|
||||||
@@ -726,12 +876,26 @@ export function AgentChat({
|
|||||||
[threadId],
|
[threadId],
|
||||||
);
|
);
|
||||||
|
|
||||||
const { messages, sendMessage, regenerate, setMessages, status, error, clearError, addToolOutput } = useChat({
|
const {
|
||||||
|
messages,
|
||||||
|
sendMessage,
|
||||||
|
regenerate,
|
||||||
|
setMessages,
|
||||||
|
status,
|
||||||
|
error,
|
||||||
|
clearError,
|
||||||
|
addToolOutput,
|
||||||
|
addToolApprovalResponse,
|
||||||
|
} = useChat<AgentUIMessage>({
|
||||||
id: threadId,
|
id: threadId,
|
||||||
messages: initialMessages,
|
messages: initialMessages as AgentUIMessage[],
|
||||||
resume: !!activeRunId,
|
resume: !!activeRunId,
|
||||||
transport,
|
transport,
|
||||||
sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,
|
throttle: 50,
|
||||||
|
messageMetadataSchema: agentMessageMetadataSchema,
|
||||||
|
sendAutomaticallyWhen: (options) =>
|
||||||
|
lastAssistantMessageIsCompleteWithToolCalls(options) ||
|
||||||
|
lastAssistantMessageIsCompleteWithApprovalResponses(options),
|
||||||
onFinish: () => {
|
onFinish: () => {
|
||||||
void refreshThread();
|
void refreshThread();
|
||||||
},
|
},
|
||||||
@@ -762,11 +926,20 @@ export function AgentChat({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (lastSyncedThreadIdRef.current === threadId) return;
|
if (lastSyncedThreadIdRef.current === threadId) return;
|
||||||
lastSyncedThreadIdRef.current = threadId;
|
lastSyncedThreadIdRef.current = threadId;
|
||||||
setMessages(initialMessages);
|
setMessages(initialMessages as AgentUIMessage[]);
|
||||||
}, [threadId, initialMessages, setMessages]);
|
}, [threadId, initialMessages, setMessages]);
|
||||||
|
|
||||||
const isStreaming = status === "submitted" || status === "streaming";
|
const isStreaming = status === "submitted" || status === "streaming";
|
||||||
|
|
||||||
|
const threadTokenTotal = useMemo(
|
||||||
|
() =>
|
||||||
|
messages.reduce(
|
||||||
|
(sum, message) => sum + ((message as { metadata?: MessageUsageMetadata }).metadata?.usage?.totalTokens ?? 0),
|
||||||
|
0,
|
||||||
|
),
|
||||||
|
[messages],
|
||||||
|
);
|
||||||
|
|
||||||
const send = () => {
|
const send = () => {
|
||||||
const text = input.trim();
|
const text = input.trim();
|
||||||
if ((!text && pendingAttachments.length === 0) || isReadOnly || isStreaming || isUploading) return;
|
if ((!text && pendingAttachments.length === 0) || isReadOnly || isStreaming || isUploading) return;
|
||||||
@@ -809,11 +982,7 @@ export function AgentChat({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const stopRun = async () => {
|
const stopRun = async () => {
|
||||||
const last = messages.at(-1);
|
await client.agent.messages.stop({ threadId });
|
||||||
await client.agent.messages.stop({
|
|
||||||
threadId,
|
|
||||||
...(last?.role === "assistant" ? { partialMessage: last } : {}),
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const copyConversationJson = () => {
|
const copyConversationJson = () => {
|
||||||
@@ -840,17 +1009,46 @@ export function AgentChat({
|
|||||||
toast.add({ type: "success", description: t`Conversation copied.` });
|
toast.add({ type: "success", description: t`Conversation copied.` });
|
||||||
};
|
};
|
||||||
|
|
||||||
const answerToolCall = (toolCallId: string, answer: string) => {
|
const answerToolCall = useCallback(
|
||||||
|
(toolCallId: string, answer: string) => {
|
||||||
addToolOutput({ tool: "ask_user_question", toolCallId, output: answer });
|
addToolOutput({ tool: "ask_user_question", toolCallId, output: answer });
|
||||||
|
},
|
||||||
|
[addToolOutput],
|
||||||
|
);
|
||||||
|
|
||||||
|
// Responds locally; the composed sendAutomaticallyWhen resubmits the assistant message once
|
||||||
|
// every pending approval on it has a decision.
|
||||||
|
const respondToApproval = useCallback(
|
||||||
|
(response: PatchApprovalResponse) => {
|
||||||
|
void addToolApprovalResponse(response);
|
||||||
|
},
|
||||||
|
[addToolApprovalResponse],
|
||||||
|
);
|
||||||
|
|
||||||
|
const toggleReviewPatches = (nextReviewPatches: boolean) => {
|
||||||
|
updateThreadMutation.mutate(
|
||||||
|
{ id: threadId, reviewPatches: nextReviewPatches },
|
||||||
|
{
|
||||||
|
onSuccess: () => void refreshThread(),
|
||||||
|
onError: (error) =>
|
||||||
|
toast.add({
|
||||||
|
type: "error",
|
||||||
|
description: getOrpcErrorMessage(error, { fallback: t`Failed to update thread settings.` }),
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const revertAction = (actionId: string) => {
|
const revertActionMutate = revertMutation.mutate;
|
||||||
const confirmation = window.confirm(
|
const revertAction = useCallback(
|
||||||
t`Restore the resume to before this patch? This will roll back this patch and any patches applied after it.`,
|
(actionId: string) => {
|
||||||
);
|
void (async () => {
|
||||||
|
const confirmation = await confirm(t`Restore the resume to before this patch?`, {
|
||||||
|
description: t`This will roll back this patch and any patches applied after it.`,
|
||||||
|
});
|
||||||
if (!confirmation) return;
|
if (!confirmation) return;
|
||||||
|
|
||||||
revertMutation.mutate(
|
revertActionMutate(
|
||||||
{ id: actionId },
|
{ id: actionId },
|
||||||
{
|
{
|
||||||
onSuccess: (action) => {
|
onSuccess: (action) => {
|
||||||
@@ -872,10 +1070,26 @@ export function AgentChat({
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
};
|
})();
|
||||||
|
},
|
||||||
|
[confirm, revertActionMutate, refreshThread],
|
||||||
|
);
|
||||||
|
|
||||||
const retryLastMessage = () => {
|
const retryLastMessage = () => {
|
||||||
clearError();
|
clearError();
|
||||||
|
// A failed question/approval continuation must not regenerate: regenerate() removes the
|
||||||
|
// answered assistant message and resends the prior user prompt, losing the recorded
|
||||||
|
// decision. Resubmitting the transcript (sendMessage with no message) retries the
|
||||||
|
// continuation itself; regenerate stays for ordinary generation failures.
|
||||||
|
const last = messages.at(-1);
|
||||||
|
if (
|
||||||
|
last?.role === "assistant" &&
|
||||||
|
(lastAssistantMessageIsCompleteWithToolCalls({ messages }) ||
|
||||||
|
lastAssistantMessageIsCompleteWithApprovalResponses({ messages }))
|
||||||
|
) {
|
||||||
|
void sendMessage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
void regenerate();
|
void regenerate();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -885,12 +1099,17 @@ export function AgentChat({
|
|||||||
isArchived={isArchived}
|
isArchived={isArchived}
|
||||||
isArchivePending={archiveMutation.isPending}
|
isArchivePending={archiveMutation.isPending}
|
||||||
isDeletePending={deleteMutation.isPending}
|
isDeletePending={deleteMutation.isPending}
|
||||||
|
isUpdatePending={updateThreadMutation.isPending}
|
||||||
|
isStreaming={isStreaming}
|
||||||
|
reviewPatches={reviewPatches}
|
||||||
|
threadTokenTotal={threadTokenTotal}
|
||||||
onArchive={handleArchive}
|
onArchive={handleArchive}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
onCopyConversation={copyConversationText}
|
onCopyConversation={copyConversationText}
|
||||||
onCopyConversationJson={copyConversationJson}
|
onCopyConversationJson={copyConversationJson}
|
||||||
onDelete={() => void handleDelete()}
|
onDelete={() => void handleDelete()}
|
||||||
onToggleResume={onToggleResume}
|
onToggleResume={onToggleResume}
|
||||||
|
onToggleReviewPatches={toggleReviewPatches}
|
||||||
onToggleThreads={onToggleThreads}
|
onToggleThreads={onToggleThreads}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -904,6 +1123,7 @@ export function AgentChat({
|
|||||||
isStreaming={isStreaming}
|
isStreaming={isStreaming}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
onAnswer={answerToolCall}
|
onAnswer={answerToolCall}
|
||||||
|
onApprovalRespond={respondToApproval}
|
||||||
onRevert={revertAction}
|
onRevert={revertAction}
|
||||||
onRetry={retryLastMessage}
|
onRetry={retryLastMessage}
|
||||||
onStarterSelect={setInput}
|
onStarterSelect={setInput}
|
||||||
@@ -947,6 +1167,7 @@ function AgentChatMessages({
|
|||||||
isStreaming,
|
isStreaming,
|
||||||
messages,
|
messages,
|
||||||
onAnswer,
|
onAnswer,
|
||||||
|
onApprovalRespond,
|
||||||
onRevert,
|
onRevert,
|
||||||
onRetry,
|
onRetry,
|
||||||
onStarterSelect,
|
onStarterSelect,
|
||||||
@@ -976,9 +1197,11 @@ function AgentChatMessages({
|
|||||||
<MessageScrollerItem key={message.id} messageId={message.id} scrollAnchor={message.role === "user"}>
|
<MessageScrollerItem key={message.id} messageId={message.id} scrollAnchor={message.role === "user"}>
|
||||||
<ChatMessage
|
<ChatMessage
|
||||||
message={message}
|
message={message}
|
||||||
|
isReadOnly={isReadOnly}
|
||||||
isReverting={isReverting}
|
isReverting={isReverting}
|
||||||
actionsById={actionsById}
|
actionsById={actionsById}
|
||||||
onAnswer={onAnswer}
|
onAnswer={onAnswer}
|
||||||
|
onApprovalRespond={onApprovalRespond}
|
||||||
onRevert={onRevert}
|
onRevert={onRevert}
|
||||||
/>
|
/>
|
||||||
</MessageScrollerItem>
|
</MessageScrollerItem>
|
||||||
@@ -1022,12 +1245,17 @@ function AgentChatHeader({
|
|||||||
isArchived,
|
isArchived,
|
||||||
isArchivePending,
|
isArchivePending,
|
||||||
isDeletePending,
|
isDeletePending,
|
||||||
|
isUpdatePending,
|
||||||
|
isStreaming,
|
||||||
|
reviewPatches,
|
||||||
|
threadTokenTotal,
|
||||||
onArchive,
|
onArchive,
|
||||||
onClose,
|
onClose,
|
||||||
onCopyConversation,
|
onCopyConversation,
|
||||||
onCopyConversationJson,
|
onCopyConversationJson,
|
||||||
onDelete,
|
onDelete,
|
||||||
onToggleResume,
|
onToggleResume,
|
||||||
|
onToggleReviewPatches,
|
||||||
onToggleThreads,
|
onToggleThreads,
|
||||||
}: AgentChatHeaderProps) {
|
}: AgentChatHeaderProps) {
|
||||||
return (
|
return (
|
||||||
@@ -1045,6 +1273,11 @@ function AgentChatHeader({
|
|||||||
<div className="min-w-0 truncate font-semibold">
|
<div className="min-w-0 truncate font-semibold">
|
||||||
<Trans>Chat</Trans>
|
<Trans>Chat</Trans>
|
||||||
</div>
|
</div>
|
||||||
|
{threadTokenTotal > 0 ? (
|
||||||
|
<span className="shrink-0 text-muted-foreground/70 text-xs">
|
||||||
|
<Trans>Tokens: {threadTokenTotal}</Trans>
|
||||||
|
</span>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
{onToggleResume ? (
|
{onToggleResume ? (
|
||||||
@@ -1079,6 +1312,18 @@ function AgentChatHeader({
|
|||||||
|
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
|
|
||||||
|
{!isArchived ? (
|
||||||
|
<DropdownMenuCheckboxItem
|
||||||
|
checked={reviewPatches}
|
||||||
|
// Approval behavior is captured when a run starts; toggling mid-run would
|
||||||
|
// misrepresent what the streaming run actually does (server rejects it too).
|
||||||
|
disabled={isUpdatePending || isStreaming}
|
||||||
|
onCheckedChange={(checked) => onToggleReviewPatches(checked === true)}
|
||||||
|
>
|
||||||
|
<Trans>Review edits</Trans>
|
||||||
|
</DropdownMenuCheckboxItem>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{!isArchived ? (
|
{!isArchived ? (
|
||||||
<DropdownMenuItem disabled={isArchivePending} onClick={onArchive}>
|
<DropdownMenuItem disabled={isArchivePending} onClick={onArchive}>
|
||||||
<ArchiveIcon />
|
<ArchiveIcon />
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
// @vitest-environment happy-dom
|
||||||
|
|
||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import type { PatchApprovalResponse } from "./patch-approval-card";
|
||||||
|
import { fireEvent, render, screen } from "@testing-library/react";
|
||||||
|
import { beforeAll, describe, expect, it, vi } from "vitest";
|
||||||
|
import { i18n } from "@lingui/core";
|
||||||
|
import { I18nProvider } from "@lingui/react";
|
||||||
|
import { PatchApprovalCard } from "./patch-approval-card";
|
||||||
|
|
||||||
|
function approvalPart(overrides: Record<string, unknown> = {}) {
|
||||||
|
return {
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
state: "approval-requested",
|
||||||
|
input: {
|
||||||
|
title: "Tighten summary",
|
||||||
|
summary: "Rewrites the opening line",
|
||||||
|
operations: [{ op: "replace", path: "/sections/summary/content", value: "Impact-driven engineer" }],
|
||||||
|
},
|
||||||
|
approval: { id: "approval-1", signature: "sig" },
|
||||||
|
...overrides,
|
||||||
|
} as unknown as UIMessage["parts"][number];
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderCard = (part: UIMessage["parts"][number], onRespond: (response: PatchApprovalResponse) => void) =>
|
||||||
|
render(
|
||||||
|
<I18nProvider i18n={i18n}>
|
||||||
|
<PatchApprovalCard part={part} onRespond={onRespond} />
|
||||||
|
</I18nProvider>,
|
||||||
|
);
|
||||||
|
|
||||||
|
describe("PatchApprovalCard", () => {
|
||||||
|
beforeAll(() => {
|
||||||
|
i18n.loadAndActivate({ locale: "en", messages: {} });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders the request with operation rows and calls back on approve", () => {
|
||||||
|
const onRespond = vi.fn();
|
||||||
|
renderCard(approvalPart(), onRespond);
|
||||||
|
|
||||||
|
expect(screen.getByText("Tighten summary")).toBeInTheDocument();
|
||||||
|
expect(screen.getByText("/sections/summary/content")).toBeInTheDocument();
|
||||||
|
|
||||||
|
fireEvent.click(screen.getByRole("button", { name: "Approve" }));
|
||||||
|
|
||||||
|
expect(onRespond).toHaveBeenCalledWith({ id: "approval-1", approved: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls back on deny with the optional reason", () => {
|
||||||
|
const onRespond = vi.fn();
|
||||||
|
renderCard(approvalPart(), onRespond);
|
||||||
|
|
||||||
|
fireEvent.change(screen.getByRole("textbox", { name: "Optional note for the agent" }), {
|
||||||
|
target: { value: "Wrong section" },
|
||||||
|
});
|
||||||
|
fireEvent.click(screen.getByRole("button", { name: "Deny" }));
|
||||||
|
|
||||||
|
expect(onRespond).toHaveBeenCalledWith({ id: "approval-1", approved: false, reason: "Wrong section" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders no response controls when disabled (read-only thread)", () => {
|
||||||
|
const onRespond = vi.fn();
|
||||||
|
render(
|
||||||
|
<I18nProvider i18n={i18n}>
|
||||||
|
<PatchApprovalCard part={approvalPart()} disabled onRespond={onRespond} />
|
||||||
|
</I18nProvider>,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(screen.queryByRole("button")).not.toBeInTheDocument();
|
||||||
|
expect(screen.queryByRole("textbox")).not.toBeInTheDocument();
|
||||||
|
expect(screen.getByText("This edit request can no longer be answered.")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("hides the buttons once the approval has been responded to", () => {
|
||||||
|
const onRespond = vi.fn();
|
||||||
|
renderCard(
|
||||||
|
approvalPart({ state: "approval-responded", approval: { id: "approval-1", approved: true } }),
|
||||||
|
onRespond,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(screen.queryByRole("button", { name: "Approve" })).not.toBeInTheDocument();
|
||||||
|
expect(screen.getByText("Approved — waiting for the agent…")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders the declined terminal state", () => {
|
||||||
|
const onRespond = vi.fn();
|
||||||
|
renderCard(
|
||||||
|
approvalPart({ state: "output-denied", approval: { id: "approval-1", approved: false, reason: "No" } }),
|
||||||
|
onRespond,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(screen.getByText(/Edit declined/)).toBeInTheDocument();
|
||||||
|
expect(screen.queryByRole("button")).not.toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { t } from "@lingui/core/macro";
|
||||||
|
import { Trans } from "@lingui/react/macro";
|
||||||
|
import { CheckIcon, ProhibitIcon, ShieldCheckIcon } from "@phosphor-icons/react";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { Badge } from "@reactive-resume/ui/components/badge";
|
||||||
|
import { Button } from "@reactive-resume/ui/components/button";
|
||||||
|
import { Textarea } from "@reactive-resume/ui/components/textarea";
|
||||||
|
import { cn } from "@reactive-resume/utils/style";
|
||||||
|
|
||||||
|
export type PatchApprovalResponse = {
|
||||||
|
id: string;
|
||||||
|
approved: boolean;
|
||||||
|
reason?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PatchApprovalCardProps = {
|
||||||
|
part: UIMessage["parts"][number];
|
||||||
|
disabled?: boolean;
|
||||||
|
onRespond: (response: PatchApprovalResponse) => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
type ApprovalPartFields = {
|
||||||
|
state?: string;
|
||||||
|
input?: unknown;
|
||||||
|
approval?: { id?: string; approved?: boolean; reason?: string };
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PatchOperationLike = { op?: unknown; path?: unknown; value?: unknown; from?: unknown };
|
||||||
|
|
||||||
|
function truncateValue(value: unknown, max = 80) {
|
||||||
|
if (value === undefined) return null;
|
||||||
|
const text = typeof value === "string" ? value : JSON.stringify(value);
|
||||||
|
return text.length > max ? `${text.slice(0, max - 1)}…` : text;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function OperationRow({ operation }: { operation: PatchOperationLike }) {
|
||||||
|
const valuePreview = truncateValue(operation.value);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<li className="flex min-w-0 items-baseline gap-2 font-mono text-[0.7rem] leading-relaxed">
|
||||||
|
<Badge variant="outline" className="shrink-0 font-mono uppercase">
|
||||||
|
{String(operation.op ?? "?")}
|
||||||
|
</Badge>
|
||||||
|
<span className="shrink-0 text-foreground">{String(operation.path ?? "")}</span>
|
||||||
|
{typeof operation.from === "string" ? (
|
||||||
|
<span className="truncate text-muted-foreground">
|
||||||
|
{/* One translatable phrase: several languages place the source marker after the path. */}
|
||||||
|
<Trans>Source: {operation.from}</Trans>
|
||||||
|
</span>
|
||||||
|
) : null}
|
||||||
|
{valuePreview ? <span className="truncate text-muted-foreground">{valuePreview}</span> : null}
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Renders the approval lifecycle of an apply_resume_patch call: a pending request with
|
||||||
|
// Approve/Deny, the waiting state after a response, and the declined terminal state.
|
||||||
|
export function PatchApprovalCard({ part, disabled, onRespond }: PatchApprovalCardProps) {
|
||||||
|
const [reason, setReason] = useState("");
|
||||||
|
const fields = part as ApprovalPartFields;
|
||||||
|
const input = (typeof fields.input === "object" && fields.input ? fields.input : {}) as Record<string, unknown>;
|
||||||
|
const title = typeof input.title === "string" ? input.title : t`Resume edit`;
|
||||||
|
const summary = typeof input.summary === "string" ? input.summary : null;
|
||||||
|
const operations = Array.isArray(input.operations) ? (input.operations as PatchOperationLike[]) : [];
|
||||||
|
const approvalId = typeof fields.approval?.id === "string" ? fields.approval.id : null;
|
||||||
|
const state = fields.state;
|
||||||
|
|
||||||
|
if (state === "output-denied") {
|
||||||
|
return (
|
||||||
|
<div className="flex items-center gap-2 text-muted-foreground text-xs">
|
||||||
|
<ProhibitIcon />
|
||||||
|
<span>
|
||||||
|
<Trans>Edit declined</Trans>
|
||||||
|
{fields.approval?.reason ? ` — ${fields.approval.reason}` : null}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read-only threads keep the request visible but never actionable: responding would only
|
||||||
|
// change local state before the server rejects the continuation.
|
||||||
|
const isPending = state === "approval-requested" && approvalId !== null && !disabled;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="space-y-3 text-sm">
|
||||||
|
<div className="flex items-center gap-2 font-medium">
|
||||||
|
<ShieldCheckIcon className="text-muted-foreground" />
|
||||||
|
<span>
|
||||||
|
<Trans>Review this edit</Trans>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="min-w-0">
|
||||||
|
<p className="truncate font-medium">{title}</p>
|
||||||
|
{summary ? <p className="mt-0.5 text-muted-foreground text-xs">{summary}</p> : null}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{operations.length > 0 ? (
|
||||||
|
<ul className="max-h-48 space-y-1 overflow-auto rounded-md border bg-muted/20 p-2">
|
||||||
|
{operations.map((operation, index) => (
|
||||||
|
<OperationRow key={`${String(operation.path)}-${index}`} operation={operation} />
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{isPending ? (
|
||||||
|
<>
|
||||||
|
<Textarea
|
||||||
|
rows={1}
|
||||||
|
value={reason}
|
||||||
|
aria-label={t`Optional note for the agent`}
|
||||||
|
placeholder={t`Optional note for the agent…`}
|
||||||
|
className="min-h-8 text-xs"
|
||||||
|
onChange={(event) => setReason(event.target.value)}
|
||||||
|
/>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<Button
|
||||||
|
size="sm"
|
||||||
|
onClick={() =>
|
||||||
|
onRespond({ id: approvalId, approved: true, ...(reason.trim() ? { reason: reason.trim() } : {}) })
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<CheckIcon />
|
||||||
|
<Trans>Approve</Trans>
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
size="sm"
|
||||||
|
variant="outline"
|
||||||
|
onClick={() =>
|
||||||
|
onRespond({ id: approvalId, approved: false, ...(reason.trim() ? { reason: reason.trim() } : {}) })
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<ProhibitIcon />
|
||||||
|
<Trans>Deny</Trans>
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<p className={cn("text-muted-foreground text-xs")}>
|
||||||
|
{fields.approval?.approved === false ? (
|
||||||
|
<Trans>Denied — waiting for the agent…</Trans>
|
||||||
|
) : fields.approval?.approved === true ? (
|
||||||
|
<Trans>Approved — waiting for the agent…</Trans>
|
||||||
|
) : (
|
||||||
|
<Trans>This edit request can no longer be answered.</Trans>
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { t } from "@lingui/core/macro";
|
||||||
|
import { FileTextIcon, GlobeIcon, ReadCvLogoIcon, WrenchIcon } from "@phosphor-icons/react";
|
||||||
|
import { Badge } from "@reactive-resume/ui/components/badge";
|
||||||
|
|
||||||
|
export type ToolPartCardProps = {
|
||||||
|
part: UIMessage["parts"][number];
|
||||||
|
};
|
||||||
|
|
||||||
|
type ToolPartFields = {
|
||||||
|
type: string;
|
||||||
|
toolName?: string;
|
||||||
|
state?: string;
|
||||||
|
input?: unknown;
|
||||||
|
output?: unknown;
|
||||||
|
errorText?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
function toolDisplay(part: ToolPartFields): { label: string; icon: React.ReactNode } {
|
||||||
|
switch (part.type) {
|
||||||
|
case "tool-read_resume": {
|
||||||
|
return { label: t`Read the resume`, icon: <ReadCvLogoIcon /> };
|
||||||
|
}
|
||||||
|
case "tool-read_attachment": {
|
||||||
|
return { label: t`Read an attachment`, icon: <FileTextIcon /> };
|
||||||
|
}
|
||||||
|
case "tool-web_search": {
|
||||||
|
// State-neutral: this label sits next to a live Running…/Done/Failed badge.
|
||||||
|
return { label: t`Web search`, icon: <GlobeIcon /> };
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return { label: part.toolName ?? part.type, icon: <WrenchIcon /> };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function stateBadge(state: string | undefined, errorText: string | undefined) {
|
||||||
|
if (state === "output-error" || errorText) return { label: t`Failed`, variant: "destructive" as const };
|
||||||
|
if (state === "output-available") return { label: t`Done`, variant: "outline" as const };
|
||||||
|
return { label: t`Running…`, variant: "secondary" as const };
|
||||||
|
}
|
||||||
|
|
||||||
|
function payloadPreview(value: unknown) {
|
||||||
|
if (value === undefined || value === null) return null;
|
||||||
|
const text = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
||||||
|
return text.length > 4_000 ? `${text.slice(0, 4_000)}…` : text;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generic collapsed card for tool activity that previously rendered as nothing:
|
||||||
|
// read_resume / read_attachment / web_search plus the dynamic-tool fallback.
|
||||||
|
export function ToolPartCard({ part }: ToolPartCardProps) {
|
||||||
|
const fields = part as ToolPartFields;
|
||||||
|
const { label, icon } = toolDisplay(fields);
|
||||||
|
const badge = stateBadge(fields.state, fields.errorText);
|
||||||
|
const inputPreview = payloadPreview(fields.input);
|
||||||
|
const outputPreview = payloadPreview(fields.output);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<details className="group text-muted-foreground text-xs">
|
||||||
|
<summary className="inline-flex cursor-pointer list-none items-center gap-2 rounded-md py-1 font-medium hover:text-foreground [&::-webkit-details-marker]:hidden">
|
||||||
|
{icon}
|
||||||
|
<span>{label}</span>
|
||||||
|
<Badge variant={badge.variant}>{badge.label}</Badge>
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
<div className="mt-2 space-y-2 rounded-md border bg-muted/20 p-3">
|
||||||
|
{fields.errorText ? <p className="text-rose-500">{fields.errorText}</p> : null}
|
||||||
|
{inputPreview && inputPreview !== "{}" ? (
|
||||||
|
<pre className="max-h-40 overflow-auto whitespace-pre-wrap break-words rounded border bg-background p-2 font-mono text-[0.7rem]">
|
||||||
|
{inputPreview}
|
||||||
|
</pre>
|
||||||
|
) : null}
|
||||||
|
{outputPreview ? (
|
||||||
|
<pre className="max-h-72 overflow-auto whitespace-pre-wrap break-words rounded border bg-background p-2 font-mono text-[0.7rem]">
|
||||||
|
{outputPreview}
|
||||||
|
</pre>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -82,6 +82,7 @@ function AiAssistantThread({ threadId, onClose }: AiAssistantThreadProps) {
|
|||||||
isReadOnly={data.isReadOnly}
|
isReadOnly={data.isReadOnly}
|
||||||
readOnlyReason={readOnlyReason}
|
readOnlyReason={readOnlyReason}
|
||||||
threadStatus={data.thread.status}
|
threadStatus={data.thread.status}
|
||||||
|
reviewPatches={data.thread.reviewPatches}
|
||||||
activeRunId={data.thread.activeRunId}
|
activeRunId={data.thread.activeRunId}
|
||||||
actions={data.actions}
|
actions={data.actions}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
# ADR 0002: Agent AI SDK Adoption
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Proposed
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The `/agent` workspace (and the builder's in-resume assistant) is a single `ToolLoopAgent` loop in `packages/api/src/features/agent/service.ts` with four tools, resumable Redis streams, Postgres-persisted `UIMessage` history, and snapshot-based undo.
|
||||||
|
|
||||||
|
LangGraph was evaluated and rejected: everything it would add (loop control, persistence, resumability, interrupts) is already built here on the AI SDK. This work instead adopts more of the AI SDK v7 surface (`ai@7.0.66`, already installed) to fix real defects and add the features it makes cheap, plus shadcn's `@shadcn/helpers` ai-sdk fixture library (a deterministic scripted `ChatTransport` for `useChat` — a testing harness, not a runtime HITL implementation) for backend-free UI tests.
|
||||||
|
|
||||||
|
Defects driving this:
|
||||||
|
|
||||||
|
1. Unbounded context growth — every turn replays the full thread, including every full-resume `read_resume` dump; long threads will exceed model context and permanently break.
|
||||||
|
2. Stale-resume editing — `apply_resume_patch` returns only metadata; subsequent JSON Patch array indexes can silently target wrong items after removes/moves.
|
||||||
|
3. Crash-unsafe runs — patches commit immediately but the assistant message persists only in `onFinish`; process death orphans applied edits; a stuck `activeRunId` (no reaper; `activeRunStartedAt` written, never read) permanently CONFLICTs the thread.
|
||||||
|
4. Client-trusted cancellation — `messages.stop` persists a client-authored `partialMessage`.
|
||||||
|
5. Weak validation — `isUiMessage` checks three fields; arbitrary `parts` get persisted and replayed.
|
||||||
|
6. No run guards — no timeout, `maxRetries`, or `maxOutputTokens` on the run.
|
||||||
|
7. Invisible tool activity — `tool-read_resume`/`read_attachment`/`web_search`/`dynamic-tool` parts render as nothing; the patch card is a raw `JSON.stringify` dump; zero token-usage visibility.
|
||||||
|
8. Latent bug found during design: on an `ask_user_question` continuation, `toUIMessageStream({originalMessages})` continues the existing assistant message (same `uiMessage.id`) but `persistMessage` is insert-only, producing duplicate rows sharing one message id. Fixed by the Phase 1 upsert; regression-tested.
|
||||||
|
|
||||||
|
Verified API surface from published `ai@7.0.66` and `@ai-sdk/react@4.0.69` typings and docs: `prepareStep` and `pruneMessages`; tool-level `needsApproval`, call-level `toolApproval`, `experimental_toolApprovalSecret` (HMAC-signs approval requests); UIMessage tool-part states `approval-requested`/`approval-responded`/`output-denied`; `lastAssistantMessageIsCompleteWithApprovalResponses`; `useChat().addToolApprovalResponse`; `validateUIMessages`/`safeValidateUIMessages`; `repairToolCall`; tool `inputExamples` plus `addToolInputExamplesMiddleware`; `messageMetadata` on `toUIMessageStream` (plus `messageMetadataSchema` on `useChat`); `onStepEnd`; `ToolLoopAgentSettings` extends `LanguageModelCallOptions` so `timeout`/`maxOutputTokens`/`maxRetries` are valid in the constructor; `smoothStream` passed as `agent.stream({ experimental_transform })`; `useChat` `throttle`; `isStepCount`; `InferAgentUIMessage`; `LanguageModelUsage` with cache read/write detail; `totalUsage` on finish events.
|
||||||
|
|
||||||
|
Constraints the implementation must respect:
|
||||||
|
|
||||||
|
- `getAgentModel` silently switches to the OpenAI Responses API for direct-OpenAI web-search models — every model-facing change is QA'd on both a Responses and a chat-completions provider.
|
||||||
|
- Abort reasons must be `DOMException(label, "AbortError")`; `AbortSignal.timeout()`/`AbortSignal.any()` produce `TimeoutError` and would crash the resumable-stream pump, so the run timeout uses `setTimeout` plus `controller.abort(abortReason("RUN_TIMEOUT"))`.
|
||||||
|
- The `activeRunControllers` map is single-process; multi-process abort (Redis pub/sub) is explicitly out of scope.
|
||||||
|
- `service.test.ts` mocks the whole `"ai"` module with a closed factory and scripts DB queries positionally; the test harness is migrated first (Phase 1.0).
|
||||||
|
- Shared contracts live in `packages/ai` (runtime-universal per ADR 0001): zod-only runtime, `import type` from `"ai"` only, with `ai` added to devDependencies.
|
||||||
|
- No new environment variables anywhere in this plan (the approval secret derives from `ENCRYPTION_SECRET`), so `turbo.json` `globalEnv` stays untouched.
|
||||||
|
- `resumeService.patchInTransaction` already accepts `expectedUpdatedAt` and throws `RESUME_VERSION_CONFLICT`; the agent tool just passes it.
|
||||||
|
- Legacy persisted rows must never hard-fail: validation happens only at the network boundary (schema-less), and the metadata schema is loose and optional.
|
||||||
|
- Lingui macros for all new user-facing copy; Base UI `render` prop (no Radix `asChild`); `cn` from `@reactive-resume/utils/style`; toasts via `toast.add`.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
Adopt the AI SDK v7 surface in three phases on top of the existing loop, rather than introducing a graph framework.
|
||||||
|
|
||||||
|
### Phase 1 — correctness
|
||||||
|
|
||||||
|
Order: 1.0 → 1.1 → 1.2 → 1.3 → 1.4 → 1.5 → 1.6 (spine: 1.3 → 1.4 → 1.5; 1.6 last because it changes model-visible behavior).
|
||||||
|
|
||||||
|
- **1.0 Test-harness prep (no behavior change).** Replace the closed `vi.mock("ai")` factory with a spread-actual factory so pure helpers (`isStepCount`, `safeValidateUIMessages`, `pruneMessages`, `JsonToSseTransformStream`) stay real and only the scripted seams (`convertToModelMessages`, `ToolLoopAgent`) stay mocked. Adopt the rule that new DB queries on the send path go into separate injectable modules (the `runs.ts` pattern) and are module-mocked wholesale. Gate: suite green with zero source changes.
|
||||||
|
- **1.1 Run guards, snapshot consistency, misc.** `createAgent` adds `maxOutputTokens: 8_192`, `maxRetries: 2`, `timeout: 120_000` (per provider request). Whole-run wall clock: after run claim, `setTimeout(() => controller.abort(abortReason("RUN_TIMEOUT")), 600_000)`, handle stored in a module map keyed by runId and cleared in `cleanupActiveRun`. `applyResumePatch` passes `expectedUpdatedAt` to `patchInTransaction` and rethrows `RESUME_VERSION_CONFLICT` as a recoverable tool error. `readAttachment` uses a named `MAX_ATTACHMENT_TEXT_CHARS` constant.
|
||||||
|
- **1.2 Real message validation at the send boundary.** Keep `isUiMessage` as the sync oRPC gate; inside `messages.send`, run `safeValidateUIMessages({ messages: [input.message] })` before `claimActiveAgentRun` and return BAD_REQUEST on failure. Deliberately schema-less so provider-echoed parts pass and replayed history is never re-validated.
|
||||||
|
- **1.3 Crash-safe incremental persistence (draft row).** New `messages-persistence.ts` (injectable DB): `applyStepToUiMessage` (pure fold), `insertDraftAssistantMessage`, `upsertAssistantUiMessage` (by row id, then by `uiMessage->>'id'`, then insert), `deleteDraftIfEmpty`. The service pre-generates the response message id, inserts a draft before `agent.stream`, folds and upserts on `onStepEnd` (≤30 writes/run), and upserts the SDK's authoritative message with `completed|canceled` in `onFinish`. `apply_resume_patch` threads `toolCallId` through and sets `agentAction.messageId` at INSERT time. The upsert also fixes the duplicate-row continuation bug (defect 8).
|
||||||
|
- **1.4 Server-side cancellation.** `messages.stop` drops `partialMessage` persistence; the body aborts with `abortReason("USER_STOPPED")`, clears the timeout handle, and clears the run claim. Partial content persists server-side via `onFinish({isAborted: true})`. The router keeps `partialMessage` in the input schema for one release (deprecated, ignored).
|
||||||
|
- **1.5 Stale-run reaper.** `STALE_AGENT_RUN_TTL_MS = 15 * 60_000` (greater than the run timeout, so live runs always die by their own timeout first; deliberately TTL-only and multi-replica-safe). Wired at server boot, lazily in `messages.send` before the CONFLICT throw, and at the top of `threads.get`. Reap conditionally clears run columns and flips `streaming` draft rows to `canceled`, appending synthetic `tool-apply_resume_patch` parts rebuilt from action rows so replayed history stays provider-valid. Applied actions stay applied — they are real committed edits, individually revertable.
|
||||||
|
- **1.6 Context growth: fresh-document patch output plus pruning.** `applyResumePatch` returns the full post-patch document plus `changedPaths`, with a tool description telling the model to base further patches on it. New pure `context.ts`: `AGENT_CONTEXT_TOKEN_BUDGET = 40_000`, `estimateTokenCount` (chars/4), `pruneAgentModelContext`. `createAgent` gains `prepareStep` wiring so pruning runs every loop step.
|
||||||
|
|
||||||
|
Pruning tiers (all pure, wired via `prepareStep`):
|
||||||
|
|
||||||
|
- Tier 0, always: supersede resume snapshots — every `read_resume` result and every patch result's embedded `resume` except the last in the conversation becomes a stub note. A stale snapshot is actively harmful (shifted indexes), so this runs even in short threads; exactly one full snapshot survives, positioned where the model last acted.
|
||||||
|
- Tier 1, over budget: strip reasoning from all but the last assistant message.
|
||||||
|
- Tier 2, still over: collapse oldest tool call/result pairs (never orphan one side — several BYOK gateways reject unpaired tool messages) into one-line stubs, excluding the last assistant message, unresolved question/approval parts, and the surviving snapshot.
|
||||||
|
- Tier 3, last resort: attachment parts on non-latest user messages become stubs teaching the `read_attachment` recovery path.
|
||||||
|
- Never pruned: instructions, latest user message, last assistant message, unresolved interactive parts.
|
||||||
|
|
||||||
|
Full-document patch output was chosen over a `prepareStep`-injected "current resume" reminder because a reminder re-sends a snapshot every step, defeats provider prompt caching, and splits authority into two places; a summarized view invites hallucination and forces a `read_resume` round-trip per edit against a 30-step cap. Output plus Tier 0 bounds cost: N patches do not produce N surviving snapshots.
|
||||||
|
|
||||||
|
### Phase 2 — human-in-the-loop approvals
|
||||||
|
|
||||||
|
Order: 2.1 contracts → 2.2 migration/endpoint → 2.3 tool+secret → 2.4 merge/continuation → 2.5 UI → 2.6 tests.
|
||||||
|
|
||||||
|
- **2.1 Shared typed tool contracts in `packages/ai`.** New `agent-tool-contracts.ts` with zod schemas for tool inputs/outputs and a loose all-optional message metadata schema, plus `AgentTools`/`AgentUIMessage` types. `"ai"` goes in devDependencies, `import type` only; zod stays the only runtime import.
|
||||||
|
- **2.2 Migration plus thread setting.** `reviewPatches: boolean, default false` on `agentThread` (the plan's only migration), a `threads.update` procedure, and the flag in `toThreadSummary`. Auto-apply stays the default.
|
||||||
|
- **2.3 `needsApproval` plus HMAC secret.** `getAgentToolApprovalSecret()` derives `sha256(ENCRYPTION_SECRET + ":agent-tool-approval")` — domain-separated from the AES key, no new env var, and deterministic so a signature minted at halt verifies at continuation even across a restart. `buildAgentTools` gains `requirePatchApproval`; `createAgent` reads `thread.reviewPatches` and passes `experimental_toolApprovalSecret`.
|
||||||
|
- **2.4 Merge generalization plus continuation.** Extract the tool-response merge into `messages-merge.ts` as `mergeClientToolResponses`, handling both `ask_user_question` outputs and `approval-responded` parts in one pass. `{0,0}` maps to BAD_REQUEST, `{0,>0}` to CONFLICT("already handled") before claiming a run.
|
||||||
|
- **2.5 Client: approval UI, composed auto-send, `useConfirm`.** `sendAutomaticallyWhen` composes `lastAssistantMessageIsCompleteWithToolCalls` with `lastAssistantMessageIsCompleteWithApprovalResponses`. New `patch-approval-card.tsx` (web feature, not `packages/ui`) renders `approval-requested` with Approve/Deny plus optional reason, and `output-denied` as a muted declined card. A "Review edits" toggle lands in the thread menu. `window.confirm` is replaced with the existing `useConfirm()`.
|
||||||
|
- **2.6 Approval-flow tests with `@shadcn/helpers`.** Component tests for the card, plus a small harness wiring `useChat` to the scripted transport to exercise the composed auto-send and approval state machine with no backend. `AgentChat` is not refactored to accept a transport prop just for tests.
|
||||||
|
|
||||||
|
Approval flow end-to-end: the halt leaves no active run (identical lifecycle to today's `ask_user_question` halt); the client resubmits the last assistant message byte-for-byte through the existing transport; the merge copies approval-response fields onto the stored, signed request part matched by `toolCallId` plus approval id, so a client cannot substitute a forged request; the continuation run replays history, the fresh agent derives the same secret, the signature verifies, and the SDK executes (or denies) the call, streaming into the same message id via the 1.3 upsert — which is load-bearing, so 1.3 ships before 2.4. Idempotency ladder: UI disables buttons on state flip → concurrent sends race the atomic `claimActiveAgentRun` → post-completion resubmits match `alreadyResolved` and CONFLICT before any run is claimed → conflicting approved values are BAD_REQUEST.
|
||||||
|
|
||||||
|
### Phase 3 — visibility and polish
|
||||||
|
|
||||||
|
- **3.1 Usage metadata.** `messageMetadata` on `toUIMessageStream` records `{usage, model}` on finish; it round-trips in the `uiMessage` jsonb with no migration. The client renders a muted per-message token footer and a per-thread aggregate; legacy rows without metadata render fine.
|
||||||
|
- **3.2 Render the invisible parts plus a real patch card.** New generic `tool-part-card.tsx` (collapsed icon/label/state card with expandable input/output) for `read_resume`/`read_attachment`/`web_search`/`dynamic-tool`; the patch card gains human-readable operation rows with raw JSON demoted to a nested `details` block; consecutive `source-url` parts group into one sources block.
|
||||||
|
- **3.3 Streaming performance.** `useChat({throttle: 50})`, memoized markdown/message components, and `smoothStream({chunking: "word"})` via `experimental_transform`.
|
||||||
|
- **3.4 Tool-input robustness.** `inputExamples` on `apply_resume_patch` plus `addToolInputExamplesMiddleware`; a `repairToolCall` callback (`repair.ts`) that runs `jsonrepair`, strips `/data` prefixes and section shortcuts, and re-validates against the shared schema, falling back to the SDK re-ask on `null`. `normalizeAgentResumePatchOperations` stays as last-line defense; the instructions blob shrinks accordingly.
|
||||||
|
- **3.5 Structured logging plus provider options.** One JSON line per step (`agent.step`) and per tool execution (`agent.tool`) — greppable structured console, no OpenTelemetry dependency. Optionally `anthropic.cacheControl: ephemeral` on the instructions block.
|
||||||
|
|
||||||
|
### Crash-safety design: draft-row upsert over reconciliation-on-read
|
||||||
|
|
||||||
|
The failure that matters is a patch committed plus process death before `onFinish`. Reconciliation would synthesize an assistant message from action rows, but a synthesized message has no model-authored text and no tool call/result pairing that replays validly. The draft row records the real transcript step-by-step (≤30 single-row jsonb upserts per run); a patch executes within a step, so the orphan window shrinks from "entire run" to milliseconds. It also subsumes server-side cancellation partials, `agentAction.messageId` at INSERT time, and the duplicate-row continuation bug. The reaper covers the remaining sliver by appending synthetic tool parts from action rows during reap.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
- Long threads stop growing without bound; exactly one resume snapshot survives in model context, and patch results carry the fresh document so array indexes never go stale.
|
||||||
|
- Runs are bounded (per-request timeout, whole-run wall clock, output-token cap, retry cap) and crash-safe (draft-row persistence, boot/lazy/read-path reaping); cancellation is server-authored.
|
||||||
|
- Users can opt threads into edit review; approvals are HMAC-signed server-side and survive restarts.
|
||||||
|
- Tool activity, token usage, and patch contents become visible in the UI; streaming is smoother and cheaper to render.
|
||||||
|
- The send path gains real message validation without breaking legacy rows.
|
||||||
|
- Test coverage moves toward pure, mock-free modules; the `"ai"` mock keeps real helpers.
|
||||||
|
- An approval continuation costs a second `send` against the in-process rate limit (20/min) — acceptable, noted for tuning.
|
||||||
|
|
||||||
|
Out of scope, documented as follow-ups: multi-process cancellation via Redis pub/sub; OpenTelemetry; removing the deprecated `partialMessage` input (next release); the legacy non-agent `chat()` in `ai/service.ts`; thread-title generation via a cheap model call.
|
||||||
|
|
||||||
|
## Rejected Alternatives
|
||||||
|
|
||||||
|
LangGraph: rejected — loop control, persistence, resumability, and interrupts are already built here on the AI SDK; a graph framework would add a dependency and a second orchestration model without removing any existing code.
|
||||||
|
|
||||||
|
`prepareStep`-injected "current resume" reminder instead of full-document patch output: rejected — re-sends a snapshot every step, defeats provider prompt caching, and splits document authority.
|
||||||
|
|
||||||
|
Reconciliation-on-read instead of draft-row persistence: rejected — synthesized messages replay invalidly against providers that require call/result pairing.
|
||||||
|
|
||||||
|
Random per-boot approval secret: rejected — it would strand pending approvals across restarts; the deterministic derivation from `ENCRYPTION_SECRET` keeps signatures verifiable.
|
||||||
|
|
||||||
|
New environment variable for the approval secret: rejected — derivation avoids env, `turbo.json`, and deployment churn.
|
||||||
@@ -56,6 +56,7 @@
|
|||||||
"react-pdf-html",
|
"react-pdf-html",
|
||||||
"resumable-stream",
|
"resumable-stream",
|
||||||
"sharp",
|
"sharp",
|
||||||
|
"tokenx",
|
||||||
"ts-pattern",
|
"ts-pattern",
|
||||||
"unique-names-generator",
|
"unique-names-generator",
|
||||||
"uuid"
|
"uuid"
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE "agent_threads" ADD COLUMN "review_patches" boolean DEFAULT false NOT NULL;
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@
|
|||||||
"exports": {
|
"exports": {
|
||||||
"./types": "./src/types.ts",
|
"./types": "./src/types.ts",
|
||||||
"./prompts": "./src/prompts.ts",
|
"./prompts": "./src/prompts.ts",
|
||||||
|
"./tools/agent-tool-contracts": "./src/tools/agent-tool-contracts.ts",
|
||||||
"./tools/resume-tool-contracts": "./src/tools/resume-tool-contracts.ts",
|
"./tools/resume-tool-contracts": "./src/tools/resume-tool-contracts.ts",
|
||||||
"./tools/patch-proposal": "./src/tools/patch-proposal.ts",
|
"./tools/patch-proposal": "./src/tools/patch-proposal.ts",
|
||||||
"./resume/extraction-template": "./src/resume/extraction-template.ts",
|
"./resume/extraction-template": "./src/resume/extraction-template.ts",
|
||||||
@@ -28,6 +29,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@reactive-resume/config": "workspace:*",
|
"@reactive-resume/config": "workspace:*",
|
||||||
|
"ai": "^7.0.66",
|
||||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||||
"typescript": "^7.0.2"
|
"typescript": "^7.0.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import {
|
||||||
|
agentMessageMetadataSchema,
|
||||||
|
applyResumePatchInputSchema,
|
||||||
|
applyResumePatchOutputSchema,
|
||||||
|
askUserQuestionInputSchema,
|
||||||
|
} from "./agent-tool-contracts";
|
||||||
|
|
||||||
|
describe("askUserQuestionInputSchema", () => {
|
||||||
|
it("accepts a question with up to four choices", () => {
|
||||||
|
expect(
|
||||||
|
askUserQuestionInputSchema.safeParse({ question: "Which tone?", choices: ["Formal", "Casual"] }).success,
|
||||||
|
).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("rejects an empty question and too many choices", () => {
|
||||||
|
expect(askUserQuestionInputSchema.safeParse({ question: " " }).success).toBe(false);
|
||||||
|
expect(askUserQuestionInputSchema.safeParse({ question: "?", choices: ["a", "b", "c", "d", "e"] }).success).toBe(
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("applyResumePatchInputSchema", () => {
|
||||||
|
it("requires a title and at least one operation", () => {
|
||||||
|
expect(
|
||||||
|
applyResumePatchInputSchema.safeParse({
|
||||||
|
title: "Edit",
|
||||||
|
operations: [{ op: "replace", path: "/basics/name", value: "Bob" }],
|
||||||
|
}).success,
|
||||||
|
).toBe(true);
|
||||||
|
expect(applyResumePatchInputSchema.safeParse({ title: "Edit", operations: [] }).success).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("accepts a strict ISO baseUpdatedAt and rejects malformed values", () => {
|
||||||
|
const operations = [{ op: "replace", path: "/basics/name", value: "Bob" }];
|
||||||
|
|
||||||
|
expect(
|
||||||
|
applyResumePatchInputSchema.safeParse({
|
||||||
|
title: "Edit",
|
||||||
|
baseUpdatedAt: "2026-08-20T10:15:00.000Z",
|
||||||
|
operations,
|
||||||
|
}).success,
|
||||||
|
).toBe(true);
|
||||||
|
expect(
|
||||||
|
applyResumePatchInputSchema.safeParse({ title: "Edit", baseUpdatedAt: "yesterday", operations }).success,
|
||||||
|
).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("applyResumePatchOutputSchema", () => {
|
||||||
|
const base = {
|
||||||
|
actionId: "action-1",
|
||||||
|
resumeId: "resume-1",
|
||||||
|
title: "Edit",
|
||||||
|
summary: null,
|
||||||
|
operations: [{ op: "remove" as const, path: "/sections/experience/items/0" }],
|
||||||
|
appliedUpdatedAt: "2026-08-20T00:00:00.000Z",
|
||||||
|
};
|
||||||
|
|
||||||
|
it("accepts legacy outputs without changedPaths or resume", () => {
|
||||||
|
expect(applyResumePatchOutputSchema.safeParse(base).success).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("accepts fresh outputs carrying the post-patch document", () => {
|
||||||
|
expect(
|
||||||
|
applyResumePatchOutputSchema.safeParse({ ...base, changedPaths: ["/basics/name"], resume: { basics: {} } })
|
||||||
|
.success,
|
||||||
|
).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("agentMessageMetadataSchema", () => {
|
||||||
|
it("accepts missing metadata, empty metadata, and unknown extra fields", () => {
|
||||||
|
expect(agentMessageMetadataSchema.safeParse(undefined).success).toBe(true);
|
||||||
|
expect(agentMessageMetadataSchema.safeParse({}).success).toBe(true);
|
||||||
|
expect(
|
||||||
|
agentMessageMetadataSchema.safeParse({ model: "gpt-5", usage: { totalTokens: 12, custom: true }, extra: 1 })
|
||||||
|
.success,
|
||||||
|
).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
// Shared typed contracts for the /agent workspace tools. Zod is the only runtime import — the
|
||||||
|
// "ai" package is a devDependency used with `import type` only, so this file stays
|
||||||
|
// runtime-universal (consumed by both the API tool definitions and the web chat UI).
|
||||||
|
import type { UIDataTypes, UIMessage } from "ai";
|
||||||
|
import z from "zod";
|
||||||
|
import { jsonPatchOperationSchema } from "@reactive-resume/resume/patch";
|
||||||
|
|
||||||
|
export const askUserQuestionInputSchema = z.object({
|
||||||
|
question: z.string().trim().min(1),
|
||||||
|
choices: z.array(z.string().trim().min(1)).min(1).max(4).optional(),
|
||||||
|
recommendedChoice: z.string().trim().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const applyResumePatchInputSchema = z.object({
|
||||||
|
title: z.string().trim().min(1),
|
||||||
|
summary: z.string().trim().optional(),
|
||||||
|
// The `updatedAt` of the read_resume / apply_resume_patch result the operations were built
|
||||||
|
// against. Execution rejects the patch when the resume has changed since, so index-based
|
||||||
|
// operations can never silently target different items (e.g. after a user edit while an
|
||||||
|
// approval was pending). Optional for weaker models; strict ISO when present, so a malformed
|
||||||
|
// value is rejected at the schema (SDK re-asks) instead of silently skipping the check.
|
||||||
|
baseUpdatedAt: z.iso.datetime().optional(),
|
||||||
|
operations: z.array(jsonPatchOperationSchema).min(1),
|
||||||
|
});
|
||||||
|
|
||||||
|
// Loose on purpose: legacy persisted outputs predate changedPaths/resume.
|
||||||
|
export const applyResumePatchOutputSchema = z.looseObject({
|
||||||
|
actionId: z.string(),
|
||||||
|
resumeId: z.string(),
|
||||||
|
title: z.string(),
|
||||||
|
summary: z.string().nullish(),
|
||||||
|
operations: z.array(jsonPatchOperationSchema),
|
||||||
|
appliedUpdatedAt: z.string(),
|
||||||
|
changedPaths: z.array(z.string()).optional(),
|
||||||
|
resume: z.unknown().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
|
// All-optional and loose: legacy rows have no metadata and must keep rendering.
|
||||||
|
// The usage shape mirrors the AI SDK's LanguageModelUsage (nested token details).
|
||||||
|
export const agentMessageMetadataSchema = z
|
||||||
|
.looseObject({
|
||||||
|
model: z.string().optional(),
|
||||||
|
usage: z
|
||||||
|
.looseObject({
|
||||||
|
inputTokens: z.number().optional(),
|
||||||
|
outputTokens: z.number().optional(),
|
||||||
|
totalTokens: z.number().optional(),
|
||||||
|
inputTokenDetails: z
|
||||||
|
.looseObject({
|
||||||
|
noCacheTokens: z.number().optional(),
|
||||||
|
cacheReadTokens: z.number().optional(),
|
||||||
|
cacheWriteTokens: z.number().optional(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
outputTokenDetails: z
|
||||||
|
.looseObject({
|
||||||
|
textTokens: z.number().optional(),
|
||||||
|
reasoningTokens: z.number().optional(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
})
|
||||||
|
.optional();
|
||||||
|
|
||||||
|
export type AskUserQuestionInput = z.infer<typeof askUserQuestionInputSchema>;
|
||||||
|
export type ApplyResumePatchInput = z.infer<typeof applyResumePatchInputSchema>;
|
||||||
|
export type ApplyResumePatchOutput = z.infer<typeof applyResumePatchOutputSchema>;
|
||||||
|
export type AgentMessageMetadata = z.infer<typeof agentMessageMetadataSchema>;
|
||||||
|
|
||||||
|
export type AgentTools = {
|
||||||
|
ask_user_question: { input: AskUserQuestionInput; output: string };
|
||||||
|
read_resume: { input: Record<string, never>; output: unknown };
|
||||||
|
read_attachment: { input: { attachmentId: string }; output: unknown };
|
||||||
|
apply_resume_patch: { input: ApplyResumePatchInput; output: ApplyResumePatchOutput };
|
||||||
|
// Provider-native web search (OpenAI Responses); input/output shapes are provider-owned.
|
||||||
|
web_search: { input: unknown; output: unknown };
|
||||||
|
};
|
||||||
|
|
||||||
|
export type AgentUIMessage = UIMessage<AgentMessageMetadata, UIDataTypes, AgentTools>;
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"exports": {
|
"exports": {
|
||||||
"./context": "./src/context.ts",
|
"./context": "./src/context.ts",
|
||||||
|
"./features/agent/runs": "./src/features/agent/runs.ts",
|
||||||
"./features/flags": "./src/features/flags/index.ts",
|
"./features/flags": "./src/features/flags/index.ts",
|
||||||
"./features/resume/export": "./src/features/resume/export.ts",
|
"./features/resume/export": "./src/features/resume/export.ts",
|
||||||
"./features/resume/public-pdf": "./src/features/resume/public-pdf.ts",
|
"./features/resume/public-pdf": "./src/features/resume/public-pdf.ts",
|
||||||
@@ -52,10 +53,12 @@
|
|||||||
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
||||||
"es-toolkit": "^1.51.0",
|
"es-toolkit": "^1.51.0",
|
||||||
"ioredis": "^6.0.0",
|
"ioredis": "^6.0.0",
|
||||||
|
"jsonrepair": "^3.15.0",
|
||||||
"ollama-ai-provider-v2": "^4.0.1",
|
"ollama-ai-provider-v2": "^4.0.1",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
"resumable-stream": "^2.2.12",
|
"resumable-stream": "^2.2.12",
|
||||||
"sharp": "^0.35.3",
|
"sharp": "^0.35.3",
|
||||||
|
"tokenx": "^2.1.0",
|
||||||
"ts-pattern": "^5.9.0",
|
"ts-pattern": "^5.9.0",
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,288 @@
|
|||||||
|
import type { ModelMessage } from "ai";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { estimateTokenCount, pruneAgentModelContext } from "./context";
|
||||||
|
|
||||||
|
const BIG_RESUME = { basics: { name: "Alice" }, sections: { summary: { content: "x".repeat(2_000) } } };
|
||||||
|
|
||||||
|
function readResumeExchange(callId: string): ModelMessage[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [{ type: "tool-call", toolCallId: callId, toolName: "read_resume", input: {} }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "tool",
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "tool-result",
|
||||||
|
toolCallId: callId,
|
||||||
|
toolName: "read_resume",
|
||||||
|
output: { type: "json", value: { id: "resume-1", data: BIG_RESUME } },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
] as ModelMessage[];
|
||||||
|
}
|
||||||
|
|
||||||
|
function patchExchange(callId: string): ModelMessage[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [{ type: "tool-call", toolCallId: callId, toolName: "apply_resume_patch", input: { title: "Edit" } }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "tool",
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "tool-result",
|
||||||
|
toolCallId: callId,
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
output: { type: "json", value: { actionId: `action-${callId}`, resume: BIG_RESUME } },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
] as ModelMessage[];
|
||||||
|
}
|
||||||
|
|
||||||
|
function user(text: string): ModelMessage {
|
||||||
|
return { role: "user", content: [{ type: "text", text }] };
|
||||||
|
}
|
||||||
|
|
||||||
|
function messageParts(message: ModelMessage | undefined) {
|
||||||
|
return (message?.content ?? []) as Array<Record<string, unknown>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function snapshotValue(message: ModelMessage | undefined) {
|
||||||
|
const part = messageParts(message)[0];
|
||||||
|
return ((part?.output ?? {}) as { value?: Record<string, unknown> }).value ?? {};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("pruneAgentModelContext — tier 0 (snapshot supersession)", () => {
|
||||||
|
it("keeps only the last resume snapshot even when under budget", () => {
|
||||||
|
const messages = [user("hi"), ...readResumeExchange("call-1"), ...patchExchange("call-2")];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 1_000_000);
|
||||||
|
|
||||||
|
expect(snapshotValue(pruned[2])).not.toHaveProperty("data");
|
||||||
|
expect(snapshotValue(pruned[2]).note).toContain("Superseded resume snapshot");
|
||||||
|
expect(snapshotValue(pruned[4])).toHaveProperty("resume");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns the same array reference when there is at most one snapshot", () => {
|
||||||
|
const messages = [user("hi"), ...readResumeExchange("call-1")];
|
||||||
|
|
||||||
|
expect(pruneAgentModelContext(messages, 1_000_000)).toBe(messages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("treats a crash-recovered synthetic patch result (resume: null) as the surviving snapshot boundary", () => {
|
||||||
|
const synthetic: ModelMessage[] = [
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [{ type: "tool-call", toolCallId: "synthetic-1", toolName: "apply_resume_patch", input: {} }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "tool",
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "tool-result",
|
||||||
|
toolCallId: "synthetic-1",
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
output: { type: "json", value: { actionId: "action-1", resume: null, note: "Re-read the resume" } },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext([user("hi"), ...readResumeExchange("call-1"), ...synthetic], 1_000_000);
|
||||||
|
|
||||||
|
// The older full read_resume snapshot is superseded; the recovery note survives.
|
||||||
|
expect(snapshotValue(pruned[2])).not.toHaveProperty("data");
|
||||||
|
expect(snapshotValue(pruned[4])).toMatchObject({ note: "Re-read the resume" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps non-snapshot fields of a superseded patch result (indexes may matter)", () => {
|
||||||
|
const messages = [user("hi"), ...patchExchange("call-1"), ...patchExchange("call-2")];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 1_000_000);
|
||||||
|
|
||||||
|
expect(snapshotValue(pruned[2])).toMatchObject({ actionId: "action-call-1" });
|
||||||
|
expect(snapshotValue(pruned[2])).not.toHaveProperty("resume");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("pruneAgentModelContext — tier 1 (reasoning)", () => {
|
||||||
|
it("strips reasoning from all but the last assistant message when over budget", () => {
|
||||||
|
const messages: ModelMessage[] = [
|
||||||
|
user("hi"),
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [
|
||||||
|
{ type: "reasoning", text: "r".repeat(400) },
|
||||||
|
{ type: "text", text: "First answer" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
user("more"),
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [
|
||||||
|
{ type: "reasoning", text: "keep me" },
|
||||||
|
{ type: "text", text: "Second answer" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 50);
|
||||||
|
|
||||||
|
const firstAssistant = pruned.find((message) => message.role === "assistant");
|
||||||
|
expect(JSON.stringify(firstAssistant)).not.toContain("rrrr");
|
||||||
|
expect(JSON.stringify(pruned.at(-1))).toContain("keep me");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("pruneAgentModelContext — tier 2 (tool pairs)", () => {
|
||||||
|
it("stubs old pairs together, protecting the surviving snapshot and the last assistant message", () => {
|
||||||
|
const messages = [
|
||||||
|
user("hi"),
|
||||||
|
...patchExchange("call-1"),
|
||||||
|
...patchExchange("call-2"),
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: [{ type: "text", text: "All done" }],
|
||||||
|
} as ModelMessage,
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 100);
|
||||||
|
|
||||||
|
// Oldest pair stubbed on both sides.
|
||||||
|
const firstCall = messageParts(pruned[1])[0];
|
||||||
|
expect(firstCall?.input).toEqual({});
|
||||||
|
expect(snapshotValue(pruned[2]).note).toBeDefined();
|
||||||
|
// Surviving snapshot pair untouched by tier 2 (still carries the resume).
|
||||||
|
expect(snapshotValue(pruned[4])).toHaveProperty("resume");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("never stubs a call that has no result (unresolved question stays intact)", () => {
|
||||||
|
const question = {
|
||||||
|
role: "assistant",
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "tool-call",
|
||||||
|
toolCallId: "call-q",
|
||||||
|
toolName: "ask_user_question",
|
||||||
|
input: { question: "?".repeat(400) },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
} as ModelMessage;
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext([user("hi"), question, user("answer pending")], 20);
|
||||||
|
|
||||||
|
const call = messageParts(pruned[1])[0];
|
||||||
|
expect(call?.input).toEqual({ question: "?".repeat(400) });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips messages carrying approval content", () => {
|
||||||
|
const approval = {
|
||||||
|
role: "assistant",
|
||||||
|
content: [
|
||||||
|
{ type: "tool-call", toolCallId: "call-a", toolName: "apply_resume_patch", input: { title: "x".repeat(400) } },
|
||||||
|
{ type: "tool-approval-request", approvalId: "approval-1", toolCallId: "call-a" },
|
||||||
|
],
|
||||||
|
} as ModelMessage;
|
||||||
|
const result = {
|
||||||
|
role: "tool",
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "tool-result",
|
||||||
|
toolCallId: "call-a",
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
output: { type: "json", value: { actionId: "action-a" } },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
} as ModelMessage;
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext([user("hi"), approval, result, user("next")], 20);
|
||||||
|
|
||||||
|
const call = messageParts(pruned[1])[0];
|
||||||
|
expect(call?.input).toEqual({ title: "x".repeat(400) });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("pruneAgentModelContext — tier 3 (turn dropping)", () => {
|
||||||
|
function textTurn(userText: string, assistantText: string): ModelMessage[] {
|
||||||
|
return [
|
||||||
|
{ role: "user", content: [{ type: "text", text: userText }] },
|
||||||
|
{ role: "assistant", content: [{ type: "text", text: assistantText }] },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
it("drops the oldest complete turns until the budget is met", () => {
|
||||||
|
const messages = [
|
||||||
|
...textTurn("old question ".repeat(50), "old answer ".repeat(50)),
|
||||||
|
...textTurn("middle question ".repeat(50), "middle answer ".repeat(50)),
|
||||||
|
...textTurn("latest question", "latest answer"),
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 60);
|
||||||
|
|
||||||
|
expect(JSON.stringify(pruned)).not.toContain("old question");
|
||||||
|
expect(JSON.stringify(pruned)).toContain("latest question");
|
||||||
|
expect(JSON.stringify(pruned)).toContain("latest answer");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("drops tool call/result pairs atomically with their turn", () => {
|
||||||
|
const messages = [
|
||||||
|
...textTurn("intro ".repeat(60), "ok"),
|
||||||
|
{ role: "user", content: [{ type: "text", text: "edit please ".repeat(60) }] } as ModelMessage,
|
||||||
|
...patchExchange("call-old"),
|
||||||
|
...textTurn("follow up ".repeat(30), "done"),
|
||||||
|
...textTurn("latest question", "latest answer"),
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 40);
|
||||||
|
|
||||||
|
// The dropped turn takes both the tool call and its result with it — no orphaned side.
|
||||||
|
const text = JSON.stringify(pruned);
|
||||||
|
expect(text).not.toContain("call-old");
|
||||||
|
expect(text).not.toContain('"tool-result"');
|
||||||
|
expect(text).toContain("latest question");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("never drops the final two turns even when still over budget", () => {
|
||||||
|
const messages = [
|
||||||
|
...textTurn("first question ".repeat(100), "first answer ".repeat(100)),
|
||||||
|
...textTurn("second question ".repeat(100), "second answer ".repeat(100)),
|
||||||
|
...textTurn("third question ".repeat(100), "third answer ".repeat(100)),
|
||||||
|
];
|
||||||
|
|
||||||
|
const pruned = pruneAgentModelContext(messages, 10);
|
||||||
|
|
||||||
|
// Only the oldest turn is droppable; the penultimate and final turns must both survive
|
||||||
|
// even though the result is still over budget.
|
||||||
|
expect(pruned).toHaveLength(4);
|
||||||
|
expect(JSON.stringify(pruned)).not.toContain("first question");
|
||||||
|
expect(JSON.stringify(pruned)).toContain("second question");
|
||||||
|
expect(JSON.stringify(pruned)).toContain("third question");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("estimateTokenCount", () => {
|
||||||
|
it("estimates natural text at roughly one token per word", () => {
|
||||||
|
expect(estimateTokenCount("old question ".repeat(50))).toBeGreaterThanOrEqual(90);
|
||||||
|
expect(estimateTokenCount("old question ".repeat(50))).toBeLessThan(120);
|
||||||
|
expect(estimateTokenCount({ a: 1 })).toBeGreaterThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("treats binary attachment data as opaque bytes instead of serializing it", () => {
|
||||||
|
const bytes = new Uint8Array(1024 * 1024);
|
||||||
|
const message = { role: "user", content: [{ type: "image", image: bytes, mediaType: "image/png" }] };
|
||||||
|
|
||||||
|
const started = performance.now();
|
||||||
|
const estimate = estimateTokenCount(message);
|
||||||
|
const elapsedMs = performance.now() - started;
|
||||||
|
|
||||||
|
// ~bytes/4 tokens, computed without expanding each byte into JSON.
|
||||||
|
expect(estimate).toBeGreaterThan(200_000);
|
||||||
|
expect(estimate).toBeLessThan(300_000);
|
||||||
|
expect(elapsedMs).toBeLessThan(200);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
import type { ModelMessage } from "ai";
|
||||||
|
import { pruneMessages } from "ai";
|
||||||
|
import { estimateTokenCount as estimateTextTokenCount } from "tokenx";
|
||||||
|
|
||||||
|
// Pure model-context pruning, wired into the agent loop via prepareStep so it runs before every
|
||||||
|
// step. Tier 0 always runs (a stale resume snapshot is actively harmful — shifted array indexes);
|
||||||
|
// the remaining tiers only fire once the estimated token count exceeds the budget.
|
||||||
|
|
||||||
|
const AGENT_CONTEXT_TOKEN_BUDGET = 40_000;
|
||||||
|
|
||||||
|
const SNAPSHOT_TOOL_NAMES = new Set(["read_resume", "apply_resume_patch"]);
|
||||||
|
const SUPERSEDED_SNAPSHOT_NOTE =
|
||||||
|
"Superseded resume snapshot removed. Base further edits on the resume state in the latest read_resume or apply_resume_patch result.";
|
||||||
|
const PRUNED_TOOL_RESULT_NOTE = "Older tool result pruned to fit the context budget.";
|
||||||
|
|
||||||
|
type LoosePart = Record<string, unknown> & { type: string };
|
||||||
|
|
||||||
|
// Binary attachment data (up to 25MB per file) must never be JSON.stringified — each byte would
|
||||||
|
// expand into a numeric-key object entry and repeated estimation would exhaust the heap.
|
||||||
|
function isBinary(value: unknown): value is ArrayBufferView | ArrayBuffer {
|
||||||
|
return ArrayBuffer.isView(value) || value instanceof ArrayBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Manual walk instead of JSON.stringify: a Buffer's toJSON() runs before any stringify replacer,
|
||||||
|
// so serialization-based estimation would expand binary into per-byte entries (hundreds of MB of
|
||||||
|
// JSON for one allowed 25MB attachment). String leaves go through tokenx; binary counts as
|
||||||
|
// opaque bytes; structural syntax gets a small flat cost.
|
||||||
|
function estimateTokens(value: unknown): number {
|
||||||
|
if (value === null || value === undefined) return 1;
|
||||||
|
if (typeof value === "string") return estimateTextTokenCount(value);
|
||||||
|
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") return 2;
|
||||||
|
if (isBinary(value)) return Math.ceil(value.byteLength / 4);
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
let sum = 1;
|
||||||
|
for (const item of value) sum += estimateTokens(item) + 1;
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
if (typeof value === "object") {
|
||||||
|
let sum = 1;
|
||||||
|
for (const [key, nested] of Object.entries(value)) sum += estimateTextTokenCount(key) + 1 + estimateTokens(nested);
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function estimateTokenCount(value: unknown): number {
|
||||||
|
return estimateTokens(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function contentParts(message: ModelMessage): LoosePart[] {
|
||||||
|
return Array.isArray(message.content) ? (message.content as unknown as LoosePart[]) : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function unwrapToolOutput(output: unknown): unknown {
|
||||||
|
if (output && typeof output === "object" && "type" in output && "value" in output) {
|
||||||
|
return (output as { value: unknown }).value;
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wrapToolOutput(original: unknown, value: unknown): unknown {
|
||||||
|
if (original && typeof original === "object" && "type" in original && "value" in original) {
|
||||||
|
return { ...(original as Record<string, unknown>), type: "json", value };
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isSnapshotResultPart(part: LoosePart): boolean {
|
||||||
|
if (part.type !== "tool-result" || typeof part.toolName !== "string" || !SNAPSHOT_TOOL_NAMES.has(part.toolName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const value = unwrapToolOutput(part.output);
|
||||||
|
if (!value || typeof value !== "object") return false;
|
||||||
|
|
||||||
|
return part.toolName === "read_resume" ? "data" in value : "resume" in value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function supersedeSnapshotPart(part: LoosePart): LoosePart {
|
||||||
|
const value = unwrapToolOutput(part.output);
|
||||||
|
const record = value && typeof value === "object" ? (value as Record<string, unknown>) : {};
|
||||||
|
const { data: _data, resume: _resume, ...rest } = record;
|
||||||
|
|
||||||
|
return { ...part, output: wrapToolOutput(part.output, { ...rest, note: SUPERSEDED_SNAPSHOT_NOTE }) };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tier 0: exactly one full resume snapshot survives — the last one, positioned where the model
|
||||||
|
// last acted. Runs regardless of budget.
|
||||||
|
function supersedeStaleSnapshots(messages: ModelMessage[]): ModelMessage[] {
|
||||||
|
const locations: Array<{ messageIndex: number; partIndex: number }> = [];
|
||||||
|
|
||||||
|
for (const [messageIndex, message] of messages.entries()) {
|
||||||
|
for (const [partIndex, part] of contentParts(message).entries()) {
|
||||||
|
if (isSnapshotResultPart(part)) locations.push({ messageIndex, partIndex });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locations.length <= 1) return messages;
|
||||||
|
|
||||||
|
const stale = locations.slice(0, -1);
|
||||||
|
const next = [...messages];
|
||||||
|
for (const { messageIndex, partIndex } of stale) {
|
||||||
|
const message = next[messageIndex] as ModelMessage & { content: LoosePart[] };
|
||||||
|
const parts = [...contentParts(message)];
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: location was collected from this array
|
||||||
|
parts[partIndex] = supersedeSnapshotPart(parts[partIndex]!);
|
||||||
|
next[messageIndex] = { ...message, content: parts } as ModelMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hasApprovalContent(message: ModelMessage): boolean {
|
||||||
|
return contentParts(message).some(
|
||||||
|
(part) => part.type === "tool-approval-request" || part.type === "tool-approval-response",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function lastIndexWhere<T>(items: T[], predicate: (item: T) => boolean): number {
|
||||||
|
for (let index = items.length - 1; index >= 0; index--) {
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: index is in range
|
||||||
|
if (predicate(items[index]!)) return index;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tier 2: collapse the oldest tool call/result pairs into stubs — always both sides of a pair
|
||||||
|
// (several BYOK gateways reject unpaired tool messages), never the protected regions.
|
||||||
|
function collapseOldestToolPairs(messages: ModelMessage[], budget: number): ModelMessage[] {
|
||||||
|
const lastAssistantIndex = lastIndexWhere(messages, (message) => message.role === "assistant");
|
||||||
|
const survivingSnapshotCallIds = new Set<string>();
|
||||||
|
|
||||||
|
// The surviving snapshot (last one, by Tier 0) must keep its full pair.
|
||||||
|
for (let index = messages.length - 1; index >= 0; index--) {
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: index is in range
|
||||||
|
const part = contentParts(messages[index]!).findLast(isSnapshotResultPart);
|
||||||
|
if (part && typeof part.toolCallId === "string") {
|
||||||
|
survivingSnapshotCallIds.add(part.toolCallId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const resolvedCallIds = new Set<string>();
|
||||||
|
for (const message of messages) {
|
||||||
|
for (const part of contentParts(message)) {
|
||||||
|
if (part.type === "tool-result" && typeof part.toolCallId === "string") resolvedCallIds.add(part.toolCallId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const next = [...messages];
|
||||||
|
const stubbedCallIds = new Set<string>();
|
||||||
|
let changed = false;
|
||||||
|
|
||||||
|
for (const [index, message] of next.entries()) {
|
||||||
|
if (estimateTokenCount(next) <= budget) break;
|
||||||
|
if (index === lastAssistantIndex || hasApprovalContent(message)) continue;
|
||||||
|
if (message.role !== "assistant" && message.role !== "tool") continue;
|
||||||
|
|
||||||
|
const parts = contentParts(message).map((part) => {
|
||||||
|
const toolCallId = typeof part.toolCallId === "string" ? part.toolCallId : null;
|
||||||
|
if (!toolCallId || survivingSnapshotCallIds.has(toolCallId)) return part;
|
||||||
|
|
||||||
|
if (part.type === "tool-call" && resolvedCallIds.has(toolCallId)) {
|
||||||
|
stubbedCallIds.add(toolCallId);
|
||||||
|
return { ...part, input: {} };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (part.type === "tool-result" && stubbedCallIds.has(toolCallId)) {
|
||||||
|
return { ...part, output: wrapToolOutput(part.output, { note: PRUNED_TOOL_RESULT_NOTE }) };
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (parts.some((part, partIndex) => part !== contentParts(message)[partIndex])) {
|
||||||
|
next[index] = { ...message, content: parts } as ModelMessage;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return changed ? next : messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tier 3 (last resort): drop the oldest complete turns. A turn is one user message plus every
|
||||||
|
// message up to the next user message, so tool call/result and approval request/response pairs
|
||||||
|
// are always dropped atomically. The final two turns (latest user turn and the trailing
|
||||||
|
// assistant turn, when present) are never dropped.
|
||||||
|
function dropOldestTurns(messages: ModelMessage[], budget: number): ModelMessage[] {
|
||||||
|
const turnStarts: number[] = [];
|
||||||
|
for (const [index, message] of messages.entries()) {
|
||||||
|
if (message.role === "user" || turnStarts.length === 0) turnStarts.push(index);
|
||||||
|
}
|
||||||
|
if (turnStarts.length <= 2) return messages;
|
||||||
|
|
||||||
|
const turns = turnStarts.map((start, turnIndex) => messages.slice(start, turnStarts[turnIndex + 1]));
|
||||||
|
let dropCount = 0;
|
||||||
|
while (dropCount < turns.length - 2 && estimateTokenCount(turns.slice(dropCount).flat()) > budget) {
|
||||||
|
dropCount += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dropCount === 0 ? messages : turns.slice(dropCount).flat();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function pruneAgentModelContext(
|
||||||
|
messages: ModelMessage[],
|
||||||
|
budget: number = AGENT_CONTEXT_TOKEN_BUDGET,
|
||||||
|
): ModelMessage[] {
|
||||||
|
let current = supersedeStaleSnapshots(messages);
|
||||||
|
if (estimateTokenCount(current) <= budget) return current;
|
||||||
|
|
||||||
|
// Tier 1: strip reasoning from all but the last assistant message.
|
||||||
|
const withoutReasoning = pruneMessages({ messages: current, reasoning: "before-last-message" });
|
||||||
|
if (estimateTokenCount(withoutReasoning) < estimateTokenCount(current)) current = withoutReasoning;
|
||||||
|
if (estimateTokenCount(current) <= budget) return current;
|
||||||
|
|
||||||
|
current = collapseOldestToolPairs(current, budget);
|
||||||
|
if (estimateTokenCount(current) <= budget) return current;
|
||||||
|
|
||||||
|
return dropOldestTurns(current, budget);
|
||||||
|
}
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { mergeClientToolResponses } from "./messages-merge";
|
||||||
|
|
||||||
|
type LoosePart = Record<string, unknown> & { type: string };
|
||||||
|
|
||||||
|
function assistantMessage(parts: LoosePart[]): UIMessage {
|
||||||
|
return { id: "ui-1", role: "assistant", parts: parts as UIMessage["parts"] };
|
||||||
|
}
|
||||||
|
|
||||||
|
const QUESTION_PENDING: LoosePart = {
|
||||||
|
type: "tool-ask_user_question",
|
||||||
|
toolCallId: "call-q",
|
||||||
|
state: "input-available",
|
||||||
|
input: { question: "Which tone?" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const APPROVAL_REQUESTED: LoosePart = {
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "call-p",
|
||||||
|
state: "approval-requested",
|
||||||
|
input: { title: "Edit", operations: [] },
|
||||||
|
approval: { id: "approval-1", signature: "server-signature" },
|
||||||
|
};
|
||||||
|
|
||||||
|
function approvalResponse(approved: boolean, reason?: string): LoosePart {
|
||||||
|
return {
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "call-p",
|
||||||
|
state: "approval-responded",
|
||||||
|
input: { title: "Edit", operations: [] },
|
||||||
|
approval: { id: "approval-1", approved, ...(reason ? { reason } : {}), signature: "client-signature" },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function questionAnswer(output = "Formal"): LoosePart {
|
||||||
|
return { type: "tool-ask_user_question", toolCallId: "call-q", state: "output-available", input: {}, output };
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("mergeClientToolResponses — questions (legacy behavior)", () => {
|
||||||
|
it("merges an answer into a pending question", () => {
|
||||||
|
const result = mergeClientToolResponses(assistantMessage([QUESTION_PENDING]), assistantMessage([questionAnswer()]));
|
||||||
|
|
||||||
|
expect(result.mergedCount).toBe(1);
|
||||||
|
expect(result.message.parts[0]).toMatchObject({ state: "output-available", output: "Formal" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("merges an error answer with its errorText", () => {
|
||||||
|
const result = mergeClientToolResponses(
|
||||||
|
assistantMessage([QUESTION_PENDING]),
|
||||||
|
assistantMessage([
|
||||||
|
{ type: "tool-ask_user_question", toolCallId: "call-q", state: "output-error", errorText: "boom" },
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result.message.parts[0]).toMatchObject({ state: "output-error", errorText: "boom" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("counts a re-submitted answer as already resolved", () => {
|
||||||
|
const answered = assistantMessage([{ ...QUESTION_PENDING, state: "output-available", output: "Formal" }]);
|
||||||
|
|
||||||
|
const result = mergeClientToolResponses(answered, assistantMessage([questionAnswer()]));
|
||||||
|
|
||||||
|
expect(result.mergedCount).toBe(0);
|
||||||
|
expect(result.alreadyResolvedCount).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns zero counts when nothing matches", () => {
|
||||||
|
const result = mergeClientToolResponses(assistantMessage([QUESTION_PENDING]), assistantMessage([]));
|
||||||
|
|
||||||
|
expect(result).toMatchObject({ mergedCount: 0, alreadyResolvedCount: 0, conflictingCount: 0 });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("mergeClientToolResponses — approvals", () => {
|
||||||
|
it("approves: flips the stored part but keeps the server-signed request payload", () => {
|
||||||
|
const result = mergeClientToolResponses(
|
||||||
|
assistantMessage([APPROVAL_REQUESTED]),
|
||||||
|
assistantMessage([approvalResponse(true)]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result.mergedCount).toBe(1);
|
||||||
|
expect(result.message.parts[0]).toMatchObject({
|
||||||
|
state: "approval-responded",
|
||||||
|
approval: { id: "approval-1", approved: true, signature: "server-signature" },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("denies with a reason", () => {
|
||||||
|
const result = mergeClientToolResponses(
|
||||||
|
assistantMessage([APPROVAL_REQUESTED]),
|
||||||
|
assistantMessage([approvalResponse(false, "Wrong section")]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result.message.parts[0]).toMatchObject({
|
||||||
|
state: "approval-responded",
|
||||||
|
approval: { approved: false, reason: "Wrong section", signature: "server-signature" },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("resubmitting the same decision on a responded-but-unexecuted approval is a pending continuation", () => {
|
||||||
|
const responded = assistantMessage([
|
||||||
|
{ ...APPROVAL_REQUESTED, state: "approval-responded", approval: { id: "approval-1", approved: true } },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const result = mergeClientToolResponses(responded, assistantMessage([approvalResponse(true)]));
|
||||||
|
|
||||||
|
expect(result).toMatchObject({
|
||||||
|
mergedCount: 0,
|
||||||
|
alreadyResolvedCount: 0,
|
||||||
|
pendingContinuationCount: 1,
|
||||||
|
conflictingCount: 0,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("resubmitting the decision after the approved call executed is already resolved", () => {
|
||||||
|
const executed = assistantMessage([
|
||||||
|
{
|
||||||
|
...APPROVAL_REQUESTED,
|
||||||
|
state: "output-available",
|
||||||
|
output: { actionId: "action-1" },
|
||||||
|
approval: { id: "approval-1", approved: true },
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const result = mergeClientToolResponses(executed, assistantMessage([approvalResponse(true)]));
|
||||||
|
|
||||||
|
expect(result).toMatchObject({ mergedCount: 0, alreadyResolvedCount: 1, pendingContinuationCount: 0 });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("double submit with a conflicting decision is flagged", () => {
|
||||||
|
const responded = assistantMessage([
|
||||||
|
{ ...APPROVAL_REQUESTED, state: "approval-responded", approval: { id: "approval-1", approved: true } },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const result = mergeClientToolResponses(responded, assistantMessage([approvalResponse(false)]));
|
||||||
|
|
||||||
|
expect(result).toMatchObject({ mergedCount: 0, alreadyResolvedCount: 0, conflictingCount: 1 });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("a response for a different approval id does not touch the stored part", () => {
|
||||||
|
const result = mergeClientToolResponses(
|
||||||
|
assistantMessage([APPROVAL_REQUESTED]),
|
||||||
|
assistantMessage([
|
||||||
|
{
|
||||||
|
...approvalResponse(true),
|
||||||
|
approval: { id: "approval-other", approved: true },
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result.mergedCount).toBe(0);
|
||||||
|
expect(result.message.parts[0]).toMatchObject({ state: "approval-requested" });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("mergeClientToolResponses — mixed", () => {
|
||||||
|
it("handles a question answer and an approval decision in one pass", () => {
|
||||||
|
const result = mergeClientToolResponses(
|
||||||
|
assistantMessage([QUESTION_PENDING, APPROVAL_REQUESTED]),
|
||||||
|
assistantMessage([questionAnswer(), approvalResponse(true)]),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result.mergedCount).toBe(2);
|
||||||
|
expect(result.message.parts[0]).toMatchObject({ state: "output-available" });
|
||||||
|
expect(result.message.parts[1]).toMatchObject({ state: "approval-responded" });
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
|
||||||
|
// Pure merge of client-authored tool responses into a stored assistant message. Handles both
|
||||||
|
// ask_user_question answers and tool-approval responses in one pass (a message can carry both).
|
||||||
|
// For approvals only the client's decision fields are copied — the stored, server-signed request
|
||||||
|
// payload (approval id + signature) is kept, so a client cannot substitute a forged request.
|
||||||
|
|
||||||
|
type AgentToolPart = UIMessage["parts"][number] & {
|
||||||
|
toolCallId?: string;
|
||||||
|
state?: string;
|
||||||
|
output?: unknown;
|
||||||
|
errorText?: string;
|
||||||
|
approval?: {
|
||||||
|
id: string;
|
||||||
|
approved?: boolean;
|
||||||
|
reason?: string;
|
||||||
|
isAutomatic?: boolean;
|
||||||
|
signature?: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
type ApprovalDecision = { approved: boolean; reason?: string };
|
||||||
|
|
||||||
|
export type MergeClientToolResponsesResult = {
|
||||||
|
message: UIMessage;
|
||||||
|
mergedCount: number;
|
||||||
|
/** Matches on terminal parts (question answered, approval executed or denied). */
|
||||||
|
alreadyResolvedCount: number;
|
||||||
|
/**
|
||||||
|
* Matches on approval parts that are responded but not yet executed — a continuation run was
|
||||||
|
* claimed (or persisted) earlier but never completed. Callers should proceed with a run so the
|
||||||
|
* recorded decision can still execute instead of stranding it.
|
||||||
|
*/
|
||||||
|
pendingContinuationCount: number;
|
||||||
|
conflictingCount: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
function isAnsweredQuestionPart(part: AgentToolPart): part is AgentToolPart & { toolCallId: string } {
|
||||||
|
return (
|
||||||
|
part.type === "tool-ask_user_question" &&
|
||||||
|
typeof part.toolCallId === "string" &&
|
||||||
|
(part.state === "output-available" || part.state === "output-error")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function approvalKey(toolCallId: string, approvalId: string) {
|
||||||
|
return `${toolCallId}:${approvalId}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function mergeClientToolResponses(
|
||||||
|
existingMessage: UIMessage,
|
||||||
|
incomingMessage: UIMessage,
|
||||||
|
): MergeClientToolResponsesResult {
|
||||||
|
const answeredQuestions = new Map<string, AgentToolPart>();
|
||||||
|
const approvalDecisions = new Map<string, ApprovalDecision>();
|
||||||
|
|
||||||
|
for (const part of incomingMessage.parts as AgentToolPart[]) {
|
||||||
|
if (isAnsweredQuestionPart(part)) {
|
||||||
|
answeredQuestions.set(part.toolCallId, part);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
part.state === "approval-responded" &&
|
||||||
|
typeof part.toolCallId === "string" &&
|
||||||
|
typeof part.approval?.id === "string" &&
|
||||||
|
typeof part.approval.approved === "boolean"
|
||||||
|
) {
|
||||||
|
approvalDecisions.set(approvalKey(part.toolCallId, part.approval.id), {
|
||||||
|
approved: part.approval.approved,
|
||||||
|
...(part.approval.reason ? { reason: part.approval.reason } : {}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mergedCount = 0;
|
||||||
|
let alreadyResolvedCount = 0;
|
||||||
|
let pendingContinuationCount = 0;
|
||||||
|
let conflictingCount = 0;
|
||||||
|
|
||||||
|
const parts = existingMessage.parts.map((part) => {
|
||||||
|
const existingPart = part as AgentToolPart;
|
||||||
|
|
||||||
|
if (existingPart.type === "tool-ask_user_question" && typeof existingPart.toolCallId === "string") {
|
||||||
|
const answer = answeredQuestions.get(existingPart.toolCallId);
|
||||||
|
if (answer) {
|
||||||
|
if (existingPart.state === "input-available") {
|
||||||
|
mergedCount += 1;
|
||||||
|
if (answer.state === "output-error") {
|
||||||
|
return {
|
||||||
|
...part,
|
||||||
|
state: "output-error",
|
||||||
|
errorText: answer.errorText ?? "User answer failed.",
|
||||||
|
} as UIMessage["parts"][number];
|
||||||
|
}
|
||||||
|
|
||||||
|
return { ...part, state: "output-available", output: answer.output } as UIMessage["parts"][number];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (existingPart.state === "output-available" || existingPart.state === "output-error") {
|
||||||
|
alreadyResolvedCount += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof existingPart.toolCallId === "string" && typeof existingPart.approval?.id === "string") {
|
||||||
|
const decision = approvalDecisions.get(approvalKey(existingPart.toolCallId, existingPart.approval.id));
|
||||||
|
if (decision) {
|
||||||
|
if (existingPart.state === "approval-requested") {
|
||||||
|
mergedCount += 1;
|
||||||
|
return {
|
||||||
|
...part,
|
||||||
|
state: "approval-responded",
|
||||||
|
// Keep the stored (signed) request payload; copy only the decision fields.
|
||||||
|
approval: {
|
||||||
|
...existingPart.approval,
|
||||||
|
approved: decision.approved,
|
||||||
|
...(decision.reason ? { reason: decision.reason } : {}),
|
||||||
|
},
|
||||||
|
} as UIMessage["parts"][number];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof existingPart.approval.approved === "boolean") {
|
||||||
|
if (existingPart.approval.approved !== decision.approved) conflictingCount += 1;
|
||||||
|
else if (existingPart.state === "approval-responded") pendingContinuationCount += 1;
|
||||||
|
else alreadyResolvedCount += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
message: { ...existingMessage, parts },
|
||||||
|
mergedCount,
|
||||||
|
alreadyResolvedCount,
|
||||||
|
pendingContinuationCount,
|
||||||
|
conflictingCount,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,227 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { applyStepToUiMessage, upsertAssistantUiMessage, withAccumulatedUsageMetadata } from "./messages-persistence";
|
||||||
|
|
||||||
|
function emptyMessage(): UIMessage {
|
||||||
|
return { id: "ui-1", role: "assistant", parts: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("applyStepToUiMessage", () => {
|
||||||
|
it("folds text, reasoning, and paired tool call/result content into UI parts", () => {
|
||||||
|
const folded = applyStepToUiMessage(emptyMessage(), {
|
||||||
|
content: [
|
||||||
|
{ type: "reasoning", text: "thinking" },
|
||||||
|
{ type: "tool-call", toolCallId: "call-1", toolName: "apply_resume_patch", input: { title: "Edit" } },
|
||||||
|
{
|
||||||
|
type: "tool-result",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
output: { actionId: "action-1" },
|
||||||
|
},
|
||||||
|
{ type: "text", text: "Done." },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(folded.parts).toEqual([
|
||||||
|
{ type: "step-start" },
|
||||||
|
{ type: "reasoning", text: "thinking" },
|
||||||
|
{
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
state: "output-available",
|
||||||
|
input: { title: "Edit" },
|
||||||
|
output: { actionId: "action-1" },
|
||||||
|
},
|
||||||
|
{ type: "text", text: "Done." },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("appends to existing parts instead of replacing them", () => {
|
||||||
|
const first = applyStepToUiMessage(emptyMessage(), { content: [{ type: "text", text: "one" }] });
|
||||||
|
const second = applyStepToUiMessage(first, { content: [{ type: "text", text: "two" }] });
|
||||||
|
|
||||||
|
expect(second.parts.map((part) => part.type)).toEqual(["step-start", "text", "step-start", "text"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("marks tool errors as output-error with the error message", () => {
|
||||||
|
const folded = applyStepToUiMessage(emptyMessage(), {
|
||||||
|
content: [
|
||||||
|
{ type: "tool-call", toolCallId: "call-1", toolName: "apply_resume_patch", input: {} },
|
||||||
|
{
|
||||||
|
type: "tool-error",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
input: {},
|
||||||
|
error: new Error("The resume changed"),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(folded.parts.at(-1)).toMatchObject({ state: "output-error", errorText: "The resume changed" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps an unpaired tool result by synthesizing a complete tool part", () => {
|
||||||
|
const folded = applyStepToUiMessage(emptyMessage(), {
|
||||||
|
content: [{ type: "tool-result", toolCallId: "call-9", toolName: "read_resume", input: {}, output: { id: "r" } }],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(folded.parts.at(-1)).toMatchObject({
|
||||||
|
type: "tool-read_resume",
|
||||||
|
toolCallId: "call-9",
|
||||||
|
state: "output-available",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("folds dynamic tool calls into dynamic-tool parts", () => {
|
||||||
|
const folded = applyStepToUiMessage(emptyMessage(), {
|
||||||
|
content: [
|
||||||
|
{ type: "tool-call", toolCallId: "call-2", toolName: "web_search", input: { q: "x" }, dynamic: true },
|
||||||
|
{ type: "tool-result", toolCallId: "call-2", toolName: "web_search", output: [], dynamic: true },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(folded.parts.at(-1)).toMatchObject({
|
||||||
|
type: "dynamic-tool",
|
||||||
|
toolName: "web_search",
|
||||||
|
state: "output-available",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips sources, files, and approval content", () => {
|
||||||
|
const folded = applyStepToUiMessage(emptyMessage(), {
|
||||||
|
content: [
|
||||||
|
{ type: "source", sourceType: "url", url: "https://example.com" },
|
||||||
|
{ type: "file", file: {} },
|
||||||
|
{ type: "tool-approval-request", approvalId: "a-1" },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(folded.parts).toEqual([{ type: "step-start" }]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("withAccumulatedUsageMetadata", () => {
|
||||||
|
function messageWithUsage(usage: Record<string, unknown>): UIMessage {
|
||||||
|
return { id: "ui-1", role: "assistant", parts: [], metadata: { model: "gpt-5", usage } } as UIMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
it("sums token counts across a continuation, including nested details", () => {
|
||||||
|
const previous = messageWithUsage({
|
||||||
|
inputTokens: 100,
|
||||||
|
outputTokens: 50,
|
||||||
|
totalTokens: 150,
|
||||||
|
inputTokenDetails: { cacheReadTokens: 40 },
|
||||||
|
outputTokenDetails: { reasoningTokens: 10 },
|
||||||
|
});
|
||||||
|
const next = messageWithUsage({
|
||||||
|
inputTokens: 200,
|
||||||
|
outputTokens: 30,
|
||||||
|
totalTokens: 230,
|
||||||
|
inputTokenDetails: { cacheReadTokens: 60, cacheWriteTokens: 5 },
|
||||||
|
});
|
||||||
|
|
||||||
|
const merged = withAccumulatedUsageMetadata(previous, next) as UIMessage & {
|
||||||
|
metadata: { usage: Record<string, unknown> };
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(merged.metadata.usage).toMatchObject({
|
||||||
|
inputTokens: 300,
|
||||||
|
outputTokens: 80,
|
||||||
|
totalTokens: 380,
|
||||||
|
inputTokenDetails: { cacheReadTokens: 100, cacheWriteTokens: 5 },
|
||||||
|
outputTokenDetails: { reasoningTokens: 10 },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns the next message unchanged when either side has no usage", () => {
|
||||||
|
const next = messageWithUsage({ totalTokens: 42 });
|
||||||
|
const noUsage: UIMessage = { id: "ui-1", role: "assistant", parts: [] };
|
||||||
|
|
||||||
|
expect(withAccumulatedUsageMetadata(noUsage, next)).toBe(next);
|
||||||
|
expect(withAccumulatedUsageMetadata(next, noUsage)).toBe(noUsage);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
type ScriptedDb = {
|
||||||
|
updates: unknown[];
|
||||||
|
inserts: unknown[];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Minimal scripted stand-in for the drizzle client: each update() consumes the next scripted
|
||||||
|
// returning() result; insert() always succeeds. No vi.mock — the database is an injected value.
|
||||||
|
function scriptedDatabase(updateResults: Array<Array<{ id: string }>>): ScriptedDb & Record<string, unknown> {
|
||||||
|
const state: ScriptedDb = { updates: [], inserts: [] };
|
||||||
|
let updateCall = 0;
|
||||||
|
|
||||||
|
return {
|
||||||
|
updates: state.updates,
|
||||||
|
inserts: state.inserts,
|
||||||
|
select: () => ({
|
||||||
|
from: () => ({
|
||||||
|
where: async () => [{ maxSequence: 3 }],
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
update: () => ({
|
||||||
|
set: (value: unknown) => {
|
||||||
|
state.updates.push(value);
|
||||||
|
return {
|
||||||
|
where: () => {
|
||||||
|
const result = updateResults[updateCall] ?? [];
|
||||||
|
updateCall += 1;
|
||||||
|
return Object.assign(Promise.resolve(undefined), {
|
||||||
|
returning: async () => result,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
insert: () => ({
|
||||||
|
values: (value: unknown) => {
|
||||||
|
state.inserts.push(value);
|
||||||
|
return { returning: async () => [{ id: "inserted-row" }] };
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
delete: () => ({ where: async () => undefined }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("upsertAssistantUiMessage", () => {
|
||||||
|
const message: UIMessage = { id: "ui-1", role: "assistant", parts: [{ type: "text", text: "hi" }] };
|
||||||
|
|
||||||
|
it("updates by row id when the row exists", async () => {
|
||||||
|
const database = scriptedDatabase([[{ id: "row-1" }], []]);
|
||||||
|
|
||||||
|
const result = await upsertAssistantUiMessage(
|
||||||
|
{ userId: "user-1", threadId: "thread-1", rowId: "row-1", message, status: "streaming" },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqual({ rowId: "row-1" });
|
||||||
|
expect(database.inserts).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("falls back to matching the stored uiMessage id, then updates in place", async () => {
|
||||||
|
const database = scriptedDatabase([[{ id: "row-2" }]]);
|
||||||
|
|
||||||
|
const result = await upsertAssistantUiMessage(
|
||||||
|
{ userId: "user-1", threadId: "thread-1", message, status: "completed" },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqual({ rowId: "row-2" });
|
||||||
|
expect(database.inserts).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("inserts a new row only when no existing row matches", async () => {
|
||||||
|
const database = scriptedDatabase([[], []]);
|
||||||
|
|
||||||
|
const result = await upsertAssistantUiMessage(
|
||||||
|
{ userId: "user-1", threadId: "thread-1", rowId: "row-gone", message, status: "completed" },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqual({ rowId: "inserted-row" });
|
||||||
|
expect(database.inserts).toHaveLength(1);
|
||||||
|
expect(database.inserts[0]).toMatchObject({ role: "assistant", status: "completed", sequence: 4 });
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,265 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { and, eq, max, sql } from "drizzle-orm";
|
||||||
|
import { db } from "@reactive-resume/db/client";
|
||||||
|
import * as schema from "@reactive-resume/db/schema";
|
||||||
|
|
||||||
|
// Crash-safe incremental persistence for the assistant message of an agent run.
|
||||||
|
// A draft row is inserted before the stream starts, folded step-by-step in onStepEnd,
|
||||||
|
// and finalized (upserted) with the SDK's authoritative response message in onFinish.
|
||||||
|
// All functions take an injectable database so tests can stub queries without
|
||||||
|
// touching the send path's positional db mock.
|
||||||
|
|
||||||
|
type AgentMessagesDb = Pick<typeof db, "select" | "insert" | "update" | "delete">;
|
||||||
|
|
||||||
|
type UiMessagePart = UIMessage["parts"][number];
|
||||||
|
|
||||||
|
type StepContentPart = Record<string, unknown> & { type: string };
|
||||||
|
|
||||||
|
type AgentStepLike = { content: ReadonlyArray<unknown> };
|
||||||
|
|
||||||
|
function toolPartFromCall(part: StepContentPart): UiMessagePart {
|
||||||
|
if (part.dynamic) {
|
||||||
|
return {
|
||||||
|
type: "dynamic-tool",
|
||||||
|
toolName: String(part.toolName),
|
||||||
|
toolCallId: String(part.toolCallId),
|
||||||
|
state: "input-available",
|
||||||
|
input: part.input,
|
||||||
|
} as UiMessagePart;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
type: `tool-${String(part.toolName)}`,
|
||||||
|
toolCallId: String(part.toolCallId),
|
||||||
|
state: "input-available",
|
||||||
|
input: part.input,
|
||||||
|
} as UiMessagePart;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pure fold: append one step's content (text, reasoning, tool call/result/error) to a UI message.
|
||||||
|
// Sources, files, and approval parts are skipped — the authoritative onFinish message carries them.
|
||||||
|
export function applyStepToUiMessage(message: UIMessage, step: AgentStepLike): UIMessage {
|
||||||
|
const parts: UiMessagePart[] = [...message.parts, { type: "step-start" } as UiMessagePart];
|
||||||
|
const toolPartIndexByCallId = new Map<string, number>();
|
||||||
|
|
||||||
|
for (const rawContent of step.content) {
|
||||||
|
if (!rawContent || typeof rawContent !== "object" || typeof (rawContent as { type?: unknown }).type !== "string") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const content = rawContent as StepContentPart;
|
||||||
|
if (content.type === "text" && typeof content.text === "string" && content.text) {
|
||||||
|
parts.push({ type: "text", text: content.text } as UiMessagePart);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content.type === "reasoning" && typeof content.text === "string" && content.text) {
|
||||||
|
parts.push({ type: "reasoning", text: content.text } as UiMessagePart);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content.type === "tool-call" && typeof content.toolCallId === "string") {
|
||||||
|
toolPartIndexByCallId.set(content.toolCallId, parts.length);
|
||||||
|
parts.push(toolPartFromCall(content));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((content.type === "tool-result" || content.type === "tool-error") && typeof content.toolCallId === "string") {
|
||||||
|
const resolution =
|
||||||
|
content.type === "tool-result"
|
||||||
|
? { state: "output-available", output: content.output }
|
||||||
|
: {
|
||||||
|
state: "output-error",
|
||||||
|
errorText: content.error instanceof Error ? content.error.message : String(content.error),
|
||||||
|
};
|
||||||
|
|
||||||
|
const index = toolPartIndexByCallId.get(content.toolCallId);
|
||||||
|
if (index === undefined) {
|
||||||
|
parts.push({ ...toolPartFromCall(content), ...resolution } as UiMessagePart);
|
||||||
|
} else {
|
||||||
|
parts[index] = { ...(parts[index] as Record<string, unknown>), ...resolution } as UiMessagePart;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { ...message, parts };
|
||||||
|
}
|
||||||
|
|
||||||
|
type UsageDetails = Record<string, number | undefined>;
|
||||||
|
type UsageLike = {
|
||||||
|
inputTokens?: number | undefined;
|
||||||
|
outputTokens?: number | undefined;
|
||||||
|
totalTokens?: number | undefined;
|
||||||
|
inputTokenDetails?: UsageDetails | undefined;
|
||||||
|
outputTokenDetails?: UsageDetails | undefined;
|
||||||
|
};
|
||||||
|
type MessageWithUsage = { metadata?: Record<string, unknown> & { usage?: UsageLike } };
|
||||||
|
|
||||||
|
function addCounts(a: number | undefined, b: number | undefined): number | undefined {
|
||||||
|
if (typeof a !== "number" && typeof b !== "number") return undefined;
|
||||||
|
return (a ?? 0) + (b ?? 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addDetails(a: UsageDetails | undefined, b: UsageDetails | undefined): UsageDetails | undefined {
|
||||||
|
if (!a && !b) return undefined;
|
||||||
|
const keys = new Set([...Object.keys(a ?? {}), ...Object.keys(b ?? {})]);
|
||||||
|
const sum: UsageDetails = {};
|
||||||
|
for (const key of keys) {
|
||||||
|
const value = addCounts(a?.[key], b?.[key]);
|
||||||
|
if (value !== undefined) sum[key] = value;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A question/approval continuation streams into the SAME assistant message; the SDK deep-merges
|
||||||
|
// metadata but replaces primitive token counts, so the continuation's usage would silently
|
||||||
|
// overwrite the pre-halt run's. Sum the previous usage into the final message before persisting.
|
||||||
|
export function withAccumulatedUsageMetadata(previous: UIMessage, next: UIMessage): UIMessage {
|
||||||
|
const previousUsage = (previous as MessageWithUsage).metadata?.usage;
|
||||||
|
const nextMetadata = (next as MessageWithUsage).metadata;
|
||||||
|
if (!previousUsage || !nextMetadata?.usage) return next;
|
||||||
|
|
||||||
|
const usage: UsageLike = {
|
||||||
|
inputTokens: addCounts(previousUsage.inputTokens, nextMetadata.usage.inputTokens),
|
||||||
|
outputTokens: addCounts(previousUsage.outputTokens, nextMetadata.usage.outputTokens),
|
||||||
|
totalTokens: addCounts(previousUsage.totalTokens, nextMetadata.usage.totalTokens),
|
||||||
|
inputTokenDetails: addDetails(previousUsage.inputTokenDetails, nextMetadata.usage.inputTokenDetails),
|
||||||
|
outputTokenDetails: addDetails(previousUsage.outputTokenDetails, nextMetadata.usage.outputTokenDetails),
|
||||||
|
};
|
||||||
|
|
||||||
|
return { ...next, metadata: { ...nextMetadata, usage } } as UIMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function nextMessageSequence(threadId: string, database: AgentMessagesDb) {
|
||||||
|
const [row] = await database
|
||||||
|
.select({ maxSequence: max(schema.agentMessage.sequence) })
|
||||||
|
.from(schema.agentMessage)
|
||||||
|
.where(eq(schema.agentMessage.threadId, threadId));
|
||||||
|
|
||||||
|
return (row?.maxSequence ?? -1) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function touchThread(input: { threadId: string; userId: string }, database: AgentMessagesDb) {
|
||||||
|
await database
|
||||||
|
.update(schema.agentThread)
|
||||||
|
.set({ lastMessageAt: new Date() })
|
||||||
|
.where(and(eq(schema.agentThread.id, input.threadId), eq(schema.agentThread.userId, input.userId)));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function insertDraftAssistantMessage(
|
||||||
|
input: { userId: string; threadId: string; uiMessageId: string },
|
||||||
|
database: AgentMessagesDb = db,
|
||||||
|
) {
|
||||||
|
const sequence = await nextMessageSequence(input.threadId, database);
|
||||||
|
const [row] = await database
|
||||||
|
.insert(schema.agentMessage)
|
||||||
|
.values({
|
||||||
|
userId: input.userId,
|
||||||
|
threadId: input.threadId,
|
||||||
|
role: "assistant",
|
||||||
|
status: "streaming",
|
||||||
|
sequence,
|
||||||
|
uiMessage: { id: input.uiMessageId, role: "assistant", parts: [] },
|
||||||
|
})
|
||||||
|
.returning({ id: schema.agentMessage.id });
|
||||||
|
|
||||||
|
if (!row) throw new Error("AGENT_DRAFT_MESSAGE_CREATE_FAILED");
|
||||||
|
|
||||||
|
await touchThread(input, database);
|
||||||
|
|
||||||
|
return { rowId: row.id, sequence };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upsert by row id first, then by the uiMessage's embedded id (a question/approval continuation
|
||||||
|
// streams into the SAME uiMessage id as the stored assistant row), then insert as a last resort.
|
||||||
|
export async function upsertAssistantUiMessage(
|
||||||
|
input: {
|
||||||
|
userId: string;
|
||||||
|
threadId: string;
|
||||||
|
rowId?: string;
|
||||||
|
message: UIMessage;
|
||||||
|
status: "streaming" | "completed" | "canceled";
|
||||||
|
},
|
||||||
|
database: AgentMessagesDb = db,
|
||||||
|
) {
|
||||||
|
const set = {
|
||||||
|
status: input.status,
|
||||||
|
uiMessage: input.message as unknown as Record<string, unknown>,
|
||||||
|
};
|
||||||
|
const isFinal = input.status !== "streaming";
|
||||||
|
|
||||||
|
if (input.rowId) {
|
||||||
|
const updated = await database
|
||||||
|
.update(schema.agentMessage)
|
||||||
|
.set(set)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentMessage.id, input.rowId),
|
||||||
|
eq(schema.agentMessage.threadId, input.threadId),
|
||||||
|
eq(schema.agentMessage.userId, input.userId),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.returning({ id: schema.agentMessage.id });
|
||||||
|
|
||||||
|
if (updated.length === 1) {
|
||||||
|
if (isFinal) await touchThread(input, database);
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: length checked above
|
||||||
|
return { rowId: updated[0]!.id };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatedById = await database
|
||||||
|
.update(schema.agentMessage)
|
||||||
|
.set(set)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentMessage.threadId, input.threadId),
|
||||||
|
eq(schema.agentMessage.userId, input.userId),
|
||||||
|
eq(schema.agentMessage.role, "assistant"),
|
||||||
|
sql`${schema.agentMessage.uiMessage}->>'id' = ${input.message.id}`,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.returning({ id: schema.agentMessage.id });
|
||||||
|
|
||||||
|
if (updatedById.length >= 1) {
|
||||||
|
if (isFinal) await touchThread(input, database);
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: length checked above
|
||||||
|
return { rowId: updatedById[0]!.id };
|
||||||
|
}
|
||||||
|
|
||||||
|
const sequence = await nextMessageSequence(input.threadId, database);
|
||||||
|
const [inserted] = await database
|
||||||
|
.insert(schema.agentMessage)
|
||||||
|
.values({
|
||||||
|
userId: input.userId,
|
||||||
|
threadId: input.threadId,
|
||||||
|
role: input.message.role,
|
||||||
|
status: input.status,
|
||||||
|
sequence,
|
||||||
|
uiMessage: input.message as unknown as Record<string, unknown>,
|
||||||
|
})
|
||||||
|
.returning({ id: schema.agentMessage.id });
|
||||||
|
|
||||||
|
if (!inserted) throw new Error("AGENT_MESSAGE_CREATE_FAILED");
|
||||||
|
|
||||||
|
await touchThread(input, database);
|
||||||
|
|
||||||
|
return { rowId: inserted.id };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes a draft that never received content (sync failure before the stream produced anything).
|
||||||
|
export async function deleteDraftIfEmpty(
|
||||||
|
input: { rowId: string; threadId: string; userId: string },
|
||||||
|
database: AgentMessagesDb = db,
|
||||||
|
) {
|
||||||
|
await database
|
||||||
|
.delete(schema.agentMessage)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentMessage.id, input.rowId),
|
||||||
|
eq(schema.agentMessage.threadId, input.threadId),
|
||||||
|
eq(schema.agentMessage.userId, input.userId),
|
||||||
|
eq(schema.agentMessage.status, "streaming"),
|
||||||
|
sql`jsonb_array_length(${schema.agentMessage.uiMessage}->'parts') = 0`,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -43,6 +43,8 @@ export const messagesRouter = {
|
|||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
threadId: z.string(),
|
threadId: z.string(),
|
||||||
|
// Deprecated and ignored: partial content now persists server-side via the run's
|
||||||
|
// abort path. Kept in the schema for one release so mid-deploy clients still parse.
|
||||||
partialMessage: z.custom<UIMessage>(isUiMessage, { message: "Invalid UI message." }).optional(),
|
partialMessage: z.custom<UIMessage>(isUiMessage, { message: "Invalid UI message." }).optional(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
@@ -52,7 +54,6 @@ export const messagesRouter = {
|
|||||||
agentService.messages.stop({
|
agentService.messages.stop({
|
||||||
userId: context.user.id,
|
userId: context.user.id,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
...(input.partialMessage ? { partialMessage: input.partialMessage } : {}),
|
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { repairAgentPatchToolCallInput, repairAgentToolCall } from "./repair";
|
||||||
|
|
||||||
|
const VALID_INPUT = JSON.stringify({
|
||||||
|
title: "Edit",
|
||||||
|
operations: [{ op: "replace", path: "/basics/name", value: "Bob" }],
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("repairAgentPatchToolCallInput", () => {
|
||||||
|
it("repairs sloppy JSON (single quotes, trailing commas)", () => {
|
||||||
|
const sloppy = `{'title': 'Edit', 'operations': [{'op': 'replace', 'path': '/basics/name', 'value': 'Bob'},]}`;
|
||||||
|
|
||||||
|
const repaired = repairAgentPatchToolCallInput(sloppy);
|
||||||
|
|
||||||
|
expect(repaired).not.toBeNull();
|
||||||
|
expect(JSON.parse(repaired ?? "")).toMatchObject({ title: "Edit" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("strips /data prefixes from path and from", () => {
|
||||||
|
const input = JSON.stringify({
|
||||||
|
title: "Move",
|
||||||
|
operations: [{ op: "move", path: "/data/basics/name", from: "/data/basics/headline" }],
|
||||||
|
});
|
||||||
|
|
||||||
|
const repaired = JSON.parse(repairAgentPatchToolCallInput(input) ?? "");
|
||||||
|
|
||||||
|
expect(repaired.operations[0]).toEqual({ op: "move", path: "/basics/name", from: "/basics/headline" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns null when the input cannot be made schema-valid", () => {
|
||||||
|
expect(repairAgentPatchToolCallInput(`{"title": "Edit", "operations": []}`)).toBeNull();
|
||||||
|
expect(repairAgentPatchToolCallInput("not even close {{{")).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("repairAgentToolCall", () => {
|
||||||
|
const baseCall = {
|
||||||
|
type: "tool-call" as const,
|
||||||
|
toolCallId: "call-1",
|
||||||
|
toolName: "apply_resume_patch",
|
||||||
|
};
|
||||||
|
|
||||||
|
it("returns a repaired call for fixable apply_resume_patch input", async () => {
|
||||||
|
const result = await repairAgentToolCall({
|
||||||
|
toolCall: {
|
||||||
|
...baseCall,
|
||||||
|
input: `{'title': 'Edit', 'operations': [{'op': 'remove', 'path': '/data/basics/url'}]}`,
|
||||||
|
},
|
||||||
|
} as never);
|
||||||
|
|
||||||
|
expect(result).not.toBeNull();
|
||||||
|
expect(JSON.parse(result?.input ?? "")).toMatchObject({
|
||||||
|
operations: [{ op: "remove", path: "/basics/url" }],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns null for other tools and for already-valid input", async () => {
|
||||||
|
expect(
|
||||||
|
await repairAgentToolCall({ toolCall: { ...baseCall, toolName: "read_resume", input: "{}" } } as never),
|
||||||
|
).toBeNull();
|
||||||
|
expect(await repairAgentToolCall({ toolCall: { ...baseCall, input: VALID_INPUT } } as never)).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
import type { ToolCallRepairFunction, ToolSet } from "ai";
|
||||||
|
import { jsonrepair } from "jsonrepair";
|
||||||
|
import { applyResumePatchInputSchema } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
|
|
||||||
|
// Repairs sloppy apply_resume_patch calls from weaker BYOK models: fix broken JSON with
|
||||||
|
// jsonrepair, strip the common `/data` path prefix, then re-validate against the shared schema.
|
||||||
|
// Returning null falls back to the SDK's re-ask. Section-shortcut normalization stays in
|
||||||
|
// normalizeAgentResumePatchOperations (it needs the resume's section ids at execute time).
|
||||||
|
|
||||||
|
function stripDataPrefix(path: unknown): unknown {
|
||||||
|
if (typeof path !== "string") return path;
|
||||||
|
if (path === "/data") return "";
|
||||||
|
return path.startsWith("/data/") ? path.slice("/data".length) : path;
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeRepairedInput(parsed: unknown): unknown {
|
||||||
|
if (!parsed || typeof parsed !== "object" || !Array.isArray((parsed as { operations?: unknown }).operations)) {
|
||||||
|
return parsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
const record = parsed as Record<string, unknown> & { operations: unknown[] };
|
||||||
|
return {
|
||||||
|
...record,
|
||||||
|
operations: record.operations.map((operation) => {
|
||||||
|
if (!operation || typeof operation !== "object") return operation;
|
||||||
|
const op = operation as Record<string, unknown>;
|
||||||
|
return {
|
||||||
|
...op,
|
||||||
|
path: stripDataPrefix(op.path),
|
||||||
|
...("from" in op ? { from: stripDataPrefix(op.from) } : {}),
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pure core, exported for tests: returns the repaired stringified input or null.
|
||||||
|
export function repairAgentPatchToolCallInput(rawInput: string): string | null {
|
||||||
|
let parsed: unknown;
|
||||||
|
try {
|
||||||
|
parsed = JSON.parse(jsonrepair(rawInput));
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const validated = applyResumePatchInputSchema.safeParse(normalizeRepairedInput(parsed));
|
||||||
|
return validated.success ? JSON.stringify(validated.data) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const repairAgentToolCall: ToolCallRepairFunction<ToolSet> = ({ toolCall }) => {
|
||||||
|
if (toolCall.toolName !== "apply_resume_patch") return Promise.resolve(null);
|
||||||
|
|
||||||
|
const repairedInput = repairAgentPatchToolCallInput(toolCall.input);
|
||||||
|
if (repairedInput === null || repairedInput === toolCall.input) return Promise.resolve(null);
|
||||||
|
|
||||||
|
return Promise.resolve({ ...toolCall, input: repairedInput });
|
||||||
|
};
|
||||||
@@ -35,4 +35,18 @@ describe("normalizeAgentResumePatchOperations", () => {
|
|||||||
{ op: "copy", from: "/sections/education/items/0", path: "/customSections/0/items/-" },
|
{ op: "copy", from: "/sections/education/items/0", path: "/customSections/0/items/-" },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("strips the /data prefix from path and from at execution time", () => {
|
||||||
|
const result = normalizeAgentResumePatchOperations({ sections: { experience: {} } }, [
|
||||||
|
{ op: "replace", path: "/data/basics/name", value: "Bob" },
|
||||||
|
{ op: "move", path: "/data/basics/headline", from: "/data/basics/label" },
|
||||||
|
{ op: "replace", path: "/data/experience/items/0/description", value: "Combined with section shortcut" },
|
||||||
|
]);
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{ op: "replace", path: "/basics/name", value: "Bob" },
|
||||||
|
{ op: "move", path: "/basics/headline", from: "/basics/label" },
|
||||||
|
{ op: "replace", path: "/sections/experience/items/0/description", value: "Combined with section shortcut" },
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,6 +29,15 @@ function decodeJsonPointerSegment(segment: string) {
|
|||||||
return segment.replace(/~1/g, "/").replace(/~0/g, "~");
|
return segment.replace(/~1/g, "/").replace(/~0/g, "~");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Models frequently prefix paths with /data because read_resume nests the document under `data`.
|
||||||
|
// Patch paths are rooted at the document itself, and the root has no `data` key, so stripping is
|
||||||
|
// always safe. This runs at execution time — the schema accepts such paths, so the SDK's
|
||||||
|
// repairToolCall hook (parse/validation failures only) never sees them.
|
||||||
|
function stripDataPrefix(path: string) {
|
||||||
|
if (path === "/data") return "";
|
||||||
|
return path.startsWith("/data/") ? path.slice("/data".length) : path;
|
||||||
|
}
|
||||||
|
|
||||||
function normalizeSectionShortcutPath(data: { sections: Record<string, unknown> }, path: string) {
|
function normalizeSectionShortcutPath(data: { sections: Record<string, unknown> }, path: string) {
|
||||||
if (!path.startsWith("/") || path.startsWith("/sections/")) return path;
|
if (!path.startsWith("/") || path.startsWith("/sections/")) return path;
|
||||||
|
|
||||||
@@ -43,12 +52,12 @@ export function normalizeAgentResumePatchOperations(
|
|||||||
operations: JsonPatchOperation[],
|
operations: JsonPatchOperation[],
|
||||||
): JsonPatchOperation[] {
|
): JsonPatchOperation[] {
|
||||||
return operations.map((operation) => {
|
return operations.map((operation) => {
|
||||||
const path = normalizeSectionShortcutPath(data, operation.path);
|
const path = normalizeSectionShortcutPath(data, stripDataPrefix(operation.path));
|
||||||
const normalized = path === operation.path ? operation : { ...operation, path };
|
const normalized = path === operation.path ? operation : { ...operation, path };
|
||||||
|
|
||||||
if (!("from" in normalized)) return normalized;
|
if (!("from" in normalized)) return normalized;
|
||||||
|
|
||||||
const from = normalizeSectionShortcutPath(data, normalized.from);
|
const from = normalizeSectionShortcutPath(data, stripDataPrefix(normalized.from));
|
||||||
return from === normalized.from ? normalized : { ...normalized, from };
|
return from === normalized.from ? normalized : { ...normalized, from };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,168 @@
|
|||||||
|
import type { UIMessage } from "ai";
|
||||||
|
import { describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
|
vi.mock("@reactive-resume/db/client", () => ({ db: {} }));
|
||||||
|
|
||||||
|
const { appendMissingActionParts, isStaleAgentRun, reapStaleAgentRun, STALE_AGENT_RUN_TTL_MS } = await import("./runs");
|
||||||
|
|
||||||
|
const NOW = new Date("2026-08-20T12:00:00.000Z");
|
||||||
|
|
||||||
|
function minutesBefore(minutes: number) {
|
||||||
|
return new Date(NOW.getTime() - minutes * 60_000);
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("isStaleAgentRun", () => {
|
||||||
|
it("is false without an active run", () => {
|
||||||
|
expect(isStaleAgentRun({ activeRunId: null, activeRunStartedAt: null }, NOW)).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("is false while the run is younger than the TTL", () => {
|
||||||
|
expect(isStaleAgentRun({ activeRunId: "run-1", activeRunStartedAt: minutesBefore(14) }, NOW)).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("is true once the run outlives the TTL", () => {
|
||||||
|
expect(isStaleAgentRun({ activeRunId: "run-1", activeRunStartedAt: minutesBefore(16) }, NOW)).toBe(true);
|
||||||
|
expect(STALE_AGENT_RUN_TTL_MS).toBe(15 * 60_000);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("treats a legacy claim without a start timestamp as stale", () => {
|
||||||
|
expect(isStaleAgentRun({ activeRunId: "run-1", activeRunStartedAt: null }, NOW)).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function buildAction(overrides: Record<string, unknown> = {}) {
|
||||||
|
return {
|
||||||
|
id: "action-1",
|
||||||
|
resumeId: "resume-1",
|
||||||
|
title: "Tighten summary",
|
||||||
|
summary: null,
|
||||||
|
operations: [{ op: "replace" as const, path: "/basics/name", value: "Bob" }],
|
||||||
|
appliedUpdatedAt: NOW,
|
||||||
|
...overrides,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("appendMissingActionParts", () => {
|
||||||
|
const draft: UIMessage = { id: "ui-1", role: "assistant", parts: [{ type: "text", text: "Editing…" }] };
|
||||||
|
|
||||||
|
it("appends a synthetic call/result pair for an action missing from the parts", () => {
|
||||||
|
const patched = appendMissingActionParts(draft, [buildAction()]);
|
||||||
|
|
||||||
|
expect(patched.parts.at(-1)).toMatchObject({
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "synthetic-action-1",
|
||||||
|
state: "output-available",
|
||||||
|
output: expect.objectContaining({ actionId: "action-1" }),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns the message unchanged when every action is already represented", () => {
|
||||||
|
const withPart: UIMessage = {
|
||||||
|
...draft,
|
||||||
|
parts: [
|
||||||
|
{
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
state: "output-available",
|
||||||
|
input: {},
|
||||||
|
output: { actionId: "action-1" },
|
||||||
|
} as UIMessage["parts"][number],
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(appendMissingActionParts(withPart, [buildAction()])).toBe(withPart);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
type ScriptedReaperDb = {
|
||||||
|
updates: Array<{ set: unknown }>;
|
||||||
|
};
|
||||||
|
|
||||||
|
function scriptedReaperDatabase(input: {
|
||||||
|
drafts: Array<Record<string, unknown>>;
|
||||||
|
actions: Array<Record<string, unknown>>;
|
||||||
|
clearMatches?: boolean;
|
||||||
|
}) {
|
||||||
|
const state: ScriptedReaperDb = { updates: [] };
|
||||||
|
let selectCall = 0;
|
||||||
|
|
||||||
|
return {
|
||||||
|
state,
|
||||||
|
select: () => {
|
||||||
|
const call = selectCall;
|
||||||
|
selectCall += 1;
|
||||||
|
return {
|
||||||
|
from: () => ({
|
||||||
|
where: async () => (call === 0 ? input.drafts : input.actions),
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
update: () => ({
|
||||||
|
set: (set: unknown) => {
|
||||||
|
state.updates.push({ set });
|
||||||
|
return {
|
||||||
|
where: () =>
|
||||||
|
Object.assign(Promise.resolve(undefined), {
|
||||||
|
returning: async () => ((input.clearMatches ?? true) ? [{ id: "thread-1" }] : []),
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("reapStaleAgentRun", () => {
|
||||||
|
it("clears the run claim and flips streaming drafts to canceled with synthetic action parts", async () => {
|
||||||
|
const database = scriptedReaperDatabase({
|
||||||
|
drafts: [
|
||||||
|
{
|
||||||
|
id: "row-1",
|
||||||
|
uiMessage: { id: "ui-1", role: "assistant", parts: [{ type: "text", text: "Editing…" }] },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
actions: [buildAction()],
|
||||||
|
});
|
||||||
|
|
||||||
|
await reapStaleAgentRun(
|
||||||
|
{ threadId: "thread-1", userId: "user-1", runId: "run-1", streamId: "stream-1" },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
// First update clears the run claim; second flips the draft.
|
||||||
|
expect(database.state.updates[0]?.set).toMatchObject({ activeRunId: null, activeStreamId: null });
|
||||||
|
expect(database.state.updates[1]?.set).toMatchObject({ status: "canceled" });
|
||||||
|
const uiMessage = (database.state.updates[1]?.set as { uiMessage?: UIMessage } | undefined)?.uiMessage;
|
||||||
|
expect(uiMessage?.parts.at(-1)).toMatchObject({ toolCallId: "synthetic-action-1" });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("only clears the claim when there is no streaming draft", async () => {
|
||||||
|
const database = scriptedReaperDatabase({ drafts: [], actions: [] });
|
||||||
|
|
||||||
|
await reapStaleAgentRun(
|
||||||
|
{ threadId: "thread-1", userId: "user-1", runId: "run-1", streamId: null },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(database.state.updates).toHaveLength(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Regression: a concurrent request/replica can claim a replacement run (and insert a live
|
||||||
|
// draft) between the stale read and this reap. When the conditional clear matches nothing,
|
||||||
|
// the loser must not flip any draft.
|
||||||
|
it("does not touch drafts when another reaper already cleared or replaced the run", async () => {
|
||||||
|
const database = scriptedReaperDatabase({
|
||||||
|
drafts: [{ id: "row-live", uiMessage: { id: "ui-live", role: "assistant", parts: [] } }],
|
||||||
|
actions: [],
|
||||||
|
clearMatches: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
await reapStaleAgentRun(
|
||||||
|
{ threadId: "thread-1", userId: "user-1", runId: "run-stale", streamId: "stream-stale" },
|
||||||
|
database as never,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Only the (no-op) conditional clear ran; no draft status flip.
|
||||||
|
expect(database.state.updates).toHaveLength(1);
|
||||||
|
expect(database.state.updates[0]?.set).toMatchObject({ activeRunId: null });
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,8 +1,27 @@
|
|||||||
import { and, eq, isNull } from "drizzle-orm";
|
import type { UIMessage } from "ai";
|
||||||
|
import { and, eq, isNotNull, isNull, sql } from "drizzle-orm";
|
||||||
import { db } from "@reactive-resume/db/client";
|
import { db } from "@reactive-resume/db/client";
|
||||||
import * as schema from "@reactive-resume/db/schema";
|
import * as schema from "@reactive-resume/db/schema";
|
||||||
|
|
||||||
type AgentRunStateDb = Pick<typeof db, "update">;
|
type AgentRunStateDb = Pick<typeof db, "update">;
|
||||||
|
type AgentRunReaperDb = Pick<typeof db, "select" | "update">;
|
||||||
|
|
||||||
|
// Deliberately TTL-only (no controller-map heuristic) so reaping stays multi-replica-safe. The TTL
|
||||||
|
// exceeds the 10-minute run wall clock, so a live run always dies by its own timeout first.
|
||||||
|
export const STALE_AGENT_RUN_TTL_MS = 15 * 60_000;
|
||||||
|
|
||||||
|
type StaleRunThreadFields = {
|
||||||
|
activeRunId: string | null;
|
||||||
|
activeRunStartedAt: Date | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function isStaleAgentRun(thread: StaleRunThreadFields, now = new Date()) {
|
||||||
|
if (!thread.activeRunId) return false;
|
||||||
|
// A run claim without a start timestamp is a legacy row that can never age out on its own.
|
||||||
|
if (!thread.activeRunStartedAt) return true;
|
||||||
|
|
||||||
|
return now.getTime() - thread.activeRunStartedAt.getTime() > STALE_AGENT_RUN_TTL_MS;
|
||||||
|
}
|
||||||
|
|
||||||
export async function claimActiveAgentRun(
|
export async function claimActiveAgentRun(
|
||||||
input: { threadId: string; userId: string; runId: string; streamId: string },
|
input: { threadId: string; userId: string; runId: string; streamId: string },
|
||||||
@@ -27,7 +46,7 @@ export async function clearActiveAgentRunIfCurrent(
|
|||||||
input: { threadId: string; userId: string; runId: string; streamId: string | null },
|
input: { threadId: string; userId: string; runId: string; streamId: string | null },
|
||||||
database: AgentRunStateDb = db,
|
database: AgentRunStateDb = db,
|
||||||
) {
|
) {
|
||||||
await database
|
const cleared = await database
|
||||||
.update(schema.agentThread)
|
.update(schema.agentThread)
|
||||||
.set({ activeRunId: null, activeStreamId: null, activeRunStartedAt: null })
|
.set({ activeRunId: null, activeStreamId: null, activeRunStartedAt: null })
|
||||||
.where(
|
.where(
|
||||||
@@ -39,5 +58,148 @@ export async function clearActiveAgentRunIfCurrent(
|
|||||||
? isNull(schema.agentThread.activeStreamId)
|
? isNull(schema.agentThread.activeStreamId)
|
||||||
: eq(schema.agentThread.activeStreamId, input.streamId),
|
: eq(schema.agentThread.activeStreamId, input.streamId),
|
||||||
),
|
),
|
||||||
|
)
|
||||||
|
.returning({ id: schema.agentThread.id });
|
||||||
|
|
||||||
|
return cleared.length === 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReapableActionRow = Pick<
|
||||||
|
typeof schema.agentAction.$inferSelect,
|
||||||
|
"id" | "resumeId" | "title" | "summary" | "operations" | "appliedUpdatedAt"
|
||||||
|
>;
|
||||||
|
|
||||||
|
function hasActionPart(message: UIMessage, actionId: string) {
|
||||||
|
return message.parts.some((part) => {
|
||||||
|
const output = (part as { output?: unknown }).output;
|
||||||
|
return (
|
||||||
|
part.type === "tool-apply_resume_patch" &&
|
||||||
|
typeof output === "object" &&
|
||||||
|
output !== null &&
|
||||||
|
(output as { actionId?: unknown }).actionId === actionId
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Applied actions missing from a dead draft's parts get a synthetic call/result pair so the
|
||||||
|
// replayed history stays provider-valid (providers reject tool results without matching calls).
|
||||||
|
export function appendMissingActionParts(message: UIMessage, actions: ReapableActionRow[]): UIMessage {
|
||||||
|
const missing = actions.filter((action) => !hasActionPart(message, action.id));
|
||||||
|
if (missing.length === 0) return message;
|
||||||
|
|
||||||
|
return {
|
||||||
|
...message,
|
||||||
|
parts: [
|
||||||
|
...message.parts,
|
||||||
|
...missing.map(
|
||||||
|
(action) =>
|
||||||
|
({
|
||||||
|
type: "tool-apply_resume_patch",
|
||||||
|
toolCallId: `synthetic-${action.id}`,
|
||||||
|
state: "output-available",
|
||||||
|
input: {
|
||||||
|
title: action.title,
|
||||||
|
...(action.summary ? { summary: action.summary } : {}),
|
||||||
|
operations: action.operations,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
actionId: action.id,
|
||||||
|
resumeId: action.resumeId,
|
||||||
|
title: action.title,
|
||||||
|
summary: action.summary,
|
||||||
|
operations: action.operations,
|
||||||
|
appliedUpdatedAt: action.appliedUpdatedAt.toISOString(),
|
||||||
|
// Snapshot boundary: the `resume` key makes context pruning supersede older
|
||||||
|
// full snapshots, and the null value forces a fresh read_resume — the edit
|
||||||
|
// committed, but the post-patch document was lost with the crashed run.
|
||||||
|
resume: null,
|
||||||
|
note: "This edit was applied, but the run was interrupted before the updated resume could be recorded. Re-read the resume before making further edits.",
|
||||||
|
},
|
||||||
|
}) as UIMessage["parts"][number],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reap = conditionally clear the run claim, then flip dead "streaming" drafts to canceled with
|
||||||
|
// their committed actions represented. Applied actions stay applied — they are real, individually
|
||||||
|
// revertable edits; auto-reverting on reap would be worse than the crash.
|
||||||
|
export async function reapStaleAgentRun(
|
||||||
|
input: { threadId: string; userId: string; runId: string; streamId: string | null },
|
||||||
|
database: AgentRunReaperDb = db,
|
||||||
|
) {
|
||||||
|
// Snapshot drafts BEFORE clearing the claim: while the stale claim still holds, no new run can
|
||||||
|
// start, so every "streaming" draft visible here belongs to the dead run — a draft inserted by
|
||||||
|
// a replacement run claimed after this point is never in the snapshot.
|
||||||
|
const drafts = await database
|
||||||
|
.select()
|
||||||
|
.from(schema.agentMessage)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentMessage.threadId, input.threadId),
|
||||||
|
eq(schema.agentMessage.userId, input.userId),
|
||||||
|
eq(schema.agentMessage.status, "streaming"),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Concurrent reapers (another request or replica) race on this conditional clear; the loser
|
||||||
|
// must not touch drafts — the thread has already moved on under a different run.
|
||||||
|
const cleared = await clearActiveAgentRunIfCurrent(input, database);
|
||||||
|
if (!cleared) return;
|
||||||
|
|
||||||
|
for (const draft of drafts) {
|
||||||
|
const actions = await database
|
||||||
|
.select({
|
||||||
|
id: schema.agentAction.id,
|
||||||
|
resumeId: schema.agentAction.resumeId,
|
||||||
|
title: schema.agentAction.title,
|
||||||
|
summary: schema.agentAction.summary,
|
||||||
|
operations: schema.agentAction.operations,
|
||||||
|
appliedUpdatedAt: schema.agentAction.appliedUpdatedAt,
|
||||||
|
})
|
||||||
|
.from(schema.agentAction)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentAction.messageId, draft.id),
|
||||||
|
eq(schema.agentAction.kind, "resume_patch"),
|
||||||
|
eq(schema.agentAction.status, "applied"),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
const message = appendMissingActionParts(draft.uiMessage as unknown as UIMessage, actions);
|
||||||
|
await database
|
||||||
|
.update(schema.agentMessage)
|
||||||
|
.set({ status: "canceled", uiMessage: message as unknown as Record<string, unknown> })
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(schema.agentMessage.id, draft.id),
|
||||||
|
// A continuation can claim the thread right after our conditional clear and start
|
||||||
|
// writing into this very row. Flip only the exact state we snapshotted — any
|
||||||
|
// concurrent write changes status or uiMessage and makes this a no-op.
|
||||||
|
eq(schema.agentMessage.status, "streaming"),
|
||||||
|
sql`${schema.agentMessage.uiMessage} = ${JSON.stringify(draft.uiMessage)}::jsonb`,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function reapStaleAgentRunsAtBoot(database: AgentRunReaperDb = db) {
|
||||||
|
const threads = await database
|
||||||
|
.select({
|
||||||
|
id: schema.agentThread.id,
|
||||||
|
userId: schema.agentThread.userId,
|
||||||
|
activeRunId: schema.agentThread.activeRunId,
|
||||||
|
activeStreamId: schema.agentThread.activeStreamId,
|
||||||
|
activeRunStartedAt: schema.agentThread.activeRunStartedAt,
|
||||||
|
})
|
||||||
|
.from(schema.agentThread)
|
||||||
|
.where(isNotNull(schema.agentThread.activeRunId));
|
||||||
|
|
||||||
|
for (const thread of threads) {
|
||||||
|
if (!isStaleAgentRun(thread) || !thread.activeRunId) continue;
|
||||||
|
await reapStaleAgentRun(
|
||||||
|
{ threadId: thread.id, userId: thread.userId, runId: thread.activeRunId, streamId: thread.activeStreamId },
|
||||||
|
database,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ const dbMock = {
|
|||||||
|
|
||||||
const clearActiveAgentRunIfCurrentMock = vi.fn();
|
const clearActiveAgentRunIfCurrentMock = vi.fn();
|
||||||
const claimActiveAgentRunMock = vi.fn();
|
const claimActiveAgentRunMock = vi.fn();
|
||||||
|
const messagesPersistenceMock = {
|
||||||
|
applyStepToUiMessage: vi.fn((message: unknown) => message),
|
||||||
|
insertDraftAssistantMessage: vi.fn(),
|
||||||
|
upsertAssistantUiMessage: vi.fn(),
|
||||||
|
deleteDraftIfEmpty: vi.fn(),
|
||||||
|
withAccumulatedUsageMetadata: vi.fn((_previous: unknown, next: unknown) => next),
|
||||||
|
};
|
||||||
const storageServiceMock = {
|
const storageServiceMock = {
|
||||||
delete: vi.fn(),
|
delete: vi.fn(),
|
||||||
write: vi.fn(),
|
write: vi.fn(),
|
||||||
@@ -38,6 +45,7 @@ vi.mock("@reactive-resume/db/schema", () => ({
|
|||||||
deletedAt: "agent_threads.deleted_at",
|
deletedAt: "agent_threads.deleted_at",
|
||||||
archivedAt: "agent_threads.archived_at",
|
archivedAt: "agent_threads.archived_at",
|
||||||
status: "agent_threads.status",
|
status: "agent_threads.status",
|
||||||
|
reviewPatches: "agent_threads.review_patches",
|
||||||
activeRunId: "agent_threads.active_run_id",
|
activeRunId: "agent_threads.active_run_id",
|
||||||
activeStreamId: "agent_threads.active_stream_id",
|
activeStreamId: "agent_threads.active_stream_id",
|
||||||
activeRunStartedAt: "agent_threads.active_run_started_at",
|
activeRunStartedAt: "agent_threads.active_run_started_at",
|
||||||
@@ -96,14 +104,29 @@ vi.mock("drizzle-orm", () => ({
|
|||||||
sql: () => ({ type: "sql" }),
|
sql: () => ({ type: "sql" }),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("ai", () => ({
|
// Spread-actual: pure helpers (isStepCount, safeValidateUIMessages, pruneMessages, ...) stay real;
|
||||||
|
// only the scripted seams are mocked.
|
||||||
|
vi.mock("ai", async (importOriginal) => ({
|
||||||
|
...(await importOriginal<typeof import("ai")>()),
|
||||||
convertToModelMessages: vi.fn(),
|
convertToModelMessages: vi.fn(),
|
||||||
stepCountIs: vi.fn(),
|
|
||||||
ToolLoopAgent: vi.fn(),
|
ToolLoopAgent: vi.fn(),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("../ai/service", () => ({ getAgentModel: vi.fn() }));
|
// Minimal V4 model stub: the real wrapLanguageModel/addToolInputExamplesMiddleware run against it.
|
||||||
vi.mock("../ai/credentials", () => ({ assertAgentEnvironment: vi.fn() }));
|
vi.mock("../ai/service", () => ({
|
||||||
|
getAgentModel: vi.fn(() => ({
|
||||||
|
specificationVersion: "v4",
|
||||||
|
provider: "mock",
|
||||||
|
modelId: "mock-model",
|
||||||
|
supportedUrls: {},
|
||||||
|
doGenerate: vi.fn(),
|
||||||
|
doStream: vi.fn(),
|
||||||
|
})),
|
||||||
|
}));
|
||||||
|
vi.mock("../ai/credentials", () => ({
|
||||||
|
assertAgentEnvironment: vi.fn(),
|
||||||
|
getAgentToolApprovalSecret: vi.fn(() => "test-approval-secret"),
|
||||||
|
}));
|
||||||
vi.mock("../ai-providers/service", () => ({ aiProvidersService: aiProvidersServiceMock }));
|
vi.mock("../ai-providers/service", () => ({ aiProvidersService: aiProvidersServiceMock }));
|
||||||
vi.mock("../resume/service", () => ({ resumeService: resumeServiceMock }));
|
vi.mock("../resume/service", () => ({ resumeService: resumeServiceMock }));
|
||||||
vi.mock("../storage/service", () => ({
|
vi.mock("../storage/service", () => ({
|
||||||
@@ -118,7 +141,10 @@ vi.mock("./resume", () => ({
|
|||||||
vi.mock("./runs", () => ({
|
vi.mock("./runs", () => ({
|
||||||
claimActiveAgentRun: claimActiveAgentRunMock,
|
claimActiveAgentRun: claimActiveAgentRunMock,
|
||||||
clearActiveAgentRunIfCurrent: clearActiveAgentRunIfCurrentMock,
|
clearActiveAgentRunIfCurrent: clearActiveAgentRunIfCurrentMock,
|
||||||
|
isStaleAgentRun: vi.fn(() => false),
|
||||||
|
reapStaleAgentRun: vi.fn(),
|
||||||
}));
|
}));
|
||||||
|
vi.mock("./messages-persistence", () => messagesPersistenceMock);
|
||||||
vi.mock("./streams", () => ({
|
vi.mock("./streams", () => ({
|
||||||
agentStreamLifecycle: { create: vi.fn(), resume: vi.fn() },
|
agentStreamLifecycle: { create: vi.fn(), resume: vi.fn() },
|
||||||
}));
|
}));
|
||||||
@@ -135,6 +161,12 @@ beforeEach(() => {
|
|||||||
dbMock.transaction.mockImplementation(async <T>(callback: (tx: typeof dbMock) => Promise<T>) => callback(dbMock));
|
dbMock.transaction.mockImplementation(async <T>(callback: (tx: typeof dbMock) => Promise<T>) => callback(dbMock));
|
||||||
clearActiveAgentRunIfCurrentMock.mockReset();
|
clearActiveAgentRunIfCurrentMock.mockReset();
|
||||||
claimActiveAgentRunMock.mockReset();
|
claimActiveAgentRunMock.mockReset();
|
||||||
|
for (const mock of Object.values(messagesPersistenceMock)) mock.mockReset();
|
||||||
|
messagesPersistenceMock.applyStepToUiMessage.mockImplementation((message: unknown) => message);
|
||||||
|
messagesPersistenceMock.insertDraftAssistantMessage.mockResolvedValue({ rowId: "draft-row-1", sequence: 1 });
|
||||||
|
messagesPersistenceMock.upsertAssistantUiMessage.mockResolvedValue({ rowId: "draft-row-1" });
|
||||||
|
messagesPersistenceMock.deleteDraftIfEmpty.mockResolvedValue(undefined);
|
||||||
|
messagesPersistenceMock.withAccumulatedUsageMetadata.mockImplementation((_previous: unknown, next: unknown) => next);
|
||||||
for (const mock of Object.values(storageServiceMock)) mock.mockReset();
|
for (const mock of Object.values(storageServiceMock)) mock.mockReset();
|
||||||
for (const mock of Object.values(resumeServiceMock)) mock.mockReset();
|
for (const mock of Object.values(resumeServiceMock)) mock.mockReset();
|
||||||
for (const mock of Object.values(aiProvidersServiceMock)) mock.mockReset();
|
for (const mock of Object.values(aiProvidersServiceMock)) mock.mockReset();
|
||||||
@@ -149,6 +181,7 @@ function buildArchivedThread(overrides: Record<string, unknown> = {}) {
|
|||||||
sourceResumeId: null,
|
sourceResumeId: null,
|
||||||
title: "Archived thread",
|
title: "Archived thread",
|
||||||
status: "archived",
|
status: "archived",
|
||||||
|
reviewPatches: false,
|
||||||
activeRunId: null,
|
activeRunId: null,
|
||||||
activeStreamId: null,
|
activeStreamId: null,
|
||||||
activeRunStartedAt: null,
|
activeRunStartedAt: null,
|
||||||
@@ -398,7 +431,7 @@ describe("agentService.messages.send", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("stores snapshotData and applies a valid JSON Patch without a timestamp conflict guard", async () => {
|
it("stores snapshotData and applies a valid JSON Patch guarded by the pre-read timestamp", async () => {
|
||||||
const activeThread = buildActiveThread();
|
const activeThread = buildActiveThread();
|
||||||
const persistedMessage = {
|
const persistedMessage = {
|
||||||
id: "message-1",
|
id: "message-1",
|
||||||
@@ -472,8 +505,13 @@ describe("agentService.messages.send", () => {
|
|||||||
];
|
];
|
||||||
const insertValues: unknown[] = [];
|
const insertValues: unknown[] = [];
|
||||||
|
|
||||||
|
const patchedData = { basics: { customFields: [{ id: "field-1" }] } };
|
||||||
resumeServiceMock.getById.mockResolvedValue({ data: beforeData, updatedAt: beforeUpdatedAt });
|
resumeServiceMock.getById.mockResolvedValue({ data: beforeData, updatedAt: beforeUpdatedAt });
|
||||||
resumeServiceMock.patchInTransaction.mockResolvedValue({ id: "resume-1", updatedAt: patchedUpdatedAt });
|
resumeServiceMock.patchInTransaction.mockResolvedValue({
|
||||||
|
id: "resume-1",
|
||||||
|
updatedAt: patchedUpdatedAt,
|
||||||
|
data: patchedData,
|
||||||
|
});
|
||||||
dbMock.insert.mockReturnValue({
|
dbMock.insert.mockReturnValue({
|
||||||
values: vi.fn((value) => {
|
values: vi.fn((value) => {
|
||||||
insertValues.push(value);
|
insertValues.push(value);
|
||||||
@@ -501,6 +539,7 @@ describe("agentService.messages.send", () => {
|
|||||||
id: "resume-1",
|
id: "resume-1",
|
||||||
userId: "user-1",
|
userId: "user-1",
|
||||||
operations,
|
operations,
|
||||||
|
expectedUpdatedAt: beforeUpdatedAt,
|
||||||
});
|
});
|
||||||
expect(insertValues).toContainEqual(
|
expect(insertValues).toContainEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
@@ -510,7 +549,83 @@ describe("agentService.messages.send", () => {
|
|||||||
appliedUpdatedAt: patchedUpdatedAt,
|
appliedUpdatedAt: patchedUpdatedAt,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
expect(result).toEqual(expect.objectContaining({ actionId: "action-1", resumeId: "resume-1" }));
|
expect(result).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
actionId: "action-1",
|
||||||
|
resumeId: "resume-1",
|
||||||
|
changedPaths: ["/basics/customFields/-"],
|
||||||
|
resume: patchedData,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("rethrows a resume version conflict as a recoverable plain tool error", async () => {
|
||||||
|
const activeThread = buildActiveThread();
|
||||||
|
const persistedMessage = {
|
||||||
|
id: "message-1",
|
||||||
|
userId: "user-1",
|
||||||
|
threadId: "thread-1",
|
||||||
|
role: "user",
|
||||||
|
status: "completed",
|
||||||
|
sequence: 0,
|
||||||
|
uiMessage: { id: "ui-message-1", role: "user", parts: [{ type: "text", text: "Edit" }] },
|
||||||
|
};
|
||||||
|
|
||||||
|
dbMock.select
|
||||||
|
.mockImplementationOnce(() => selectLimitResult([activeThread]))
|
||||||
|
.mockImplementationOnce(() => selectWhereResult([{ maxSequence: -1 }]))
|
||||||
|
.mockImplementationOnce(() => selectWhereResult([{ total: 1 }]))
|
||||||
|
.mockImplementationOnce(() => selectOrderByResult([persistedMessage]));
|
||||||
|
dbMock.insert.mockReturnValue({
|
||||||
|
values: vi.fn(() => ({ returning: vi.fn(async () => [persistedMessage]) })),
|
||||||
|
});
|
||||||
|
dbMock.update.mockReturnValue({ set: vi.fn(() => ({ where: vi.fn(async () => undefined) })) });
|
||||||
|
|
||||||
|
claimActiveAgentRunMock.mockResolvedValue(true);
|
||||||
|
aiProvidersServiceMock.getRunnableById.mockResolvedValue({
|
||||||
|
id: "provider-1",
|
||||||
|
provider: "openai",
|
||||||
|
model: "gpt-5",
|
||||||
|
apiKey: "secret",
|
||||||
|
baseURL: null,
|
||||||
|
});
|
||||||
|
aiProvidersServiceMock.markUsed.mockResolvedValue(undefined);
|
||||||
|
|
||||||
|
const [
|
||||||
|
{ convertToModelMessages, ToolLoopAgent },
|
||||||
|
{ agentStreamLifecycle },
|
||||||
|
{ buildAgentTools },
|
||||||
|
{ streamToEventIterator },
|
||||||
|
] = await Promise.all([import("ai"), import("./streams"), import("./tools"), import("@orpc/server")]);
|
||||||
|
vi.mocked(convertToModelMessages).mockResolvedValue([{ role: "user", content: [{ type: "text", text: "Edit" }] }]);
|
||||||
|
class MockToolLoopAgent {
|
||||||
|
stream = vi.fn(async () => ({ toUIMessageStream: vi.fn(() => new ReadableStream()) }));
|
||||||
|
}
|
||||||
|
vi.mocked(ToolLoopAgent).mockImplementation(MockToolLoopAgent as never);
|
||||||
|
vi.mocked(agentStreamLifecycle.create).mockResolvedValue(new ReadableStream());
|
||||||
|
vi.mocked(streamToEventIterator).mockReturnValue("iterator" as never);
|
||||||
|
|
||||||
|
const { agentService } = await import("./service");
|
||||||
|
|
||||||
|
await agentService.messages.send({
|
||||||
|
threadId: "thread-1",
|
||||||
|
userId: "user-1",
|
||||||
|
// biome-ignore lint/suspicious/noExplicitAny: minimal fixture for unit test
|
||||||
|
message: { id: "ui-message-1", role: "user", parts: [{ type: "text", text: "Edit" }] } as any,
|
||||||
|
});
|
||||||
|
|
||||||
|
resumeServiceMock.getById.mockResolvedValue({ data: {}, updatedAt: new Date("2026-05-01T00:00:00.000Z") });
|
||||||
|
resumeServiceMock.patchInTransaction.mockRejectedValue(new ORPCError("RESUME_VERSION_CONFLICT"));
|
||||||
|
|
||||||
|
const toolConfig = vi.mocked(buildAgentTools).mock.calls.at(-1)?.[0];
|
||||||
|
// biome-ignore lint/suspicious/noExplicitAny: captured mocked tool config has intentionally loose handler types
|
||||||
|
const applying = (toolConfig as any).handlers.applyResumePatch({
|
||||||
|
title: "Edit",
|
||||||
|
operations: [{ op: "replace", path: "/basics/name", value: "Bob" }],
|
||||||
|
});
|
||||||
|
|
||||||
|
await expect(applying).rejects.toThrowError("The resume changed while this edit was being prepared");
|
||||||
|
await expect(applying).rejects.not.toBeInstanceOf(ORPCError);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("persists canonical attachment UI parts, links selected attachments, and appends server-read model parts", async () => {
|
it("persists canonical attachment UI parts, links selected attachments, and appends server-read model parts", async () => {
|
||||||
@@ -784,6 +899,10 @@ describe("agentService.messages.send", () => {
|
|||||||
type: "tool-ask_user_question",
|
type: "tool-ask_user_question",
|
||||||
toolCallId: "call-1",
|
toolCallId: "call-1",
|
||||||
state: "output-available",
|
state: "output-available",
|
||||||
|
input: {
|
||||||
|
question: "How broadly should I rename?",
|
||||||
|
choices: ["Only change the main resume header name"],
|
||||||
|
},
|
||||||
output: "Only change the main resume header name",
|
output: "Only change the main resume header name",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -809,6 +928,122 @@ describe("agentService.messages.send", () => {
|
|||||||
expect(convertToModelMessages).toHaveBeenCalledWith([userMessage.uiMessage, answeredAssistantModelInput]);
|
expect(convertToModelMessages).toHaveBeenCalledWith([userMessage.uiMessage, answeredAssistantModelInput]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Regression (defect 8): a question continuation streams into the SAME uiMessage id; onFinish
|
||||||
|
// must upsert the existing assistant row instead of inserting a duplicate row.
|
||||||
|
it("continues the existing assistant row on a question continuation instead of inserting a duplicate", async () => {
|
||||||
|
const activeThread = buildActiveThread();
|
||||||
|
const userMessage = {
|
||||||
|
id: "message-user-1",
|
||||||
|
userId: "user-1",
|
||||||
|
threadId: "thread-1",
|
||||||
|
role: "user",
|
||||||
|
status: "completed",
|
||||||
|
sequence: 0,
|
||||||
|
uiMessage: { id: "ui-user-1", role: "user", parts: [{ type: "text", text: "Change the name" }] },
|
||||||
|
};
|
||||||
|
const question = { question: "How broadly should I rename?", choices: ["Only the header"] };
|
||||||
|
const unansweredAssistantMessage = {
|
||||||
|
id: "message-assistant-1",
|
||||||
|
userId: "user-1",
|
||||||
|
threadId: "thread-1",
|
||||||
|
role: "assistant",
|
||||||
|
status: "completed",
|
||||||
|
sequence: 1,
|
||||||
|
uiMessage: {
|
||||||
|
id: "ui-assistant-1",
|
||||||
|
role: "assistant",
|
||||||
|
parts: [{ type: "tool-ask_user_question", toolCallId: "call-1", state: "input-available", input: question }],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const answeredAssistantMessage = {
|
||||||
|
...unansweredAssistantMessage,
|
||||||
|
uiMessage: {
|
||||||
|
...unansweredAssistantMessage.uiMessage,
|
||||||
|
parts: [
|
||||||
|
{
|
||||||
|
type: "tool-ask_user_question",
|
||||||
|
toolCallId: "call-1",
|
||||||
|
state: "output-available",
|
||||||
|
input: question,
|
||||||
|
output: "Only the header",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
dbMock.select
|
||||||
|
.mockImplementationOnce(() => selectLimitResult([activeThread]))
|
||||||
|
.mockImplementationOnce(() => selectOrderByResult([userMessage, unansweredAssistantMessage]))
|
||||||
|
.mockImplementationOnce(() => selectOrderByResult([userMessage, answeredAssistantMessage]));
|
||||||
|
dbMock.update.mockImplementation(() => ({ set: vi.fn(() => ({ where: vi.fn(async () => undefined) })) }));
|
||||||
|
|
||||||
|
claimActiveAgentRunMock.mockResolvedValue(true);
|
||||||
|
aiProvidersServiceMock.getRunnableById.mockResolvedValue({
|
||||||
|
id: "provider-1",
|
||||||
|
provider: "openai",
|
||||||
|
model: "gpt-5",
|
||||||
|
apiKey: "secret",
|
||||||
|
baseURL: null,
|
||||||
|
});
|
||||||
|
aiProvidersServiceMock.markUsed.mockResolvedValue(undefined);
|
||||||
|
|
||||||
|
const [{ convertToModelMessages, ToolLoopAgent }, { agentStreamLifecycle }, { streamToEventIterator }] =
|
||||||
|
await Promise.all([import("ai"), import("./streams"), import("@orpc/server")]);
|
||||||
|
vi.mocked(convertToModelMessages).mockResolvedValue([
|
||||||
|
{ role: "user", content: [{ type: "text", text: "Change the name" }] },
|
||||||
|
]);
|
||||||
|
|
||||||
|
let uiStreamOptions: Record<string, unknown> | undefined;
|
||||||
|
class MockToolLoopAgent {
|
||||||
|
stream = vi.fn(async () => ({
|
||||||
|
toUIMessageStream: vi.fn((options: Record<string, unknown>) => {
|
||||||
|
uiStreamOptions = options;
|
||||||
|
return new ReadableStream();
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
vi.mocked(ToolLoopAgent).mockImplementation(MockToolLoopAgent as never);
|
||||||
|
vi.mocked(agentStreamLifecycle.create).mockImplementation((_streamId, makeStream) => {
|
||||||
|
(makeStream as () => unknown)();
|
||||||
|
return Promise.resolve(new ReadableStream());
|
||||||
|
});
|
||||||
|
vi.mocked(streamToEventIterator).mockReturnValue("iterator" as never);
|
||||||
|
|
||||||
|
const { agentService } = await import("./service");
|
||||||
|
|
||||||
|
await agentService.messages.send({
|
||||||
|
threadId: "thread-1",
|
||||||
|
userId: "user-1",
|
||||||
|
// biome-ignore lint/suspicious/noExplicitAny: minimal fixture for unit test
|
||||||
|
message: answeredAssistantMessage.uiMessage as any,
|
||||||
|
});
|
||||||
|
|
||||||
|
const onFinish = uiStreamOptions?.onFinish as (event: Record<string, unknown>) => Promise<void>;
|
||||||
|
const continuedMessage = {
|
||||||
|
...answeredAssistantMessage.uiMessage,
|
||||||
|
parts: [...answeredAssistantMessage.uiMessage.parts, { type: "text", text: "Renamed the header." }],
|
||||||
|
};
|
||||||
|
await onFinish({ responseMessage: continuedMessage, isAborted: false, isContinuation: true, messages: [] });
|
||||||
|
|
||||||
|
expect(messagesPersistenceMock.insertDraftAssistantMessage).not.toHaveBeenCalled();
|
||||||
|
expect(dbMock.insert).not.toHaveBeenCalled();
|
||||||
|
expect(messagesPersistenceMock.upsertAssistantUiMessage).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
rowId: "message-assistant-1",
|
||||||
|
status: "completed",
|
||||||
|
message: expect.objectContaining({ id: "ui-assistant-1" }),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Usage metadata is attached on the finish part only and carries the provider's model id.
|
||||||
|
const messageMetadata = uiStreamOptions?.messageMetadata as (options: { part: Record<string, unknown> }) => unknown;
|
||||||
|
expect(messageMetadata({ part: { type: "finish", totalUsage: { totalTokens: 42 } } })).toEqual({
|
||||||
|
usage: { totalTokens: 42 },
|
||||||
|
model: "gpt-5",
|
||||||
|
});
|
||||||
|
expect(messageMetadata({ part: { type: "text-delta" } })).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
it("repairs legacy user-answer messages that followed an unresolved ask-user-question tool call", async () => {
|
it("repairs legacy user-answer messages that followed an unresolved ask-user-question tool call", async () => {
|
||||||
const activeThread = buildActiveThread();
|
const activeThread = buildActiveThread();
|
||||||
const firstUserMessage = {
|
const firstUserMessage = {
|
||||||
@@ -952,6 +1187,30 @@ describe("agentService.messages.send", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("rejects malformed UI message parts before claiming a run", async () => {
|
||||||
|
dbMock.select.mockImplementationOnce(() => selectLimitResult([buildActiveThread()]));
|
||||||
|
aiProvidersServiceMock.getRunnableById.mockResolvedValue({
|
||||||
|
id: "provider-1",
|
||||||
|
provider: "openai",
|
||||||
|
model: "gpt-5",
|
||||||
|
apiKey: "secret",
|
||||||
|
baseURL: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { agentService } = await import("./service");
|
||||||
|
|
||||||
|
const sending = agentService.messages.send({
|
||||||
|
threadId: "thread-1",
|
||||||
|
userId: "user-1",
|
||||||
|
// biome-ignore lint/suspicious/noExplicitAny: malformed fixture on purpose
|
||||||
|
message: { id: "ui-message-1", role: "user", parts: [{ type: "text" }] } as any,
|
||||||
|
});
|
||||||
|
|
||||||
|
await expect(sending).rejects.toMatchObject({ code: "BAD_REQUEST", message: "Invalid UI message parts." });
|
||||||
|
expect(claimActiveAgentRunMock).not.toHaveBeenCalled();
|
||||||
|
expect(dbMock.insert).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
it("rejects malformed attachment IDs before persisting a message", async () => {
|
it("rejects malformed attachment IDs before persisting a message", async () => {
|
||||||
dbMock.select.mockImplementationOnce(() => selectLimitResult([buildActiveThread()]));
|
dbMock.select.mockImplementationOnce(() => selectLimitResult([buildActiveThread()]));
|
||||||
aiProvidersServiceMock.getRunnableById.mockResolvedValue({
|
aiProvidersServiceMock.getRunnableById.mockResolvedValue({
|
||||||
|
|||||||
@@ -1,26 +1,49 @@
|
|||||||
|
import type { ApplyResumePatchInput } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
import type { JsonPatchOperation } from "@reactive-resume/resume/patch";
|
import type { JsonPatchOperation } from "@reactive-resume/resume/patch";
|
||||||
import type { Locale } from "@reactive-resume/utils/locale";
|
import type { Locale } from "@reactive-resume/utils/locale";
|
||||||
import type { FilePart, ImagePart, ModelMessage, TextPart, UIMessage } from "ai";
|
import type { FilePart, ImagePart, ModelMessage, TextPart, UIMessage } from "ai";
|
||||||
import type { getModel } from "../ai/service";
|
import type { getModel } from "../ai/service";
|
||||||
import { ORPCError } from "@orpc/client";
|
import { ORPCError } from "@orpc/client";
|
||||||
import { streamToEventIterator } from "@orpc/server";
|
import { streamToEventIterator } from "@orpc/server";
|
||||||
import { convertToModelMessages, stepCountIs, ToolLoopAgent } from "ai";
|
import {
|
||||||
|
addToolInputExamplesMiddleware,
|
||||||
|
convertToModelMessages,
|
||||||
|
isStepCount,
|
||||||
|
safeValidateUIMessages,
|
||||||
|
smoothStream,
|
||||||
|
ToolLoopAgent,
|
||||||
|
wrapLanguageModel,
|
||||||
|
} from "ai";
|
||||||
import { and, asc, count, desc, eq, gte, inArray, isNull, max, sql } from "drizzle-orm";
|
import { and, asc, count, desc, eq, gte, inArray, isNull, max, sql } from "drizzle-orm";
|
||||||
import { db } from "@reactive-resume/db/client";
|
import { db } from "@reactive-resume/db/client";
|
||||||
import * as schema from "@reactive-resume/db/schema";
|
import * as schema from "@reactive-resume/db/schema";
|
||||||
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
||||||
import { generateId } from "@reactive-resume/utils/string";
|
import { generateId } from "@reactive-resume/utils/string";
|
||||||
import { assertAgentEnvironment } from "../ai/credentials";
|
import { assertAgentEnvironment, getAgentToolApprovalSecret } from "../ai/credentials";
|
||||||
import { getAgentModel } from "../ai/service";
|
import { getAgentModel } from "../ai/service";
|
||||||
import { aiProvidersService } from "../ai-providers/service";
|
import { aiProvidersService } from "../ai-providers/service";
|
||||||
import { resumeService } from "../resume/service";
|
import { resumeService } from "../resume/service";
|
||||||
import { getStorageService, inferContentType } from "../storage/service";
|
import { getStorageService, inferContentType } from "../storage/service";
|
||||||
|
import { pruneAgentModelContext } from "./context";
|
||||||
|
import { mergeClientToolResponses } from "./messages-merge";
|
||||||
|
import {
|
||||||
|
applyStepToUiMessage,
|
||||||
|
deleteDraftIfEmpty,
|
||||||
|
insertDraftAssistantMessage,
|
||||||
|
upsertAssistantUiMessage,
|
||||||
|
withAccumulatedUsageMetadata,
|
||||||
|
} from "./messages-persistence";
|
||||||
|
import { repairAgentToolCall } from "./repair";
|
||||||
import { buildAgentDraftResumeName, buildUniqueAgentDraftSlug, normalizeAgentResumePatchOperations } from "./resume";
|
import { buildAgentDraftResumeName, buildUniqueAgentDraftSlug, normalizeAgentResumePatchOperations } from "./resume";
|
||||||
import { claimActiveAgentRun, clearActiveAgentRunIfCurrent } from "./runs";
|
import { claimActiveAgentRun, clearActiveAgentRunIfCurrent, isStaleAgentRun, reapStaleAgentRun } from "./runs";
|
||||||
import { agentStreamLifecycle } from "./streams";
|
import { agentStreamLifecycle } from "./streams";
|
||||||
import { buildAgentInstructions, buildAgentTools } from "./tools";
|
import { buildAgentInstructions, buildAgentTools } from "./tools";
|
||||||
|
|
||||||
const MAX_AGENT_STEPS = 30;
|
const MAX_AGENT_STEPS = 30;
|
||||||
|
const MAX_AGENT_OUTPUT_TOKENS = 8_192;
|
||||||
|
const MAX_AGENT_MODEL_RETRIES = 2;
|
||||||
|
const AGENT_STEP_TIMEOUT_MS = 120_000;
|
||||||
|
const AGENT_RUN_TIMEOUT_MS = 600_000;
|
||||||
const MAX_ATTACHMENTS_PER_MESSAGE = 10;
|
const MAX_ATTACHMENTS_PER_MESSAGE = 10;
|
||||||
const MAX_ATTACHMENT_BYTES = 25 * 1024 * 1024;
|
const MAX_ATTACHMENT_BYTES = 25 * 1024 * 1024;
|
||||||
const MAX_THREAD_ATTACHMENT_BYTES = 100 * 1024 * 1024;
|
const MAX_THREAD_ATTACHMENT_BYTES = 100 * 1024 * 1024;
|
||||||
@@ -39,7 +62,7 @@ const ROLLBACK_CONFLICT_MESSAGE = "The resume changed after this action was appl
|
|||||||
const ROLLED_BACK_MESSAGE = "This patch was rolled back when the resume was restored to an earlier state.";
|
const ROLLED_BACK_MESSAGE = "This patch was rolled back when the resume was restored to an earlier state.";
|
||||||
|
|
||||||
const activeRunControllers = new Map<string, AbortController>();
|
const activeRunControllers = new Map<string, AbortController>();
|
||||||
const canceledRunsWithPersistedPartial = new Set<string>();
|
const activeRunTimeouts = new Map<string, ReturnType<typeof setTimeout>>();
|
||||||
|
|
||||||
// Abort reasons MUST be an AbortError: the AI SDK only treats `err.name === "AbortError"`
|
// Abort reasons MUST be an AbortError: the AI SDK only treats `err.name === "AbortError"`
|
||||||
// (via isAbortError) as a cancellation. A bare-string reason is treated as a genuine stream
|
// (via isAbortError) as a cancellation. A bare-string reason is treated as a genuine stream
|
||||||
@@ -88,6 +111,7 @@ function toThreadSummary(row: AgentThreadRecord & { resumeName?: string | null;
|
|||||||
id: row.id,
|
id: row.id,
|
||||||
title: row.title,
|
title: row.title,
|
||||||
status: row.status,
|
status: row.status,
|
||||||
|
reviewPatches: row.reviewPatches,
|
||||||
sourceResumeId: row.sourceResumeId,
|
sourceResumeId: row.sourceResumeId,
|
||||||
workingResumeId: row.workingResumeId,
|
workingResumeId: row.workingResumeId,
|
||||||
aiProviderId: row.aiProviderId,
|
aiProviderId: row.aiProviderId,
|
||||||
@@ -193,63 +217,6 @@ type AgentToolPart = UIMessage["parts"][number] & {
|
|||||||
toolCallId?: string;
|
toolCallId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type AnsweredAskUserQuestionPart = AgentToolPart & {
|
|
||||||
toolCallId: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
function isAnsweredAskUserQuestionPart(part: UIMessage["parts"][number]): part is AnsweredAskUserQuestionPart {
|
|
||||||
const toolPart = part as AgentToolPart;
|
|
||||||
return (
|
|
||||||
toolPart.type === "tool-ask_user_question" &&
|
|
||||||
typeof toolPart.toolCallId === "string" &&
|
|
||||||
(toolPart.state === "output-available" || toolPart.state === "output-error")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function mergeAskUserQuestionOutputs(existingMessage: UIMessage, incomingMessage: UIMessage): UIMessage {
|
|
||||||
const answeredParts = new Map<string, AgentToolPart>();
|
|
||||||
|
|
||||||
for (const part of incomingMessage.parts) {
|
|
||||||
if (isAnsweredAskUserQuestionPart(part)) answeredParts.set(part.toolCallId, part);
|
|
||||||
}
|
|
||||||
|
|
||||||
let didMerge = false;
|
|
||||||
const parts = existingMessage.parts.map((part) => {
|
|
||||||
const existingPart = part as AgentToolPart;
|
|
||||||
if (
|
|
||||||
existingPart.type !== "tool-ask_user_question" ||
|
|
||||||
typeof existingPart.toolCallId !== "string" ||
|
|
||||||
existingPart.state !== "input-available"
|
|
||||||
) {
|
|
||||||
return part;
|
|
||||||
}
|
|
||||||
|
|
||||||
const answeredPart = answeredParts.get(existingPart.toolCallId);
|
|
||||||
if (!answeredPart) return part;
|
|
||||||
|
|
||||||
didMerge = true;
|
|
||||||
if (answeredPart.state === "output-error") {
|
|
||||||
return {
|
|
||||||
...part,
|
|
||||||
state: "output-error",
|
|
||||||
errorText: answeredPart.errorText ?? "User answer failed.",
|
|
||||||
} as UIMessage["parts"][number];
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
...part,
|
|
||||||
state: "output-available",
|
|
||||||
output: answeredPart.output,
|
|
||||||
} as UIMessage["parts"][number];
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!didMerge) {
|
|
||||||
throw new ORPCError("BAD_REQUEST", { message: "No matching unanswered user question was found." });
|
|
||||||
}
|
|
||||||
|
|
||||||
return { ...existingMessage, parts };
|
|
||||||
}
|
|
||||||
|
|
||||||
function getFirstUnansweredAskUserQuestionToolCallId(message: UIMessage) {
|
function getFirstUnansweredAskUserQuestionToolCallId(message: UIMessage) {
|
||||||
const part = message.parts.find((part) => {
|
const part = message.parts.find((part) => {
|
||||||
const toolPart = part as AgentToolPart;
|
const toolPart = part as AgentToolPart;
|
||||||
@@ -264,7 +231,7 @@ function getFirstUnansweredAskUserQuestionToolCallId(message: UIMessage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function answerAskUserQuestionToolCall(message: UIMessage, toolCallId: string, answer: string) {
|
function answerAskUserQuestionToolCall(message: UIMessage, toolCallId: string, answer: string) {
|
||||||
return mergeAskUserQuestionOutputs(message, {
|
const { message: merged } = mergeClientToolResponses(message, {
|
||||||
...message,
|
...message,
|
||||||
parts: [
|
parts: [
|
||||||
{
|
{
|
||||||
@@ -276,6 +243,8 @@ function answerAskUserQuestionToolCall(message: UIMessage, toolCallId: string, a
|
|||||||
} as UIMessage["parts"][number],
|
} as UIMessage["parts"][number],
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
function attachmentLabel(attachment: AgentAttachmentRecord) {
|
function attachmentLabel(attachment: AgentAttachmentRecord) {
|
||||||
@@ -534,7 +503,25 @@ async function updateAssistantToolResultMessage(input: { userId: string; threadI
|
|||||||
throw new ORPCError("BAD_REQUEST", { message: "The answered assistant message was not found." });
|
throw new ORPCError("BAD_REQUEST", { message: "The answered assistant message was not found." });
|
||||||
}
|
}
|
||||||
|
|
||||||
const mergedMessage = mergeAskUserQuestionOutputs(toMessage(existingRow), input.message);
|
const {
|
||||||
|
message: mergedMessage,
|
||||||
|
mergedCount,
|
||||||
|
alreadyResolvedCount,
|
||||||
|
pendingContinuationCount,
|
||||||
|
conflictingCount,
|
||||||
|
} = mergeClientToolResponses(toMessage(existingRow), input.message);
|
||||||
|
|
||||||
|
if (conflictingCount > 0) {
|
||||||
|
throw new ORPCError("BAD_REQUEST", { message: "This approval was already answered with a different decision." });
|
||||||
|
}
|
||||||
|
// A recorded-but-unexecuted approval (pendingContinuationCount) proceeds: a prior continuation
|
||||||
|
// attempt failed after persisting the decision, and this retry is the recovery path.
|
||||||
|
if (mergedCount === 0 && pendingContinuationCount === 0) {
|
||||||
|
if (alreadyResolvedCount > 0) {
|
||||||
|
throw new ORPCError("CONFLICT", { message: "This response was already handled." });
|
||||||
|
}
|
||||||
|
throw new ORPCError("BAD_REQUEST", { message: "No matching unanswered user question was found." });
|
||||||
|
}
|
||||||
|
|
||||||
await db
|
await db
|
||||||
.update(schema.agentMessage)
|
.update(schema.agentMessage)
|
||||||
@@ -555,7 +542,7 @@ async function updateAssistantToolResultMessage(input: { userId: string; threadI
|
|||||||
.set({ lastMessageAt: new Date() })
|
.set({ lastMessageAt: new Date() })
|
||||||
.where(and(eq(schema.agentThread.id, input.threadId), eq(schema.agentThread.userId, input.userId)));
|
.where(and(eq(schema.agentThread.id, input.threadId), eq(schema.agentThread.userId, input.userId)));
|
||||||
|
|
||||||
return mergedMessage;
|
return { message: mergedMessage, rowId: existingRow.id };
|
||||||
}
|
}
|
||||||
|
|
||||||
async function repairLegacyAskUserQuestionAnswers(
|
async function repairLegacyAskUserQuestionAnswers(
|
||||||
@@ -610,9 +597,16 @@ async function cleanupActiveRun(input: {
|
|||||||
runId: string;
|
runId: string;
|
||||||
streamId: string;
|
streamId: string;
|
||||||
primaryError?: unknown;
|
primaryError?: unknown;
|
||||||
|
// When final persistence failed, keep the run claim: the reaper only examines threads with an
|
||||||
|
// active claim, so releasing it here would orphan the "streaming" draft forever. The TTL reap
|
||||||
|
// heals the claim and the draft together.
|
||||||
|
preserveClaimForReaper?: boolean;
|
||||||
}) {
|
}) {
|
||||||
activeRunControllers.delete(input.runId);
|
activeRunControllers.delete(input.runId);
|
||||||
canceledRunsWithPersistedPartial.delete(input.runId);
|
clearTimeout(activeRunTimeouts.get(input.runId));
|
||||||
|
activeRunTimeouts.delete(input.runId);
|
||||||
|
|
||||||
|
if (input.preserveClaimForReaper) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await clearActiveAgentRunIfCurrent(input);
|
await clearActiveAgentRunIfCurrent(input);
|
||||||
@@ -680,7 +674,7 @@ async function readAttachment(input: { id: string; threadId: string; userId: str
|
|||||||
filename: attachment.filename,
|
filename: attachment.filename,
|
||||||
mediaType: attachment.mediaType,
|
mediaType: attachment.mediaType,
|
||||||
size: attachment.size,
|
size: attachment.size,
|
||||||
content: new TextDecoder().decode(stored.data).slice(0, 40_000),
|
content: new TextDecoder().decode(stored.data).slice(0, MAX_ATTACHMENT_TEXT_CHARS),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -688,19 +682,43 @@ async function applyResumePatch(input: {
|
|||||||
userId: string;
|
userId: string;
|
||||||
threadId: string;
|
threadId: string;
|
||||||
resumeId: string;
|
resumeId: string;
|
||||||
|
messageId?: string;
|
||||||
title: string;
|
title: string;
|
||||||
summary?: string;
|
summary?: string;
|
||||||
|
baseUpdatedAt?: string;
|
||||||
operations: JsonPatchOperation[];
|
operations: JsonPatchOperation[];
|
||||||
}) {
|
}) {
|
||||||
const before = await resumeService.getById({ id: input.resumeId, userId: input.userId });
|
const before = await resumeService.getById({ id: input.resumeId, userId: input.userId });
|
||||||
|
|
||||||
|
// Bind the patch to the revision the model actually read (and, under review, the revision the
|
||||||
|
// user approved): index-based operations built against an older document could otherwise
|
||||||
|
// silently target different items after a concurrent edit. baseUpdatedAt travels inside the
|
||||||
|
// signed tool input, so an approval cannot be replayed against a changed resume either.
|
||||||
|
if (input.baseUpdatedAt) {
|
||||||
|
const baseTime = new Date(input.baseUpdatedAt).getTime();
|
||||||
|
// An unparseable value must fail loudly rather than silently skip the revision check.
|
||||||
|
if (Number.isNaN(baseTime)) {
|
||||||
|
throw new Error(
|
||||||
|
`baseUpdatedAt is not a valid timestamp. Pass the updatedAt from the read_resume or apply_resume_patch result verbatim (currently ${before.updatedAt.toISOString()}).`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (baseTime !== before.updatedAt.getTime()) {
|
||||||
|
throw new Error(
|
||||||
|
`The resume changed after it was read (its updatedAt is now ${before.updatedAt.toISOString()}). Re-read the resume and rebuild the patch against the current document.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const snapshotData = cloneResumeData(before.data);
|
const snapshotData = cloneResumeData(before.data);
|
||||||
const operations = normalizeAgentResumePatchOperations(before.data, input.operations);
|
const operations = normalizeAgentResumePatchOperations(before.data, input.operations);
|
||||||
|
|
||||||
const { action, patched } = await db.transaction(async (tx) => {
|
const { action, patched } = await db
|
||||||
|
.transaction(async (tx) => {
|
||||||
const patched = await resumeService.patchInTransaction(tx, {
|
const patched = await resumeService.patchInTransaction(tx, {
|
||||||
id: input.resumeId,
|
id: input.resumeId,
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
operations,
|
operations,
|
||||||
|
expectedUpdatedAt: before.updatedAt,
|
||||||
});
|
});
|
||||||
|
|
||||||
const [action] = await tx
|
const [action] = await tx
|
||||||
@@ -709,6 +727,7 @@ async function applyResumePatch(input: {
|
|||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
resumeId: input.resumeId,
|
resumeId: input.resumeId,
|
||||||
|
...(input.messageId ? { messageId: input.messageId } : {}),
|
||||||
kind: "resume_patch",
|
kind: "resume_patch",
|
||||||
status: "applied",
|
status: "applied",
|
||||||
title: input.title,
|
title: input.title,
|
||||||
@@ -723,6 +742,13 @@ async function applyResumePatch(input: {
|
|||||||
if (!action) throw new Error("AGENT_ACTION_CREATE_FAILED");
|
if (!action) throw new Error("AGENT_ACTION_CREATE_FAILED");
|
||||||
|
|
||||||
return { action, patched };
|
return { action, patched };
|
||||||
|
})
|
||||||
|
.catch((error: unknown) => {
|
||||||
|
// Surface the version conflict as a recoverable tool error, not a run-fatal ORPCError.
|
||||||
|
if (error instanceof ORPCError && error.code === "RESUME_VERSION_CONFLICT") {
|
||||||
|
throw new Error("The resume changed while this edit was being prepared. Re-read the resume and retry.");
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
});
|
});
|
||||||
|
|
||||||
await resumeService.notifyResumePatched({
|
await resumeService.notifyResumePatched({
|
||||||
@@ -738,6 +764,10 @@ async function applyResumePatch(input: {
|
|||||||
summary: action.summary,
|
summary: action.summary,
|
||||||
operations: action.operations,
|
operations: action.operations,
|
||||||
appliedUpdatedAt: action.appliedUpdatedAt.toISOString(),
|
appliedUpdatedAt: action.appliedUpdatedAt.toISOString(),
|
||||||
|
changedPaths: [...new Set(operations.flatMap((op) => ("from" in op ? [op.path, op.from] : [op.path])))],
|
||||||
|
// Full post-patch document: array indexes may have shifted, so the model must base
|
||||||
|
// further patches on this instead of an earlier read_resume snapshot.
|
||||||
|
resume: patched.data,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -745,6 +775,8 @@ function createAgent(input: {
|
|||||||
userId: string;
|
userId: string;
|
||||||
threadId: string;
|
threadId: string;
|
||||||
resumeId: string;
|
resumeId: string;
|
||||||
|
draftRowId?: string;
|
||||||
|
requirePatchApproval?: boolean;
|
||||||
provider: {
|
provider: {
|
||||||
provider: Parameters<typeof getModel>[0]["provider"];
|
provider: Parameters<typeof getModel>[0]["provider"];
|
||||||
model: string;
|
model: string;
|
||||||
@@ -753,10 +785,35 @@ function createAgent(input: {
|
|||||||
};
|
};
|
||||||
model: ReturnType<typeof getModel>;
|
model: ReturnType<typeof getModel>;
|
||||||
}) {
|
}) {
|
||||||
|
// One greppable JSON line per tool execution.
|
||||||
|
const timedToolHandler =
|
||||||
|
<A extends unknown[], R>(toolName: string, run: (...args: A) => Promise<R>) =>
|
||||||
|
async (...args: A): Promise<R> => {
|
||||||
|
const startedAt = Date.now();
|
||||||
|
let ok = true;
|
||||||
|
try {
|
||||||
|
return await run(...args);
|
||||||
|
} catch (error) {
|
||||||
|
ok = false;
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
console.info(
|
||||||
|
JSON.stringify({
|
||||||
|
evt: "agent.tool",
|
||||||
|
threadId: input.threadId,
|
||||||
|
tool: toolName,
|
||||||
|
ok,
|
||||||
|
durationMs: Date.now() - startedAt,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const tools = buildAgentTools({
|
const tools = buildAgentTools({
|
||||||
provider: input.provider,
|
provider: input.provider,
|
||||||
|
options: { requirePatchApproval: !!input.requirePatchApproval },
|
||||||
handlers: {
|
handlers: {
|
||||||
readResume: async () => {
|
readResume: timedToolHandler("read_resume", async () => {
|
||||||
const resume = await resumeService.getById({ id: input.resumeId, userId: input.userId });
|
const resume = await resumeService.getById({ id: input.resumeId, userId: input.userId });
|
||||||
return {
|
return {
|
||||||
id: resume.id,
|
id: resume.id,
|
||||||
@@ -777,25 +834,56 @@ function createAgent(input: {
|
|||||||
],
|
],
|
||||||
data: resume.data,
|
data: resume.data,
|
||||||
};
|
};
|
||||||
},
|
}),
|
||||||
readAttachment: (attachmentId) =>
|
readAttachment: timedToolHandler("read_attachment", (attachmentId: string) =>
|
||||||
readAttachment({ id: attachmentId, threadId: input.threadId, userId: input.userId }),
|
readAttachment({ id: attachmentId, threadId: input.threadId, userId: input.userId }),
|
||||||
applyResumePatch: ({ title, summary, operations }) =>
|
),
|
||||||
|
applyResumePatch: timedToolHandler(
|
||||||
|
"apply_resume_patch",
|
||||||
|
({ title, summary, baseUpdatedAt, operations }: ApplyResumePatchInput) =>
|
||||||
applyResumePatch({
|
applyResumePatch({
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
resumeId: input.resumeId,
|
resumeId: input.resumeId,
|
||||||
|
...(input.draftRowId ? { messageId: input.draftRowId } : {}),
|
||||||
title,
|
title,
|
||||||
...(summary !== undefined ? { summary } : {}),
|
...(summary !== undefined ? { summary } : {}),
|
||||||
|
...(baseUpdatedAt !== undefined ? { baseUpdatedAt } : {}),
|
||||||
operations,
|
operations,
|
||||||
}),
|
}),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const instructionsText = buildAgentInstructions({ hasProviderNativeSearch: "web_search" in tools });
|
||||||
|
|
||||||
return new ToolLoopAgent({
|
return new ToolLoopAgent({
|
||||||
model: input.model,
|
// Providers without native inputExamples support get them appended to the tool description.
|
||||||
instructions: buildAgentInstructions({ hasProviderNativeSearch: "web_search" in tools }),
|
model: wrapLanguageModel({ model: input.model, middleware: addToolInputExamplesMiddleware() }),
|
||||||
stopWhen: stepCountIs(MAX_AGENT_STEPS),
|
// The loop re-sends stable instructions every step; on anthropic, prompt caching pays from step 2.
|
||||||
|
instructions:
|
||||||
|
input.provider.provider === "anthropic"
|
||||||
|
? {
|
||||||
|
role: "system",
|
||||||
|
content: instructionsText,
|
||||||
|
providerOptions: { anthropic: { cacheControl: { type: "ephemeral" } } },
|
||||||
|
}
|
||||||
|
: instructionsText,
|
||||||
|
repairToolCall: repairAgentToolCall,
|
||||||
|
stopWhen: isStepCount(MAX_AGENT_STEPS),
|
||||||
|
maxOutputTokens: MAX_AGENT_OUTPUT_TOKENS,
|
||||||
|
maxRetries: MAX_AGENT_MODEL_RETRIES,
|
||||||
|
timeout: { stepMs: AGENT_STEP_TIMEOUT_MS },
|
||||||
|
// HMAC-signs approval requests at issuance and verifies them when replayed on the
|
||||||
|
// continuation run, so a client cannot forge or alter an approval payload. The agent
|
||||||
|
// runtime forwards constructor settings to streamText verbatim; ToolLoopAgentSettings
|
||||||
|
// does not type this key yet, hence the spread-cast.
|
||||||
|
...({ experimental_toolApprovalSecret: getAgentToolApprovalSecret() } as object),
|
||||||
|
// Runs before every loop step, so intra-run growth (N patches → N snapshots) is pruned too.
|
||||||
|
prepareStep: ({ messages }) => {
|
||||||
|
const pruned = pruneAgentModelContext(messages);
|
||||||
|
return pruned === messages ? {} : { messages: pruned };
|
||||||
|
},
|
||||||
tools,
|
tools,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -808,6 +896,7 @@ const threadSummarySelection = {
|
|||||||
workingResumeId: schema.agentThread.workingResumeId,
|
workingResumeId: schema.agentThread.workingResumeId,
|
||||||
title: schema.agentThread.title,
|
title: schema.agentThread.title,
|
||||||
status: schema.agentThread.status,
|
status: schema.agentThread.status,
|
||||||
|
reviewPatches: schema.agentThread.reviewPatches,
|
||||||
activeRunId: schema.agentThread.activeRunId,
|
activeRunId: schema.agentThread.activeRunId,
|
||||||
activeStreamId: schema.agentThread.activeStreamId,
|
activeStreamId: schema.agentThread.activeStreamId,
|
||||||
activeRunStartedAt: schema.agentThread.activeRunStartedAt,
|
activeRunStartedAt: schema.agentThread.activeRunStartedAt,
|
||||||
@@ -931,6 +1020,21 @@ export const agentService = {
|
|||||||
assertAgentEnvironment();
|
assertAgentEnvironment();
|
||||||
|
|
||||||
const thread = await getThread(input);
|
const thread = await getThread(input);
|
||||||
|
|
||||||
|
// Heal on open: clear a dead run's claim before reading messages so the client neither
|
||||||
|
// resumes a dead stream nor renders a perpetually "streaming" draft.
|
||||||
|
if (thread.activeRunId && isStaleAgentRun(thread)) {
|
||||||
|
await reapStaleAgentRun({
|
||||||
|
threadId: input.id,
|
||||||
|
userId: input.userId,
|
||||||
|
runId: thread.activeRunId,
|
||||||
|
streamId: thread.activeStreamId,
|
||||||
|
});
|
||||||
|
thread.activeRunId = null;
|
||||||
|
thread.activeStreamId = null;
|
||||||
|
thread.activeRunStartedAt = null;
|
||||||
|
}
|
||||||
|
|
||||||
const [messages, actions, attachments, resume] = await Promise.all([
|
const [messages, actions, attachments, resume] = await Promise.all([
|
||||||
listThreadMessages({ threadId: input.id, userId: input.userId }),
|
listThreadMessages({ threadId: input.id, userId: input.userId }),
|
||||||
db
|
db
|
||||||
@@ -963,6 +1067,27 @@ export const agentService = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
update: async (input: { id: string; userId: string; reviewPatches: boolean }) => {
|
||||||
|
assertAgentEnvironment();
|
||||||
|
|
||||||
|
const thread = await getThread({ id: input.id, userId: input.userId });
|
||||||
|
// Approval behavior is captured when a run's agent is created; toggling mid-run would
|
||||||
|
// show "review on" while later patches from the same run still auto-apply.
|
||||||
|
if (thread.activeRunId && !isStaleAgentRun(thread)) {
|
||||||
|
throw new ORPCError("CONFLICT", { message: "Review settings cannot change while a run is active." });
|
||||||
|
}
|
||||||
|
|
||||||
|
const [updated] = await db
|
||||||
|
.update(schema.agentThread)
|
||||||
|
.set({ reviewPatches: input.reviewPatches })
|
||||||
|
.where(and(eq(schema.agentThread.id, input.id), eq(schema.agentThread.userId, input.userId)))
|
||||||
|
.returning();
|
||||||
|
|
||||||
|
if (!updated) throw new ORPCError("NOT_FOUND");
|
||||||
|
|
||||||
|
return toThreadSummary(updated);
|
||||||
|
},
|
||||||
|
|
||||||
archive: async (input: { id: string; userId: string }) => {
|
archive: async (input: { id: string; userId: string }) => {
|
||||||
assertAgentEnvironment();
|
assertAgentEnvironment();
|
||||||
|
|
||||||
@@ -1025,8 +1150,17 @@ export const agentService = {
|
|||||||
throw new ORPCError("CONFLICT", { message: "This thread is archived." });
|
throw new ORPCError("CONFLICT", { message: "This thread is archived." });
|
||||||
}
|
}
|
||||||
if (thread.activeRunId) {
|
if (thread.activeRunId) {
|
||||||
|
if (!isStaleAgentRun(thread)) {
|
||||||
throw new ORPCError("CONFLICT", { message: "This thread already has an active run." });
|
throw new ORPCError("CONFLICT", { message: "This thread already has an active run." });
|
||||||
}
|
}
|
||||||
|
// Lazy reap: a dead run's claim heals on the next send instead of CONFLICTing forever.
|
||||||
|
await reapStaleAgentRun({
|
||||||
|
threadId: input.threadId,
|
||||||
|
userId: input.userId,
|
||||||
|
runId: thread.activeRunId,
|
||||||
|
streamId: thread.activeStreamId,
|
||||||
|
});
|
||||||
|
}
|
||||||
if (!thread.workingResumeId || !thread.aiProviderId) {
|
if (!thread.workingResumeId || !thread.aiProviderId) {
|
||||||
throw new ORPCError("BAD_REQUEST", { message: "This thread is read-only." });
|
throw new ORPCError("BAD_REQUEST", { message: "This thread is read-only." });
|
||||||
}
|
}
|
||||||
@@ -1034,6 +1168,12 @@ export const agentService = {
|
|||||||
throw new ORPCError("BAD_REQUEST", { message: "Agent messages must be user messages or tool results." });
|
throw new ORPCError("BAD_REQUEST", { message: "Agent messages must be user messages or tool results." });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deliberately schema-less: provider-echoed tool parts must pass, and replayed history is never re-validated.
|
||||||
|
const validated = await safeValidateUIMessages({ messages: [input.message] });
|
||||||
|
if (!validated.success) {
|
||||||
|
throw new ORPCError("BAD_REQUEST", { message: "Invalid UI message parts." });
|
||||||
|
}
|
||||||
|
|
||||||
const [runnableProvider, attachments] = await Promise.all([
|
const [runnableProvider, attachments] = await Promise.all([
|
||||||
aiProvidersService.getRunnableById({
|
aiProvidersService.getRunnableById({
|
||||||
id: thread.aiProviderId,
|
id: thread.aiProviderId,
|
||||||
@@ -1056,6 +1196,19 @@ export const agentService = {
|
|||||||
throw new ORPCError("CONFLICT", { message: "This thread already has an active run." });
|
throw new ORPCError("CONFLICT", { message: "This thread already has an active run." });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Whole-run wall clock. Must abort with an AbortError (see abortReason) — never AbortSignal.timeout().
|
||||||
|
activeRunTimeouts.set(
|
||||||
|
runId,
|
||||||
|
setTimeout(() => controller.abort(abortReason("RUN_TIMEOUT")), AGENT_RUN_TIMEOUT_MS),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Row + message the run streams into. A continuation reuses the existing assistant
|
||||||
|
// row (same uiMessage id); a fresh turn inserts a "streaming" draft row below.
|
||||||
|
let draftRowId: string | undefined;
|
||||||
|
let insertedDraft = false;
|
||||||
|
const responseMessageId = generateId();
|
||||||
|
let draftUiMessage: UIMessage = { id: responseMessageId, role: "assistant", parts: [] };
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let attachmentsForModel: AgentAttachmentRecord[] = [];
|
let attachmentsForModel: AgentAttachmentRecord[] = [];
|
||||||
|
|
||||||
@@ -1064,11 +1217,17 @@ export const agentService = {
|
|||||||
throw new ORPCError("BAD_REQUEST", { message: "Tool result messages cannot include attachments." });
|
throw new ORPCError("BAD_REQUEST", { message: "Tool result messages cannot include attachments." });
|
||||||
}
|
}
|
||||||
|
|
||||||
await updateAssistantToolResultMessage({
|
// Merge AFTER the exclusive claim: concurrent approve/deny requests serialize on
|
||||||
|
// the claim instead of both persisting, and a merge that is rejected (or any later
|
||||||
|
// setup failure) releases the claim via the catch below. A response persisted by a
|
||||||
|
// failed earlier attempt re-enters as pendingContinuation and still gets its run.
|
||||||
|
const continuation = await updateAssistantToolResultMessage({
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
message: input.message,
|
message: input.message,
|
||||||
});
|
});
|
||||||
|
draftRowId = continuation.rowId;
|
||||||
|
draftUiMessage = continuation.message;
|
||||||
} else {
|
} else {
|
||||||
attachmentsForModel = attachments;
|
attachmentsForModel = attachments;
|
||||||
const sequence = await getNextMessageSequence(input.threadId);
|
const sequence = await getNextMessageSequence(input.threadId);
|
||||||
@@ -1109,10 +1268,25 @@ export const agentService = {
|
|||||||
const messages = messageRows.map(toMessage);
|
const messages = messageRows.map(toMessage);
|
||||||
const modelMessages = await convertToModelMessages(messages.map(toModelInputMessage));
|
const modelMessages = await convertToModelMessages(messages.map(toModelInputMessage));
|
||||||
const attachmentModelParts = buildAttachmentModelParts(await readAttachmentModelInputs(attachmentsForModel));
|
const attachmentModelParts = buildAttachmentModelParts(await readAttachmentModelInputs(attachmentsForModel));
|
||||||
|
|
||||||
|
// Draft row inserted after the replay snapshot (so it is not replayed) and before the
|
||||||
|
// stream starts, so a crash mid-run leaves a resumable record instead of nothing.
|
||||||
|
if (input.message.role === "user") {
|
||||||
|
const draft = await insertDraftAssistantMessage({
|
||||||
|
userId: input.userId,
|
||||||
|
threadId: input.threadId,
|
||||||
|
uiMessageId: responseMessageId,
|
||||||
|
});
|
||||||
|
draftRowId = draft.rowId;
|
||||||
|
insertedDraft = true;
|
||||||
|
}
|
||||||
|
|
||||||
const agent = createAgent({
|
const agent = createAgent({
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
resumeId: thread.workingResumeId,
|
resumeId: thread.workingResumeId,
|
||||||
|
...(draftRowId ? { draftRowId } : {}),
|
||||||
|
requirePatchApproval: thread.reviewPatches,
|
||||||
provider: {
|
provider: {
|
||||||
provider: runnableProvider.provider,
|
provider: runnableProvider.provider,
|
||||||
model: runnableProvider.model,
|
model: runnableProvider.model,
|
||||||
@@ -1130,25 +1304,58 @@ export const agentService = {
|
|||||||
const result = await agent.stream({
|
const result = await agent.stream({
|
||||||
messages: attachModelPartsToLatestUserMessage(modelMessages, attachmentModelParts),
|
messages: attachModelPartsToLatestUserMessage(modelMessages, attachmentModelParts),
|
||||||
abortSignal: controller.signal,
|
abortSignal: controller.signal,
|
||||||
|
experimental_transform: smoothStream({ chunking: "word" }),
|
||||||
|
// Crash-safety: fold each finished step into the draft row so a process death
|
||||||
|
// mid-run loses at most the current step, never the whole transcript.
|
||||||
|
onStepEnd: async (step) => {
|
||||||
|
console.info(
|
||||||
|
JSON.stringify({
|
||||||
|
evt: "agent.step",
|
||||||
|
threadId: input.threadId,
|
||||||
|
runId,
|
||||||
|
step: step.stepNumber,
|
||||||
|
toolNames: step.toolCalls.map((call) => call.toolName),
|
||||||
|
usage: step.usage,
|
||||||
|
finishReason: step.finishReason,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
draftUiMessage = applyStepToUiMessage(draftUiMessage, step);
|
||||||
|
const upserted = await upsertAssistantUiMessage({
|
||||||
|
userId: input.userId,
|
||||||
|
threadId: input.threadId,
|
||||||
|
...(draftRowId ? { rowId: draftRowId } : {}),
|
||||||
|
message: draftUiMessage,
|
||||||
|
status: "streaming",
|
||||||
|
});
|
||||||
|
draftRowId = upserted.rowId;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("[agent] Failed to persist step draft", error);
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return streamToEventIterator(
|
return streamToEventIterator(
|
||||||
await agentStreamLifecycle.create(streamId, () =>
|
await agentStreamLifecycle.create(streamId, () =>
|
||||||
result.toUIMessageStream({
|
result.toUIMessageStream({
|
||||||
originalMessages: messages,
|
originalMessages: messages,
|
||||||
generateMessageId: generateId,
|
generateMessageId: () => responseMessageId,
|
||||||
sendSources: true,
|
sendSources: true,
|
||||||
|
// Round-trips inside the persisted uiMessage jsonb — no migration needed.
|
||||||
|
messageMetadata: ({ part }) =>
|
||||||
|
part.type === "finish" ? { usage: part.totalUsage, model: runnableProvider.model } : undefined,
|
||||||
onFinish: async ({ responseMessage, isAborted }) => {
|
onFinish: async ({ responseMessage, isAborted }) => {
|
||||||
let persistError: unknown;
|
let persistError: unknown;
|
||||||
try {
|
try {
|
||||||
if (!(isAborted && canceledRunsWithPersistedPartial.has(runId))) {
|
await upsertAssistantUiMessage({
|
||||||
await persistMessage({
|
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
message: responseMessage,
|
...(draftRowId ? { rowId: draftRowId } : {}),
|
||||||
|
// A continuation reuses the message; the SDK replaces primitive
|
||||||
|
// metadata, so prior-run usage must be summed back in.
|
||||||
|
message: withAccumulatedUsageMetadata(draftUiMessage, responseMessage),
|
||||||
status: isAborted ? "canceled" : "completed",
|
status: isAborted ? "canceled" : "completed",
|
||||||
});
|
});
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
persistError = error;
|
persistError = error;
|
||||||
throw error;
|
throw error;
|
||||||
@@ -1159,6 +1366,7 @@ export const agentService = {
|
|||||||
runId,
|
runId,
|
||||||
streamId,
|
streamId,
|
||||||
primaryError: persistError,
|
primaryError: persistError,
|
||||||
|
preserveClaimForReaper: !!persistError,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1167,6 +1375,11 @@ export const agentService = {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (insertedDraft && draftRowId) {
|
||||||
|
await deleteDraftIfEmpty({ rowId: draftRowId, threadId: input.threadId, userId: input.userId }).catch(
|
||||||
|
(cleanupError: unknown) => console.error("[agent] Failed to delete empty draft", cleanupError),
|
||||||
|
);
|
||||||
|
}
|
||||||
await cleanupActiveRun({
|
await cleanupActiveRun({
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
@@ -1178,47 +1391,34 @@ export const agentService = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
stop: async (input: { userId: string; threadId: string; partialMessage?: UIMessage }) => {
|
// Server-authored cancellation: the abort makes onFinish({isAborted: true}) persist exactly
|
||||||
|
// what the server generated. The deprecated client `partialMessage` is ignored.
|
||||||
|
stop: async (input: { userId: string; threadId: string }) => {
|
||||||
assertAgentEnvironment();
|
assertAgentEnvironment();
|
||||||
|
|
||||||
const thread = await getThread({ id: input.threadId, userId: input.userId });
|
const thread = await getThread({ id: input.threadId, userId: input.userId });
|
||||||
const activeRunId = thread.activeRunId;
|
const activeRunId = thread.activeRunId;
|
||||||
const activeStreamId = thread.activeStreamId;
|
const activeStreamId = thread.activeStreamId;
|
||||||
|
if (!activeRunId) return;
|
||||||
|
|
||||||
let persistError: unknown;
|
const controller = activeRunControllers.get(activeRunId);
|
||||||
let cleanupError: unknown;
|
if (controller) {
|
||||||
try {
|
// This replica owns the run: abort only. The claim stays until onFinish has
|
||||||
if (input.partialMessage) {
|
// persisted the terminal (canceled) state, so no new run can interleave with a
|
||||||
await persistMessage({
|
// still-committing tool or write. onFinish's cleanup releases the claim.
|
||||||
userId: input.userId,
|
controller.abort(abortReason("USER_STOPPED"));
|
||||||
threadId: input.threadId,
|
return;
|
||||||
message: input.partialMessage,
|
|
||||||
status: "canceled",
|
|
||||||
});
|
|
||||||
if (activeRunId) canceledRunsWithPersistedPartial.add(activeRunId);
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
|
||||||
persistError = error;
|
// No local controller (another replica owns the run, or the process restarted):
|
||||||
} finally {
|
// best-effort claim release so the user is not stuck. Cross-replica abort signaling
|
||||||
if (activeRunId) {
|
// is a documented follow-up; the stale-run reaper covers the leftovers.
|
||||||
activeRunControllers.get(activeRunId)?.abort(abortReason("USER_STOPPED"));
|
|
||||||
activeRunControllers.delete(activeRunId);
|
|
||||||
try {
|
|
||||||
await clearActiveAgentRunIfCurrent({
|
await clearActiveAgentRunIfCurrent({
|
||||||
threadId: input.threadId,
|
threadId: input.threadId,
|
||||||
userId: input.userId,
|
userId: input.userId,
|
||||||
runId: activeRunId,
|
runId: activeRunId,
|
||||||
streamId: activeStreamId,
|
streamId: activeStreamId,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
|
||||||
cleanupError = error;
|
|
||||||
if (persistError) console.error("[agent] Failed to clear active run after stop persistence error", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (persistError) throw persistError;
|
|
||||||
if (cleanupError) throw cleanupError;
|
|
||||||
},
|
},
|
||||||
resume: async (input: { userId: string; threadId: string }) => {
|
resume: async (input: { userId: string; threadId: string }) => {
|
||||||
assertAgentEnvironment();
|
assertAgentEnvironment();
|
||||||
|
|||||||
@@ -64,6 +64,24 @@ export const threadsRouter = {
|
|||||||
.use(mapAgentEnvironmentError)
|
.use(mapAgentEnvironmentError)
|
||||||
.handler(({ context, input }) => agentService.threads.get({ id: input.id, userId: context.user.id })),
|
.handler(({ context, input }) => agentService.threads.get({ id: input.id, userId: context.user.id })),
|
||||||
|
|
||||||
|
update: protectedProcedure
|
||||||
|
.route({
|
||||||
|
method: "PATCH",
|
||||||
|
path: "/agent/threads/{id}",
|
||||||
|
tags: ["Agent"],
|
||||||
|
operationId: "updateAgentThread",
|
||||||
|
summary: "Update agent thread settings",
|
||||||
|
})
|
||||||
|
.input(z.object({ id: z.string(), reviewPatches: z.boolean() }))
|
||||||
|
.use(mapAgentEnvironmentError)
|
||||||
|
.handler(({ context, input }) =>
|
||||||
|
agentService.threads.update({
|
||||||
|
id: input.id,
|
||||||
|
userId: context.user.id,
|
||||||
|
reviewPatches: input.reviewPatches,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
|
||||||
archive: protectedProcedure
|
archive: protectedProcedure
|
||||||
.route({
|
.route({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
|||||||
@@ -26,9 +26,15 @@ const handlers = {
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
function buildTools(provider: AIProvider, options?: { model?: string; baseURL?: string }) {
|
function buildTools(
|
||||||
|
provider: AIProvider,
|
||||||
|
options?: { model?: string; baseURL?: string; requirePatchApproval?: boolean },
|
||||||
|
) {
|
||||||
return buildAgentTools({
|
return buildAgentTools({
|
||||||
provider: { provider, model: options?.model ?? "gpt-5-mini", apiKey: "test-key", baseURL: options?.baseURL ?? "" },
|
provider: { provider, model: options?.model ?? "gpt-5-mini", apiKey: "test-key", baseURL: options?.baseURL ?? "" },
|
||||||
|
...(options?.requirePatchApproval !== undefined
|
||||||
|
? { options: { requirePatchApproval: options.requirePatchApproval } }
|
||||||
|
: {}),
|
||||||
handlers,
|
handlers,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -76,6 +82,14 @@ describe("agent tools", () => {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
it("marks apply_resume_patch as needing approval only when review is required", () => {
|
||||||
|
const gated = buildTools("openai-compatible", { requirePatchApproval: true });
|
||||||
|
const open = buildTools("openai-compatible");
|
||||||
|
|
||||||
|
expect(gated.apply_resume_patch).toMatchObject({ needsApproval: true });
|
||||||
|
expect(open.apply_resume_patch?.needsApproval).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
it("keeps instructions explicit about native search availability", () => {
|
it("keeps instructions explicit about native search availability", () => {
|
||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("Use web_search");
|
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("Use web_search");
|
||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("user-provided public URLs");
|
expect(buildAgentInstructions({ hasProviderNativeSearch: true })).toContain("user-provided public URLs");
|
||||||
@@ -92,7 +106,7 @@ describe("agent tools", () => {
|
|||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain(
|
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain(
|
||||||
"/customSections/0/items/0/description",
|
"/customSections/0/items/0/description",
|
||||||
);
|
);
|
||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain("never /data/basics/name or /name");
|
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain("never prefixed with /data");
|
||||||
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain("clean Markdown");
|
expect(buildAgentInstructions({ hasProviderNativeSearch: false })).toContain("clean Markdown");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
|
import type { ApplyResumePatchInput } from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
import type { AIProvider } from "@reactive-resume/ai/types";
|
import type { AIProvider } from "@reactive-resume/ai/types";
|
||||||
import type { ToolSet } from "ai";
|
import type { ToolSet } from "ai";
|
||||||
import { createOpenAI } from "@ai-sdk/openai";
|
import { createOpenAI } from "@ai-sdk/openai";
|
||||||
import { tool } from "ai";
|
import { tool } from "ai";
|
||||||
import z from "zod";
|
import z from "zod";
|
||||||
import { jsonPatchOperationSchema } from "@reactive-resume/resume/patch";
|
import {
|
||||||
|
applyResumePatchInputSchema,
|
||||||
|
askUserQuestionInputSchema,
|
||||||
|
} from "@reactive-resume/ai/tools/agent-tool-contracts";
|
||||||
import { supportsProviderNativeWebSearch } from "../ai/capabilities";
|
import { supportsProviderNativeWebSearch } from "../ai/capabilities";
|
||||||
|
|
||||||
type AgentProviderConfig = {
|
type AgentProviderConfig = {
|
||||||
@@ -13,16 +17,13 @@ type AgentProviderConfig = {
|
|||||||
baseURL?: string | null;
|
baseURL?: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
const applyResumePatchToolInputSchema = z.object({
|
type ApplyResumePatchToolInput = ApplyResumePatchInput;
|
||||||
title: z.string().trim().min(1),
|
|
||||||
summary: z.string().trim().optional(),
|
|
||||||
operations: z.array(jsonPatchOperationSchema).min(1),
|
|
||||||
});
|
|
||||||
|
|
||||||
type ApplyResumePatchToolInput = z.infer<typeof applyResumePatchToolInputSchema>;
|
|
||||||
|
|
||||||
type BuildAgentToolsInput = {
|
type BuildAgentToolsInput = {
|
||||||
provider: AgentProviderConfig;
|
provider: AgentProviderConfig;
|
||||||
|
options?: {
|
||||||
|
requirePatchApproval?: boolean;
|
||||||
|
};
|
||||||
handlers: {
|
handlers: {
|
||||||
readResume: () => Promise<unknown>;
|
readResume: () => Promise<unknown>;
|
||||||
readAttachment: (attachmentId: string) => Promise<unknown>;
|
readAttachment: (attachmentId: string) => Promise<unknown>;
|
||||||
@@ -51,8 +52,10 @@ function buildProviderNativeAgentTools(provider: AgentProviderConfig): ToolSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function buildAgentInstructions({ hasProviderNativeSearch }: { hasProviderNativeSearch: boolean }) {
|
export function buildAgentInstructions({ hasProviderNativeSearch }: { hasProviderNativeSearch: boolean }) {
|
||||||
|
// The JSON-Pointer conventions live in the read_resume result, the tool descriptions, and the
|
||||||
|
// tool input examples; the instructions keep only a compact reminder to save tokens per step.
|
||||||
const baseInstructions =
|
const baseInstructions =
|
||||||
"You are an expert resume-writing agent inside Reactive Resume. Help the user improve the working resume for a target role. Read the resume before editing. Respond to the user in clean Markdown with concise paragraphs, bullets, and bold text when it improves scanability. Apply concise, valid JSON Patch operations when changes are useful. Patch paths are evaluated against the resume data object returned by read_resume, so use paths like /basics/name for the visible name and never /data/basics/name or /name. Built-in sections must use /sections/<sectionId>, for example /sections/experience/items/0/description. Custom sections must use /customSections/<index>, for example /customSections/0/items/0/description, even when their type is experience, education, or another built-in section type. apply_resume_patch cannot rename the resume file/title metadata. Batch related JSON Patch operations into one apply_resume_patch call for each coherent edit instead of making repeated patch calls for the same request. Ask the user a question when a missing preference blocks a high-confidence edit.";
|
"You are an expert resume-writing agent inside Reactive Resume. Help the user improve the working resume for a target role. Read the resume before editing. Respond to the user in clean Markdown with concise paragraphs, bullets, and bold text when it improves scanability. Apply concise, valid JSON Patch operations when changes are useful. Patch paths are rooted at the resume data object returned by read_resume — for example /basics/name, /sections/experience/items/0/description, or /customSections/0/items/0/description — never prefixed with /data. apply_resume_patch cannot rename the resume file/title metadata. Batch related JSON Patch operations into one apply_resume_patch call for each coherent edit instead of making repeated patch calls for the same request. Ask the user a question when a missing preference blocks a high-confidence edit.";
|
||||||
|
|
||||||
if (!hasProviderNativeSearch) {
|
if (!hasProviderNativeSearch) {
|
||||||
return `${baseInstructions} Live web research is unavailable with the selected provider or model. If the user asks you to browse, search the web, fetch a URL, or use current online context, briefly tell them live web research is unavailable with the selected provider/model and ask them to paste or attach the relevant content. Continue normal resume editing using the resume, chat context, and attachments.`;
|
return `${baseInstructions} Live web research is unavailable with the selected provider or model. If the user asks you to browse, search the web, fetch a URL, or use current online context, briefly tell them live web research is unavailable with the selected provider/model and ask them to paste or attach the relevant content. Continue normal resume editing using the resume, chat context, and attachments.`;
|
||||||
@@ -67,11 +70,7 @@ export function buildAgentTools(input: BuildAgentToolsInput): ToolSet {
|
|||||||
ask_user_question: tool({
|
ask_user_question: tool({
|
||||||
description:
|
description:
|
||||||
"Ask the user a short question when you need a preference, missing fact, or choice before continuing. Provide 2-4 recommended answer choices when possible.",
|
"Ask the user a short question when you need a preference, missing fact, or choice before continuing. Provide 2-4 recommended answer choices when possible.",
|
||||||
inputSchema: z.object({
|
inputSchema: askUserQuestionInputSchema,
|
||||||
question: z.string().trim().min(1),
|
|
||||||
choices: z.array(z.string().trim().min(1)).min(1).max(4).optional(),
|
|
||||||
recommendedChoice: z.string().trim().optional(),
|
|
||||||
}),
|
|
||||||
}),
|
}),
|
||||||
read_resume: tool({
|
read_resume: tool({
|
||||||
description: "Read the current working resume JSON and metadata.",
|
description: "Read the current working resume JSON and metadata.",
|
||||||
@@ -86,8 +85,22 @@ export function buildAgentTools(input: BuildAgentToolsInput): ToolSet {
|
|||||||
}),
|
}),
|
||||||
apply_resume_patch: tool({
|
apply_resume_patch: tool({
|
||||||
description:
|
description:
|
||||||
"Apply one cohesive batch of JSON Patch operations to the working resume data immediately. Paths are rooted at resume data; use /basics/name for the visible resume name, not /data/basics/name or /name. This tool cannot rename the resume file/title metadata. The user can restore the draft to the snapshot captured before a patch later.",
|
"Apply one cohesive batch of JSON Patch operations to the working resume data immediately. Paths are rooted at resume data; use /basics/name for the visible resume name, not /data/basics/name or /name. This tool cannot rename the resume file/title metadata. The user can restore the draft to the snapshot captured before a patch later. The result includes the complete post-patch resume; array indexes may have shifted — base further patches on it, never on an earlier read_resume. Always pass baseUpdatedAt: the updatedAt of the read_resume or apply_resume_patch result these operations were built against; the edit is rejected if the resume changed since.",
|
||||||
inputSchema: applyResumePatchToolInputSchema,
|
inputSchema: applyResumePatchInputSchema,
|
||||||
|
inputExamples: [
|
||||||
|
{
|
||||||
|
input: {
|
||||||
|
title: "Tighten the summary",
|
||||||
|
baseUpdatedAt: "2026-08-20T10:15:00.000Z",
|
||||||
|
operations: [
|
||||||
|
{ op: "replace", path: "/sections/summary/content", value: "Impact-driven engineer with 8 years…" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// Static approval gate: when the thread has "Review edits" on, the loop halts with an
|
||||||
|
// approval-requested part instead of executing; the SDK executes after approval.
|
||||||
|
...(input.options?.requirePatchApproval ? { needsApproval: true } : {}),
|
||||||
execute: (toolInput) => input.handlers.applyResumePatch(toolInput),
|
execute: (toolInput) => input.handlers.applyResumePatch(toolInput),
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -84,6 +84,15 @@ export function redactEncryptedCredential(fields: StoredCredentialFields): Redac
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Domain-separated from the AES key. Deterministic derivation (no new env var) means an approval
|
||||||
|
// signature minted when a run halts still verifies at continuation, even across a server restart.
|
||||||
|
export function getAgentToolApprovalSecret() {
|
||||||
|
const secret = getEncryptionSecret();
|
||||||
|
if (!secret) throw new Error("AI_CREDENTIAL_ENCRYPTION_UNAVAILABLE");
|
||||||
|
|
||||||
|
return createHash("sha256").update(`${secret}:agent-tool-approval`).digest("hex");
|
||||||
|
}
|
||||||
|
|
||||||
function isCredentialEncryptionConfigured() {
|
function isCredentialEncryptionConfigured() {
|
||||||
return !!getEncryptionSecret();
|
return !!getEncryptionSecret();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,8 @@ function stubRejectedFetch(error: unknown) {
|
|||||||
return fetchMock;
|
return fetchMock;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { analyzeResume, testConnection } = await import("./service");
|
const { aiService, testConnection } = await import("./service");
|
||||||
|
const { analyzeResume } = aiService;
|
||||||
|
|
||||||
describe("AI provider connection test", () => {
|
describe("AI provider connection test", () => {
|
||||||
it("names the rejected key instead of reporting a transport failure", async () => {
|
it("names the rejected key instead of reporting a transport failure", async () => {
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ export const agentThread = pg.pgTable(
|
|||||||
workingResumeId: pg.text("working_resume_id").references(() => resume.id, { onDelete: "set null" }),
|
workingResumeId: pg.text("working_resume_id").references(() => resume.id, { onDelete: "set null" }),
|
||||||
title: pg.text("title").notNull(),
|
title: pg.text("title").notNull(),
|
||||||
status: pg.text("status").notNull().default("active"),
|
status: pg.text("status").notNull().default("active"),
|
||||||
|
// Per-thread "Review edits" toggle: when true, apply_resume_patch requires user approval.
|
||||||
|
reviewPatches: pg.boolean("review_patches").notNull().default(false),
|
||||||
activeRunId: pg.text("active_run_id"),
|
activeRunId: pg.text("active_run_id"),
|
||||||
activeStreamId: pg.text("active_stream_id"),
|
activeStreamId: pg.text("active_stream_id"),
|
||||||
activeRunStartedAt: pg.timestamp("active_run_started_at", { withTimezone: true }),
|
activeRunStartedAt: pg.timestamp("active_run_started_at", { withTimezone: true }),
|
||||||
|
|||||||
Generated
+39
@@ -267,6 +267,9 @@ importers:
|
|||||||
sharp:
|
sharp:
|
||||||
specifier: ^0.35.3
|
specifier: ^0.35.3
|
||||||
version: 0.35.3(@types/node@26.2.0)
|
version: 0.35.3(@types/node@26.2.0)
|
||||||
|
tokenx:
|
||||||
|
specifier: ^2.1.0
|
||||||
|
version: 2.1.0
|
||||||
ts-pattern:
|
ts-pattern:
|
||||||
specifier: ^5.9.0
|
specifier: ^5.9.0
|
||||||
version: 5.9.0
|
version: 5.9.0
|
||||||
@@ -560,6 +563,9 @@ importers:
|
|||||||
'@rolldown/plugin-babel':
|
'@rolldown/plugin-babel':
|
||||||
specifier: ^0.2.3
|
specifier: ^0.2.3
|
||||||
version: 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
|
version: 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.4)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
|
||||||
|
'@shadcn/helpers':
|
||||||
|
specifier: ^0.2.0
|
||||||
|
version: 0.2.0(ai@7.0.66(zod@4.4.3))
|
||||||
'@tanstack/devtools-vite':
|
'@tanstack/devtools-vite':
|
||||||
specifier: ^0.8.3
|
specifier: ^0.8.3
|
||||||
version: 0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
|
version: 0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
|
||||||
@@ -636,6 +642,9 @@ importers:
|
|||||||
'@typescript/native-preview':
|
'@typescript/native-preview':
|
||||||
specifier: 7.0.0-dev.20260707.2
|
specifier: 7.0.0-dev.20260707.2
|
||||||
version: 7.0.0-dev.20260707.2
|
version: 7.0.0-dev.20260707.2
|
||||||
|
ai:
|
||||||
|
specifier: ^7.0.66
|
||||||
|
version: 7.0.66(zod@4.4.3)
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^7.0.2
|
specifier: ^7.0.2
|
||||||
version: 7.0.2
|
version: 7.0.2
|
||||||
@@ -738,6 +747,9 @@ importers:
|
|||||||
ioredis:
|
ioredis:
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.0(supports-color@7.2.0)
|
version: 6.0.0(supports-color@7.2.0)
|
||||||
|
jsonrepair:
|
||||||
|
specifier: ^3.15.0
|
||||||
|
version: 3.15.0
|
||||||
ollama-ai-provider-v2:
|
ollama-ai-provider-v2:
|
||||||
specifier: ^4.0.1
|
specifier: ^4.0.1
|
||||||
version: 4.0.1(ai@7.0.66(zod@4.4.3))(zod@4.4.3)
|
version: 4.0.1(ai@7.0.66(zod@4.4.3))(zod@4.4.3)
|
||||||
@@ -750,6 +762,9 @@ importers:
|
|||||||
sharp:
|
sharp:
|
||||||
specifier: ^0.35.3
|
specifier: ^0.35.3
|
||||||
version: 0.35.3(@types/node@26.2.0)
|
version: 0.35.3(@types/node@26.2.0)
|
||||||
|
tokenx:
|
||||||
|
specifier: ^2.1.0
|
||||||
|
version: 2.1.0
|
||||||
ts-pattern:
|
ts-pattern:
|
||||||
specifier: ^5.9.0
|
specifier: ^5.9.0
|
||||||
version: 5.9.0
|
version: 5.9.0
|
||||||
@@ -3879,6 +3894,20 @@ packages:
|
|||||||
'@selderee/plugin-htmlparser2@0.11.0':
|
'@selderee/plugin-htmlparser2@0.11.0':
|
||||||
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
|
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
|
||||||
|
|
||||||
|
'@shadcn/helpers@0.2.0':
|
||||||
|
resolution: {integrity: sha512-wpcZNuRgdW16jLwjvh4mbREKpVFrGY+nBM3Okgic8b04sijN5CHW1Nl/AEMajsP3INaCTNnqMCouOalZ7OHvEQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tanstack/ai': '>=0.40.0 <0.41.0'
|
||||||
|
'@tanstack/ai-client': '>=0.20.0 <0.21.0'
|
||||||
|
ai: '>=7.0.0 <8'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@tanstack/ai':
|
||||||
|
optional: true
|
||||||
|
'@tanstack/ai-client':
|
||||||
|
optional: true
|
||||||
|
ai:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@shadcn/react@0.3.0':
|
'@shadcn/react@0.3.0':
|
||||||
resolution: {integrity: sha512-iKN0NuYe850VDHlxEfvppFrpa7CMV3zArTHusXlaSmeFeQhohGbIqclv6WwPTs/44I8EkXQpcuRt6sXEVKkWqQ==}
|
resolution: {integrity: sha512-iKN0NuYe850VDHlxEfvppFrpa7CMV3zArTHusXlaSmeFeQhohGbIqclv6WwPTs/44I8EkXQpcuRt6sXEVKkWqQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -8218,6 +8247,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
|
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
|
||||||
engines: {node: '>=0.6'}
|
engines: {node: '>=0.6'}
|
||||||
|
|
||||||
|
tokenx@2.1.0:
|
||||||
|
resolution: {integrity: sha512-iHhqfDuFFbMWHGfjEnVALgatV10KqcO5W5Fl99fYJmFjhE57JXPdnFrDlp6BTFIMmbbazsCg/lZYpJ2mPsPeQQ==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
tree-kill@1.2.2:
|
tree-kill@1.2.2:
|
||||||
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
|
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -11252,6 +11285,10 @@ snapshots:
|
|||||||
domhandler: 5.0.3
|
domhandler: 5.0.3
|
||||||
selderee: 0.11.0
|
selderee: 0.11.0
|
||||||
|
|
||||||
|
'@shadcn/helpers@0.2.0(ai@7.0.66(zod@4.4.3))':
|
||||||
|
optionalDependencies:
|
||||||
|
ai: 7.0.66(zod@4.4.3)
|
||||||
|
|
||||||
'@shadcn/react@0.3.0(@types/react@19.2.18)(react@19.2.8)':
|
'@shadcn/react@0.3.0(@types/react@19.2.18)(react@19.2.8)':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.18
|
'@types/react': 19.2.18
|
||||||
@@ -15632,6 +15669,8 @@ snapshots:
|
|||||||
|
|
||||||
toidentifier@1.0.1: {}
|
toidentifier@1.0.1: {}
|
||||||
|
|
||||||
|
tokenx@2.1.0: {}
|
||||||
|
|
||||||
tree-kill@1.2.2: {}
|
tree-kill@1.2.2: {}
|
||||||
|
|
||||||
trim-lines@3.0.1: {}
|
trim-lines@3.0.1: {}
|
||||||
|
|||||||
Reference in New Issue
Block a user