Compare commits

...
77 Commits
Author SHA1 Message Date
Amruth Pillai aa7af040fb chore(release): v5.1.3 2026-05-13 09:29:59 +02:00
Amruth Pillai 5f63dc876b feat: new template (scizor) 2026-05-13 09:26:38 +02:00
Kaloian Kozlev 014ceee31f Add DOCX to export formats in README (#3054) 2026-05-13 09:10:30 +02:00
github-actions[bot]andCrowdin Bot 70dff5bf49 [skip ci] chore(i18n): sync translations from crowdin (#3053)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-13 09:10:00 +02:00
Amruth Pillai c5787fe155 chore: translations for a new template 2026-05-13 08:06:31 +02:00
Amruth Pillai 286e165a60 [codex] Hide empty sections from page settings (#3052)
* feat(web): hide empty layout sections

* test: add "scizor" to templates metadata test cases
2026-05-13 01:11:19 +02:00
Amruth Pillai 00dafd0c68 feat: add new resume template "Scizor" 2026-05-13 01:07:35 +02:00
brone1323 d251d602fb fix(pdf): increase headerNameLineHeight to 1.3 to prevent descender clipping (#3050)
All Heading elements apply overflow:hidden via safeTextStyle in primitives.tsx.
At 1.5× heading font size with lineHeight 1.2, the line box is too tight to
fully render descenders (g, p, y, etc.) in the resume header name field,
causing them to appear visually cut off.

Raising headerNameLineHeight from 1.2 to 1.3 adds enough vertical room for
descenders across all 13 templates that share this constant.

Fixes #3042
2026-05-13 01:02:16 +02:00
Amruth Pillai e35ff83911 chore: update dependencies 2026-05-13 00:44:51 +02:00
Amruth Pillai 62b0a1d533 fix(cjk): resolve hyphenation callback with cjk content in resume 2026-05-11 22:04:45 +02:00
Amruth PillaiandCursor Agent 0a8fe05653 Fix split row right content promotion (#3039)
* Fix split row right content promotion

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>

* refactor: remove MetaLine component and update sections to use Text instead

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-11 15:59:26 +02:00
Amruth Pillai de7baa5faf test: add ~500 tests across web, utils, api, import, ai, db, email, auth (#3038)
* test(web): add tests for zustand stores and pure helpers

Cover stores and pure helpers across the builder/dashboard/command-palette
surfaces that previously had 0% coverage:

- command-palette store (open/close, page stack, search clearing, goBack)
- builder assistant-store
- builder sidebar store + parseBuilderLayoutCookie / mapPanelLayoutToBuilderLayout
- builder section store (collapse, toggle, toggleAll)
- builder preview page-layout toggle
- dashboard resume-thumbnail render-size math + cache key
- MCP tool name + annotations invariants

* test(web): cover MCP helpers and template metadata

Add tests for previously 0%-coverage MCP and dialog helpers:

- buildMcpServerCard: server-info, tool catalog vs MCP_TOOL_NAME, prompts,
  resource templates, configuration schema, auth schemes
- registerPrompts (build/improve/review): registration, args schema, resource
  context with interpolated resume id, read-only / no-fabrication directives
- registerResources (resume://{id}, resume://_meta/schema): handler reads via
  oRPC client, error on missing id, schema returns valid JSON
- templates metadata: ids match display names, valid sidebar positions,
  unique image URLs, every entry has tags + description

* test(web): cover sidebar section helpers and layout screens

Add tests for previously near-0%-coverage modules:

- libs/resume/section: getSectionTitle / getSectionIcon return distinct,
  exhaustive results for every sidebar section + cover-letter; icon props
  forwarding; left/right sidebar collections do not overlap.
- layout/loading-screen: spinner + text render.
- layout/error-screen: error message surfaces, Refresh button triggers reset.
- layout/breakpoint-indicator: default + each corner positioning, all
  breakpoint labels rendered, print-hidden class applied.

* test(web): cover preview canvas math and font-weight defaults

Add tests for pure helpers that previously had no direct coverage:

- typography/getNextWeights: prefers 400 + 600 when both are available,
  returns null for unknown families, never produces duplicates, bounded
  to two weights from the 100..900 set.
- preview.shared/normalizeResumePreviewProps: documented defaults +
  pass-through.
- preview.shared/getScaledPreviewPageSize: scaling identity at 1, and
  fractional scaling.
- preview.shared/getPreviewCanvasScale: respects 4x desired scale for
  small pages, honors high devicePixelRatio, clamps to the 16M-pixel
  canvas budget for large pages.

* test(utils): cover DOCX section renderers and html-to-paragraphs

@reactive-resume/utils/resume/docx was previously at ~2.84% statement
coverage despite being load-bearing for the resume DOCX export.

- section-renderers: empty-string / hidden-section / hidden-item branches
  for renderSummary, renderBuiltInSection, and renderCustomSection;
  cover-letter and summary custom-section dispatch; unknown-type fallback;
  setRenderConfig idempotency.
- html-to-docx: whitespace-only short-circuit, multiple top-level blocks,
  h1..h6 paragraph mapping, inline style and link rendering, custom
  font/size/color/linkColor config, ignored script/comment nodes.

* test: cover DOCX builder smoke paths and reactive-resume JSON importer

- utils/resume/docx/builder: buildDocument runs end-to-end against the
  default and sample resume data, both page formats, full-width and
  sidebar layouts, and gracefully degrades with unparseable color or
  empty font family inputs.
- import/reactive-resume-json: ReactiveResumeJSONImporter validates
  malformed JSON, recovers missing built-in sections by appending them
  to page 1 without reordering, and preserves layouts that already
  contain every built-in section.

* test(import): cover JSONResumeImporter parse/convert

JSONResumeImporter (450 lines) was previously at 0% coverage. Add tests
for the public surface:

- Invalid JSON / invalid-shape errors are surfaced.
- basics, summary, picture, education, projects, skills, profiles all
  map to the corresponding ResumeData sections.
- Empty work/education entries (missing key field) are filtered out.
- Highlights become HTML list items in the description field.
- Skill level parsing flows through utils/level.parseLevel.
- formatLocation joins city, region, countryCode with commas.

* test(web): cover query client serializer and home-page animations

- libs/query/client: getQueryClient returns a fresh QueryClient,
  queryKeyHashFn produces stable JSON envelopes for matching keys
  (and distinct strings for different keys), dehydrate/hydrate
  round-trip Date values via the oRPC serializer.
- components/animation/spotlight: overlay container is
  pointer-events-none, both beam groups render, custom
  width/height/translateY/gradient props flow into inline styles.
- components/animation/comet-card: children mount inside the
  perspective wrapper, custom className is merged with the 3D
  baseline classes, glare overlay renders, mouse move/leave
  handlers do not throw.

* test(web): cover Copyright footer

Verify the footer's MIT license link, Amruth Pillai attribution,
external-tab targets, embedded app version (via __APP_VERSION__ stub),
and custom className merging — previously at 0% coverage.

* test(api): cover flags, auth providers, and resume-access cookies

Unlock @reactive-resume/api by mocking @reactive-resume/env/server and
@tanstack/react-start/server. Previously the only services tested were
the standalone AI test and resume-access-policy.

- services/flags: flagsService.getFlags reads disableSignups/disableEmailAuth
  from env (no stale cache).
- services/auth: providers.list always exposes credential + passkey, and
  only adds Google/GitHub/LinkedIn/custom when both id and secret are set;
  custom provider uses OAUTH_PROVIDER_NAME with a 'Custom OAuth' fallback.
- helpers/resume-access: hasResumeAccess validates against signed cookies
  with constant-time comparison; grantResumeAccess writes a 10-minute
  httpOnly cookie with the secure flag matching APP_URL's https-ness.

* test: cover statistics service and email transport via env mocks

- api/services/statistics: github star count succeeds, retries on
  non-OK, falls back to last-known on fetch error / non-positive /
  non-numeric responses; user and resume counts roll up DB count.
- email/src/transport: returns silently with no text/html, logs when
  SMTP is not configured, dispatches via nodemailer with the env
  config when fully wired, renders react elements to html + text
  bodies, swallows transport errors instead of crashing.

* test(api): cover resume-events publish + subscribe

- publishResumeUpdated issues pg_notify with channel and serialized
  event payload.
- subscribeResumeUpdated yields events whose resumeId+userId match
  the subscription, filters out other resumes/users, ignores
  malformed JSON and notifications on other channels, calls
  LISTEN/UNLISTEN and releases the client, and terminates
  immediately if the abort signal fires before iteration starts.

* test(api): cover oRPC auth resolution

resolveUserFromRequestHeaders is the single point where every oRPC
procedure picks up the authenticated user. Test the priority chain:

- x-api-key wins when present and valid
- on invalid api key, falls back to session via auth.api.getSession
- Bearer JWT in Authorization header is verified via verifyOAuthToken
- invalid Bearer falls back to session
- Authorization scheme other than Bearer is ignored entirely
- thrown errors from token verification are logged and swallowed
  (caller still tries session)
- returns null when no auth method succeeds

* test(api): cover storage helpers

inferContentType, isImageFile, processImageForUpload were 0%
coverage despite being on the picture upload path.

- inferContentType maps known image and pdf extensions, is
  case-insensitive, ignores path depth, and falls back to
  application/octet-stream for unknown.
- isImageFile allows only the upload allowlist (gif/png/jpeg/webp)
  and rejects image/svg+xml, application/pdf, and empty strings.
- processImageForUpload short-circuits to the original bytes when
  FLAG_DISABLE_IMAGE_PROCESSING is true, otherwise pipes through
  sharp and returns image/jpeg.

* test(import): broaden v4 importer section-mapping coverage

The existing v4 importer test focused on a single bug (description-only
custom items) and the skill/language level scaling. This new test
exercises the bulk of the v4 → v5 transformation path:

- basics, picture (with border), summary, customFields
- every section's filter-by-required-field invariant (awards needs
  title, certifications needs name, education needs institution,
  experience needs company, volunteer needs organization, etc.)
- experience / education / awards / certifications / references field
  renames between schemas
- language and skill level scaling (v4 0..10 → v5 0..5)

Brings reactive-resume-v4-json from ~66% statement coverage to a
materially higher figure (the bulk of the 410-line transformer body).

* test: cover buildDocx entry and AI configuration store

- utils/resume/docx/index: buildDocx returns a non-empty Blob for both
  default and populated resumes (previously 0% coverage despite being
  the public DOCX entry point).
- ai/store: useAIStore preserves verification status across no-op
  updates, but resets testStatus + enabled whenever provider, model,
  apiKey, or baseURL changes; canEnable is gated to testStatus=success;
  setEnabled(true) is refused unless verified; reset clears every
  field. Brings @reactive-resume/ai from ~72% to materially higher
  coverage.

* test(db): cover resume schema definitions

packages/db was previously at 0% coverage. Smoke-test the public
resume / resume_statistics / resume_analysis tables:

- getTableName matches the SQL identifier used by migrations
- expected columns are present on each table
- defaultResumeData wiring on the data column resolves to a valid
  shape

These are structural assertions that catch accidental renames /
removals without needing a live database connection.

* test(db): cover auth schema tables and relations export

- src/schema/auth: table-driven test for each of the 12 auth tables
  asserting SQL name and presence of the key columns (user/session/
  account/verification/two_factor/passkey/apikey/jwks/oauth_*).
- src/relations: smoke test confirming the relations export is defined.

Brings @reactive-resume/db from 0% to materially higher coverage.

* test(auth): cover getSession isomorphic helper

@reactive-resume/auth was previously at 0% coverage. functions.ts
is the server entry point that other packages call. Mock the auth
config + tanstack/react-start to verify:

- getSession forwards getRequestHeaders() to auth.api.getSession
- returns null when better-auth returns null

* test(web): cover BuilderSidebarEdge

Small presentational component on the builder layout — assert children
mount, left/right positioning class branches, and the sm:flex
mobile-hide behavior.

* test(web): cover section-title-locale resolver cache and hook

The section-title-locale module wraps createSectionTitleResolver with
a per-locale async cache and a React hook for consumers in the
builder. Cover:

- createSectionTitleResolverForLocale returns a usable resolver
- repeated calls for the same locale share a cached promise
- unknown locales fall back through resolveLocale
- useSectionTitleResolver returns null while loading and when no
  locale is passed
- the hook resolves to a function once the async loader settles

* test(web): cover BaseCommandGroup page-stack gating

BaseCommandGroup conditionally renders based on the top of the
command-palette page stack. Tests cover:

- root group renders when no sub-page is active
- root group hides when a sub-page is on top
- sub-page group renders only when its page matches
- mismatched sub-page leaves the group hidden

* test(web): cover ThemeProvider context

- useTheme outside ThemeProvider throws the documented error
- useTheme inside ThemeProvider returns the theme + setTheme +
  toggleTheme helpers

* test(web): cover ConfirmDialogProvider + useConfirm hook

- useConfirm outside provider throws the documented error
- confirm returns a pending promise
- promise resolves false when the Cancel button is clicked
- promise resolves true when the Confirm button is clicked
- works with custom confirmText label

apps/web has its own copy of this hook distinct from
packages/ui (mirrors the existing UI-package tests).

* test(web): cover PromptDialogProvider + usePrompt hook

- usePrompt outside provider throws the documented error
- returns a function when wrapped
- Cancel click resolves the promise to null
- Confirm click resolves to the current input value
- defaultValue option seeds the initial input value

* test(web): cover DashboardHeader

Small presentational header used across dashboard routes — title h1,
icon rendering, className merge, mobile sidebar trigger present and
hidden on md+.

* test(web): cover Create/Import resume cards

Both cards on the resumes dashboard wire a click handler to open
the appropriate dialog via the dialog store:

- CreateResumeCard opens resume.create
- ImportResumeCard opens resume.import

Also asserts the i18n copy strings (icons aside, the cards are
otherwise structural).

* test(web): cover command-palette language sub-page

LanguageCommandPage is a BaseCommandGroup gated on page='language'.
Tests assert:

- it is hidden when 'language' is not the top of the page stack
- when active, it renders a CommandItem per localeMap entry
- documented locale codes (en-US, de-DE, ja-JP) appear

* test(web): cover command-palette theme + preferences sub-pages

- ThemeCommandPage: hidden when 'theme' is not on top, renders Light
  and Dark options when active
- PreferencesCommandGroup: root group renders both Change theme to...
  and Change language to... items; clicking each pushes the
  corresponding page onto the command-palette stack

* test(ai): cover executePatchResume tool

- patchResumeInputSchema rejects empty operations and unknown op
  values; accepts valid replace/add/remove
- executePatchResume returns the applied operations on success
- executePatchResume throws when an operation targets an invalid path
  (passes through the underlying applyResumePatches validation)
- multi-op patches against top-level fields succeed end-to-end

* test(ai): cover sanitize edge branches

Hit the previously-uncovered branches in sanitize.ts:

- numeric 1 coerces to true
- '1' / '0' string shorthand coerces to true/false
- missing item.hidden gets salvaged to false
- empty input causes a non-Zod throw (caught + rethrown with generic message)

* test(ai): cover patch-proposal preview + normalize edge cases

- remove operations surface before-value with after=undefined
- buildResumePatchProposalPreview labels metadata/page paths sanely
- normalizeResumePatchProposals stamps every proposal with baseUpdatedAt
- normalizeResumePatchProposals preserves input order

* test(web): cover getLocaleOptions helper

Locale combobox surface — verify the option list mirrors localeMap
shape, uses locale codes as values, populates label + keywords with
the translated display name, and produces unique values.

* test(web): cover LevelTypeCombobox option mapping

LevelTypeCombobox maps levelDesignSchema.shape.type.options through
the internal getLevelTypeName labeler. Assert all 7 level types are
exposed and that each produces a non-empty label.

* test(web): cover ThemeToggleButton fallback paths

- aria-label flips between 'Switch to light theme' and 'Switch to
  dark theme' based on current theme
- clicking when document.startViewTransition is unavailable
  short-circuits to toggleTheme directly
- prefers-reduced-motion forces the direct toggle path even when
  the view-transition API is available

* test(web): cover NotFoundScreen

Mock the TanStack Router Link so the screen renders standalone, then
assert: documented error heading, routeId is surfaced verbatim, and
the Go Back link points to '..' (parent route).

* test(web): cover InformationSectionBuilder

Stub SectionBase so the donation/info section renders standalone.
Assert: donation prompt copy, OpenCollective CTA link, all 5
external resource links present, and external links target _blank
with rel=noopener.

* test(web): cover NotesSectionBuilder

Mock SectionBase, RichInput, and the resume-draft hooks so the
notes section renders in isolation. Assert: privacy hint copy
renders, RichInput is seeded with metadata.notes, and onChange
proxies through updateResumeData with a draft recipe that mutates
metadata.notes.

* test(web): cover TemplateSectionBuilder

Stub SectionBase and useCurrentResume so the right-sidebar template
section renders standalone. Asserts: current template name in the
heading, template tags rendered as badges, preview image points to
the catalog asset, and clicking the preview opens the
resume.template.gallery dialog.

* test(web): cover ColorPicker preset selection and trigger override

Mock the heavy @uiw/react-color-colorful dependency. Test:

- the trigger swatch reflects the controlled value
- clicking a preset color invokes onChange with an rgba() string
- a custom trigger replaces the default swatch when provided

* test(web): cover ExportSectionBuilder

Mock the heavy export pipelines (buildDocx, createResumePdfBlob,
downloadWithAnchor) and the resume-draft hook to test:

- JSON button packages resume.data as application/json and triggers
  download with the {name}.json filename
- DOCX button awaits buildDocx and downloads .docx
- PDF button awaits createResumePdfBlob and downloads .pdf

* test(web): cover ProfilesSectionBuilder

Stub the resume-draft hooks, SectionBase, SectionItem, and
SectionAddItemButton so the profiles section renders standalone:

- one SectionItem per profile with network as title and username as
  subtitle
- 'Add a new profile' affordance present
- when items.length > 0, the wrapper uses a solid border (not dashed)

* test(web): cover SkillsSectionBuilder

Mirror the profiles test for the skills section — verifies one
SectionItem per skill (name → title, proficiency → subtitle) and
the Add a new skill affordance.

* test(web): bulk-cover 7 left-sidebar section builders

Single test file covers awards, certifications, interests, languages,
publications, references, and volunteer builders. For each:

- one SectionItem rendered with the documented field → title/subtitle
  mapping
  - awards: title → awarder
  - certifications: title → 'issuer • date'
  - interests: name → (no subtitle)
  - languages: language → fluency
  - publications: title → publisher
  - references: name → (no subtitle)
  - volunteer: organization → location
- the 'Add a new {kind}' affordance with the matching copy

Mocks SectionBase, SectionItem, SectionAddItemButton, and the
resume-draft hooks so each builder renders standalone.

* test(web): cover ProjectsSectionBuilder buildSubtitle

The projects section is the only left-sidebar builder with a
composite subtitle. Tests three branches of its inline
buildSubtitle helper:

- period + website.label → joined with ' • '
- period only → just the period
- empty period + whitespace-only website.label → returns undefined

* test(web): cover Education + Experience section builders

- Education: school → title, degree → subtitle, add-new affordance
- Experience: position → subtitle when set; falls back to '1 role' /
  'N roles' (lingui plural) when position empty and roles[] present;
  add-new affordance

* test(web): cover CountUp animated number renderer

- default aria attributes (aria-live=polite, aria-atomic=true)
- initial textContent seeds to 'from' (up) or 'to' (down) value
- separator option formats with grouping
- decimal places are preserved when from/to are fractional
- aria-hidden=true strips aria-live + aria-atomic
- custom className is applied to the rendered span

* test(web): cover TextMaskEffect SVG renderer

- supplied text renders in every visible <text> layer
- aria-hidden + aria-label forwarded onto the root svg
- mouse enter/move/leave handlers don't throw
- custom className merges into the svg's class attribute

* test(web): cover URLInput prefix handling

- displayed input strips the https:// prefix so users only edit the
  meaningful portion
- editing re-adds the prefix on the way back through onChange
- pre-prefixed input is preserved
- cleared input emits an empty url (no prefix forced)
- hideLabelButton=true removes the popover trigger; default keeps it

* test(web): cover GithubStarsButton

Mocks useQuery + the CountUp animation so the button renders
standalone. Asserts:

- anchor points at the project repo with rel=noopener + target=_blank
- aria-label is the no-count copy when star count is undefined
- CountUp renders only once the count loads
- aria-label includes the localized count once data arrives

* test(web): cover ui/Combobox trigger label rendering

The shared Combobox wraps base-ui's combobox primitives. Smoke-test
the trigger label resolution:

- placeholder shows when nothing is selected
- selected option's label renders in the trigger
- multi-select default values render all labels
- empty options array renders the placeholder without crashing

* test(web): cover IconPicker trigger rendering

Stub react-window's Grid so happy-dom can render the picker without
layout-measurement deps. Verify:

- trigger renders an <i class='ph-{value}'> for the current value
- changing value updates the trigger icon class
- the picker emits a trigger button

* test(web): cover ChipInput add/dedupe/description behaviors

- existing chips render as Badges
- Enter adds the typed value to the chip list
- comma also commits the typed value
- duplicate input is dropped (onChange not called with a longer list)
- empty / whitespace-only input is dropped
- hideDescription removes the keyboard hint <kbd>; default keeps it

* test(web): cover StatisticsSectionBuilder

Mock useQuery + useParams + section-base so the right-sidebar
statistics section renders standalone:

- returns null content while the query is loading
- shows the private-resume hint when isPublic=false
- shows views/downloads counters and labels when isPublic=true
- includes 'Last viewed' timestamp copy when lastViewedAt is set

* test(web): cover TemplateGalleryDialog selection flow

- title + intro copy render
- one tile per template (>= 14)
- currently-selected template tile carries the ring-highlight
- clicking a different tile triggers updateResumeData with a recipe
  that sets metadata.template to the chosen template id

* test(web): cover Prefooter home-page section

- community tagline heading renders
- community-thanks paragraph renders
- the decorative TextMaskEffect renders an svg

* test(web): cover home-page Footer

- Resources and Community headings render
- documented resource links (Documentation, Sponsorships, Source
  Code, Changelog) all appear in the rendered output
- documented community links (Report an issue, Translations,
  Subreddit, Discord) all appear
- social anchors point at GitHub, LinkedIn, and X (Twitter)
- Copyright sub-component surfaces the app version via __APP_VERSION__

* test(web): cover home-page Header navigation

Mock TanStack Router Link + child components so the header renders
standalone. Verify:

- homepage anchor (/ link) carries the documented aria-label
- dashboard anchor points to /dashboard
- ThemeToggleButton and GithubStarsButton both mount
- the <nav> landmark is labeled 'Main navigation'

* chore: fix linter warnings
2026-05-11 14:25:10 +02:00
Amruth Pillai 48555f58e5 Merge branch 'main' of github.com:amruthpillai/reactive-resume 2026-05-11 13:56:01 +02:00
Amruth Pillai 0daf868cd4 fix(knip): remove duplicate export 2026-05-11 13:55:56 +02:00
github-actions[bot]andCrowdin Bot e574d4005f [skip ci] chore(i18n): sync translations from crowdin (#3037)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-11 13:54:49 +02:00
Amruth Pillai fda4e500b3 feat(toast): add non-invasive, dismissible donation banner 2026-05-11 13:50:32 +02:00
Amruth Pillai adfc9b527b docs: map existing codebase
Adds .planning/codebase/ with parallel-mapper outputs covering stack,
integrations, architecture, structure, conventions, testing, and concerns.
2026-05-11 11:16:33 +02:00
Amruth Pillai 71aadbd73d docs: update AGENTS.md with detailed codebase structure, environment setup, and common commands 2026-05-11 09:42:58 +02:00
Amruth Pillai 0713cf20d4 fix: filter invalid/empty section items and experience roles 2026-05-11 09:27:14 +02:00
Amruth Pillai 334ea48bc7 fix: enhance rich text handling in PDF generation
- Bump @tanstack/react-form version to 1.32.0 in package.json.
- Refactor rich-input component to simplify highlight configuration.
- Improve rich text HTML normalization to handle <mark> elements and apply styles correctly in PDF output.
- Update global CSS for WYSIWYG to adjust paragraph and list margins.
2026-05-11 09:04:42 +02:00
Amruth PillaiandCursor Agent 69c23211a0 Fix award title and date layout (#3029)
* Fix award title date layout

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>

* Keep award date inline across templates

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-11 05:54:51 +02:00
Amruth Pillai 143aaa741b fix(lapras): adjust lapras border color to fixed gray 2026-05-11 01:11:17 +02:00
Amruth Pillai e4cc6a8e57 docs: add react-pdf-html prose spacing design 2026-05-11 01:00:46 +02:00
Amruth Pillai 92a0e3ddb8 feat: implement resume preview loading enhancements and add tests for preview components 2026-05-11 00:59:16 +02:00
Amruth Pillai 4ebe9e5a67 fix: enhance resume schema validation and improve slugify function for CJK input 2026-05-11 00:27:47 +02:00
Amruth Pillai 0abee1048c fix(docs): update healthcheck test script on docs, resolves #3027 2026-05-11 00:09:07 +02:00
Amruth Pillai 83a407bc10 fix: add special hyphenation callback for Chinese script in PDF font registration 2026-05-10 23:54:37 +02:00
Amruth Pillai 02973a1eb1 fix: correct path for app source files in globals.css 2026-05-10 23:35:46 +02:00
Amruth Pillai 2e04e71f4a fix: update build process to ensure clean output for web app 2026-05-10 23:27:06 +02:00
Amruth Pillai 978cbaf1f3 fix: run knip --fix to add unlisted dependencies 2026-05-10 22:12:35 +02:00
Amruth Pillai 3cd228bd84 chore: update postcss to version 8.5.14 and sort font weights in typography components 2026-05-10 22:09:37 +02:00
Amruth Pillai 64ac3ff328 fix: revert to default hyphenation method 2026-05-10 21:50:27 +02:00
Amruth Pillai 846b7856a7 Merge branch 'main' of github.com:amruthpillai/reactive-resume 2026-05-10 20:46:31 +02:00
Amruth Pillai 7a60a42a04 chore: migrate from jsdom to happy-dom for testing environment 2026-05-10 20:46:28 +02:00
github-actions[bot]andCrowdin Bot b0de64ad13 [skip ci] chore(i18n): sync translations from crowdin (#3026)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-10 20:20:08 +02:00
Amruth Pillai b321e01658 Merge branch 'main' into feat/increase-test-coverage
# Conflicts:
#	packages/ui/src/components/input-group.test.tsx
2026-05-10 20:05:00 +02:00
Amruth Pillai 6a01207b6b test: add unit and component tests across the monorepo
Adds ~1000 tests to bring the previously-untested packages and apps
under coverage:

- packages/utils — string, color, date, file, level, locale, sanitize,
  field, html, network-icons, rate-limit, url, url-security, monorepo,
  resume/patch, resume/docx/link-utils, style helpers (~97% on the
  testable utility files)
- packages/ui — 28 component test files plus the use-controlled-state,
  use-mobile, use-confirm, use-prompt hooks (95% statements)
- packages/pdf — shared template helpers (filtering, columns, picture,
  metrics, section-links, page-size, rich-text-html, section-title)
- packages/schema — resumeDataSchema, page, templates, default
- packages/fonts — expanded coverage on font helpers
- packages/ai — resume sanitize and extraction template
- packages/api — resume-access-policy
- apps/web — error-message, locale, theme, pwa, dialogs/store, and
  the resume/move-item / section-actions / make-section-item helpers

Adds jsdom polyfills (ResizeObserver, IntersectionObserver,
scrollIntoView, matchMedia) and an explicit React Testing Library
cleanup hook to vitest.setup.ts so portal- and overlay-based components
work without per-test setup.
2026-05-10 20:00:07 +02:00
Amruth Pillai 2f6a8904e4 fix: enforce hasPassword to be a boolean 2026-05-10 19:56:50 +02:00
Amruth Pillai 56c9eb2ff4 fix(contact-list): resolves an issue where website label was uneditable 2026-05-10 19:30:09 +02:00
Amruth Pillai 33103536ae fix: fallback for cjk fonts when italic font style not available 2026-05-10 17:35:32 +02:00
Amruth PillaiandCursor Agent a93e7bd190 docs: add AGENTS.md with Cursor Cloud development instructions (#3024)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-10 13:34:19 +02:00
github-actions[bot]andCrowdin Bot 4cd4b8c193 [skip ci] chore(i18n): sync translations from crowdin (#3023)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-10 13:27:59 +02:00
Amruth Pillai be9285aa33 chore(release): v5.1.2 2026-05-10 13:27:06 +02:00
Amruth Pillai 6787175a8a feat(ai): implement an AI chat window for agentic resume building (#3022) 2026-05-10 13:23:32 +02:00
Amruth Pillai 42e83cc676 fix: improper rendering of text blocks in PDFs 2026-05-10 13:22:21 +02:00
JamesGoslings 62f4532157 fix(pdf): register CJK fallback font so Chinese/Japanese/Korean text renders correctly (#3016)
Closes #2986.

Since v5.1.0 the renderer was migrated from Puppeteer to
@react-pdf/renderer. The new pipeline only registers the user-selected
typography family (e.g. Roboto, IBM Plex Serif), which contains no CJK
glyphs, so any Chinese / Japanese / Korean characters in the resume
fall back to .notdef and render as garbled boxes in both the in-app
preview and the exported PDF.

@react-pdf/renderer's textkit layer already supports per-codepoint
font substitution when a Text node is styled with `fontFamily` as a
string array — but only if every family in the stack has been
registered via Font.register. This change wires that up:

- packages/fonts: new `getPdfCjkFallbackFontFamily(family)` returns
  Noto Sans SC / Noto Serif SC depending on whether the primary font
  is sans-serif or serif, and `null` when no fallback is needed
  (standard PDF font, or primary already is the fallback). Source Han
  Sans/Serif SC covers all CJK-Unified ideographs, so a single font
  transparently handles Simplified/Traditional Chinese, Japanese
  kanji and Korean hanja.

- packages/pdf/hooks/use-register-fonts: after registering the
  primary body/heading fonts as before, additionally register the
  resolved CJK fallback (regular weight only — substitution is
  per-codepoint, not per-weight, so one face is enough). The
  function's return type is widened to a new `PdfTypography` whose
  `body.fontFamily` and `heading.fontFamily` become
  `[primary, cjkFallback]` two-element stacks.

- packages/pdf/document: cast the widened typography back through the
  schema-typed `ResumeData` so the wider runtime value reaches
  templates without changing the public `Typography` schema. All 15
  templates already consume `metadata.typography.body.fontFamily`
  directly, and `StyleSheet.fontFamily` accepts both string and
  string[], so no template edits are required.

Latin-only resumes are unaffected:
- `getPdfCjkFallbackFontFamily` returns `null` for standard PDF fonts
  and existing CJK selections, so the extra Font.register call is
  skipped.
- When no fallback applies, `registerFonts` returns the original
  typography reference unchanged (zero allocation).
- Even when the fallback is registered, textkit only consults it for
  codepoints the primary font cannot render, so Latin glyphs still
  come from the user-selected font with identical metrics.
2026-05-09 18:49:59 +02:00
Donovan WattsandAmruth Pillai fabe22089d fix(api): allow empty name in public resume output schema (#3012)
The redactResumeForViewer helper intentionally blanks the dashboard
title for non-owner viewers (the title can leak owner-only context like
"Senior Eng @ Foo - final draft"), but the getBySlug output schema
inherits name.min(1) from resumeSchema. Zod rejects the redacted
payload, oRPC throws Output validation failed, and every public resume
URL returns HTTP 500.

Relax the constraint to z.string() on the getBySlug output only -
ownership-gated procedures (getById, update, patch, list, ...) keep
min(1).

Fixes #3011

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
2026-05-09 18:49:43 +02:00
Nicolas Oddo fa38f3e84a fix: correct v4 to v5 import for custom sections, skill levels, and hidden items (#3013) 2026-05-09 18:48:21 +02:00
github-actions[bot]andCrowdin Bot 0606e0072b [skip ci] chore(i18n): sync translations from crowdin (#3005)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-08 16:19:27 +02:00
Amruth PillaiandClaude bdfb854602 fix: resolve storage healthcheck path via LOCAL_STORAGE_PATH env var (#3004)
* fix: resolve local data directory to /app/data in production Docker

In the official Docker image, cwd is /app/apps/web (set via WORKDIR), but
the data volume is mounted at /app/data. Without pnpm-workspace.yaml present
in the runtime image, findWorkspaceRoot() returns null, so getLocalDataDirectory()
fell back to <cwd>/data = /app/apps/web/data, which the node user has no
permission to create. This caused the storage healthcheck to fail with
EACCES.

Add a production fallback: when cwd ends in apps/web, resolve the data
directory to two levels up (matching /app/data in the official image).

Re-resolves #2990.

https://claude.ai/code/session_015pSTtukxf7mFTty2Y6PHZf

* fix: replace apps/web heuristic with LOCAL_STORAGE_PATH env var

The previous fix special-cased a cwd ending in apps/web to land on /app/data,
but the heuristic could false-positive on any path with that suffix and was
fragile to Dockerfile changes. pnpm-workspace.yaml is never copied into the
runtime image, so the workspace-root walk was also dead code in production.

Replace the heuristic with an explicit LOCAL_STORAGE_PATH env var:
- Set LOCAL_STORAGE_PATH=/app/data in the Dockerfile (single source of truth).
- Add LOCAL_STORAGE_PATH to the env schema; storage and statistics services
  pass it through to getLocalDataDirectory.
- getLocalDataDirectory now uses the override when set, else workspace root
  (dev), else cwd/data.
- New Nitro plugin validates the resolved local data directory at startup
  and refuses to boot with a clear error if it isn't writable, surfacing
  permission issues immediately instead of at first upload/healthcheck.
- Document the new variable in .env.example and the Docker self-hosting docs.

https://claude.ai/code/session_015pSTtukxf7mFTty2Y6PHZf

* fix: address review feedback on storage path handling

- apps/web/plugins/2.storage.ts: use the default-import style for
  node:fs/promises (matches the rest of the repo, sidesteps any
  named-export concerns for fs.constants).
- packages/env/src/server.ts: reject relative LOCAL_STORAGE_PATH values
  via a zod refinement. Relative paths would be resolved against cwd,
  which differs between dev and Docker — exactly the same surprise the
  original bug had. Failing fast at config validation time gives a
  clear error before the server boots.

https://claude.ai/code/session_015pSTtukxf7mFTty2Y6PHZf

* fix: update data volume configuration in Docker Compose and enhance Nitro plugin

* fix: remove "Can I customize the templates?" FAQ entry from multiple language files

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-08 16:05:47 +02:00
github-actions[bot]andCrowdin Bot 05f094bd13 [skip ci] chore(i18n): sync translations from crowdin (#3001)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-08 13:07:45 +02:00
github-actions[bot]andCrowdin Bot d1c301de83 [skip ci] chore(i18n): sync translations from crowdin (#2999)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-08 13:06:37 +02:00
Amruth PillaiandClaude e42af3cd04 Remove "Can I customize the templates?" FAQ from homepage (#3000)
https://claude.ai/code/session_013T4jd8fPiWR5jMw2yxwgez

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-08 13:06:27 +02:00
Amruth Pillai f3375adecb chore(release): v5.1.1 2026-05-08 13:05:55 +02:00
Amruth Pillai d9e3289f69 chore: remove unused dependencies and update locale references in resume components 2026-05-08 13:01:18 +02:00
github-actions[bot]andCrowdin Bot 7c08007a9d [skip ci] chore(i18n): sync translations from crowdin (#2997)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-08 12:39:10 +02:00
Amruth Pillai 296f7951ec fix: make nested lists work in PDF renderer, resolves #2993 2026-05-08 12:29:16 +02:00
github-actions[bot]andCrowdin Bot bf1a540fd1 [skip ci] chore(i18n): sync translations from crowdin (#2995)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-08 11:58:47 +02:00
Amruth Pillai e4a574ccd0 chore: remove tests 2026-05-08 11:58:25 +02:00
Amruth Pillai 26ca5c29c3 fix: auto-load .env, resolves #2987 2026-05-08 11:57:59 +02:00
Amruth Pillai 2cd774dab7 feat: implement free-form resume page formats, resolves #2991 2026-05-08 11:28:18 +02:00
Amruth Pillai 9cbb30d3ba fix: resolves #2990, revert the local storage path to /app/data 2026-05-08 11:10:24 +02:00
Amruth Pillai ed42f181ca fix: update dialog component styles for improved responsiveness and overflow handling 2026-05-08 10:39:34 +02:00
Amruth Pillai 21cadd76fe fix: update sample resume picture URL to point to a valid image 2026-05-08 02:37:01 +02:00
Amruth Pillai 4c771307e0 fix: fallback to "IBM Plex Serif" when unknown font encountered 2026-05-08 00:51:07 +02:00
Amruth Pillai 6d54ffa88b fix: font registration to support italic styles in PDF generation 2026-05-08 00:29:10 +02:00
Amruth Pillai 5042ad9d1f feat: add PDF download endpoint and export createLocalizedResumeDocument function 2026-05-08 00:05:55 +02:00
Amruth Pillai 3b82aa90f3 fix: resolves #2793, accept looseObject from resumeDataSchema 2026-05-07 22:50:45 +02:00
Amruth Pillai 524a7a6f4e fix: resolves #2949, remove route preloading 2026-05-07 22:46:32 +02:00
Amruth Pillai 36a16f6483 fix(#2983): fixes #2983, experience role progression causes re-renders 2026-05-07 22:30:47 +02:00
Amruth Pillai e320f3a920 chore: remove @tanstack/zod-adapter 2026-05-07 22:22:58 +02:00
Amruth Pillai d5891ff035 fix(#2978): implement inlineLink functionality 2026-05-07 21:47:00 +02:00
Amruth Pillai 891ce60270 fix(#2984): add prose styles to rich-input editor 2026-05-07 21:43:07 +02:00
Amruth Pillai 1b0bb067b6 fix(#2976): update header name line height across multiple templates 2026-05-07 21:34:01 +02:00
autofix-ci[bot] 2b3af1f7b7 [autofix.ci] apply automated fixes 2026-05-07 19:29:59 +00:00
Amruth Pillai ced765e229 fix(#2978): show underline on all links 2026-05-07 21:29:10 +02:00
Amruth Pillai 023cb4a594 fix(#2981): runtime error when enabling 2fa 2026-05-07 21:23:53 +02:00
522 changed files with 36534 additions and 5325 deletions
+5 -2
View File
@@ -63,8 +63,11 @@ SMTP_FROM="Reactive Resume <noreply@rxresu.me>"
SMTP_SECURE="false"
# --- Storage (optional) ---
# If all keys are disabled, the app uses local filesystem (/data) to store uploads instead.
# If all S3 keys are disabled, the app uses local filesystem storage instead.
# Make sure to mount this directory to a volume or the host filesystem to ensure data integrity.
# LOCAL_STORAGE_PATH overrides where local uploads/cache are written.
# Defaults to /app/data in the official Docker image; in dev, defaults to <workspace>/data.
# LOCAL_STORAGE_PATH="/app/data"
# Seaweedfs
S3_ACCESS_KEY_ID="seaweedfs"
@@ -95,4 +98,4 @@ GOOGLE_CLOUD_API_KEY=""
# Crowdin (optional)
# For translation tooling.
CROWDIN_PROJECT_ID=""
CROWDIN_API_TOKEN=""
CROWDIN_PERSONAL_TOKEN=""
+1 -1
View File
@@ -61,7 +61,7 @@
"guid": "open-collective",
"type": "payment-provider",
"description": "Open Collective",
"address": "https://opencollective.com/reactive-resume"
"address": "https://opencollective.com/reactive-resume/donate"
}
]
}
+1
View File
@@ -53,6 +53,7 @@ body:
- Onyx
- Pikachu
- Rhyhorn
- Scizor
validations:
required: false
+5 -2
View File
@@ -46,6 +46,9 @@ temp
.codex
.claude
.cursor
.superpowers
docs/superpowers
# Data
apps/web/data
# Local Storage Data
/data
/apps/web/data
+332
View File
@@ -0,0 +1,332 @@
<!-- refreshed: 2026-05-11 -->
# Architecture
**Analysis Date:** 2026-05-11
## System Overview
Reactive Resume is a single full-stack web application running as one Node.js process on port 3000. The web app is a TanStack Start application (Vite + React 19 + Nitro server) packaged in a pnpm/Turborepo monorepo. All API surface area, server-side rendering, file uploads, OAuth, OpenAPI, MCP, and PWA assets are served from the same process. Internal packages are consumed as TypeScript source through `package.json` `exports` maps that point directly at `src` files; there is no per-package `dist` output to depend on.
```text
┌────────────────────────────────────────────────────────────────────────────┐
│ Browser (React 19) │
│ TanStack Router · TanStack Query · Zustand stores · React PDF view │
│ `apps/web/src/router.tsx` · `apps/web/src/routes/__root.tsx` │
└──────────┬─────────────────────────────────────────────────────┬───────────┘
│ HTTP / SSR hydration │ /api/rpc (RPCLink)
▼ ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ Nitro server entry (TanStack Start) │
│ `apps/web/src/server.ts` · Nitro plugins (`apps/web/plugins/`) │
├──────────────────────────┬─────────────────────────────────────────────────┤
│ File-based routes │ Route `server.handlers` blocks │
│ `apps/web/src/routes/*` │ `api/rpc.$.ts` · `api/auth.$.ts` · `api/health.ts`│
│ │ `api/openapi.$.ts` · `api/uploads/$userId.$.ts`│
│ │ `mcp/index.ts` · `[.]well-known/*` · `schema.json.ts`│
└──────────┬───────────────┴──────────────────────────────┬─────────────────┘
│ in-process router client │ HTTP handler
▼ ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ oRPC routers │
│ `packages/api/src/routers/{ai,auth,flags,resume,statistics,storage}.ts` │
│ Procedures: `publicProcedure` / `protectedProcedure` │
│ Middleware: `packages/api/src/middleware/rate-limit/index.ts` │
└──────────┬─────────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────────────┐
│ Services & helpers │
│ `packages/api/src/services/{resume,ai,auth,storage,flags,statistics}.ts` │
│ `packages/api/src/helpers/{resume-access,resume-access-policy}.ts` │
│ `packages/api/src/services/resume-events.ts` (Postgres LISTEN/NOTIFY) │
│ `packages/auth/src/config.ts` (Better Auth) │
└──────────┬──────────────────────────────────────┬──────────────────────────┘
│ Drizzle ORM │ S3 / local FS
▼ ▼
┌──────────────────────────────────┐ ┌──────────────────────────────────┐
│ PostgreSQL (via `pg`) │ │ Storage (S3 or `<workspace>/data`)│
│ `packages/db/src/client.ts` │ │ `packages/api/src/services/storage.ts`│
│ schema: `packages/db/src/schema/*`│ │ served by `routes/uploads/$userId.$.tsx`│
│ migrations: `migrations/` │ └──────────────────────────────────┘
└──────────────────────────────────┘
```
## Component Responsibilities
| Component | Responsibility | File |
|-----------|----------------|------|
| Web app shell | TanStack Start app, route tree, SSR/CSR boundary, PWA, builder UI | `apps/web/src/router.tsx`, `apps/web/src/routes/__root.tsx` |
| Server entry | Nitro fetch handler wrapping `react-start/server-entry` | `apps/web/src/server.ts` |
| Migration plugin | Walks up to repo root, runs Drizzle migrations on boot | `apps/web/plugins/1.migrate.ts` |
| Storage plugin | Validates `<workspace>/data` writability when S3 is unused | `apps/web/plugins/2.storage.ts` |
| oRPC router root | Aggregates all sub-routers exposed at `/api/rpc` and OpenAPI | `packages/api/src/routers/index.ts` |
| oRPC context | Header-based auth resolution, `publicProcedure`/`protectedProcedure` | `packages/api/src/context.ts` |
| Resume service | CRUD, patch (RFC 6902), password, lock, statistics, analysis, events | `packages/api/src/services/resume.ts` |
| Storage service | S3 + local FS abstraction, image processing via `sharp` | `packages/api/src/services/storage.ts` |
| Resume access policy | Owner/viewer/redaction rules for `getBySlug` and statistics | `packages/api/src/helpers/resume-access-policy.ts` |
| Resume events | Postgres `LISTEN/NOTIFY` channel for live updates | `packages/api/src/services/resume-events.ts` |
| Auth | Better Auth config, OAuth provider, passkey, 2FA, API keys, JWKS | `packages/auth/src/config.ts` |
| Database | Drizzle client singleton, schema, generated migrations | `packages/db/src/client.ts`, `packages/db/src/schema/*.ts`, `migrations/` |
| Schema | Zod resume/page/template models shared across web + API + PDF + MCP | `packages/schema/src/resume/data.ts`, `packages/schema/src/templates.ts` |
| PDF rendering | React PDF `Document`, font registration, 14 template implementations | `packages/pdf/src/document.tsx`, `packages/pdf/src/templates/index.ts`, `packages/pdf/src/hooks/use-register-fonts.ts` |
| Shared UI | Base UI / shadcn-style component library and hooks | `packages/ui/src/components/*.tsx`, `packages/ui/src/hooks/*.tsx` |
| MCP server | Model Context Protocol server backed by oRPC routers | `apps/web/src/routes/mcp/index.ts`, `apps/web/src/routes/mcp/-helpers/*` |
## Pattern Overview
**Overall:** Modular monolith. One deployable web app + a constellation of source-only TypeScript packages communicating through typed `package.json` `exports`. Browser ↔ server communication uses **oRPC** (typed RPC with REST/OpenAPI generation) instead of REST/tRPC. SSR and client share the same router/queryClient via TanStack Start.
**Key Characteristics:**
- Source-consumed workspace packages (no per-package `dist` build) keep types end-to-end.
- The oRPC router is mounted twice: as a Fetch handler at `/api/rpc` and as an in-process `createRouterClient` for SSR/server functions, with identical types on both paths.
- Browser-only code (React PDF preview, PDF.js, canvas) is isolated behind explicit `.browser.tsx` files and `ssr: false` / `ssr: "data-only"` route opts to keep SSR bundles small and safe.
- Postgres is both the data store and the event bus (`pg_notify` channel `resume_updated` for live builder sync).
- Shared concerns (auth, theme, locale, feature flags, oRPC client, query client) are loaded once and passed through TanStack Router `context` rather than fetched per-route.
## Layers
**Routes (`apps/web/src/routes/`):**
- Purpose: File-based TanStack Router routes; some are pure UI, others embed `server.handlers` blocks that act as HTTP endpoints.
- Location: `apps/web/src/routes/`
- Contains: Page components, route loaders, server-only API handlers, layout wrappers.
- Depends on: `packages/api/routers` (mounted at `/api/rpc`), `packages/auth/config` (mounted at `/api/auth`), `packages/db/client`, `packages/api/services/*`.
- Used by: TanStack Router (route tree is regenerated into `apps/web/src/routeTree.gen.ts`).
**oRPC API layer (`packages/api/src/routers/`):**
- Purpose: Public typed contract for the browser, in-process callers, and OpenAPI/MCP consumers.
- Location: `packages/api/src/routers/{ai,auth,flags,resume,statistics,storage}.ts`, aggregated in `packages/api/src/routers/index.ts`.
- Contains: Procedure definitions, Zod input/output schemas, REST metadata, rate-limit middleware bindings.
- Depends on: `packages/api/src/context.ts`, `packages/api/src/dto/*`, `packages/api/src/services/*`.
- Used by: `apps/web/src/routes/api/rpc.$.ts` (RPCHandler), `apps/web/src/routes/api/openapi.$.ts` (OpenAPIHandler), `apps/web/src/libs/orpc/client.ts` (isomorphic client), MCP tools in `apps/web/src/routes/mcp/-helpers/tools.ts`.
**Services / business logic (`packages/api/src/services/`):**
- Purpose: All cross-cutting business rules — resume CRUD, statistics, AI orchestration, storage, feature flags, auth helpers, event publishing.
- Location: `packages/api/src/services/*.ts`
- Contains: Side-effecting functions with explicit `userId`-style inputs. No request/response coupling.
- Depends on: `packages/db/client`, `packages/db/schema`, `packages/auth/config`, `packages/schema/resume/*`, `packages/utils/*`, `packages/email/transport`, AI SDKs.
- Used by: Routers, MCP helpers, the `/api/health` route.
**Persistence (`packages/db/`):**
- Purpose: Drizzle ORM client + schema definitions; the only place SQL is written.
- Location: `packages/db/src/client.ts`, `packages/db/src/schema/{auth,resume,index}.ts`, `packages/db/src/relations.ts`.
- Contains: Postgres `Pool` singleton (stored on `globalThis.__pool` to survive HMR), `drizzle()` client, table definitions, relations.
- Depends on: `pg`, `drizzle-orm`, `packages/env/server`.
- Migrations: Generated by `drizzle-kit` into the repo-root `migrations/` directory (see `packages/db/drizzle.config.ts`) and applied at startup by `apps/web/plugins/1.migrate.ts`.
**Auth (`packages/auth/`):**
- Purpose: Better Auth instance with email/password, OAuth (Google/GitHub/LinkedIn + generic), passkey, 2FA, API keys, JWKS, and a JWT-issuing OAuth provider for MCP clients.
- Location: `packages/auth/src/config.ts`, `packages/auth/src/functions.ts`, `packages/auth/src/types.ts`.
- Mounted at: `apps/web/src/routes/api/auth.$.ts` (delegates `request → auth.handler(request)` after sanitizing OAuth params).
- Verifies tokens for MCP at `apps/web/src/routes/mcp/index.ts` via `verifyOAuthToken`.
**PDF rendering (`packages/pdf/`):**
- Purpose: React PDF document and 14 visual templates (named after Pokémon).
- Location: `packages/pdf/src/document.tsx` mounts `getTemplatePage(template)`; templates live under `packages/pdf/src/templates/<name>/`.
- Shared template primitives: `packages/pdf/src/templates/shared/{filtering,rich-text,sections,primitives,picture,page-size,columns}.ts(x)`.
- Fonts: `packages/pdf/src/hooks/use-register-fonts.ts` owns React PDF font registration, standard PDF font handling, CJK fallback stacks, and global hyphenation.
- Consumed by: Web builder preview (`apps/web/src/components/resume/preview*.tsx`, `pdf-canvas.tsx`), public resume page (`apps/web/src/routes/$username/$slug.tsx`), and the OpenAPI `/resumes/{id}/download` procedure (`apps/web/src/routes/api/-helpers/resume-pdf.ts`).
**Shared schemas (`packages/schema/`):**
- Purpose: Zod source of truth for resume data, templates, page settings, and AI analysis.
- Location: `packages/schema/src/resume/{data,default,sample,analysis}.ts`, `packages/schema/src/templates.ts`, `packages/schema/src/page.ts`, `packages/schema/src/icons.ts`.
- Used by: API DTOs (`packages/api/src/dto/resume.ts`), DB column typing (`packages/db/src/schema/resume.ts`), import package, PDF rendering, web forms, MCP tool descriptions, and the public JSON schema at `/schema.json`.
**Shared UI (`packages/ui/`):**
- Purpose: Headless/styled component library (Base UI + shadcn-style) used by `apps/web`.
- Location: `packages/ui/src/components/*.tsx`, `packages/ui/src/hooks/*.tsx`.
- Examples: `dialog`, `dropdown-menu`, `command`, `resizable`, `sonner`, `tooltip`, `form`, `direction`.
- Styles: `packages/ui/src/styles/globals.css` (Tailwind v4 entry).
**Support packages:**
- `packages/utils` — small focused helpers (`color`, `date`, `field`, `file`, `html`, `level`, `locale`, `network-icons`, `rate-limit`, `sanitize`, `string`, `style`, `url`, plus Node-only `monorepo.node`, `url-security.node`, and `resume/{docx,patch}`).
- `packages/env` — `@t3-oss/env-core` server schema; `dotenv` loads the repo-root `.env` (`packages/env/src/server.ts`).
- `packages/email` — `nodemailer` transport + `react-email` templates (`packages/email/src/transport.ts`, `packages/email/src/templates/*.tsx`).
- `packages/import` — converters for JSON Resume, Reactive Resume v3/v4 JSON (`packages/import/src/*.tsx`).
- `packages/ai` — Zustand store, AI prompts (`packages/ai/src/prompts/*.md`), patch-resume tool, sanitize/extraction helpers consumed by the AI router.
- `packages/fonts` — generated Google Fonts metadata (`packages/fonts/src/webfontlist.json`, `packages/fonts/src/index.ts`).
- `packages/scripts` — repo-level scripts (`packages/scripts/database/reset.ts`, `packages/scripts/fonts/generate.ts`).
- `packages/config` — shared TypeScript/Vitest base configs (`packages/config/tsconfig.base.json`, `packages/config/vitest.config.ts`).
- `packages/runtime-externals` — declares `bcrypt`, `sharp`, `@aws-sdk/client-s3` so they remain runtime-only (externalized in `apps/web/vite.config.ts`).
## Data Flow
### Primary Request Path (browser RPC call)
1. Browser route uses `orpc.resume.getById.queryOptions(...)` from `apps/web/src/libs/orpc/client.ts:84` to fetch data.
2. The isomorphic oRPC client (`apps/web/src/libs/orpc/client.ts:28-47`) creates an `RPCLink` pointing at `${window.location.origin}/api/rpc` with `credentials: "include"` and a `BatchLinkPlugin`.
3. Request hits the file route `apps/web/src/routes/api/rpc.$.ts`, where `RPCHandler` (line 9) dispatches with `BatchHandlerPlugin`, `RequestHeadersPlugin`, and `StrictGetMethodPlugin`.
4. `publicProcedure` (`packages/api/src/context.ts:79`) resolves the user from headers (`x-api-key` → bearer JWT via JWKS → Better Auth session cookie).
5. `protectedProcedure` (`packages/api/src/context.ts:90`) rejects unauthenticated callers with `ORPCError("UNAUTHORIZED")`.
6. Router handler in `packages/api/src/routers/resume.ts` calls into `packages/api/src/services/resume.ts`, which queries Drizzle (`packages/db/src/client.ts:32`).
7. Response is serialized back through oRPC and consumed by TanStack Query / the route component.
### SSR / Server-Side Path
1. During SSR, `apps/web/src/libs/orpc/client.ts:13-27` short-circuits the HTTP path via `createRouterClient(router, { context: async () => ({ locale, reqHeaders }) })`.
2. The same `publicProcedure`/`protectedProcedure` middleware runs in-process — no socket hop — but still resolves auth from the original request headers via `getRequestHeaders()` from `@tanstack/react-start/server`.
3. Route loaders (e.g. `apps/web/src/routes/builder/$resumeId/route.tsx:39-44`) populate the query cache via `context.queryClient.ensureQueryData(orpc.resume.getById.queryOptions(...))`.
### Resume Live-Update Flow
1. `subscribe` procedure in `packages/api/src/routers/resume.ts:76` returns an async generator.
2. On any mutation, `packages/api/src/services/resume-events.ts:37` calls `pg_notify('resume_updated', JSON.stringify(event))`.
3. Subscribing clients receive `resume.updated` SSE-style events via oRPC streaming (`apps/web/src/libs/orpc/client.ts:51-82`, `streamClient`).
4. The builder route consumes them through `useResumeUpdateSubscription` (`apps/web/src/components/resume/builder-resume-draft.ts`).
### PDF Download Path
1. Web client requests `GET /api/openapi/resumes/{id}/download` (oRPC OpenAPI handler at `apps/web/src/routes/api/openapi.$.ts`).
2. `downloadResumePdfProcedure` in `apps/web/src/routes/api/-helpers/resume-pdf.ts` loads the resume, renders `ResumeDocument` from `packages/pdf/src/document.tsx`, persists to storage via `getStorageService()`, and returns/streams the PDF.
### Public Resume Path
1. `apps/web/src/routes/$username/$slug.tsx` uses `ssr: "data-only"` — server fetches `resume.getBySlug` but renders the React PDF preview only on the client.
2. `packages/api/src/helpers/resume-access-policy.ts` enforces visibility, redacts non-public fields, and throws `NEED_PASSWORD` for password-protected resumes (the route then redirects to `/auth/resume-password`).
**State Management:**
- Server cache: TanStack Query (`apps/web/src/libs/query/client.ts`) wrapped by oRPC's `createTanstackQueryUtils`.
- Local UI state: Zustand stores under `apps/web/src/routes/builder/$resumeId/-store/{section,sidebar}.ts`, `apps/web/src/dialogs/store.ts`, `apps/web/src/components/command-palette/store.ts`, `apps/web/src/components/resume/builder-resume-draft.ts`.
- Router context: `theme`, `locale`, `session`, `flags`, `queryClient`, `orpc` are computed once in `apps/web/src/router.tsx` (and again in the root route `beforeLoad`) and reused by descendants.
- Cookies: builder layout (`BUILDER_LAYOUT_COOKIE_NAME`), theme, and locale are persisted via `getCookie`/`setCookie` server functions.
## Key Abstractions
**oRPC procedures (`os.$context<ORPCContext>()`):**
- Purpose: Typed RPC procedures that double as REST endpoints and MCP tool surfaces.
- Examples: `publicProcedure` and `protectedProcedure` in `packages/api/src/context.ts:79`/`:90`.
- Pattern: `procedure.route({...openapi metadata}).input(zodSchema).use(rateLimitMiddleware).output(zodSchema).handler(async ({ context, input }) => ...)`.
**Drizzle tables:**
- Purpose: Strongly-typed Postgres schema; `.jsonb()` columns are typed against Zod-derived TypeScript (`ResumeData`, `StoredResumeAnalysis`).
- Examples: `packages/db/src/schema/resume.ts` (resume, resumeStatistics, resumeAnalysis), `packages/db/src/schema/auth.ts` (Better Auth tables).
- Pattern: `pg.pgTable("name", { ... }, (t) => [pg.index().on(...), pg.unique().on(...)])`.
**Template pages (React PDF):**
- Purpose: One `TemplatePage` component per visual template, mapped by name in `packages/pdf/src/templates/index.ts`.
- Examples: `packages/pdf/src/templates/azurill/AzurillPage.tsx`, `packages/pdf/src/templates/onyx/OnyxPage.tsx`.
- Pattern: `(props: { page: LayoutPage; pageIndex: number }) => JSX`, consuming `RenderProvider` from `packages/pdf/src/context.tsx`.
**Base UI components:**
- Purpose: Headless primitives styled with Tailwind v4 and exported as composable parts.
- Examples: `packages/ui/src/components/dialog.tsx`, `packages/ui/src/components/command.tsx`, `packages/ui/src/components/resizable.tsx`.
- Imported via deep paths: `import { Dialog } from "@reactive-resume/ui/components/dialog";`.
**TanStack Router file routes:**
- Purpose: Page components, loaders, and optional `server.handlers` blocks per file.
- Examples: `apps/web/src/routes/builder/$resumeId/route.tsx`, `apps/web/src/routes/api/rpc.$.ts`.
- Pattern: `export const Route = createFileRoute("/path")({ component, loader, beforeLoad, server: { handlers: { GET, POST } }, ssr });`.
## Entry Points
**Vite + Nitro build entry:**
- Location: `apps/web/vite.config.ts`
- Triggers: `pnpm dev`, `pnpm build`. Wires TanStack Start, Tailwind v4, Lingui (i18n), Nitro plugins, and the Vite PWA plugin.
- Externals: `bcrypt`, `sharp`, `@aws-sdk/client-s3` (declared in `packages/runtime-externals`).
**Server fetch entry:**
- Location: `apps/web/src/server.ts`
- Responsibilities: Wraps `@tanstack/react-start/server-entry` and substitutes `srvx`'s `FastResponse` as the global `Response`.
**Nitro startup plugins:**
- `apps/web/plugins/1.migrate.ts` — resolves the repo-root `migrations/` folder, opens its own `pg.Pool`, runs Drizzle migrations on boot, then closes the pool.
- `apps/web/plugins/2.storage.ts` — when S3 env vars are absent, ensures the local storage directory is writable before serving requests.
**Router entry:**
- Location: `apps/web/src/router.tsx`
- Responsibilities: Builds `queryClient`, loads `theme`/`locale`/`session`/`flags` in parallel, creates the TanStack Router with router context, registers SSR query integration.
**Root route:**
- Location: `apps/web/src/routes/__root.tsx`
- Responsibilities: HTML shell, providers (`I18nProvider`, `ThemeProvider`, `HotkeysProvider`, `DirectionProvider`, `TooltipProvider`, `ConfirmDialogProvider`, `PromptDialogProvider`), PWA head/scripts, `DialogManager`, `CommandPalette`, `Toaster`.
**HTTP endpoints (route `server.handlers`):**
- `apps/web/src/routes/api/rpc.$.ts` — `/api/rpc/*` oRPC handler (browser RPC).
- `apps/web/src/routes/api/auth.$.ts` — `/api/auth/*` Better Auth handler (with OAuth payload sanitization).
- `apps/web/src/routes/api/health.ts` — `/api/health` JSON probe (db + storage with timeouts).
- `apps/web/src/routes/api/openapi.$.ts` — `/api/openapi/*` OpenAPI handler + spec.
- `apps/web/src/routes/api/uploads/$userId.$.ts` and `apps/web/src/routes/uploads/$userId.$.tsx` — signed/etagged static file serving from storage.
- `apps/web/src/routes/mcp/index.ts` — `/mcp` Model Context Protocol server (OAuth-protected).
- `apps/web/src/routes/[.]well-known/*` — `/.well-known/oauth-authorization-server`, `/.well-known/oauth-protected-resource`, `/.well-known/openid-configuration`, `/.well-known/mcp` discovery documents.
- `apps/web/src/routes/schema[.]json.ts` — `/schema.json` public JSON Schema for `ResumeData`.
**Builder + public resume entry points:**
- `apps/web/src/routes/builder/$resumeId/route.tsx` — authenticated builder shell (header + resizable left/right sidebars + artboard outlet + assistant).
- `apps/web/src/routes/builder/$resumeId/index.tsx` — `ssr: false`; lazy-loaded `PreviewPage` running React PDF/canvas only in the browser.
- `apps/web/src/routes/$username/$slug.tsx` — `ssr: "data-only"`; public/shared resume view (with password gating via `NEED_PASSWORD` ORPCError).
## Architectural Constraints
- **Single Node process:** Everything (web, oRPC, auth, MCP, OpenAPI, file serving) runs in one Node 24 process on port 3000. No separate API service.
- **Source-only workspace packages:** `package.json` `exports` point at `src/*.ts(x)`; do not assume `dist` output exists. The Vite build externalizes `bcrypt`, `sharp`, `@aws-sdk/client-s3` (`apps/web/vite.config.ts:55`).
- **Globals on `globalThis` for DB pool:** `packages/db/src/client.ts:8-11` caches the `pg.Pool` and Drizzle client on `globalThis.__pool` / `globalThis.__drizzle` to survive HMR reloads.
- **Browser-only PDF rendering:** PDF.js, `@react-pdf/renderer` canvas, and the builder preview must stay off the SSR path. Use `.browser.tsx` suffix files and `ssr: false` (builder preview) or `ssr: "data-only"` (public resume).
- **Generated route tree:** `apps/web/src/routeTree.gen.ts` is regenerated by TanStack Router tooling; never edit by hand.
- **Migrations folder location:** `drizzle-kit` writes to `../../migrations` from `packages/db/drizzle.config.ts`, so all migration directories live at the repo root, not inside the package.
- **DATABASE_URL not auto-loaded for drizzle-kit:** `pnpm db:migrate` / `pnpm db:generate` require `DATABASE_URL` exported in the shell; only the runtime Node code loads `.env` via `packages/env/src/server.ts`.
- **Rate limiting is production-only:** `packages/api/src/middleware/rate-limit/index.ts:5` and the Better Auth config gate rate limits on `process.env.NODE_ENV === "production"`.
- **OAuth audience binding:** `verifyOAuthToken` (`packages/auth/src/config.ts:40`) only accepts JWTs whose `aud` matches `${APP_URL}` (with/without trailing slash) or `${APP_URL}/mcp`.
- **Postgres LISTEN/NOTIFY coupling:** Live resume updates depend on a single shared `pg.Pool` (`packages/db/src/client.ts:13`); scaling beyond one process requires replacing `pg_notify` with a broker.
## Anti-Patterns
### Ad-hoc fetching of router context
**What happens:** Components separately calling `getSession()`, `getTheme()`, or `getLocale()` instead of reading them from TanStack Router context.
**Why it's wrong:** The root route's `beforeLoad` already loads these in parallel (`apps/web/src/routes/__root.tsx:82-93`) and exposes them via `Route.useRouteContext()`; duplicating the calls causes extra round-trips during SSR and triggers locale reloads.
**Do this instead:** Use `Route.useRouteContext()` or read from a parent route loader, as `apps/web/src/routes/__root.tsx:101` does for theme/locale.
### Direct DB or storage imports in client code
**What happens:** Importing `@reactive-resume/db/client` or `@reactive-resume/api/services/storage` from a non-route component.
**Why it's wrong:** Pulls `pg`, `sharp`, `bcrypt`, `@aws-sdk/client-s3` into the client bundle (which Vite externalizes — the build will fail or break at runtime).
**Do this instead:** Call the corresponding oRPC procedure from `packages/api/src/routers/*`. Server-only imports belong inside route `server.handlers` blocks or `.server.tsx` files like `apps/web/src/libs/resume/pdf-document.server.tsx`.
### PDF/canvas code in shared modules
**What happens:** Importing `@react-pdf/renderer` or PDF.js from a file that participates in SSR.
**Why it's wrong:** These libraries crash under Node SSR (canvas/DOM dependencies).
**Do this instead:** Keep browser code in `*.browser.tsx` / `pdf-canvas.tsx` and gate with `ssr: false` (e.g. `apps/web/src/routes/builder/$resumeId/index.tsx:6`) or `ssr: "data-only"` (e.g. `apps/web/src/routes/$username/$slug.tsx:40`).
### Bypassing the resume access policy
**What happens:** Reading resume rows directly from Drizzle in a public procedure without applying redaction.
**Why it's wrong:** Leaks owner-only fields (password hash, private flags, statistics) and breaks the password-gate flow that depends on `NEED_PASSWORD` errors.
**Do this instead:** Route through `packages/api/src/helpers/resume-access-policy.ts` (`assertCanView`, `redactResumeForViewer`, `shouldCountForStatistics`) as `packages/api/src/services/resume.ts` does.
### Hand-editing generated files
**What happens:** Modifying `apps/web/src/routeTree.gen.ts` or migration SQL after Drizzle writes it.
**Why it's wrong:** Edits are overwritten on the next `tanstack-router` regen or migration; data drift between snapshots and SQL breaks future migrations.
**Do this instead:** Add a route file under `apps/web/src/routes/`, or change the Drizzle schema in `packages/db/src/schema/*.ts` and run `pnpm db:generate`.
## Error Handling
**Strategy:** Typed errors via `ORPCError` codes; HTTP responses for low-level handlers; route-level `defaultErrorComponent` and `onError` for UI fallbacks.
**Patterns:**
- Procedures throw `ORPCError("UNAUTHORIZED"|"NOT_FOUND"|"NEED_PASSWORD"|...)` or use `.errors({ ... })` to declare typed application errors (e.g. `RESUME_SLUG_ALREADY_EXISTS`, `RESUME_VERSION_CONFLICT` in `packages/api/src/routers/resume.ts`).
- The OAuth bearer / API key / session resolvers in `packages/api/src/context.ts:14-55` swallow verification errors and log via `console.warn` so unauthenticated requests fall through to the next strategy.
- `apps/web/src/routes/api/rpc.$.ts` and `apps/web/src/routes/api/openapi.$.ts` install `onError` interceptors that log every server error with a tag (`[oRPC Server]`, `[OpenAPI]`).
- Route-level `onError` (e.g. `apps/web/src/routes/$username/$slug.tsx:24`) translates `NEED_PASSWORD` into a redirect.
- Top-level UI fallbacks: `apps/web/src/components/layout/error-screen.tsx`, `loading-screen.tsx`, `not-found-screen.tsx` (wired in `apps/web/src/router.tsx:30-32`).
- Healthcheck uses a 1.5s timeout helper (`apps/web/src/routes/api/health.ts:22-34`) so a stuck dependency cannot stall the probe.
## Cross-Cutting Concerns
**Logging:** `console.info`/`console.warn`/`console.error` with bracketed prefixes (e.g. `[oRPC Server]`, `[Healthcheck]`, `[oRPC client]`). No external log shipping is wired.
**Validation:** Zod 4 everywhere — Drizzle column types (`packages/db/src/schema/resume.ts`), oRPC input/output schemas, AI tool inputs, environment variables (`packages/env/src/server.ts`), and the public `/schema.json` route.
**Authentication:** Better Auth in `packages/auth/src/config.ts` (Drizzle adapter, email/password + OAuth + passkey + 2FA + admin + API keys + JWT + generic OAuth + dynamic client registration + custom `oauthProvider` for MCP). The unified resolver in `packages/api/src/context.ts:64` is the only place that decides which credential wins.
**Internationalization:** Lingui — `apps/web/lingui.config.ts`, `apps/web/locales/*.po`, `apps/web/src/libs/locale.ts`, RTL toggling in `__root.tsx`.
**Theming:** `apps/web/src/libs/theme.ts` (cookie-backed), `apps/web/src/components/theme/provider.tsx` (`next-themes`).
**Rate limiting:** `@orpc/experimental-ratelimit` with an in-memory ratelimiter from `packages/api/src/middleware/rate-limit/index.ts`. Trusted IP headers come from `packages/utils/src/rate-limit.ts`.
**Feature flags:** Server-resolved at boot (`packages/api/src/routers/flags.ts` and `packages/api/src/services/flags.ts`), then carried in router context via `apps/web/src/router.tsx:20`.
---
*Architecture analysis: 2026-05-11*
+393
View File
@@ -0,0 +1,393 @@
# Codebase Concerns
**Analysis Date:** 2026-05-11
## TODO / FIXME / HACK / XXX Comments
A repo-wide grep for `TODO`, `FIXME`, `HACK`, and `XXX` markers across `apps/web/src/**` and `packages/**` returned **zero hits** in source code. The team appears to track follow-ups in PRs/issues rather than inline. Two referenced issues remain anchored in inline comments:
- `packages/pdf/src/hooks/use-register-fonts.ts:22` — references issue `#2986` (CJK glyph-level font fallback).
- `packages/pdf/src/hooks/use-register-fonts.ts:103` — references issue `#2986` again for CJK textkit substitution.
These are stable design references, not unresolved debt — included for traceability only.
The remaining inline-comment "concerns" found during exploration sit in the **Anti-debt narrative** below, derived from code shape rather than comment markers.
---
## High Severity
### Security: SMTP-disabled fallback logs full email bodies (incl. verification/reset links)
When `SMTP_HOST` / `SMTP_USER` / `SMTP_PASS` / `SMTP_FROM` are not all set, the email transport logs the entire payload — including `text` and `html` bodies — to `stdout`.
- File: `packages/email/src/transport.ts:59-66`
```ts
console.info("SMTP not configured; skipping email send.", {
to: payload.to,
subject: payload.subject,
text: payload.text,
html: payload.html,
});
```
**Impact:**
- Password reset, email verification, and email-change confirmation URLs (which are credential-equivalent bearer tokens) are written to server logs whenever SMTP is not fully configured.
- In any shared-log / log-shipping environment (Docker, Kubernetes, journald, cloud logging) this is a credential leak.
- The README and `AGENTS.md:101` describe this as a dev convenience; nothing prevents an operator from running production with partial SMTP config.
**Fix approach:**
1. Add a server-startup assertion that, if `NODE_ENV === "production"`, `isSmtpEnabled()` must be true.
2. Redact `text` / `html` from the `console.info` call — log only `to` and `subject`.
3. Document the production SMTP requirement in `.env.example` alongside `AUTH_SECRET`.
### Security: rate limiting is silently disabled in non-production
Both the oRPC rate-limit middleware and Better Auth's rate-limit config gate on `process.env.NODE_ENV === "production"`. Anything that does not set `NODE_ENV=production` at runtime (default `node` invocation, custom Docker entrypoints that forget to set it, self-hosters running `pnpm start` without `NODE_ENV`) runs with **all rate limiting disabled**, including:
- `/sign-in/email`, `/sign-up/email`, password-reset, OAuth `register`/`authorize`/`token` (`packages/auth/src/config.ts:30, :69-78, :249-251, :388-390`)
- Resume password verification, AI calls, PDF export, storage uploads/deletes, resume mutations (`packages/api/src/middleware/rate-limit/index.ts:5, :75`)
**Impact:** brute-force-friendly. A self-hosted deployment that omits `NODE_ENV=production` is wide open on auth and resume-password endpoints.
**Fix approach:**
- Either default `isRateLimitEnabled = true` and provide a `RATE_LIMIT_DISABLED` opt-out env var, or assert `NODE_ENV === "production"` at boot when not running tests.
### Security: rate limiter is in-process memory only — broken under horizontal scaling
`MemoryRatelimiter` is used for every oRPC rate limit (`packages/api/src/middleware/rate-limit/index.ts:59-66`). Better Auth's `rateLimit` and `apiKey.rateLimit` blocks (`packages/auth/src/config.ts:248-251, :387-391`) similarly do not configure a distributed store.
**Impact:** Running >1 Node instance behind a load balancer multiplies the effective rate limit by the instance count. Brute-force attacks bypass the limit by retrying until they hit a different replica.
**Fix approach:** Swap `MemoryRatelimiter` for a Redis-backed ratelimiter (the package supports it via `@orpc/experimental-ratelimit`) once a redis dependency is acceptable. Until then, document the single-instance constraint in the deployment docs.
### Security: file upload accepts arbitrary MIME with image processing disabled
`uploadFile` (`packages/api/src/routers/storage.ts:42-71`) only runs the sharp image-processing pipeline for files where `isImageFile(file.type)` returns true based on the **client-supplied `file.type`**, and even that pipeline is skipped if `FLAG_DISABLE_IMAGE_PROCESSING=true` (`packages/api/src/services/storage.ts:96-101`).
**Impact:**
- A client can claim `content-type: text/html` (or any non-image MIME) on a 10 MB upload, and the file is stored verbatim into `uploads/{userId}/pictures/...` with the user-claimed content type.
- Served back from `apps/web/src/routes/uploads/$userId.$.tsx`. `X-Content-Type-Options: nosniff` is set (`:159`) and the storage route forces `application/octet-stream` only for `.pdf` (`:39, :148-153`), so a stored HTML body could be served as HTML if the inferred extension matches. The picture key always ends in `.jpeg` (`storage.ts:60`), which mitigates this in the picture path, but there is no MIME allow-list enforced at upload time.
- With `FLAG_DISABLE_IMAGE_PROCESSING` on, the same applies to genuine images (no resize/strip-metadata path), so EXIF data is preserved unredacted.
**Fix approach:**
1. Add a strict allow-list at the router boundary (`packages/api/src/routers/storage.ts:9`) — `z.file().mime(["image/png", "image/jpeg", "image/webp", "image/gif"])` plus magic-byte validation.
2. Reject upload if claimed MIME does not match the sharp-detected MIME; do not fall back to client claim.
3. Surface a startup warning when `FLAG_DISABLE_IMAGE_PROCESSING=true` so it is not enabled in production unknowingly.
### Tech Debt: web app has near-zero test coverage
- `apps/web/src` has **11 test files** across **~224 source files** (~5%) — `find apps/web/src -name "*.test.*"`.
- `apps/web/src/routes` has **1 test file** across **125 route files** (`apps/web/src/routes/builder/$resumeId/-components/donation-toast.test.tsx`).
- Total repo: ~93 test files / ~385 source files (~24%). Most coverage lives in `packages/ui`, `packages/utils`, `packages/pdf/src/templates/shared`, and `packages/api` (5 tests).
**Impact:**
- Refactors to routes, builder shell, sidebar forms, resume preview wiring, MCP tools, and uploads handler land without a regression net.
- Particularly thin: `apps/web/src/routes/api/**` (rpc, auth, openapi, mcp, uploads) and `apps/web/src/routes/builder/$resumeId/**`.
**Fix approach:** Phase-by-phase, add server-handler integration tests for `api/health.ts`, `api/auth.$.ts` (registration-validation path), `uploads/$userId.$.tsx` (path traversal), and at least smoke tests around the builder store in `apps/web/src/components/resume/builder-resume-draft.ts`.
---
## Medium Severity
### Fragile: PDF.js / canvas SSR boundary is enforced by convention only
The SSR/CSR split for the resume preview is hand-maintained:
- `apps/web/src/components/resume/preview.tsx:14` returns `null` until `useIsClient()` resolves and then lazy-loads the browser bundle.
- `apps/web/src/components/resume/preview.browser.tsx:2` imports `@react-pdf/renderer` (`pdf`).
- `apps/web/src/components/resume/pdf-canvas.tsx:1, :4, :9` imports PDF.js types/runtime and sets a module-level `GlobalWorkerOptions.workerSrc`.
- `apps/web/src/routes/templates/$.tsx:1` imports `PDFViewer` at the **top level** but the route component itself bails on `!isClient`. Top-level import means the bundle reaches the SSR chunk; correctness relies on the import being tree-shaken away when SSR runs.
- `apps/web/src/routes/dashboard/resumes/-components/cards/resume-thumbnail.tsx` uses dynamic `await import("pdfjs-dist")` — a different convention from `pdf-canvas.tsx`'s static import.
- SSR mode hints: `apps/web/src/routes/builder/$resumeId/index.tsx:4` (`ssr: false`), `apps/web/src/routes/$username/$slug.tsx` (`ssr: "data-only"`).
**Impact:** A future contributor adding a static PDF.js import inside a SSR-rendered route component will break SSR with a `window is not defined` error at build/run time. There is no lint rule or build-time guard enforcing this.
**Fix approach:**
1. Document the boundary explicitly at the top of `apps/web/src/components/resume/preview.tsx` and `pdf-canvas.tsx` (currently only described in `AGENTS.md:35`).
2. Consider a Vite SSR-externals config that aborts the build if `pdfjs-dist` / `@react-pdf/renderer` is reachable from an SSR-eligible route.
3. Switch `apps/web/src/routes/templates/$.tsx:1` to a dynamic `import("@react-pdf/renderer")` inside the `useIsClient()` branch for consistency with the rest of the preview pipeline.
### Fragile: `getStorageService()` is captured at module load in router
`packages/api/src/routers/storage.ts:7` calls `getStorageService()` at module top level. Because `apps/web/src/routes/api/rpc.$.ts` constructs a new `RPCHandler` on every request, the router's storage reference is fixed for the lifetime of the Node process.
**Impact:** Switching backends (e.g. flipping S3 vars on at runtime) requires a process restart, which is normally fine — but the singleton is also held inside Nitro's HMR boundary in dev, so config changes during `pnpm dev` need a full restart (not just a save).
**Fix approach:** Call `getStorageService()` inside each handler instead, or invalidate the cached service when env values change.
### Fragile: `RPCHandler` instantiated per-request
`apps/web/src/routes/api/rpc.$.ts:8-16` creates a new `RPCHandler` (with plugins) for every incoming request. Each instance re-walks the router tree and re-constructs plugin pipelines.
**Impact:** Measurable per-request cost on high-RPS dashboards; not catastrophic but unnecessary.
**Fix approach:** Move `new RPCHandler(...)` out of the handler and reuse a module-level instance; only `getLocale()` should run per-request.
### Performance: PDF preview regenerates entire PDF on every change
`apps/web/src/components/resume/preview.browser.tsx:103-131` debounces PDF generation by 100ms and calls `pdf(resumeDocument).toBlob()` on every resume change. For multi-page resumes with images, this re-renders the full document and re-loads it into PDF.js.
**Impact:** Builder feels sluggish on slower hardware when typing into fields; CPU spikes on each keystroke after debounce.
**Mitigation in place:** `UPDATE_DEBOUNCE_MS = 100`, crossfade between staged/active layers (`:20-80`).
**Fix approach:** Long-term, switch to incremental rendering or page-level memoization keyed by section hash. Short-term, raise debounce to 200–300 ms while typing.
### Performance: font registration cost
`packages/pdf/src/hooks/use-register-fonts.ts:18, :86` keeps a module-level `registeredFontVariants` Set keyed by `family:weight:style`. Per-resume registration calls `Font.register` once per (family × weight × italic × CJK-fallback) combination, with web-font fetches resolved through `getWebFontSource`. This Set never expires — if many resumes with different typography are previewed in one session, the registered-font count grows for the page lifetime.
**Impact:** Memory grows in the builder for sessions that switch typography frequently. Not a leak in the GC sense, but bounded only by the size of the registered-font universe.
**Fix approach:** Acceptable for current usage. Document the cap and reconsider if typography switching becomes more common.
### Performance: large source files hint at oversized modules
Top offenders by line count (excluding generated/test fixtures):
| Lines | File |
|------:|------|
| 1535 | `packages/schema/src/icons.ts` (static data) |
| 1088 | `apps/web/src/routes/builder/$resumeId/-components/assistant.tsx` |
| 900 | `packages/pdf/src/templates/shared/sections.tsx` |
| 789 | `apps/web/src/components/input/rich-input.tsx` |
| 785 | `packages/import/src/reactive-resume-v4-json.tsx` |
| 685 | `packages/ui/src/components/sidebar.tsx` |
| 556 | `apps/web/src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx` |
| 543 | `packages/api/src/services/resume.ts` |
`assistant.tsx` (1088 lines) and `sections.tsx` (900 lines) are particularly likely to accumulate further complexity without splitting. `rich-input.tsx` (789 lines) is the rich-text editor — likely justifies its size but has zero direct tests.
**Fix approach:** Split `assistant.tsx` along tool boundaries; extract per-section renderers from `sections.tsx` if any individual section grows further.
### Security: `verifyPassword` rate limit keyed by `username:slug:ip`
`packages/api/src/middleware/rate-limit/index.ts:77-83` keys the resume-password limiter on `resume-password:{username}:{slug}:{clientKey}` where `clientKey` is the client IP. The window/max is 5 attempts per 10 minutes (`packages/utils/src/rate-limit.ts:43`). This is reasonable, but the global Better Auth global rule for `/two-factor/verify-otp` is also 5 per 600s. An attacker on a botnet (different IPs) is not blocked at the resource level — each IP gets its own 5/10min budget against the same resume.
**Impact:** Limited but present brute-force surface on password-protected public resumes.
**Fix approach:** Add a per-resume global cap on top of the per-IP limit (e.g. 50/hour per `username:slug` regardless of IP).
### Security: `as string` cast on password hash
`packages/api/src/services/resume.ts:487` casts `resume.password` to `string` after a `isNotNull(schema.resume.password)` WHERE clause. The cast is correct in context, but if a future refactor drops the `isNotNull` guard the cast silently allows `null` through `bcrypt.compare`.
**Fix approach:** Replace `as string` with a runtime `if (!resume.password) throw new ORPCError(...)` check.
### Security: trust of `TRUSTED_IP_HEADERS` is unconditional
`packages/utils/src/rate-limit.ts:1-7` defines a list of trusted IP headers (`CF-Connecting-IP`, `True-Client-IP`, `X-Forwarded-For`, etc.) that the rate limiter and Better Auth (`packages/auth/src/config.ts:276`) honour from any caller.
**Impact:** If the app is deployed without a proxy that strips client-supplied versions of these headers, any client can spoof their rate-limit identity by setting `X-Forwarded-For: 1.2.3.4`.
**Fix approach:** Document that operators **must** terminate at a trusted proxy (Cloudflare, nginx, Caddy) that strips inbound `X-Forwarded-For` / `X-Real-IP`. Optionally, add a `TRUST_PROXY` env flag and only honour those headers when set.
### Fragile: `cachedTransport` in `email/transport.ts` ignores env mutation
`packages/email/src/transport.ts:21-37` caches the nodemailer transport on first use. If SMTP creds change at runtime (e.g. credential rotation in a deployed instance), the cached transport keeps using the stale credentials until the process restarts.
**Fix approach:** Detect cred changes and rebuild, or document the restart-on-rotation behaviour.
### Storage gotcha: statistics cache is filesystem-bound even with S3 configured
`packages/api/src/services/statistics.ts:21-52` caches user/resume/star counts as files in `getLocalDataDirectory(env.LOCAL_STORAGE_PATH)` regardless of whether S3 is enabled.
**Impact:** When S3 is configured and `LOCAL_STORAGE_PATH` is on ephemeral storage (e.g. container scratch), the cache is recreated on every redeploy — meaning a cold start always queries the DB / GitHub API rather than re-using the cache. Also breaks horizontal scaling — each replica has its own cache file.
**Fix approach:** Cache via the configured storage service (`getStorageService`) instead of raw `fs`, or move to an in-memory + TTL cache.
---
## Low Severity
### Tech Debt: generated file you must not edit
`apps/web/src/routeTree.gen.ts` (983 lines, `eslint-disable`, `@ts-nocheck` at top) is auto-generated by TanStack Router. It is correctly excluded from Biome (`biome.json:14`) and noted in `AGENTS.md:31`.
**Action required of contributors:** Never hand-edit. Regenerate by running `pnpm dev` (TanStack tooling watches `apps/web/src/routes/**`).
### Tech Debt: dev workflow — `pnpm check` is write-capable
`package.json:20` defines `"check": "biome check --write --unsafe ."`. Running `pnpm check` will modify files. The lefthook pre-commit (`lefthook.yml:7-9`) runs the same command on staged files only, and `stage_fixed: true` re-stages them.
**Impact:** Surprise file modifications when a contributor runs `pnpm check` expecting a non-mutating audit.
**Fix approach:** Add a parallel `pnpm check:ci` (no `--write`) for inspection, and document the distinction (already covered in `AGENTS.md:103`).
### Tech Debt: dev gotcha — `drizzle-kit` does not auto-load `.env`
`packages/db/drizzle.config.ts:8` reads `process.env.DATABASE_URL || ""`. The `@reactive-resume/env` package auto-loads `.env` via dotenv (`packages/env/src/server.ts:9-11`), but `drizzle-kit` runs as a separate process that does not import `@reactive-resume/env`.
**Impact:** Fresh `pnpm db:migrate` silently fails with an empty connection string unless `DATABASE_URL` is exported in the shell. Documented in `AGENTS.md:58, :79-80`.
**Fix approach:** Either import the env package from `drizzle.config.ts` to inherit the `.env` load, or wrap the script with a one-liner that exports `DATABASE_URL`.
### Tech Debt: Nitro plugin auto-runs migrations on dev/prod boot
`apps/web/plugins/1.migrate.ts:23-40` runs migrations on every Nitro startup. This is convenient but couples app-boot health to migration health.
**Impact:**
- A bad migration takes down the whole web service on boot, not just future migration runs.
- Two app instances starting concurrently both call `migrate()`; Drizzle's `migrations` table uses transactions to avoid duplicate apply, but the race adds startup latency.
- For prod self-hosters, there is no "boot-without-migrate" knob.
**Fix approach:** Gate on an env flag (e.g. `RUN_MIGRATIONS_ON_BOOT=true`, default true) and document running `pnpm db:migrate` separately in zero-downtime deploys.
### Tech Debt: S3 toggle is all-or-nothing
`packages/api/src/services/storage.ts:336` and `apps/web/plugins/2.storage.ts:7`: storage backend selection requires all three of `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_BUCKET` to be set. Setting two of three silently falls back to local storage.
**Impact:** Operator misconfigures S3 (e.g. forgets `S3_BUCKET`), app silently writes to local FS — uploads disappear on next container restart on ephemeral disks.
**Fix approach:** Treat "any S3 var set" as "S3 intended" — throw on partial config rather than silently downgrading.
### Security: no global CSP / X-Frame-Options on HTML responses
A repo-wide grep for `Content-Security-Policy`, `X-Frame-Options`, `Strict-Transport-Security` finds them only in the uploads route (`apps/web/src/routes/uploads/$userId.$.tsx:159-165`) and the schema JSON route (`apps/web/src/routes/schema[.]json.ts`). The HTML shell (`apps/web/src/routes/__root.tsx`) sets no CSP, no HSTS, no `Permissions-Policy`, no `Referrer-Policy`.
**Impact:**
- No clickjacking protection on the resume builder or public resume pages — they can be framed by any origin.
- No CSP means an XSS through rich-text rendering (`packages/utils/src/sanitize.*`, `packages/pdf/src/templates/shared/rich-text-html.ts`) has no defence-in-depth.
**Fix approach:** Add a Nitro response hook that sets `Content-Security-Policy`, `Strict-Transport-Security`, `Referrer-Policy: strict-origin-when-cross-origin`, `X-Content-Type-Options: nosniff`, and `X-Frame-Options: SAMEORIGIN` on all HTML responses. Validate that the CSP allows `pdf.worker.min.mjs`, `@react-pdf/renderer` font fetches, and the configured S3/SeaweedFS origin.
### Security: OAuth dynamic-client registration allows unauthenticated callers
`packages/auth/src/config.ts:395-401` enables `allowDynamicClientRegistration: true` and `allowUnauthenticatedClientRegistration: true` on the oauthProvider plugin. The comment (`:397-399`) explicitly states this is required for MCP onboarding (RFC 7591) and that the phishing vector is closed by the redirect-URI allowlist in `hooks.before` (`:253-271`) and `apps/web/src/routes/api/auth.$.ts:97-111`.
**Impact:** Anyone can register an OAuth client. The protection depends entirely on the redirect-URI allowlist correctness in `parseAllowedHostList(env.OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS)` and `isAllowedOAuthRedirectUri`.
**Fix approach:** Already mitigated in code; the residual risk is operator misconfiguration of `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`. Add a startup warning when `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS` is empty (i.e. allowlist is APP_URL-only).
### Tech Debt: log noise on auth fallthrough
`packages/api/src/context.ts:25, :37, :53` calls `console.warn` for every failed Bearer / session / API-key validation. In an unauthenticated user flow that hits the same route via Bearer-not-present → session-cookie path, no warning fires, but in an actual token-mismatch path the warning fires on every request.
**Impact:** Log volume in production when API keys expire or rotate. Logs may leak token shape information indirectly via repeated warnings.
**Fix approach:** Drop to `console.debug` (which is no-op in default Node), or rate-limit the warning per token-hash.
### Tech Debt: `getStorageService()` cached service singleton in module-load order
`packages/api/src/services/storage.ts:343-350` caches the service at first call. Combined with the `packages/api/src/routers/storage.ts:7` top-level call, if storage env vars are not present at module-load time (e.g. `.env` not loaded yet) the local backend is wired in permanently for the process.
**Fix approach:** Lazy-validate env on first use, not at module load.
### Anti-pattern: empty catch swallows preview generation errors
`apps/web/src/components/resume/preview.browser.tsx:120`:
```ts
} catch {}
```
A failed PDF generation in the builder preview is silently swallowed. The crossfade machinery keeps showing the previous preview, masking template bugs or runtime errors from contributors during development.
**Fix approach:** At minimum, `console.error` the failure (matching the pattern used in `pdf-canvas.tsx:68`). Better: surface a toast or banner so failed-preview state is visible.
### Anti-pattern: `console.warn`/`error` lacks structure
Every error log in `packages/api/src` uses `console.warn`/`console.error` with positional args (e.g. `services/resume.ts:158, :293, :363`, `context.ts:25, :37, :53`). There is no centralised logger, no structured fields, no request correlation ID.
**Fix approach:** Introduce a minimal logger (pino-light or a thin wrapper) with `level`, `event`, `userId`, `requestId` fields. Already partly done in the healthcheck (`apps/web/src/routes/api/health.ts:65, "[Healthcheck]"`).
### Fragile: in-process pub/sub for resume update events
`packages/api/src/services/resume-events.ts` (the subscribe path consumed by `packages/api/src/routers/resume.ts:99-103`'s `subscribeResumeUpdates`) is in-process. Two web replicas will not see each other's resume update events.
**Impact:** Multi-tab / multi-device builder sync across replicas does not work behind a load balancer.
**Fix approach:** Redis pub/sub or Postgres `LISTEN/NOTIFY` once distributed deployment becomes a target.
---
## Migration & Schema Concerns
### Migration count is small but each is unversioned in app
- 13 migration files in `migrations/` (`migrations/20260114102228_*` through `migrations/20260507144406_*`).
- The Nitro plugin runs every pending migration on every boot (`apps/web/plugins/1.migrate.ts:23-40`).
- There is no "down" / rollback story. Drizzle-kit generates forward-only migrations.
**Action:** Standard for drizzle workflows. Document that downgrade requires manual SQL.
### Schema notes
- `packages/db/src/schema/resume.ts:24` stores `password` as plaintext column type `text`, but content is always bcrypt-hashed at write (`packages/api/src/services/resume.ts:453`). Column name is misleading — should be `password_hash`. Renaming requires a non-trivial migration.
---
## Dependency Risk
### Pre-1.0 / preview dependencies in production critical path
| Package | Version | Risk |
|---|---|---|
| `drizzle-orm` | `1.0.0-beta.22` | Beta. Breaking changes possible until 1.0.0 stable. (`packages/api/package.json`, `packages/auth/package.json`, `packages/db/package.json`, `apps/web/package.json`) |
| `drizzle-kit` | `1.0.0-beta.22` | Beta migrator. Snapshot format may change. (`packages/db/package.json`) |
| `drizzle-zod` | `1.0.0-beta.14-a36c63d` | Beta + specific commit hash — version drift risk. (`packages/api/package.json`) |
| `nitro` | `3.0.260429-beta` | Beta server runtime in the critical path. (`apps/web/package.json`) |
| `@typescript/native-preview` | `7.0.0-dev.20260510.1` | Dev build of `tsgo`. All packages use it for `typecheck`. |
| `typescript` | `^6.0.3` | TS 6 — recent major. |
| `vite` | `^8.0.11` | Vite 8 — recent major. |
| `react` / `react-dom` | `^19.2.6` | React 19. |
| `@orpc/experimental-ratelimit` | `^1.14.2` | Explicitly experimental in the package name. (`packages/api/package.json`) |
| `@tanstack/react-start` | `^1.167.65` | TanStack Start is pre-1.x semver but not labelled beta. |
| `better-auth` | `1.6.10` (exact) | Pinned exact, not `^`. Manual upgrade required for security patches. |
**Impact:** Library upgrades in this stack are high-risk; the team must follow each upstream's release notes closely. The `BETA` / `DEV` versions also affect lockfile churn.
**Fix approach:**
- Set up Renovate / Dependabot for the beta packages specifically, so security patches are caught.
- Run `pnpm knip` and `pnpm dlx npm-check-updates` regularly (both are devDependencies, `package.json:34, :40`).
### Several heavy native dependencies are externalised at build time
`apps/web/vite.config.ts:55-57` externals `bcrypt`, `sharp`, `@aws-sdk/client-s3`. `packages/runtime-externals` is the workspace package that wraps these. Knip is configured to ignore them (`knip.json:14`).
**Risk:** Operators must ensure these are installed at runtime (covered in `Dockerfile`). Self-hosters using a Node base image without build-essentials may hit `bcrypt` build failures.
**Fix approach:** Mostly documented; consider switching `bcrypt` → `bcryptjs` (pure JS) to remove a build dependency.
---
## Cross-Cutting Hard-to-Find Logic
These are non-obvious surfaces that consumers of this map should know about before changing related code:
1. **PDF section filtering** — `packages/pdf/src/templates/shared/filtering.ts:25-60` decides which resume sections render in PDFs based on hidden flags and required title fields. Per-template visual exceptions live in each template directory; cross-template visual changes go here. Noted in `AGENTS.md:44`.
2. **React-PDF font registration & CJK fallback stack** — `packages/pdf/src/hooks/use-register-fonts.ts:68-133`. Owns standard-PDF-font handling (`isStandardPdfFontFamily`), CJK glyph-level fallback (#2986), and global hyphenation callback. Module-level registration cache (`:18`). Noted in `AGENTS.md:45`.
3. **Resume access policy** — `packages/api/src/helpers/resume-access-policy.ts`. Single source of truth for owner-vs-viewer redaction (`name` and `metadata.notes` stripped for non-owners), `NOT_FOUND`-vs-`FORBIDDEN` choice (not-found used to avoid existence disclosure), and self-view statistics exclusion. Owner-only mutations rely on SQL `WHERE userId =` clauses, not this policy — drift between SQL guards and policy is silent.
4. **Resume password cookie** — `packages/api/src/helpers/resume-access.ts`. Cookie name `resume_access_{resumeId}`, signed value is `sha256(resumeId:passwordHash)`, TTL 10 minutes, `httpOnly`, `sameSite: lax`, `secure` only when `APP_URL` starts with `https`. Forgetting to set `APP_URL=https://...` in production drops the secure flag.
5. **OAuth `authorize` request sanitization** — `apps/web/src/routes/api/auth.$.ts:6-51` strips control chars from OAuth parameters and decodes broken-but-decodable redirect URIs before passing to Better Auth. Easy to bypass if a new OAuth flow is added that does not route through this handler.
6. **Dynamic client registration coercion to public client** — `apps/web/src/routes/api/auth.$.ts:53-80` forces `token_endpoint_auth_method = "none"` for unauthenticated registrations (specifically for Claude.ai's MCP onboarding quirk). This is non-standard behaviour buried in a request preprocessor.
7. **Builder draft sync** — `apps/web/src/components/resume/builder-resume-draft.ts:46-100` manages per-resume zustand stores keyed by resume id, with debounced patch-and-resync. Failure to clean up `runtimes` Map on resume close = subscription/timer leaks.
---
## Test Coverage Gaps (Priority Map)
| Area | Source files | Test files | Priority |
|------|-------------:|-----------:|----------|
| `apps/web/src/routes/**` | 125 | 1 | **High** — covers all server handlers and the builder shell |
| `apps/web/src/routes/api/**` (rpc/auth/uploads/openapi/mcp) | ~10 | 0 | **High** — security-sensitive route handlers |
| `apps/web/src/components/resume/**` | 5 | 2 | Medium |
| `apps/web/src/dialogs/**` | ~30 | 1 (`store.test.ts`) | Medium |
| `packages/api/src/routers/**` | 7 | 0 (DTO test only) | **High** — auth-protected procedures |
| `packages/api/src/services/**` | 8 | 1 (`ai.test.ts`) | High |
| `packages/auth/src/**` | 3 | 0 | **High** — central auth config never directly tested |
| `packages/email/src/**` | ~5 | 0 | Medium |
| `packages/import/src/**` | several importers | 1 (v4) | Medium |
| `packages/pdf/src/templates/shared/**` | ~20 | 11 | Low (well covered) |
---
*Concerns audit: 2026-05-11*
+238
View File
@@ -0,0 +1,238 @@
# Coding Conventions
**Analysis Date:** 2026-05-11
This document is the canonical short-form reference for code style, structure, and feature-boundary rules in the Reactive Resume monorepo. The authoritative long-form reference lives in `AGENTS.md` at the repo root — when in doubt, defer to it.
## Tooling Stack
- **Formatter + linter:** Biome 2.x (`biome.json`). Pre-commit hook (`lefthook.yml`) runs `biome check --write --unsafe` on staged JS/TS/JSON files.
- **Type checker:** `tsgo --noEmit` (the `@typescript/native-preview` TS implementation) in every workspace package and `apps/web`. Use `pnpm typecheck` at the root or `pnpm --filter <pkg> typecheck` per package.
- **TypeScript base config:** `packages/config/tsconfig.base.json`, consumed by `tsconfig.json` at root and per-package `tsconfig.json` files.
- **Commit hook:** commitlint with `@commitlint/config-conventional` (`commitlint.config.cjs`). `body-max-line-length` is disabled.
- **Internal CLI:** `pnpm check` is **write-capable** (`biome check --write --unsafe .`). Use `biome check .` (no `--write`) for read-only inspection.
## Biome Configuration (`biome.json`)
**Formatter:**
- `lineWidth: 120`
- `indentStyle: "tab"`
- `javascript.formatter.quoteStyle: "double"`
- CSS parser has `tailwindDirectives: true`
**Linter rules (notable):**
- `recommended: true`
- `suspicious.noExplicitAny: "error"` — `any` is forbidden
- `suspicious.noArrayIndexKey: "off"`
- `correctness.useExhaustiveDependencies: "info"` (not an error)
- `style.useImportType: { level: "on", options: { style: "separatedType" } }` — `import type` is required when an import is type-only and must be on its own line (not inlined per-specifier)
- `style.noInferrableTypes: "error"` — drop redundant annotations like `const x: number = 1`
- `style.noUselessElse: "error"`
- `style.useSelfClosingElements: "error"`
- `style.useSingleVarDeclarator: "error"`
- `style.noParameterAssign: "error"`
- `style.useDefaultParameterLast: "error"`
- `nursery.useSortedClasses: { level: "warn", fix: "safe", functions: ["clsx", "cva", "cn"] }` — Tailwind class strings inside these wrappers are sorted automatically
**Import organization:** Biome's `assist.actions.source.organizeImports` is `on`, grouped in this order (`biome.json` lines 32-39):
1. Type-only imports (`{ "type": true }`)
2. Node built-ins (`":NODE:"`, excluding Bun)
3. Vitest + Testing Library (`vitest`, `vitest/**`, `@testing-library/**`)
4. External npm packages (`:PACKAGE:`, excluding `@reactive-resume/**`)
5. Internal workspace packages (`@reactive-resume/**`)
6. App-local aliases / relative paths (`:ALIAS:`, `:PATH:`)
A representative file that demonstrates the order: `packages/api/src/services/resume.ts` (type imports → node-free externals → `@reactive-resume/*` → relatives).
**Biome ignores:** `**/.turbo`, `**/.output`, `**/.vercel`, `**/.wrangler`, `**/coverage`, `**/reports`, `**/routeTree.gen.ts`.
## TypeScript Conventions
**Strictness flags** in `packages/config/tsconfig.base.json` are intentionally aggressive:
- `strict: true`
- `verbatimModuleSyntax: true` (pairs with Biome's `useImportType` enforcement)
- `exactOptionalPropertyTypes: true`
- `noUncheckedIndexedAccess: true`
- `noUncheckedSideEffectImports: true`
- `noUnusedLocals: true`, `noUnusedParameters: true`
- `noFallthroughCasesInSwitch: true`
- `isolatedModules: true`, `moduleResolution: "bundler"`
- `target: "ESNext"`, `module: "ESNext"`
**Type-only imports:** Always use `import type { … }` on its own line when an import is only used in type positions. See `packages/api/src/services/resume.ts:1-5` and `packages/api/src/context.ts:1-2`.
**`any`:** Banned by Biome (`noExplicitAny: "error"`). Use `unknown` and narrow, or use a discriminated union.
**Path aliases (web app only):** `apps/web/tsconfig.json` declares:
- `@/*` → `./src/*`
- `@reactive-resume/ui/*` → `../../packages/ui/src/*` (build-time alias for direct source resolution)
Internal packages do NOT use `@/*` aliases — they import siblings via relative paths and cross-package code via the `@reactive-resume/*` export maps.
## Package Export Conventions (source-consumed packages)
**Internal packages export `src` files directly via `package.json` `exports`.** There is no per-package build step; consumers pick up the TS source through bundler/vitest resolution. Do not assume any `dist/` output.
Sample (`packages/utils/package.json`):
```json
{
"name": "@reactive-resume/utils",
"type": "module",
"exports": {
"./color": "./src/color.ts",
"./date": "./src/date.ts",
"./resume/docx": "./src/resume/docx/index.ts",
"./resume/patch": "./src/resume/patch.ts",
"./url-security.node": "./src/url-security.node.ts"
}
}
```
**Conventions when adding cross-package exports:**
- Use **explicit subpath exports**, not wildcards in `@reactive-resume/utils`/`@reactive-resume/db`. Some packages (`@reactive-resume/api`) do use wildcards like `"./services/*"` — match the style of the package you're editing.
- Filenames ending in `.node.ts` (e.g. `packages/utils/src/url-security.node.ts`, `packages/utils/src/monorepo.node.ts`) are reserved for Node-only code that must not be imported from the browser bundle.
- Filename suffixes `.browser.tsx` (e.g. `apps/web/src/components/resume/preview.browser.tsx`) mark code that must stay out of SSR paths.
## React & Web App Conventions
**Routing:** TanStack Router with file-based routes under `apps/web/src/routes`.
- Each route file calls `createFileRoute("/path")({ … })` and exports `Route`. Example: `apps/web/src/routes/auth/login.tsx:18`.
- `apps/web/src/routeTree.gen.ts` is generated — never hand-edit it (also Biome-ignored).
- Server-only handlers live in `server.handlers` blocks on routes like `apps/web/src/routes/api/rpc.$.ts`, `apps/web/src/routes/api/auth.$.ts`, `apps/web/src/routes/api/health.ts`.
- Public resume route `apps/web/src/routes/$username/$slug.tsx` is `ssr: "data-only"`; nested builder preview is `ssr: false`.
**Router context** (`apps/web/src/router.tsx`) provides `queryClient`, `orpc`, `theme`, `locale`, `session`, and `flags`. Read them via `Route.useRouteContext()` rather than refetching.
**Components:**
- Functional components only. React 19.
- File naming: **kebab-case** for files and directories (e.g. `apps/web/src/components/command-palette/`, `packages/ui/src/components/alert-dialog.tsx`, `apps/web/src/dialogs/api-key/create.tsx`).
- Test file: `<name>.test.ts(x)` colocated with the implementation (e.g. `packages/ui/src/components/button.tsx` + `packages/ui/src/components/button.test.tsx`).
- shadcn/Base UI primitive components in `packages/ui/src/components/*.tsx` are exported via the `./components/*` subpath. Hooks via `./hooks/*`.
**Tailwind class strings:** Always wrap in `clsx`, `cva`, or `cn` so Biome's `useSortedClasses` rule can sort them safely.
## oRPC Conventions (`packages/api`)
- **Procedures:** Build new procedures with `publicProcedure` or `protectedProcedure` from `packages/api/src/context.ts:79-99`. `protectedProcedure` adds the authenticated `User` to context and throws `ORPCError("UNAUTHORIZED")` otherwise; prefer it for anything authenticated.
- **Routers** live in `packages/api/src/routers/*.ts` and are composed in `packages/api/src/routers/index.ts` (`ai`, `auth`, `flags`, `resume`, `statistics`, `storage`). Each router file may export sub-routers internally (see `tagsRouter`, `statisticsRouter`, `analysisRouter`, `updatesRouter` in `packages/api/src/routers/resume.ts`).
- **Business logic** belongs in `packages/api/src/services/*.ts`. Handlers must stay thin: validate input, call a service, return its output. Example pattern: `packages/api/src/routers/resume.ts:24-26` calls `resumeService.tags.list(...)`.
- **DTOs / IO schemas** live in `packages/api/src/dto/*.ts` and are imported as `resumeDto.<op>.input` / `resumeDto.<op>.output`.
- **Errors:** Declare typed errors with `.errors({ CODE: { message, status } })` on the procedure (see `packages/api/src/routers/resume.ts:282-291`). Throw `new ORPCError("CODE")` inside services. The web side translates codes to user-facing strings in `apps/web/src/libs/error-message.ts`.
- **Route metadata:** Every procedure declares `.route({ method, path, tags, operationId, summary, description, successDescription })` so the OpenAPI/MCP endpoints stay accurate.
- **Rate limiting:** Apply via `.use(resumeMutationRateLimit)` / `.use(resumePasswordRateLimit)` from `packages/api/src/middleware/rate-limit`.
- **Web exposure:** Routers are mounted at `/api/rpc` by `apps/web/src/routes/api/rpc.$.ts`. The isomorphic client lives at `apps/web/src/libs/orpc/client.ts` — server-side calls use the in-process router client and browser calls hit `/api/rpc` with credentials.
## Drizzle Conventions (`packages/db`)
- **Schema location:** `packages/db/src/schema/*.ts`. Tables exported from `packages/db/src/schema/index.ts`.
- **Client:** `packages/db/src/client.ts`, exported as `@reactive-resume/db/client`.
- **Migrations:** Generated to **`migrations/` at the repo root** by `drizzle-kit generate`. Use `pnpm db:generate` after schema changes.
- **`DATABASE_URL` handling:** `drizzle-kit` does **not** auto-load `.env`. Always export `DATABASE_URL` in the shell (or prefix the command) before running `pnpm db:generate` / `pnpm db:migrate`.
- **Runtime migration:** `apps/web/plugins/1.migrate.ts` runs migrations on Nitro startup, so `pnpm db:migrate` is mostly used for first-time setup or debugging.
- **Patterns observed in `packages/db/src/schema/resume.ts`:**
- Primary keys use `pg.text("id").$defaultFn(() => generateId())` (UUIDv7 from `@reactive-resume/utils/string`).
- `createdAt` / `updatedAt` use `withTimezone: true`, `.defaultNow()`, and `$onUpdate(() => new Date())`.
- JSONB columns get `.$type<T>()` for end-to-end typing.
- Composite uniques/indexes are declared in the table's tuple callback.
- Foreign keys use `onDelete: "cascade"`.
## Schema-First Change Workflow
When changing resume data shape, propagate in this order (per `AGENTS.md`):
1. **`packages/schema/src/resume/*.ts`** — Zod schemas and types (entry point).
2. **`packages/api/src/dto/*.ts`** — API DTOs that re-use those schemas.
3. **`packages/import/src/*.tsx`** — importers (`json-resume`, `reactive-resume-json`, `reactive-resume-v4-json`).
4. **`packages/pdf/src/templates/**`** — PDF rendering for every template (`azurill`, `bronzor`, `chikorita`, `ditgar`, `ditto`, `gengar`, `glalie`, `kakuna`, `lapras`, `leafish`, `meowth`, `onyx`, `pikachu`, `rhyhorn`, `scizor`). Shared filtering: `packages/pdf/src/templates/shared/filtering.ts`.
5. **`apps/web/src/`** — builder forms and any consumer hooks.
Adding/renaming a template requires changes in `packages/schema/src/templates.ts`, `packages/pdf/src/templates/index.ts`, the template directory `packages/pdf/src/templates/<name>/`, and static previews under `apps/web/public/templates/{jpg,pdf}/`.
## Error Handling Patterns
- **Services:** Throw `new ORPCError("CODE")` (e.g. `NOT_FOUND`, `UNAUTHORIZED`, custom `RESUME_LOCKED`). Example: `packages/api/src/services/resume.ts:54`.
- **Routers:** Declare expected codes via `.errors({ … })` so callers get typed error narrowing.
- **Auth helpers** in `packages/api/src/context.ts:14-55` catch verification errors and `console.warn(...)` rather than throwing, returning `null` so the caller can fall through to the next auth method.
- **Web side:** `apps/web/src/libs/error-message.ts` exposes `getReadableErrorMessage`, `getOrpcErrorMessage`, and `getResumeErrorMessage` for translating raw errors into UI-safe strings. Pair with `sonner` toasts (see `apps/web/src/routes/auth/login.tsx:45-64`).
## Logging
- No dedicated logging framework. Use `console.warn` / `console.error` for diagnostic output, scoped tightly (see `packages/api/src/context.ts:25`).
- Server logs are also where dev-mode email verification links surface when SMTP is unconfigured.
## i18n & Translations (Lingui)
- **Library:** `@lingui/core`, `@lingui/react` with the babel macro plugin enabled in `apps/web/vitest.config.ts` and Vite config.
- **Config:** `apps/web/lingui.config.ts` — source locale `en-US`, pseudo locale `zu-ZA`, 50+ supported locales. Catalogs live in `apps/web/locales/{locale}.po`.
- **Usage:**
- Import macros: `import { t } from "@lingui/core/macro"` and `import { Trans } from "@lingui/react/macro"` (`apps/web/src/routes/auth/login.tsx:1-2`).
- Wrap displayed text in `<Trans>...</Trans>` for JSX or `` t`...` `` / `t({ message, comment })` for strings.
- Provide `comment:` for ambiguous fallback strings (see `login.tsx:57-60`).
- **Extraction:** `pnpm lingui:extract` (turbo task in `apps/web`). Crowdin sync runs via `.github/workflows/crowdin-sync.yml`.
## Comments Policy
Comments stay short and explain **why**, not what. Patterns observed:
- One-line `//` comments before a non-obvious decision (`vitest.setup.ts:5-7` explains why `cleanup()` is registered manually; `packages/utils/src/monorepo.node.test.ts:11` explains the `realpathSync` call).
- JSDoc/TSDoc only on cross-package public functions where intent matters (e.g. `packages/api/src/context.ts:57-63` documents `resolveUserFromRequestHeaders`).
- Inline `/* @__PURE__ */` annotations on `$onUpdate(() => new Date())` in Drizzle schemas (`packages/db/src/schema/resume.ts:36`).
- No commented-out code in commits.
## Git Hooks & Commit Style
**Lefthook (`lefthook.yml`):**
```yaml
pre-commit:
parallel: true
jobs:
- name: lint and format
glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}"
run: pnpm biome check --write --unsafe --no-errors-on-unmatched --files-ignore-unknown=true {staged_files}
stage_fixed: true
commit-msg:
jobs:
- name: commitlint
run: pnpm commitlint --edit {1}
```
The pre-commit hook **rewrites staged files** with Biome fixes (`stage_fixed: true`). Run `pnpm check` before staging to avoid surprises.
**Commit messages:** Conventional Commits (`commitlint.config.cjs` extends `@commitlint/config-conventional`). Examples from `git log`:
- `feat: implement an AI chat window for agentic resume building`
- `fix(pdf): register CJK fallback font so Chinese/Japanese/Korean text renders correctly`
- `fix(lapras): adjust lapras border color to fixed gray`
- `chore: migrate from jsdom to happy-dom for testing environment`
- `docs: update AGENTS.md with detailed codebase structure`
- `test: add unit and component tests across the monorepo`
- `chore(release): v5.1.2`
Allowed types: `feat`, `fix`, `chore`, `docs`, `test`, `refactor`, `style`, `perf`, `build`, `ci`, `revert`. Scope is optional and lowercase. `body-max-line-length` is disabled, so long PR bodies are fine.
## CI Workflows
- **`.github/workflows/autofix.yml`** runs on every PR and push to `main`: `pnpm install --frozen-lockfile` → `pnpm knip --fix` (prune unused deps) → `pnpm check` (Biome) → `autofix-ci/action` opens fix commits.
- **`.github/workflows/docker-build.yml`** is `workflow_dispatch` only, builds multi-arch Docker images.
- **`.github/workflows/crowdin-sync.yml`** syncs translation catalogs.
- There is no CI workflow that runs `pnpm test` today. Tests run locally via `pnpm test` / `pnpm test:ci` and through turbo's `test:agent` reporter for agent-driven runs.
## Function & Module Design
- **Function size:** Most service functions stay under ~40 lines. Bigger flows (e.g. `resumeService.patch`) are decomposed into helpers in `packages/api/src/helpers/*` and `packages/api/src/services/resume-events.ts`.
- **Parameters:** Service helpers consistently take a single object argument (`async ({ id, userId })`) rather than positional args. See `packages/api/src/services/resume.ts:27,41,65`.
- **Return values:** Services return plain typed objects; routers shape the response via `.output(schema)` so Zod validates at the boundary.
- **Module boundaries:**
- Cross-package imports must go through declared `exports` subpaths. Reaching into `packages/<x>/src/internal-file` directly is not allowed.
- `packages/utils` exports are narrowly scoped — if you need a new helper for another package, add a new explicit subpath in `packages/utils/package.json`.
- `packages/runtime-externals` and `packages/scripts` are support packages; avoid importing them into runtime code.
---
*Convention analysis: 2026-05-11*
+239
View File
@@ -0,0 +1,239 @@
# External Integrations
**Analysis Date:** 2026-05-11
## APIs & External Services
**AI Providers (user-supplied API keys, called per-request from `packages/api/src/services/ai.ts`):**
- OpenAI — Default base URL `https://api.openai.com/v1` (`packages/ai/src/types.ts`)
- SDK: `@ai-sdk/openai ^3.0.63` via `createOpenAI(...).chat(model)`
- API key supplied per-call from the resume's `ai` config; not read from server env
- Anthropic — Default base URL `https://api.anthropic.com/v1`
- SDK: `@ai-sdk/anthropic ^3.0.76` via `createAnthropic(...).languageModel(model)`
- Google Gemini — Default base URL `https://generativelanguage.googleapis.com/v1beta`
- SDK: `@ai-sdk/google ^3.0.71` via `createGoogleGenerativeAI(...).languageModel(model)`
- Vercel AI Gateway — Default base URL `https://ai-gateway.vercel.sh/v3/ai`
- SDK: `ai ^6.0.177` via `createGateway(...).languageModel(model)`
- OpenRouter — Default base URL `https://openrouter.ai/api/v1`
- SDK: `@ai-sdk/openai-compatible ^2.0.47` via `createOpenAICompatible({ name: "openrouter", ... })`
- Ollama — Default base URL `https://ollama.com/api`
- SDK: `ollama-ai-provider-v2 ^3.5.0` via `createOllama(...)`
- Security: `packages/api/src/services/ai.ts` `resolveBaseUrl` rejects non-HTTPS URLs, credentialed URLs, and private/loopback hosts (via `packages/utils/src/url-security.node.ts`).
- File-input AI calls are capped at 10MB (`MAX_AI_FILE_BYTES`).
**OAuth Identity Providers (server-side env-configured, optional):**
- Google — `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` (config in `packages/auth/src/config.ts`).
- GitHub — `GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET`.
- LinkedIn — `LINKEDIN_CLIENT_ID` / `LINKEDIN_CLIENT_SECRET`.
- Custom Generic OAuth — `OAUTH_PROVIDER_NAME`, `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET`, plus either `OAUTH_DISCOVERY_URL` or all three of `OAUTH_AUTHORIZATION_URL`/`OAUTH_TOKEN_URL`/`OAUTH_USER_INFO_URL`. Scopes from `OAUTH_SCOPES` (defaults `openid profile email`). Wired via Better Auth's `genericOAuth` plugin.
- Trusted providers for account linking (`packages/auth/src/config.ts`): `google`, `github`, `linkedin`.
**Translation / Localization:**
- Crowdin — `CROWDIN_PROJECT_ID`, `CROWDIN_PERSONAL_TOKEN`. Config in `crowdin.yml`; pull request automation labelled `l10n`. Source catalog `apps/web/locales/en-US.po`.
**Font Catalog Tooling:**
- Google Fonts Developer API — `GOOGLE_CLOUD_API_KEY` consumed by `packages/scripts/fonts/generate.ts` hitting `https://www.googleapis.com/webfonts/v1/webfonts`. Output committed at `packages/fonts/src/webfontlist.json`.
## Data Storage
**Databases:**
- PostgreSQL — Required relational database.
- Connection env: `DATABASE_URL` (validated as `postgres(ql)://...` in `packages/env/src/server.ts`)
- Client: `drizzle-orm 1.0.0-beta.22` with `pg ^8.20.0` Pool, instantiated in `packages/db/src/client.ts` (singleton via `globalThis.__pool` / `globalThis.__drizzle`).
- Schema location: `packages/db/src/schema/index.ts` (auth + resume tables) with `packages/db/src/relations.ts`.
- Migrations: generated by `drizzle-kit` into repo-root `migrations/` (e.g. `20260507144406_fast_nova/`). Generator config at `packages/db/drizzle.config.ts`.
- Auto-migration on app start: `apps/web/plugins/1.migrate.ts` runs `drizzle-orm/node-postgres/migrator` against the resolved migrations folder.
- `drizzle-kit` does NOT auto-load `.env` — `DATABASE_URL` must be exported before running `pnpm db:generate` / `pnpm db:migrate` (see `AGENTS.md` "Important" callout).
- Health probe: `packages/api/src/services/storage.ts` healthcheck + `apps/web/src/routes/api/health.ts` runs `SELECT 1` through Drizzle (1.5s timeout).
**File Storage (selected at runtime in `packages/api/src/services/storage.ts`):**
- S3-compatible object storage when all three of `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_BUCKET` are set.
- Client: `@aws-sdk/client-s3 ^3.1045.0` (`S3Client` constructed in `S3StorageService`).
- Options: `S3_REGION` (default `us-east-1`), `S3_ENDPOINT` (for non-AWS), `S3_FORCE_PATH_STYLE`.
- Tested compatible backends: AWS S3 and SeaweedFS (see `compose.dev.yml` / `compose.yml`).
- All writes use `ACL: "public-read"` (consumed publicly from `/uploads/$userId/$` route, with path validation).
- Local filesystem fallback (`LocalStorageService`) used when any of the three S3 vars is missing.
- Path: `LOCAL_STORAGE_PATH` if set (must be absolute); otherwise `<workspace>/data` in dev or `/app/data` in the Docker image.
- Validated at boot by `apps/web/plugins/2.storage.ts` (mkdir + access check).
- Key layout (built in `packages/api/src/services/storage.ts`):
- `uploads/{userId}/pictures/{timestamp}.jpeg`
- `uploads/{userId}/screenshots/{resumeId}/{timestamp}.jpeg`
- `uploads/{userId}/pdfs/{resumeId}/{timestamp}.pdf`
- Public read route: `apps/web/src/routes/uploads/$userId.$.tsx` (ETag, content-type sniffing, path traversal protection).
- Image preprocessing: `sharp ^0.34.5` resizes to 800x800 and re-encodes JPEG at quality 80, unless `FLAG_DISABLE_IMAGE_PROCESSING=true`.
**Caching:**
- No external cache (Redis/Memcached) configured.
- In-process rate limiter: `@orpc/experimental-ratelimit` `MemoryRatelimiter` (`packages/api/src/middleware/rate-limit/index.ts`).
- Workbox precache in the service worker (PWA) — `apps/web/vite.config.ts` `VitePWA` setup (skipWaiting, clientsClaim, cleanupOutdatedCaches).
## Authentication & Identity
**Auth Provider:** Better Auth `1.6.10`, configured in `packages/auth/src/config.ts`.
- Mounted as a TanStack Start server handler at `/api/auth/*` via `apps/web/src/routes/api/auth.$.ts`.
- Drizzle adapter: `@better-auth/drizzle-adapter` bound to `db` + schema (provider `pg`).
- Trusted origins: `http://localhost:3000`, `http://127.0.0.1:3000`, and the normalized origin of `APP_URL`.
- Secure cookies enabled automatically when `APP_URL` is `https://`.
- Trusted IP headers (used by both Better Auth `advanced.ipAddress.ipAddressHeaders` and the oRPC rate limiter): `CF-Connecting-IP`, `CF-Connecting-IPv6`, `True-Client-IP`, `X-Forwarded-For`, `X-Real-IP` (`packages/utils/src/rate-limit.ts`).
- Telemetry: explicitly disabled.
**Email/Password:**
- Enabled unless `FLAG_DISABLE_EMAIL_AUTH=true`.
- Password hash: `bcrypt` (cost 10) via `hash` / `compare` from `bcrypt ^6.0.0`.
- Min 8, max 64 char passwords.
- Email verification: sent on signup using `VerifyEmail` template from `@reactive-resume/email/templates/auth`.
- Reset password: `sendResetPassword` -> `ResetPasswordEmail` template.
- Email change: `sendChangeEmailConfirmation` -> `VerifyEmailChange` template.
**Better Auth Plugins (in `packages/auth/src/config.ts`):**
- `jwt()` — JWKS published at `/api/auth/jwks` (also referenced by `verifyOAuthToken`).
- `admin()` — Admin operations.
- `passkey()` (`@better-auth/passkey ^1.6.10`) — WebAuthn passkeys.
- `genericOAuth({ config })` — Driven by `OAUTH_*` env vars when configured.
- `twoFactor({ issuer: "Reactive Resume" })` — TOTP + backup codes; UI routes `/auth/verify-2fa` and `/auth/verify-2fa-backup`.
- `apiKey()` (`@better-auth/api-key ^1.6.10`) — Header `x-api-key`; `enableSessionForAPIKeys: true`; per-key rate limit 1000 req/hour.
- `oauthProvider()` (`@better-auth/oauth-provider ^1.6.10`) — Makes this app act as an OAuth 2.1 authorization server for MCP clients. Allows dynamic and unauthenticated client registration (RFC 7591) but redirect URIs are gated by an allowlist in the auth `hooks.before` middleware and `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`. Audiences whitelist: `${APP_URL}`, `${APP_URL}/`, `${APP_URL}/mcp`, `${APP_URL}/mcp/`.
- `username()` — Normalized lowercase usernames (`^[a-z0-9._-]+$`, length 3–64).
- `dash({ apiKey: BETTER_AUTH_API_KEY })` — Better Auth Dashboard (only when `BETTER_AUTH_API_KEY` is set).
**Social Providers:**
- Google, GitHub, LinkedIn — Each activates only when both `*_CLIENT_ID` and `*_CLIENT_SECRET` env vars are set (`packages/auth/src/config.ts`). `disableImplicitSignUp: true`; account linking enabled.
**Session / Access in API context:**
- `packages/api/src/context.ts` exposes `protectedProcedure` (referenced in `AGENTS.md`) for authenticated procedures.
- oRPC middleware reads request headers via `RequestHeadersPlugin` (`apps/web/src/routes/api/rpc.$.ts`, `apps/web/src/routes/api/openapi.$.ts`).
**API Key Auth for HTTP / MCP:**
- `x-api-key` header recognised by Better Auth API Key plugin.
- OpenAPI spec at `/api/openapi/spec.json` declares `apiKey` security scheme (`apps/web/src/routes/api/openapi.$.ts`).
- MCP server first tries OAuth Bearer (`Authorization: Bearer ...`), then falls back to `x-api-key` (`apps/web/src/routes/mcp/index.ts`).
## Monitoring & Observability
**Error Tracking:**
- None — no Sentry/Datadog/Rollbar SDK present.
- Errors are logged via `console.error` (oRPC interceptors `onError` in `apps/web/src/routes/api/rpc.$.ts` and `apps/web/src/routes/api/openapi.$.ts`).
**Health Checks:**
- `GET /api/health` — `apps/web/src/routes/api/health.ts` returns JSON with DB and storage status; 503 if unhealthy. Used by Docker `HEALTHCHECK`.
**Logs:**
- `console.info`/`console.warn`/`console.error` only. SMTP failures, missing config, sanitization diagnostics, and migration progress are all written to stdout/stderr.
## CI/CD & Deployment
**Hosting / Distribution:**
- Self-hosted Docker image — `Dockerfile` builds final image around `node:24-slim`, expose port 3000, default `LOCAL_STORAGE_PATH=/app/data`. Multi-stage uses `turbo prune` for both the web app and the `runtime-externals` package (which carries `bcrypt`, `sharp`, `@aws-sdk/client-s3` as native deps).
- Container labels point to `https://rxresu.me` and `https://docs.rxresu.me`.
**CI Pipeline:**
- Not present in this worktree (no `.github/workflows/` enumerated here). Scripts produce CI-friendly Vitest reports (`reports/vitest-junit.xml`, `reports/vitest-results.json`) via the `test:ci` task.
**Local Orchestration:**
- `compose.dev.yml` — `postgres:latest`, `seaweedfs:latest`, `seaweedfs_create_bucket` (uses `quay.io/minio/mc:latest`).
- `compose.yml` — Same services plus `reactive_resume` app container, networks `data_network` / `storage_network`.
**Git Hooks:**
- Lefthook (`lefthook.yml`) — `pre-commit` runs `biome check --write --unsafe` on staged JS/TS/JSON files; `commit-msg` runs `commitlint --edit`.
## Environment Configuration
**Required env vars (validated by Zod in `packages/env/src/server.ts`):**
- `APP_URL` — http(s) URL, used for auth base URL, OAuth audiences, OG metadata, and public upload URLs.
- `DATABASE_URL` — `postgres(ql)://...`.
- `AUTH_SECRET` — Better Auth signing secret (`openssl rand -hex 32`).
**Optional auth env vars:**
- `BETTER_AUTH_API_KEY` — Enables Better Auth Dashboard plugin.
- `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`.
- `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`.
- `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET`.
- `OAUTH_PROVIDER_NAME`, `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET`, `OAUTH_DISCOVERY_URL`, `OAUTH_AUTHORIZATION_URL`, `OAUTH_TOKEN_URL`, `OAUTH_USER_INFO_URL`, `OAUTH_SCOPES`, `OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS`.
**Optional SMTP env vars (all required together to enable real sends):**
- `SMTP_HOST`, `SMTP_PORT` (default 587), `SMTP_USER`, `SMTP_PASS`, `SMTP_FROM`, `SMTP_SECURE` (default false). Fallback in `packages/email/src/transport.ts`: log to console with subject/body when SMTP is not fully configured.
**Optional storage env vars:**
- `LOCAL_STORAGE_PATH` — Must be absolute when set.
- `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_REGION` (default `us-east-1`), `S3_ENDPOINT`, `S3_BUCKET`, `S3_FORCE_PATH_STYLE` (default false).
**Optional feature flags:**
- `FLAG_DISABLE_SIGNUPS` — Disables signups across all providers.
- `FLAG_DISABLE_EMAIL_AUTH` — Disables email/password auth and verification flows.
- `FLAG_DISABLE_IMAGE_PROCESSING` — Skips Sharp resize/encode (useful on resource-constrained hardware).
**Optional tooling env vars:**
- `CROWDIN_PROJECT_ID` and `CROWDIN_PERSONAL_TOKEN` for Crowdin translation sync.
- `GOOGLE_CLOUD_API_KEY` — For `packages/scripts/fonts/generate.ts`.
**Secrets location:**
- `.env` at the repo root (gitignored). `.env.example` provides documented defaults. Existence noted: `.env.local`, `.env.production` files present locally (contents not read; may contain secrets).
- Turbo cache invalidation tied to env vars via `turbo.json` `globalEnv` whitelist.
## Webhooks & Callbacks
**Incoming:**
- OAuth provider callbacks served by Better Auth: `/api/auth/oauth2/callback/{providerId}` (e.g. `/api/auth/oauth2/callback/custom` configured in `packages/auth/src/config.ts`).
- OAuth Authorization Server endpoints (when this app acts as an OAuth provider for MCP clients): handled by Better Auth `oauthProvider` plugin under `/api/auth/oauth2/*`. Login/consent pages at `/auth/oauth` (`apps/web/src/routes/auth/oauth.ts`).
- `.well-known` discovery routes:
- `apps/web/src/routes/[.]well-known/oauth-authorization-server.ts` and `.../oauth-authorization-server.$.ts`
- `apps/web/src/routes/[.]well-known/oauth-protected-resource.ts` and `.../oauth-protected-resource.$.ts`
- `apps/web/src/routes/[.]well-known/openid-configuration.ts`
- `apps/web/src/routes/[.]well-known/mcp/server-card[.]json.ts`
- Generic catch-all: `apps/web/src/routes/[.]well-known/$.ts`
- MCP Streamable HTTP transport: `apps/web/src/routes/mcp/index.ts` (uses `WebStandardStreamableHTTPServerTransport`). Authenticates via OAuth Bearer or `x-api-key`.
**Outgoing:**
- AI provider HTTPS requests (see "AI Providers" above) — initiated per user request from `packages/api/src/services/ai.ts`.
- SMTP outbound (`packages/email/src/transport.ts`) for verification, password reset, and email-change confirmations.
- S3 PUT/GET/DELETE/LIST through `@aws-sdk/client-s3` when S3 storage is configured.
- Crowdin and Google Fonts requests only from CI / scripts, not from the runtime web app.
## API Endpoints Exposed by the App
| Endpoint | Handler | Purpose |
|----------|---------|---------|
| `/api/health` | `apps/web/src/routes/api/health.ts` | Liveness/readiness JSON (DB + storage). |
| `/api/auth/*` | `apps/web/src/routes/api/auth.$.ts` | Better Auth handler (sessions, OAuth, passkey, JWKS, etc.). |
| `/api/rpc/*` | `apps/web/src/routes/api/rpc.$.ts` | oRPC server (`packages/api/src/routers/index.ts`: `ai`, `auth`, `flags`, `resume`, `statistics`, `storage`). |
| `/api/openapi/*` | `apps/web/src/routes/api/openapi.$.ts` | OpenAPI-style REST wrapper of the oRPC router; spec at `/api/openapi/spec.json`. Auth via `x-api-key`. |
| `/mcp` | `apps/web/src/routes/mcp/index.ts` | MCP Streamable HTTP server (`@modelcontextprotocol/sdk`). |
| `/uploads/{userId}/...` | `apps/web/src/routes/uploads/$userId.$.tsx` | Public read of stored images/PDFs with ETag + path validation. |
| `/schema.json` | `apps/web/src/routes/schema[.]json.ts` | Resume JSON schema. |
| `/.well-known/...` | `apps/web/src/routes/[.]well-known/*` | OAuth/OIDC/MCP discovery documents. |
## Rate Limiting
**Better Auth (production only, see `packages/auth/src/config.ts` `isRateLimitEnabled`):**
- Global default: 60 req / 60s.
- `/sign-in/email`: 5/60s; `/sign-up/email`: 3/60s.
- `/request-password-reset`, `/send-verification-email`: 3/600s.
- `/two-factor/verify-otp`, `/verify-totp`, `/verify-backup-code`: 5/600s.
- `/is-username-available`: 20/60s.
- OAuth provider endpoints: `register` 5/60s, `authorize` 30/60s, `token` 20/60s, `introspect` 60/60s, `revoke` 30/60s, `userinfo` 60/60s.
- API keys: 1000 req / hour per key.
- Source: `packages/utils/src/rate-limit.ts`.
**oRPC procedure-level (in-memory, production only, see `packages/api/src/middleware/rate-limit/index.ts`):**
- `resumePassword`: 5 / 10min.
- `pdfExport`: 5 / 60s.
- `aiRequest`: 20 / 60s.
- `jobsSearch`: 30 / 60s.
- `jobsTestConnection`: 10 / 60s.
- `storageUpload`: 20 / 60s.
- `storageDelete`: 30 / 60s.
- `resumeMutations`: 60 / 60s.
- Keys are derived from authenticated user id when present, otherwise from the first trusted-IP header or a UA+language fingerprint.
## Optional Services Declared in Compose Files
| Service | Image | Purpose | File |
|---------|-------|---------|------|
| `postgres` | `postgres:latest` | Required PostgreSQL DB | `compose.dev.yml`, `compose.yml` |
| `seaweedfs` | `chrislusf/seaweedfs:latest` | Optional S3-compatible storage for dev/prod | `compose.dev.yml`, `compose.yml` |
| `seaweedfs_create_bucket` | `quay.io/minio/mc:latest` | One-shot init that creates `reactive-resume` bucket | `compose.dev.yml`, `compose.yml` |
| `reactive_resume` | Built from `Dockerfile` | The app itself in prod compose | `compose.yml` |
---
*Integration audit: 2026-05-11*
+210
View File
@@ -0,0 +1,210 @@
# Technology Stack
**Analysis Date:** 2026-05-11
## Languages
**Primary:**
- TypeScript `^6.0.3` — All workspace code under `apps/web/src` and `packages/*/src`. Typechecked with the experimental TS native compiler `@typescript/native-preview` (`7.0.0-dev.20260510.1`) via `tsgo --noEmit`.
- TSX (React 19) — UI components in `apps/web/src`, `packages/ui/src/components`, `packages/pdf/src/templates`, and email templates in `packages/email/src/templates`.
**Secondary:**
- JavaScript (ESM, `"type": "module"`) — A handful of config files such as `commitlint.config.cjs` and `apps/web/postcss.config` style snippets.
- JSON / JSONC — `package.json`, `tsconfig.json`, `biome.json`, `turbo.json`, `knip.json`, `apps/web/components.json`, `packages/schema/schema.json`, locale and webfont metadata.
- SQL — Drizzle-generated migrations under `migrations/` (e.g. `migrations/20260507144406_fast_nova/`).
- YAML — `compose.yml`, `compose.dev.yml`, `lefthook.yml`, `crowdin.yml`, `pnpm-workspace.yaml`.
- Markdown — `AGENTS.md`, `README.md`, `SECURITY.md`, `LICENSE`, docs under `docs/`.
## Runtime
**Environment:**
- Node.js `24` — Pinned in `Dockerfile` via `ARG NODE_VERSION=24`. Single Node process exposes the web app on port `3000`.
- Browser runtime — React 19 SSR + hydration via TanStack Start. PWA service worker registered from `apps/web/vite.config.ts`.
**Package Manager:**
- pnpm `11.0.9` — Pinned in `package.json` `packageManager` field (with integrity hash). Managed via Corepack (`corepack enable`) per `AGENTS.md`.
- Workspace topology: `pnpm-workspace.yaml` includes `apps/*` and `packages/*`.
- Lockfile: `pnpm-lock.yaml` is present and committed at repo root.
- `allowBuilds` in `pnpm-workspace.yaml`: `bcrypt`, `esbuild`, `lefthook`, `msw`, `sharp`.
- `postcss` is pinned by an override to `^8.5.14` in `pnpm-workspace.yaml`.
**Build Orchestrator:**
- Turborepo `^2.9.12` — `turbo.json` defines tasks (`build`, `dev`, `typecheck`, `test`, `db:generate`, `db:migrate`, `db:studio`, `lingui:extract`) and the `globalEnv` whitelist for cache invalidation.
- The Docker build also pins `turbo@2.9.9` via `pnpm dlx` for the pruner stages.
## Frameworks
**Core (apps/web):**
- React `^19.2.6` with `react-dom ^19.2.6` (from `apps/web/package.json`).
- TanStack Start `^1.167.65` — Full-stack framework wiring Vite, Nitro, and React Router. Server handlers live in route files under `apps/web/src/routes`.
- TanStack Router `^1.169.2` — File-based router. `apps/web/src/routeTree.gen.ts` is generated.
- TanStack React Query `^5.100.9` with SSR bridge `@tanstack/react-router-ssr-query ^1.166.12`.
- TanStack React Form `^1.32.0` and React Hotkeys `^0.10.0`.
- Vite `^8.0.11` (rolldown-based) — `apps/web/vite.config.ts` orchestrates plugins.
- Nitro `3.0.260429-beta` — Server framework used through `nitro/vite`. Plugins at `apps/web/plugins/1.migrate.ts` and `apps/web/plugins/2.storage.ts` run on Nitro startup.
- `srvx ^0.11.15` — HTTP server runtime used by Nitro/TanStack Start.
**RPC / API:**
- oRPC `^1.14.2` family — `@orpc/server`, `@orpc/client`, `@orpc/openapi`, `@orpc/json-schema`, `@orpc/zod`, `@orpc/tanstack-query`, `@orpc/experimental-ratelimit`.
- `@modelcontextprotocol/sdk ^1.29.0` — MCP server exposed at `/mcp` via `apps/web/src/routes/mcp/index.ts`.
**Auth:**
- Better Auth `1.6.10` — Core auth framework configured in `packages/auth/src/config.ts`.
- Better Auth plugins: `@better-auth/api-key ^1.6.10`, `@better-auth/drizzle-adapter ^1.6.10`, `@better-auth/infra ^0.2.6` (dashboard), `@better-auth/oauth-provider ^1.6.10`, `@better-auth/passkey ^1.6.10`, plus built-ins (`admin`, `jwt`, `twoFactor`, `username`, `genericOAuth`).
- `jose ^6.2.3` — JWT verification for OAuth tokens (MCP authentication).
- `bcrypt ^6.0.0` — Password hashing (10 rounds in `packages/auth/src/config.ts`).
**Database & ORM:**
- Drizzle ORM `1.0.0-beta.22` with PostgreSQL driver `pg ^8.20.0` (node-postgres).
- `drizzle-kit 1.0.0-beta.22` — Migration tooling. Config at `packages/db/drizzle.config.ts` (dialect `postgresql`, schema `./src/schema/index.ts`, out `../../migrations`).
- `drizzle-zod 1.0.0-beta.14-a36c63d` — Schema-derived Zod validators in `packages/api`.
**PDF / Rendering:**
- `@react-pdf/renderer ^4.5.1` with types `@react-pdf/types ^2.11.1` — Used by `packages/pdf/src/document.tsx` and all templates under `packages/pdf/src/templates/<name>/`.
- `pdfjs-dist 5.7.284` — Client-side PDF rendering and parsing (browser-only paths).
- `react-pdf-html ^2.1.5`, `node-html-parser ^7.1.0`, `phosphor-icons-react-pdf ^0.1.3`, `cjk-regex ^3.4.0` — PDF helpers and CJK fallback.
- Font registration owned by `packages/pdf/src/hooks/use-register-fonts.ts`; webfont catalog at `packages/fonts/src/webfontlist.json`.
**UI / Styling:**
- Base UI / shadcn-style components — `@base-ui/react ^1.4.1`, `shadcn ^4.7.0` (CLI), components live in `packages/ui/src/components/*.tsx`. Config at `apps/web/components.json` (style `base-nova`, base color `zinc`, icon library `phosphor`).
- Tailwind CSS `^4.3.0` via `@tailwindcss/vite ^4.3.0` and `@tailwindcss/postcss ^4.3.0`. Plugin `@tailwindcss/typography ^0.5.19`. Global stylesheet at `packages/ui/src/styles/globals.css`.
- PostCSS `^8.5.14` and `tw-animate-css ^1.4.0`.
- `class-variance-authority ^0.7.1`, `clsx ^2.1.1`, `tailwind-merge ^3.6.0`.
- Icons: `@phosphor-icons/react ^2.1.10`, `@phosphor-icons/web ^2.1.2`.
- Fonts: `@fontsource-variable/ibm-plex-sans ^5.2.8` (shipped with `packages/ui`).
- Theming: `next-themes ^0.4.6`.
- Animation: `motion ^12.38.0`.
- Toasts: `sonner ^2.0.7`.
- Command palette: `cmdk ^1.1.1`.
- Misc UI: `react-resizable-panels ^4.11.0`, `react-window ^2.2.7`, `react-zoom-pan-pinch ^4.0.3`, `qrcode.react ^4.2.0`, `@uiw/color-convert ^2.10.1`, `@uiw/react-color-colorful ^2.10.1`.
**Drag & Drop and Editing:**
- `@dnd-kit/core ^6.3.1`, `@dnd-kit/sortable ^10.0.0`, `@dnd-kit/utilities ^3.2.2`.
- TipTap `^3.23.1` editor with `starter-kit`, `pm`, `react`, plus extensions `color`, `highlight`, `table`, `text-align`, `text-style`.
**State / Validation / Patterns:**
- Zustand `^5.0.13` — Client and AI state stores (`packages/ai/src/store.ts`).
- Immer `^11.1.8`.
- Zod `^4.4.3` — Validators across schema, api, env, ai, import, utils packages.
- `ts-pattern ^5.9.0` — Pattern matching in API services.
- `es-toolkit ^1.46.1` and `fuse.js ^7.3.0`.
**Internationalization (i18n):**
- Lingui `^6.0.1` family — `@lingui/core`, `@lingui/react`, `@lingui/cli`, `@lingui/format-po`, `@lingui/vite-plugin`, `@lingui/babel-plugin-lingui-macro`.
- Babel transformer chain via `@rolldown/plugin-babel ^0.2.3` and `babel-plugin-macros ^3.1.0`.
- Locale config at `apps/web/lingui.config.ts` (source locale `en-US`, ~55 target locales, pseudo-locale `zu-ZA`).
- Translation catalogs at `apps/web/locales/{locale}.po`. Crowdin sync configured in `crowdin.yml`.
**Email:**
- React Email `^6.1.1` with `@react-email/ui ^6.1.1` — Templates in `packages/email/src/templates/auth.tsx`.
- Nodemailer `^8.0.7` SMTP transport — `packages/email/src/transport.ts`.
**AI:**
- Vercel AI SDK `ai ^6.0.177` and `@ai-sdk/react ^3.0.179`.
- Provider SDKs: `@ai-sdk/openai ^3.0.63`, `@ai-sdk/anthropic ^3.0.76`, `@ai-sdk/google ^3.0.71`, `@ai-sdk/openai-compatible ^2.0.47`, `ollama-ai-provider-v2 ^3.5.0`.
- Supported providers enumerated at `packages/ai/src/types.ts`: `openai`, `anthropic`, `gemini`, `vercel-ai-gateway`, `openrouter`, `ollama`.
- JSON patch / repair: `fast-json-patch ^3.1.1`, `jsonrepair ^3.14.0`, `deepmerge-ts ^7.1.5`.
**Storage:**
- AWS SDK v3 — `@aws-sdk/client-s3 ^3.1045.0` used in `packages/api/src/services/storage.ts`. Marked external in the rolldown build (see `apps/web/vite.config.ts`) and isolated into `packages/runtime-externals` for Docker.
**Image Processing:**
- Sharp `^0.34.5` — Used in `packages/api/src/services/storage.ts` `processImageForUpload`. Disabled when `FLAG_DISABLE_IMAGE_PROCESSING` is true.
**Document Generation / Import:**
- `docx ^9.6.1` — DOCX export utilities in `packages/utils/src/resume/docx/`.
- JSON Resume importers in `packages/import` (`json-resume`, `reactive-resume-json`, `reactive-resume-v4-json`).
**HTML Sanitization:**
- `dompurify ^3.4.2` — Used in `packages/utils/src/sanitize.ts`.
- `@sindresorhus/slugify ^3.0.0`, `unique-names-generator ^4.7.1`, `uuid ^14.0.0`.
**PWA:**
- `vite-plugin-pwa ^1.3.0` — Workbox-based service worker, manifest defined in `apps/web/src/libs/pwa`.
**Testing:**
- Vitest `^4.1.5` with `@vitest/coverage-v8 ^4.1.5` (provider `v8`).
- Shared config in `vitest.shared.ts`; per-package configs at `<pkg>/vitest.config.ts`.
- DOM: `happy-dom ^20.9.0` (`disableJavaScriptFileLoading`, `disableCSSFileLoading`, navigation disabled in `vitest.shared.ts`).
- Testing Library: `@testing-library/react ^16.3.2`, `@testing-library/dom ^10.4.1`, `@testing-library/jest-dom ^6.9.1`, `@testing-library/user-event ^14.6.1`.
- Tests are co-located in each package's `src/**/*.{test,spec}.{ts,tsx}` and discovered automatically.
**Lint / Format / Tooling:**
- Biome `^2.4.15` — Sole linter + formatter (`biome.json`: tabs, double quotes, line width 120, organized import groups, `useSortedClasses` for `clsx`/`cva`/`cn`). Pre-commit runs through Lefthook.
- Lefthook `^2.1.6` — Git hooks defined in `lefthook.yml` (`biome check --write --unsafe` on staged JS/TS/JSON files; `commitlint --edit` on commit messages).
- Commitlint `^21.0.0` with `@commitlint/config-conventional` (see `commitlint.config.cjs`).
- Knip `^6.12.2` — Dead-code/unused-deps detection (`knip.json`).
- `npm-check-updates ^22.1.1`.
- `tsx ^4.21.0` — Used by `packages/scripts` for ad hoc TS scripts.
## Key Dependencies
**Critical:**
- `@tanstack/react-start ^1.167.65` — App framework boundary; route server handlers depend on it.
- `@orpc/server ^1.14.2` — Type-safe RPC; backbone of `/api/rpc` and `/api/openapi`.
- `better-auth 1.6.10` — Identity, sessions, OAuth provider, MCP auth.
- `drizzle-orm 1.0.0-beta.22` + `pg ^8.20.0` — All DB access.
- `@react-pdf/renderer ^4.5.1` — Resume PDF generation.
- `@aws-sdk/client-s3 ^3.1045.0` — S3-compatible object storage.
- `@modelcontextprotocol/sdk ^1.29.0` — MCP server endpoint.
- `ai ^6.0.177` + `@ai-sdk/*` — Resume AI features (analysis, parsing, chat).
**Infrastructure:**
- `vite ^8.0.11` + `nitro 3.0.260429-beta` — Build and server runtime.
- `turbo ^2.9.12` — Workspace task graph and caching.
- `dotenv ^17.4.2` — Loaded by `packages/env/src/server.ts` for app/server code (drizzle-kit does NOT auto-load).
- `@t3-oss/env-core ^0.13.11` — Server env validation in `packages/env/src/server.ts`.
## Configuration
**TypeScript:**
- Root `tsconfig.json` extends `@reactive-resume/config/tsconfig.base.json` (`packages/config/tsconfig.base.json`).
- Each package has its own `tsconfig.json` and runs `tsgo --noEmit`.
- Apps/packages export source from `src/*.ts` via package.json `exports` — no `dist/` artifacts unless explicitly built (e.g. `apps/web/.output`).
**Build:**
- `apps/web/vite.config.ts` orchestrates `tailwindcss`, `tanstackStart`, `viteReact`, `lingui`, `babel` (Lingui macro preset), `nitro` (with `1.migrate.ts` and `2.storage.ts` plugins), and `VitePWA`.
- Rolldown externals: `bcrypt`, `sharp`, `@aws-sdk/client-s3` (kept out of the client/server bundle and provided by `packages/runtime-externals` in Docker).
- Output: `apps/web/.output/server/index.mjs` (Nitro), public assets in `apps/web/.output/public`.
**Database:**
- Drizzle config: `packages/db/drizzle.config.ts` — `dialect: "postgresql"`, schema in `packages/db/src/schema/index.ts`, migrations written to repo-root `migrations/`.
- Client: `packages/db/src/client.ts` exposes singleton `db` plus `Pool` via `pg`, using `env.DATABASE_URL`.
- Startup auto-migration: `apps/web/plugins/1.migrate.ts` runs `drizzle-orm/node-postgres/migrator` against the resolved `migrations/` folder.
**Environment:**
- Server env contract validated by Zod in `packages/env/src/server.ts` (via `@t3-oss/env-core`).
- `dotenv` auto-loads root `.env` from `packages/env/src/server.ts` using `findWorkspaceRoot()`.
- Required: `APP_URL`, `DATABASE_URL`, `AUTH_SECRET`.
- Cache invalidation env vars listed in `turbo.json` `globalEnv`.
- `.env.example` present at repo root; `.env.local` and `.env.production` exist locally (contents not read — may contain secrets).
**Linting / Formatting:**
- `biome.json` — Tabs, 120-col, double quotes, sorted Tailwind classes for `clsx|cva|cn`, organized import groups (`type` imports first, then Node built-ins, test packages, third-party, `@reactive-resume/**`, then aliases/relative).
- `lefthook.yml` — Pre-commit Biome on staged files; commit-msg Commitlint.
- `commitlint.config.cjs` — Conventional commits.
- `knip.json` — Workspace-level ignores for `runtime-externals` external deps.
**Container / Compose:**
- `Dockerfile` (multi-stage): `base` (Node 24 slim + corepack), `pruner` (turbo prune), `builder` (frozen lockfile install + `pnpm turbo run build --filter=web --force`), `runtime-pruner` + `runtime-deps` (deploy `@reactive-resume/runtime-externals` with native deps), final `runtime` image running `node .output/server/index.mjs`, HEALTHCHECK on `/api/health`.
- `compose.dev.yml` — Dev `postgres:latest` + `seaweedfs:latest` (S3 emulator) + `seaweedfs_create_bucket` init container using `quay.io/minio/mc:latest`.
- `compose.yml` — Same services plus the app container `reactive_resume` built from `Dockerfile`, with `data_network`/`storage_network` and S3 env defaults pointing at SeaweedFS.
## Platform Requirements
**Development:**
- Node.js 24, pnpm 11.0.9 (via Corepack), Docker (for Postgres / SeaweedFS).
- Repo-local `data/` directory for local-storage mode (auto-created by `apps/web/plugins/2.storage.ts`).
- `LOCAL_STORAGE_PATH` must be absolute when set.
- SMTP optional; without it `packages/email/src/transport.ts` logs the email to console.
**Production:**
- Single Node 24 process on port 3000 (`apps/web/.output/server/index.mjs`).
- Official Docker image listed in `Dockerfile` labels (`org.opencontainers.image.url=https://rxresu.me`).
- Production uses S3-compatible storage when all three of `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_BUCKET` are set; otherwise falls back to local filesystem under `/app/data` (per Dockerfile `ENV LOCAL_STORAGE_PATH=/app/data`).
- HEALTHCHECK polls `GET /api/health` (handler at `apps/web/src/routes/api/health.ts` checks DB and storage with a 1.5s timeout).
- Rate limiting only active when `NODE_ENV=production` (see `packages/auth/src/config.ts` and `packages/api/src/middleware/rate-limit/index.ts`).
---
*Stack analysis: 2026-05-11*
+394
View File
@@ -0,0 +1,394 @@
# Codebase Structure
**Analysis Date:** 2026-05-11
## Directory Layout
```text
reactive-resume/
├── apps/
│ └── web/ # Sole deployable application (TanStack Start / Vite / Nitro)
│ ├── plugins/ # Nitro startup plugins (run on `pnpm dev` / `pnpm start`)
│ ├── public/ # Static assets (PWA, opengraph, templates, screenshots)
│ ├── locales/ # Lingui `.po` translation catalogs (~40 locales)
│ ├── src/
│ │ ├── components/ # Reusable web components grouped by feature
│ │ ├── dialogs/ # Global dialog system + dialog implementations
│ │ ├── hooks/ # App-level React hooks
│ │ ├── libs/ # Browser/server glue (auth, orpc, query, resume, theme, locale, pwa)
│ │ ├── routes/ # File-based TanStack Router routes (UI + `server.handlers`)
│ │ ├── router.tsx # Router factory (builds query client, context, SSR query integration)
│ │ ├── routeTree.gen.ts # GENERATED — do not hand-edit
│ │ ├── server.ts # Nitro fetch entry (wraps `react-start/server-entry`)
│ │ └── index.css # Tailwind v4 entry
│ ├── components.json # shadcn config
│ ├── lingui.config.ts # i18n extract config
│ ├── vite.config.ts # Vite + TanStack Start + Nitro + PWA + Lingui
│ └── vitest.config.ts
├── packages/
│ ├── ai/ # AI prompts, Zustand store, patch-resume tool
│ ├── api/ # oRPC routers, services, helpers, DTOs, rate-limit middleware
│ ├── auth/ # Better Auth config and helpers
│ ├── config/ # Shared tsconfig + vitest base configs
│ ├── db/ # Drizzle client + schema (Postgres)
│ ├── email/ # Nodemailer transport + react-email templates
│ ├── env/ # `@t3-oss/env-core` server env (auto-loads root `.env`)
│ ├── fonts/ # Google Fonts metadata
│ ├── import/ # JSON Resume / Reactive Resume v3/v4 importers
│ ├── pdf/ # React PDF document, fonts, 14 templates, shared primitives
│ ├── runtime-externals/ # Declares bcrypt, sharp, @aws-sdk/client-s3 as runtime-only
│ ├── schema/ # Zod schemas (resume data, templates, page, analysis, icons)
│ ├── scripts/ # Standalone tsx scripts (db reset, font generation)
│ ├── ui/ # Shared Base UI + shadcn-style components
│ └── utils/ # Small focused helpers (color, date, html, sanitize, etc.)
├── migrations/ # Drizzle-generated SQL + snapshots (one folder per migration)
├── docs/ # Project documentation
├── skills/ # Internal agent skill definitions
├── data/ # Local-FS storage root (when S3 is unset) — gitignored runtime data
├── .vite-hooks/ # Lefthook-managed git hooks (commit-msg, pre-commit)
├── .github/ # GitHub Actions / issue templates
├── .claude/ # Project-local Claude/Codex agent assets
├── .codex/
├── .planning/ # GSD planning + codebase maps (this directory)
├── .vscode/
├── compose.dev.yml # Postgres + SeaweedFS for local dev
├── compose.yml # Production-shaped compose
├── Dockerfile # Node 24 multi-stage build
├── AGENTS.md # Canonical agent guide (symlinked from CLAUDE.md)
├── README.md
├── SECURITY.md
├── LICENSE
├── package.json # Root scripts (turbo run …) + workspace devDeps
├── pnpm-workspace.yaml # `apps/*` + `packages/*`
├── pnpm-lock.yaml
├── turbo.json # Pipeline + globalEnv allowlist
├── biome.json # Biome (lint + format) config
├── knip.json # Dead-code/dep analysis config
├── lefthook.yml # Git hooks
├── commitlint.config.cjs
├── crowdin.yml # Translation sync config
├── tsconfig.json # Root TS solution config
├── vitest.shared.ts / vitest.setup.ts # Shared vitest config and global setup
├── .ncurc.cjs # npm-check-updates ignore list
├── .env.example # Documented env vars
└── .gitignore / .dockerignore
```
## Directory Purposes
**`apps/web/`:**
- Purpose: The only deployed app — TanStack Start / React 19 / Vite / Nitro.
- Contains: Routes, components, dialogs, hooks, libs, server entry, build config.
- Key files: `apps/web/vite.config.ts`, `apps/web/src/router.tsx`, `apps/web/src/server.ts`, `apps/web/src/routes/__root.tsx`, `apps/web/plugins/1.migrate.ts`, `apps/web/plugins/2.storage.ts`.
**`apps/web/src/routes/`:**
- Purpose: TanStack Router file-based route tree. Each file is either a UI route, a server-only endpoint (`server.handlers`), or both.
- Notable subtrees:
- `__root.tsx` — global HTML shell, providers, head/meta, PWA scripts.
- `_home/` — public marketing layout (`route.tsx`, `index.tsx`, `-sections/{hero,features,faq,testimonials,...}.tsx`).
- `auth/` — login/register/2FA/password flows and OAuth callback (`oauth.ts`).
- `dashboard/` — authenticated dashboard (`route.tsx`, `index.tsx`, `resumes/`, `settings/{profile,preferences,api-keys,authentication,integrations,job-search,danger-zone}.tsx`, `-components/{header,sidebar,functions}.{ts,tsx}`).
- `builder/$resumeId/` — resume builder (`route.tsx` shell, `index.tsx` browser-only preview, `-components/`, `-sidebar/{left,right}/`, `-store/{section,sidebar}.ts`).
- `$username/$slug.tsx` — public/shared resume route (`ssr: "data-only"`).
- `api/` — server-only endpoints (`rpc.$.ts`, `auth.$.ts`, `health.ts`, `openapi.$.ts`, `uploads/$userId.$.ts`, `-helpers/resume-pdf.ts`).
- `mcp/` — Model Context Protocol server (`index.ts`, `-helpers/{tools,resources,prompts,mcp-server-card,mcp-tool-names,tool-annotations}.ts`).
- `[.]well-known/` — OAuth/OIDC/MCP discovery documents.
- `uploads/$userId.$.tsx` — etag/security-validated file serving.
- `templates/$.tsx` — template preview/download.
- `schema[.]json.ts` — `/schema.json` endpoint.
**`apps/web/src/components/`:**
- Purpose: Reusable, app-scoped components organized by domain.
- Subdirectories:
- `animation/` — Motion-driven UI (`comet-card`, `count-up`, `spotlight`, `text-mask`).
- `command-palette/` — Cmd-K UI (`index.tsx`, `store.ts`, `pages/`).
- `input/` — Custom inputs (`chip-input`, `color-picker`, `github-stars-button`, `icon-picker`, `rich-input`, `url-input`).
- `layout/` — Error/loading/not-found screens, breakpoint indicator.
- `level/`, `locale/`, `theme/`, `typography/` — combobox/toggle utilities for those concerns.
- `resume/` — Builder preview surface (`preview.tsx`, `preview.browser.tsx`, `preview.shared.tsx`, `pdf-canvas.tsx`, `builder-resume-draft.ts`).
- `ui/` — App-level UI extensions (`combobox.tsx`, `copyright.tsx`).
- `user/` — User dropdown menu.
**`apps/web/src/libs/`:**
- Purpose: Glue between UI and external systems.
- Contents:
- `auth/{client.ts,session.ts}` — Better Auth browser client + SSR session getter.
- `orpc/client.ts` — Isomorphic oRPC client (in-process server + RPCLink browser).
- `query/client.ts` — TanStack Query client factory.
- `resume/` — Section, PDF, and ordering helpers (`make-section-item.ts`, `move-item.ts`, `section-actions.ts`, `section-title.ts`, `section-title-locale.ts`, `pdf-document.tsx`, `pdf-document.server.tsx`, `section.tsx`).
- `theme.ts`, `locale.ts`, `pwa.ts`, `error-message.ts`, `tanstack-form.tsx` — direct app utilities.
**`apps/web/src/dialogs/`:**
- Purpose: Global imperative dialog system.
- Contents: `manager.tsx` (renders open dialogs), `store.ts` (Zustand store), then domain dialogs under `auth/`, `resume/{sections,template,index.tsx,import.tsx}`, `api-key/`.
**`apps/web/src/hooks/`:**
- Purpose: Web-app hooks. (Shared cross-package hooks live in `packages/ui/src/hooks/`.)
- Contents: `use-confirm.tsx`, `use-controlled-state.tsx`, `use-form-blocker.tsx`, `use-mobile.tsx`, `use-prompt.tsx`, `use-sync-form-values.ts`.
**`apps/web/plugins/`:**
- Purpose: Nitro startup plugins.
- Contents: `1.migrate.ts` (runs Drizzle migrations on boot), `2.storage.ts` (validates the local data dir when S3 isn't configured).
**`apps/web/public/`:**
- Purpose: Static assets served at the site root.
- Notable subdirs: `templates/{jpg,pdf}/` (per-template previews), `screenshots/` (PWA + marketing), `opengraph/`, `icon/`, `logo/`, `fonts/`, `photos/`, `sounds/`, `videos/`. Top-level files include `favicon.{ico,svg}`, `apple-touch-icon-180x180.png`, `manifest.webmanifest`, `pwa-{64,192,512}x.png`, `maskable-icon-512x512.png`, `robots.txt`, `sitemap.xml`, `funding.json`.
**`apps/web/locales/`:**
- Purpose: Lingui `.po` translation catalogs (~40 languages, `en-US` is source).
- Synced via `crowdin.yml` and `pnpm lingui:extract`.
**`packages/ai/`:**
- Purpose: AI prompt assets, patch-resume tool, sanitize/extraction helpers.
- Key paths: `packages/ai/src/prompts/{chat,analyze-resume,docx-parser,pdf-parser}-*.md`, `packages/ai/src/store.ts`, `packages/ai/src/tools/{patch-resume,patch-proposal}.ts`, `packages/ai/src/resume/{extraction-template,sanitize}.ts`.
**`packages/api/`:**
- Purpose: Server-side business logic exposed over oRPC. The only place oRPC procedures live.
- Key paths: `packages/api/src/context.ts` (auth context + `publicProcedure`/`protectedProcedure`), `packages/api/src/routers/{ai,auth,flags,resume,statistics,storage,index}.ts`, `packages/api/src/services/{resume,resume-events,storage,ai,auth,flags,statistics}.ts`, `packages/api/src/dto/resume.ts`, `packages/api/src/helpers/{resume-access,resume-access-policy}.ts`, `packages/api/src/middleware/rate-limit/index.ts`.
**`packages/auth/`:**
- Purpose: Better Auth instance and types reused by web routes and API context.
- Key paths: `packages/auth/src/config.ts` (Drizzle adapter, OAuth/passkey/2FA/api-key/JWT/MCP OAuth provider), `packages/auth/src/functions.ts`, `packages/auth/src/types.ts`.
**`packages/config/`:**
- Purpose: Shared tsconfig and vitest base configs consumed via workspace devDep.
- Key paths: `packages/config/tsconfig.base.json`, `packages/config/vitest.config.ts`.
**`packages/db/`:**
- Purpose: Drizzle client and schema. Migration tooling but **migrations live in repo-root `migrations/`** (`packages/db/drizzle.config.ts` → `out: "../../migrations"`).
- Key paths: `packages/db/src/client.ts` (singleton `pg.Pool` + `drizzle()` on `globalThis`), `packages/db/src/schema/{auth,resume,index}.ts`, `packages/db/src/relations.ts`.
**`packages/email/`:**
- Purpose: SMTP transport + react-email templates.
- Key paths: `packages/email/src/transport.ts`, `packages/email/src/templates/{auth,reset-password,verify-email,verify-email-change}.tsx`.
**`packages/env/`:**
- Purpose: Type-safe server environment variables. Auto-loads the repo-root `.env` for app/server callers (drizzle-kit must export `DATABASE_URL` manually).
- Key paths: `packages/env/src/server.ts`.
**`packages/fonts/`:**
- Purpose: Generated Google Fonts metadata used by the typography combobox and React PDF font registration.
- Key paths: `packages/fonts/src/index.ts`, `packages/fonts/src/webfontlist.json` (regenerated by `packages/scripts/fonts/generate.ts`).
**`packages/import/`:**
- Purpose: Importers that convert external resume formats into the shared `ResumeData` schema.
- Key paths: `packages/import/src/{json-resume,reactive-resume-json,reactive-resume-v4-json}.tsx`.
**`packages/pdf/`:**
- Purpose: React PDF rendering — the same code paths used by the browser preview and the server-side PDF download.
- Key paths: `packages/pdf/src/document.tsx`, `packages/pdf/src/context.tsx`, `packages/pdf/src/section-title.ts`, `packages/pdf/src/hooks/use-register-fonts.ts`, `packages/pdf/src/templates/index.ts`, `packages/pdf/src/templates/<name>/<Name>Page.tsx` (14 templates: `azurill`, `bronzor`, `chikorita`, `ditgar`, `ditto`, `gengar`, `glalie`, `kakuna`, `lapras`, `leafish`, `meowth`, `onyx`, `pikachu`, `rhyhorn`, `scizor`), shared primitives under `packages/pdf/src/templates/shared/` (`filtering.ts`, `rich-text.tsx`, `sections.tsx`, `primitives.tsx`, `picture.ts`, `page-size.ts`, `columns.ts`, `metrics.ts`, `meta-line.tsx`, `contact.ts`, `contact-item.tsx`, `level-display.tsx`, `section-links.ts`, `rich-text-html.ts`, `rich-text-spacing.ts`, `styles.ts`, `types.ts`, `context.tsx`).
**`packages/runtime-externals/`:**
- Purpose: Vendors `bcrypt`, `sharp`, `@aws-sdk/client-s3` so they stay runtime-only (Vite externalizes them in `apps/web/vite.config.ts:55`).
- No `src/` — `package.json` is the entire surface.
**`packages/schema/`:**
- Purpose: Source-of-truth Zod schemas for resume data, templates, page settings, AI analysis, and icon catalog.
- Key paths: `packages/schema/src/resume/{data,default,sample,analysis}.ts`, `packages/schema/src/templates.ts`, `packages/schema/src/page.ts`, `packages/schema/src/icons.ts`.
**`packages/scripts/`:**
- Purpose: Standalone tsx scripts; no exports.
- Key paths: `packages/scripts/database/reset.ts` (`pnpm --filter @reactive-resume/scripts db:reset`), `packages/scripts/fonts/generate.ts` (`pnpm --filter @reactive-resume/scripts fonts:generate`).
**`packages/ui/`:**
- Purpose: Shared component library (Base UI primitives + shadcn-style wrappers, Tailwind v4 styles).
- Key paths: `packages/ui/src/components/{dialog,dropdown-menu,command,resizable,form,tooltip,sonner,…}.tsx`, `packages/ui/src/hooks/{use-confirm,use-controlled-state,use-mobile,use-prompt}.tsx`, `packages/ui/src/styles/globals.css`.
**`packages/utils/`:**
- Purpose: Pure utility functions used everywhere. Each helper has its own export path; do not import internal files.
- Key paths: `packages/utils/src/{color,date,field,file,html,level,locale,network-icons,rate-limit,sanitize,string,style,url}.ts`, Node-only `packages/utils/src/{monorepo.node,url-security.node}.ts`, and `packages/utils/src/resume/{docx/index.ts,patch.ts}`.
**`migrations/`:**
- Purpose: Drizzle-generated migration directories (one per migration), kept at the repo root.
- Layout: each `YYYYMMDDhhmmss_<adjective>_<noun>/` contains `migration.sql` (the SQL Drizzle will apply) and `snapshot.json` (Drizzle's internal state).
- Applied by `apps/web/plugins/1.migrate.ts` on every server boot, and manually by `pnpm db:migrate`. Generated by `pnpm db:generate` (which writes here because of `out: "../../migrations"` in `packages/db/drizzle.config.ts`). Do not hand-edit `migration.sql`/`snapshot.json`.
**`data/` (and `apps/web/data/`):**
- Purpose: Default local-filesystem storage root when S3 vars are unset. `<workspace>/data` is validated/created at boot by `apps/web/plugins/2.storage.ts`. Override with `LOCAL_STORAGE_PATH` (must be absolute).
- `data/statistics/` and `apps/web/data/statistics/` exist as runtime byproducts; treat as gitignored runtime state.
**`.vite-hooks/`:**
- Purpose: Lefthook-managed git hooks (`pre-commit` runs `biome check`, `commit-msg` runs commitlint). Configured by `lefthook.yml` and `commitlint.config.cjs`.
**`.planning/`:**
- Purpose: GSD planning artifacts.
- Subdirectories: `.planning/codebase/` (this directory — analysis docs).
## Key File Locations
**Entry Points:**
- `apps/web/src/server.ts` — Nitro fetch entry.
- `apps/web/src/router.tsx` — Router factory.
- `apps/web/src/routes/__root.tsx` — Root route + global providers.
- `apps/web/plugins/1.migrate.ts` — Migration on boot.
- `apps/web/plugins/2.storage.ts` — Local storage validation on boot.
**Configuration:**
- `apps/web/vite.config.ts` — Vite + TanStack Start + Nitro + PWA + Lingui.
- `turbo.json` — Pipeline + `globalEnv` allowlist.
- `pnpm-workspace.yaml` — Workspaces (`apps/*` + `packages/*`).
- `biome.json` — Lint + format rules.
- `knip.json` — Dead-code analysis config.
- `lefthook.yml` — Git hooks.
- `packages/db/drizzle.config.ts` — Drizzle migration config (writes to `../../migrations`).
- `packages/env/src/server.ts` — Server env schema + `.env` loader.
- `apps/web/lingui.config.ts` — i18n extract config.
- `compose.dev.yml` / `compose.yml` — Postgres + SeaweedFS (dev) and prod-shaped compose.
**Core API:**
- `packages/api/src/routers/index.ts` — Router root.
- `packages/api/src/context.ts` — Auth resolver + procedure factories.
- `packages/api/src/services/resume.ts` — Resume CRUD/patch/lock/password/duplication.
- `packages/api/src/services/storage.ts` — S3 + local FS storage abstraction.
- `packages/api/src/helpers/resume-access-policy.ts` — Visibility/redaction policy.
**Core data:**
- `packages/db/src/schema/resume.ts` — Resume, statistics, analysis tables.
- `packages/db/src/schema/auth.ts` — Better Auth tables.
- `packages/db/src/client.ts` — Singleton `pg.Pool` + `drizzle()` client.
- `packages/schema/src/resume/data.ts` — Canonical Zod schema for `ResumeData`.
- `packages/schema/src/templates.ts` — Enum of template names.
**Core PDF:**
- `packages/pdf/src/document.tsx` — `ResumeDocument` root component.
- `packages/pdf/src/templates/index.ts` — Template registry.
- `packages/pdf/src/hooks/use-register-fonts.ts` — Font registration + CJK fallbacks.
- `packages/pdf/src/templates/shared/filtering.ts` — Shared section filtering.
**Auth:**
- `packages/auth/src/config.ts` — Better Auth instance.
- `apps/web/src/routes/api/auth.$.ts` — `/api/auth/*` handler with OAuth sanitization.
- `apps/web/src/libs/auth/{client.ts,session.ts}` — Browser client + SSR session helper.
**Testing:**
- `vitest.shared.ts`, `vitest.setup.ts` — Repo-wide setup (Testing Library, jest-dom, happy-dom env).
- `packages/config/vitest.config.ts` — Reusable Vitest base.
- `apps/web/vitest.config.ts` — Web app Vitest config.
## Naming Conventions
**Files:**
- Source files: `kebab-case.ts` / `kebab-case.tsx` (e.g. `resume-access-policy.ts`, `command-palette.tsx`).
- Component PascalCase is reserved for component names *inside* files; filenames stay kebab-case (e.g. `Button` exported from `packages/ui/src/components/button.tsx`).
- PDF template components are the one PascalCase exception: `packages/pdf/src/templates/azurill/AzurillPage.tsx` (kept that way because the directory name doubles as the template enum value).
- Tests sit next to their subject: `foo.ts` ↔ `foo.test.ts`, `foo.tsx` ↔ `foo.test.tsx`.
- Browser-only modules use a `.browser.tsx` suffix (e.g. `apps/web/src/components/resume/preview.browser.tsx`).
- Server-only modules use a `.server.tsx` suffix when they live next to browser counterparts (e.g. `apps/web/src/libs/resume/pdf-document.server.tsx`).
- Generated files use `.gen.ts` (e.g. `apps/web/src/routeTree.gen.ts`).
- Node-only utilities use a `.node.ts` suffix (e.g. `packages/utils/src/monorepo.node.ts`, `packages/utils/src/url-security.node.ts`).
**Routes (TanStack Router file conventions):**
- `$param.tsx` — dynamic path segment (e.g. `apps/web/src/routes/$username/$slug.tsx`).
- `$.tsx` — splat (matches the rest of the path; used for `api/rpc/$`, `api/auth/$`, `[.]well-known/$`).
- `_layout/` (underscore prefix) — pathless layout group (e.g. `apps/web/src/routes/_home/`).
- `-folder/` (dash prefix) — colocated, non-route helpers (`-components/`, `-sidebar/`, `-store/`, `-sections/`, `-helpers/`). The router ignores these.
- `[.]well-known` — escaped folder name for paths starting with a dot.
- `name[.]json.ts` — escaped dot in a route filename (used for `/schema.json`).
- `route.tsx` — layout/wrapper route at a directory level; `index.tsx` — index route inside it.
**Directories:**
- `apps/<app>` and `packages/<name>` — kebab-case workspace members.
- `packages/<name>/src/<subdomain>/<file>.ts` — every public path in `package.json` exports points into `src/`.
**Package names:** All workspace packages are scoped under `@reactive-resume/*` (`api`, `auth`, `db`, `ui`, etc.). The web app is just `web`.
## Where to Add New Code
**New oRPC procedure:**
- Define in `packages/api/src/routers/<domain>.ts`, register it on the exported router map, and add corresponding business logic to `packages/api/src/services/<domain>.ts`.
- If authenticated, prefer `protectedProcedure` from `packages/api/src/context.ts`.
- If it mutates resumes, attach `resumeMutationRateLimit` from `packages/api/src/middleware/rate-limit/index.ts`.
- Define input/output Zod schemas in `packages/api/src/dto/<domain>.ts` when reused.
**New database table or column:**
- Add the table/column to `packages/db/src/schema/<file>.ts`, update `packages/db/src/relations.ts` if needed, re-export from `packages/db/src/schema/index.ts`.
- Run `DATABASE_URL=... pnpm db:generate` to write a migration directory under `migrations/`.
- Apply with `DATABASE_URL=... pnpm db:migrate` (or just start the app — `apps/web/plugins/1.migrate.ts` runs them on boot).
**New resume field or section:**
- Update Zod first in `packages/schema/src/resume/data.ts` (and `default.ts` / `sample.ts` if applicable).
- Adjust API DTOs (`packages/api/src/dto/resume.ts`), importers (`packages/import/src/*.tsx`), PDF templates and shared primitives (`packages/pdf/src/templates/...`), and the builder forms under `apps/web/src/routes/builder/$resumeId/-sidebar/`.
**New resume template:**
- Add to the template enum in `packages/schema/src/templates.ts`.
- Implement the page component at `packages/pdf/src/templates/<name>/<Name>Page.tsx` and register it in `packages/pdf/src/templates/index.ts`.
- Drop static previews into `apps/web/public/templates/jpg/<name>.jpg` and `apps/web/public/templates/pdf/<name>.pdf`.
**New web route:**
- Add the file under `apps/web/src/routes/...`. Use `$param.tsx` for dynamic segments, `_layout/` for pathless groups, and `-folder/` for colocated helpers.
- The route tree regenerates into `apps/web/src/routeTree.gen.ts` — do not hand-edit.
- For browser-only sub-routes, set `ssr: false` (see `apps/web/src/routes/builder/$resumeId/index.tsx`) or `ssr: "data-only"` (see `apps/web/src/routes/$username/$slug.tsx`).
**New server-only HTTP endpoint:**
- Add a route file (typically under `apps/web/src/routes/api/`) and export `Route = createFileRoute(...)({ server: { handlers: { GET/POST/ANY: handler } } })`.
- Import server-only deps (`@reactive-resume/db/client`, `@reactive-resume/api/services/*`) only inside the handler module so they stay out of the client bundle.
**New shared component:**
- App-only: `apps/web/src/components/<group>/<name>.tsx` (with colocated test if behaviour is non-trivial).
- Reused across packages: `packages/ui/src/components/<name>.tsx` (export via deep path `@reactive-resume/ui/components/<name>`).
**New shared utility:**
- Add to `packages/utils/src/<topic>.ts` and an explicit `"./<topic>": "./src/<topic>.ts"` entry in `packages/utils/package.json` `exports`. Never import private files across packages.
**New dialog:**
- Implement under `apps/web/src/dialogs/<group>/<name>.tsx`.
- Register with the dialog store and ensure `apps/web/src/dialogs/manager.tsx` renders it.
**New AI prompt or tool:**
- Prompts go in `packages/ai/src/prompts/<name>.md` (re-exported via `packages/ai/src/prompts.ts`).
- Tools go in `packages/ai/src/tools/<name>.ts` and are exposed through the AI router in `packages/api/src/routers/ai.ts`.
**New MCP tool/resource/prompt:**
- Register in `apps/web/src/routes/mcp/-helpers/{tools,resources,prompts}.ts`; reuse existing oRPC services for actual logic.
## Special Directories
**`apps/web/src/routes/`:**
- Purpose: Source for the file-based route tree.
- Generated artifact: `apps/web/src/routeTree.gen.ts`.
- Committed: Yes (the tree file is committed; regenerated by TanStack Router tooling on dev/build).
**`migrations/`:**
- Purpose: Drizzle-generated SQL + snapshots.
- Generated: Yes (by `pnpm db:generate`).
- Committed: Yes — do not hand-edit, but always commit new migration folders.
**`apps/web/.output/`:**
- Purpose: Nitro/Vite production build output (server + client + PWA assets).
- Generated: Yes (by `pnpm build`).
- Committed: No (gitignored).
**`apps/web/locales/`:**
- Purpose: Lingui `.po` catalogs.
- Generated: `en-US.po` is the source; other locales are synced via Crowdin (`crowdin.yml`).
- Committed: Yes.
**`data/` and `apps/web/data/`:**
- Purpose: Default local storage root when S3 is unset (`<workspace>/data`).
- Generated: Yes (at runtime by `apps/web/plugins/2.storage.ts` or service calls).
- Committed: No (gitignored runtime state).
**`.turbo/`, `.pnpm-store/`, `node_modules/`:**
- Purpose: Tool caches and dependency stores.
- Committed: No.
**`.vite-hooks/`:**
- Purpose: Lefthook-installed git hooks (`commit-msg`, `pre-commit`).
- Committed: Yes (so contributors get hooks automatically), but the underlying behavior is defined by `lefthook.yml`.
**`packages/runtime-externals/`:**
- Purpose: Marks `bcrypt`, `sharp`, `@aws-sdk/client-s3` as runtime dependencies that Vite externalizes.
- No source files — package.json is the entire contract.
## Files / Locations to Avoid Hand-Editing
- `apps/web/src/routeTree.gen.ts` — regenerated by TanStack Router tooling.
- `migrations/<timestamp>_<name>/migration.sql` and `snapshot.json` — generated by `drizzle-kit`. Add a new migration via `pnpm db:generate` instead of editing past ones.
- `pnpm-lock.yaml` — managed by pnpm. Update via `pnpm install`.
- `apps/web/.output/`, `apps/web/coverage/`, `packages/*/coverage/`, `packages/*/reports/` — build/test artifacts.
- `apps/web/locales/*.po` (except `en-US.po`) — synced from Crowdin per `crowdin.yml`.
- `apps/web/public/screenshots/`, `apps/web/public/opengraph/`, `apps/web/public/templates/{jpg,pdf}/` — regenerated assets; replace files wholesale rather than diff-editing.
---
*Structure analysis: 2026-05-11*
+253
View File
@@ -0,0 +1,253 @@
# Testing Patterns
**Analysis Date:** 2026-05-11
## Test Framework
**Runner:** Vitest 4.x.
- Root devDependency in `package.json`: `"vitest": "^4.1.5"`, `"@vitest/coverage-v8": "^4.1.5"`.
- Every workspace package and `apps/web` has its own `vitest.config.ts` that delegates to the shared factory at `vitest.shared.ts`.
**DOM environment:** `happy-dom` 20.x (migrated from jsdom in commit `7a60a42a0`). Default test environment per `vitest.shared.ts:19` is `"node"`; per-package configs opt into browser-like envs.
**Assertion / testing libraries** (root `package.json` devDependencies):
- `@testing-library/react` ^16.3.2
- `@testing-library/dom` ^10.4.1
- `@testing-library/jest-dom` ^6.9.1 — registered globally in `vitest.setup.ts:1`
- `@testing-library/user-event` ^14.6.1
**Run commands** (root `package.json`):
```bash
pnpm test # turbo run test → vitest run --passWithNoTests in every package
pnpm test:coverage # turbo run test:coverage → adds --coverage flag
pnpm test:ci # adds GitHub Actions, JSON, and JUnit reporters
pnpm test:agent # agent-friendly reporter + JSON output for agentic runs
```
Per-package commands (uniform across all packages, see `packages/api/package.json:13-19`):
```bash
pnpm --filter @reactive-resume/utils test
pnpm --filter @reactive-resume/api test
pnpm --filter web test
```
Vitest test paths are package-relative when filtering: `pnpm --filter @reactive-resume/utils test -- src/string.test.ts`.
## Shared Vitest Configuration
`vitest.shared.ts` exports `createVitestProjectConfig({ name, dirname, environment, plugins })`. Highlights:
- `root: dirname` — each package runs in isolation.
- `envDir: workspaceRoot` — `.env` at repo root is loaded for every package.
- `resolve: { tsconfigPaths: true }` — TS path aliases resolve from the package's own `tsconfig.json`.
- `setupFiles: [./vitest.setup.ts]` — global hooks applied to all projects.
- `include: ["src/**/*.{test,spec}.?(c|m)[jt]s?(x)"]` — both `.test.*` and `.spec.*` are picked up.
- `exclude: ["node_modules", "dist", ".output", "coverage", "reports"]`.
- `pool: "threads"`, `isolate: false` — fast threaded execution with shared module state inside a worker.
- `passWithNoTests: true` — packages without tests don't fail CI.
- `environmentOptions.happyDOM` disables JS/CSS file loading and navigation for safety.
Coverage is configured directly in `vitest.shared.ts:49-56`:
- Provider: `v8`
- Output: `./coverage` per package
- Reporters: `text`, `text-summary`, `json-summary`, `json`, `lcov`, `html`
- Include: `src/**/*.{ts,tsx}`
- Exclude: `src/**/*.{test,spec}.*`, `src/**/*.d.ts`, `src/routeTree.gen.ts`
- `reportOnFailure: true`
No global coverage thresholds are enforced (no `thresholds: {...}` block). Per-package coverage HTML lives under each package's `coverage/` directory after `pnpm test:coverage`.
## Global Setup (`vitest.setup.ts`)
Applied to every project:
1. `import "@testing-library/jest-dom/vitest"` — registers `toBeInTheDocument`, `toHaveAttribute`, etc.
2. `afterEach(() => cleanup())` — explicit RTL cleanup (Vitest doesn't expose `afterEach` globally without `test.globals: true`).
3. Polyfills for jsdom/happy-dom gaps: `ResizeObserver`, `IntersectionObserver`, `Element.prototype.scrollIntoView`, `window.matchMedia` (used by `cmdk`, Base UI, `next-themes`).
## Per-Package Vitest Configs
All `vitest.config.ts` files reuse the shared factory. Notable variants:
- **Node default** (`packages/utils/vitest.config.ts`, `packages/api/vitest.config.ts`, `packages/db/vitest.config.ts`, `packages/schema/vitest.config.ts`, `packages/ai/vitest.config.ts`, `packages/email/vitest.config.ts`, `packages/fonts/vitest.config.ts`, `packages/env/vitest.config.ts`, `packages/auth/vitest.config.ts`, `packages/import/vitest.config.ts`, `packages/pdf/vitest.config.ts`, `packages/config/vitest.config.ts`) — `environment: "node"`.
- **DOM** (`packages/ui/vitest.config.ts:7`) — `environment: "happy-dom"` for component tests.
- **Web app** (`apps/web/vitest.config.ts`) — `environment: "node"` plus Vite plugins to mirror dev: `@tailwindcss/vite`, `@lingui/vite-plugin` (with `linguiTransformerBabelPreset`), and `@rolldown/plugin-babel`. Individual web tests opt into the DOM via the `@vitest-environment happy-dom` file-level comment.
Per-test environment overrides (declared at the top of the file as `// @vitest-environment happy-dom` or in a `/** @vitest-environment happy-dom */` block):
- `packages/utils/src/sanitize.test.ts`
- `packages/utils/src/file.test.ts`
- `apps/web/src/components/resume/preview.browser.test.tsx`
- `apps/web/src/components/resume/preview.shared.test.tsx`
- `apps/web/src/components/typography/combobox.test.tsx`
## Test File Organization
**Location:** Co-located with implementation. `foo.ts` lives next to `foo.test.ts` (or `foo.test.tsx` for React).
**Naming:**
- `<name>.test.ts` — Node/pure logic (e.g. `packages/utils/src/string.test.ts`).
- `<name>.test.tsx` — JSX/component tests (e.g. `packages/ui/src/components/button.test.tsx`).
- `<name>.node.test.ts` — Node-only modules whose implementation is also `.node.ts` (e.g. `packages/utils/src/url-security.node.test.ts`, `packages/utils/src/monorepo.node.test.ts`).
- No `.spec.*` files in the repo today, but the include pattern supports them.
**Test counts (current):** 127 `*.test.ts` files + 98 `*.test.tsx` files across `packages/` and `apps/web/src/`.
**Hot spots (where coverage is densest):**
- `packages/utils/src/*.test.ts` — string, color, html, date, level, locale, sanitize, rate-limit, field, file, network-icons, style, url, url-security.node, monorepo.node, plus `resume/patch.test.ts`.
- `packages/ui/src/components/*.test.tsx` — ~30+ component tests (button, dialog, alert, badge, card, combobox, command, popover, scroll-area, sidebar, switch, tabs, textarea, toggle, tooltip, etc.).
- `packages/pdf/src/templates/shared/*.test.ts` — columns, section-links, rich-text, metrics, picture, filtering.
- `packages/pdf/src/section-title.test.ts` and `packages/pdf/src/hooks/use-register-fonts.test.ts`.
- `packages/api/src/{dto,helpers,services}/*.test.ts` — `dto/resume`, `helpers/resume-access-policy`, `services/ai`.
- `packages/schema/src/{templates,page}.test.ts` and `packages/schema/src/resume/{data,default}.test.ts`.
- `packages/ai/src/{tools,resume}/*.test.ts` — patch-proposal, sanitize, extraction-template.
- `packages/import/src/reactive-resume-v4-json.test.ts`, `packages/fonts/src/index.test.ts`.
- `apps/web/src/libs/{pwa,locale,theme,error-message}.test.ts`, `apps/web/src/dialogs/store.test.ts`, `apps/web/src/components/resume/preview.{browser,shared}.test.tsx`, `apps/web/src/components/typography/combobox.test.tsx`.
## Test Structure Patterns
**Idiomatic skeleton** (from `packages/utils/src/string.test.ts:1-21` and `packages/api/src/helpers/resume-access-policy.test.ts:1-17`):
```typescript
import { describe, expect, it } from "vitest";
import { thingUnderTest } from "./thing";
describe("thingUnderTest", () => {
it("returns X for Y", () => {
expect(thingUnderTest(input)).toBe(expected);
});
it("returns Z for empty input", () => {
expect(thingUnderTest("")).toBe("");
});
});
```
**Patterns observed:**
- Top-level `describe` per exported function; nested `describe` blocks group behaviors.
- One assertion focus per `it` — short, declarative names ("returns X", "throws Y when Z", "does not mutate the input").
- Negative cases are first-class — every helper has tests for `null`, empty string, unknown shapes, etc.
- `it.each([...] as const)("variant=%s renders without throwing", (variant) => {...})` for matrix tests over discriminated union variants (see `packages/ui/src/components/button.test.tsx:55-79`).
- Setup with `beforeEach` / `afterEach` is used only when needed (timers, temp dirs, store reset). Example: `apps/web/src/dialogs/store.test.ts:4-13` resets a Zustand store between tests with `useDialogStore.setState(...)`.
- Temp directories use `fs.mkdtempSync` + `realpathSync` and are torn down in `afterEach` (`packages/utils/src/monorepo.node.test.ts:7-17`).
- Fake timers via `vi.useFakeTimers()` / `vi.advanceTimersByTime(300)` for animation/transition assertions (`apps/web/src/dialogs/store.test.ts:54-65`).
## Mocking
**Library:** Vitest's built-in `vi` (no Jest). Used sparingly — most tests cover pure functions.
**Patterns:**
- `vi.fn()` for callback assertions: `expect(onClick).toHaveBeenCalledOnce()` (`packages/ui/src/components/button.test.tsx:32-37`).
- `vi.fn().mockResolvedValue(true)` for async handlers (`apps/web/src/dialogs/store.test.ts:86-93`).
- `vi.mock("module-path", () => ({ ... }))` for replacing modules. Heaviest example: `apps/web/src/components/resume/preview.browser.test.tsx:25-81` mocks `@react-pdf/renderer`, `@/libs/resume/pdf-document`, `./builder-resume-draft`, and `./pdf-canvas` so the preview component can be exercised without React PDF.
- `vi.hoisted(() => ({ ... }))` to share mutable state with hoisted `vi.mock` factories (`apps/web/src/components/resume/preview.browser.test.tsx:8-12`). This is required because `vi.mock` calls are hoisted above imports.
- Spies via `vi.spyOn` are rare; mock modules are preferred so the real implementation stays out of scope.
**Test data / fixtures:**
- No central `fixtures/` directory. Tests build minimal objects inline or extend canonical defaults from the schema package:
- `import { defaultResumeData } from "@reactive-resume/schema/resume/default"` (used by `packages/api/src/helpers/resume-access-policy.test.ts:2`).
- `import { sampleResumeData } from "@reactive-resume/schema/resume/sample"` (used by `apps/web/src/components/resume/preview.browser.test.tsx:5`).
- Local helper builders are inlined per test file (e.g. the `resumeDataWithPageCount` helper at `apps/web/src/components/resume/preview.browser.test.tsx:14-23`).
## React Component Testing
**Render + query** via Testing Library (`packages/ui/src/components/button.test.tsx`):
```typescript
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
render(<Button onClick={onClick}>Click</Button>);
await userEvent.click(screen.getByRole("button"));
```
**Accessibility-first queries:** `getByRole("button", { name: "..." })` is the default; `aria-label` is asserted explicitly (`packages/ui/src/components/button.test.tsx:81-84`).
**Slot / data-attr conventions:** Components expose `data-slot` for shadcn/Base UI slotting and tests assert it (`button.test.tsx:22-25`).
**Async UI:** Use `waitFor` from `@testing-library/react` and `await userEvent.*`. The `cleanup()` afterEach in `vitest.setup.ts` ensures DOM doesn't leak between tests despite `isolate: false`.
## Reporters
Per-package `package.json` scripts (uniform pattern, e.g. `packages/api/package.json:15-18`):
- `test` → `vitest run --passWithNoTests`
- `test:coverage` → `vitest run --coverage --passWithNoTests`
- `test:ci` → `vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests`
- `test:agent` → `vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests`
The `agent` reporter is a Vitest 4 feature optimized for LLM-driven runs; `pnpm test:agent` is the canonical script to use when an agent needs structured pass/fail data.
JUnit + JSON outputs land in `reports/` inside each package (Biome-ignored).
## CI
- **`.github/workflows/autofix.yml`** — runs on every PR and push to `main`. It runs `pnpm knip --fix` and `pnpm check`. **It does NOT run `pnpm test`.** Tests are not currently gating CI.
- **`.github/workflows/docker-build.yml`** — `workflow_dispatch` only; builds multi-arch images. No test step.
- **`.github/workflows/crowdin-sync.yml`** — translation sync only.
Tests are run locally (`pnpm test`) or by agents via `pnpm test:agent` / `pnpm test:ci`. No PR is currently blocked by a failing test on GitHub Actions.
## Test Types
- **Unit tests** — Dominant. Pure functions in `packages/utils`, `packages/schema`, `packages/pdf/src/templates/shared`, `packages/api/src/{helpers,dto}` are exercised in isolation.
- **Component tests** — `packages/ui/src/components/*.test.tsx` and a handful in `apps/web/src/components/`. Driven by `@testing-library/react` + `happy-dom` (file-level override) or `packages/ui`'s package-level `environment: "happy-dom"`.
- **Integration tests** — None against the live Drizzle client or the running TanStack Start server. `apps/web/src/components/resume/preview.browser.test.tsx` is the closest, mocking React PDF and exercising the preview pipeline end-to-end in happy-dom.
- **E2E / browser tests** — Not present. No Playwright, Cypress, or `vitest --browser` config.
## Common Patterns
**Async error testing:**
```typescript
expect(() => assertCanView({ userId: "u1", isPublic: false }, null)).toThrow();
try {
assertCanView({ userId: "u1", isPublic: false }, null);
expect.unreachable();
} catch (error: unknown) {
expect((error as { code?: string }).code).toBe("NOT_FOUND");
}
```
(See `packages/api/src/helpers/resume-access-policy.test.ts:29-44`.)
**Immutability assertions:**
```typescript
const before = JSON.stringify(resume);
redactResumeForViewer(resume, false);
expect(JSON.stringify(resume)).toBe(before);
```
(See `packages/api/src/helpers/resume-access-policy.test.ts:86-93`.)
**Time-sensitive logic:** UUIDv7 ordering is verified with a `setTimeout` and a string compare instead of mocking time (`packages/utils/src/string.test.ts:15-20`).
## Coverage Gaps Worth Flagging
These areas have implementation but no `*.test.*` files alongside them today — agents adding features here should consider adding tests.
- **`packages/email/src/transport.ts` and templates** — no tests. SMTP transport is untested.
- **`packages/env/src/server.ts`** — no tests for env-var schema validation.
- **`packages/auth/`** — no tests; Better Auth config and helpers are uncovered.
- **`packages/api/src/services/{resume,storage,statistics,auth,flags,resume-events}.ts`** — only `ai.ts` has a service-level test (`ai.test.ts`). Most resume mutation flow logic is exercised only indirectly through `helpers/resume-access-policy.test.ts` and `dto/resume.test.ts`.
- **`packages/api/src/routers/*`** — no router-level tests. End-to-end oRPC procedure behavior (auth + rate limit + service composition) is not asserted.
- **`packages/api/src/middleware/rate-limit/*`** — no tests.
- **`packages/db/src/schema/*`** — no tests (schema correctness is implicit, but no migration roundtrip tests).
- **`packages/scripts/`** — no tests.
- **`packages/runtime-externals/`** — no tests.
- **`apps/web/src/routes/**`** — route handlers (`api/rpc.$.ts`, `api/auth.$.ts`, `api/health.ts`, `uploads/...`, `mcp/...`, `auth/oauth.ts`) and most builder UI under `routes/builder/$resumeId` are uncovered.
- **`apps/web/src/dialogs/**`** — only `store.test.ts` covers the dialog store. Individual dialog components (resume create/update/import, two-factor, api-key) are uncovered.
- **`packages/pdf/src/templates/{azurill,bronzor,...}`** — individual template renderers have no tests; only the shared primitives in `templates/shared/` are covered.
When adding tests in any of these areas, follow the colocation rule (`foo.ts` ↔ `foo.test.ts`) and reuse `defaultResumeData` / `sampleResumeData` from `@reactive-resume/schema/resume/*` instead of inventing new fixtures.
---
*Testing analysis: 2026-05-11*
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/utils/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158664889981519,"mode":420,"is_dir":false}},"order":["packages/utils/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"0c7a15dde9d26988","duration":955,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
{"hash":"18315d11067e0830","duration":9205,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"ee0217b2e9df145b45e6731ac512d88ad59406eee553ed1b197bdf1eef2d5689"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/env/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158665081126046,"mode":420,"is_dir":false}},"order":["packages/env/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"24552bdffdc5ebcb","duration":1146,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/fonts/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158665816497121,"mode":420,"is_dir":false}},"order":["packages/fonts/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"2c1f239ac1e9bd96","duration":1882,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/import/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158667091029787,"mode":420,"is_dir":false}},"order":["packages/import/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"5fff137e287b47d8","duration":3154,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"apps/web/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158668660018078,"mode":420,"is_dir":false}},"order":["apps/web/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"6711a052e760da9a","duration":3049,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/ui/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158666985313670,"mode":420,"is_dir":false}},"order":["packages/ui/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"72c3ccc9f2f5feed","duration":3048,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/scripts/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158665609656007,"mode":420,"is_dir":false}},"order":["packages/scripts/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"7ad6f44ecc30113b","duration":1673,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/schema/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158666036371217,"mode":420,"is_dir":false}},"order":["packages/schema/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"8ac845ee07e175fc","duration":2102,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/auth/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158667978449652,"mode":420,"is_dir":false}},"order":["packages/auth/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"a1fc5770a21706e7","duration":2896,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/email/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158665401936928,"mode":420,"is_dir":false}},"order":["packages/email/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"b5f38c54fffff57f","duration":1465,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/db/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158666974087786,"mode":420,"is_dir":false}},"order":["packages/db/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"b849023dfa3fccd9","duration":3037,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
{"hash":"baf3349509c6078b","duration":10422,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"d2396996b2d0bdfaf37211bb596304c9daba172ce6f30ef038c35f558dc27c1e"}
Binary file not shown.
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
{"hash":"c747964dd160f1ea","duration":12224,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"e19f2793896093dc74f2a4eb044a4b4d3eb636c2509fb38e823941865cdf28e3"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/ai/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158666319285663,"mode":420,"is_dir":false}},"order":["packages/ai/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"e1524476910e6054","duration":2383,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/api/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158668358064434,"mode":420,"is_dir":false}},"order":["packages/api/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"e956e719e41d711e","duration":2955,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"files":{"packages/pdf/.turbo/turbo-typecheck.log":{"size":29,"mtime_nanos":1778158667367331180,"mode":420,"is_dir":false}},"order":["packages/pdf/.turbo/turbo-typecheck.log"]}
-1
View File
@@ -1 +0,0 @@
{"hash":"fe9e2236067e95bd","duration":2476,"sha":"1b345014be41f65c6fe7ac9f42ddef9ef3a8575c","dirty_hash":"5c14d1e7f0f28737d20df1e16b72d63386130eec2a28a7842a26eab88a949a82"}
Binary file not shown.
-4
View File
@@ -1,4 +0,0 @@
{
"is_task_list_visible": true,
"active_task": null
}
+106
View File
@@ -0,0 +1,106 @@
# AGENTS.md
## Cursor Cloud specific instructions
### Overview
Reactive Resume is a pnpm monorepo (Turborepo) with a single full-stack web app at `apps/web` (TanStack Start / React 19 / Vite) and ~15 internal packages under `packages/`. It runs as a single Node.js process on port 3000.
Internal packages are source-consumed through `package.json` export maps that point at `src` files. Do not assume package-local `dist` output exists unless a package explicitly adds it.
### Prerequisites
- **Node.js 24** (matches Dockerfile `ARG NODE_VERSION=24`). Use `nvm install 24 && nvm use 24` if needed.
- **Docker** is required to run PostgreSQL. Start it with `sudo dockerd &` if the daemon isn't running.
- **pnpm 11.0.9** is managed via corepack (`corepack enable`).
### Codebase map
- `apps/web` is the only app. It owns TanStack Start routes, Vite/Nitro config, PWA setup, oRPC client wiring, route-level server handlers, and the resume builder UI.
- `packages/api` contains oRPC routers, services, DTOs, storage, resume access policy, statistics, AI services, and rate limiting. The web route `apps/web/src/routes/api/rpc.$.ts` exposes these routers at `/api/rpc`.
- `packages/auth` contains Better Auth config, auth helper functions, and exported auth types. The web route `apps/web/src/routes/api/auth.$.ts` delegates to `auth.handler`.
- `packages/db` contains the Drizzle client and schema. Migration files live at the repo root in `migrations/`.
- `packages/env` defines server environment validation and auto-loads the root `.env` for app/server code.
- `packages/schema` contains Zod schemas and typed resume/page/template models.
- `packages/pdf` contains the React PDF document, font registration, shared template primitives, and template implementations.
- `packages/ui` contains shared Base UI/shadcn-style components and hooks.
- `packages/fonts`, `packages/email`, `packages/import`, `packages/ai`, `packages/utils`, `packages/scripts`, `packages/config`, and `packages/runtime-externals` provide focused support surfaces. Prefer their existing exports over adding cross-package shortcuts.
### Web app conventions
- Routes are file-based under `apps/web/src/routes`. Do not hand-edit `apps/web/src/routeTree.gen.ts`; it is generated by TanStack Router tooling.
- Server-only route handlers use route `server.handlers` blocks, for example `api/rpc.$.ts`, `api/auth.$.ts`, `api/health.ts`, uploads, schema, OpenAPI, MCP, and `.well-known` routes.
- `apps/web/src/router.tsx` initializes router context with `queryClient`, `orpc`, `theme`, `locale`, `session`, and `flags`. Reuse route context where possible instead of refetching these concerns ad hoc.
- The builder shell lives under `apps/web/src/routes/builder/$resumeId`. The nested preview route is client-only (`ssr: false`), while the public resume route `apps/web/src/routes/$username/$slug.tsx` uses `ssr: "data-only"`.
- Browser-only resume preview code is split across `apps/web/src/components/resume/preview.tsx`, `preview.browser.tsx`, `pdf-canvas.tsx`, and shared helpers. Keep PDF.js/canvas/browser APIs out of SSR paths.
- The isomorphic oRPC client is in `apps/web/src/libs/orpc/client.ts`; server calls use an in-process router client and browser calls use `/api/rpc` with credentials included.
### Package and feature boundaries
- Add new API procedures in `packages/api/src/routers/*` and keep business logic in `packages/api/src/services/*` or helpers. Prefer `protectedProcedure` from `packages/api/src/context.ts` for authenticated procedures.
- Add database columns/tables in `packages/db/src/schema/*`, then generate root-level migrations with `pnpm db:generate`.
- Add or change resume data shape in `packages/schema/src/resume/*` first, then update API DTOs, importers, PDF rendering, and web forms that consume that shape.
- Add or rename templates in all relevant places: `packages/schema/src/templates.ts`, `packages/pdf/src/templates/index.ts`, template source under `packages/pdf/src/templates/<name>/`, and static previews under `apps/web/public/templates/{jpg,pdf}`.
- Shared PDF section filtering lives in `packages/pdf/src/templates/shared/filtering.ts`. Keep template-specific visual exceptions in the owning template directory unless multiple templates need the same behavior.
- `packages/pdf/src/hooks/use-register-fonts.ts` owns React PDF font registration, standard PDF font handling, CJK fallback stacks, and global hyphenation behavior.
- `packages/utils` has narrowly exported helpers. If another package needs a utility, add an explicit export path instead of importing private files.
### Database
PostgreSQL runs via Docker Compose:
```
sudo docker compose -f compose.dev.yml up -d postgres
```
The dev default connection string is `postgresql://postgres:postgres@localhost:5432/postgres`.
**Important**: `drizzle-kit` (used by `pnpm db:migrate`) reads `DATABASE_URL` from `process.env` directly — it does **not** auto-load the `.env` file. You must `export DATABASE_URL=...` before running migration commands, or set it in your shell profile.
The web app also runs migrations during Nitro startup via `apps/web/plugins/1.migrate.ts`. Manual `pnpm db:migrate` is mainly for first setup, migration debugging, or applying migrations without starting the app.
### Environment
Copy `.env.example` to `.env`. The three required variables are:
- `APP_URL` (default `http://localhost:3000`)
- `DATABASE_URL` (default `postgresql://postgres:postgres@localhost:5432/postgres`)
- `AUTH_SECRET` (any non-empty string)
S3/SeaweedFS is optional. If `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, and `S3_BUCKET` are all set, the app uses S3-compatible storage. The checked-in `.env.example` sets SeaweedFS defaults, so either start the `seaweedfs` compose service too or comment out those S3 vars to use local filesystem storage under `<workspace>/data`. `LOCAL_STORAGE_PATH` must be absolute when set.
### Common commands
| Task | Command |
|------|---------|
| Install deps | `pnpm install` |
| Start Postgres only | `sudo docker compose -f compose.dev.yml up -d postgres` |
| Start Postgres + SeaweedFS | `sudo docker compose -f compose.dev.yml up -d postgres seaweedfs seaweedfs_create_bucket` |
| Generate migrations | `DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres" pnpm db:generate` |
| Run migrations | `DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres" pnpm db:migrate` |
| Dev server | `pnpm dev` (starts on port 3000) |
| Web dev server only | `pnpm dev:web` |
| Lint/format | `pnpm check` (Biome) |
| Tests | `pnpm test` (Vitest) |
| Build | `pnpm build` |
| Typecheck | `pnpm typecheck` |
For focused validation, prefer package filters before repo-wide commands, for example:
```
pnpm --filter web typecheck
pnpm --filter @reactive-resume/pdf test
pnpm --filter @reactive-resume/api test
```
Vitest test paths are package-relative when running through `pnpm --filter <package> test -- <path>`.
### Gotchas
- The dev server (`pnpm dev`) auto-runs migrations on startup via Nitro, so `pnpm db:migrate` is only strictly needed for first-time setup or after pulling new migration files.
- Email sending requires SMTP config; without it, emails are logged to console. This is fine for dev — the app still functions, but email verification links appear in server logs.
- The `lefthook.yml` pre-commit hook runs `biome check` on staged files. Run `pnpm check` before committing to avoid hook failures.
- `pnpm check` is write-capable (`biome check --write --unsafe .`). Call that out when using it, and use narrower Biome commands if you need a non-mutating inspection.
- Biome uses tabs, double quotes, line width 120, organized import groups, and sorted Tailwind classes for `clsx`, `cva`, and `cn`.
- Most packages use `tsgo --noEmit` for typechecking and `vitest run --passWithNoTests` for tests.
- There may be unrelated local edits in the worktree. Inspect `git status --short` first and avoid reverting files you did not touch.
Symlink
+1
View File
@@ -0,0 +1 @@
AGENTS.md
+3 -2
View File
@@ -25,7 +25,7 @@ RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store,sharing=locked \
pnpm install --frozen-lockfile
COPY --from=pruner /app/out/full/ ./
RUN pnpm turbo run build --filter=web
RUN rm -rf apps/web/.output && pnpm turbo run build --filter=web --force
FROM base AS runtime-pruner
COPY . .
@@ -50,7 +50,8 @@ LABEL org.opencontainers.image.documentation="https://docs.rxresu.me"
LABEL org.opencontainers.image.source="https://github.com/amruthpillai/reactive-resume"
ENV NODE_ENV="production" \
PORT=3000
PORT=3000 \
LOCAL_STORAGE_PATH=/app/data
WORKDIR /app
+7 -3
View File
@@ -21,7 +21,7 @@
<a href="https://discord.gg/aSyA5ZSxpb"><img src="https://img.shields.io/discord/1173518977851473940?style=flat-square&label=discord" alt="Discord" /></a>
<a href="https://crowdin.com/project/reactive-resume"><img src="https://badges.crowdin.net/reactive-resume/localized.svg?style=flat-square" alt="Crowdin" /></a>
<a href="https://github.com/sponsors/AmruthPillai"><img src="https://img.shields.io/github/sponsors/AmruthPillai?style=flat-square&label=sponsors" alt="Sponsors" /></a>
<a href="https://opencollective.com/reactive-resume"><img src="https://img.shields.io/opencollective/backers/reactive-resume?style=flat-square&label=donations" alt="Donations" /></a>
<a href="https://opencollective.com/reactive-resume/donate"><img src="https://img.shields.io/opencollective/backers/reactive-resume?style=flat-square&label=donations" alt="Donations" /></a>
</p>
</div>
@@ -36,7 +36,7 @@ Built with privacy as a core principle, Reactive Resume gives you complete owner
**Resume Building**
- Real-time preview as you type
- Multiple export formats (PDF, JSON)
- Multiple export formats (PDF, JSON, DOCX)
- Drag-and-drop section ordering
- Custom sections for any content type
- Rich text editor with formatting support
@@ -130,6 +130,10 @@ Built with privacy as a core principle, Reactive Resume gives you complete owner
<img src="apps/web/public/templates/jpg/meowth.jpg" alt="Meowth" width="150" />
<br /><sub><b>Meowth</b></sub>
</td>
<td align="center">
<img src="apps/web/public/templates/jpg/scizor.jpg" alt="Scizor" width="150" />
<br /><sub><b>Scizor</b></sub>
</td>
</tr>
</table>
@@ -208,7 +212,7 @@ Reactive Resume is and always will be free and open-source. If it has helped you
<a href="https://github.com/sponsors/AmruthPillai">
<img src="https://img.shields.io/badge/GitHub%20Sponsors-Support-ea4aaa?style=flat-square&logo=github-sponsors" alt="GitHub Sponsors" />
</a>
<a href="https://opencollective.com/reactive-resume">
<a href="https://opencollective.com/reactive-resume/donate">
<img src="https://img.shields.io/badge/Open%20Collective-Contribute-7FADF2?style=flat-square&logo=open-collective" alt="Open Collective" />
</a>
</p>
File diff suppressed because one or more lines are too long
-2
View File
@@ -1,2 +0,0 @@
$ tsgo --noEmit
-1
View File
@@ -1 +0,0 @@
2
-1
View File
@@ -1 +0,0 @@
36670
-1
View File
@@ -1 +0,0 @@
1
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: af\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# item} other {# items}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# rol} other {# rolle}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} voorstelle hersien"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Beslis! Jy kan jou CV met 'n enkele klik na PDF uitvoer. Die uitgevoerde PDF behou al jou uitleg en styl perfek."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Aanvaar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Aanvaar alles"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Aanvaarde voorstel"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Verkry programmatiese toegang tot jou CV's en data deur die API."
@@ -229,10 +246,38 @@ msgstr "Voeg ry voor by"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Na"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "KI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "KI-integrasie gedeaktiveer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "KI-voorstel toegepas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "KI-voorstel verwerp."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "KI-voorstelle toegepas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "KI-voorstelle verwerp."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "KI CV-assistent"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanees"
@@ -367,10 +412,22 @@ msgstr "Studierigting"
msgid "Artificial Intelligence"
msgstr "Kunsmatige Intelligensie"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Vra vir 'n gerigte CV-verandering..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Vra vir 'n inkrementele verandering"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Aspekverhouding"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistent-versoek het misluk"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Basies"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Pragtige sjablone om van te kies, met meer op pad."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Voorheen"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengaals"
@@ -462,10 +523,6 @@ msgstr "Kolpuntlys"
msgid "By the community, for the community."
msgstr "Deur die gemeenskap, vir die gemeenskap."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Kan ek die sjablone pasmaak?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Kan ek my CV na PDF uitvoer?"
@@ -576,6 +633,14 @@ msgstr "Klaar"
msgid "Click here to select a file to import"
msgstr "Klik hier om 'n lêer te kies om in te voer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Maak toe"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Maak KI-assistent toe"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Kodeblok"
@@ -622,6 +687,10 @@ msgstr "Bevestig"
msgid "Connect"
msgstr "Koppel"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Koppel en verifieer 'n KI-verskaffer voordat u CV-redigeringsvoorstelle gebruik."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Kopieer hierdie geheime sleutel en gebruik dit in jou toepassings om toe
msgid "Copy URL"
msgstr "Kopieer URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Kon nie die KI-voorstel toepas nie."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Ontkoppel"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Maak toe"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentasie"
msgid "Don't have an account? <0/>"
msgstr "Het jy nie 'n rekening nie? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Skenk"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Skenk aan Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Aktiveer 2FA"
msgid "Enable AI Features"
msgstr "Aktiveer KI-funksies"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Aktiveer KI-integrasie"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Aktiveer twee-faktor-magtiging"
@@ -1162,6 +1247,10 @@ msgstr "Alles wat hier ingevoer word, word plaaslik in jou blaaier gestoor. Jou
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Alles wat jy nodig het om professionele CV's te skep, te pasmaak en te deel. Gebou met privaatheid in gedagte, aangedryf deur oopbron, en heeltemal gratis vir altyd."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Voorbeelde: herskryf die opsomming, verskerp een ervaringskoeël, voeg statistieke by, of pas die CV aan vir 'n posbeskrywing."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Verlaat volskerm"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Het jy jou wagwoord vergeet?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formaat"
@@ -1397,6 +1486,10 @@ msgstr "Formaat"
msgid "Free"
msgstr "Gratis"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Vrye vorm"
#: src/libs/locale.ts
msgid "French"
msgstr "Frans"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Meer voorstelaksies"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Skuif na"
@@ -1978,6 +2075,10 @@ msgstr "Moet begin met https://"
msgid "Name"
msgstr "Naam"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Benodig hersiening"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalees"
@@ -2008,6 +2109,10 @@ msgstr "Nuwe wagwoord"
msgid "New Section"
msgstr "Nuwe afdeling"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Volgende"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Geen advertensies, geen dop nie"
@@ -2057,11 +2162,19 @@ msgstr "Deurlopende instandhouding"
msgid "Open"
msgstr "Maak oop"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Maak KI-assistent oop"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Maak e-posklient oop"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Oop Integrasies"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Maak integrasiesinstellings oop"
@@ -2215,6 +2328,10 @@ msgstr "Voer asseblief die wagwoord in wat deur die eienaar van die CV met jou g
msgid "Please enter the URL you want to link to:"
msgstr "Voer asseblief die URL in waarheen jy wil skakel:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Ondersteun asseblief die projek"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Posisie"
msgid "Preferences"
msgstr "Voorkeure"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Voorbereiding van veranderinge"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Voorgestelde instellings"
@@ -2263,6 +2384,10 @@ msgstr "Druk <0>{RETURN_KEY}</0> of <1>{COMMA_KEY}</1> om die huidige sleutelwoo
msgid "Press <0>Enter</0> to open"
msgstr "Druk <0>Enter</0> om oop te maak"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Vorige"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primêre kleur"
@@ -2293,6 +2418,11 @@ msgstr "Vorderingsbalk"
msgid "Projects"
msgstr "Projektte"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Voorstel {0} van {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Beskerm jou CV teen ongemagtigde toegang met 'n wagwoord"
@@ -2315,6 +2445,10 @@ msgstr "Publikasies"
msgid "Publisher"
msgstr "Uitgewer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Rou JSON-pleister"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Gaan na tuisblad"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume is 'n gratis en oopbronprojek, met liefde gebou en deur
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume is 'n gratis en oopbron-hervatbouer wat die proses om jou CV te skep, by te werk en te deel, vereenvoudig."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reaktiewe CV is gratis en oopbron. As dit jou gehelp het, oorweeg dit asseblief om te skenk."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume is oopbron, privaatheid-gefokus en heeltemal gratis. Anders as ander hervatbouers, wys dit nie advertensies nie, spoor nie jou data na nie en sluit nie funksies agter 'n betaalmuur nie."
@@ -2362,11 +2500,6 @@ msgstr "Reghoek"
msgid "Rectangle (Full Width)"
msgstr "Reghoek (volle breedte)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Herdoen (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Verfris"
msgid "Register New Device"
msgstr "Registreer nuwe toestel"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Verwerp"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Verwerp alles"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Verwerpte voorstel"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Onthou jy jou wagwoord? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Stuur tans verifikasie-e-pos weer..."
msgid "Reset"
msgstr "Herstel"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Stel klets terug"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Herstel jou wagwoord"
msgid "Resetting your password..."
msgstr "Besig om jou wagwoord te herstel..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Verander grootte van KI-assistent"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Hulpbronne"
@@ -2464,6 +2617,14 @@ msgstr "CV-analise voltooi."
msgid "Resumes"
msgstr "CV's"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Hersiening vereis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Hersiene voorstelle"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Regs belyn"
@@ -2562,6 +2723,10 @@ msgstr "Kies..."
msgid "Self-Host with Docker"
msgstr "Self-aanbieding met Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Stuur"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Stuur e-pos om wagwoord te herstel"
msgid "Sending password reset email..."
msgstr "Stuur tans e-pos om wagwoord te herstel..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Stuur versoek"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Skeier"
@@ -2709,6 +2878,10 @@ msgstr "Enkelkolom met 'n sybalk en skoon roostruitleg; veelsydig vir enige pro
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Enkelkolom met 'n inlyn drie-kolom-inskrywingsopskrif (posisie · organisasie · tydperk); kompak en ATS-vriendelik, goed geskik vir Asiatiese CV-konvensies (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Enkelkolom met hoofletter-afdelingopskrifte en 'n primêre kleur boonste reël op elke bladsy; gepoleer vir uitvoerende, konsulterende of opstart-CV's."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Enkelkolom; gepoleer en ernstig vir senior- of ondernemingsvlakposte."
@@ -2809,6 +2982,10 @@ msgstr "Statistiek"
msgid "Stay"
msgstr "Bly"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Sterktes"
@@ -2903,6 +3080,14 @@ msgstr "Tekskleur"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Die KI het 'n verandering voorgestel wat nie meer op hierdie CV van toepassing is nie."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Die KI het 'n voorstel terugbesorg wat nie voorbeskou kon word nie."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "Die API-sleutel is suksesvol uitgevee."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Die API-sleutel sal nie meer jou data kan toegang nadat dit uitgevee is nie. Hierdie aksie kan nie ongedaan gemaak word nie."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Die assistent het gestop voordat hy 'n voorstel teruggegee het."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Dit is 'n URL-vriendelike naam vir jou CV."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Dit kan 'n paar minute neem, afhangend van die reaksie van die KI-verskaffer. Moet asseblief nie die venster sluit of die bladsy herlaai nie."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Hierdie voorstel is verouderd. Vra die assistent om dit vanaf die nuutste CV te hergenereer."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Hierdie CV is gesluit en kan nie bygewerk word nie."
@@ -3034,6 +3228,10 @@ msgstr "Om jou rekening uit te vee, moet jy die bevestigingstekst invoer en die
msgid "Toggle left sidebar"
msgstr "Skakel die linkerkantbalk aan"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Wissel bladsystapeling"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Oekraïens"
msgid "Underline"
msgstr "Onderstreep"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Ontdoen (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Onbeperkte CV's"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ja, Reactive Resume is in verskeie tale beskikbaar. Jy kan jou voorkeurtaal kies op die instellingsbladsy, of deur die taalwisselaar regs bo te gebruik. As jy jou taal nie sien nie, of as jy die bestaande vertalings wil verbeter, kan jy <0>bydra tot die vertalings op Crowdin<1> (maak in nuwe oortjie oop)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ja! Elke sjabloon is heeltemal aanpasbaar. Jy kan kleure, lettertipes, spasiëring verander en selfs pasgemaakte CSS skryf vir volledige beheer oor jou CV se voorkoms."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ja! Reactive Resume is heeltemal gratis om te gebruik, sonder versteekte koste, premiemvlakke of intekengelde. Dit is oopbron en sal altyd gratis bly."
@@ -3440,7 +3629,7 @@ msgstr "Jou data word plaaslik gestoor"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Jou data word veilig gestoor en nooit met derde partye gedeel nie. Jy kan ook Reactive Resume self-host op jou eie bedieners vir volledige beheer oor jou data."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Jou jongste veranderinge kon nie gestoor word nie."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: am\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# ንጥል} other {# ንጥሎች}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# ሚና} other {# ሚናዎች}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} የተገመገሙ ሀሳቦች"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "ፍጹም! የየታሪክዎን ወደ PDF በአንድ ጠቅታ መላክ ትችላላችሁ። የተላከው የ PDF ፋይል ሁሉንም ቅርጸትና ዲዛይን በትክክል ይጠብቃል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "ተቀበል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "ሁሉንም ተቀበል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "ተቀባይነት ያገኘ ሀሳብ"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "በ API በመጠቀም የየታሪኮችዎን እና መረጃዎን ፕሮግራማዊ መዳረስ።"
@@ -229,10 +246,38 @@ msgstr "ከዚህ በፊት ረድፍ ያክሉ"
msgid "Afrikaans"
msgstr "አፍሪካንስ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "በኋላ"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "የ AI ውህደት ተሰናክሏል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "የAI ፕሮፖዛል ተተግብሯል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "የ AI ፕሮፖዛል ውድቅ ተደርጓል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "የአዕምሮ ህክምና ፕሮፖዛሎች ተግባራዊ ሆነዋል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "የ AI ፕሮፖዛሎች ውድቅ ተደርገዋል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "የ AI ሪቪው ረዳት"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "አልባኒኛ"
@@ -367,10 +412,22 @@ msgstr "የስልጠና መስክ"
msgid "Artificial Intelligence"
msgstr "አርቲፊሻል ኢንተለጀንስ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "የታለመ የስራ ልምድ ለውጥ ጠይቅ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "ቀስ በቀስ ለውጥ ይጠይቁ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "የመገናኛ መጠን"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "የረዳት ጥያቄ አልተሳካም"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "መሰረታዊ"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "ውብ ቴምፕሌቶችን ይመርጡ፣ ተጨማሪዎችም በመንገድ ላይ ናቸው።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "ከዚህ በፊት"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "ቤንጋሊኛ"
@@ -462,10 +523,6 @@ msgstr "የነጥብ ዝርዝር"
msgid "By the community, for the community."
msgstr "በማህበረሰቡ፣ ለማህበረሰቡ።"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "ቴምፕሌቶቹን ልገምግሙ እችላለሁ?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "የየታሪክዬን ወደ PDF ልላክ እችላለሁ?"
@@ -576,6 +633,14 @@ msgstr "አጽዳ"
msgid "Click here to select a file to import"
msgstr "ፋይል ለማምጣት ለመምረጥ እዚህ ጠቅ ያድርጉ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "ዝጋ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "የ AI ረዳትን ዝጋ"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "የኮድ ብሎክ"
@@ -622,6 +687,10 @@ msgstr "አረጋግጥ"
msgid "Connect"
msgstr "አገናኝ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "የሪዚሜ አርትዖት ፕሮፖዛሎችን ከመጠቀምዎ በፊት የAI አቅራቢን ያገናኙ እና ያረጋግጡ።"
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "ይህንን ሚስጥራዊ ቁልፍ ቅጂ አድርጉ እና ውስ
msgid "Copy URL"
msgstr "URL ቅጂ አድርግ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "የAI ፕሮፖዛሉን መተግበር አልተቻለም።"
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "ግንኙነትን ቁርጥ"
msgid "Discord"
msgstr "ዲስኮርድ"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "አሰናብት"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "ሰነዶች"
msgid "Don't have an account? <0/>"
msgstr "መለያ የለዎትም? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "ይለግሱ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "ለ Reactive Resume መዋጮ አድርግ"
@@ -1094,6 +1175,10 @@ msgstr "2FAን አንቃ"
msgid "Enable AI Features"
msgstr "የ AI ባህሪዎችን አንቃ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "የAI ውህደትን አንቃ"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "ሁለት-ደረጃ ማረጋገጫን አንቃ"
@@ -1162,6 +1247,10 @@ msgstr "እዚህ የሚገባው ሁሉ በአካባቢዎ አሳሽ ውስጥ
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "ሙያዊ የየታሪክ ማቅረቢያዎችን ለመፍጠር፣ ለማበጀት እና ለመካፈል ያስፈልግዎትን ሁሉ ይዟል። የግላዊነትን ጥበቃ በማስቡ፣ በክፍት ምንጭ የሚነቃቃ፣ ፍጹም ነፃ የሆነ ነው።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "ምሳሌዎች፡ ማጠቃለያውን እንደገና ይፃፉ፣ የአንድ ልምድ ነጥብ ያጥብቁ፣ መለኪያዎችን ያክሉ ወይም የስራ መግለጫውን (ሲቪ) ያስተካክሉ።"
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "ሙሉ ስክሪን ውጣ"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "የይለፍ ቃልዎን ረስተዋል?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "ቅርጸት"
@@ -1397,6 +1486,10 @@ msgstr "ቅርጸት"
msgid "Free"
msgstr "ነፃ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "ነፃ-ፎርም"
#: src/libs/locale.ts
msgid "French"
msgstr "ፈረንሳይኛ"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "ሞዴል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "ተጨማሪ የፕሮፖዛል እርምጃዎች"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "አንቀሳቅስ ወደ"
@@ -1978,6 +2075,10 @@ msgstr "በhttps:// መጀመር አለበት"
msgid "Name"
msgstr "ስም"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "ግምገማ ያስፈልገዋል"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "ኔፓሊኛ"
@@ -2008,6 +2109,10 @@ msgstr "አዲስ የይለፍ ቃል"
msgid "New Section"
msgstr "አዲስ ክፍል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "ቀጣይ"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "ምንም ማስታወቂያ የለም፣ ምንም መከታተያ የለም"
@@ -2057,11 +2162,19 @@ msgstr "የቀጣይ ጥገና"
msgid "Open"
msgstr "ክፈት"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "ክፍት የ AI ረዳት"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "የኢሜል ደንበኛን ክፈት"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ክፍት ውህደቶች"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "የውህደቶች ቅንብሮችን ክፈት"
@@ -2215,6 +2328,10 @@ msgstr "ወደ የየታሪክው ባለቤት በተካፈለዎት የይለ
msgid "Please enter the URL you want to link to:"
msgstr "ሊያገናኙት የሚፈልጉትን URL እባክዎን ያስገቡ፡"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "እባክዎን ፕሮጀክቱን ይደግፉ"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "አቀማመጥ"
msgid "Preferences"
msgstr "ምርጫዎች"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "ለውጦችን በማዘጋጀት ላይ"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "ቀድሞ የተዘጋጁ"
@@ -2263,6 +2384,10 @@ msgstr "የአሁኑን ቁልፍ ቃል ለማከል ወይም ለማስቀመ
msgid "Press <0>Enter</0> to open"
msgstr "ለመክፈት <0>Enter</0>ን ይጫኑ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "ቀዳሚ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "ዋና ቀለም"
@@ -2293,6 +2418,11 @@ msgstr "የሂደት አሰሳ ማስመሪያ"
msgid "Projects"
msgstr "ፕሮጀክቶች"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "ሀሳብ {0} የ {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "የየታሪክዎን ከፍተኛ ያልተፈቀደ መዳረስ በይለፍ ቃል ይከላከሉት"
@@ -2315,6 +2445,10 @@ msgstr "ህትመቶች"
msgid "Publisher"
msgstr "አታሚ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "ጥሬ JSON ፓች"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - ወደ መነሻ ገጽ ሂድ"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume ነፃ እና ክፍት ምንጭ ፕሮጀክት ሲሆ
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume የየታሪክ መፍጠር፣ ማዘመን እና መካፈል ሂደትን የሚቀላቅል ነፃ እና ክፍት ምንጭ የየታሪክ ማቅረቢያ መገንቢያ ነው።"
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "ምላሽ ሰጪ የስራ ልምድ (Reactive) ነፃ እና ክፍት ምንጭ ነው። ከረዳዎት፣ እባክዎን መለገስን ያስቡበት።"
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume ክፍት ምንጭ፣ ግላዊነትን የሚመርጥ እና ፍጹም ነፃ ነው። ከሌሎች የየታሪክ ማቅረቢያዎች የተለየ ምክንያቱ ማስታወቂያ አያሳይም፣ መረጃዎን አይከታተልም፣ ባህሪዎችንም በክፍያ ግድግዳ አያስገባም።"
@@ -2362,11 +2500,6 @@ msgstr "አክታ"
msgid "Rectangle (Full Width)"
msgstr "አክታ (ሙሉ ወፍር)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "ደግመው አድርጉ (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "ዳስ አድርግ"
msgid "Register New Device"
msgstr "አዲስ መሣሪያ መመዝገብ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "ውድቅ አድርግ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "ሁሉንም ውድቅ አድርግ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "ውድቅ የተደረገ ሀሳብ"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "የይለፍ ቃልዎን ያስታውሳሉ? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "የማረጋገጫ ኢሜልን እንደገና በመላክ ላይ…"
msgid "Reset"
msgstr "ዳግም ለመጀመር"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "ውይይትን ዳግም አስጀምር"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "የይለፍ ቃልዎን ዳግም ያስጀምሩ"
msgid "Resetting your password..."
msgstr "የይለፍ ቃልዎን በመዳግም ላይ…"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "የAI ረዳት መጠን ቀይር"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "ሀብቶች"
@@ -2464,6 +2617,14 @@ msgstr "የሥራ ማመልከቻ ሰነድ ትንተና ተጠናቋል።"
msgid "Resumes"
msgstr "የየታሪክ ማቅረቢያዎች"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "ግምገማ ያስፈልጋል"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "የተገመገሙ ፕሮፖዛሎችን"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "በቀኝ ማሰለፊያ"
@@ -2562,6 +2723,10 @@ msgstr "ምረጥ..."
msgid "Self-Host with Docker"
msgstr "በ Docker ራስህን አስተናግድ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "ላክ"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "የይለፍ ቃል ዳግም እንዲታወቅ ኢሜል ላክ"
msgid "Sending password reset email..."
msgstr "የይለፍ ቃል ዳግም እንዲታወቅ ኢሜል በመላክ ላይ…"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "ጥያቄ በመላክ ላይ"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "መለያ መለያ"
@@ -2709,6 +2878,10 @@ msgstr "አንድ-አምድ የሆነ ከጎን አሞሌ እና ንፁህ የ
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "ነጠላ አምድ ከውስጠ-መስመር ሶስት-አምድ የመግቢያ ራስጌ ጋር (ቦታ · ድርጅት · ጊዜ)፤ የታመቀ እና ለATS ተስማሚ ሲሆን ለእስያ የሥራ ማመልከቻ ሰነድ ልማዶች (CN/JP/KR) በጣም የሚስማማ ነው።"
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "በእያንዳንዱ ገጽ ላይ አቢይ ሆሄ ያለው የክፍል ርዕሶች እና ዋና ቀለም ያለው የላይኛው ደንብ ያለው ነጠላ-አምድ፤ ለአስፈፃሚ፣ ለምክር ወይም ለጀማሪ የስራ ልምድ የተወለወለ።"
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "አንድ-አምድ የሆነ፣ የታማኝ እና ኃላፊነት ያለው ለከፍተኛ ወይም ለድርጅታዊ ደረጃ ሚናዎች የሚስማማ።"
@@ -2809,6 +2982,10 @@ msgstr "ስታቲስቲክስ"
msgid "Stay"
msgstr "ቆይ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "ተወ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "ጥንካሬዎች"
@@ -2903,6 +3080,14 @@ msgstr "የጽሁፍ ቀለም"
msgid "Thai"
msgstr "ታይኛ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "የአይአይ (AI) ከዚህ የስራ ልምድ መግለጫ ጋር የማይተገበር ለውጥ አቅርቧል።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "የአይአርአይ ቅድመ እይታ ሊደረግበት የማይችል ሀሳብ መልሷል።"
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API ቁልፉ በተሳካ ሁኔታ ተሰርዟል።"
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API ቁልፉ ከተሰረዘ በኋላ ለመረጃዎ መዳረስ አይችልም። ይህ ሥራ መቀለብ አይቻልም።"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "ረዳቱ አንድ ሀሳብ ከመመለሱ በፊት ቆመ።"
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "ይህ ለየታሪክዎ ተመቻቹ የ URL ስም ነው።"
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "ይህ በ AI አቅራቢው ምላሽ ላይ በመመርኮዝ ጥቂት ደቂቃዎች ሊወስድ ይችላል። እባክዎ መስኮቱን አትዘጉ ወይም ገጹን አታሻሽሉ።"
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "ይህ ሀሳብ ጊዜው ያለፈበት ነው። ረዳቱን ከአዲሱ የስራ ልምድ (ሲቪ) እንደገና እንዲያድስለት ይጠይቁት።"
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "ይህ የየታሪክ ማቅረቢያ ተቆልፏል እና ማዘመን አይቻልም።"
@@ -3034,6 +3228,10 @@ msgstr "መለያዎን ለመሰረዝ የማረጋገጫ ጽሑፍን ያስ
msgid "Toggle left sidebar"
msgstr "የግራ የጎን አሞሌን ቀያይር"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "የገጽ መደራረብን ቀያይር"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ዩክሬንኛ"
msgid "Underline"
msgstr "ነጥብ ተስማሚ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "ይመልሱ (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "ያለ ገደብ የየታሪክ ማቅረቢያዎች"
@@ -3387,10 +3580,6 @@ msgstr "ኤክስ (ትዊተር)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "አዎ፣ Reactive Resume በብዙ ቋንቋዎች ላይ ይገኛል። የምትመርጡትን ቋንቋ በቅንብሮች ገጽ ውስጥ ወይም በላይኛው ቀኝ ጠርዝ ያለውን የቋንቋ መቀየሪያ በመጠቀም መምረጥ ትችላላችሁ። ቋንቋዎን ካላያችሁ፣ ወይም ቀረውን ትርጉም ለማሻሻል ከፈለጉ፣ በ<0> Crowdin ላይ ትርጉሞችን በማሻሻል መዋኛ ለመያዝ ትችላላችሁ<1> (በአዲስ ታብ ይከፈታል)</1></0>።"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "አዎ! ሁሉም ቴምፕሌቶች ሙሉ በሙሉ የሚቀየሩ ናቸው። ቀለሞችን፣ ፊደሎችን፣ ክፍተቶችን መቀየር ትችላላችሁ፣ ደግሞም ለየታሪክዎ መልክ ፍጹም መቆጣጠር ለማግኘት ብጁ CSS መጻፍ ትችላላችሁ።"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "አዎ! Reactive Resume ፍጹም ነፃ ለመጠቀም ይችላሉ፣ የተደበቁ ወጪዎች፣ የፕሪሚየም ደረጃዎች ወይም ክፍያ መመዝገብ የለም። ክፍት ምንጭ ነው እና ሁልጊዜም ነፃ ይቆያል።"
@@ -3440,7 +3629,7 @@ msgstr "መረጃዎ በአካባቢዎ መሣሪያ ላይ ይቀመጣል"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "መረጃዎ በደህና ይከማቻል እና ከሶስተኛ ወገኖች ጋር አይተካፈልም። ደግሞም በራስዎ ሰርቨር ላይ Reactive Resumeን በመጫን በመረጃዎ ላይ ሙሉ ቁጥጥር ማግኘት ትችላላችሁ።"
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "የቅርብ ጊዜ ለውጦችዎ ሊቀመጡ አልቻሉም።"
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ar\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, zero {# عنصر} one {# عنصر} two {# عنصران} few
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, zero {# أدوار} one {# دور} two {# دوران} few {# أدوار} many {# دورًا} other {# أدوار}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "تمت مراجعة المقترحات {0}"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "حجم الورق A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "بكل تأكيد! يمكنك تصدير سيرتك الذاتية إلى PDF بنقرة واحدة فقط. يحافظ ملف PDF المُصدَّر على جميع التنسيقات والأنماط الخاصة بك بشكل مثالي."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "يقبل"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "قبول الكل"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "الاقتراح المقبول"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "يمكنك الوصول إلى سيرك الذاتية وبياناتك برمجيًا باستخدام واجهة برمجة التطبيقات (API)."
@@ -229,10 +246,38 @@ msgstr "إضافة صف قبل"
msgid "Afrikaans"
msgstr "الأفريقانس"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "بعد"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "الذكاء الاصطناعي"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "تم تعطيل تكامل الذكاء الاصطناعي"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "تم تقديم اقتراح الذكاء الاصطناعي."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "تم رفض اقتراح الذكاء الاصطناعي."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "تم تطبيق مقترحات الذكاء الاصطناعي."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "تم رفض مقترحات الذكاء الاصطناعي."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "مساعد كتابة السيرة الذاتية المدعوم بالذكاء الاصطناعي"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "الألبانية"
@@ -367,10 +412,22 @@ msgstr "مجال الدراسة"
msgid "Artificial Intelligence"
msgstr "الذكاء الاصطناعي"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "اطلب تعديلاً مُحدداً لسيرتك الذاتية..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "اطلب تغييرًا تدريجيًا"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "نسبة الأبعاد"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "فشل طلب المساعد"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "الأساسيات"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "قوالب جميلة للاختيار من بينها، مع المزيد في الطريق."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "قبل"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "البنغالية"
@@ -462,10 +523,6 @@ msgstr "قائمة نقطية"
msgid "By the community, for the community."
msgstr "من قبل المجتمع، من أجل المجتمع."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "هل يمكنني تخصيص القوالب؟"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "هل يمكنني تصدير سيرتي الذاتية إلى PDF؟"
@@ -576,6 +633,14 @@ msgstr "واضح"
msgid "Click here to select a file to import"
msgstr "انقر هنا لتحديد ملف لاستيراده"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "إغلاق"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "مساعد الذكاء الاصطناعي للإغلاق"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "كتلة برمجية"
@@ -622,6 +687,10 @@ msgstr "تأكيد"
msgid "Connect"
msgstr "اتصال"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "قم بالتواصل مع مزود خدمة الذكاء الاصطناعي والتحقق منه قبل استخدام مقترحات تحرير السيرة الذاتية."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "انسخ مفتاحك السري هذا واستخدمه في تطبيق
msgid "Copy URL"
msgstr "نسخ عنوان URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "تعذر تطبيق اقتراح الذكاء الاصطناعي."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "قطع الاتصال"
msgid "Discord"
msgstr "ديسكورد"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "رفض"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "إرشادات الاستخدام"
msgid "Don't have an account? <0/>"
msgstr "ليس لديك حساب؟ <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "يتبرع"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "تبرع لـReactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "تمكين المصادقة الثنائية (2FA)"
msgid "Enable AI Features"
msgstr "تمكين ميزات الذكاء الاصطناعي"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "تفعيل تكامل الذكاء الاصطناعي"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "تمكين المصادقة الثنائية"
@@ -1162,6 +1247,10 @@ msgstr "كل ما يتم إدخاله هنا يُخزَّن محليًا في م
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "كل ما تحتاجه لإنشاء سير ذاتية احترافية وتخصيصها ومشاركتها. بُني مع مراعاة الخصوصية، ومدعوم بالمصدر المفتوح، ومجاني تمامًا إلى الأبد."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "أمثلة: إعادة كتابة الملخص، أو تحسين إحدى نقاط الخبرة، أو إضافة مقاييس، أو تعديل السيرة الذاتية لتناسب وصف الوظيفة."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "الخروج من وضع ملء الشاشة"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "أنسيت كلمة مرورك؟"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "الصيغة"
@@ -1397,6 +1486,10 @@ msgstr "الصيغة"
msgid "Free"
msgstr "مجاني"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "حر الشكل"
#: src/libs/locale.ts
msgid "French"
msgstr "الفرنسية"
@@ -1952,6 +2045,10 @@ msgstr "مايكروسوفت وورد"
msgid "Model"
msgstr "النموذج"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "المزيد من إجراءات الاقتراح"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "نقل إلى"
@@ -1978,6 +2075,10 @@ msgstr "يجب أن تبدأ بـ https://"
msgid "Name"
msgstr "الاسم"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "يحتاج إلى مراجعة"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "النيبالية"
@@ -2008,6 +2109,10 @@ msgstr "كلمة مرور جديدة"
msgid "New Section"
msgstr "قسم جديد"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "التالي"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "بدون إعلانات، بدون تتبّع"
@@ -2057,11 +2162,19 @@ msgstr "صيانة مستمرة"
msgid "Open"
msgstr "افتح"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "مساعد الذكاء الاصطناعي المفتوح"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "فتح عميل البريد الإلكتروني"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "التكاملات المفتوحة"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "فتح إعدادات التكامل"
@@ -2215,6 +2328,10 @@ msgstr "يُرجى إدخال كلمة المرور التي تمت مشاركت
msgid "Please enter the URL you want to link to:"
msgstr "يُرجى إدخال عنوان URL الذي تريد الربط به:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "يرجى دعم المشروع"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "المنصب"
msgid "Preferences"
msgstr "التفضيلات"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "إعداد التغييرات"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "الإعدادات المسبقة"
@@ -2263,6 +2384,10 @@ msgstr "اضغط على <0>{RETURN_KEY}</0> أو <1>{COMMA_KEY}</1> لإضافة
msgid "Press <0>Enter</0> to open"
msgstr "اضغط على <0>Enter</0> لفتح"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "السابق"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "اللون الأساسي"
@@ -2293,6 +2418,11 @@ msgstr "شريط التقدّم"
msgid "Projects"
msgstr "المشاريع"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "الاقتراح {0} من {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "احمِ سيرتك الذاتية من الوصول غير المصرّح به باستخدام كلمة مرور"
@@ -2315,6 +2445,10 @@ msgstr "المنشورات"
msgid "Publisher"
msgstr "الناشر"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "رقعة JSON الخام"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - الانتقال إلى الصفحة الرئيسية"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume هو مشروع مجاني ومفتوح المصدر،
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume هي أداة إنشاء سيرة ذاتية مجانية ومفتوحة المصدر تعمل على تبسيط عملية إنشاء سيرتك الذاتية وتحديثها ومشاركتها."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "برنامج Reactive Resume مجاني ومفتوح المصدر. إذا أفادك، يُرجى التفكير في التبرع."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume مفتوح المصدر ويركز على الخصوصية ومجاني تمامًا. وعلى عكس أدوات إنشاء السير الذاتية الأخرى، لا يعرض إعلانات، ولا يتتبع بياناتك، ولا يقيّد ميزاتك خلف جدار دفع."
@@ -2362,11 +2500,6 @@ msgstr "مستطيل"
msgid "Rectangle (Full Width)"
msgstr "مستطيل (عرض كامل)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "إعادة (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "تحديث"
msgid "Register New Device"
msgstr "تسجيل جهاز جديد"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "يرفض"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "رفض الكل"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "اقتراح مرفوض"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "تتذكر كلمة المرور؟ <0/>"
@@ -2431,6 +2576,10 @@ msgstr "جاري إعادة إرسال رسالة التحقق..."
msgid "Reset"
msgstr "إعادة تعيين"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "إعادة ضبط المحادثة"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "إعادة تعيين كلمة المرور"
msgid "Resetting your password..."
msgstr "جاري إعادة تعيين كلمة المرور..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "مساعد الذكاء الاصطناعي لتغيير الحجم"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "الموارد"
@@ -2464,6 +2617,14 @@ msgstr "اكتمل تحليل السيرة الذاتية."
msgid "Resumes"
msgstr "السير الذاتية"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "مراجعة مطلوبة"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "المقترحات التي تمت مراجعتها"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "محاذاة لليمين"
@@ -2562,6 +2723,10 @@ msgstr "تحديد..."
msgid "Self-Host with Docker"
msgstr "الاستضافة الذاتية مع Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "يرسل"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "إرسال رسالة إعادة تعيين كلمة المرور"
msgid "Sending password reset email..."
msgstr "جاري إرسال رسالة إعادة تعيين كلمة المرور..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "إرسال الطلب"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "فاصل"
@@ -2709,6 +2878,10 @@ msgstr "عمود واحد مع شريط جانبي وتخطيط شبكي نظي
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "عمود واحد مع رأس إدخال مضمن من ثلاثة أعمدة (الموضع - المؤسسة - الفترة)؛ مدمج وملائم لـ ATS، ومناسب تمامًا للسيرة الذاتية الآسيوية (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "تصميم ذو عمود واحد مع عناوين أقسام بأحرف كبيرة وخطوط علوية بلون أساسي في كل صفحة؛ مصمم خصيصًا للسير الذاتية التنفيذية أو الاستشارية أو للشركات الناشئة."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "عمود واحد؛ مصقول ورسمي للوظائف العليا أو مناصب الشركات الكبرى."
@@ -2809,6 +2982,10 @@ msgstr "الإحصاءات"
msgid "Stay"
msgstr "البقاء"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "قف"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "نقاط القوة"
@@ -2903,6 +3080,14 @@ msgstr "لون النص"
msgid "Thai"
msgstr "التايلاندية"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "اقترح الذكاء الاصطناعي تغييرًا لم يعد ينطبق على هذه السيرة الذاتية."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "أعاد الذكاء الاصطناعي اقتراحًا لا يمكن معاينته."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "تم حذف مفتاح واجهة برمجة التطبيقات (API) ب
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "لن يتمكن مفتاح واجهة برمجة التطبيقات هذا من الوصول إلى بياناتك بعد حذفه. لا يمكن التراجع عن هذا الإجراء."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "توقف المساعد قبل أن يعيد الاقتراح."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "هذا اسم مناسب لعناوين URL لسيرتك الذاتية.
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "قد يستغرق هذا بضع دقائق اعتمادًا على استجابة مزوّد الذكاء الاصطناعي. يُرجى عدم إغلاق النافذة أو تحديث الصفحة."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "هذا الاقتراح قديم. اطلب من المساعد إعادة إنشائه من أحدث سيرة ذاتية."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "هذه السيرة الذاتية مقفلة ولا يمكن تحديثها."
@@ -3034,6 +3228,10 @@ msgstr "لحذف حسابك، تحتاج إلى إدخال نص التأكيد
msgid "Toggle left sidebar"
msgstr "تبديل الشريط الجانبي الأيسر"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "تبديل تكديس الصفحات"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "الأوكرانية"
msgid "Underline"
msgstr "تسطير"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "تراجع (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "سير ذاتية غير محدودة"
@@ -3387,10 +3580,6 @@ msgstr "X (تويتر)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "نعم، يتوفر Reactive Resume بعدة لغات. يمكنك اختيار لغتك المفضلة في صفحة الإعدادات، أو باستخدام مبدّل اللغة في الزاوية العلوية اليمنى. إذا لم ترَ لغتك، أو كنت ترغب في تحسين الترجمات الموجودة، يمكنك <0>المساهمة في الترجمات على Crowdin<1> (يفتح في علامة تبويب جديدة)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "نعم! كل قالب قابل للتخصيص بالكامل. يمكنك تغيير الألوان والخطوط والتباعد، وحتى كتابة CSS مخصص للتحكم الكامل في مظهر سيرتك الذاتية."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "نعم! Reactive Resume مجاني تمامًا للاستخدام، بدون تكاليف خفية أو مستويات مدفوعة أو رسوم اشتراك. إنه مفتوح المصدر وسيظل مجانيًا دائمًا."
@@ -3440,7 +3629,7 @@ msgstr "تُخزَّن بياناتك محليًا"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "تُخزَّن بياناتك بأمان ولا تتم مشاركتها أبدًا مع أطراف ثالثة. يمكنك أيضًا استضافة Reactive Resume ذاتيًا على خوادمك الخاصة للتحكم الكامل في بياناتك."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "لم يتم حفظ آخر التغييرات التي أجريتها."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: az\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Azerbaijani\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# element} other {# element}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# rol} other {# rol}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} təkliflər nəzərdən keçirildi"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Əlbəttə! Özgeçmişinizi cəmi bir kliklə PDF formatına ixrac edə bilərsiniz. İxrac olunmuş PDF bütün formatlaşdırmanı və tərtibatı mükəmməl şəkildə saxlayır."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Qəbul et"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Hamısını qəbul edin"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Qəbul edilmiş təklif"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API vasitəsilə özgeçmişlərinizi və məlumatlarınızı proqramlı şəkildə idarə edin."
@@ -229,10 +246,38 @@ msgstr "Əvvəl Sətir əlavə et"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Sonra"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "Süni İntellekt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Süni intellekt inteqrasiyası deaktiv edildi"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Süni intellekt təklifi tətbiq edildi."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Süni intellekt təklifi rədd edildi."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Süni intellekt təklifləri tətbiq olundu."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Süni intellekt təklifləri rədd edildi."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Süni intellekt CV köməkçisi"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanca"
@@ -367,10 +412,22 @@ msgstr "Təhsil sahəsi"
msgid "Artificial Intelligence"
msgstr "Süni İntellekt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Hədəfli CV dəyişikliyi istəyin..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Artan dəyişiklik tələb edin"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Propor­siya"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Köməkçi sorğusu uğursuz oldu"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Əsas məlumatlar"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Seçmək üçün gözəl şablonlar, yolda olan yeniləri ilə."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Əvvəl"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Benqal"
@@ -462,10 +523,6 @@ msgstr "Markerlə Siyahı"
msgid "By the community, for the community."
msgstr "İcma tərəfindən, icma üçün."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Şablonları fərdiləşdirə bilərəm?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Özgeçmişimi PDF‑ə ixrac edə bilərəm?"
@@ -576,6 +633,14 @@ msgstr "Açıq"
msgid "Click here to select a file to import"
msgstr "İdxal üçün fayl seçmək üçün bura klikləyin"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Bağla"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Süni intellekt köməkçisini bağlayın"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Kod Bloku"
@@ -622,6 +687,10 @@ msgstr "Təsdiqlə"
msgid "Connect"
msgstr "Qoşul"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "CV redaktə təkliflərindən istifadə etməzdən əvvəl süni intellekt provayderinə qoşulun və təsdiqləyin."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Bu gizli açarı kopyalayın və verilənlərinizə daxil olmaq üçün
msgid "Copy URL"
msgstr "URL‑i kopyala"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Süni intellekt təklifini tətbiq etmək mümkün olmadı."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Ayır"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Ləğv et"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Sənədləşmə"
msgid "Don't have an account? <0/>"
msgstr "Hesabınız yoxdur? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Bağışlayın"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Reactive Resume‑yə ianə et"
@@ -1094,6 +1175,10 @@ msgstr "2FA‑nı Aktiv et"
msgid "Enable AI Features"
msgstr "Süni İntellekt Xüsusiyyətlərini Aktiv et"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Süni intellekt inteqrasiyasını aktivləşdirin"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "İki Mərhələli Autentifikasiyanı Aktiv et"
@@ -1162,6 +1247,10 @@ msgstr "Buraya daxil etdiyiniz hər şey brauzerinizdə lokal olaraq saxlanılı
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Peşəkar özgeçmişlər yaratmaq, fərdiləşdirmək və paylaşmaq üçün lazım olan hər şey. Məxfilik nəzərə alınaraq qurulub, açıq mənbə ilə işləyir və tamamilə pulsuzdur."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Nümunələr: xülasənin yenidən yazılması, təcrübə siyahısından birinin qısaldılması, metriklər əlavə edilməsi və ya CV-ni iş təsviri üçün uyğunlaşdırmaq."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Tam ekrandan çıx"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Parolunuzu unutmusunuz?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Pulsuz"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Sərbəst forma"
#: src/libs/locale.ts
msgid "French"
msgstr "Fransız"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Daha çox təklif hərəkəti"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Keçir"
@@ -1978,6 +2075,10 @@ msgstr "https:// ilə başlamalıdır"
msgid "Name"
msgstr "Ad"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Baxışa ehtiyac var"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepal"
@@ -2008,6 +2109,10 @@ msgstr "Yeni Parol"
msgid "New Section"
msgstr "Yeni Bölmə"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Sonrakı"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Reklam yoxdur, İzləmə yoxdur"
@@ -2057,11 +2162,19 @@ msgstr "Davamlı Baxım"
msgid "Open"
msgstr "Aç"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Açıq süni intellekt köməkçisi"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "E‑poçt müştərisini aç"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Açıq İnteqrasiyalar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "İnteqrasiyalar parametrlərini açın"
@@ -2215,6 +2328,10 @@ msgstr "Davam etmək üçün, özgeçmiş sahibi tərəfindən sizinlə paylaş
msgid "Please enter the URL you want to link to:"
msgstr "Link vermək istədiyiniz URL‑i daxil edin:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Layihəni dəstəkləyin"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Vəzifə"
msgid "Preferences"
msgstr "Parametrlər"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Dəyişikliklərin hazırlanması"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Qabaqcadan təyin olunmuş parametrlər"
@@ -2263,6 +2384,10 @@ msgstr "Hazırkı açar sözü əlavə etmək və ya saxlamaq üçün <0>{RETURN
msgid "Press <0>Enter</0> to open"
msgstr "Açmaq üçün <0>Enter düyməsini</0> basın"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Əvvəlki"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Əsas Rəng"
@@ -2293,6 +2418,11 @@ msgstr "Proqres Zolağı"
msgid "Projects"
msgstr "Layihələr"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Təklif {total} / {0}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Özgeçmişinizi parol ilə icazəsiz girişdən qoruyun"
@@ -2315,6 +2445,10 @@ msgstr "Nəşrlər"
msgid "Publisher"
msgstr "Nəşriyyatçı"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Xam JSON Yamağı"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Ana səhifəyə keç"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume pulsuz və açıq mənbə layihəsidir; sevgi ilə yarad
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume özgeçmişinizi yaratma, yeniləmə və paylaşma prosesini sadələşdirən pulsuz və açıq mənbə özgeçmiş qurucusudur."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume pulsuz və açıq mənbəlidir. Əgər sizə kömək edibsə, zəhmət olmasa, ianə etməyi düşünün."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume açıq mənbəlidir, məxfilik yönümlüdür və tamamilə pulsuzdur. Digər özgeçmiş qurucularından fərqli olaraq, o reklamlara yer vermir, məlumatınızı izləmir və funksiyaları ödəniş divarının arxasında məhdudlaşdırmır."
@@ -2362,11 +2500,6 @@ msgstr "Düzbucaqlı"
msgid "Rectangle (Full Width)"
msgstr "Düzbucaqlı (Tam En)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Təkrarla (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Yenilə"
msgid "Register New Device"
msgstr "Yeni cihazı qeydiyyatdan keçirin"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Rədd et"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Hamısını rədd et"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Rədd edilmiş təklif"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Şifrənizi xatırlayırsınız? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Təsdiq e‑poçtu yenidən göndərilir..."
msgid "Reset"
msgstr "Sıfırla"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Söhbəti sıfırlayın"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Parolunuzu sıfırlayın"
msgid "Resetting your password..."
msgstr "Parolunuz sıfırlanır..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Süni intellekt köməkçisinin ölçüsünü dəyişin"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Resurslar"
@@ -2464,6 +2617,14 @@ msgstr "Təcrübə təhlili tamamlandı."
msgid "Resumes"
msgstr "Özgeçmişlər"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Baxış tələb olunur"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Təkliflər nəzərdən keçirildi"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Sağdan Sətirlə"
@@ -2562,6 +2723,10 @@ msgstr "Seçin..."
msgid "Self-Host with Docker"
msgstr "Docker ilə Özün‑host et"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Göndər"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Parol Sıfırlama E‑poçtu Göndər"
msgid "Sending password reset email..."
msgstr "Parol sıfırlama e‑poçtu göndərilir..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Sorğu göndərilir"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Ayırıcı"
@@ -2709,6 +2878,10 @@ msgstr "Tək sütunlu, yan panel və təmiz şəbəkə maketi ilə; istənilən
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Tək sütunlu, xətti üçsütunlu giriş başlığı (vəzifə · təşkilat · dövr); yığcam və ATS-ə uyğun, Asiya tərcümeyi-hal konvensiyalarına (Çin/Yaponiya/Koreya) uyğundur."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Hər səhifədə böyük hərflərlə bölmə başlıqları və əsas rəng üst qaydası olan tək sütunlu; rəhbər, konsaltinq və ya startap tərcümeyi-halları üçün cilalanmış."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Tək sütunlu; yüksək vəzifəli və ya müəssisə səviyyəli vəzifələr üçün cilalanmış və ciddi üslub."
@@ -2809,6 +2982,10 @@ msgstr "Statistika"
msgid "Stay"
msgstr "Qal"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Dayan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Güclü tərəflər"
@@ -2903,6 +3080,14 @@ msgstr "Mətn Rəngi"
msgid "Thai"
msgstr "Tay"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Süni intellekt artıq bu CV-yə aid olmayan bir dəyişiklik təklif etdi."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Süni intellekt, önizləməsi mümkün olmayan bir təklifi geri qaytardı."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API açarı uğurla silindi."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Silindikdən sonra bu API açarı məlumatlarınıza daha çıxış əldə edə bilməyəcək. Bu əməliyyat geri qaytarıla bilməz."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Köməkçi təklifi cavablandırmadan əvvəl dayandı."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Bu, özgeçmişiniz üçün URL‑ə uyğun bir addır."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Bu, Süni İntellekt provayderinin cavabından asılı olaraq bir neçə dəqiqə çəkə bilər. Zəhmət olmasa, pəncərəni bağlamayın və ya səhifəni yeniləməyin."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Bu təklif köhnəlib. Köməkçidən onu ən son CV-dən yenidən yaratmasını xahiş edin."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Bu özgeçmiş kilidlənib və yenilənə bilməz."
@@ -3034,6 +3228,10 @@ msgstr "Hesabınızı silmək üçün təsdiq mətnini daxil etməli və aşağ
msgid "Toggle left sidebar"
msgstr "Sol yan panelin açılıb-bağlanmasını təmin edin"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Səhifə yığılmasını dəyiş/dəyişdir"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrayn"
msgid "Underline"
msgstr "Altını Xətlə"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Geri al (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Limitsiz Özgeçmişlər"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Bəli, Reactive Resume bir neçə dildə mövcuddur. Seçim etdiyiniz dili parametrlər səhifəsindən və ya sağ yuxarı küncdəki dil dəyişdiricisindən seçə bilərsiniz. Əgər dilinizi görmürsünüzsə və ya mövcud tərcümələri yaxşılaşdırmaq istəyirsinizsə, <0>Crowdin‑də tərcümələrə töhfə verə bilərsiniz<1> (yeni vərəqdə açılır)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Bəli! Hər bir şablon tam fərdiləşdirilə bilər. Rəngləri, şriftləri, aralıqları dəyişə və hətta özgeçmişinizin görünüşünə tam nəzarət üçün xüsusi CSS yaza bilərsiniz."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Bəli! Reactive Resume heç bir gizli xərc, premium səviyyə və ya abunə haqqı olmadan tamamilə pulsuzdur. O, açıq mənbəlidir və həmişə pulsuz qalacaq."
@@ -3440,7 +3629,7 @@ msgstr "Məlumatlarınız lokal olaraq saxlanılır"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Məlumatlarınız təhlükəsiz şəkildə saxlanılır və heç vaxt üçüncü tərəflərlə paylaşılmır. Məlumatlarınıza tam nəzarət üçün Reactive Resume‑ni öz serverlərinizdə də host edə bilərsiniz."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Son dəyişiklikləriniz yadda saxlanıla bilmədi."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: bg\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# елемент} other {# елемента}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# роля} other {# роли}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} прегледани предложения"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Абсолютно! Можете да експортирате автобиографията си в PDF само с едно кликване. Експортираният PDF файл запазва перфектно всички ваши форматирания и стилове."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Приемам"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Приемане на всички"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Прието предложение"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Получете програмен достъп до автобиографиите и данните си чрез API."
@@ -229,10 +246,38 @@ msgstr "Добавяне на ред преди"
msgid "Afrikaans"
msgstr "Африканс"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "След"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Интеграцията с изкуствен интелект е деактивирана"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Предложението за изкуствен интелект е приложено."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Предложението за изкуствен интелект е отхвърлено."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Приложени са предложения за ИИ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Предложенията за изкуствен интелект са отхвърлени."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Асистент за автобиография с изкуствен интелект"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Албански"
@@ -367,10 +412,22 @@ msgstr "Област на обучение"
msgid "Artificial Intelligence"
msgstr "Изкуствен интелект"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Поискайте целенасочена промяна в автобиографията си..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Поискайте постепенна промяна"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Съотношение на страните"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Заявката за Асистент не беше успешна"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Основна информация"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Красиви шаблони, от които да избирате, с още по пътя."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Преди"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Бенгалски"
@@ -462,10 +523,6 @@ msgstr "Точков списък"
msgid "By the community, for the community."
msgstr "От общността, за общността."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Мога ли да персонализирам шаблоните?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Мога ли да експортирам автобиографията си в PDF?"
@@ -576,6 +633,14 @@ msgstr "Clear"
msgid "Click here to select a file to import"
msgstr "Кликнете тук, за да изберете файл за импортиране"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Затвори"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Затвори асистента с изкуствен интелект"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Блок с код"
@@ -622,6 +687,10 @@ msgstr "Потвърждаване"
msgid "Connect"
msgstr "Свързване"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Свържете се и проверете доставчик на изкуствен интелект, преди да използвате предложения за редактиране на автобиографии."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Копирайте този таен ключ и го използвай
msgid "Copy URL"
msgstr "Копиране на URL адрес"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Не можа да се приложи предложението за изкуствен интелект."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Прекъсване на връзката"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Отхвърляне"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Документация"
msgid "Don't have an account? <0/>"
msgstr "Нямате акаунт? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Дарете"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Дарете на Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Активиране на 2FA"
msgid "Enable AI Features"
msgstr "Активиране на AI функциите"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Активиране на интеграция с изкуствен интелект"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Активиране на двуфакторно удостоверяване"
@@ -1162,6 +1247,10 @@ msgstr "Всичко, въведено тук, се съхранява лока
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Всичко, от което се нуждаете, за да създавате, персонализирате и споделяте професионални автобиографии. Създадено с мисъл за поверителността, базирано на отворен код и напълно безплатно завинаги."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Примери: пренаписване на резюмето, стесняване на един от елементите за опит, добавяне на показатели или адаптиране на автобиографията към описанието на длъжността."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Излизане от цял екран"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Забравихте паролата си?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Формат"
@@ -1397,6 +1486,10 @@ msgstr "Формат"
msgid "Free"
msgstr "Безплатно"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Свободна форма"
#: src/libs/locale.ts
msgid "French"
msgstr "Френски"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Модел"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Още действия за предложението"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Преместване в"
@@ -1978,6 +2075,10 @@ msgstr "Трябва да започне с https://"
msgid "Name"
msgstr "Име"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Необходим е преглед"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Непалски"
@@ -2008,6 +2109,10 @@ msgstr "Нова парола"
msgid "New Section"
msgstr "Нов раздел"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Следваща"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Без реклами, без проследяване"
@@ -2057,11 +2162,19 @@ msgstr "Текуща поддръжка"
msgid "Open"
msgstr "Отвори"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Отворете AI асистент"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Отваряне на имейл клиент"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Отворени интеграции"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Отворете Настройки на интеграциите"
@@ -2215,6 +2328,10 @@ msgstr "Моля, въведете паролата, която ви е спод
msgid "Please enter the URL you want to link to:"
msgstr "Моля, въведете URL адреса, към който искате да създадете връзка:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Моля, подкрепете проекта"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Позиция"
msgid "Preferences"
msgstr "Предпочитания"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Подготовка на промени"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Предварителни настройки"
@@ -2263,6 +2384,10 @@ msgstr "Натиснете <0>{RETURN_KEY}</0> или <1>{COMMA_KEY}</1>, за
msgid "Press <0>Enter</0> to open"
msgstr "Натиснете <0>Enter</0>, за да отворите"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Предишна"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Основен цвят"
@@ -2293,6 +2418,11 @@ msgstr "Лента за напредък"
msgid "Projects"
msgstr "Проекти"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Предложение {0} от {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Защитете автобиографията си от неоторизиран достъп с парола"
@@ -2315,6 +2445,10 @@ msgstr "Публикации"
msgid "Publisher"
msgstr "Издател"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Кръпка за суров JSON"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Отиване към началната страница"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume е безплатен проект с отворен к
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume е безплатен конструктор на автобиографии с отворен код, който опростява процеса на създаване, актуализиране и споделяне на автобиографията ви."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume е безплатен и с отворен код. Ако ви е помогнал, моля, помислете за дарение."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume е с отворен код, фокусиран върху поверителността и напълно безплатен. За разлика от други конструктори на автобиографии, той не показва реклами, не проследява данните ви и не ограничава функциите зад платена стена."
@@ -2362,11 +2500,6 @@ msgstr "Правоъгълник"
msgid "Rectangle (Full Width)"
msgstr "Правоъгълник (пълна ширина)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Повтори (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Опресняване"
msgid "Register New Device"
msgstr "Регистрация на ново устройство"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Отхвърляне"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Отхвърляне на всички"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Отхвърлено предложение"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Спомняте ли си паролата? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Повторно изпращане на имейл за потвърж
msgid "Reset"
msgstr "Нулиране"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Нулиране на чата"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Нулирайте паролата си"
msgid "Resetting your password..."
msgstr "Нулиране на паролата ви..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Преоразмеряване на асистента с изкуствен интелект"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Ресурси"
@@ -2464,6 +2617,14 @@ msgstr "Анализът на автобиографията е завършен
msgid "Resumes"
msgstr "Автобиографии"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Изисква се преглед"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Прегледани предложения"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Подравняване вдясно"
@@ -2562,6 +2723,10 @@ msgstr "Изберете..."
msgid "Self-Host with Docker"
msgstr "Самостоятелно хостване с Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Изпрати"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Изпращане на имейл за нулиране на парол
msgid "Sending password reset email..."
msgstr "Изпращане на имейл за нулиране на парола..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Изпращане на заявка"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Разделител"
@@ -2709,6 +2878,10 @@ msgstr "Една колона със странична лента и изчис
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Единична колона с вградено заглавие в три колони (длъжност - организация - точка); компактен и удобен за ATS, подходящ за азиатските конвенции за автобиографии (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Едноколона с главни букви в заглавията на секциите и линия с основен цвят на горната част на всяка страница; изпипано за автобиографии на ръководители, консултанти или стартиращи компании."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Една колона; изпипан и сериозен за старши или корпоративни позиции."
@@ -2809,6 +2982,10 @@ msgstr "Статистика"
msgid "Stay"
msgstr "Остани"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Спри"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Силни страни"
@@ -2903,6 +3080,14 @@ msgstr "Цвят на текста"
msgid "Thai"
msgstr "Тайландски"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Изкуственият интелект предложи промяна, която вече не се отнася за това резюме."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Изкуственият интелект върна предложение, което не можеше да бъде прегледано предварително."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API ключът беше изтрит успешно."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "След изтриване този API ключ вече няма да може да получава достъп до данните ви. Това действие е необратимо."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Асистентът спря, преди да върне предложението."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Това е име, подходящо за URL, за вашата ав
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Това може да отнеме няколко минути в зависимост от отговора на AI доставчика. Моля, не затваряйте прозореца и не опреснявайте страницата."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Това предложение е остаряло. Помолете асистента да го генерира отново от най-новата автобиография."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Тази автобиография е заключена и не може да бъде актуализирана."
@@ -3034,6 +3228,10 @@ msgstr "За да изтриете профила си, трябва да във
msgid "Toggle left sidebar"
msgstr "Превключване на лявата странична лента"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Превключване на подреждането на страници"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Украински"
msgid "Underline"
msgstr "Подчертаване"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Отмени (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Неограничен брой автобиографии"
@@ -3387,10 +3580,6 @@ msgstr "X (Туитър)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Да, Reactive Resume е наличен на множество езици. Можете да изберете предпочитания от вас език от страницата с настройки или чрез превключвателя за език в горния десен ъгъл. Ако не виждате вашия език или искате да подобрите съществуващите преводи, можете да <0>допринесете към преводите в Crowdin<1> (отваря се в нов раздел)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Да! Всеки шаблон е напълно персонализируем. Можете да променяте цветове, шрифтове, разстояния и дори да пишете потребителски CSS за пълен контрол върху външния вид на автобиографията."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Да! Reactive Resume е напълно безплатен за ползване, без скрити разходи, премиум нива или абонаментни такси. Той е с отворен код и винаги ще остане безплатен."
@@ -3440,7 +3629,7 @@ msgstr "Вашите данни се съхраняват локално"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Вашите данни се съхраняват сигурно и никога не се споделят с трети страни. Можете също да хоствате Reactive Resume самостоятелно на свои сървъри за пълен контрол върху данните си."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Последните ви промени не можаха да бъдат запазени."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: bn\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Bengali\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {#টি আইটেম} other {#টি আইটেম
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# ভূমিকা} other {# ভূমিকা}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} প্রস্তাবনা পর্যালোচনা করা হয়েছে"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "অবশ্যই! আপনি এক ক্লিকেই আপনার জীবনবৃত্তান্তকে PDF আকারে এক্সপোর্ট করতে পারবেন। এক্সপোর্ট করা PDF-এ আপনার সব ফরম্যাটিং ও স্টাইলিং ঠিক যেমন আছে তেমনই থাকবে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "গ্রহণ করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "সব গ্রহণ করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "গৃহীত প্রস্তাব"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API ব্যবহার করে প্রোগ্রামেটিক ভাবে আপনার জীবনবৃত্তান্ত ও ডেটায় প্রবেশ করুন।"
@@ -229,10 +246,38 @@ msgstr "আগের দিকে সারি যোগ করুন"
msgid "Afrikaans"
msgstr "আফ্রিকান্স"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "পরে"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "এআই"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "এআই ইন্টিগ্রেশন নিষ্ক্রিয় করা হয়েছে"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "এআই প্রস্তাব প্রয়োগ করা হয়েছে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "এআই প্রস্তাব প্রত্যাখ্যাত হয়েছে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "এআই প্রস্তাবনাগুলো প্রয়োগ করা হয়েছে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "এআই প্রস্তাবগুলো প্রত্যাখ্যাত হয়েছে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "এআই রেজ্যুমে অ্যাসিস্ট্যান্ট"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "আলবেনিয়ান"
@@ -367,10 +412,22 @@ msgstr "অধ্যয়নের এলাকা"
msgid "Artificial Intelligence"
msgstr "কৃত্রিম বুদ্ধিমত্তা"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "নির্দিষ্ট জীবনবৃত্তান্ত পরিবর্তনের জন্য অনুরোধ করুন..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "ধাপে ধাপে পরিবর্তনের জন্য অনুরোধ করুন।"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "আকারের অনুপাত"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "সহকারীর অনুরোধ ব্যর্থ হয়েছে"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "বেসিক"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "পছন্দ করার জন্য সুন্দর সুন্দর টেমপ্লেট, আরও অনেক টেমপ্লেট শিগগিরই আসছে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "আগে"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "বাংলা"
@@ -462,10 +523,6 @@ msgstr "বুলেট লিস্ট"
msgid "By the community, for the community."
msgstr "সম্প্রদায়ের দ্বারা, সম্প্রদায়ের জন্য।"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "আমি কি টেমপ্লেটগুলো কাস্টমাইজ করতে পারি?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "আমি কি আমার জীবনবৃত্তান্তকে PDF-এ এক্সপোর্ট করতে পারি?"
@@ -576,6 +633,14 @@ msgstr "স্বচ্ছ"
msgid "Click here to select a file to import"
msgstr "ইমপোর্ট করার জন্য এখান ক্লিক করে একটি ফাইল নির্বাচন করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "বন্ধ করুন"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "এআই সহকারী বন্ধ করুন"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "কোড ব্লক"
@@ -622,6 +687,10 @@ msgstr "নিশ্চিত করুন"
msgid "Connect"
msgstr "কনেক্ট করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "রেজ্যুমে সম্পাদনার প্রস্তাবগুলো ব্যবহার করার আগে একজন এআই প্রদানকারীর সাথে সংযোগ স্থাপন করুন এবং তাকে যাচাই করে নিন।"
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "এই সিক্রেট কী কপি করে আপনার
msgid "Copy URL"
msgstr "URL কপি করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "এআই প্রস্তাবটি প্রয়োগ করা যায়নি।"
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "ডিসকনেক্ট করুন"
msgid "Discord"
msgstr "ডিসকর্ড"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "খারিজ করুন"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "ডকুমেন্টেশন"
msgid "Don't have an account? <0/>"
msgstr "অ্যাকাউন্ট নেই? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "দান করুন"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Reactive Resume-এ অনুদান দিন"
@@ -1094,6 +1175,10 @@ msgstr "2FA চালু করুন"
msgid "Enable AI Features"
msgstr "এআই ফিচারগুলো চালু করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "এআই ইন্টিগ্রেশন সক্ষম করুন"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "টু‑ফ্যাক্টর প্রমাণীকরণ চালু করুন"
@@ -1162,6 +1247,10 @@ msgstr "এখানে যা কিছু লিখবেন সব আপন
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "পেশাদার জীবনবৃত্তান্ত তৈরি, কাস্টমাইজ এবং শেয়ার করার জন্য যা যা প্রয়োজন সবই এখানে আছে। গোপনীয়তা মাথায় রেখে তৈরি, মুক্ত উৎস দ্বারা চালিত এবং চিরদিনের জন্য সম্পূর্ণ বিনামূল্যে।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "উদাহরণস্বরূপ: সারাংশটি নতুন করে লিখুন, অভিজ্ঞতার একটি বুলেট পয়েন্ট সংক্ষিপ্ত করুন, পরিমাপক যোগ করুন, অথবা চাকরির বিবরণের জন্য জীবনবৃত্তান্তটি সাজিয়ে নিন।"
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "পূর্ণ স্ক্রীন থেকে বের হন"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "আপনি কি পাসওয়ার্ড ভুলে গিয়েছেন?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "রূপ"
@@ -1397,6 +1486,10 @@ msgstr "রূপ"
msgid "Free"
msgstr "বিনামূল্যে"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "মুক্ত-ফর্ম"
#: src/libs/locale.ts
msgid "French"
msgstr "ফরাসি"
@@ -1952,6 +2045,10 @@ msgstr "মাইক্রোসফট ওয়ার্ড"
msgid "Model"
msgstr "মডেল"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "আরও প্রস্তাবনা কার্যক্রম"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "এখানে সরান"
@@ -1978,6 +2075,10 @@ msgstr "https:// দিয়ে শুরু করতে হবে।"
msgid "Name"
msgstr "নাম"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "পর্যালোচনা প্রয়োজন"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "নেপালি"
@@ -2008,6 +2109,10 @@ msgstr "নতুন পাসওয়ার্ড"
msgid "New Section"
msgstr "নতুন বিভাগ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "পরবর্তী"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "কোনো বিজ্ঞাপন নয়, কোনো ট্র্যাকিং নয়"
@@ -2057,11 +2162,19 @@ msgstr "চলমান রক্ষণাবেক্ষণ"
msgid "Open"
msgstr "খুলুন"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "ওপেন এআই অ্যাসিস্ট্যান্ট"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "ইমেইল ক্লায়েন্ট খুলুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ওপেন ইন্টিগ্রেশন"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "ইন্টিগ্রেশন সেটিংস খুলুন"
@@ -2215,6 +2328,10 @@ msgstr "অবিরত থাকতে জীবনবৃত্তান্ত
msgid "Please enter the URL you want to link to:"
msgstr "যে URL‑এ লিংক করতে চান অনুগ্রহ করে সেটি লিখুন:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "প্রকল্পটি সমর্থন করুন।"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "পদবি"
msgid "Preferences"
msgstr "পছন্দসমূহ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "পরিবর্তন প্রস্তুত করা"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "প্রিসেটসমূহ"
@@ -2263,6 +2384,10 @@ msgstr "বর্তমান কীওয়ার্ড যোগ বা স
msgid "Press <0>Enter</0> to open"
msgstr "খুলতে <0>এন্টার</0> চাপুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "পূর্ববর্তী"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "প্রাথমিক রঙ"
@@ -2293,6 +2418,11 @@ msgstr "প্রগতি নির্দেশক বার"
msgid "Projects"
msgstr "প্রোজেক্টসমূহ"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "{0} এর {total} প্রস্তাব"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "একটি পাসওয়ার্ড দিয়ে আপনার জীবনবৃত্তান্তকে অননুমোদিত প্রবেশ থেকে সুরক্ষিত রাখুন"
@@ -2315,6 +2445,10 @@ msgstr "প্রকাশনাসমূহ"
msgid "Publisher"
msgstr "প্রকাশক"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "কাঁচা JSON প্যাচ"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - হোমপেইজে যান"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume একটি বিনামূল্যের ও ম
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume একটি বিনামূল্যের এবং মুক্ত উৎস জীবনবৃত্তান্ত নির্মাতা, যা আপনার জীবনবৃত্তান্ত তৈরি, আপডেট ও শেয়ার করার প্রক্রিয়াকে সহজ করে।"
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "রিঅ্যাক্টিভ রেজ্যুমে বিনামূল্যে এবং ওপেন সোর্স। যদি এটি আপনাকে সাহায্য করে থাকে, তবে অনুগ্রহ করে অনুদান দেওয়ার কথা বিবেচনা করুন।"
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume মুক্ত উৎস, গোপনীয়তা-কেন্দ্রিক এবং সম্পূর্ণ বিনামূল্যে। অন্য জীবনবৃত্তান্ত নির্মাতাদের মতো এটি কোনো বিজ্ঞাপন দেখায় না, আপনার ডেটা ট্র্যাক করে না, বা ফিচারগুলো পেওয়ালের আড়ালে আটকে রাখে না।"
@@ -2362,11 +2500,6 @@ msgstr "আয়তক্ষেত্র"
msgid "Rectangle (Full Width)"
msgstr "আয়তক্ষেত্র (পূর্ণ প্রস্থ)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "রি-ডু (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "রিফ্রেশ"
msgid "Register New Device"
msgstr "নতুন ডিভাইস নিবন্ধন করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "প্রত্যাখ্যান করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "সব প্রত্যাখ্যান করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "প্রত্যাখ্যাত প্রস্তাব"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "আপনার পাসওয়ার্ড মনে আছে? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "যাচাইকরণের ইমেইল পুনরায় প
msgid "Reset"
msgstr "রিসেট"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "চ্যাট রিসেট করুন"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "আপনার পাসওয়ার্ড রিসেট করু
msgid "Resetting your password..."
msgstr "আপনার পাসওয়ার্ড রিসেট করা হচ্ছে..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "আকার পরিবর্তন করুন এআই সহকারী"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "রিসোর্সসমূহ"
@@ -2464,6 +2617,14 @@ msgstr "রিজিউমে বিশ্লেষণ সম্পন্ন।"
msgid "Resumes"
msgstr "জীবনবৃত্তান্তসমূহ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "পর্যালোচনা প্রয়োজন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "পর্যালোচিত প্রস্তাবনা"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "ডান দিকে অ্যালাইন"
@@ -2562,6 +2723,10 @@ msgstr "নির্বাচন করুন..."
msgid "Self-Host with Docker"
msgstr "ডকার দিয়ে নিজে হোস্ট করুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "পাঠান"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "পাসওয়ার্ড রিসেটের ইমেইল প
msgid "Sending password reset email..."
msgstr "পাসওয়ার্ড রিসেটের ইমেইল পাঠানো হচ্ছে..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "অনুরোধ পাঠানো হচ্ছে"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "সেপারেটর"
@@ -2709,6 +2878,10 @@ msgstr "এক কলামের লেআউট, সাইডবার এব
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "একক-কলাম, ইনলাইন তিন-কলাম এন্ট্রি হেডার (পদ · প্রতিষ্ঠান · সময়কাল); সংক্ষিপ্ত এবং ATS-বান্ধব, এশীয় রিজিউমে রীতি (CN/JP/KR)-এর জন্য উপযুক্ত।"
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "প্রতিটি পৃষ্ঠায় বড় হাতের অক্ষরে বিভাগীয় শিরোনাম এবং প্রাথমিক রঙের একটি শীর্ষরেখা সহ এক-কলাম বিন্যাস; নির্বাহী, পরামর্শক বা স্টার্টআপ জীবনবৃত্তান্তের জন্য পরিমার্জিত।"
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "এক কলামের লেআউট; প্রাজ্ঞ ও গম্ভীর ধরন, সিনিয়র বা এন্টারপ্রাইজ‑লেভেলের পদের জন্য উপযোগী।"
@@ -2809,6 +2982,10 @@ msgstr "পরিসংখ্যান"
msgid "Stay"
msgstr "থাকুন"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "থামুন"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "শক্তি"
@@ -2903,6 +3080,14 @@ msgstr "টেক্সটের রঙ"
msgid "Thai"
msgstr "থাই"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "এআই এমন একটি পরিবর্তনের প্রস্তাব করেছিল যা এখন এই জীবনবৃত্তান্তের ক্ষেত্রে আর প্রযোজ্য নয়।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "এআই এমন একটি প্রস্তাবনা ফেরত দিয়েছে যা প্রিভিউ করা সম্ভব ছিল না।"
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API কী সফলভাবে মুছে ফেলা হয়ে
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API কী মুছে ফেলার পর আর আপনার ডেটায় প্রবেশ করতে পারবে না। এই কাজটি ফিরিয়ে নেওয়া যাবে না।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "সহকারী প্রস্তাবটি ফেরত দেওয়ার আগে থেমে গেল।"
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "এটি আপনার জীবনবৃত্তান্তের
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "AI প্রদানকারীর রেসপন্সের ওপর নির্ভর করে এতে কয়েক মিনিট সময় লাগতে পারে। অনুগ্রহ করে উইন্ডো বন্ধ বা পৃষ্ঠা রিফ্রেশ করবেন না।"
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "এই প্রস্তাবনাটি পুরনো হয়ে গেছে। সহকারীকে সর্বশেষ জীবনবৃত্তান্ত থেকে এটি পুনরায় তৈরি করতে বলুন।"
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "এই জীবনবৃত্তান্তটি লক করা আছে এবং হালনাগাদ করা যাবে না।"
@@ -3034,6 +3228,10 @@ msgstr "আপনার অ্যাকাউন্ট মুছে ফেলত
msgid "Toggle left sidebar"
msgstr "বাম পাশের সাইডবার টগল করুন"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "পৃষ্ঠা স্ট্যাকিং টগল করুন"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ইউক্রেনীয়"
msgid "Underline"
msgstr "আন্ডারলাইন"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "আনডু (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "আনলিমিটেড জীবনবৃত্তান্ত"
@@ -3387,10 +3580,6 @@ msgstr "এক্স (টুইটার)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "হ্যাঁ, Reactive Resume একাধিক ভাষায় উপলভ্য। আপনি সেটিংস পেজ থেকে বা ডান দিকের উপরের কোণের ভাষা পরিবর্তনকারী ব্যবহার করে নিজের পছন্দের ভাষা বেছে নিতে পারেন। যদি আপনার ভাষা তালিকায় না থাকে, বা আপনি বিদ্যমান অনুবাদ উন্নত করতে চান, তাহলে আপনি <0>Crowdin‑এ অনুবাদে অবদান রাখতে পারেন<1> (নতুন ট্যাবে খুলবে)</1></0>।"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "হ্যাঁ! প্রতিটি টেমপ্লেটই পুরোপুরি কাস্টমাইজযোগ্য। আপনি রঙ, ফন্ট, স্পেসিং পরিবর্তন করতে পারবেন, এমনকি আপনার জীবনবৃত্তান্তের চেহারার পূর্ণ নিয়ন্ত্রণের জন্য কাস্টম CSS-ও লিখতে পারবেন।"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "হ্যাঁ! Reactive Resume সম্পূর্ণ বিনামূল্যে ব্যবহারের জন্য, কোনো গোপন খরচ, প্রিমিয়াম স্তর বা সাবস্ক্রিপশন ফি নেই। এটি মুক্ত উৎস এবং সবসময়ই বিনামূল্যে থাকবে।"
@@ -3440,7 +3629,7 @@ msgstr "আপনার ডেটা স্থানীয়ভাবে সং
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "আপনার ডেটা নিরাপদভাবে সংরক্ষিত হয় এবং কখনোই তৃতীয় পক্ষের সঙ্গে শেয়ার করা হয় না। চাইলে আপনি নিজের সার্ভারে Reactive Resume নিজে হোস্ট করেও ডেটার পূর্ণ নিয়ন্ত্রণ রাখতে পারেন।"
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "আপনার সর্বশেষ পরিবর্তনগুলো সংরক্ষণ করা যায়নি।"
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ca\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# element} other {# elements}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# càrrec} other {# càrrecs}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} propostes revisades"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "I tant! Pots exportar el teu currículum a PDF amb un sol clic. El PDF exportat manté perfectament tot el format i l’estil."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Accepta"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accepta-ho tot"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Proposta acceptada"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Accedeix als teus currículums i dades de manera programàtica mitjançant l’API."
@@ -229,10 +246,38 @@ msgstr "Afegeix una fila abans"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Després"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Integració d'IA desactivada"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Proposta d'IA aplicada."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Proposta d'IA rebutjada."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Propostes d'IA aplicades."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Propostes d'IA rebutjades."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Assistent de currículum amb IA"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanès"
@@ -367,10 +412,22 @@ msgstr "Àrea d’estudi"
msgid "Artificial Intelligence"
msgstr "Intel·ligència artificial"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Demana un canvi de currículum específic..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Demanar un canvi incremental"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Relació d’aspecte"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "La sol·licitud de l'assistent ha fallat"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Bàsic"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Plantilles boniques per triar, amb més en camí."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Abans"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengalí"
@@ -462,10 +523,6 @@ msgstr "Llista amb pics"
msgid "By the community, for the community."
msgstr "De la comunitat i per a la comunitat."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Puc personalitzar les plantilles?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Puc exportar el meu currículum a PDF?"
@@ -576,6 +633,14 @@ msgstr "Clar"
msgid "Click here to select a file to import"
msgstr "Fes clic aquí per seleccionar un fitxer per importar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Tanca"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Tanca l'assistent d'IA"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Bloc de codi"
@@ -622,6 +687,10 @@ msgstr "Confirma"
msgid "Connect"
msgstr "Connecta"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Connecta't i verifica un proveïdor d'IA abans d'utilitzar propostes d'edició de currículums."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Copia aquesta clau secreta i utilitza-la a les aplicacions per accedir a
msgid "Copy URL"
msgstr "Copia l’URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "No s'ha pogut aplicar la proposta d'IA."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Desconnecta"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Ignora"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Documentació"
msgid "Don't have an account? <0/>"
msgstr "No teniu compte? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Fes una donació a Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Activa l’A2F"
msgid "Enable AI Features"
msgstr "Activa les funcions d’IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Habilita la integració de la IA"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Activa l’autenticació en dos passos"
@@ -1162,6 +1247,10 @@ msgstr "Tot el que introdueixis aquí es desa localment al navegador. Les dades
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Tot el que necessites per crear, personalitzar i compartir currículums professionals. Creat amb la privadesa en ment, impulsat per codi obert i completament gratuït per sempre."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Exemples: reescriure el resum, ajustar un punt d'experiència, afegir mètriques o adaptar el currículum a una descripció del lloc de treball."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Surt de la pantalla completa"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Has oblidat la contrasenya?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Gratuït"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Forma lliure"
#: src/libs/locale.ts
msgid "French"
msgstr "Francès"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Més accions de proposta"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Mou a"
@@ -1978,6 +2075,10 @@ msgstr "Ha de començar amb https://"
msgid "Name"
msgstr "Nom"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Cal revisió"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalès"
@@ -2008,6 +2109,10 @@ msgstr "Contrasenya nova"
msgid "New Section"
msgstr "Secció nova"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Següent"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Sense publicitat, sense seguiment"
@@ -2057,11 +2162,19 @@ msgstr "Manteniment continu"
msgid "Open"
msgstr "Obre"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Assistent d'IA oberta"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Obre el client de correu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Integracions obertes"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Obre la configuració d'integracions"
@@ -2215,6 +2328,10 @@ msgstr "Introdueix la contrasenya que t’ha compartit el propietari del curríc
msgid "Please enter the URL you want to link to:"
msgstr "Introdueix l’URL al qual vols enllaçar:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Si us plau, doneu suport al projecte"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Càrrec"
msgid "Preferences"
msgstr "Preferències"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Preparació de canvis"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Preajustaments"
@@ -2263,6 +2384,10 @@ msgstr "Prem <0>{RETURN_KEY}</0> o <1>{COMMA_KEY}</1> per afegir o desar la para
msgid "Press <0>Enter</0> to open"
msgstr "Premeu <0>Intro</0> per obrir"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Anterior"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Color principal"
@@ -2293,6 +2418,11 @@ msgstr "Barra de progrés"
msgid "Projects"
msgstr "Projectes"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposta {0} de {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Protegeix el currículum contra accessos no autoritzats amb una contrasenya"
@@ -2315,6 +2445,10 @@ msgstr "Publicacions"
msgid "Publisher"
msgstr "Editor"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Pegat JSON en brut"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Ves a la pàgina inicial"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume és un projecte gratuït i de codi obert, creat amb amor
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume és un creador de currículums gratuït i de codi obert que simplifica el procés de crear, actualitzar i compartir el teu currículum."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume és gratuït i de codi obert. Si t'ha ajudat, considera fer una donació."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume és de codi obert, centrat en la privadesa i completament gratuït. A diferència d’altres creadors de currículums, no mostra anuncis, no rastreja les dades ni limita les funcions darrere d’un mur de pagament."
@@ -2362,11 +2500,6 @@ msgstr "Rectangle"
msgid "Rectangle (Full Width)"
msgstr "Rectangle (amplada completa)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Repetir (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Actualitza"
msgid "Register New Device"
msgstr "Registra un dispositiu nou"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Rebutja"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Rebutja-ho tot"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Proposta rebutjada"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Recordeu la contrasenya? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "S’està tornant a enviar el correu de verificació..."
msgid "Reset"
msgstr "Restableix"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Restableix el xat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Restableix la contrasenya"
msgid "Resetting your password..."
msgstr "S’està restablint la contrasenya..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Assistent d'IA per canviar la mida"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Recursos"
@@ -2464,6 +2617,14 @@ msgstr "Anàlisi del currículum completada."
msgid "Resumes"
msgstr "Currículums"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Revisió obligatòria"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Propostes revisades"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Alinea a la dreta"
@@ -2562,6 +2723,10 @@ msgstr "Selecciona..."
msgid "Self-Host with Docker"
msgstr "Allotjament propi amb Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Enviar"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Envia el correu per restablir la contrasenya"
msgid "Sending password reset email..."
msgstr "S’està enviant el correu per restablir la contrasenya..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Enviant la sol·licitud"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Separador"
@@ -2709,6 +2878,10 @@ msgstr "Una sola columna amb barra lateral i disposició en quadrícula neta; ve
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "D'una sola columna amb un encapçalament d'entrada de tres columnes en línia (posició · organització · període); compacte i adaptat a ATS, molt adequat per a les convencions de currículum asiàtiques (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Una sola columna amb encapçalaments de secció en majúscules i un fil superior de color primari a cada pàgina; polit per a currículums executius, de consultoria o d'empreses emergents."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Una sola columna; polit i seriós per a posicions sènior o d’àmbit corporatiu."
@@ -2809,6 +2982,10 @@ msgstr "Estadístiques"
msgid "Stay"
msgstr "Queda't"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Atura"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Fortaleses"
@@ -2903,6 +3080,14 @@ msgstr "Color del text"
msgid "Thai"
msgstr "Tai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "La IA va proposar un canvi que ja no s'aplica a aquest currículum."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "La IA ha retornat una proposta que no es va poder previsualitzar."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "La clau API s’ha suprimit correctament."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Després de la supressió, la clau API ja no podrà accedir a les dades. Aquesta acció no es pot desfer."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "L'assistent es va aturar abans de retornar una proposta."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Aquest és un nom d’URL fàcil d’utilitzar per al currículum."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Això pot trigar uns minuts, segons la resposta del proveïdor d’IA. No tanquis la finestra ni actualitzis la pàgina."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Aquesta proposta està obsoleta. Demana a l'assistent que la generi a partir del currículum més recent."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Aquest currículum està bloquejat i no es pot actualitzar."
@@ -3034,6 +3228,10 @@ msgstr "Per suprimir el compte, has d’introduir el text de confirmació i fer
msgid "Toggle left sidebar"
msgstr "Canvia la barra lateral esquerra"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Activa/desactiva l'apilament de pàgines"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ucraïnès"
msgid "Underline"
msgstr "Subratllat"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Desfer (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Currículums il·limitats"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Sí, Reactive Resume està disponible en múltiples idiomes. Pots triar l’idioma preferit a la pàgina de configuració o utilitzant el selector d’idioma a l’angle superior dret. Si no hi veus el teu idioma o vols millorar les traduccions existents, pots <0>contribuir a les traduccions a Crowdin<1> (s’obre en una pestanya nova)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Sí. Cada plantilla és completament personalitzable. Pots canviar colors, lletres, espaiat i fins i tot escriure CSS personalitzat per tenir un control total sobre l’aparença del currículum."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Sí. Reactive Resume és completament gratuït d’utilitzar, sense costos ocults, nivells premium ni subscripcions. És de codi obert i sempre serà gratuït."
@@ -3440,7 +3629,7 @@ msgstr "Les dades es desen localment"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Les dades s’emmagatzemen de manera segura i mai no es comparteixen amb tercers. També pots autoallotjar Reactive Resume als teus propis servidors per tenir un control total sobre les dades."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "No s'han pogut desar els darrers canvis."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# položka} few {# položky} many {# položek} other {#
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# role} few {# role} many {# rolí} other {# rolí}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} návrhů zkontrolováno"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Ano! Svůj životopis můžete exportovat do PDF jedním kliknutím. Exportované PDF dokonale zachová veškeré vaše formátování a styl."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Přijmout"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Přijmout vše"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Přijatý návrh"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Přistupujte ke svým životopisům a datům programově pomocí API."
@@ -229,10 +246,38 @@ msgstr "Přidat řádek před"
msgid "Afrikaans"
msgstr "Afrikánština"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Po"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Integrace umělé inteligence zakázána"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Návrh umělé inteligence byl použit."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Návrh na umělou inteligenci byl zamítnut."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Použité návrhy umělé inteligence."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Návrhy na umělou inteligenci byly zamítnuty."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Asistent životopisů s umělou inteligencí"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albánština"
@@ -367,10 +412,22 @@ msgstr "Studijní obor"
msgid "Artificial Intelligence"
msgstr "Umělá inteligence"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Požádejte o cílenou změnu životopisu..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Požádejte o postupnou změnu"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Poměr stran"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Žádost o pomoc selhala"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Základy"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Krásné šablony, ze kterých můžete vybírat, a další jsou na cestě."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Před"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengálština"
@@ -462,10 +523,6 @@ msgstr "Odrážkový seznam"
msgid "By the community, for the community."
msgstr "Vytvořeno komunitou pro komunitu."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Mohu si šablony přizpůsobit?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Mohu svůj životopis exportovat do PDF?"
@@ -576,6 +633,14 @@ msgstr "Přehledně"
msgid "Click here to select a file to import"
msgstr "Kliknutím zde vyberte soubor k importu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Zavřít"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Zavřít asistenta s umělou inteligencí"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Blok kódu"
@@ -622,6 +687,10 @@ msgstr "Potvrdit"
msgid "Connect"
msgstr "Připojit"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Před použitím návrhů na úpravu životopisů se připojte a ověřte poskytovatele umělé inteligence."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Zkopírujte tento tajný klíč a použijte ho ve svých aplikacích pro
msgid "Copy URL"
msgstr "Kopírovat URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Nelze použít návrh umělé inteligence."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Odpojit"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Propustit"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentace"
msgid "Don't have an account? <0/>"
msgstr "Nemáte účet? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Darovat"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Přispět na Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Aktivovat 2FA"
msgid "Enable AI Features"
msgstr "Povolit funkce AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Povolit integraci umělé inteligence"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Aktivovat dvoufázové ověření"
@@ -1162,6 +1247,10 @@ msgstr "Vše, co zde zadáte, je ukládáno lokálně ve vašem prohlížeči. V
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Vše, co potřebujete k vytvoření, přizpůsobení a sdílení profesionálních životopisů. Vytvořeno s ohledem na soukromí, poháněno open source a zcela zdarma, navždy."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Příklady: přepsat shrnutí, zúžit jednu odrážku zkušeností, přidat metriky nebo upravit životopis pro popis práce."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Ukončit celou obrazovku"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Zapomněli jste heslo?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formát"
@@ -1397,6 +1486,10 @@ msgstr "Formát"
msgid "Free"
msgstr "Zdarma"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Volný formát"
#: src/libs/locale.ts
msgid "French"
msgstr "Francouzština"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Další akce s návrhem"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Přesunout do"
@@ -1978,6 +2075,10 @@ msgstr "Musí začít na https://"
msgid "Name"
msgstr "Název"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Vyžaduje kontrolu"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepálština"
@@ -2008,6 +2109,10 @@ msgstr "Nové heslo"
msgid "New Section"
msgstr "Nová sekce"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Další"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Bez reklam, bez sledování"
@@ -2057,11 +2162,19 @@ msgstr "Průběžná údržba"
msgid "Open"
msgstr "Otevřít"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Otevřený asistent s umělou inteligencí"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Otevřít e-mailového klienta"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Otevřené integrace"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Otevřít Nastavení integrace"
@@ -2215,6 +2328,10 @@ msgstr "Zadejte prosím heslo, které vám sdílel vlastník životopisu, abyste
msgid "Please enter the URL you want to link to:"
msgstr "Zadejte prosím URL, na kterou chcete odkazovat:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Prosím, podpořte projekt"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Pozice"
msgid "Preferences"
msgstr "Předvolby"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Příprava změn"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Předvolby"
@@ -2263,6 +2384,10 @@ msgstr "Stiskněte <0>{RETURN_KEY}</0> nebo <1>{COMMA_KEY}</1> pro přidání ne
msgid "Press <0>Enter</0> to open"
msgstr "Stisknutím klávesy <0>Enter</0> otevřete"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Předchozí"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Hlavní barva"
@@ -2293,6 +2418,11 @@ msgstr "Ukazatel průběhu"
msgid "Projects"
msgstr "Projekty"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Návrh {0} z {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Chraňte svůj životopis heslem před neoprávněným přístupem"
@@ -2315,6 +2445,10 @@ msgstr "Publikace"
msgid "Publisher"
msgstr "Vydavatel"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Patch pro surový JSON"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume – přejít na domovskou stránku"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume je bezplatný open source projekt, vytvořený z lásky
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume je bezplatný nástroj pro tvorbu životopisů s otevřeným zdrojovým kódem, který zjednodušuje proces vytváření, aktualizace a sdílení životopisů."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume je zdarma a má otevřený zdrojový kód. Pokud vám pomohl, zvažte prosím dar."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume je open source, zaměřené na soukromí a zcela zdarma. Na rozdíl od jiných nástrojů pro tvorbu životopisů nezobrazuje reklamy, nesleduje vaše data a neomezuje funkce za paywallem."
@@ -2362,11 +2500,6 @@ msgstr "Obdélník"
msgid "Rectangle (Full Width)"
msgstr "Obdélník (plná šířka)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Znovu (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Obnovit"
msgid "Register New Device"
msgstr "Registrace nového zařízení"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Odmítnout"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Odmítnout vše"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Zamítnutý návrh"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Vzpomínáte si na heslo? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Opětovné odesílání ověřovacího e-mailu…"
msgid "Reset"
msgstr "Resetovat"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Obnovit chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Obnovte své heslo"
msgid "Resetting your password..."
msgstr "Obnovování hesla…"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Změna velikosti asistenta s umělou inteligencí"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Zdroje"
@@ -2464,6 +2617,14 @@ msgstr "Analýza životopisu dokončena."
msgid "Resumes"
msgstr "Životopisy"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Vyžaduje se kontrola"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Zkontrolované návrhy"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Zarovnat vpravo"
@@ -2562,6 +2723,10 @@ msgstr "Vybrat..."
msgid "Self-Host with Docker"
msgstr "Vlastní hosting pomocí Dockeru"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Poslat"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Odeslat e-mail pro obnovení hesla"
msgid "Sending password reset email..."
msgstr "Odesílání e-mailu pro obnovení hesla…"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Odesílání požadavku"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Oddělovač"
@@ -2709,6 +2878,10 @@ msgstr "Jednosloupcové s postranním panelem a čistým mřížkovým rozložen
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Jednosloupcový s inline třísloupcovým záhlavím (pozice - organizace - tečka); kompaktní a vhodný pro ATS, vhodný pro asijské konvence životopisů (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Jednosloupcový s velkými písmeny nadpisů sekcí a horní linií v základní barvě na každé stránce; vybroušené pro životopisy vedoucích pracovníků, konzultantů nebo startupů."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Jednosloupcové; uhlazené a seriózní pro seniorské nebo enterprise pozice."
@@ -2809,6 +2982,10 @@ msgstr "Statistiky"
msgid "Stay"
msgstr "Zůstat"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Zastávka"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Silné stránky"
@@ -2903,6 +3080,14 @@ msgstr "Barva textu"
msgid "Thai"
msgstr "Thajština"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Umělá inteligence navrhla změnu, která se na tento životopis již nevztahuje."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Umělá inteligence vrátila návrh, jehož náhled nebylo možné zobrazit."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API klíč byl úspěšně smazán."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API klíč po smazání již nebude mít přístup k vašim datům. Tuto akci nelze vrátit zpět."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Asistent se zastavil, než vrátil návrh."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Toto je název vašeho životopisu vhodný pro URL adresu."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Může to trvat několik minut v závislosti na odezvě poskytovatele AI. Nezavírejte prosím okno ani neobnovujte stránku."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Tento návrh je zastaralý. Požádejte asistenta, aby jej znovu vytvořil z nejnovějšího životopisu."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Tento životopis je uzamčen a nelze ho aktualizovat."
@@ -3034,6 +3228,10 @@ msgstr "Pro smazání účtu musíte zadat potvrzovací text a kliknout na tlač
msgid "Toggle left sidebar"
msgstr "Přepínání levého postranního panelu"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Přepnout stohování stránek"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrajinština"
msgid "Underline"
msgstr "Podtržení"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Zpět (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Neomezené životopisy"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ano, Reactive Resume je dostupné ve více jazycích. Svůj preferovaný jazyk si můžete vybrat na stránce nastavení nebo pomocí přepínače jazyka v pravém horním rohu. Pokud svůj jazyk nevidíte nebo chcete vylepšit existující překlady, můžete <0>přispět k překladům na Crowdin<1> (otevře se na nové kartě)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ano! Každá šablona je plně přizpůsobitelná. Můžete měnit barvy, písma, rozestupy a dokonce psát vlastní CSS pro úplnou kontrolu nad vzhledem svého životopisu."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ano! Reactive Resume je zcela zdarma k použití, bez skrytých poplatků, prémiových úrovní nebo předplatného. Je open source a vždy zdarma zůstane."
@@ -3440,7 +3629,7 @@ msgstr "Vaše data jsou ukládána lokálně"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Vaše data jsou ukládána bezpečně a nikdy nejsou sdílena s třetími stranami. Reactive Resume si můžete také hostovat sami na vlastních serverech a mít tak nad svými daty plnou kontrolu."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Vaše poslední změny se nepodařilo uložit."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: da\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# element} other {# elementer}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# rolle} other {# roller}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} forslag gennemgået"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Ja, selvfølgelig! Du kan eksportere dit CV til PDF med ét klik. Den eksporterede PDF bevarer al din formatering og styling perfekt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Acceptere"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accepter alle"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Accepteret forslag"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Få programmatisk adgang til dine CV'er og data ved hjælp af API'et."
@@ -229,10 +246,38 @@ msgstr "Tilføj række før"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Efter"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI-integration deaktiveret"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI-forslag anvendt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI-forslag afvist."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI-forslag anvendt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI-forslag afvist."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI CV-assistent"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albansk"
@@ -367,10 +412,22 @@ msgstr "Studieområde"
msgid "Artificial Intelligence"
msgstr "Kunstig intelligens"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Bed om en målrettet CV-ændring..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Bed om en trinvis ændring"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Billedformat"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistent-anmodning mislykkedes"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Grundlæggende"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Smukke skabeloner at vælge imellem, med flere på vej."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Før"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -462,10 +523,6 @@ msgstr "Punktliste"
msgid "By the community, for the community."
msgstr "Af fællesskabet, for fællesskabet."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Kan jeg tilpasse skabelonerne?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Kan jeg eksportere mit CV til PDF?"
@@ -576,6 +633,14 @@ msgstr "Klar"
msgid "Click here to select a file to import"
msgstr "Klik her for at vælge en fil, der skal importeres"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Luk"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Luk AI-assistent"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Kodeblok"
@@ -622,6 +687,10 @@ msgstr "Bekræft"
msgid "Connect"
msgstr "Forbind"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Opret forbindelse til og bekræft en AI-udbyder, før du bruger forslag til redigering af CV'er."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Kopiér denne hemmelige nøgle og brug den i dine applikationer for at f
msgid "Copy URL"
msgstr "Kopiér URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Kunne ikke anvende AI-forslaget."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Afbryd forbindelse"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Afskedige"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentation"
msgid "Don't have an account? <0/>"
msgstr "Har du ikke en konto? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donér"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Donér til Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Aktivér 2FA"
msgid "Enable AI Features"
msgstr "Aktivér AI-funktioner"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Aktivér AI-integration"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Aktivér to-faktor-godkendelse"
@@ -1162,6 +1247,10 @@ msgstr "Alt hvad du indtaster her, gemmes lokalt i din browser. Dine data sendes
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Alt hvad du behøver for at oprette, tilpasse og dele professionelle CV'er. Bygget med fokus på privatliv, drevet af open source og helt gratis for altid."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Eksempler: omskriv resuméet, stram ét erfaringspunkt, tilføj målinger eller tilpas CV'et til en jobbeskrivelse."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Afslut fuldskærm"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Har du glemt din adgangskode?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Gratis"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Frit format"
#: src/libs/locale.ts
msgid "French"
msgstr "Fransk"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Flere forslagshandlinger"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Flyt til"
@@ -1978,6 +2075,10 @@ msgstr "Skal starte med https://"
msgid "Name"
msgstr "Navn"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Skal gennemgås"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalesisk"
@@ -2008,6 +2109,10 @@ msgstr "Ny adgangskode"
msgid "New Section"
msgstr "Nyt afsnit"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Næste"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Ingen reklamer, ingen sporing"
@@ -2057,11 +2162,19 @@ msgstr "Løbende vedligeholdelse"
msgid "Open"
msgstr "Åbn"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Åbn AI-assistent"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Åbn e-mailklient"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Åbne integrationer"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Åbn indstillinger for integrationer"
@@ -2215,6 +2328,10 @@ msgstr "Indtast adgangskoden, som ejeren af CV'et har delt med dig, for at forts
msgid "Please enter the URL you want to link to:"
msgstr "Angiv den URL, du vil oprette et link til:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Støt venligst projektet"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Stilling"
msgid "Preferences"
msgstr "Præferencer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Forbereder ændringer"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Forudindstillinger"
@@ -2263,6 +2384,10 @@ msgstr "Tryk på <0>{RETURN_KEY}</0> eller <1>{COMMA_KEY}</1> for at tilføje el
msgid "Press <0>Enter</0> to open"
msgstr "Tryk på <0>Enter</0> for at åbne"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Forrige"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primær farve"
@@ -2293,6 +2418,11 @@ msgstr "Statuslinje"
msgid "Projects"
msgstr "Projekter"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Forslag {0} af {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Beskyt dit CV mod uautoriseret adgang med en adgangskode"
@@ -2315,6 +2445,10 @@ msgstr "Publikationer"
msgid "Publisher"
msgstr "Udgiver"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Rå JSON-patch"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Gå til startside"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume er et gratis og open-source projekt, bygget med kærligh
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume er en gratis og open-source CV-bygger, der forenkler processen med at oprette, opdatere og dele dit CV."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume er gratis og open source. Hvis det har hjulpet dig, så overvej venligst at donere."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume er open-source, fokuserer på privatliv og er helt gratis. I modsætning til andre CV-byggere viser det ingen reklamer, sporer ikke dine data og begrænser ikke funktioner bag en betalingsmur."
@@ -2362,11 +2500,6 @@ msgstr "Rektangel"
msgid "Rectangle (Full Width)"
msgstr "Rektangel (fuld bredde)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Gentag (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Opdater"
msgid "Register New Device"
msgstr "Registrer ny enhed"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Afvise"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Afvis alle"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Afvist forslag"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Husker du din adgangskode? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Gensender bekræftelsesmail..."
msgid "Reset"
msgstr "Nulstil"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Nulstil chatten"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Nulstil din adgangskode"
msgid "Resetting your password..."
msgstr "Nulstiller din adgangskode..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Ændre størrelse på AI-assistenten"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Ressourcer"
@@ -2464,6 +2617,14 @@ msgstr "CV-analysen er færdig."
msgid "Resumes"
msgstr "CV'er"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Gennemgang påkrævet"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Gennemgåede forslag"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Højrejustér"
@@ -2562,6 +2723,10 @@ msgstr "Vælg..."
msgid "Self-Host with Docker"
msgstr "Selvhostning med Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Sende"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Send e-mail til nulstilling af adgangskode"
msgid "Sending password reset email..."
msgstr "Sender e-mail til nulstilling af adgangskode..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Sender anmodning"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Skillelinje"
@@ -2709,6 +2878,10 @@ msgstr "Enkeltkolonne med sidebjælke og rent gitterlayout; alsidig til enhver p
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Enspaltet med en inline-overskrift på tre spalter (position - organisation - periode); kompakt og ATS-venlig, velegnet til asiatiske CV-konventioner (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Enkelt kolonne med sektionsoverskrifter med store bogstaver og en primærfarvet toplinje på hver side; poleret til CV'er for ledere, konsulenter eller startups."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Enkeltkolonne; poleret og seriøs til senior- eller enterprise-stillinger."
@@ -2809,6 +2982,10 @@ msgstr "Statistik"
msgid "Stay"
msgstr "Bliv"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Styrker"
@@ -2903,6 +3080,14 @@ msgstr "Tekstfarve"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "AI'en har foreslået en ændring, der ikke længere gælder for dette CV."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "AI'en returnerede et forslag, der ikke kunne forhåndsvises."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API-nøglen er blevet slettet."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API-nøglen vil ikke længere kunne få adgang til dine data efter sletning. Denne handling kan ikke fortrydes."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Assistenten stoppede, før han gentog et forslag."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Dette er et URL-venligt navn til dit CV."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Dette kan tage et par minutter afhængigt af svaret fra AI-udbyderen. Luk venligst ikke vinduet og genindlæs ikke siden."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Dette forslag er forældet. Bed assistenten om at generere det fra det seneste CV."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Dette CV er låst og kan ikke opdateres."
@@ -3034,6 +3228,10 @@ msgstr "For at slette din konto skal du indtaste bekræftelsesteksten og klikke
msgid "Toggle left sidebar"
msgstr "Skift til venstre sidepanel"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Slå sidestabling til/fra"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainsk"
msgid "Underline"
msgstr "Understreg"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Fortryd (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Ubegrænsede CV'er"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ja, Reactive Resume er tilgængelig på flere sprog. Du kan vælge dit foretrukne sprog på indstillingssiden eller ved hjælp af sprogvælgeren i øverste højre hjørne. Hvis du ikke kan se dit sprog, eller hvis du gerne vil forbedre de eksisterende oversættelser, kan du <0>bidrage til oversættelserne på Crowdin<1> (åbner i ny fane)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ja! Hver skabelon er fuldt ud til at tilpasse. Du kan ændre farver, skrifttyper, mellemrum og endda skrive brugerdefineret CSS for fuld kontrol over dit CV's udseende."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ja! Reactive Resume er helt gratis at bruge, uden skjulte omkostninger, premium-niveauer eller abonnementsgebyrer. Det er open-source og vil altid forblive gratis."
@@ -3440,7 +3629,7 @@ msgstr "Dine data gemmes lokalt"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Dine data lagres sikkert og deles aldrig med tredjeparter. Du kan også selv-hoste Reactive Resume på dine egne servere for fuld kontrol over dine data."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Dine seneste ændringer kunne ikke gemmes."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# Element} other {# Elemente}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# Rolle} other {# Rollen}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} geprüfte Vorschläge"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Auf jeden Fall! Du kannst deinen Lebenslauf mit einem einzigen Klick als PDF exportieren. Das exportierte PDF übernimmt all deine Formatierungen und dein Styling perfekt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Akzeptieren"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Alle akzeptieren"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Angenommener Vorschlag"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Greife mit der API programmgesteuert auf deine Lebensläufe und Daten zu."
@@ -229,10 +246,38 @@ msgstr "Zeile davor einfügen"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Nach"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "KI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "KI-Integration deaktiviert"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "KI-Vorschlag eingereicht."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "KI-Vorschlag abgelehnt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "KI-Vorschläge wurden eingereicht."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "KI-Vorschläge abgelehnt."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "KI-Lebenslaufassistent"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanisch"
@@ -367,10 +412,22 @@ msgstr "Studienfach"
msgid "Artificial Intelligence"
msgstr "Künstliche Intelligenz"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Bitten Sie um eine gezielte Lebenslaufänderung..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Bitten Sie um eine schrittweise Änderung"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Seitenverhältnis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistentenanfrage fehlgeschlagen"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Grundlagen"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Schöne Vorlagen zur Auswahl – und es kommen laufend weitere hinzu."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Vor"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengalisch"
@@ -462,10 +523,6 @@ msgstr "Aufzählungsliste"
msgid "By the community, for the community."
msgstr "Von der Gemeinschaft, für die Gemeinschaft."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Kann ich die Vorlagen anpassen?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Kann ich meinen Lebenslauf als PDF exportieren?"
@@ -576,6 +633,14 @@ msgstr "Klar"
msgid "Click here to select a file to import"
msgstr "Hier klicken, um eine Datei zum Importieren auszuwählen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Schließen"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Schließen Sie den KI-Assistenten"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Code-Block"
@@ -622,6 +687,10 @@ msgstr "Bestätigen"
msgid "Connect"
msgstr "Verbinden"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Bevor Sie Vorschläge zur Lebenslaufbearbeitung nutzen, sollten Sie einen KI-Anbieter kontaktieren und dessen Eignung überprüfen."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Kopiere diesen geheimen Schlüssel und verwende ihn in deinen Anwendunge
msgid "Copy URL"
msgstr "URL kopieren"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Der KI-Vorschlag konnte nicht angewendet werden."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Trennen"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Zurückweisen"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentation"
msgid "Don't have an account? <0/>"
msgstr "Sie haben noch kein Konto? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Spenden"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "An Reactive Resume spenden"
@@ -1094,6 +1175,10 @@ msgstr "2FA aktivieren"
msgid "Enable AI Features"
msgstr "KI-Funktionen aktivieren"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "KI-Integration aktivieren"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Zwei-Faktor-Authentifizierung aktivieren"
@@ -1162,6 +1247,10 @@ msgstr "Alles, was du hier eingibst, wird lokal in deinem Browser gespeichert. D
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Alles, was du brauchst, um professionelle Lebensläufe zu erstellen, anzupassen und zu teilen. Mit Blick auf Datenschutz entwickelt, von Open Source angetrieben und für immer komplett kostenlos."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Beispiele: die Zusammenfassung überarbeiten, einen Erfahrungspunkt präzisieren, Kennzahlen hinzufügen oder den Lebenslauf an eine Stellenbeschreibung anpassen."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Vollbild schließen"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Passwort vergessen?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Seitenformat"
@@ -1397,6 +1486,10 @@ msgstr "Seitenformat"
msgid "Free"
msgstr "Kostenlos"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Freiform"
#: src/libs/locale.ts
msgid "French"
msgstr "Französisch"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modell"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Weitere Aktionsvorschläge"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Verschieben nach"
@@ -1978,6 +2075,10 @@ msgstr "Muss mit https:// beginnen."
msgid "Name"
msgstr "Name"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Überprüfung erforderlich"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalesisch"
@@ -2008,6 +2109,10 @@ msgstr "Neues Passwort"
msgid "New Section"
msgstr "Neuer Abschnitt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Nächste"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Keine Werbung, kein Tracking"
@@ -2057,11 +2162,19 @@ msgstr "Laufende Wartung"
msgid "Open"
msgstr "Öffnen"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Offener KI-Assistent"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "E-Mail-Programm öffnen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Offene Integrationen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Integrationseinstellungen öffnen"
@@ -2215,6 +2328,10 @@ msgstr "Bitte geben Sie das Passwort ein, das Ihnen vom Besitzer des Lebenslaufs
msgid "Please enter the URL you want to link to:"
msgstr "Bitte geben Sie die URL ein, zu der Sie verlinken möchten:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Bitte unterstützen Sie das Projekt."
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Position"
msgid "Preferences"
msgstr "Einstellungen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Änderungen vorbereiten"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Voreinstellungen"
@@ -2263,6 +2384,10 @@ msgstr "Drücken Sie <0>{RETURN_KEY}</0> oder <1>{COMMA_KEY}</1>, um das aktuell
msgid "Press <0>Enter</0> to open"
msgstr "Drücken Sie <0>Enter</0> zum Öffnen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Zurück"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primärfarbe"
@@ -2293,6 +2418,11 @@ msgstr "Fortschrittsbalken"
msgid "Projects"
msgstr "Projekte"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Vorschlag {0} von {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Schützen Sie Ihren Lebenslauf mit einem Passwort vor unbefugtem Zugriff"
@@ -2315,6 +2445,10 @@ msgstr "Veröffentlichungen"
msgid "Publisher"
msgstr "Verlag"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Raw JSON Patch"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume – Zur Startseite gehen"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume ist ein kostenloses Open-Source-Projekt, mit viel Liebe
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume ist ein kostenloser und quelloffener Lebenslauf-Builder, der das Erstellen, Aktualisieren und Teilen Ihres Lebenslaufs vereinfacht."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume ist kostenlos und Open Source. Wenn es Ihnen geholfen hat, würden wir uns über eine Spende freuen."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume ist Open Source, datenschutzorientiert und vollständig kostenlos. Anders als andere Lebenslauf-Builder zeigt es keine Werbung an, trackt deine Daten nicht und versteckt keine Funktionen hinter einer Bezahlschranke."
@@ -2362,11 +2500,6 @@ msgstr "Rechteck"
msgid "Rectangle (Full Width)"
msgstr "Rechteck (volle Breite)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Wiederholen (Strg+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Aktualisieren"
msgid "Register New Device"
msgstr "Neues Gerät registrieren"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Ablehnen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Alle ablehnen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Abgelehnter Vorschlag"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Passwort noch parat? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Verifizierungs-E-Mail wird erneut gesendet..."
msgid "Reset"
msgstr "Zurücksetzen"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Chat zurücksetzen"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Setzen Sie Ihr Passwort zurück"
msgid "Resetting your password..."
msgstr "Ihr Passwort wird zurückgesetzt..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "KI-Assistenten zur Größenänderung"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Ressourcen"
@@ -2464,6 +2617,14 @@ msgstr "Analyse des Lebenslaufs abgeschlossen."
msgid "Resumes"
msgstr "Lebensläufe"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Überprüfung erforderlich"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Geprüfte Vorschläge"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Rechtsbündig"
@@ -2562,6 +2723,10 @@ msgstr "Auswählen..."
msgid "Self-Host with Docker"
msgstr "Selbst hosten mit Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Schicken"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "E-Mail zum Zurücksetzen des Passworts senden"
msgid "Sending password reset email..."
msgstr "E-Mail zum Zurücksetzen des Passworts wird gesendet..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Anfrage senden"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Trennzeichen"
@@ -2709,6 +2878,10 @@ msgstr "Einspaltig mit Seitenleiste und sauberem Rasterlayout; vielseitig für j
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Einspaltig mit einer dreispaltigen Kopfzeile (Position - Organisation - Punkt); kompakt und ATS-freundlich, gut geeignet für asiatische Lebenslaufkonventionen (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Einspaltig mit in Großbuchstaben geschriebenen Abschnittsüberschriften und einer farbigen Trennlinie am oberen Rand jeder Seite; optimiert für Lebensläufe von Führungskräften, Beratern oder Startups."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Einspaltig; seriös und ausgefeilt für Senior- oder Enterprise-Positionen."
@@ -2809,6 +2982,10 @@ msgstr "Statistiken"
msgid "Stay"
msgstr "Hier bleiben"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stoppen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Stärken"
@@ -2903,6 +3080,14 @@ msgstr "Textfarbe"
msgid "Thai"
msgstr "Thailändisch"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Die KI hat eine Änderung vorgeschlagen, die auf diesen Lebenslauf nicht mehr zutrifft."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Die KI hat einen Vorschlag zurückgegeben, der nicht in der Vorschau angezeigt werden konnte."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "Der API-Schlüssel wurde erfolgreich gelöscht."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Der API-Schlüssel kann nach dem Löschen nicht mehr auf deine Daten zugreifen. Diese Aktion kann nicht rückgängig gemacht werden."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Der Assistent hielt inne, bevor er einen Vorschlag zurückgeben konnte."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Dies ist ein URL-freundlicher Name für Ihren Lebenslauf."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Dies kann einige Minuten dauern, abhängig von der Antwort des KI-Anbieters. Bitte schließe das Fenster nicht und lade die Seite nicht neu."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Dieser Vorschlag ist veraltet. Bitten Sie Ihren Assistenten, ihn anhand des aktuellen Lebenslaufs neu zu erstellen."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Dieser Lebenslauf ist gesperrt und kann nicht aktualisiert werden."
@@ -3034,6 +3228,10 @@ msgstr "Um Ihr Konto zu löschen, müssen Sie den Bestätigungstext eingeben und
msgid "Toggle left sidebar"
msgstr "Linke Seitenleiste umschalten"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Seitenstapelung umschalten"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainisch"
msgid "Underline"
msgstr "Unterstreichen"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Rückgängig (Strg+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Unbegrenzte Lebensläufe"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ja, Reactive Resume ist in mehreren Sprachen verfügbar. Du kannst deine bevorzugte Sprache auf der Einstellungsseite oder über den Sprachumschalter in der oberen rechten Ecke auswählen. Wenn du deine Sprache nicht findest oder die bestehenden Übersetzungen verbessern möchtest, kannst du <0>auf Crowdin zu den Übersetzungen beitragen<1> (öffnet in neuem Tab)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ja! Jede Vorlage ist vollständig anpassbar. Du kannst Farben, Schriften und Abstände ändern und sogar eigenes CSS schreiben, um die Darstellung deines Lebenslaufs vollständig zu kontrollieren."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ja! Reactive Resume ist völlig kostenlos nutzbar, ohne versteckte Kosten, Premium-Stufen oder Abonnementgebühren. Es ist Open Source und wird immer kostenlos bleiben."
@@ -3440,7 +3629,7 @@ msgstr "Deine Daten werden lokal gespeichert"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Deine Daten werden sicher gespeichert und niemals an Dritte weitergegeben. Du kannst Reactive Resume außerdem auf deinen eigenen Servern selbst hosten, um die vollständige Kontrolle über deine Daten zu behalten."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Ihre letzten Änderungen konnten nicht gespeichert werden."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: el\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# στοιχείο} other {# στοιχεία}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# ρόλος} other {# ρόλοι}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} προτάσεις που εξετάστηκαν"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "Α4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Φυσικά! Μπορείτε να εξαγάγετε το βιογραφικό σας σημείωμα σε PDF με ένα μόνο κλικ. Το εξαγόμενο PDF διατηρεί άψογα όλη τη μορφοποίηση και το στυλ σας."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Αποδέχομαι"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Αποδοχή όλων"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Αποδεκτή πρόταση"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Αποκτήστε πρόσβαση στα βιογραφικά σημειώματά σας και στα δεδομένα σας προγραμματιστικά χρησιμοποιώντας το API."
@@ -229,10 +246,38 @@ msgstr "Προσθήκη γραμμής πριν"
msgid "Afrikaans"
msgstr "Αφρικάανς"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Μετά"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "ΤΝ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Η ενσωμάτωση τεχνητής νοημοσύνης απενεργοποιήθηκε"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Η πρόταση τεχνητής νοημοσύνης εφαρμόστηκε."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Η πρόταση για την Τεχνητή Νοημοσύνη απορρίφθηκε."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Εφαρμόστηκαν προτάσεις για την Τεχνητή Νοημοσύνη."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Οι προτάσεις για τεχνητή νοημοσύνη απορρίφθηκαν."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Βοηθός βιογραφικού AI"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Αλβανικά"
@@ -367,10 +412,22 @@ msgstr "Τομέας σπουδών"
msgid "Artificial Intelligence"
msgstr "Τεχνητή Νοημοσύνη"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Ζητήστε μια στοχευμένη αλλαγή βιογραφικού..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Ζητήστε μια σταδιακή αλλαγή"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Αναλογία διαστάσεων"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Το αίτημα του Βοηθού απέτυχε"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Βασικά στοιχεία"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Όμορφα πρότυπα για να επιλέξετε, με ακόμα περισσότερα καθ’ οδόν."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Προτού"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Μπενγκάλι"
@@ -462,10 +523,6 @@ msgstr "Λίστα κουκκίδων"
msgid "By the community, for the community."
msgstr "Από την κοινότητα, για την κοινότητα."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Μπορώ να προσαρμόσω τα πρότυπα;"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Μπορώ να εξαγάγω το βιογραφικό μου σημείωμα σε PDF;"
@@ -576,6 +633,14 @@ msgstr "Σαφής"
msgid "Click here to select a file to import"
msgstr "Κάντε κλικ εδώ για να επιλέξετε ένα αρχείο προς εισαγωγή"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Κλείσιμο"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Κλείσιμο βοηθού τεχνητής νοημοσύνης"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Μπλοκ κώδικα"
@@ -622,6 +687,10 @@ msgstr "Επιβεβαίωση"
msgid "Connect"
msgstr "Σύνδεση"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Συνδεθείτε και επαληθεύστε έναν πάροχο τεχνητής νοημοσύνης πριν χρησιμοποιήσετε προτάσεις επεξεργασίας βιογραφικού."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Αντιγράψτε αυτό το μυστικό κλειδί και χ
msgid "Copy URL"
msgstr "Αντιγραφή URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Δεν ήταν δυνατή η εφαρμογή της πρότασης τεχνητής νοημοσύνης."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Αποσύνδεση"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Απολύω"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Τεκμηρίωση"
msgid "Don't have an account? <0/>"
msgstr "Δεν έχετε λογαριασμό; <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Προσφέρω"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Κάντε μία δωρεά στο Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Ενεργοποίηση 2FA"
msgid "Enable AI Features"
msgstr "Ενεργοποίηση λειτουργιών ΤΝ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Ενεργοποίηση ενσωμάτωσης τεχνητής νοημοσύνης"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Ενεργοποίηση ελέγχου ταυτότητας δυο σταδίων"
@@ -1162,6 +1247,10 @@ msgstr "Οτιδήποτε εισάγετε εδώ αποθηκεύεται το
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Όλα όσα χρειάζεστε για να δημιουργήσετε, να προσαρμόσετε και να μοιραστείτε επαγγελματικά βιογραφικά σημειώματα. Δημιουργήθηκε με γνώμονα το απόρρητο, βασισμένο σε ανοικτό κώδικα και εντελώς δωρεάν για πάντα."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Παραδείγματα: ξαναγράψτε την περίληψη, περιορίστε ένα σημείο εμπειρίας, προσθέστε μετρήσεις ή προσαρμόστε το βιογραφικό σημείωμα για μια περιγραφή θέσης εργασίας."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Έξοδος από πλήρη οθόνη"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Ξεχάσατε τον κωδικό πρόσβασής σας;"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Μορφή"
@@ -1397,6 +1486,10 @@ msgstr "Μορφή"
msgid "Free"
msgstr "Δωρεάν"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Ελεύθερη μορφή"
#: src/libs/locale.ts
msgid "French"
msgstr "Γαλλικά"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Μοντέλο"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Περισσότερες ενέργειες πρότασης"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Μετακίνηση σε"
@@ -1978,6 +2075,10 @@ msgstr "Πρέπει να αρχίζει με https://"
msgid "Name"
msgstr "Όνομα"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Χρειάζεται αναθεώρηση"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Νεπάλι"
@@ -2008,6 +2109,10 @@ msgstr "Νέος κωδικός πρόσβασης"
msgid "New Section"
msgstr "Νέα ενότητα"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Επόμενο"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Χωρίς διαφημίσεις, χωρίς παρακολούθηση"
@@ -2057,11 +2162,19 @@ msgstr "Συνεχής συντήρηση"
msgid "Open"
msgstr "Άνοιγμα"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Ανοιχτός βοηθός τεχνητής νοημοσύνης"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Άνοιγμα προγράμματος email"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Ανοιχτές Ενοποιήσεις"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Ανοίξτε τις Ρυθμίσεις Ολοκληρώσεων"
@@ -2215,6 +2328,10 @@ msgstr "Εισαγάγετε τον κωδικό πρόσβασης που μο
msgid "Please enter the URL you want to link to:"
msgstr "Εισαγάγετε το URL στο οποίο θέλετε να γίνεται ο σύνδεσμος:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Παρακαλώ υποστηρίξτε το έργο"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Θέση"
msgid "Preferences"
msgstr "Προτιμήσεις"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Προετοιμασία αλλαγών"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Προεπιλογές"
@@ -2263,6 +2384,10 @@ msgstr "Πατήστε <0>{RETURN_KEY}</0> ή <1>{COMMA_KEY}</1> για να π
msgid "Press <0>Enter</0> to open"
msgstr "Πατήστε <0>Enter</0> για να ανοίξετε"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Προηγούμενο"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Βασικό χρώμα"
@@ -2293,6 +2418,11 @@ msgstr "Γραμμή προόδου"
msgid "Projects"
msgstr "Έργα"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Πρόταση {0} από {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Προστατέψτε το βιογραφικό σας σημείωμα από μη εξουσιοδοτημένη πρόσβαση με έναν κωδικό πρόσβασης"
@@ -2315,6 +2445,10 @@ msgstr "Δημοσιεύσεις"
msgid "Publisher"
msgstr "Εκδότης"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Ακατέργαστη ενημέρωση κώδικα JSON"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Μετάβαση στην αρχική σελίδα"
@@ -2336,6 +2470,10 @@ msgstr "Το Reactive Resume είναι ένα δωρεάν έργο ανοικ
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Το Reactive Resume είναι ένας δωρεάν κατασκευαστής βιογραφικών σημειωμάτων ανοικτού κώδικα που απλοποιεί τη διαδικασία δημιουργίας, ενημέρωσης και κοινοποίησης του βιογραφικού σας σημειώματος."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Το Reactive Resume είναι δωρεάν και ανοιχτού κώδικα. Αν σας έχει βοηθήσει, σκεφτείτε να κάνετε μια δωρεά."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Το Reactive Resume είναι ανοικτού κώδικα, με έμφαση στο απόρρητο και εντελώς δωρεάν. Σε αντίθεση με άλλους κατασκευαστές βιογραφικών σημειωμάτων, δεν εμφανίζει διαφημίσεις, δεν παρακολουθεί τα δεδομένα σας και δεν περιορίζει τις λειτουργίες του πίσω από paywall."
@@ -2362,11 +2500,6 @@ msgstr "Ορθογώνιο"
msgid "Rectangle (Full Width)"
msgstr "Ορθογώνιο (πλήρους πλάτους)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Επανάληψη (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Ανανέωση"
msgid "Register New Device"
msgstr "Εγγραφή νέας συσκευής"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Απορρίπτω"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Απόρριψη όλων"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Απορρίφθηκε η πρόταση"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Θυμάστε τον κωδικό σας; <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Επαναποστολή email επαλήθευσης..."
msgid "Reset"
msgstr "Επαναφορά"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Επαναφορά συνομιλίας"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Επαναφορά κωδικού πρόσβασης"
msgid "Resetting your password..."
msgstr "Επαναφορά κωδικού πρόσβασης..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Αλλαγή μεγέθους βοηθού τεχνητής νοημοσύνης"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Πόροι"
@@ -2464,6 +2617,14 @@ msgstr "Η ανάλυση του βιογραφικού ολοκληρώθηκε
msgid "Resumes"
msgstr "Βιογραφικά σημειώματα"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Απαιτείται έλεγχος"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Εξετασμένες προτάσεις"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Στοίχιση δεξιά"
@@ -2562,6 +2723,10 @@ msgstr "Επιλογή..."
msgid "Self-Host with Docker"
msgstr "Αυτο-φιλοξενία με Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Στέλνω"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Αποστολή email επαναφοράς κωδικού πρόσβα
msgid "Sending password reset email..."
msgstr "Αποστολή email επαναφοράς κωδικού πρόσβασης..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Αποστολή αιτήματος"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Διαχωριστικό"
@@ -2709,6 +2878,10 @@ msgstr "Μονή στήλη με πλαϊνή μπάρα και καθαρή δ
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Μονόστηλο με γραμμική κεφαλίδα εισόδου τριών στηλών (θέση - οργάνωση - περίοδος)- συμπαγές και φιλικό προς την ATS, κατάλληλο για τις ασιατικές συμβάσεις βιογραφικού σημειώματος (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Μονόστηλο με κεφαλαία γράμματα στις επικεφαλίδες και κύριο χρώμα στο πάνω μέρος σε κάθε σελίδα. Βελτιωμένο για βιογραφικά στελεχών, συμβούλων ή νεοσύστατων επιχειρήσεων."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Μονή στήλη· προσεγμένο και σοβαρό για ανώτερες ή θέσεις εταιρικού επιπέδου."
@@ -2809,6 +2982,10 @@ msgstr "Στατιστικά"
msgid "Stay"
msgstr "Παραμονή"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Στάση"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Δυνατά σημεία"
@@ -2903,6 +3080,14 @@ msgstr "Χρώμα κειμένου"
msgid "Thai"
msgstr "Ταϊλανδικά"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Η Τεχνητή Νοημοσύνη πρότεινε μια αλλαγή που δεν ισχύει πλέον για αυτό το βιογραφικό."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Η Τεχνητή Νοημοσύνη επέστρεψε μια πρόταση της οποίας η προεπισκόπηση δεν ήταν δυνατή."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "Το κλειδί API διαγράφηκε με επιτυχία."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Μετά τη διαγραφή, το κλειδί API δεν θα μπορεί πλέον να αποκτά πρόσβαση στα δεδομένα σας. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Ο βοηθός σταμάτησε πριν επιστρέψει μια πρόταση."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Αυτό είναι ένα φιλικό προς το URL όνομα γ
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Αυτό μπορεί να πάρει μερικά λεπτά, ανάλογα με την απόκριση του παρόχου ΤΝ. Μην κλείσετε το παράθυρο ή ανανεώσετε τη σελίδα."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Αυτή η πρόταση είναι παλιά. Ζητήστε από τον βοηθό να την αναδημιουργήσει από το πιο πρόσφατο βιογραφικό."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Αυτό το βιογραφικό σημείωμα είναι κλειδωμένο και δεν μπορεί να ενημερωθεί."
@@ -3034,6 +3228,10 @@ msgstr "Για να διαγράψετε τον λογαριασμό σας, π
msgid "Toggle left sidebar"
msgstr "Εναλλαγή αριστερής πλευρικής γραμμής"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Εναλλαγή στοίβαξης σελίδων"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ουκρανικά"
msgid "Underline"
msgstr "Υπογράμμιση"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Αναίρεση (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Απεριόριστα βιογραφικά σημειώματα"
@@ -3387,10 +3580,6 @@ msgstr "Χ (Τwitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ναι, το Reactive Resume είναι διαθέσιμο σε πολλές γλώσσες. Μπορείτε να επιλέξετε την προτιμώμενη γλώσσα σας στη σελίδα ρυθμίσεων ή χρησιμοποιώντας τον επιλογέα γλώσσας στην επάνω δεξιά γωνία. Αν δεν βλέπετε τη γλώσσα σας ή θα θέλατε να βελτιώσετε τις υπάρχουσες μεταφράσεις, μπορείτε να <0>συμβάλετε στις μεταφράσεις στο Crowdin<1> (ανοίγει σε νέα καρτέλα)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ναι! Κάθε πρότυπο είναι πλήρως προσαρμόσιμο. Μπορείτε να αλλάξετε χρώματα, γραμματοσειρές, αποστάσεις και ακόμη και να γράψετε προσαρμοσμένο CSS για πλήρη έλεγχο της εμφάνισης του βιογραφικού σας σημειώματος."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ναι! Το Reactive Resume είναι εντελώς δωρεάν στη χρήση, χωρίς κρυφές χρεώσεις, επίπεδα premium ή συνδρομές. Είναι ανοικτού κώδικα και θα παραμείνει πάντα δωρεάν."
@@ -3440,7 +3629,7 @@ msgstr "Τα δεδομένα σας αποθηκεύονται τοπικά"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Τα δεδομένα σας αποθηκεύονται με ασφάλεια και δεν κοινοποιούνται ποτέ σε τρίτους. Μπορείτε επίσης να φιλοξενήσετε μόνοι σας το Reactive Resume στους δικούς σας διακομιστές για πλήρη έλεγχο των δεδομένων σας."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Δεν ήταν δυνατή η αποθήκευση των τελευταίων αλλαγών σας."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: en_GB\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: English, United Kingdom\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# item} other {# items}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# role} other {# roles}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} proposals reviewed"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Accept"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accept all"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Accepted proposal"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Access your resumes and data programmatically using the API."
@@ -229,10 +246,38 @@ msgstr "Add Row Before"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "After"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI integration disabled"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI proposal applied."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI proposal rejected."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI proposals applied."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI proposals rejected."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI Resume Assistant"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanian"
@@ -367,10 +412,22 @@ msgstr "Area of Study"
msgid "Artificial Intelligence"
msgstr "Artificial Intelligence"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Ask for a targeted resume change..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Ask for an incremental change"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Aspect Ratio"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistant request failed"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Basics"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Beautiful templates to choose from, with more on the way."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Before"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -462,10 +523,6 @@ msgstr "Bullet List"
msgid "By the community, for the community."
msgstr "By the community, for the community."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Can I customise the templates?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Can I export my resume to PDF?"
@@ -576,6 +633,14 @@ msgstr "Clear"
msgid "Click here to select a file to import"
msgstr "Click here to select a file to import"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Close"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Close AI assistant"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Code Block"
@@ -622,6 +687,10 @@ msgstr "Confirm"
msgid "Connect"
msgstr "Connect"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Connect and verify an AI provider before using resume editing proposals."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Copy this secret key and use it in your applications to access your data
msgid "Copy URL"
msgstr "Copy URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Could not apply the AI proposal."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Disconnect"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Dismiss"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Documentation"
msgid "Don't have an account? <0/>"
msgstr "Don't have an account? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donate"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Donate to Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Enable 2FA"
msgid "Enable AI Features"
msgstr "Enable AI Features"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Enable AI integration"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Enable Two-Factor Authentication"
@@ -1162,6 +1247,10 @@ msgstr "Everything entered here is stored locally on your browser. Your data is
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Everything you need to create, customise, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Exit fullscreen"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Forgot your password?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Free"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Free-form"
#: src/libs/locale.ts
msgid "French"
msgstr "French"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "More proposal actions"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Move to"
@@ -1978,6 +2075,10 @@ msgstr "Must start with https://"
msgid "Name"
msgstr "Name"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Needs review"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepali"
@@ -2008,6 +2109,10 @@ msgstr "New Password"
msgid "New Section"
msgstr "New Section"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Next"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "No Advertising, No Tracking"
@@ -2057,11 +2162,19 @@ msgstr "Ongoing Maintenance"
msgid "Open"
msgstr "Open"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Open AI assistant"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Open Email Client"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Open Integrations"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Open Integrations Settings"
@@ -2215,6 +2328,10 @@ msgstr "Please enter the password shared with you by the owner of the resume to
msgid "Please enter the URL you want to link to:"
msgstr "Please enter the URL you want to link to:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Please support the project"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Position"
msgid "Preferences"
msgstr "Preferences"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Preparing changes"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Presets"
@@ -2263,6 +2384,10 @@ msgstr "Press <0>{RETURN_KEY}</0> or <1>{COMMA_KEY}</1> to add or save the curre
msgid "Press <0>Enter</0> to open"
msgstr "Press <0>Enter</0> to open"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Prev"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primary Colour"
@@ -2293,6 +2418,11 @@ msgstr "Progress Bar"
msgid "Projects"
msgstr "Projects"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposal {0} of {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Protect your resume from unauthorised access with a password"
@@ -2315,6 +2445,10 @@ msgstr "Publications"
msgid "Publisher"
msgstr "Publisher"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Raw JSON Patch"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Go to homepage"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume is a free and open-source project, built with love and m
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume is free and open source. If it has helped you, please consider donating."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
@@ -2362,11 +2500,6 @@ msgstr "Rectangle"
msgid "Rectangle (Full Width)"
msgstr "Rectangle (Full Width)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Redo (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Refresh"
msgid "Register New Device"
msgstr "Register New Device"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Reject"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Reject all"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Rejected proposal"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Remember your password? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Resending verification email..."
msgid "Reset"
msgstr "Reset"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Reset chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Reset your password"
msgid "Resetting your password..."
msgstr "Resetting your password..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Resize AI assistant"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Resources"
@@ -2464,6 +2617,14 @@ msgstr "Resume analysis complete."
msgid "Resumes"
msgstr "Resumes"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Review required"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Reviewed proposals"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Right Align"
@@ -2562,6 +2723,10 @@ msgstr "Select..."
msgid "Self-Host with Docker"
msgstr "Self-Host with Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Send"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Send Password Reset Email"
msgid "Sending password reset email..."
msgstr "Sending password reset email..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Sending request"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Separator"
@@ -2709,6 +2878,10 @@ msgstr "Single-column with a sidebar and clean grid layout; versatile for any pr
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Single-column; polished and serious for senior or enterprise-level positions."
@@ -2809,6 +2982,10 @@ msgstr "Statistics"
msgid "Stay"
msgstr "Stay"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Strengths"
@@ -2903,6 +3080,14 @@ msgstr "Text Colour"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "The AI proposed a change that no longer applies to this resume."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "The AI returned a proposal that could not be previewed."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "The API key has been deleted successfully."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "The API key will no longer be able to access your data after deletion. This action cannot be undone."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "The assistant stopped before returning a proposal."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "This is a URL-friendly name for your resume."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "This resume is locked and cannot be updated."
@@ -3034,6 +3228,10 @@ msgstr "To delete your account, you need to enter the confirmation text and clic
msgid "Toggle left sidebar"
msgstr "Toggle left sidebar"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Toggle page stacking"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainian"
msgid "Underline"
msgstr "Underline"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Undo (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Unlimited Resumes"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Yes! Every template is fully customisable. You can change colours, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
@@ -3440,7 +3629,7 @@ msgstr "Your data is stored locally"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Your latest changes could not be saved."
+210 -21
View File
@@ -43,6 +43,11 @@ msgstr "{0, plural, one {# item} other {# items}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# role} other {# roles}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} proposals reviewed"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -114,6 +119,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Accept"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accept all"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Accepted proposal"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Access your resumes and data programmatically using the API."
@@ -224,10 +241,38 @@ msgstr "Add Row Before"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "After"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI integration disabled"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI proposal applied."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI proposal rejected."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI proposals applied."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI proposals rejected."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI Resume Assistant"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanian"
@@ -362,10 +407,22 @@ msgstr "Area of Study"
msgid "Artificial Intelligence"
msgstr "Artificial Intelligence"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Ask for a targeted resume change..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Ask for an incremental change"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Aspect Ratio"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistant request failed"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -416,6 +473,10 @@ msgstr "Basics"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Beautiful templates to choose from, with more on the way."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Before"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -457,10 +518,6 @@ msgstr "Bullet List"
msgid "By the community, for the community."
msgstr "By the community, for the community."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Can I customize the templates?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Can I export my resume to PDF?"
@@ -571,6 +628,14 @@ msgstr "Clear"
msgid "Click here to select a file to import"
msgstr "Click here to select a file to import"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Close"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Close AI assistant"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Code Block"
@@ -617,6 +682,10 @@ msgstr "Confirm"
msgid "Connect"
msgstr "Connect"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Connect and verify an AI provider before using resume editing proposals."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -664,6 +733,10 @@ msgstr "Copy this secret key and use it in your applications to access your data
msgid "Copy URL"
msgstr "Copy URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Could not apply the AI proposal."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -956,6 +1029,10 @@ msgstr "Disconnect"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Dismiss"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -965,6 +1042,10 @@ msgstr "Documentation"
msgid "Don't have an account? <0/>"
msgstr "Don't have an account? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donate"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Donate to Reactive Resume"
@@ -1089,6 +1170,10 @@ msgstr "Enable 2FA"
msgid "Enable AI Features"
msgstr "Enable AI Features"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Enable AI integration"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Enable Two-Factor Authentication"
@@ -1157,6 +1242,10 @@ msgstr "Everything entered here is stored locally on your browser. Your data is
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Exit Fullscreen"
@@ -1384,7 +1473,7 @@ msgid "Forgot your password?"
msgstr "Forgot your password?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1392,6 +1481,10 @@ msgstr "Format"
msgid "Free"
msgstr "Free"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Free-form"
#: src/libs/locale.ts
msgid "French"
msgstr "French"
@@ -1947,6 +2040,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "More proposal actions"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Move to"
@@ -1973,6 +2070,10 @@ msgstr "Must start with https://"
msgid "Name"
msgstr "Name"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Needs review"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepali"
@@ -2003,6 +2104,10 @@ msgstr "New Password"
msgid "New Section"
msgstr "New Section"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Next"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "No Advertising, No Tracking"
@@ -2052,11 +2157,19 @@ msgstr "Ongoing Maintenance"
msgid "Open"
msgstr "Open"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Open AI assistant"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Open Email Client"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Open Integrations"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Open Integrations Settings"
@@ -2210,6 +2323,10 @@ msgstr "Please enter the password shared with you by the owner of the resume to
msgid "Please enter the URL you want to link to:"
msgstr "Please enter the URL you want to link to:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Please support the project"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2245,6 +2362,10 @@ msgstr "Position"
msgid "Preferences"
msgstr "Preferences"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Preparing changes"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Presets"
@@ -2258,6 +2379,10 @@ msgstr "Press <0>{RETURN_KEY}</0> or <1>{COMMA_KEY}</1> to add or save the curre
msgid "Press <0>Enter</0> to open"
msgstr "Press <0>Enter</0> to open"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Prev"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primary Color"
@@ -2288,6 +2413,11 @@ msgstr "Progress Bar"
msgid "Projects"
msgstr "Projects"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposal {0} of {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Protect your resume from unauthorized access with a password"
@@ -2310,6 +2440,10 @@ msgstr "Publications"
msgid "Publisher"
msgstr "Publisher"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Raw JSON Patch"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Go to homepage"
@@ -2331,6 +2465,10 @@ msgstr "Reactive Resume is a free and open-source project, built with love and m
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume is free and open source. If it has helped you, please consider donating."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
@@ -2357,11 +2495,6 @@ msgstr "Rectangle"
msgid "Rectangle (Full Width)"
msgstr "Rectangle (Full Width)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Redo (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2376,6 +2509,18 @@ msgstr "Refresh"
msgid "Register New Device"
msgstr "Register New Device"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Reject"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Reject all"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Rejected proposal"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Remember your password? <0/>"
@@ -2426,6 +2571,10 @@ msgstr "Resending verification email..."
msgid "Reset"
msgstr "Reset"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Reset chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2439,6 +2588,10 @@ msgstr "Reset your password"
msgid "Resetting your password..."
msgstr "Resetting your password..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Resize AI assistant"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Resources"
@@ -2459,6 +2612,14 @@ msgstr "Resume analysis complete."
msgid "Resumes"
msgstr "Resumes"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Review required"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Reviewed proposals"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Right Align"
@@ -2557,6 +2718,10 @@ msgstr "Select..."
msgid "Self-Host with Docker"
msgstr "Self-Host with Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Send"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2566,6 +2731,10 @@ msgstr "Send Password Reset Email"
msgid "Sending password reset email..."
msgstr "Sending password reset email..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Sending request"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Separator"
@@ -2704,6 +2873,10 @@ msgstr "Single-column with a sidebar and clean grid layout; versatile for any pr
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Single-column; polished and serious for senior or enterprise-level positions."
@@ -2804,6 +2977,10 @@ msgstr "Statistics"
msgid "Stay"
msgstr "Stay"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Strengths"
@@ -2898,6 +3075,14 @@ msgstr "Text Color"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "The AI proposed a change that no longer applies to this resume."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "The AI returned a proposal that could not be previewed."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2911,6 +3096,10 @@ msgstr "The API key has been deleted successfully."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "The API key will no longer be able to access your data after deletion. This action cannot be undone."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "The assistant stopped before returning a proposal."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2977,7 +3166,12 @@ msgstr "This is a URL-friendly name for your resume."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "This resume is locked and cannot be updated."
@@ -3029,6 +3223,10 @@ msgstr "To delete your account, you need to enter the confirmation text and clic
msgid "Toggle left sidebar"
msgstr "Toggle left sidebar"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Toggle page stacking"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3132,11 +3330,6 @@ msgstr "Ukrainian"
msgid "Underline"
msgstr "Underline"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Undo (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Unlimited Resumes"
@@ -3382,10 +3575,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
@@ -3435,7 +3624,7 @@ msgstr "Your data is stored locally"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Your latest changes could not be saved."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# elemento} other {# elementos}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# puesto} other {# puestos}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} propuestas revisadas"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Por supuesto. Puedes exportar tu currículum a PDF con un solo clic. El PDF exportado mantiene perfectamente todo tu formato y estilo."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Aceptar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Aceptar todo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Propuesta aceptada"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Accede a tus currículums y datos de forma programática usando la API."
@@ -229,10 +246,38 @@ msgstr "Añadir fila antes"
msgid "Afrikaans"
msgstr "Afrikáans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Después"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Integración de IA desactivada"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Se ha aplicado la propuesta de IA."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Propuesta de IA rechazada."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Se han presentado propuestas de IA."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Propuestas de IA rechazadas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Asistente de IA para la elaboración de currículums"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanés"
@@ -367,10 +412,22 @@ msgstr "Área de estudio"
msgid "Artificial Intelligence"
msgstr "Inteligencia artificial"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Solicita un cambio específico en tu currículum..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Solicitar un cambio gradual"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Relación de aspecto"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "La solicitud de asistencia falló."
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Lo esencial"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Hermosas plantillas entre las que puedes elegir, y pronto habrá más."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Antes"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengalí"
@@ -462,10 +523,6 @@ msgstr "Lista con viñetas"
msgid "By the community, for the community."
msgstr "Por la comunidad, para la comunidad."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "¿Puedo personalizar las plantillas?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "¿Puedo exportar mi currículum a PDF?"
@@ -576,6 +633,14 @@ msgstr "Claro"
msgid "Click here to select a file to import"
msgstr "Haz clic aquí para seleccionar un archivo para importar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Cerrar"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Asistente de IA de cierre"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Bloque de código"
@@ -622,6 +687,10 @@ msgstr "Confirmar"
msgid "Connect"
msgstr "Conectar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Antes de utilizar las propuestas de edición de currículums, contacte con un proveedor de IA y verifíquelo."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Copia esta clave secreta y úsala en tus aplicaciones para acceder a tus
msgid "Copy URL"
msgstr "Copiar URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "No se pudo aplicar la propuesta de IA."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Desconectar"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Despedir"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Documentación"
msgid "Don't have an account? <0/>"
msgstr "¿No tienes una cuenta? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Donar a Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Habilitar 2FA"
msgid "Enable AI Features"
msgstr "Habilitar funciones de IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Habilitar la integración de la IA"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Habilitar la autenticación de doble factor"
@@ -1162,6 +1247,10 @@ msgstr "Todo lo que introduzcas aquí se almacena localmente en tu navegador. Tu
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Todo lo que necesitas para crear, personalizar y compartir currículums profesionales. Creado con la privacidad en mente, impulsado por el código abierto y completamente gratis para siempre."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Ejemplos: reescribir el resumen, concretar un punto de la experiencia, añadir métricas o adaptar el currículum a la descripción del puesto."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Salir de pantalla completa"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "¿Olvidaste tu contraseña?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formato"
@@ -1397,6 +1486,10 @@ msgstr "Formato"
msgid "Free"
msgstr "Gratis"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Forma libre"
#: src/libs/locale.ts
msgid "French"
msgstr "Francés"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modelo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Más propuestas de acción"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Mover a"
@@ -1978,6 +2075,10 @@ msgstr "Debe empezar por https://"
msgid "Name"
msgstr "Nombre"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Necesita revisión"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalí"
@@ -2008,6 +2109,10 @@ msgstr "Nueva contraseña"
msgid "New Section"
msgstr "Nueva sección"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Siguiente"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Sin publicidad, sin rastreo"
@@ -2057,11 +2162,19 @@ msgstr "Mantenimiento continuo"
msgid "Open"
msgstr "Abrir"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Asistente de IA abierta"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Abrir cliente de correo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Integraciones abiertas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Abrir Configuración de integraciones"
@@ -2215,6 +2328,10 @@ msgstr "Introduce la contraseña que el propietario del currículum compartió c
msgid "Please enter the URL you want to link to:"
msgstr "Introduce la URL a la que quieres enlazar:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Por favor, apoyen el proyecto."
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Puesto"
msgid "Preferences"
msgstr "Preferencias"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Preparando cambios"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Preajustes"
@@ -2263,6 +2384,10 @@ msgstr "Presiona <0>{RETURN_KEY}</0> o <1>{COMMA_KEY}</1> para agregar o guardar
msgid "Press <0>Enter</0> to open"
msgstr "Pulse <0>Intro</0> para abrir"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Anterior"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Color primario"
@@ -2293,6 +2418,11 @@ msgstr "Barra de progreso"
msgid "Projects"
msgstr "Proyectos"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Propuesta {0} de {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Protege tu currículum del acceso no autorizado con una contraseña"
@@ -2315,6 +2445,10 @@ msgstr "Publicaciones"
msgid "Publisher"
msgstr "Editor"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Parche JSON sin procesar"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Ir a la página de inicio"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume es un proyecto gratuito y de código abierto, creado con
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume es un creador de currículums gratuito y de código abierto que simplifica el proceso de crear, actualizar y compartir tu currículum."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume es gratuito y de código abierto. Si te ha sido útil, considera hacer una donación."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume es de código abierto, centrado en la privacidad y completamente gratuito. A diferencia de otros creadores de currículums, no muestra anuncios, no rastrea tus datos ni limita tus funciones tras un muro de pago."
@@ -2362,11 +2500,6 @@ msgstr "Rectángulo"
msgid "Rectangle (Full Width)"
msgstr "Rectángulo (ancho completo)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Rehacer (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Actualizar"
msgid "Register New Device"
msgstr "Registrar nuevo dispositivo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Rechazar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Rechazar todo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Propuesta rechazada"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "¿Recuerdas tu contraseña? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Reenviando correo de verificación..."
msgid "Reset"
msgstr "Restablecer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Reiniciar chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Restablecer tu contraseña"
msgid "Resetting your password..."
msgstr "Restableciendo tu contraseña..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Asistente de IA para redimensionar"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Recursos"
@@ -2464,6 +2617,14 @@ msgstr "Análisis del currículum finalizado."
msgid "Resumes"
msgstr "Currículums"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Se requiere revisión"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Propuestas revisadas"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Alinear a la derecha"
@@ -2562,6 +2723,10 @@ msgstr "Seleccionar..."
msgid "Self-Host with Docker"
msgstr "Auto alojamiento con Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Enviar"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Enviar correo para restablecer contraseña"
msgid "Sending password reset email..."
msgstr "Enviando correo para restablecer contraseña..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Enviando solicitud"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Separador"
@@ -2709,6 +2878,10 @@ msgstr "Una sola columna con una barra lateral y un diseño de cuadrícula limpi
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Una sola columna con un encabezado de entrada en línea de tres columnas (cargo - organización - punto); compacto y apto para ATS, muy adecuado para las convenciones asiáticas de currículum (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Currículum de una sola columna con encabezados de sección en mayúsculas y una línea superior de color primario en cada página; ideal para currículums de ejecutivos, consultores o empresas emergentes."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Una sola columna; pulido y serio para puestos sénior o de nivel empresarial."
@@ -2809,6 +2982,10 @@ msgstr "Estadísticas"
msgid "Stay"
msgstr "Continuar"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Detener"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Puntos fuertes"
@@ -2903,6 +3080,14 @@ msgstr "Color del texto"
msgid "Thai"
msgstr "Tailandés"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "La IA propuso un cambio que ya no se aplica a este currículum."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "La IA devolvió una propuesta que no se pudo previsualizar."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "La clave API se ha eliminado correctamente."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Después de eliminarla, la clave API ya no podrá acceder a tus datos. Esta acción no se puede deshacer."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "El asistente se detuvo antes de devolver la propuesta."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Este es un nombre compatible con URL para tu currículum."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Esto puede tardar unos minutos, dependiendo de la respuesta del proveedor de IA. No cierres la ventana ni recargues la página."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Esta propuesta está desactualizada. Pídele al asistente que la actualice a partir del currículum más reciente."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Este currículum está bloqueado y no se puede actualizar."
@@ -3034,6 +3228,10 @@ msgstr "Para eliminar tu cuenta, debes introducir el texto de confirmación y ha
msgid "Toggle left sidebar"
msgstr "Alternar la barra lateral izquierda"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Alternar apilamiento de páginas"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ucraniano"
msgid "Underline"
msgstr "Subrayado"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Deshacer (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Currículums ilimitados"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Sí, Reactive Resume está disponible en varios idiomas. Puedes elegir tu idioma preferido en la página de configuración o usando el selector de idioma en la esquina superior derecha. Si no ves tu idioma o quieres mejorar las traducciones existentes, puedes <0>contribuir a las traducciones en Crowdin<1> (abrir en una nueva pestaña)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Sí. Todas las plantillas son totalmente personalizables. Puedes cambiar colores, fuentes, espaciado e incluso escribir CSS personalizado para tener un control total sobre la apariencia de tu currículum."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Sí. Reactive Resume es completamente gratuito, sin costes ocultos, niveles premium ni cuotas de suscripción. Es de código abierto y siempre será gratuito."
@@ -3440,7 +3629,7 @@ msgstr "Tus datos se almacenan localmente"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Tus datos se almacenan de forma segura y nunca se comparten con terceros. También puedes auto alojar Reactive Resume en tus propios servidores para tener un control total sobre tus datos."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "No se pudieron guardar los últimos cambios."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fa\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# مورد} other {# مورد}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# نقش} other {# نقش}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} پیشنهادات بررسی شد"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "قطعاً! می‌توانید رزومه خود را تنها با یک کلیک به PDF خروجی بگیرید. فایل PDF خروجی تمام قالب‌بندی و سبک‌دهی شما را به‌طور کامل حفظ می‌کند."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "پذیرفتن"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "همه را بپذیرید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "پیشنهاد پذیرفته شده"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "به رزومه‌ها و داده‌های خود از طریق API و به‌صورت برنامه‌نویسی دسترسی داشته باشید."
@@ -229,10 +246,38 @@ msgstr "افزودن ردیف قبل از این"
msgid "Afrikaans"
msgstr "آفریکانس"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "بعد از"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "ادغام هوش مصنوعی غیرفعال است"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "پیشنهاد هوش مصنوعی اعمال شد."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "پیشنهاد هوش مصنوعی رد شد."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "پیشنهادهای هوش مصنوعی اعمال شد."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "پیشنهادهای هوش مصنوعی رد شدند."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "دستیار رزومه هوش مصنوعی"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "آلبانیایی"
@@ -367,10 +412,22 @@ msgstr "حوزهٔ تحصیل"
msgid "Artificial Intelligence"
msgstr "هوش مصنوعی"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "درخواست تغییر هدفمند رزومه را بدهید..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "درخواست تغییر تدریجی"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "نسبت تصویر"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "درخواست دستیار ناموفق بود"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "مبانی"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "قالب‌های زیبایی برای انتخاب، با موارد بیشتری که در راه هستند."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "قبل از"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "بنگالی"
@@ -462,10 +523,6 @@ msgstr "فهرست نشانه‌دار"
msgid "By the community, for the community."
msgstr "توسط جامعه، برای جامعه."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "آیا می‌توانم قالب‌ها را شخصی‌سازی کنم؟"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "آیا می‌توانم رزومه‌ام را به PDF خروجی بگیرم؟"
@@ -576,6 +633,14 @@ msgstr "شفاف"
msgid "Click here to select a file to import"
msgstr "برای انتخاب فایل برای وارد کردن، اینجا کلیک کنید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "بستن"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "دستیار هوش مصنوعی را ببندید"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "بلوک کد"
@@ -622,6 +687,10 @@ msgstr "تأیید"
msgid "Connect"
msgstr "اتصال"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "قبل از استفاده از پیشنهادهای ویرایش رزومه، به یک ارائه‌دهنده هوش مصنوعی متصل شوید و آن را تأیید کنید."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "این کلید مخفی را کپی کنید و برای دسترسی
msgid "Copy URL"
msgstr "کپی URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "نتوانستم پیشنهاد هوش مصنوعی را اعمال کنم."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "قطع اتصال"
msgid "Discord"
msgstr "دیسکورد"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "رد کردن"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "مستندات"
msgid "Don't have an account? <0/>"
msgstr "حساب ندارید؟ <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "اهدا کنید"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "به Reactive Resume دونیت کنید"
@@ -1094,6 +1175,10 @@ msgstr "فعالسازی ورود دو مرحله‌ای"
msgid "Enable AI Features"
msgstr "فعال‌سازی قابلیت‌های هوش مصنوعی"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "ادغام هوش مصنوعی را فعال کنید"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "فعالسازی احراز هویت دو مرحله‌ای"
@@ -1162,6 +1247,10 @@ msgstr "هرچیزی که اینجا وارد می‌کنید به‌صورت م
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "همه‌چیزی که برای ایجاد، شخصی‌سازی و اشتراک‌گذاری رزومه‌های حرفه‌ای نیاز دارید. با تمرکز بر حریم خصوصی ساخته شده، با متن‌باز قدرت گرفته و برای همیشه کاملاً رایگان است."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "مثال‌ها: خلاصه را بازنویسی کنید، یک بخش مربوط به تجربیات را محدودتر کنید، معیارها را اضافه کنید، یا رزومه را با شرح شغل تطبیق دهید."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "خروج از حالت تمام‌صفحه"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "گذرواژهٔ خود را فراموش کرده‌اید؟"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "فرمت"
@@ -1397,6 +1486,10 @@ msgstr "فرمت"
msgid "Free"
msgstr "رایگان"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "فرم آزاد"
#: src/libs/locale.ts
msgid "French"
msgstr "فرانسوی"
@@ -1952,6 +2045,10 @@ msgstr "مایکروسافت ورد"
msgid "Model"
msgstr "مدل"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "اقدامات پیشنهادی بیشتر"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "انتقال به"
@@ -1978,6 +2075,10 @@ msgstr "باید با https:// شروع شود."
msgid "Name"
msgstr "نام"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "نیاز به بررسی دارد"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "نپالی"
@@ -2008,6 +2109,10 @@ msgstr "گذرواژهٔ جدید"
msgid "New Section"
msgstr "بخش جدید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "بعدی"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "بدون تبلیغات، بدون رهگیری"
@@ -2057,11 +2162,19 @@ msgstr "نگه‌داری مداوم"
msgid "Open"
msgstr "باز کردن"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "دستیار هوش مصنوعی را باز کنید"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "باز کردن کلاینت ایمیل"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ادغام‌های باز"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "تنظیمات یکپارچه‌سازی را باز کنید"
@@ -2215,6 +2328,10 @@ msgstr "لطفاً گذرواژه‌ای را که صاحب رزومه با شم
msgid "Please enter the URL you want to link to:"
msgstr "لطفاً URL مورد نظر برای لینک دادن را وارد کنید:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "لطفا از پروژه حمایت کنید"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "موقعیت شغلی"
msgid "Preferences"
msgstr "ترجیحات"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "آماده‌سازی تغییرات"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "پیش‌تنظیم‌ها"
@@ -2263,6 +2384,10 @@ msgstr "برای افزودن یا ذخیره کلمه کلیدی فعلی <0>{R
msgid "Press <0>Enter</0> to open"
msgstr "برای باز کردن <0>Enter را</0> فشار دهید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "قبلی"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "رنگ اصلی"
@@ -2293,6 +2418,11 @@ msgstr "نوار پیشرفت"
msgid "Projects"
msgstr "پروژه‌ها"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "پیشنهاد {0} از {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "از رزومه خود در برابر دسترسی غیرمجاز با گذرواژه محافظت کنید"
@@ -2315,6 +2445,10 @@ msgstr "انتشارها"
msgid "Publisher"
msgstr "منتشرکننده"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "وصله خام JSON"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - رفتن به صفحهٔ اصلی"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume یک پروژهٔ رایگان و متن‌باز است
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume یک رزومه‌ساز رایگان و متن‌باز است که فرایند ایجاد، به‌روزرسانی و اشتراک‌گذاری رزومه شما را ساده می‌کند."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "رزومه واکنشی رایگان و متن‌باز است. اگر به شما کمک کرده است، لطفاً کمک مالی را در نظر بگیرید."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume متن‌باز، حریم‌خصوصی‌محور و کاملاً رایگان است. برخلاف سایر رزومه‌سازها، هیچ تبلیغی نشان نمی‌دهد، داده‌های شما را رهگیری نمی‌کند و قابلیت‌هایتان را پشت دیوار پرداخت محدود نمی‌کند."
@@ -2362,11 +2500,6 @@ msgstr "مستطیل"
msgid "Rectangle (Full Width)"
msgstr "مستطیل (تمام‌عرض)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "انجام دوباره (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "تازه‌سازی"
msgid "Register New Device"
msgstr "ثبت دستگاه جدید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "رد کردن"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "همه را رد کنید"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "پیشنهاد رد شده"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "رمز عبور را به خاطر دارید؟ <0/>"
@@ -2431,6 +2576,10 @@ msgstr "در حال ارسال دوباره ایمیل تأیید..."
msgid "Reset"
msgstr "ریست"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "تنظیم مجدد چت"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "تنظیم مجدد گذرواژهٔ شما"
msgid "Resetting your password..."
msgstr "در حال تنظیم مجدد گذرواژه شما..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "تغییر اندازه دستیار هوش مصنوعی"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "منابع"
@@ -2464,6 +2617,14 @@ msgstr "تحلیل رزومه کامل شد."
msgid "Resumes"
msgstr "رزومه‌ها"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "بررسی مورد نیاز"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "پیشنهادهای بررسی شده"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "تراز راست"
@@ -2562,6 +2723,10 @@ msgstr "انتخاب..."
msgid "Self-Host with Docker"
msgstr "میزبانی خودکار با Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "ارسال"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "ارسال ایمیل تنظیم مجدد گذرواژه"
msgid "Sending password reset email..."
msgstr "در حال ارسال ایمیل تنظیم مجدد گذرواژه..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "ارسال درخواست"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "جداکننده"
@@ -2709,6 +2878,10 @@ msgstr "تک‌ستونه با نوار کناری و چیدمان شبکه‌ا
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "یک‌ستونی با سربرگ ورودی سه‌ستونی در یک خط (موقعیت · سازمان · دوره)؛ فشرده و سازگار با ATS، مناسب برای هنجارهای رزومه آسیایی (چین/ژاپن/کره)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "تک ستونی با سرتیترهای بخش‌ها با حروف بزرگ و یک خط با رنگ اصلی در بالای هر صفحه؛ مناسب برای رزومه‌های مدیریتی، مشاوره‌ای یا استارتاپی."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "تک‌ستونه؛ صیقل‌خورده و جدی برای موقعیت‌های ارشد یا سطح سازمانی."
@@ -2809,6 +2982,10 @@ msgstr "آمارها"
msgid "Stay"
msgstr "ماندن"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "توقف"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "نقاط قوت"
@@ -2903,6 +3080,14 @@ msgstr "رنگ متن"
msgid "Thai"
msgstr "تایلندی"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "هوش مصنوعی تغییری را پیشنهاد داد که دیگر در مورد این رزومه اعمال نمی‌شود."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "هوش مصنوعی پیشنهادی را برگرداند که قابل پیش‌نمایش نبود."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "کلید API با موفقیت حذف شد."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "پس از حذف، این کلید API دیگر قادر به دسترسی به داده‌های شما نخواهد بود. این عمل قابل بازگشت نیست."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "دستیار قبل از اینکه پیشنهادی را برگرداند، مکث کرد."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "این یک نام مناسب برای URLِ رزومه شما است."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "این کار ممکن است چند دقیقه طول بکشد، بسته به پاسخ ارائه‌دهندهٔ هوش مصنوعی. لطفاً پنجره را نبندید یا صفحه را تازه‌سازی نکنید."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "این پیشنهاد قدیمی است. از دستیار بخواهید آن را از آخرین رزومه بازسازی کند."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "این رزومه قفل شده و قابل به‌روزرسانی نیست."
@@ -3034,6 +3228,10 @@ msgstr "برای حذف حساب خود، باید متن تأیید را وار
msgid "Toggle left sidebar"
msgstr "جابه‌جایی نوار کناری سمت چپ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "تغییر وضعیت چیدمان صفحات"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "اوکراینی"
msgid "Underline"
msgstr "زیرخط"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "واگردانی (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "رزومه‌های نامحدود"
@@ -3387,10 +3580,6 @@ msgstr "ایکس (توییتر)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "بله، Reactive Resume در چندین زبان در دسترس است. می‌توانید زبان دلخواه خود را در صفحهٔ تنظیمات یا با استفاده از تعویض‌کنندهٔ زبان در گوشهٔ بالا سمت راست انتخاب کنید. اگر زبان خود را نمی‌بینید یا می‌خواهید ترجمه‌های موجود را بهبود دهید، می‌توانید <0>در ترجمه‌ها روی Crowdin مشارکت کنید<1> (در زبانهٔ جدید باز می‌شود)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "بله! هر قالب کاملاً قابل‌سفارشی‌سازی است. می‌توانید رنگ‌ها، فونت‌ها، فواصل و حتی CSS سفارشی برای کنترل کامل ظاهر رزومه خود بنویسید."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "بله! Reactive Resume کاملاً رایگان است، بدون هزینهٔ پنهان، پلن پریمیوم یا حق اشتراک. این پروژه متن‌باز است و برای همیشه رایگان می‌ماند."
@@ -3440,7 +3629,7 @@ msgstr "داده‌های شما به‌صورت محلی ذخیره می‌شو
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "داده‌های شما به‌طور ایمن ذخیره شده و هرگز با اشخاص ثالث به اشتراک گذاشته نمی‌شوند. همچنین می‌توانید Reactive Resume را روی سرورهای خود میزبانی کنید تا کنترل کامل بر داده‌های خود داشته باشید."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "آخرین تغییرات شما ذخیره نشد."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fi\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# kohde} other {# kohdetta}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# rooli} other {# roolia}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} ehdotuksia tarkistettu"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Ehdottomasti! Voit viedä ansioluettelosi PDF-muotoon yhdellä klikkauksella. Viety PDF säilyttää kaiken muotoilun ja tyylin täydellisesti."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Hyväksyä"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Hyväksy kaikki"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Hyväksytty ehdotus"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Käytä ansioluetteloitasi ja tietojasi ohjelmallisesti rajapinnan (API:n) kautta."
@@ -229,10 +246,38 @@ msgstr "Lisää rivi ennen"
msgid "Afrikaans"
msgstr "afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Jälkeen"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Tekoälyintegraatio poistettu käytöstä"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Tekoälyehdotus sovellettu."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Tekoälyehdotus hylättiin."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Tekoälyehdotuksia sovellettu."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Tekoälyehdotukset hylättiin."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Tekoälyinen ansioluetteloavustaja"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "albania"
@@ -367,10 +412,22 @@ msgstr "Opintoala"
msgid "Artificial Intelligence"
msgstr "Tekoäly"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Pyydä kohdennettua ansioluettelon muutosta..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Pyydä asteittaista muutosta"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Kuvasuhde"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Assistant-pyyntö epäonnistui"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Perustiedot"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Kauniita mallipohjia, joista valita – ja lisää tulossa."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Ennen"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "bengali"
@@ -462,10 +523,6 @@ msgstr "Luettelomerkkilista"
msgid "By the community, for the community."
msgstr "Yhteisöltä yhteisölle."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Voinko mukauttaa mallipohjia?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Voinko viedä ansioluetteloni PDF-muotoon?"
@@ -576,6 +633,14 @@ msgstr "Kirkas"
msgid "Click here to select a file to import"
msgstr "Napsauta tästä valitaksesi tuotavan tiedoston"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Sulje"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Sulje tekoälyavustaja"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Koodilohko"
@@ -622,6 +687,10 @@ msgstr "Vahvista"
msgid "Connect"
msgstr "Yhdistä"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Yhdistä ja tarkista tekoälypalveluntarjoaja ennen ansioluettelon muokkausehdotusten käyttöä."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Kopioi tämä salainen avain ja käytä sitä sovelluksissasi tietojesi
msgid "Copy URL"
msgstr "Kopioi URL-osoite"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Tekoälyehdotusta ei voitu soveltaa."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Katkaise yhteys"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Hylkää"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentaatio"
msgid "Don't have an account? <0/>"
msgstr "Eikö sinulla ole tiliä? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Lahjoittaa"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Lahjoita Reactive Resumelle"
@@ -1094,6 +1175,10 @@ msgstr "Ota 2FA käyttöön"
msgid "Enable AI Features"
msgstr "Ota tekoälyominaisuudet käyttöön"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Ota tekoälyintegraatio käyttöön"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Ota kaksivaiheinen todennus käyttöön"
@@ -1162,6 +1247,10 @@ msgstr "Kaikki tähän syötetty tallennetaan paikallisesti selaimeesi. Tietosi
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Kaikki, mitä tarvitset ammattimaisen ansioluettelon luomiseen, mukauttamiseen ja jakamiseen. Rakennettu yksityisyys edellä, avoimen lähdekoodin voimin ja täysin ilmainen ikuisesti."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Esimerkkejä: kirjoita yhteenveto uudelleen, tiivistä yhtä kokemusta koskevaa luettelokohtaa, lisää mittareita tai mukauta ansioluettelo työpaikkailmoitukseen."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Poistu koko näytöstä"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Unohditko salasanasi?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Muoto"
@@ -1397,6 +1486,10 @@ msgstr "Muoto"
msgid "Free"
msgstr "Ilmainen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Vapaamuotoinen"
#: src/libs/locale.ts
msgid "French"
msgstr "ranska"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Malli"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Lisää ehdotustoimintoja"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Siirrä"
@@ -1978,6 +2075,10 @@ msgstr "Aloitettava osoitteesta https://"
msgid "Name"
msgstr "Nimi"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Tarvitsee tarkistuksen"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "nepali"
@@ -2008,6 +2109,10 @@ msgstr "Uusi salasana"
msgid "New Section"
msgstr "Uusi osio"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Seuraava"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Ei mainoksia, ei seurantaa"
@@ -2057,11 +2162,19 @@ msgstr "Jatkuva ylläpito"
msgid "Open"
msgstr "Avaa"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Avoin tekoälyavustaja"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Avaa sähköpostiohjelma"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Avoimet integraatiot"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Avaa Integraatioiden asetukset"
@@ -2215,6 +2328,10 @@ msgstr "Syötä ansioluettelon omistajan jakama salasana jatkaaksesi."
msgid "Please enter the URL you want to link to:"
msgstr "Syötä linkitettävä URL-osoite:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Tue projektia"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Tehtävänimike"
msgid "Preferences"
msgstr "Asetukset"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Muutosten valmistelu"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Esiasetukset"
@@ -2263,6 +2384,10 @@ msgstr "Paina <0>{RETURN_KEY}</0> tai <1>{COMMA_KEY}</1> lisätäksesi tai talle
msgid "Press <0>Enter</0> to open"
msgstr "Paina <0>Enter</0> avataksesi"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Edellinen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Pääväri"
@@ -2293,6 +2418,11 @@ msgstr "Edistymispalkki"
msgid "Projects"
msgstr "Projektit"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Ehdotus {0} / {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Suojaa ansioluettelosi luvattomalta käytöltä salasanalla"
@@ -2315,6 +2445,10 @@ msgstr "Julkaisut"
msgid "Publisher"
msgstr "Julkaisija"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Raaka JSON-korjaus"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume – Siirry etusivulle"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume on ilmainen ja avoimen lähdekoodin projekti, joka on te
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume on ilmainen ja avoimen lähdekoodin ansioluettelon laatija, joka helpottaa ansioluettelon luomista, päivittämistä ja jakamista."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume on ilmainen ja avoimen lähdekoodin työkalu. Jos siitä on ollut sinulle apua, harkitse lahjoittamista."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume on avoimen lähdekoodin, yksityisyyteen keskittyvä ja täysin ilmainen. Toisin kuin monet muut ansioluettelon laatijat, se ei näytä mainoksia, seuraa tietojasi tai piilota ominaisuuksia maksumuurin taakse."
@@ -2362,11 +2500,6 @@ msgstr "Suorakulmio"
msgid "Rectangle (Full Width)"
msgstr "Suorakulmio (täysi leveys)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Tee uudelleen (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Päivitä"
msgid "Register New Device"
msgstr "Rekisteröi uusi laite"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Hylätä"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Hylkää kaikki"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Hylätty ehdotus"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Muistatko salasanasi? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Lähetetään vahvistussähköpostia uudelleen..."
msgid "Reset"
msgstr "Palauta"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Palauta keskustelu"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Palauta salasanasi"
msgid "Resetting your password..."
msgstr "Palautetaan salasanaasi..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Muuta tekoälyavustajaa"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Resurssit"
@@ -2464,6 +2617,14 @@ msgstr "Ansioluettelon analyysi valmis."
msgid "Resumes"
msgstr "Ansioluettelot"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Tarkistus vaaditaan"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Tarkistetut ehdotukset"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Tasaa oikealle"
@@ -2562,6 +2723,10 @@ msgstr "Valitse..."
msgid "Self-Host with Docker"
msgstr "Itse-isännöinti Dockerilla"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Lähetä"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Lähetä salasanan palautussähköposti"
msgid "Sending password reset email..."
msgstr "Lähetetään salasanan palautussähköpostia..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Lähetetään pyyntö"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Erotin"
@@ -2709,6 +2878,10 @@ msgstr "Yksipalstainen, sivupalkilla ja selkeällä ruudukkoasettelulla; monipuo
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Yksisarakkeinen, riviin sijoitettu kolmisarakkeinen otsikko (asema - organisaatio - piste); kompakti ja ATS-ystävällinen, sopii hyvin aasialaisiin ansioluettelokäytäntöihin (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Yksipalstainen ansioluettelo, jossa isoilla kirjaimilla kirjoitetut osioiden otsikot ja päävärinen yläviiva jokaisella sivulla; viimeistelty johtajien, konsulttien tai startup-yritysten ansioluetteloihin."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Yksipalstainen; viimeistelty ja asiallinen kokeneille tai yritystason tehtäviin hakeville."
@@ -2809,6 +2982,10 @@ msgstr "Tilastot"
msgid "Stay"
msgstr "Pysy"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Vahvuudet"
@@ -2903,6 +3080,14 @@ msgstr "Tekstiväri"
msgid "Thai"
msgstr "thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Tekoäly ehdotti muutosta, joka ei enää koske tätä ansioluetteloa."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Tekoäly palautti ehdotuksen, jota ei voitu esikatsella."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API-avain on poistettu onnistuneesti."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API-avain ei voi enää käyttää tietojasi poistamisen jälkeen. Tätä toimintoa ei voi perua."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Avustaja pysähtyi ennen kuin palasi ehdotukseen."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Tämä on URL-ystävällinen nimi ansioluettelollesi."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Tämä voi kestää muutaman minuutin riippuen tekoälypalveluntarjoajan vasteesta. Älä sulje ikkunaa tai päivitä sivua."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Tämä ehdotus on vanhentunut. Pyydä avustajaa luomaan se uudelleen uusimmasta ansioluettelosta."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Tämä ansioluettelo on lukittu eikä sitä voi päivittää."
@@ -3034,6 +3228,10 @@ msgstr "Poistaaksesi tilisi sinun täytyy syöttää vahvistusteksti ja napsautt
msgid "Toggle left sidebar"
msgstr "Vaihda vasen sivupalkki"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Sivupinoamisen päälle/pois päältä"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ukraina"
msgid "Underline"
msgstr "Alleviivaus"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Kumoa (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Rajoittamattomasti ansioluetteloita"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Kyllä, Reactive Resume on saatavilla useilla kielillä. Voit valita haluamasi kielen asetussivulla tai oikean yläkulman kielivalitsimesta. Jos et näe omaa kieltäsi tai haluat parantaa olemassa olevia käännöksiä, voit <0>osallistua käännöksiin Crowdinessa<1> (avautuu uuteen välilehteen)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Kyllä! Jokainen mallipohja on täysin muokattavissa. Voit vaihtaa värejä, fontteja, välistystä ja jopa kirjoittaa oman CSS:n täydellistä hallintaa varten ansioluettelosi ulkoasuun."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Kyllä! Reactive Resume on täysin ilmainen käyttää – ei piilokuluja, premium-tasoja tai tilausmaksuja. Se on avoimen lähdekoodin ja pysyy aina ilmaisena."
@@ -3440,7 +3629,7 @@ msgstr "Tietosi tallennetaan paikallisesti"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Tietosi tallennetaan turvallisesti eikä niitä koskaan jaeta kolmansille osapuolille. Voit myös itseisännöidä Reactive Resumen omilla palvelimillasi täydellisen tietokontrollin takaamiseksi."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Viimeisimpiä muutoksiasi ei voitu tallentaa."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# élément} other {# éléments}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# poste} other {# postes}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} propositions examinées"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Absolument ! Vous pouvez exporter votre CV au format PDF en un seul clic. Le PDF exporté conserve parfaitement toutes vos mises en forme et votre style."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Accepter"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accepter tout"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Proposition acceptée"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Accédez à vos CVs et données par programme en utilisant l'API."
@@ -229,10 +246,38 @@ msgstr "Ajouter une ligne avant"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Après"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Intégration de l'IA désactivée"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Proposition d'IA appliquée."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Proposition d'IA rejetée."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Propositions d'IA appliquées."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Les propositions concernant l'IA ont été rejetées."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Assistant CV IA"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanais"
@@ -367,10 +412,22 @@ msgstr "Domaine d'étude"
msgid "Artificial Intelligence"
msgstr "Intelligence artificielle"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Demandez une modification ciblée de votre CV..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Demandez un changement progressif"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Format d'image"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "La requête d'assistance a échoué"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Infos de base"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Vous avez le choix parmi de magnifiques modèles, et d'autres sont en cours d'élaboration."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Avant"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -462,10 +523,6 @@ msgstr "Liste à puces"
msgid "By the community, for the community."
msgstr "Par la communauté, pour la communauté."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Puis-je personnaliser les modèles ?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Puis-je exporter mon CV au format PDF ?"
@@ -576,6 +633,14 @@ msgstr "Clair"
msgid "Click here to select a file to import"
msgstr "Cliquez ici pour sélectionner un fichier à importer"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Fermer"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Assistant IA proche"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Bloc de code"
@@ -622,6 +687,10 @@ msgstr "Confirmer"
msgid "Connect"
msgstr "Se connecter"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Connectez-vous avec un fournisseur d'IA et vérifiez-le avant d'utiliser ses propositions de modification de CV."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Copiez cette clé secrète et utilisez-la dans vos applications pour acc
msgid "Copy URL"
msgstr "Copier l'URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Impossible d'appliquer la proposition relative à l'IA."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Déconnecter"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Rejeter"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Documentation"
msgid "Don't have an account? <0/>"
msgstr "Vous n'avez pas de compte ? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Faire un don"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Faire un don à Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Activer 2FA"
msgid "Enable AI Features"
msgstr "Activer les fonctionnalités IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Activer l'intégration de l'IA"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Activer l'authentification à deux facteurs"
@@ -1162,6 +1247,10 @@ msgstr "Tout ce qui est entré ici est stocké localement dans votre navigateur.
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Tout ce dont vous avez besoin pour créer, personnaliser et partager des CV professionnels. Construit dans le respect de la vie privée, propulsé par l'open source, et entièrement gratuit pour toujours."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Exemples : réécrire le résumé, raccourcir un point concernant une expérience, ajouter des indicateurs ou adapter le CV à une description de poste."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Quitter le mode plein écran"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Vous avez oublié votre mot de passe ?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Gratuit"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Forme libre"
#: src/libs/locale.ts
msgid "French"
msgstr "Français"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modèle"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Autres propositions"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Déplacer vers"
@@ -1978,6 +2075,10 @@ msgstr "Doit commencer par https://"
msgid "Name"
msgstr "Nom"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Nécessite une révision"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Népalais"
@@ -2008,6 +2109,10 @@ msgstr "Nouveau mot de passe"
msgid "New Section"
msgstr "Nouvelle section"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Suivant"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Pas de publicité, pas de suivi"
@@ -2057,11 +2162,19 @@ msgstr "Maintenance en cours"
msgid "Open"
msgstr "Ouvrir"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Assistant Open AI"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Ouvrir le client de messagerie"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Intégrations ouvertes"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Ouvrez Integrations Settings"
@@ -2215,6 +2328,10 @@ msgstr "Veuillez saisir le mot de passe qui vous a été communiqué par le prop
msgid "Please enter the URL you want to link to:"
msgstr "Veuillez saisir l'URL vers laquelle vous souhaitez rediriger :"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Veuillez soutenir le projet"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Poste"
msgid "Preferences"
msgstr "Préférences"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Préparation des changements"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Préréglages"
@@ -2263,6 +2384,10 @@ msgstr "Appuyez sur <0>{RETURN_KEY}</0> ou sur <1>{COMMA_KEY}</1> pour ajouter o
msgid "Press <0>Enter</0> to open"
msgstr "Appuyez sur <0>Entrée</0> pour ouvrir"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Précédent"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Couleur principale"
@@ -2293,6 +2418,11 @@ msgstr "Barre de progression"
msgid "Projects"
msgstr "Projets"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposition {0} de {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Protégez votre CV contre tout accès non autorisé à l'aide d'un mot de passe"
@@ -2315,6 +2445,10 @@ msgstr "Publications"
msgid "Publisher"
msgstr "Éditeur"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Patch JSON brut"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Aller à la page d'accueil"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume est un projet libre et gratuit, construit avec amour et
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume est un outil de création de CV gratuit et open-source qui simplifie le processus de création, de mise à jour et de partage de votre CV."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume est un logiciel libre et gratuit. S'il vous a été utile, n'hésitez pas à faire un don."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume est un logiciel libre, respectueux de la vie privée et entièrement gratuit. Contrairement à d'autres outils de création de CV, il n'affiche pas de publicité, ne suit pas vos données et ne limite pas vos fonctionnalités derrière un mur payant."
@@ -2362,11 +2500,6 @@ msgstr "Rectangle"
msgid "Rectangle (Full Width)"
msgstr "Rectangle (pleine largeur)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Rétablir (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Actualiser"
msgid "Register New Device"
msgstr "Enregistrer un nouveau dispositif"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Rejeter"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Tout refuser"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Proposition rejetée"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Vous vous souvenez de votre mot de passe ? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Renvoi de l'e-mail de vérification..."
msgid "Reset"
msgstr "Réinitialiser"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Réinitialiser le chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Réinitialisez votre mot de passe"
msgid "Resetting your password..."
msgstr "Réinitialisation de votre mot de passe..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Assistant IA de redimensionnement"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Ressources"
@@ -2464,6 +2617,14 @@ msgstr "L'analyse du curriculum vitae est terminée."
msgid "Resumes"
msgstr "CVs"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Examen requis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Propositions examinées"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Alignement à droite"
@@ -2562,6 +2723,10 @@ msgstr "Sélectionner..."
msgid "Self-Host with Docker"
msgstr "Auto-hébergement avec Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Envoyer"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Envoyer un e-mail de réinitialisation du mot de passe"
msgid "Sending password reset email..."
msgstr "Envoi de l'e-mail de réinitialisation du mot de passe..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Envoi de la requête"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Séparateur"
@@ -2709,6 +2878,10 @@ msgstr "Une seule colonne avec un encart et une disposition en grille propre ; p
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Colonne unique avec un en-tête d'entrée en ligne sur trois colonnes (poste - organisation - point) ; compact et adapté aux ATS, bien adapté aux conventions asiatiques en matière de curriculum vitae (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Une seule colonne avec des titres de section en majuscules et une ligne supérieure de couleur primaire sur chaque page ; une présentation soignée pour les CV de cadres, de consultants ou de startups."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Colonne unique ; soigné et sérieux pour les postes de seniors ou de direction."
@@ -2809,6 +2982,10 @@ msgstr "Statistiques"
msgid "Stay"
msgstr "Rester"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Arrêt"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Points forts"
@@ -2903,6 +3080,14 @@ msgstr "Couleur du texte"
msgid "Thai"
msgstr "Thaïlandais"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "L'IA a proposé une modification qui ne s'applique plus à ce CV."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "L'IA a renvoyé une proposition qui n'a pas pu être prévisualisée."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "La clé API a été supprimée avec succès."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "La clé API ne pourra plus accéder à vos données après la suppression. Cette action ne peut pas être annulée."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "L'assistant s'est arrêté avant de renvoyer une proposition."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Il s'agit d'un nom convivial pour l'URL de votre CV."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Cela peut prendre quelques minutes, en fonction de la réponse du fournisseur d'IA. Ne fermez pas la fenêtre et n'actualisez pas la page."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Cette proposition est obsolète. Demandez à l'assistant de la régénérer à partir du CV le plus récent."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Ce CV est verrouillé et ne peut pas être modifié."
@@ -3034,6 +3228,10 @@ msgstr "Pour supprimer votre compte, vous devez saisir le texte de confirmation
msgid "Toggle left sidebar"
msgstr "Barre latérale gauche"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Basculer l'empilement des pages"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainien"
msgid "Underline"
msgstr "Souligner"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Annuler (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "CVs illimités"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Oui, Reactive Resume est disponible en plusieurs langues. Vous pouvez choisir votre langue préférée dans la page des paramètres, ou en utilisant le sélecteur de langue dans le coin supérieur droit. Si vous ne voyez pas votre langue, ou si vous souhaitez améliorer les traductions existantes, vous pouvez <0>contribuer aux traductions sur Crowdin<1> (s'ouvre dans un nouvel onglet)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Oui ! Chaque modèle est entièrement personnalisable. Vous pouvez modifier les couleurs, les polices, l'espacement et même écrire des feuilles de style CSS personnalisées pour un contrôle total de l'apparence de votre CV."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Oui ! Reactive Resume est entièrement gratuit, sans frais cachés, ni droits d'entrée, ni frais d'abonnement. Il est open-source et restera toujours gratuit."
@@ -3440,7 +3629,7 @@ msgstr "Vos données sont stockées localement"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Vos données sont stockées en toute sécurité et ne sont jamais partagées avec des tiers. Vous pouvez également héberger Reactive Resume sur vos propres serveurs pour un contrôle total de vos données."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Vos dernières modifications n'ont pas pu être enregistrées."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: he\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# פריט} two {# פריטים} many {# פריטים}
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# תפקיד} other {# תפקידים}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} הצעות שנבדקו"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "בהחלט! אפשר לייצא את קורות החיים שלך ל־PDF בלחיצה אחת. קובץ ה־PDF המיוצא שומר בצורה מושלמת על כל העיצוב והסגנון שלך."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "לְקַבֵּל"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "קבלו את הכל"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "הצעה שהתקבלה"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "גש לקורות החיים ולנתונים שלך באופן תכנותי באמצעות ה־API."
@@ -229,10 +246,38 @@ msgstr "הוספת שורה לפני"
msgid "Afrikaans"
msgstr "אפריקאנס"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "לְאַחַר"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "בינה מלאכותית"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "שילוב בינה מלאכותית מושבת"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "הצעת בינה מלאכותית יושמה."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "הצעת בינה מלאכותית נדחתה."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "הצעות בינה מלאכותית יושמו."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "הצעות בתחום הבינה המלאכותית נדחו."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "עוזר קורות חיים של בינה מלאכותית"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "אלבנית"
@@ -367,10 +412,22 @@ msgstr "תחום לימודים"
msgid "Artificial Intelligence"
msgstr "בינה מלאכותית"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "בקשו שינוי ממוקד בקורות חיים..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "בקשו שינוי הדרגתי"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "יחס גובה־רוחב"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "בקשת העוזר נכשלה"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "פרטים בסיסיים"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "תבניות יפות לבחירה, ועוד תבניות בדרך."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "לִפנֵי"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "בנגלית"
@@ -462,10 +523,6 @@ msgstr "רשימת תבליטים"
msgid "By the community, for the community."
msgstr "על ידי הקהילה ועבורה."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "האם אפשר להתאים אישית את התבניות?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "האם אפשר לייצא את קורות החיים שלי ל־PDF?"
@@ -576,6 +633,14 @@ msgstr "נקה"
msgid "Click here to select a file to import"
msgstr "לחץ כאן כדי לבחור קובץ לייבוא"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "סגור"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "סגור את עוזר הבינה המלאכותית"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "בלוק קוד"
@@ -622,6 +687,10 @@ msgstr "אישור"
msgid "Connect"
msgstr "חיבור"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "התחברו ואמתו ספק בינה מלאכותית לפני השימוש בהצעות עריכת קורות חיים."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "העתק את המפתח הסודי הזה והשתמש בו ביישו
msgid "Copy URL"
msgstr "העתקת כתובת"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "לא ניתן היה ליישם את הצעת הבינה המלאכותית."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "ניתוק"
msgid "Discord"
msgstr "דיסקורד"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "לְפַטֵר"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "תיעוד"
msgid "Don't have an account? <0/>"
msgstr "אין לך חשבון? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "לִתְרוֹם"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "תרומה ל־Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "הפעלת אימות דו־שלבי"
msgid "Enable AI Features"
msgstr "הפעלת יכולות בינה מלאכותית"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "הפעלת שילוב בינה מלאכותית"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "הפעלת אימות דו־שלבי"
@@ -1162,6 +1247,10 @@ msgstr "הכול שאתה מזין כאן נשמר מקומית בדפדפן ש
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "כל מה שצריך כדי ליצור, להתאים אישית ולשתף קורות חיים מקצועיים. נבנה עם דגש על פרטיות, מונע בקוד פתוח וחינמי לחלוטין לנצח."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "דוגמאות: כתיבה מחדש של הסיכום, צמצום תבליט ניסיון אחד, הוספת מדדים או התאמת קורות החיים לתיאור תפקיד."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "יציאה ממסך מלא"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "שכחת את הסיסמה שלך?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "תבנית"
@@ -1397,6 +1486,10 @@ msgstr "תבנית"
msgid "Free"
msgstr "חינמי"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "צורה חופשית"
#: src/libs/locale.ts
msgid "French"
msgstr "צרפתית"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "מודל"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "פעולות נוספות של ההצעה"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "העברה אל"
@@ -1978,6 +2075,10 @@ msgstr "יש להתחיל ב-https://"
msgid "Name"
msgstr "שם"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "צריך בדיקה"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "נפאלית"
@@ -2008,6 +2109,10 @@ msgstr "סיסמה חדשה"
msgid "New Section"
msgstr "סעיף חדש"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "הבא"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "בלי פרסום, בלי מעקב"
@@ -2057,11 +2162,19 @@ msgstr "תחזוקה מתמשכת"
msgid "Open"
msgstr "פתיחה"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "פתח את עוזר הבינה המלאכותית"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "פתיחת תוכנת הדוא\"ל"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "אינטגרציות פתוחות"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "פתח את הגדרות האינטגרציות"
@@ -2215,6 +2328,10 @@ msgstr "נא להזין את הסיסמה ששיתף איתך בעל קורות
msgid "Please enter the URL you want to link to:"
msgstr "נא להזין את כתובת ה־URL שאליה ברצונך לקשר:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "אנא תמכו בפרויקט"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "תפקיד"
msgid "Preferences"
msgstr "העדפות"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "הכנת שינויים"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "הגדרות קבועות מראש"
@@ -2263,6 +2384,10 @@ msgstr "לחץ על <0>{RETURN_KEY}</0> או <1>{COMMA_KEY}</1> כדי להוס
msgid "Press <0>Enter</0> to open"
msgstr "לחץ על <0>Enter</0> כדי לפתוח"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "קודם"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "צבע עיקרי"
@@ -2293,6 +2418,11 @@ msgstr "פס התקדמות"
msgid "Projects"
msgstr "פרויקטים"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "הצעה {0} של {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "הגן על קורות החיים שלך מגישה לא מורשית באמצעות סיסמה"
@@ -2315,6 +2445,10 @@ msgstr "פרסומים"
msgid "Publisher"
msgstr "מוציא לאור"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "תיקון JSON גולמי"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - מעבר לדף הבית"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume הוא מיזם חינמי בקוד פתוח, שנבנה
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume הוא בונה קורות חיים חינמי בקוד פתוח שמפשט את תהליך יצירת, עדכון ושיתוף קורות החיים שלך."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "ריאקטיבי קורות חיים הם חינמיים ובקוד פתוח. אם זה עזר לך, אנא שקול לתרום."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume הוא בקוד פתוח, ממוקד פרטיות וחינמי לחלוטין. בניגוד לבוני קורות חיים אחרים, הוא לא מציג פרסומות, לא עוקב אחרי הנתונים שלך ולא נועל יכולות מאחורי חומת תשלום."
@@ -2362,11 +2500,6 @@ msgstr "מלבן"
msgid "Rectangle (Full Width)"
msgstr "מלבן (רוחב מלא)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "בצע שוב (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "רענון"
msgid "Register New Device"
msgstr "הרשמת מכשיר חדש"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "לִדחוֹת"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "דחה את הכל"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "הצעה שנדחתה"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "זוכר את הסיסמה? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "שולח מחדש דוא\"ל אימות..."
msgid "Reset"
msgstr "איפוס"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "איפוס צ'אט"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "איפוס הסיסמה שלך"
msgid "Resetting your password..."
msgstr "איפוס הסיסמה שלך..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "שינוי גודל של עוזר בינה מלאכותית"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "משאבים"
@@ -2464,6 +2617,14 @@ msgstr "ניתוח קורות החיים הושלם."
msgid "Resumes"
msgstr "מסמכי קורות חיים"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "נדרשת בדיקה"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "הצעות שנבדקו"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "יישור לימין"
@@ -2562,6 +2723,10 @@ msgstr "בחר..."
msgid "Self-Host with Docker"
msgstr "אירוח עצמי עם Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "לִשְׁלוֹחַ"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "שליחת דוא\"ל לאיפוס סיסמה"
msgid "Sending password reset email..."
msgstr "שולח דוא\"ל לאיפוס סיסמה..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "שולח בקשה"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "מפריד"
@@ -2709,6 +2878,10 @@ msgstr "עמודה אחת עם סרגל צד וגריד נקי; רב־שימוש
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "עמודה אחת עם כותרת כניסה משולבת בת שלוש עמודות (תפקיד · ארגון · תקופה); קומפקטי ומתאים לשיטת ATS, מתאים היטב למנהגי כתיבת קורות חיים באסיה (סין/יפן/קוריאה)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "עמודה אחת עם כותרות באותיות גדולות וקו עליון בצבע ראשי בכל עמוד; מלוטש לקורות חיים של מנהלים, ייעוץ או סטארט-אפים."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "עמודה אחת; מלוטש ורציני לתפקידים בכירים או ברמת ארגון."
@@ -2809,6 +2982,10 @@ msgstr "סטטיסטיקה"
msgid "Stay"
msgstr "הישאר"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "לְהַפְסִיק"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "נקודות חוזק"
@@ -2903,6 +3080,14 @@ msgstr "צבע כתב"
msgid "Thai"
msgstr "תאית"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "הבינה המלאכותית הציעה שינוי שכבר אינו חל על קורות חיים אלה."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "הבינה המלאכותית החזירה הצעה שלא ניתן היה לצפות בה בתצוגה מקדימה."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "מפתח ה־API נמחק בהצלחה."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "לאחר המחיקה מפתח ה־API לא יוכל יותר לגשת לנתונים שלך. לא ניתן לבטל פעולה זו."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "העוזר עצר לפני שהחזיר הצעה."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "זהו שם ידידותי לכתובת URL עבור קורות החיי
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "זה עלול לקחת כמה דקות, בהתאם לזמן התגובה של ספק הבינה המלאכותית. נא לא לסגור את החלון או לרענן את העמוד."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "הצעה זו מיושנת. בקש מהעוזר ליצור אותה מחדש מהקורות חיים האחרונים."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "קורות חיים אלה נעולים ולא ניתן לעדכן אותם."
@@ -3034,6 +3228,10 @@ msgstr "כדי למחוק את החשבון שלך, עליך להזין את ט
msgid "Toggle left sidebar"
msgstr "הפעל/כבה את הסרגל הצדדי השמאלי"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "הפעל/הפעל ערימת עמודים"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "אוקראינית"
msgid "Underline"
msgstr "קו תחתון"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "בטל (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "מסמכי קורות חיים ללא הגבלה"
@@ -3387,10 +3580,6 @@ msgstr "איקס (טוויטר)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "כן, Reactive Resume זמין במספר שפות. אפשר לבחור את השפה המועדפת עליך בעמוד ההגדרות או באמצעות מחליף השפה בפינה העליונה הימנית. אם אינך רואה את השפה שלך, או אם ברצונך לשפר את התרגומים הקיימים, אפשר <0>לתמוך בתרגומים ב־Crowdin<1> (נפתח בלשונית חדשה)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "כן! כל תבנית ניתנת להתאמה מלאה. אפשר לשנות צבעים, גופנים, ריווח, ואפילו לכתוב CSS מותאם אישית לשליטה מלאה במראה של קורות החיים שלך."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "כן! Reactive Resume חינמי לחלוטין לשימוש, בלי עלויות נסתרות, מדרגות פרימיום או דמי מנוי. הוא בקוד פתוח ותמיד יישאר חינמי."
@@ -3440,7 +3629,7 @@ msgstr "הנתונים שלך מאוחסנים באופן מקומי"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "הנתונים שלך מאוחסנים בצורה מאובטחת ולעולם אינם משותפים עם צדדים שלישיים. אפשר גם לארח את Reactive Resume בשרתים שלך כדי לשלוט לחלוטין בנתונים שלך."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "לא ניתן היה לשמור את השינויים האחרונים שלך."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: hi\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# आइटम} other {# आइटम}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# भूमिका} other {# भूमिकाएं}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} प्रस्तावों की समीक्षा की गई"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "ए4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "बिल्कुल! आप एक ही क्लिक में अपने रेज़्यूमे को PDF में एक्सपोर्ट कर सकते हैं। एक्सपोर्ट किया गया PDF आपके सभी फ़ॉर्मेटिंग और स्टाइलिंग को बिल्कुल सही बनाए रखता है।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "स्वीकार करना"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "सभी स्वीकृत"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "प्रस्ताव स्वीकृत"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API का उपयोग करके अपने रेज़्यूमे और डेटा तक प्रोग्रामेटिक रूप से पहुँच प्राप्त करें।"
@@ -229,10 +246,38 @@ msgstr "इसके पहले पंक्ति जोड़ें"
msgid "Afrikaans"
msgstr "अफ्रीकान्स"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "बाद"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "एआई एकीकरण अक्षम"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "एआई प्रस्ताव लागू किया गया।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "एआई का प्रस्ताव खारिज कर दिया गया।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "एआई संबंधी प्रस्ताव लागू किए गए।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "एआई से संबंधित प्रस्ताव खारिज कर दिए गए।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "एआई रिज्यूमे असिस्टेंट"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "अल्बानियाई"
@@ -367,10 +412,22 @@ msgstr "अध्ययन का क्षेत्र"
msgid "Artificial Intelligence"
msgstr "कृत्रिम बुद्धिमत्ता"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "अपने रिज्यूमे में लक्षित बदलाव करने का अनुरोध करें..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "क्रमिक परिवर्तन की मांग करें"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "आकार अनुपात"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "सहायक का अनुरोध विफल रहा"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "बुनियादी"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "सुंदर खाके जिनमें से चुन सकते हैं, और भी रास्ते में हैं।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "पहले"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "बंगाली"
@@ -462,10 +523,6 @@ msgstr "बुलेट सूची"
msgid "By the community, for the community."
msgstr "समुदाय द्वारा, समुदाय के लिए।"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "क्या मैं खाकों को अनुकूलित कर सकता/सकती हूँ?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "क्या मैं अपना रेज़्यूमे PDF में एक्सपोर्ट कर सकता/सकती हूँ?"
@@ -576,6 +633,14 @@ msgstr "स्पष्ट"
msgid "Click here to select a file to import"
msgstr "इम्पोर्ट करने के लिए फ़ाइल चुनने हेतु यहाँ क्लिक करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "बंद करें"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "एआई सहायक को बंद करें"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "कोड ब्लॉक"
@@ -622,6 +687,10 @@ msgstr "पुष्टि करें"
msgid "Connect"
msgstr "कनेक्ट करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "रिज्यूम एडिटिंग के प्रस्तावों का उपयोग करने से पहले किसी एआई प्रदाता से संपर्क करें और उसकी पुष्टि करें।"
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "इस सीक्रेट कुंजी को कॉपी कर
msgid "Copy URL"
msgstr "URL कॉपी करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "एआई प्रस्ताव लागू नहीं हो सका।"
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "डिसकनेक्ट करें"
msgid "Discord"
msgstr "डिस्कॉर्ड"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "नकार देना"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "आलेख"
msgid "Don't have an account? <0/>"
msgstr "खाता नहीं है? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "दान करें"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "रिएक्टिव रेज़्यूमे के लिए दान करें"
@@ -1094,6 +1175,10 @@ msgstr "2FA चालू करें"
msgid "Enable AI Features"
msgstr "AI सुविधाएँ सक्षम करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "एआई एकीकरण को सक्षम करें"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "दो कारक प्रमाणीकरण सक्रिय करें"
@@ -1162,6 +1247,10 @@ msgstr "यहाँ दर्ज की गई हर चीज़ आपके
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "पेशेवर रेज़्यूमे बनाने, अनुकूलित करने और साझा करने के लिए आपको जो कुछ भी चाहिए। गोपनीयता को ध्यान में रखकर बनाया गया, ओपन‑सोर्स द्वारा संचालित और हमेशा के लिए पूरी तरह मुफ़्त।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "उदाहरण: सारांश को दोबारा लिखें, अनुभव से संबंधित किसी एक बिंदु को संक्षिप्त करें, मापदंड जोड़ें, या नौकरी के विवरण के अनुसार रिज्यूमे को अनुकूलित करें।"
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "पूर्ण स्क्रीन से बाहर निकलें"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "पासवर्ड भूल गए हैं?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "फॉर्मेट"
@@ -1397,6 +1486,10 @@ msgstr "फॉर्मेट"
msgid "Free"
msgstr "मुफ़्त"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "मुफ्त फॉर्म"
#: src/libs/locale.ts
msgid "French"
msgstr "फ़्रेंच"
@@ -1952,6 +2045,10 @@ msgstr "माइक्रोसॉफ्ट वर्ड"
msgid "Model"
msgstr "मॉडल"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "अधिक प्रस्ताव कार्रवाइयां"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "स्थानांतरित करें"
@@ -1978,6 +2075,10 @@ msgstr "https:// से शुरू करना अनिवार्य ह
msgid "Name"
msgstr "नाम"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "समीक्षा की आवश्यकता है"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "नेपाली"
@@ -2008,6 +2109,10 @@ msgstr "नया पासवर्ड"
msgid "New Section"
msgstr "नया अनुभाग"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "अगला"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "कोई विज्ञापन नहीं, कोई ट्रैकिंग नहीं"
@@ -2057,11 +2162,19 @@ msgstr "निरंतर रखरखाव"
msgid "Open"
msgstr "खोलें"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "ओपन एआई सहायक"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "ईमेल क्लाइंट खोलें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ओपन इंटीग्रेशन"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "एकीकरण सेटिंग्स खोलें"
@@ -2215,6 +2328,10 @@ msgstr "आगे बढ़ने के लिए कृपया रेज़
msgid "Please enter the URL you want to link to:"
msgstr "कृपया वह URL दर्ज करें जिससे आप लिंक करना चाहते हैं:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "कृपया इस परियोजना का समर्थन करें।"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "पद"
msgid "Preferences"
msgstr "प्राथमिकताएँ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "बदलाव की तैयारी"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "पूर्वनिर्धारित सेटिंग्स"
@@ -2263,6 +2384,10 @@ msgstr "वर्तमान कीवर्ड जोड़ने या स
msgid "Press <0>Enter</0> to open"
msgstr "खोलने के लिए <0>Enter</0> दबाएँ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "पिछला"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "प्राथमिक रंग"
@@ -2293,6 +2418,11 @@ msgstr "प्रगति पट्टी"
msgid "Projects"
msgstr "प्रोजेक्ट्स"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "प्रस्ताव {0} का {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "अपने रेज़्यूमे को पासवर्ड से अनधिकृत एक्सेस से सुरक्षित रखें"
@@ -2315,6 +2445,10 @@ msgstr "प्रकाशन"
msgid "Publisher"
msgstr "प्रकाशक"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "रॉ JSON पैच"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - होमपेज पर जाएँ"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume एक मुफ़्त और ओपन‑सोर
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume एक मुफ़्त और ओपन‑सोर्स रेज़्यूमे बिल्डर है जो आपके रेज़्यूमे को बनाने, अपडेट करने और साझा करने की प्रक्रिया को सरल बनाता है।"
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "रिएक्टिव रिज्यूम मुफ़्त और ओपन सोर्स है। अगर इससे आपको मदद मिली है, तो कृपया दान करने पर विचार करें।"
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume ओपन‑सोर्स, गोपनीयता‑केंद्रित और पूरी तरह मुफ़्त है। अन्य रेज़्यूमे बिल्डर के विपरीत, यह विज्ञापन नहीं दिखाता, आपका डेटा ट्रैक नहीं करता और न ही आपकी सुविधाओं को पेवॉल के पीछे सीमित करता है।"
@@ -2362,11 +2500,6 @@ msgstr "आयत"
msgid "Rectangle (Full Width)"
msgstr "आयत (पूर्ण चौड़ाई)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "रीडू (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "रिफ़्रेश"
msgid "Register New Device"
msgstr "नया डिवाइस पंजीकृत करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "अस्वीकार करना"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "सभी को अस्वीकार करें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "प्रस्ताव अस्वीकृत कर दिया गया"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "अपना पासवर्ड याद है? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "सत्यापन ईमेल दोबारा भेजा ज
msgid "Reset"
msgstr "रीसेट"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "चैट रीसेट करें"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "अपना पासवर्ड रीसेट करें"
msgid "Resetting your password..."
msgstr "आपका पासवर्ड रीसेट किया जा रहा है..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "आकार बदलने वाला एआई सहायक"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "संसाधन"
@@ -2464,6 +2617,14 @@ msgstr "रिज़्यूमे विश्लेषण पूरा हो
msgid "Resumes"
msgstr "रेज़्यूमे"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "समीक्षा आवश्यक है"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "समीक्षित प्रस्ताव"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "दाएँ संरेखित करें"
@@ -2562,6 +2723,10 @@ msgstr "चुनें..."
msgid "Self-Host with Docker"
msgstr "डॉकर के साथ स्व‑मेज़बान"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "भेजना"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "पासवर्ड रीसेट ईमेल भेजें"
msgid "Sending password reset email..."
msgstr "पासवर्ड रीसेट ईमेल भेजा जा रहा है..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "भेजने का अनुरोध"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "सेपरेटर"
@@ -2709,6 +2878,10 @@ msgstr "साइडबार और साफ़ ग्रिड लेआउ
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "एकल-स्तंभ, जिसमें इनलाइन तीन-स्तंभ प्रविष्टि शीर्षक (स्थिति · संगठन · अवधि) शामिल है; संक्षिप्त और ATS-अनुकूल, एशियाई रिज्यूमे परंपराओं (CN/JP/KR) के लिए उपयुक्त।"
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "प्रत्येक पृष्ठ पर प्राथमिक रंग की शीर्ष रेखा के साथ बड़े अक्षरों में लिखे गए अनुभाग शीर्षकों वाला एकल-स्तंभ; कार्यकारी, परामर्शदाता या स्टार्टअप के रिज्यूमे के लिए उपयुक्त।"
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "सिंगल‑कॉलम; वरिष्ठ या एंटरप्राइज़‑स्तरीय पदों के लिए परिष्कृत और गंभीर।"
@@ -2809,6 +2982,10 @@ msgstr "आंकड़े"
msgid "Stay"
msgstr "रहें"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "रुकना"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "ताकतें"
@@ -2903,6 +3080,14 @@ msgstr "अक्षरों का रंग"
msgid "Thai"
msgstr "थाई"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "एआई ने एक बदलाव का प्रस्ताव दिया था जो अब इस रिज्यूमे पर लागू नहीं होता है।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "एआई ने एक ऐसा प्रस्ताव प्रस्तुत किया जिसका पूर्वावलोकन नहीं किया जा सका।"
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API कुंजी सफलतापूर्वक हटा दी
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "हटाए जाने के बाद यह API कुंजी अब आपके डेटा तक पहुँच नहीं कर पाएगी। इस कार्रवाई को पूर्ववत नहीं किया जा सकता।"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "प्रस्ताव लौटाने से पहले सहायक रुक गया।"
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "यह आपके रेज़्यूमे के लिए एक
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "इसमें कुछ मिनट लग सकते हैं, यह AI प्रोवाइडर की प्रतिक्रिया पर निर्भर करता है। कृपया विंडो को बंद न करें या पेज रिफ़्रेश न करें।"
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "यह प्रस्ताव पुराना हो चुका है। कृपया सहायक से नवीनतम रिज्यूमे से इसे पुनः तैयार करने का अनुरोध करें।"
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "यह रेज़्यूमे लॉक है और इसे अपडेट नहीं किया जा सकता।"
@@ -3034,6 +3228,10 @@ msgstr "अपना खाता हटाने के लिए, आपको
msgid "Toggle left sidebar"
msgstr "बाएँ साइडबार को टॉगल करें"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "पेज स्टैकिंग को टॉगल करें"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "यूक्रेनी"
msgid "Underline"
msgstr "रेखांकित"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "पूर्ववत करें (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "असीमित रेज़्यूमे"
@@ -3387,10 +3580,6 @@ msgstr "एक्स (ट्विटर)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "हाँ, Reactive Resume कई भाषाओं में उपलब्ध है। आप सेटिंग्स पेज में, या ऊपर दाएँ कोने में भाषा स्विचर का उपयोग करके अपनी पसंदीदा भाषा चुन सकते हैं। यदि आपको अपनी भाषा नहीं दिखती, या आप मौजूदा अनुवादों में सुधार करना चाहते हैं, तो आप <0>Crowdin पर अनुवादों में योगदान दे सकते हैं<1> (नए टैब में खुलता है)</1></0>।"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "हाँ! हर खाका पूरी तरह से कस्टमाइज़ेबल है। आप रंग, फ़ॉन्ट, स्पेसिंग बदल सकते हैं और यहाँ तक कि अपने रेज़्यूमे के लुक पर पूरा नियंत्रण पाने के लिए कस्टम CSS भी लिख सकते हैं।"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "हाँ! Reactive Resume का उपयोग पूरी तरह मुफ़्त है, बिना किसी छिपी हुई लागत, प्रीमियम टियर या सब्सक्रिप्शन फ़ीस के। यह ओपन‑सोर्स है और हमेशा मुफ़्त रहेगा।"
@@ -3440,7 +3629,7 @@ msgstr "आपका डेटा लोकल रूप से संग्र
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "आपका डेटा सुरक्षित रूप से संग्रहीत है और कभी भी थर्ड पार्टियों के साथ साझा नहीं किया जाता। आप अपने सर्वर्स पर Reactive Resume को स्व‑होस्ट भी कर सकते हैं ताकि अपने डेटा पर पूर्ण नियंत्रण रख सकें।"
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "आपके नवीनतम परिवर्तन सहेजे नहीं जा सके।"
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: hu\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# elem} other {# elem}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# szerepkör} other {# szerepkör}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} javaslatok áttekintése"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Természetesen! Egy kattintással PDF‑be exportálhatod az önéletrajzodat. Az exportált PDF tökéletesen megőrzi az összes formázást és stílust."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Elfogadás"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Összes elfogadása"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Elfogadott javaslat"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Férj hozzá az önéletrajzaidhoz és adataidhoz programozottan az API segítségével."
@@ -229,10 +246,38 @@ msgstr "Sor hozzáadása fölé"
msgid "Afrikaans"
msgstr "afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Után"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI-integráció letiltva"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI-javaslat alkalmazva."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "A mesterséges intelligencia javaslatát elutasították."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Alkalmazott mesterséges intelligencia javaslatok."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "A mesterséges intelligencia javaslatait elutasították."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI önéletrajz asszisztens"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "albán"
@@ -367,10 +412,22 @@ msgstr "Tanulmányok területe"
msgid "Artificial Intelligence"
msgstr "Mesterséges intelligencia"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Kérj célzott önéletrajz-módosítást..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Kérjen fokozatos változtatást"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Méretarány"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Asszisztensi kérelem sikertelen"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Alapadatok"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Választható, gyönyörű sablonok, és még több érkezik."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Előtt"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "bangla"
@@ -462,10 +523,6 @@ msgstr "Felsorolásjelezett lista"
msgid "By the community, for the community."
msgstr "A közösség által, a közösségért."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Testreszabhatom a sablonokat?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Exportálhatom az önéletrajzomat PDF‑be?"
@@ -576,6 +633,14 @@ msgstr "Tiszta"
msgid "Click here to select a file to import"
msgstr "Kattints ide az importálandó fájl kiválasztásához"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Bezárás"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Bezárás AI asszisztens"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Kódblokk"
@@ -622,6 +687,10 @@ msgstr "Megerősítés"
msgid "Connect"
msgstr "Csatlakozás"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Csatlakoztasson és ellenőrizzen egy mesterséges intelligencia szolgáltatót az önéletrajz-szerkesztési javaslatok használata előtt."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Másold ki ezt a titkos kulcsot, és használd az alkalmazásaidban az a
msgid "Copy URL"
msgstr "URL másolása"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Nem sikerült alkalmazni a mesterséges intelligencia javaslatát."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Leválasztás"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Elvetés"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentáció"
msgid "Don't have an account? <0/>"
msgstr "Nincs fiókja? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Adományoz"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Adományozzon a Reactive Resume-nak"
@@ -1094,6 +1175,10 @@ msgstr "2FA bekapcsolása"
msgid "Enable AI Features"
msgstr "AI funkciók engedélyezése"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "AI-integráció engedélyezése"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Kétlépcsős hitelesítés engedélyezése"
@@ -1162,6 +1247,10 @@ msgstr "Minden itt megadott adat helyben, a böngésződben kerül tárolásra.
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Minden, amire szükséged van professzionális önéletrajzok létrehozásához, testreszabásához és megosztásához. Adatvédelemre tervezve, nyílt forráskóddal működve és teljesen ingyen, örökre."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Példák: írja át az összefoglalót, szűkítse le a tapasztalati pontot, adjon hozzá mérőszámokat, vagy igazítsa az önéletrajzot egy munkaköri leíráshoz."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Kilépés a teljes képernyőből"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Elfelejtette a jelszavát?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formátum"
@@ -1397,6 +1486,10 @@ msgstr "Formátum"
msgid "Free"
msgstr "Ingyenes"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Szabad formátumú"
#: src/libs/locale.ts
msgid "French"
msgstr "francia"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modell"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "További javaslati műveletek"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Áthelyezés ide"
@@ -1978,6 +2075,10 @@ msgstr "A https:// címmel kell kezdeni."
msgid "Name"
msgstr "Név"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Felülvizsgálatra szorul"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "nepáli"
@@ -2008,6 +2109,10 @@ msgstr "Új jelszó"
msgid "New Section"
msgstr "Új szekció"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Következő"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Nincs reklám, nincs követés"
@@ -2057,11 +2162,19 @@ msgstr "Folyamatos karbantartás"
msgid "Open"
msgstr "Megnyitás"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Nyílt AI asszisztens"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "E‑mail kliens megnyitása"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Nyílt integrációk"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Integrációk beállításainak megnyitása"
@@ -2215,6 +2328,10 @@ msgstr "Kérjük, add meg a neked megosztott, az önéletrajz tulajdonosa által
msgid "Please enter the URL you want to link to:"
msgstr "Kérjük, add meg a csatolni kívánt URL‑t:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Kérjük, támogassa a projektet"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Pozíció"
msgid "Preferences"
msgstr "Beállítások"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Változások előkészítése"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Előbeállítások"
@@ -2263,6 +2384,10 @@ msgstr "Nyomja meg a <0>{RETURN_KEY}</0> vagy a <1>{COMMA_KEY}</1> gombot a jele
msgid "Press <0>Enter</0> to open"
msgstr "Nyomja meg az <0>Entert</0> a megnyitáshoz"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Előző"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Elsődleges szín"
@@ -2293,6 +2418,11 @@ msgstr "Folyamatjelző sáv"
msgid "Projects"
msgstr "Projektek"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "{0} javaslat {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Védd az önéletrajzodat a jogosulatlan hozzáféréstől jelszóval"
@@ -2315,6 +2445,10 @@ msgstr "Publikációk"
msgid "Publisher"
msgstr "Kiadó"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Nyers JSON javítás"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume – Ugrás a kezdőlapra"
@@ -2336,6 +2470,10 @@ msgstr "A Reactive Resume egy ingyenes és nyílt forráskódú projekt, szerete
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "A Reactive Resume ingyenes és nyílt forráskódú önéletrajz készítő, amely leegyszerűsíti az önéletrajz készítésének, frissítésének és megosztásának folyamatát."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "A Reactive Resume ingyenes és nyílt forráskódú. Ha segített, kérjük, fontold meg az adományozást."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "A Reactive Resume nyílt forráskódú, adatvédelem‑központú és teljesen ingyenes. Más önéletrajz‑készítőkkel ellentétben nem jelenít meg hirdetéseket, nem követi az adataidat, és nem zár funkciókat fizetős fal mögé."
@@ -2362,11 +2500,6 @@ msgstr "Téglalap"
msgid "Rectangle (Full Width)"
msgstr "Téglalap (teljes szélesség)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Újra (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Frissítés"
msgid "Register New Device"
msgstr "Új eszköz regisztrálása"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Elutasít"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Összes elutasítása"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Elutasított javaslat"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Emlékszik a jelszavára? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Megerősítő e‑mail újraküldése..."
msgid "Reset"
msgstr "Visszaállítás"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Csevegés visszaállítása"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Jelszó visszaállítása"
msgid "Resetting your password..."
msgstr "Jelszó visszaállítása..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "AI asszisztens átméretezése"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Erőforrások"
@@ -2464,6 +2617,14 @@ msgstr "Az önéletrajzelemzés befejeződött."
msgid "Resumes"
msgstr "Önéletrajzok"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Felülvizsgálat szükséges"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Felülvizsgált javaslatok"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Jobbra igazítás"
@@ -2562,6 +2723,10 @@ msgstr "Kiválasztás..."
msgid "Self-Host with Docker"
msgstr "Önálló hosztolás Dockerrel"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Elküld"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Jelszó‑visszaállító e‑mail küldése"
msgid "Sending password reset email..."
msgstr "Jelszó‑visszaállító e‑mail küldése..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Kérés küldése"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Elválasztó"
@@ -2709,6 +2878,10 @@ msgstr "Egyoszlopos elrendezés oldalsávval és rendezett rácsszerkezettel; so
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Egyoszlopos, sorba illesztett háromoszlopos belépési fejléccel (pozíció - szervezet - pont); kompakt és ATS-barát, jól illeszkedik az ázsiai önéletrajzok konvencióihoz (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Egyhasábos, nagybetűs szakaszcímekkel és minden oldalon alapszínű felső vonallal; kifinomult vezetői, tanácsadói vagy startup önéletrajzokhoz."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Egyoszlopos; kifinomult és komoly, vezetői vagy vállalati szintű pozíciókhoz."
@@ -2809,6 +2982,10 @@ msgstr "Statisztikák"
msgid "Stay"
msgstr "Maradás"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Erősségek"
@@ -2903,6 +3080,14 @@ msgstr "Szövegszín"
msgid "Thai"
msgstr "thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "A mesterséges intelligencia egy olyan módosítást javasolt, amely már nem vonatkozik erre az önéletrajzra."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "A mesterséges intelligencia egy olyan javaslatot adott vissza, amelynek az előnézete nem volt megtekinthető."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "Az API kulcsot sikeresen töröltük."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Az API kulcs törlése után többé nem fér hozzá az adataidhoz. Ez a művelet nem vonható vissza."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Az asszisztens megállt, mielőtt válaszolt volna egy javaslatra."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Ez az önéletrajzod URL‑barát neve."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Ez néhány percet igénybe vehet, az AI szolgáltató válaszidejétől függően. Kérjük, ne zárd be az ablakot, és ne frissítsd az oldalt."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Ez az ajánlat elavult. Kérje meg az asszisztenst, hogy generálja újra a legutóbbi önéletrajzból."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Ez az önéletrajz zárolva van, és nem frissíthető."
@@ -3034,6 +3228,10 @@ msgstr "A fiókod törléséhez add meg a megerősítő szöveget, majd kattints
msgid "Toggle left sidebar"
msgstr "Bal oldalsáv átkapcsolása"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Oldalhalmozás be-/kikapcsolása"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ukrán"
msgid "Underline"
msgstr "Aláhúzás"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Visszavonás (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Korlátlan önéletrajz"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Igen, a Reactive Resume több nyelven is elérhető. A beállítások oldalon választhatod ki a kívánt nyelvet, vagy a jobb felső sarokban található nyelvváltó segítségével. Ha nem látod a saját nyelvedet, vagy szeretnél javítani a meglévő fordításokon, <0>közreműködhetsz a fordításokban a Crowdin‑on<1> (új lapon nyílik meg)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Igen! Minden sablon teljesen testreszabható. Módosíthatod a színeket, betűtípusokat, térközöket, és akár egyéni CSS‑t is írhatsz, hogy teljes mértékben irányítsd az önéletrajzod megjelenését."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Igen! A Reactive Resume teljesen ingyenesen használható, rejtett költségek, prémium szintek vagy előfizetési díjak nélkül. Nyílt forráskódú, és mindig ingyenes marad."
@@ -3440,7 +3629,7 @@ msgstr "Az adataid helyben tárolódnak"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Az adataid biztonságosan tároljuk, és soha nem osztjuk meg harmadik felekkel. A Reactive Resume‑t saját szervereiden is hosztolhatod, hogy teljes kontrollod legyen az adataid felett."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "A legutóbbi módosításokat nem sikerült menteni."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: id\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, other {# item}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# peran} other {# peran}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} proposal ditinjau"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Tentu saja! Anda dapat mengekspor resume Anda ke PDF hanya dengan satu klik. PDF yang diekspor mempertahankan semua pemformatan dan gaya Anda dengan sempurna."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Menerima"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Terima semua"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Proposal diterima"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Akses resume dan data Anda secara terprogram menggunakan API."
@@ -229,10 +246,38 @@ msgstr "Tambah Baris Sebelum"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Setelah"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "Kecerdasan Buatan"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Integrasi AI dinonaktifkan"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Proposal AI telah diterapkan."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Proposal AI ditolak."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Proposal AI diterapkan."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Proposal AI ditolak."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Asisten Resume AI"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albania"
@@ -367,10 +412,22 @@ msgstr "Bidang Studi"
msgid "Artificial Intelligence"
msgstr "Kecerdasan Buatan"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Minta perubahan resume yang spesifik..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Mintalah perubahan bertahap."
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Rasio Aspek"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Permintaan asisten gagal."
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Dasar"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Template indah untuk dipilih, dengan lebih banyak lagi yang akan datang."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Sebelum"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -462,10 +523,6 @@ msgstr "Daftar Poin"
msgid "By the community, for the community."
msgstr "Oleh komunitas, untuk komunitas."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Bisakah saya menyesuaikan template?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Bisakah saya mengekspor resume saya ke PDF?"
@@ -576,6 +633,14 @@ msgstr "Jelas"
msgid "Click here to select a file to import"
msgstr "Klik di sini untuk memilih file yang akan diimpor"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Tutup"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Tutup asisten AI"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Blok Kode"
@@ -622,6 +687,10 @@ msgstr "Konfirmasi"
msgid "Connect"
msgstr "Hubungkan"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Hubungi dan verifikasi penyedia AI sebelum menggunakan proposal pengeditan resume."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Salin kunci rahasia ini dan gunakan di aplikasi Anda untuk mengakses dat
msgid "Copy URL"
msgstr "Salin URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Proposal AI tidak dapat diterapkan."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Putuskan"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Membubarkan"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentasi"
msgid "Don't have an account? <0/>"
msgstr "Belum punya akun? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Menyumbangkan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Donasi ke Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Aktifkan 2FA"
msgid "Enable AI Features"
msgstr "Aktifkan Fitur AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Aktifkan integrasi AI"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Aktifkan Autentikasi Dua Faktor"
@@ -1162,6 +1247,10 @@ msgstr "Semua yang dimasukkan di sini disimpan secara lokal di browser Anda. Dat
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Segala yang Anda butuhkan untuk membuat, menyesuaikan, dan membagikan resume profesional. Dibangun dengan mengutamakan privasi, didukung oleh sumber terbuka, dan sepenuhnya gratis selamanya."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Contoh: tulis ulang ringkasan, ringkas salah satu poin pengalaman, tambahkan metrik, atau sesuaikan resume dengan deskripsi pekerjaan."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Keluar dari Layar Penuh"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Lupa kata sandi Anda?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Format"
@@ -1397,6 +1486,10 @@ msgstr "Format"
msgid "Free"
msgstr "Gratis"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Bentuk bebas"
#: src/libs/locale.ts
msgid "French"
msgstr "Prancis"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Model"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Tindakan proposal lainnya"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Pindahkan ke"
@@ -1978,6 +2075,10 @@ msgstr "Harus dimulai dengan https://"
msgid "Name"
msgstr "Nama"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Perlu ditinjau ulang"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepali"
@@ -2008,6 +2109,10 @@ msgstr "Kata Sandi Baru"
msgid "New Section"
msgstr "Bagian Baru"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Berikutnya"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Tanpa Iklan, Tanpa Pelacakan"
@@ -2057,11 +2162,19 @@ msgstr "Pemeliharaan Berkelanjutan"
msgid "Open"
msgstr "Buka"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Asisten AI terbuka"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Buka Klien Email"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Integrasi Terbuka"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Buka Pengaturan Integrasi"
@@ -2215,6 +2328,10 @@ msgstr "Silakan masukkan kata sandi yang dibagikan kepada Anda oleh pemilik resu
msgid "Please enter the URL you want to link to:"
msgstr "Silakan masukkan URL yang ingin Anda tautkan:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Mohon dukung proyek ini."
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Posisi"
msgid "Preferences"
msgstr "Preferensi"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Mempersiapkan perubahan"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Preset"
@@ -2263,6 +2384,10 @@ msgstr "Tekan <0>{RETURN_KEY}</0> atau <1>{COMMA_KEY}</1> untuk menambah atau me
msgid "Press <0>Enter</0> to open"
msgstr "Tekan <0>Enter</0> untuk membuka"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Sebelumnya"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Warna Utama"
@@ -2293,6 +2418,11 @@ msgstr "Bilah Progres"
msgid "Projects"
msgstr "Proyek"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposal {0} dari {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Lindungi resume Anda dari akses tidak sah dengan kata sandi"
@@ -2315,6 +2445,10 @@ msgstr "Publikasi"
msgid "Publisher"
msgstr "Penerbit"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Patch JSON mentah"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Pergi ke beranda"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume adalah proyek gratis dan sumber terbuka, dibuat dengan c
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume adalah pembuat resume gratis dan sumber terbuka yang menyederhanakan proses membuat, memperbarui, dan membagikan resume Anda."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume gratis dan bersifat open source. Jika aplikasi ini bermanfaat bagi Anda, mohon pertimbangkan untuk berdonasi."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume bersifat sumber terbuka, berfokus pada privasi, dan sepenuhnya gratis. Tidak seperti pembuat resume lainnya, aplikasi ini tidak menampilkan iklan, melacak data Anda, atau membatasi fitur di balik paywall."
@@ -2362,11 +2500,6 @@ msgstr "Persegi Panjang"
msgid "Rectangle (Full Width)"
msgstr "Persegi Panjang (Lebar Penuh)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Ulangi (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Muat Ulang"
msgid "Register New Device"
msgstr "Daftarkan Perangkat Baru"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Menolak"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Tolak semuanya"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Proposal ditolak"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Ingat kata sandi Anda? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Mengirim ulang email verifikasi..."
msgid "Reset"
msgstr "Atur Ulang"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Atur ulang obrolan"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Atur ulang kata sandi Anda"
msgid "Resetting your password..."
msgstr "Mengatur ulang kata sandi Anda..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Asisten AI pengubah ukuran"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Sumber Daya"
@@ -2464,6 +2617,14 @@ msgstr "Lanjutkan analisis hingga selesai."
msgid "Resumes"
msgstr "Resume"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Diperlukan peninjauan."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Proposal yang ditinjau"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Rata Kanan"
@@ -2562,6 +2723,10 @@ msgstr "Pilih..."
msgid "Self-Host with Docker"
msgstr "Self-Host dengan Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Mengirim"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Kirim Email Atur Ulang Kata Sandi"
msgid "Sending password reset email..."
msgstr "Mengirim email atur ulang kata sandi..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Mengirim permintaan"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Pemisah"
@@ -2709,6 +2878,10 @@ msgstr "Satu kolom dengan bilah sisi dan tata letak grid bersih; serbaguna untuk
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Kolom tunggal dengan tajuk entri tiga kolom sebaris (posisi - organisasi - periode); ringkas dan ramah ATS, cocok untuk konvensi resume Asia (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Tata letak satu kolom dengan judul bagian huruf kapital dan garis atas berwarna dasar di setiap halaman; dirancang untuk resume eksekutif, konsultan, atau perusahaan rintisan."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Satu kolom; rapi dan serius untuk posisi tingkat senior atau level perusahaan."
@@ -2809,6 +2982,10 @@ msgstr "Statistik"
msgid "Stay"
msgstr "Tetap"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Berhenti"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Kekuatan"
@@ -2903,6 +3080,14 @@ msgstr "Warna Teks"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "AI tersebut mengusulkan perubahan yang tidak lagi berlaku untuk resume ini."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "AI tersebut memberikan proposal yang tidak dapat dipratinjau."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API key telah berhasil dihapus."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API key tidak akan lagi dapat mengakses data Anda setelah dihapus. Tindakan ini tidak dapat dibatalkan."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Asisten itu berhenti sebelum mengembalikan proposal tersebut."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Ini adalah nama yang ramah URL untuk resume Anda."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Ini mungkin memakan waktu beberapa menit, tergantung respons penyedia AI. Harap jangan menutup jendela atau memuat ulang halaman."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Proposal ini sudah kadaluarsa. Mintalah asisten untuk membuatnya ulang dari resume terbaru."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Resume ini dikunci dan tidak dapat diperbarui."
@@ -3034,6 +3228,10 @@ msgstr "Untuk menghapus akun Anda, Anda perlu memasukkan teks konfirmasi dan kli
msgid "Toggle left sidebar"
msgstr "Beralih ke bilah sisi kiri"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Alihkan penumpukan halaman"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukraina"
msgid "Underline"
msgstr "Garis Bawah"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Batalkan (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Resume Tak Terbatas"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Ya, Reactive Resume tersedia dalam banyak bahasa. Anda dapat memilih bahasa pilihan Anda di halaman pengaturan, atau menggunakan pengalih bahasa di sudut kanan atas. Jika Anda tidak melihat bahasa Anda, atau ingin meningkatkan terjemahan yang ada, Anda dapat <0>berkontribusi pada terjemahan di Crowdin<1> (terbuka di tab baru)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Ya! Setiap template sepenuhnya dapat disesuaikan. Anda dapat mengubah warna, font, jarak, dan bahkan menulis CSS kustom untuk kontrol penuh atas tampilan resume Anda."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Ya! Reactive Resume sepenuhnya gratis digunakan, tanpa biaya tersembunyi, tingkat premium, atau biaya langganan. Ini bersumber terbuka dan akan selalu tetap gratis."
@@ -3440,7 +3629,7 @@ msgstr "Data Anda disimpan secara lokal"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Data Anda disimpan dengan aman dan tidak pernah dibagikan dengan pihak ketiga. Anda juga dapat self-host Reactive Resume di server Anda sendiri untuk kontrol penuh atas data Anda."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Perubahan terbaru Anda tidak dapat disimpan."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# elemento} other {# elementi}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# ruolo} other {# ruoli}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} proposte esaminate"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Certo! Puoi esportare il tuo curriculum in PDF con un solo clic. Il PDF esportato mantiene perfettamente tutta la tua formattazione e lo stile."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Accettare"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Accetta tutto"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Proposta accettata"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Accedi in modo programmatico ai tuoi curriculum e ai tuoi dati usando l'API."
@@ -229,10 +246,38 @@ msgstr "Aggiungi riga prima"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Dopo"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Integrazione dell'IA disabilitata"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Proposta di intelligenza artificiale applicata."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "Proposta sull'intelligenza artificiale respinta."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Sono state applicate le proposte basate sull'IA."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Proposte sull'IA respinte."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Assistente AI per la redazione del curriculum"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanese"
@@ -367,10 +412,22 @@ msgstr "Area di studio"
msgid "Artificial Intelligence"
msgstr "Intelligenza artificiale"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Richiedi una modifica mirata al tuo curriculum..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Richiedi un cambiamento graduale"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Proporzioni"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Richiesta di assistenza non riuscita"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Informazioni di base"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Modelli bellissimi tra cui scegliere, con altri in arrivo."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Prima"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengalese"
@@ -462,10 +523,6 @@ msgstr "Elenco puntato"
msgid "By the community, for the community."
msgstr "Dalla comunità, per la comunità."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Posso personalizzare i modelli?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Posso esportare il mio curriculum in PDF?"
@@ -576,6 +633,14 @@ msgstr "Libero"
msgid "Click here to select a file to import"
msgstr "Fai clic qui per selezionare un file da importare"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Chiudi"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Assistente AI ravvicinato"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Blocco di codice"
@@ -622,6 +687,10 @@ msgstr "Conferma"
msgid "Connect"
msgstr "Connetti"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Prima di utilizzare i suggerimenti per la modifica del curriculum, collega e verifica il fornitore di intelligenza artificiale."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Copia questa chiave segreta e usala nelle tue applicazioni per accedere
msgid "Copy URL"
msgstr "Copia URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Impossibile applicare la proposta basata sull'IA."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Disconnetti"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Congedare"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Documentazione"
msgid "Don't have an account? <0/>"
msgstr "Non hai un account? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Donare"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Fai una donazione a Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Abilita 2FA"
msgid "Enable AI Features"
msgstr "Abilita funzionalità IA"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Abilita l'integrazione dell'IA"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Abilita autenticazione a due fattori"
@@ -1162,6 +1247,10 @@ msgstr "Tutto ciò che inserisci qui viene memorizzato localmente nel tuo browse
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Tutto ciò di cui hai bisogno per creare, personalizzare e condividere curriculum professionali. Creato pensando alla privacy, alimentato dall'open source e completamente gratuito per sempre."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Esempi: riscrivere il riepilogo, sintetizzare un punto relativo all'esperienza, aggiungere dati statistici o adattare il curriculum alla descrizione di una posizione lavorativa."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Esci dalla modalità a schermo intero"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Hai dimenticato la password?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formato"
@@ -1397,6 +1486,10 @@ msgstr "Formato"
msgid "Free"
msgstr "Gratuito"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Forma libera"
#: src/libs/locale.ts
msgid "French"
msgstr "Francese"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modello"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Ulteriori azioni proposte"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Sposta in"
@@ -1978,6 +2075,10 @@ msgstr "Deve iniziare con https://"
msgid "Name"
msgstr "Nome"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Necessita di revisione"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalese"
@@ -2008,6 +2109,10 @@ msgstr "Nuova password"
msgid "New Section"
msgstr "Nuova sezione"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Avanti"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Nessuna pubblicità, nessun tracciamento"
@@ -2057,11 +2162,19 @@ msgstr "Manutenzione continua"
msgid "Open"
msgstr "Apri"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Assistente Open AI"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Apri client email"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Integrazioni aperte"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Apra le Impostazioni delle integrazioni"
@@ -2215,6 +2328,10 @@ msgstr "Inserisci la password condivisa con te dal proprietario del curriculum p
msgid "Please enter the URL you want to link to:"
msgstr "Inserisci l'URL a cui vuoi collegarti:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Per favore, sostenete il progetto."
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Posizione"
msgid "Preferences"
msgstr "Preferenze"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Preparazione dei cambiamenti"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Preset"
@@ -2263,6 +2384,10 @@ msgstr "Premi <0>{RETURN_KEY}</0> o <1>{COMMA_KEY}</1> per aggiungere o salvare
msgid "Press <0>Enter</0> to open"
msgstr "Premere <0>Invio</0> per aprire"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Precedente"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Colore primario"
@@ -2293,6 +2418,11 @@ msgstr "Barra di avanzamento"
msgid "Projects"
msgstr "Progetti"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Proposta {0} di {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Proteggi il tuo curriculum da accessi non autorizzati con una password"
@@ -2315,6 +2445,10 @@ msgstr "Pubblicazioni"
msgid "Publisher"
msgstr "Editore"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Patch JSON non elaborato"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - Vai alla homepage"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume è un progetto gratuito e open source, creato con amore
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume è un generatore di curriculum gratuito e open source che semplifica il processo di creazione, aggiornamento e condivisione del tuo curriculum."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume è gratuito e open source. Se ti è stato utile, considera la possibilità di fare una donazione."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume è open source, incentrato sulla privacy e completamente gratuito. A differenza di altri generatori di curriculum, non mostra annunci, non traccia i tuoi dati e non limita le funzionalità dietro un paywall."
@@ -2362,11 +2500,6 @@ msgstr "Rettangolo"
msgid "Rectangle (Full Width)"
msgstr "Rettangolo (larghezza completa)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Ripristina (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Aggiorna"
msgid "Register New Device"
msgstr "Registra un nuovo dispositivo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Rifiutare"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Rifiuta tutto"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Proposta respinta"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Ricordi la tua password? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Invio dell'email di verifica in corso..."
msgid "Reset"
msgstr "Ripristina"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Reimposta la chat"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Reimposta la tua password"
msgid "Resetting your password..."
msgstr "Reimpostazione della tua password in corso..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Assistente AI per il ridimensionamento"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Risorse"
@@ -2464,6 +2617,14 @@ msgstr "Analisi del curriculum completata."
msgid "Resumes"
msgstr "Curriculum"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Revisione necessaria"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Proposte esaminate"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Allinea a destra"
@@ -2562,6 +2723,10 @@ msgstr "Seleziona..."
msgid "Self-Host with Docker"
msgstr "Self-host con Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Inviare"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Invia email per reimpostare la password"
msgid "Sending password reset email..."
msgstr "Invio dell'email per reimpostare la password in corso..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Invio della richiesta"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Separatore"
@@ -2709,6 +2878,10 @@ msgstr "Una singola colonna con barra laterale e griglia pulita; versatile per q
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "A colonna singola con intestazione in linea a tre colonne (posizione - organizzazione - periodo); compatta e adatta agli ATS, si adatta bene alle convenzioni asiatiche per i curriculum (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Impaginazione a colonna singola con intestazioni di sezione in maiuscolo e una linea superiore di colore primario su ogni pagina; ideale per curriculum di dirigenti, consulenti o startup."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Una singola colonna; curato e serio per posizioni senior o a livello enterprise."
@@ -2809,6 +2982,10 @@ msgstr "Statistiche"
msgid "Stay"
msgstr "Rimani"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Fermare"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Punti di forza"
@@ -2903,6 +3080,14 @@ msgstr "Colore del testo"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "L'intelligenza artificiale ha proposto una modifica che non si applica più a questo curriculum."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "L'intelligenza artificiale ha restituito una proposta che non poteva essere visualizzata in anteprima."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "La chiave API è stata eliminata correttamente."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Dopo l'eliminazione, la chiave API non potrà più accedere ai tuoi dati. Questa azione non può essere annullata."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "L'assistente si fermò prima di restituire la proposta."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Questo è un nome adatto agli URL per il tuo curriculum."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Potrebbero essere necessari alcuni minuti, a seconda della risposta del provider IA. Non chiudere la finestra e non aggiornare la pagina."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Questa proposta non è aggiornata. Chiedi all'assistente di rigenerarla a partire dal curriculum più recente."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Questo curriculum è bloccato e non può essere aggiornato."
@@ -3034,6 +3228,10 @@ msgstr "Per eliminare il tuo account devi inserire il testo di conferma e fare c
msgid "Toggle left sidebar"
msgstr "Alterna la barra laterale sinistra"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Attiva/disattiva l'impilamento delle pagine"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ucraino"
msgid "Underline"
msgstr "Sottolinea"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Annulla (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Curriculum illimitati"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Sì, Reactive Resume è disponibile in più lingue. Puoi scegliere la tua lingua preferita nella pagina delle impostazioni o usando il selettore di lingua nell'angolo in alto a destra. Se non vedi la tua lingua, o se vuoi migliorare le traduzioni esistenti, puoi <0>contribuire alle traduzioni su Crowdin<1> (apre in una nuova scheda)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Sì! Ogni modello è completamente personalizzabile. Puoi cambiare colori, font, spaziatura e persino scrivere CSS personalizzato per avere il pieno controllo dell'aspetto del tuo curriculum."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Sì! Reactive Resume è completamente gratuito da usare, senza costi nascosti, livelli premium o abbonamenti. È open source e resterà sempre gratuito."
@@ -3440,7 +3629,7 @@ msgstr "I tuoi dati vengono memorizzati localmente"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "I tuoi dati sono archiviati in modo sicuro e non vengono mai condivisi con terze parti. Puoi anche fare self-host di Reactive Resume sui tuoi server per avere il pieno controllo dei tuoi dati."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Impossibile salvare le ultime modifiche."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, other {# 件のアイテム}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, other {# 個の役職}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} 提案が審査されました"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "もちろん可能です。ワンクリックで履歴書を PDF にエクスポートできます。エクスポートされた PDF では、書式やスタイルがそのまま維持されます。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "受け入れる"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "すべて受け入れる"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "提案が承認されました"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API を使用して、プログラムから履歴書とデータにアクセスできます。"
@@ -229,10 +246,38 @@ msgstr "前に行を追加"
msgid "Afrikaans"
msgstr "アフリカーンス語"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "後"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI統合は無効になっています"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI提案が適用されました。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AIに関する提案は却下された。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI関連の提案が適用されました。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI関連の提案は却下された。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI履歴書アシスタント"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "アルバニア語"
@@ -367,10 +412,22 @@ msgstr "研究分野"
msgid "Artificial Intelligence"
msgstr "人工知能"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "履歴書の内容を具体的に変更するよう依頼してください。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "段階的な変更を求める"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "アスペクト比"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "アシスタントのリクエストが失敗しました"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "基本情報"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "選択できる美しいテンプレートを多数用意しており、今後もさらに追加される予定です。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "前に"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "ベンガル語"
@@ -462,10 +523,6 @@ msgstr "箇条書きリスト"
msgid "By the community, for the community."
msgstr "コミュニティによる、コミュニティのためのプロジェクト。"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "テンプレートはカスタマイズできますか?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "履歴書を PDF にエクスポートできますか?"
@@ -576,6 +633,14 @@ msgstr "クリア"
msgid "Click here to select a file to import"
msgstr "ここをクリックしてインポートするファイルを選択"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "閉じる"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "AIアシスタントを閉じる"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "コードブロック"
@@ -622,6 +687,10 @@ msgstr "確認"
msgid "Connect"
msgstr "接続"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "履歴書編集提案を利用する前に、AIプロバイダーと連絡を取り、その信頼性を確認してください。"
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "このシークレットキーをコピーし、アプリケーション
msgid "Copy URL"
msgstr "URL をコピー"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "AI提案を適用できませんでした。"
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "切断"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "却下する"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "ドキュメンテーション"
msgid "Don't have an account? <0/>"
msgstr "アカウントをお持ちでないですか? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "寄付する"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Reactive Resume に寄付"
@@ -1094,6 +1175,10 @@ msgstr "2FA を有効化"
msgid "Enable AI Features"
msgstr "AI 機能を有効にする"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "AI統合を有効にする"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "二要素認証を有効化"
@@ -1162,6 +1247,10 @@ msgstr "ここに入力した内容はすべてブラウザー上にローカル
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "プロフェッショナルな履歴書を作成・カスタマイズ・共有するために必要な機能がすべて揃っています。プライバシーを重視して設計され、オープンソースによって支えられ、そして完全に無料で利用できます。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "例:要約を書き直す、職務経歴の箇条書きを一つ絞り込む、数値データを追加する、または求人内容に合わせて履歴書を修正する。"
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "全画面表示を終了"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "パスワードをお忘れですか?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "フォーマット"
@@ -1397,6 +1486,10 @@ msgstr "フォーマット"
msgid "Free"
msgstr "無料"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "自由形式"
#: src/libs/locale.ts
msgid "French"
msgstr "フランス語"
@@ -1952,6 +2045,10 @@ msgstr "マイクロソフトワード"
msgid "Model"
msgstr "モデル"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "その他の提案アクション"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "移動先"
@@ -1978,6 +2075,10 @@ msgstr "https://。"
msgid "Name"
msgstr "名前"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "要見直し"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "ネパール語"
@@ -2008,6 +2109,10 @@ msgstr "新しいパスワード"
msgid "New Section"
msgstr "新しいセクション"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "次のページ"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "広告なし・トラッキングなし"
@@ -2057,11 +2162,19 @@ msgstr "継続的な保守"
msgid "Open"
msgstr "開く"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "OpenAIアシスタント"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "メールクライアントを開く"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "オープンインテグレーション"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "統合設定を開く"
@@ -2215,6 +2328,10 @@ msgstr "履歴書の所有者から共有されたパスワードを入力して
msgid "Please enter the URL you want to link to:"
msgstr "リンク先の URL を入力してください:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "プロジェクトへのご支援をお願いいたします"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "役職"
msgid "Preferences"
msgstr "設定"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "変更の準備"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "プリセット"
@@ -2263,6 +2384,10 @@ msgstr "現在のキーワードを追加または保存するには、<0>{RETUR
msgid "Press <0>Enter</0> to open"
msgstr "<0>Enter</0>キーを押して開く"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "前へ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "メインカラー"
@@ -2293,6 +2418,11 @@ msgstr "プログレスバー"
msgid "Projects"
msgstr "プロジェクト"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "{0} の {total} の提案"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "パスワードで履歴書を保護し、許可されていないアクセスを防ぎます。"
@@ -2315,6 +2445,10 @@ msgstr "掲載情報"
msgid "Publisher"
msgstr "出版社"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "生のJSONパッチ"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - ホームページへ移動"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume は、愛情を込めて作られ、私とコミュニ
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume は、履歴書の作成、更新、共有のプロセスを簡素化する、無料でオープンソースの履歴書ビルダーです。"
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resumeは無料のオープンソースソフトウェアです。もしお役に立てたなら、ぜひご寄付をご検討ください。"
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume はオープンソースでプライバシー重視、そして完全無料です。他の履歴書ビルダーと違い、広告を表示したり、あなたのデータを追跡したり、有料プランの裏に機能を隠したりすることはありません。"
@@ -2362,11 +2500,6 @@ msgstr "長方形"
msgid "Rectangle (Full Width)"
msgstr "長方形(全幅)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "やり直し(Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "再読み込み"
msgid "Register New Device"
msgstr "新規デバイスの登録"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "拒否する"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "すべて拒否"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "却下された提案"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "パスワードを思い出しましたか? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "確認メールを再送信しています..."
msgid "Reset"
msgstr "リセット"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "チャットをリセット"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "パスワードをリセット"
msgid "Resetting your password..."
msgstr "パスワードをリセットしています..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "リサイズAIアシスタント"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "リソース"
@@ -2464,6 +2617,14 @@ msgstr "履歴書分析完了。"
msgid "Resumes"
msgstr "履歴書"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "レビューが必要です"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "提案内容を検討しました"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "右揃え"
@@ -2562,6 +2723,10 @@ msgstr "選択..."
msgid "Self-Host with Docker"
msgstr "Docker でセルフホスト"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "送信"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "パスワードリセットメールを送信"
msgid "Sending password reset email..."
msgstr "パスワードリセットメールを送信しています..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "リクエストを送信中"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "区切り線"
@@ -2709,6 +2878,10 @@ msgstr "サイドバーと整ったグリッドレイアウトを備えた 1 カ
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "1段組、インライン3段組(ポジション-所属-ピリオド)。コンパクトでATSフレンドリー、アジアの履歴書規約(CN/JP/KR)に適しています。"
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "1段組で、セクションの見出しはすべて大文字、各ページの上部には原色を使った罫線が入っています。経営幹部、コンサルタント、スタートアップ企業の履歴書に最適な洗練されたデザインです。"
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "1 カラムレイアウトで、落ち着いた印象の真面目なデザイン。シニア職やエンタープライズレベルのポジションに適しています。"
@@ -2809,6 +2982,10 @@ msgstr "統計"
msgid "Stay"
msgstr "このまま"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "停止"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "強み"
@@ -2903,6 +3080,14 @@ msgstr "テキストカラー"
msgid "Thai"
msgstr "タイ語"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "AIが提案した変更内容は、この履歴書にはもはや適用されません。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "AIはプレビューできない提案を返しました。"
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API キーを正常に削除しました。"
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "この API キーは削除後、データにアクセスできなくなります。この操作は取り消せません。"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "アシスタントは提案を返す前に立ち止まった。"
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "これは履歴書用の、URL 向けの名前です。"
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "AI プロバイダーからの応答によっては、数分かかる場合があります。ウィンドウを閉じたりページを再読み込みしたりしないでください。"
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "この提案書は古い情報です。アシスタントに最新の履歴書から再作成するよう依頼してください。"
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "この履歴書はロックされているため、更新できません。"
@@ -3034,6 +3228,10 @@ msgstr "アカウントを削除するには、確認用のテキストを入力
msgid "Toggle left sidebar"
msgstr "左サイドバーの切り替え"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "ページスタッキングの切り替え"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ウクライナ語"
msgid "Underline"
msgstr "下線"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "元に戻す(Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "無制限の履歴書"
@@ -3387,10 +3580,6 @@ msgstr "X(ツイッター)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "はい。Reactive Resume は複数の言語に対応しています。設定ページ、または右上の言語切り替えからお好みの言語を選択できます。もしご希望の言語が見つからない場合や、既存の翻訳を改善したい場合は、<0>Crowdin で翻訳に貢献<1>(新しいタブで開きます)</1></0>できます。"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "はい。すべてのテンプレートは完全にカスタマイズ可能です。色やフォント、余白を変更できるほか、カスタム CSS を記述して履歴書の見た目を完全にコントロールできます。"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "はい。Reactive Resume は完全に無料で、隠れたコストやプレミアムプラン、サブスクリプション料金は一切ありません。オープンソースであり、今後もずっと無料で提供されます。"
@@ -3440,7 +3629,7 @@ msgstr "あなたのデータはローカルに保存されます。"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "あなたのデータは安全に保存され、第三者と共有されることはありません。また、完全にデータを管理したい場合は、Reactive Resume を自分のサーバーにセルフホストすることもできます。"
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "最新の変更内容を保存できませんでした。"
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: km\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Khmer\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, other {# ធាតុ}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# តួនាទី} other {# តួនាទី}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "សំណើ {0} ត្រូវបានពិនិត្យឡើងវិញ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "បាន​ប្រាកដ! អ្នក​អាច​នាំចេញ​ប្រវត្តិរូប​របស់​អ្នក​ជា PDF ដោយ​ចុច​តែ​ម្ដង។ ឯកសារ PDF ដែលនាំចេញ​នឹង​រក្សា​ទុក​ទ្រង់ទ្រាយ និង​រចនាប័ទ្ម​ទាំង​អស់​របស់​អ្នក​ដូច​ដើម។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "ទទួលយក"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "ទទួលយកទាំងអស់"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "សំណើ​ដែល​បាន​ទទួល​យក"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "ចូលដំណើរការប្រវត្តិរូប និងទិន្នន័យរបស់អ្នកតាមកម្មវិធី ដោយប្រើ API។"
@@ -229,10 +246,38 @@ msgstr "បន្ថែម​ជួរដេក​នៅ​មុខ"
msgid "Afrikaans"
msgstr "Afrikaans"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "បន្ទាប់​ពី"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "បានបិទការរួមបញ្ចូល AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "សំណើ AI ត្រូវបានអនុវត្ត។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "សំណើ AI ត្រូវបានបដិសេធ។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "សំណើ AI ត្រូវបានអនុវត្ត។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "សំណើ AI ត្រូវបានបដិសេធ។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "ជំនួយការប្រវត្តិរូបសង្ខេប AI"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanian"
@@ -367,10 +412,22 @@ msgstr "ជំនាញ​រៀន"
msgid "Artificial Intelligence"
msgstr "បញ្ញាសិប្បនិម្មិត"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "ស្នើសុំការផ្លាស់ប្តូរប្រវត្តិរូបសង្ខេបដែលមានគោលដៅ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "ស្នើសុំការផ្លាស់ប្តូរបន្តិចម្តងៗ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "សមាមាត្រទ្រង់ទ្រាយ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "សំណើសុំជំនួយបរាជ័យ"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "មូលដ្ឋាន"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "គំរូ​ស្អាតៗ​ឲ្យ​ជ្រើសរើស ហើយ​នៅមាន​បន្ថែម​ទៀត​កំពុងមកដល់។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "មុន"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengali"
@@ -462,10 +523,6 @@ msgstr "បញ្ជី​មាន​គ្រាប់ចំណុច"
msgid "By the community, for the community."
msgstr "ដោយ​សហគមន៍ សម្រាប់​សហគមន៍។"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "តើ​ខ្ញុំ​អាច​ប្ដូរ​តាមបំណង​គំរូ​ទាំង​នេះ​បាន​ទេ?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "តើ​ខ្ញុំ​អាច​នាំចេញ​ប្រវត្តិរូប​របស់​ខ្ញុំ​ជា PDF បានទេ?"
@@ -576,6 +633,14 @@ msgstr "សម្អាត"
msgid "Click here to select a file to import"
msgstr "ចុច​ទីនេះ​ដើម្បី​ជ្រើស​ឯកសារ​មួយ​ដើម្បី​នាំចូល"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "បិទ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "បិទជំនួយការ AI"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "កូដ​ប្លុក"
@@ -622,6 +687,10 @@ msgstr "អះអាង"
msgid "Connect"
msgstr "តភ្ជាប់"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "ភ្ជាប់ និងផ្ទៀងផ្ទាត់អ្នកផ្តល់សេវា AI មុនពេលប្រើប្រាស់សំណើកែសម្រួលប្រវត្តិរូបសង្ខេប។"
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "ចម្លង​កូនសោ​សម្ងាត់​នេះ
msgid "Copy URL"
msgstr "ចម្លង URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "មិនអាចអនុវត្តសំណើ AI បានទេ។"
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "ផ្ដាច់"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "បដិសេធ"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "ឯកសារ"
msgid "Don't have an account? <0/>"
msgstr "មិនមានគណនី? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "បរិច្ចាគ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "បរិច្ចាគ​ឲ្យ Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "បើក​ប្រើ 2FA"
msgid "Enable AI Features"
msgstr "បើក​ប្រើ​មុខងារ AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "បើកការរួមបញ្ចូល AI"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "បើក​ប្រើ​ការ​ផ្ទៀងផ្ទាត់​ពីរ​ជាន់"
@@ -1162,6 +1247,10 @@ msgstr "អ្វី​ដែល​បាន​បញ្ចូល​នៅ​ទ
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "អ្វីៗ​ដែល​អ្នក​ត្រូវការ ដើម្បី​បង្កើត ប្ដូរ​តាមបំណង និង​ចែករំលែក​ប្រវត្តិរូប​វិជ្ជាជីវៈ។ ត្រូវ​បាន​បង្កើត​ឡើង​ដោយ​គិត​ពី​ភាព​ឯកជន ប្រើ​បច្ចេកវិទ្យា​បើក​ប្រភព ហើយ​ឥត​គិតថ្លៃ​ទាំងស្រុង ជារៀងរហូត។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "ឧទាហរណ៍៖ សរសេរសេចក្តីសង្ខេបឡើងវិញ រឹតបន្តឹងចំណុចបទពិសោធន៍មួយ បន្ថែមរង្វាស់ ឬកែសម្រួលប្រវត្តិរូបសង្ខេបសម្រាប់ការពិពណ៌នាការងារ។"
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "ចេញពីអេក្រង់ពេញ"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "ភ្លេច​ពាក្យសម្ងាត់​របស់​អ្នក​ឬ?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "ទ្រង់ទ្រាយ"
@@ -1397,6 +1486,10 @@ msgstr "ទ្រង់ទ្រាយ"
msgid "Free"
msgstr "ឥត​គិតថ្លៃ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "ទម្រង់សេរី"
#: src/libs/locale.ts
msgid "French"
msgstr "French"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "ម៉ូដែល"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "សកម្មភាពស្នើបន្ថែមទៀត"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "ផ្លាស់ទី​ទៅ"
@@ -1978,6 +2075,10 @@ msgstr "ត្រូវតែចាប់ផ្តើមដោយ https://"
msgid "Name"
msgstr "ឈ្មោះ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "ត្រូវការការពិនិត្យឡើងវិញ"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepali"
@@ -2008,6 +2109,10 @@ msgstr "ពាក្យសម្ងាត់​ថ្មី"
msgid "New Section"
msgstr "ផ្នែក​ថ្មី"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "បន្ទាប់"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "គ្មាន​ការ​ផ្សពាណិជ្ជកម្ម គ្មាន​ការ​តាមដាន"
@@ -2057,11 +2162,19 @@ msgstr "ការថែទាំ​បន្ត"
msgid "Open"
msgstr "បើក"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "បើកជំនួយការ AI"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "បើក​កម្មវិធី​អ៊ីមែល"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ការរួមបញ្ចូលបើកចំហ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "បើកការកំណត់ការរួមបញ្ចូល"
@@ -2215,6 +2328,10 @@ msgstr "សូម​បញ្ចូល​ពាក្យសម្ងាត់
msgid "Please enter the URL you want to link to:"
msgstr "សូម​បញ្ចូល URL ដែល​អ្នក​ចង់​តភ្ជាប់​ទៅ៖"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "សូមជួយគាំទ្រគម្រោងនេះផង"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "តួនាទី"
msgid "Preferences"
msgstr "ចំណង់ចំណូលចិត្ត"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "កំពុងរៀបចំការផ្លាស់ប្តូរ"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "កំណត់ជាមុន"
@@ -2263,6 +2384,10 @@ msgstr "ចុច <0>{RETURN_KEY}</0> ឬ <1>{COMMA_KEY}</1> ដើម្បី
msgid "Press <0>Enter</0> to open"
msgstr "ចុច <0>Enter</0> ដើម្បីបើក"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "មុន"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "ពណ៌​មូលដ្ឋាន"
@@ -2293,6 +2418,11 @@ msgstr "របារ​វឌ្ឍនភាព"
msgid "Projects"
msgstr "គម្រោង"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "សំណើ {0} នៃ {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "ការពារ​ប្រវត្តិរូប​របស់​អ្នក​ពី​ការ​ចូល​ដំណើរការ​ដោយ​មិន​បាន​អនុញ្ញាត ដោយ​ប្រើ​ពាក្យសម្ងាត់"
@@ -2315,6 +2445,10 @@ msgstr "អត្ថបទផ្សព្វផ្សាយ"
msgid "Publisher"
msgstr "អ្នកបោះពុម្ពផ្សាយ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "បំណះ JSON ឆៅ"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - ទៅ​កាន់​ទំព័រ​ដើម"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume ជា​គម្រោង​ឥតគិតថ្ល
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume ជា​កម្មវិធី​បង្កើត​ប្រវត្តិរូប​ឥតគិតថ្លៃ និង​បើក​ប្រភព ដែល​ធ្វើ​ឱ្យ​ដំណើរការ​បង្កើត បច្ចុប្បន្នភាព និង​ចែករំលែក​ប្រវត្តិរូប​របស់​អ្នក ក្លាយ​ជា​រឿង​ងាយ​ស្រួល។"
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume គឺឥតគិតថ្លៃ និងជាប្រភពបើកចំហ។ ប្រសិនបើវាបានជួយអ្នក សូមពិចារណាបរិច្ចាគ។"
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume គឺ​បើក​ប្រភព ផ្តោតលើ​ភាព​ឯកជន និង​ឥតគិតថ្លៃ​ទាំងស្រុង។ ខុស​ពី​កម្មវិធី​បង្កើត​ប្រវត្តិរូប​ផ្សេងៗ វា​មិន​បង្ហាញ​ពាណិជ្ជកម្ម មិន​តាមដាន​ទិន្នន័យ​របស់​អ្នក ហើយ​មិន​កំណត់​មុខងារ​ពីក្រោយ paywall ឡើយ។"
@@ -2362,11 +2500,6 @@ msgstr "ចតុកោណ"
msgid "Rectangle (Full Width)"
msgstr "ចតុកោណ (ទទឹង​ពេញ)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "ធ្វើម្ដងទៀត (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "ផ្ទៀងផ្ទាត់​ម្ដងទៀត"
msgid "Register New Device"
msgstr "ចុះឈ្មោះឧបករណ៍ថ្មី"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "បដិសេធ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "បដិសេធទាំងអស់"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "សំណើ​ត្រូវ​បាន​បដិសេធ"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "ចាំពាក្យសម្ងាត់របស់អ្នក? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "កំពុង​ផ្ញើ​អ៊ីមែល​ផ្ទៀងផ
msgid "Reset"
msgstr "កំណត់​ឡើងវិញ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "កំណត់ការជជែកឡើងវិញ"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "កំណត់​ពាក្យសម្ងាត់​របស់​
msgid "Resetting your password..."
msgstr "កំពុង​កំណត់​ពាក្យសម្ងាត់​របស់​អ្នក​ឡើងវិញ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "ប្ដូរទំហំជំនួយការ AI"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "ធនធាន"
@@ -2464,6 +2617,14 @@ msgstr "ការវិភាគប្រវត្តិរូបបានបញ
msgid "Resumes"
msgstr "ប្រវត្តិរូប"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "តម្រូវ​ឱ្យ​មាន​ការ​ពិនិត្យ​ឡើង​វិញ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "សំណើដែលបានពិនិត្យ"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "តម្រង់​ស្ដាំ"
@@ -2562,6 +2723,10 @@ msgstr "ជ្រើសរើស..."
msgid "Self-Host with Docker"
msgstr "ដំឡើង​ផ្ទាល់​ខ្លួន​ដោយ​ប្រើ Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "ផ្ញើ"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "ផ្ញើ​អ៊ីមែល​កំណត់​ពាក្យស
msgid "Sending password reset email..."
msgstr "កំពុង​ផ្ញើ​អ៊ីមែល​កំណត់​ពាក្យសម្ងាត់​ឡើងវិញ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "កំពុងផ្ញើសំណើ"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "បន្ទាត់​បំបែក"
@@ -2709,6 +2878,10 @@ msgstr "ជួរឈរ​តែមួយ មាន​របារ​បាត
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "ប្លង់ជួរឈរតែមួយដែលមានបឋមកថាធាតុជាបីជួរឈរនៅក្នុងបន្ទាត់តែមួយ (មុខតំណែង · ស្ថាប័ន · រយៈពេល)៖ បង្រួម ងាយស្រួលសម្រាប់ ATS និងសមស្របសម្រាប់ទម្រង់ប្រវត្តិរូបបែបអាស៊ី (CN/JP/KR)។"
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "ជួរឈរតែមួយដែលមានចំណងជើងផ្នែកអក្សរធំ និងបន្ទាត់កំពូលពណ៌ចម្បងនៅលើទំព័រនីមួយៗ។ ត្រូវបានរៀបចំយ៉ាងល្អសម្រាប់ប្រវត្តិរូបសង្ខេបសម្រាប់នាយកប្រតិបត្តិ ប្រឹក្សាយោបល់ ឬចាប់ផ្តើមអាជីវកម្ម។"
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "ជួរឈរ​តែមួយ រូបរាង​រលោង និង​ផ្លូវការ​សម្រាប់​តំណែង​ជាន់​ខ្ពស់ ឬ​កម្រិត​សហគ្រាស។"
@@ -2809,6 +2982,10 @@ msgstr "ស្ថិតិ"
msgid "Stay"
msgstr "ស្ថិត"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "ឈប់"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "ចំណុចខ្លាំង"
@@ -2903,6 +3080,14 @@ msgstr "ពណ៌​អត្ថបទ"
msgid "Thai"
msgstr "Thai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "បញ្ញាសិប្បនិម្មិត (AI) បានស្នើការផ្លាស់ប្តូរមួយដែលលែងអនុវត្តចំពោះប្រវត្តិរូបសង្ខេបនេះទៀតហើយ។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "បញ្ញាសិប្បនិម្មិត (AI) បានប្រគល់សំណើមួយដែលមិនអាចមើលជាមុនបាន។"
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "កូនសោ API ត្រូវ​បាន​លុប​ដោយ
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "បន្ទាប់​ពី​លុប កូនសោ API នេះ​នឹង​មិន​អាច​ចូល​ដំណើរការ​ទិន្នន័យ​របស់​អ្នក​បាន​ទៀត​ទេ។ សកម្មភាព​នេះ​មិន​អាច​មិនធ្វើវិញ​បានទេ។"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "ជំនួយការ​បាន​ឈប់​មុន​ពេល​ប្រគល់​សំណើ​មួយ​វិញ។"
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "នេះ​ជា​ឈ្មោះ​ងាយ​ស្រួល​ស
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "វា​អាច​ចំណាយ​ពេល​ពីរ​នាទី អាស្រ័យ​លើ​ការ​ឆ្លើយតប​របស់​អ្នកផ្តល់​សេវា AI។ សូម​កុំ​បិទ​បង្អួច​នេះ ឬ​ផ្ទុក​ទំព័រ​ឡើង​វិញ។"
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "សំណើនេះហួសសម័យហើយ។ សូមស្នើសុំឱ្យជំនួយការបង្កើតវាឡើងវិញពីប្រវត្តិរូបសង្ខេបចុងក្រោយបំផុត។"
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "ប្រវត្តិរូប​នេះ​ត្រូវ​បាន​ចាក់សោ ហើយ​មិន​អាច​បច្ចុប្បន្នភាព​បាន​ទេ។"
@@ -3034,6 +3228,10 @@ msgstr "ដើម្បី​លុប​គណនី​របស់​អ្ន
msgid "Toggle left sidebar"
msgstr "បិទបើករបារចំហៀងខាងឆ្វេង"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "បិទ/បើកការដាក់ទំព័រជាស្រទាប់ៗ"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainian"
msgid "Underline"
msgstr "គូស​បន្ទាត់​ក្រោម"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "មិនធ្វើវិញ (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "ប្រវត្តិរូប​មិន​មាន​ដែនកំណត់"
@@ -3387,10 +3580,6 @@ msgstr "X (ធ្វីតធ័រ)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "បាទ Reactive Resume អាច​ប្រើ​បាន​ជា​ភាសា​ច្រើន។ អ្នក​អាច​ជ្រើស​ភាសា​ដែល​អ្នក​ពេញចិត្ត​នៅលើ​ទំព័រ​ការកំណត់ ឬ​ដោយ​ប្រើ​កម្មវិធី​ប្ដូរ​ភាសា​នៅ​កូណឺ​ឆ្វេងលើ។ បើ​អ្នក​មិន​ឃើញ​ភាសា​របស់​អ្នក ឬ​ចង់​ធ្វើ​ឱ្យ​ការ​បកប្រែ​ដែល​មាន​ស្រាប់​ប្រសើរ​ឡើង អ្នក​អាច <0>ចូលរួម​បកប្រែនៅលើ Crowdin<1> (បើក​ក្នុង​ផ្ទាំង​ថ្មី)</1></0>។"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "បាទ! គំរូ​នីមួយៗ​អាច​ប្ដូរ​តាមបំណង​បាន​ទាំងស្រុង។ អ្នក​អាច​ប្តូរ​ពណ៌ ពុម្ពអក្សរ គម្លាត និង​សរសេរ CSS ផ្ទាល់ខ្លួន ដើម្បី​ត្រួតត្រា​លើ​រូបរាង​ប្រវត្តិរូប​របស់​អ្នក​បាន​ពេញលេញ។"
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "បាទ! Reactive Resume គឺ​ឥតគិតថ្លៃ​ទាំងស្រុង គ្មាន​ចំនាយ​លាក់កំបាំង កម្រិត​ពិសេស ឬ​កម្រៃ​ជាវ​ប្រចាំខែ​ទេ។ វា​បើក​ប្រភព ហើយ​នឹង​នៅ​តែ​ឥតគិតថ្លៃ​ជា​រៀងរហូត។"
@@ -3440,7 +3629,7 @@ msgstr "ទិន្នន័យ​របស់​អ្នក​ត្រូវ
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "ទិន្នន័យ​របស់​អ្នក​ត្រូវ​បាន​រក្សាទុក​ដោយ​សុវត្ថិភាព ហើយ​មិនដែល​ត្រូវ​បាន​ចែករំលែក​ជាមួយ​ភាគី​ទីបី​ទេ។ អ្នក​ក៏​អាច​ដំឡើង Reactive Resume លើ​ម៉ាស៊ីន​បម្រើ​ផ្ទាល់ខ្លួន​របស់​អ្នក ដើម្បី​មាន​សិទ្ធિ​ត្រួតត្រា​លើ​ទិន្នន័យ​របស់​អ្នក​ដល់​ខ្ពស់​បំផុត​ផង​ដែរ។"
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "មិនអាចរក្សាទុកការផ្លាស់ប្តូរចុងក្រោយបំផុតរបស់អ្នកបានទេ។"
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: kn\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Kannada\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# ಐಟಂ} other {# ಐಟಂಗಳು}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# ಪಾತ್ರ} other {# ಪಾತ್ರಗಳು}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} ಪ್ರಸ್ತಾವನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "ಖಂಡಿತ! ನೀವು ಒಂದೇ ಕ್ಲಿಕ್‌ನಿಂದ ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅನ್ನು PDF ಗೆ ರಫ್ತು ಮಾಡಬಹುದು. ರಫ್ತುಗೊಂಡ PDF ದಲ್ಲಿನ ಎಲ್ಲಾ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಮತ್ತು ಶೈಲಿಗಳನ್ನು ಅದು ನಿಖರವಾಗಿ ಉಳಿಸುತ್ತದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "ಸ್ವೀಕರಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "ಎಲ್ಲವನ್ನೂ ಸ್ವೀಕರಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "ಪ್ರಸ್ತಾವನೆಯನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API ಬಳಸಿ ನಿಮ್ಮ ರೆಸ್ಯೂಮ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮೂಲಕ ಪ್ರವೇಶಿಸಿ."
@@ -229,10 +246,38 @@ msgstr "ಸಾಲನ್ನು ಮೊದಲು ಸೇರಿಸಿ"
msgid "Afrikaans"
msgstr "ಆಫ್ರಿಕಾನ್ಸ್"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "ನಂತರ"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI ಏಕೀಕರಣವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI ಪ್ರಸ್ತಾವನೆಯನ್ನು ಅನ್ವಯಿಸಲಾಗಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI ಪ್ರಸ್ತಾವನೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI ಪ್ರಸ್ತಾವನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಗಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI ಪ್ರಸ್ತಾವನೆಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI ರೆಸ್ಯೂಮ್ ಅಸಿಸ್ಟೆಂಟ್"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "ಅಲ್ಬೇನಿಯನ್"
@@ -367,10 +412,22 @@ msgstr "ಅಧ್ಯಯನದ ಕ್ಷೇತ್ರ"
msgid "Artificial Intelligence"
msgstr "ಕೃತಕ ಬುದ್ಧಿವಂತಿಕೆ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "ಉದ್ದೇಶಿತ ರೆಸ್ಯೂಮ್ ಬದಲಾವಣೆಗಾಗಿ ಕೇಳಿ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "ಕ್ರಮೇಣ ಬದಲಾವಣೆಯನ್ನು ಕೇಳಿ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "ಆಕಾರ ಅನುಪಾತ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "ಸಹಾಯಕ ವಿನಂತಿ ವಿಫಲವಾಗಿದೆ"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "ಮೂಲಭೂತಗಳು"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "ಆಯ್ಕೆ ಮಾಡಲು ಸುಂದರವಾದ ಮಾದರಿಗಳು, ಇನ್ನೂ ಬಹಳ ಬೇಗ ಬರುತ್ತಿವೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "ಮೊದಲು"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "ಬೆಂಗಾಲಿ"
@@ -462,10 +523,6 @@ msgstr "ಬುಲೆಟ್ ಪಟ್ಟ್ತಿ"
msgid "By the community, for the community."
msgstr "ಸಮುದಾಯದಿಂದ, ಸಮುದಾಯಕ್ಕಾಗಿ."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "ನಾನು ಮಾದರಿಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿಸಬಹುದೇ?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "ನಾನು ನನ್ನ ರೆಸ್ಯೂಮ್ ಅನ್ನು PDF ಗೆ ರಫ್ತು ಮಾಡಿಸಬಹುದೇ?"
@@ -576,6 +633,14 @@ msgstr "ತೆರವುಗೊಳಿಸಿ"
msgid "Click here to select a file to import"
msgstr "ಆಮದು ಮಾಡಲು ಕಡತವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "ಮುಚ್ಚಿ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "AI ಸಹಾಯಕವನ್ನು ಮುಚ್ಚಿ"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "ಕೋಡ್ ಬ್ಲಾಕ್"
@@ -622,6 +687,10 @@ msgstr "ದೃಢೀಕರಿಸಿ"
msgid "Connect"
msgstr "ಕನೆಕ್ಟ್ ಮಾಡಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "ರೆಸ್ಯೂಮ್ ಎಡಿಟಿಂಗ್ ಪ್ರಸ್ತಾವನೆಗಳನ್ನು ಬಳಸುವ ಮೊದಲು AI ಪೂರೈಕೆದಾರರನ್ನು ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ಪರಿಶೀಲಿಸಿ."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "ಈ ಸೀಕ್ರೆಟ್ ಕೀ ಅನ್ನು ನಕಲಿಸಿ
msgid "Copy URL"
msgstr "URL ನಕಲಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "AI ಪ್ರಸ್ತಾವನೆಯನ್ನು ಅನ್ವಯಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "ಡಿಸ್ಕನೆಕ್ಟ್ ಮಾಡಿ"
msgid "Discord"
msgstr "ಡಿಸ್ಕೋರ್ಡ್"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "ವಜಾಗೊಳಿಸಿ"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "ದಾಖಲೀಕರಣ"
msgid "Don't have an account? <0/>"
msgstr "ಖಾತೆ ಇಲ್ಲವೇ? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "ದಾನ ಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮ್‌ಗೆ ದೇಣಿಗೆ ನೀಡಿ"
@@ -1094,6 +1175,10 @@ msgstr "2FA ಸಕ್ರಿಯಗೊಳಿಸಿ"
msgid "Enable AI Features"
msgstr "AI ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "AI ಏಕೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
@@ -1162,6 +1247,10 @@ msgstr "ಇಲ್ಲಿ ನಮೂದಿಸಿರುವ ಎಲ್ಲವನ್ನ
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "ವೃತ್ತಿಪರ ರೆಸ್ಯೂಮ್‌ಗಳನ್ನು ರಚಿಸಲು, ಕಸ್ಟಮೈಸ್ ಮಾಡಲು ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಲು ನಿಮಗೆ ಬೇಕಾದ ಎಲ್ಲವೂ ಇಲ್ಲಿ ಇದೆ. ಗೌಪ್ಯತೆಯನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು, ಮುಕ್ತ-ಮೂಲದೊಂದಿಗೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಉಚಿತವಾಗಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "ಉದಾಹರಣೆಗಳು: ಸಾರಾಂಶವನ್ನು ಪುನಃ ಬರೆಯುವುದು, ಒಂದು ಅನುಭವದ ಬುಲೆಟ್ ಅನ್ನು ಬಿಗಿಗೊಳಿಸುವುದು, ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು ಅಥವಾ ಕೆಲಸದ ವಿವರಣೆಗೆ ಅನುಗುಣವಾಗಿ ರೆಸ್ಯೂಮ್ ಅನ್ನು ಅಳವಡಿಸುವುದು."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "ಪೂರ್ಣ ಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಮರೆತಿರುವಿರಾ?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "ಸ್ವರೂಪ"
@@ -1397,6 +1486,10 @@ msgstr "ಸ್ವರೂಪ"
msgid "Free"
msgstr "ಉಚಿತ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "ಮುಕ್ತ-ರೂಪ"
#: src/libs/locale.ts
msgid "French"
msgstr "ಫ್ರೆಂಚ್"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "ಮಾದರಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "ಹೆಚ್ಚಿನ ಪ್ರಸ್ತಾವನೆ ಕ್ರಮಗಳು"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "ಸ್ಥಳಾಂತರಿಸಿ"
@@ -1978,6 +2075,10 @@ msgstr "https:// ನಿಂದ ಪ್ರಾರಂಭವಾಗಬೇಕು"
msgid "Name"
msgstr "ಹೆಸರು"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "ನೇಪಾಳಿ"
@@ -2008,6 +2109,10 @@ msgstr "ಹೊಸ ಪಾಸ್ವರ್ಡ್"
msgid "New Section"
msgstr "ಹೊಸ ವಿಭಾಗ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "ಮುಂದೆ"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "ಯಾವುದೇ ಜಾಹೀರಾತುಗಳಿಲ್ಲ, ಯಾವುದೇ ಟ್ರ್ಯಾಕಿಂಗ್ ಇಲ್ಲ"
@@ -2057,11 +2162,19 @@ msgstr "ನಿರಂತರ ನಿರ್ವಹಣೆ"
msgid "Open"
msgstr "ತೆರೆಯಿರಿ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "AI ಸಹಾಯಕವನ್ನು ತೆರೆಯಿರಿ"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "ಇಮೇಲ್ ಕ್ಲೈಂಟ್ ತೆರೆಯಿರಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "ಸಂಯೋಜನೆಗಳನ್ನು ತೆರೆಯಿರಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "ಸಂಯೋಜನೆಗಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ"
@@ -2215,6 +2328,10 @@ msgstr "ಮುಂದುವರಿಸಲು, ದಯವಿಟ್ಟು ರೆಸ್
msgid "Please enter the URL you want to link to:"
msgstr "ನೀವು ಲಿಂಕ್ ಮಾಡಲು ಬಯಸುವ URL ಅನ್ನು ನಮೂದಿಸಿ:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "ದಯವಿಟ್ಟು ಯೋಜನೆಯನ್ನು ಬೆಂಬಲಿಸಿ"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "ಸ್ಥಾನ"
msgid "Preferences"
msgstr "ಆದ್ಯತೆಗಳು"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "ಬದಲಾವಣೆಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "ಪ್ರೀಸೆಟ್‌ಗಳು"
@@ -2263,6 +2384,10 @@ msgstr "ಮುಖ್ಯವಚನವನ್ನಾ ಸೇರಿಸಲು ಅಥವ
msgid "Press <0>Enter</0> to open"
msgstr "ತೆರೆಯಲು <0>Enter</0> ಒತ್ತಿರಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "ಹಿಂದಿನದು"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "ಪ್ರಾಥಮಿಕ ಬಣ್ಣ"
@@ -2293,6 +2418,11 @@ msgstr "ಪ್ರಗತಿ ಪಟ್ಟೆ"
msgid "Projects"
msgstr "ಯೋಜನೆಗಳು"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "ಪ್ರಸ್ತಾವನೆ {0} / {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "ಪಾಸ್‌ವರ್ಡ್‌ರಿಂದ ಅನಧಿಕೃತ ಪ್ರವೇಶದಿಂದ ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅನ್ನು ರಕ್ಷಿಸಿ"
@@ -2315,6 +2445,10 @@ msgstr "ಪ್ರಕಟನೆಗಳು"
msgid "Publisher"
msgstr "ಪ್ರಕಾಶಕರು"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "ಕಚ್ಚಾ JSON ಪ್ಯಾಚ್"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - ಮುಖ್ಯ ಪುಟಕ್ಕೆ ಹೋಗಿ"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume ಉಚಿತ ಮತ್ತು ಮುಕ್ತ-ಮೂಲ
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ಅನ್ನು ರಚಿಸುವ, ನವೀಕರಿಸುವ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸುವ ಉಚಿತ ಮತ್ತು ಮುಕ್ತ-ಮೂಲ ರೆಸ್ಯೂಮ್ ನಿರ್ಮಾಪಕವಾಗಿದೆ."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮ್ ಉಚಿತ ಮತ್ತು ಮುಕ್ತ ಮೂಲವಾಗಿದೆ. ಇದು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಿದ್ದರೆ, ದಯವಿಟ್ಟು ದಾನ ಮಾಡುವುದನ್ನು ಪರಿಗಣಿಸಿ."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume ಮುಕ್ತ-ಮೂಲ, ಗೌಪ್ಯತಿಗೆ ಪ್ರಾಧಾನ್ಯ ನೀಡುವ ಹಾಗು ಸಂಪೂರ್ಣವಾಗಿ ಉಚಿತವಾಗಿದೆ. ಇತರೆ ರೆಸ್ಯೂಮ್ ನಿರ್ಮಾಪಕರಿಗಿಂತ ವಿಭಿನ್ನವಾಗಿ, ಇದು ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸುವುದಿಲ್ಲ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದಿಲ್ಲ, ಅಥವಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪೇಯ್‌ವಾಲ್ ಹಿಂದೆ ಮಿತಿ ಮಾಡುವುದಿಲ್ಲ."
@@ -2362,11 +2500,6 @@ msgstr "ಆಯತ"
msgid "Rectangle (Full Width)"
msgstr "ಆಯತ (ಪೂರ್ಣ ಅಗಲ)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "ಪುನಃಮಾಡು (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "ರಿಫ್ರೆಶ್ ಮಾಡಿ"
msgid "Register New Device"
msgstr "ಹೊಸ ಸಾಧನವನ್ನು ನೋಂದಾಯಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "ತಿರಸ್ಕರಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "ಎಲ್ಲವನ್ನೂ ತಿರಸ್ಕರಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "ತಿರಸ್ಕರಿಸಿದ ಪ್ರಸ್ತಾವನೆ"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನೆನಪಿದೆಯೇ? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "ಪರಿಶೀಲನಾ ಇಮೇಲ್ ಅನ್ನು ಮರುಕಳ
msgid "Reset"
msgstr "ಮರುಹೊಂದಿಸಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "ಚಾಟ್ ಮರುಹೊಂದಿಸಿ"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರು
msgid "Resetting your password..."
msgstr "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲಾಗುತ್ತಿದೆ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "AI ಸಹಾಯಕವನ್ನು ಮರುಗಾತ್ರಗೊಳಿಸಿ"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "ಸಂಪನ್ಮೂಲಗಳು"
@@ -2464,6 +2617,14 @@ msgstr "ರೆಸ್ಯೂಮ್ ವಿಶ್ಲೇಷಣೆ ಪೂರ್ಣಗ
msgid "Resumes"
msgstr "ರೆಸ್ಯೂಮೇ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "ಪರಿಶೀಲನೆ ಅಗತ್ಯವಿದೆ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "ಪರಿಶೀಲಿಸಿದ ಪ್ರಸ್ತಾವನೆಗಳು"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "ಬಲ ಸರಿಸು"
@@ -2562,6 +2723,10 @@ msgstr "ಆಯ್ಕೆಮಾಡಿ..."
msgid "Self-Host with Docker"
msgstr "ಡಾಕರ್ ಜೊತೆಗೆ ಸ್ವಯಂ ಹೋಸ್ಟ್"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "ಕಳುಹಿಸಿ"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಇಮ
msgid "Sending password reset email..."
msgstr "ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಇಮೇಲ್ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "ವಿಭಜಕ"
@@ -2709,6 +2878,10 @@ msgstr "ಒಂದು ಕಾಲಮ್, ಸೈಡ್‌ಬಾರ್ ಮತ್ತ
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "ಒಂದು ಕಾಲಮ್ ವಿನ್ಯಾಸ; ಇನ್‌ಲೈನ್ ಮೂರು-ಕಾಲಮ್ ಎಂಟ್ರಿ ಹೆಡರ್‌ೊಂದಿಗೆ (ಹುದ್ದೆ · ಸಂಸ್ಥೆ · ಅವಧಿ), ಸಂಕ್ಷಿಪ್ತ ಮತ್ತು ATS ಗೆ ಅನುಕೂಲಕರ, ಏಷ್ಯನ್ ರೆಸ್ಯೂಮ್ ಪದ್ಧತಿಗಳಿಗೆ (CN/JP/KR) ಚೆನ್ನಾಗಿ ಸೂಕ್ತವಾಗಿದೆ."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "ಪ್ರತಿ ಪುಟದಲ್ಲಿ ದೊಡ್ಡಕ್ಷರ ವಿಭಾಗ ಶೀರ್ಷಿಕೆಗಳು ಮತ್ತು ಪ್ರಾಥಮಿಕ-ಬಣ್ಣದ ಮೇಲ್ಭಾಗದ ನಿಯಮವನ್ನು ಹೊಂದಿರುವ ಏಕ-ಕಾಲಮ್; ಕಾರ್ಯನಿರ್ವಾಹಕ, ಸಲಹಾ ಅಥವಾ ಆರಂಭಿಕ ರೆಸ್ಯೂಮ್‌ಗಳಿಗಾಗಿ ಪಾಲಿಶ್ ಮಾಡಲಾಗಿದೆ."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "ಒಂದು ಕಾಲಮ್; ಹಿರಿಯ ಅಥವಾ ಎಂಟರ್‌ಪ್ರೈಸ್-ಮಟ್ಟದ ಹುದ್ದೆಗಳಿಗಾಗಿ ಮೆರಗು ಮತ್ತು ಗಂಭೀರ."
@@ -2809,6 +2982,10 @@ msgstr "ಅಂಕಿಅಂಶಗಳು"
msgid "Stay"
msgstr "ಇರಿ"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "ನಿಲ್ಲಿಸಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "ಬಲಗಳು"
@@ -2903,6 +3080,14 @@ msgstr "ಅಕ್ಷರದ ಬಣ್ಣ"
msgid "Thai"
msgstr "ಥಾಯ್"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "ಈ ರೆಸ್ಯೂಮ್‌ಗೆ ಇನ್ನು ಮುಂದೆ ಅನ್ವಯಿಸದ ಬದಲಾವಣೆಯನ್ನು AI ಪ್ರಸ್ತಾಪಿಸಿದೆ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "ಪೂರ್ವವೀಕ್ಷಣೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಪ್ರಸ್ತಾವನೆಯನ್ನು AI ಹಿಂತಿರುಗಿಸಿತು."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API ಕೀಲಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿ
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "ಅಳಿಸಿದ ನಂತರ ಈ API ಕೀಲಿಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಇನ್ನೂ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "ಪ್ರಸ್ತಾವನೆಯನ್ನು ಹಿಂದಿರುಗಿಸುವ ಮೊದಲು ಸಹಾಯಕ ನಿಲ್ಲಿಸಿದನು."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "ಇದು ನಿಮ್ಮ ರೆಸ್ಯೂಮ್‌ಗಾಗಿ URL
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "ಇದು AI ಪ್ರೊವೈಡರ್‌ನ ಪ್ರತಿಕ್ರಿಯೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿ ಕೆಲ ನಿಮಿಷಗಳು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ದಯವಿಟ್ಟು ವಿಂಡೋ ಅನ್ನು ಮುಚ್ಚಬೇಡಿ ಅಥವಾ ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಬೇಡಿ."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "ಈ ಪ್ರಸ್ತಾವನೆ ಹಳೆಯದಾಗಿದೆ. ಇತ್ತೀಚಿನ ರೆಸ್ಯೂಮ್‌ನಿಂದ ಇದನ್ನು ಪುನರುತ್ಪಾದಿಸಲು ಸಹಾಯಕರನ್ನು ಕೇಳಿ."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "ಈ ರೆಸ್ಯೂಮ್ ಲಾಕ್ ಆಗಿದೆ ಮತ್ತು ಅದನ್ನು ನವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."
@@ -3034,6 +3228,10 @@ msgstr "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಅಳಿಸಲು, ನೀ
msgid "Toggle left sidebar"
msgstr "ಎಡ ಸೈಡ್‌ಬಾರ್ ಟಾಗಲ್ ಮಾಡಿ"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "ಪುಟ ಸ್ಟ್ಯಾಕ್ ಮಾಡುವಿಕೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "ಉಕ್ರೇನಿಯನ್"
msgid "Underline"
msgstr "ಅಂಡರ್‌ಲೈನ್"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "ಮರುಹೊಂದಿ (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "ಅನಿಯಮಿತ ರೆಸ್ಯೂಮ್‌ಗಳು"
@@ -3387,10 +3580,6 @@ msgstr "ಎಕ್ಸ್ (ಟ್ವಿಟರ್)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "ಹೌದು, Reactive Resume ಅನೇಕ ಭಾಷೆಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ. ನೀವು ಸೆಟ್ಟಿಂಗ್ಸ್ ಪುಟದಲ್ಲಿ ಅಥವಾ ಮೇಲ್ಭಾಗದ ಬಲ ಮೂಲೆಯಲ್ಲಿರುವ ಭಾಷಾ ಸ್ವಿಚರ್ ಬಳಸಿ ನಿಮ್ಮ ಇಷ್ಟದ ಭಾಷೆಯನ್ನು ಆರಿಸಬಹುದು. ನಿಮ್ಮ ಭಾಷೆ ಕಾಣದಿದ್ದರೆ ಅಥವಾ ಇತ್ತೀಚಗಿನ ಅನುವಾದಗಳನ್ನು ಸುಧಾರಿಸಲು ಬಯಸಿದರೆ, ನೀವು <0>Crowdin ನಲ್ಲಿ ಅನುವಾದಗಳಿಗೆ ಕೊಡುಗೆ ನೀಡಬಹುದು<1> (ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯುತ್ತದೆ)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "ಹೌದು! ಪ್ರತಿ ಮಾದರಿಯು ಸಂಪೂರ್ಣವಾಗಿ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದಾಗಿದೆ. ನೀವು ಬಣ್ಣಗಳು, ಫಾಂಟ್‌ಗಳು, ಅಂತರ ಮತ್ತು ನಿಮ್ಮ ರೆಸ್ಯೂಮ್‌ನ ರೂಪುರೇಷೆಯ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣಕ್ಕಾಗಿ ಕಸ್ಟಮ್ CSS ಕೂಡ ಬರೆಯಬಹುದು."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "ಹೌದು! Reactive Resume ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಉಚಿತವಾಗಿ ಬಳಸಬಹುದು, ಯಾವುದೇ ಅಡಕ ವೆಚ್ಚಗಳು, ಪ್ರೀಮಿಯಂ ಹಂತಗಳು ಅಥವಾ ಚಂದಾ ಶುಲ್ಕಗಳಿಲ್ಲದೇ. ಇದು ಮುಕ್ತ-ಮೂಲವಾಗಿದ್ದು ಯಾವಾಗಲೂ ಉಚಿತವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ."
@@ -3440,7 +3629,7 @@ msgstr "ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ಥಳೀಯವಾಗ
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಎಂದಿಗೂ ತೃತೀಯಪಕ್ಷಗಳೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ. ನಿಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣಕ್ಕಾಗಿ ನಿಮ್ಮದೇ ಸರ್ವರ್‌ಗಳಲ್ಲಿ Reactive Resume ಅನ್ನು ಸ್ವಯಂ-ಹೋಸ್ಟ್ ಮಾಡಬಹುದು."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲಾಗಲಿಲ್ಲ."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, other {#개 항목}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, other {# 개 역할}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} 제안 검토 완료"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "물론 가능합니다! 한 번의 클릭으로 이력서를 PDF로 내보낼 수 있습니다. 내보낸 PDF에는 모든 서식과 스타일이 그대로 유지됩니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "수용하다"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "모두 수락"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "제안서가 승인되었습니다"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "API를 사용해 이력서와 데이터를 프로그래밍 방식으로 사용할 수 있습니다."
@@ -229,10 +246,38 @@ msgstr "앞에 행 추가"
msgid "Afrikaans"
msgstr "아프리칸스어"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "후에"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "AI 통합 기능이 비활성화되었습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "AI 관련 제안이 접수되었습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI 관련 제안이 거부되었습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "AI 관련 제안이 적용되었습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "AI 관련 제안이 거부되었습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "AI 이력서 도우미"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "알바니아어"
@@ -367,10 +412,22 @@ msgstr "연구 분야"
msgid "Artificial Intelligence"
msgstr "인공지능"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "이력서 수정 요청을 구체적으로 해주세요..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "점진적인 변화를 요구하세요"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "가로세로 비율"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "보조 요청이 실패했습니다."
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "기본 사항"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "선택할 수 있는 아름다운 템플릿이 준비되어 있으며, 앞으로 더 추가될 예정입니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "전에"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "벵골어"
@@ -462,10 +523,6 @@ msgstr "글머리 기호 목록"
msgid "By the community, for the community."
msgstr "커뮤니티에 의해, 커뮤니티를 위해."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "템플릿을 사용자 지정할 수 있나요?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "이력서를 PDF로 내보낼 수 있나요?"
@@ -576,6 +633,14 @@ msgstr "지우기"
msgid "Click here to select a file to import"
msgstr "가져올 파일을 선택하려면 여기를 클릭하세요"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "닫기"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "AI 비서 닫기"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "코드 블록"
@@ -622,6 +687,10 @@ msgstr "확인"
msgid "Connect"
msgstr "연결"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "이력서 편집 제안을 사용하기 전에 AI 제공업체를 연결하고 검증하세요."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "이 비밀 키를 복사해 애플리케이션에 붙여넣어 데이터
msgid "Copy URL"
msgstr "URL 복사"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "AI 제안을 적용할 수 없었습니다."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "연결 해제"
msgid "Discord"
msgstr "디스코드"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "해고하다"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "문서"
msgid "Don't have an account? <0/>"
msgstr "계정이 없으신가요? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "기부하세요"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Reactive Resume에 기부하기"
@@ -1094,6 +1175,10 @@ msgstr "2단계 인증 활성화"
msgid "Enable AI Features"
msgstr "AI 기능 활성화"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "AI 통합 활성화"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "2단계 인증 활성화"
@@ -1162,6 +1247,10 @@ msgstr "여기에 입력한 모든 내용은 브라우저에 로컬로 저장됩
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "전문적인 이력서를 만들고, 사용자 지정하고, 공유하는 데 필요한 모든 것을 제공합니다. 개인정보 보호를 최우선으로 설계되었으며, 오픈 소스로 구동되고, 완전히 무료입니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "예시: 요약 내용을 다시 작성하거나, 특정 경력 항목을 더 간결하게 다듬거나, 성과 지표를 추가하거나, 채용 공고에 맞춰 이력서를 수정하세요."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "전체 화면 종료"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "비밀번호를 잊으셨나요?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "용지 형식"
@@ -1397,6 +1486,10 @@ msgstr "용지 형식"
msgid "Free"
msgstr "무료"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "자유 형식"
#: src/libs/locale.ts
msgid "French"
msgstr "프랑스어"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "모델"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "추가 제안 조치"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "이동"
@@ -1978,6 +2075,10 @@ msgstr "https:// 으로 시작해야 합니다."
msgid "Name"
msgstr "이름"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "검토 필요"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "네팔어"
@@ -2008,6 +2109,10 @@ msgstr "새 비밀번호"
msgid "New Section"
msgstr "새 섹션"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "다음"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "광고 없음, 추적 없음"
@@ -2057,11 +2162,19 @@ msgstr "지속적인 유지 관리"
msgid "Open"
msgstr "열기"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "오픈 AI 어시스턴트"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "이메일 클라이언트 열기"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "오픈 통합"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "통합 설정 열기"
@@ -2215,6 +2328,10 @@ msgstr "이력서 소유자가 공유한 비밀번호를 입력해 계속 진행
msgid "Please enter the URL you want to link to:"
msgstr "링크할 URL을 입력하세요:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "이 프로젝트를 지원해 주세요."
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "직책"
msgid "Preferences"
msgstr "환경 설정"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "변경 준비 중"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "사전 설정"
@@ -2263,6 +2384,10 @@ msgstr "현재 키워드를 추가하거나 저장하려면 <0>{RETURN_KEY}</0>
msgid "Press <0>Enter</0> to open"
msgstr "<0>Enter</0> 키를 눌러 열기"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "이전"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "기본 색상"
@@ -2293,6 +2418,11 @@ msgstr "진행률 바"
msgid "Projects"
msgstr "프로젝트"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "{0} 의 제안 {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "비밀번호로 이력서를 보호해, 허가되지 않은 접근을 막으세요"
@@ -2315,6 +2445,10 @@ msgstr "출판물"
msgid "Publisher"
msgstr "발행인"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "원시 JSON 패치"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - 홈페이지로 이동"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume는 애정을 담아 만든 무료 오픈 소스 프로
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume는 이력서 작성, 업데이트 및 공유를 간단하게 할 수 있는 무료 오픈 소스 이력서 작성 도구입니다."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive Resume는 무료 오픈 소스 소프트웨어입니다. 도움이 되셨다면 기부를 고려해 주세요."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume는 오픈 소스, 개인정보 보호 중심, 완전 무료 서비스입니다. 다른 이력서 작성 도구와 달리 광고를 표시하지 않고, 데이터를 추적하지 않으며, 기능을 페이월 뒤에 숨기지도 않습니다."
@@ -2362,11 +2500,6 @@ msgstr "사각형"
msgid "Rectangle (Full Width)"
msgstr "사각형(전체 너비)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "다시 실행 (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "새로고침"
msgid "Register New Device"
msgstr "새 장치 등록"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "거부하다"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "모두 거부하세요"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "제안이 거절되었습니다"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "비밀번호가 기억나시나요? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "인증 이메일을 다시 보내는 중입니다..."
msgid "Reset"
msgstr "초기화"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "채팅 초기화"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "비밀번호 재설정"
msgid "Resetting your password..."
msgstr "비밀번호를 재설정하는 중입니다..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "AI 비서 크기 조정"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "리소스"
@@ -2464,6 +2617,14 @@ msgstr "이력서 분석 완료."
msgid "Resumes"
msgstr "이력서"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "검토 필요"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "검토된 제안서"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "오른쪽 정렬"
@@ -2562,6 +2723,10 @@ msgstr "선택..."
msgid "Self-Host with Docker"
msgstr "Docker로 자체 호스팅"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "보내다"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "비밀번호 재설정 이메일 보내기"
msgid "Sending password reset email..."
msgstr "비밀번호 재설정 이메일을 보내는 중입니다..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "요청 전송"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "구분선"
@@ -2709,6 +2878,10 @@ msgstr "사이드바와 깔끔한 그리드 레이아웃을 갖춘 단일 열
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "인라인 3열 항목 헤더(직위-조직-기간)가 있는 단일 열로, 컴팩트하고 ATS 친화적이며 아시아 이력서 양식(CN/JP/KR)에 적합합니다."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "각 페이지 상단에 기본 색상의 선이 있고, 섹션 제목은 대문자로 된 단일 열 레이아웃입니다. 임원, 컨설턴트 또는 스타트업 이력서에 적합하도록 세련되게 디자인되었습니다."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "단일 열 구성에 세련되고 진중한 느낌을 더한 템플릿으로, 시니어 혹은 엔터프라이즈급 포지션에 적합합니다."
@@ -2809,6 +2982,10 @@ msgstr "통계"
msgid "Stay"
msgstr "머물기"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "멈추다"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "강점"
@@ -2903,6 +3080,14 @@ msgstr "텍스트 색상"
msgid "Thai"
msgstr "태국어"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "AI가 제안한 변경 사항은 더 이상 이 이력서에 적용되지 않습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "AI가 미리 볼 수 없는 제안을 반환했습니다."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API 키가 성공적으로 삭제되었습니다."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "API 키를 삭제하면 더 이상 데이터에 액세스할 수 없습니다. 이 작업은 되돌릴 수 없습니다."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "비서는 제안서를 돌려주기 전에 잠시 멈칫했다."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "이것은 이력서에 사용할 URL 친화적인 이름입니다."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "AI 제공자의 응답 속도에 따라 몇 분 정도 걸릴 수 있습니다. 창을 닫거나 페이지를 새로 고치지 마세요."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "이 제안서는 오래된 것입니다. 담당자에게 최신 이력서를 바탕으로 다시 작성해 달라고 요청하세요."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "이 이력서는 잠겨 있어 수정할 수 없습니다."
@@ -3034,6 +3228,10 @@ msgstr "계정을 삭제하려면 확인 문구를 입력한 뒤 아래 버튼
msgid "Toggle left sidebar"
msgstr "왼쪽 사이드바 토글"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "페이지 스태킹 토글"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "우크라이나어"
msgid "Underline"
msgstr "밑줄"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "실행 취소 (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "무제한 이력서"
@@ -3387,10 +3580,6 @@ msgstr "X (트위터)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "네, Reactive Resume는 여러 언어로 제공됩니다. 설정 페이지나 오른쪽 상단의 언어 전환기를 사용해 원하는 언어를 선택할 수 있습니다. 원하는 언어가 없거나 기존 번역을 개선하고 싶다면, <0>Crowdin에서 번역에 기여해 보세요<1> (새 탭에서 열림)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "네! 모든 템플릿은 완전히 사용자 지정할 수 있습니다. 색상, 글꼴, 간격을 변경하고, 사용자 지정 CSS를 작성해 이력서의 외형을 완전히 제어할 수 있습니다."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "네! Reactive Resume는 숨은 비용, 프리미엄 플랜, 구독료 없이 완전히 무료로 사용할 수 있습니다. 오픈 소스이며 앞으로도 계속 무료로 제공됩니다."
@@ -3440,7 +3629,7 @@ msgstr "데이터는 브라우저에 로컬로 저장됩니다"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "데이터는 안전하게 저장되며 제3자와 공유되지 않습니다. 또한 Reactive Resume를 직접 서버에 호스팅해 데이터에 대한 완전한 제어권을 가질 수 있습니다."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "최근 변경 내용을 저장할 수 없습니다."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: lt\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:05\n"
"Last-Translator: \n"
"Language-Team: Lithuanian\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && (n%100>19 || n%100<11) ? 0 : (n%10>=2 && n%10<=9) && (n%100>19 || n%100<11) ? 1 : n%1!=0 ? 2: 3);\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, one {# elementas} few {# elementai} many {# elementų} other
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, one {# vaidmuo} few {# vaidmenys} many {# vaidmenų} other {# vaidmenys}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} peržiūrėti pasiūlymai"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Žinoma! Galite vienu spustelėjimu eksportuoti savo gyvenimo aprašymą į PDF. Eksportuotas PDF išsaugo visą jūsų formatavimą ir stilių."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Priimti"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Priimti visus"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Priimtas pasiūlymas"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Programiškai pasiekite savo gyvenimo aprašymus ir duomenis naudodami API."
@@ -229,10 +246,38 @@ msgstr "Pridėti eilutę prieš"
msgid "Afrikaans"
msgstr "Afrikanso"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Po"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "AI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Dirbtinio intelekto integracija išjungta"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Pritaikytas dirbtinio intelekto pasiūlymas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "DI pasiūlymas atmestas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Pritaikyti dirbtinio intelekto pasiūlymai."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Dirbtinio intelekto pasiūlymai atmesti."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Dirbtinio intelekto gyvenimo aprašymo asistentas"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albanų"
@@ -367,10 +412,22 @@ msgstr "Studijų sritis"
msgid "Artificial Intelligence"
msgstr "Dirbtinis intelektas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Paprašykite tikslinio gyvenimo aprašymo pakeitimo..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Paprašykite laipsniško pakeitimo"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Vaizdo santykis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Asistento užklausa nepavyko"
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Pagrindai"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Gražūs šablonai, iš kurių galima rinktis, ir dar daugiau pakeliui."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Prieš"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengalų"
@@ -462,10 +523,6 @@ msgstr "Suženklintas sąrašas"
msgid "By the community, for the community."
msgstr "Bendruomenės ir bendruomenei."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Ar galiu pritaikyti šablonus?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Ar galiu eksportuoti savo gyvenimo aprašymą į PDF?"
@@ -576,6 +633,14 @@ msgstr "Skaidrus"
msgid "Click here to select a file to import"
msgstr "Spustelėkite čia, kad pasirinktumėte importuojamą failą"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Uždaryti"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Uždaryti DI asistentą"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Kodo blokas"
@@ -622,6 +687,10 @@ msgstr "Patvirtinti"
msgid "Connect"
msgstr "Prisijungti"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Prieš naudodami gyvenimo aprašymo redagavimo pasiūlymus, prisijunkite prie dirbtinio intelekto teikėjo ir jį patikrinkite."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Nukopijuokite šį slaptą raktą ir naudokite jį savo programose duome
msgid "Copy URL"
msgstr "Kopijuoti URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Nepavyko pritaikyti dirbtinio intelekto pasiūlymo."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Atsijungti"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Atmesti"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentacija"
msgid "Don't have an account? <0/>"
msgstr "Neturite paskyros? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Paaukoti"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Paaukoti „Reactive Resume“"
@@ -1094,6 +1175,10 @@ msgstr "Įjungti 2FA"
msgid "Enable AI Features"
msgstr "Įjungti DI funkcijas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Įgalinti dirbtinio intelekto integraciją"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Įjungti dviejų veiksnių tapatumo patvirtinimą"
@@ -1162,6 +1247,10 @@ msgstr "Viskas, ką čia įvedate, saugoma vietoje jūsų naršyklėje. Jūsų d
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Viskas, ko reikia sukurti, pritaikyti ir bendrinti profesionalius gyvenimo aprašymus. Sukurta atsižvelgiant į privatumą, paremta atviruoju kodu ir visiškai nemokama visam laikui."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Pavyzdžiai: perrašykite santrauką, sugriežtinkite vieną patirties punktą, pridėkite metrikų arba pritaikykite gyvenimo aprašymą pareigybės aprašymui."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Išeiti iš viso ekrano"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Pamiršote slaptažodį?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formatas"
@@ -1397,6 +1486,10 @@ msgstr "Formatas"
msgid "Free"
msgstr "Nemokama"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Laisva forma"
#: src/libs/locale.ts
msgid "French"
msgstr "Prancūzų"
@@ -1952,6 +2045,10 @@ msgstr "\"Microsoft Word"
msgid "Model"
msgstr "Modelis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Daugiau pasiūlymų veiksmų"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Perkelti į"
@@ -1978,6 +2075,10 @@ msgstr "Turi prasidėti nuo https://"
msgid "Name"
msgstr "Pavadinimas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Reikia peržiūrėti"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepalų"
@@ -2008,6 +2109,10 @@ msgstr "Naujas slaptažodis"
msgid "New Section"
msgstr "Naujas skyrius"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Kitas"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Be reklamų, be sekimo"
@@ -2057,11 +2162,19 @@ msgstr "Nuolatinė priežiūra"
msgid "Open"
msgstr "Atidaryti"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Atidaryti dirbtinio intelekto asistentą"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Atidaryti el. pašto programą"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Atviros integracijos"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Atidarykite Integracijos nustatymai"
@@ -2215,6 +2328,10 @@ msgstr "Norėdami tęsti, įveskite gyvenimo aprašymo savininko su jumis pasida
msgid "Please enter the URL you want to link to:"
msgstr "Įveskite URL, su kuriuo norite susieti:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Prašome paremti projektą"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Pareigos"
msgid "Preferences"
msgstr "Nustatymai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Ruošiami pakeitimai"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Išankstiniai nustatymai"
@@ -2263,6 +2384,10 @@ msgstr "Paspauskite <0>{RETURN_KEY}</0> arba <1>{COMMA_KEY}</1>, kad pridėtumė
msgid "Press <0>Enter</0> to open"
msgstr "Paspauskite <0>Enter</0>, kad atidarytumėte"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Ankstesnis"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Pagrindinė spalva"
@@ -2293,6 +2418,11 @@ msgstr "Progreso juosta"
msgid "Projects"
msgstr "Projektai"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Pasiūlymas {0} iš {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Apsaugokite savo gyvenimo aprašymą slaptažodžiu nuo neteisėtos prieigos"
@@ -2315,6 +2445,10 @@ msgstr "Publikacijos"
msgid "Publisher"
msgstr "Leidėjas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Neapdorotas JSON pataisymas"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "„Reactive Resume“ – eiti į pagrindinį puslapį"
@@ -2336,6 +2470,10 @@ msgstr "„Reactive Resume“ yra nemokamas atvirojo kodo projektas, sukurtas su
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "„Reactive Resume“ – nemokama atvirojo kodo gyvenimo aprašymų kūrimo priemonė, supaprastinanti gyvenimo aprašymo kūrimo, atnaujinimo ir bendrinimo procesą."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "„Reactive Resume“ yra nemokamas ir atvirojo kodo. Jei jis jums padėjo, apsvarstykite galimybę paaukoti."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "„Reactive Resume“ yra atvirojo kodo, orientuota į privatumą ir visiškai nemokama. Skirtingai nei kiti gyvenimo aprašymų kūrėjai, ji nerodo reklamų, nerenka jūsų duomenų ir neapriboja funkcijų už mokamos sienos."
@@ -2362,11 +2500,6 @@ msgstr "Stačiakampis"
msgid "Rectangle (Full Width)"
msgstr "Stačiakampis (visas plotis)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Atkurti (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Perkrauti"
msgid "Register New Device"
msgstr "Naujo įrenginio registravimas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Atmesti"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Atmesti viską"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Atmestas pasiūlymas"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Prisimenate slaptažodį? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Iš naujo siunčiamas patvirtinimo el. laiškas..."
msgid "Reset"
msgstr "Nustatyti iš naujo"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Iš naujo nustatyti pokalbių langą"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Atkurkite slaptažodį"
msgid "Resetting your password..."
msgstr "Atstatomas slaptažodis..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Keisti dirbtinio intelekto asistento dydį"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Ištekliai"
@@ -2464,6 +2617,14 @@ msgstr "Baigta gyvenimo aprašymo analizė."
msgid "Resumes"
msgstr "Gyvenimo aprašymai"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Reikalinga peržiūra"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Peržiūrėti pasiūlymai"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Lygiuoti dešinėje"
@@ -2562,6 +2723,10 @@ msgstr "Pasirinkite..."
msgid "Self-Host with Docker"
msgstr "Savarankiškas talpinimas naudojant Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Siųsti"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Siųsti slaptažodžio atkūrimo el. laišką"
msgid "Sending password reset email..."
msgstr "Siunčiamas slaptažodžio atkūrimo el. laiškas..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Siunčiama užklausa"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Skirtukas"
@@ -2709,6 +2878,10 @@ msgstr "Vienas stulpelis su šonine juosta ir švariu tinklelio išdėstymu; uni
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Vieno stulpelio su trijų stulpelių įvesties antraštėmis (pareigos - organizacija - taškas); kompaktiškas ir patogus ATS, gerai pritaikytas Azijos šalių CV konvencijoms (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Vieno stulpelio su didžiosiomis raidėmis rašomomis skyrių antraštėmis ir pagrindinės spalvos viršutine linija kiekviename puslapyje; puikiai tinka vadovų, konsultavimo ar startuolių gyvenimo aprašymams."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Vienas stulpelis; solidus ir rimtas vyresnio ar aukšto lygio pareigoms."
@@ -2809,6 +2982,10 @@ msgstr "Statistika"
msgid "Stay"
msgstr "Likti"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Stop"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Stipriosios pusės"
@@ -2903,6 +3080,14 @@ msgstr "Teksto spalva"
msgid "Thai"
msgstr "Tajų"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Dirbtinis intelektas pasiūlė pakeitimą, kuris šiam gyvenimo aprašymui nebetaikomas."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Dirbtinis intelektas pateikė pasiūlymą, kurio nebuvo galima peržiūrėti."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API raktas sėkmingai ištrintas."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Po ištrynimo šis API raktas nebegalės pasiekti jūsų duomenų. Šio veiksmo anuliuoti neįmanoma."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Asistentas sustojo prieš atsakydamas pasiūlymu."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Tai URL draugiškas jūsų gyvenimo aprašymo pavadinimas."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Tai gali užtrukti kelias minutes, priklausomai nuo DI tiekėjo atsako. Neuždarykite lango ir neatnaujinkite puslapio."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Šis pasiūlymas pasenęs. Paprašykite asistento jį iš naujo sukurti iš naujausio gyvenimo aprašymo."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Šis gyvenimo aprašymas užrakintas ir negali būti atnaujintas."
@@ -3034,6 +3228,10 @@ msgstr "Norėdami ištrinti paskyrą, įveskite patvirtinimo tekstą ir spustel
msgid "Toggle left sidebar"
msgstr "Perjungti kairę šoninę juostą"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Perjungti puslapių krūvojimą"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukrainiečių"
msgid "Underline"
msgstr "Pabraukti"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Anuliuoti (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Neriboti gyvenimo aprašymai"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Taip, „Reactive Resume“ prieinama keliomis kalbomis. Galite pasirinkti pageidaujamą kalbą nustatymų puslapyje arba naudoti kalbos perjungiklį viršutiniame dešiniajame kampe. Jei nematote savo kalbos arba norite patobulinti esamus vertimus, galite <0>prisidėti prie vertimų „Crowdin“<1> (atidaro naujame skirtuke)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Taip! Kiekvienas šablonas visiškai pritaikomas. Galite keisti spalvas, šriftus, tarpelius ir net rašyti pasirinktinį CSS, kad visiškai valdytumėte savo gyvenimo aprašymo išvaizdą."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Taip! „Reactive Resume“ visiškai nemokama naudoti – be paslėptų kainų, „premium“ lygių ar prenumeratos mokesčių. Ji yra atvirojo kodo ir visada tokia išliks."
@@ -3440,7 +3629,7 @@ msgstr "Jūsų duomenys saugomi vietoje"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Jūsų duomenys saugiai laikomi ir niekada nebendrinami su trečiosiomis šalimis. Taip pat galite savarankiškai talpinti „Reactive Resume“ savo serveriuose ir visiškai kontroliuoti savo duomenis."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Nepavyko išsaugoti naujausių pakeitimų."
+211 -22
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: lv\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-07 14:32\n"
"PO-Revision-Date: 2026-05-13 06:07\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
@@ -48,6 +48,11 @@ msgstr "{0, plural, zero {# ierakstu} one {# ieraksts} other {# ieraksti}}"
msgid "{0, plural, one {# role} other {# roles}}"
msgstr "{0, plural, zero {# lomas} one {# loma} other {# lomas}}"
#. placeholder {0}: resolutions.length
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "{0} proposals reviewed"
msgstr "{0} pārskatītie priekšlikumi"
#: src/routes/builder/$resumeId/-sidebar/left/sections/custom.tsx
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
msgid "{column, plural, one {# Column} other {# Columns}}"
@@ -119,6 +124,18 @@ msgstr "A4"
msgid "Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly."
msgstr "Protams! Jūs varat eksportēt savu CV uz PDF ar vienu klikšķi. Eksportētais PDF pilnībā saglabā visu jūsu formatējumu un stilu."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept"
msgstr "Pieņemt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accept all"
msgstr "Pieņemt visus"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Accepted proposal"
msgstr "Akceptēts priekšlikums"
#: src/routes/_home/-sections/features.tsx
msgid "Access your resumes and data programmatically using the API."
msgstr "Piekļūstiet saviem CV un datiem programmatiski, izmantojot API."
@@ -229,10 +246,38 @@ msgstr "Pievienot rindu pirms"
msgid "Afrikaans"
msgstr "Afrikandu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "After"
msgstr "Pēc"
#: src/dialogs/resume/import.tsx
msgid "AI"
msgstr "MI"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI integration disabled"
msgstr "Mākslīgā intelekta integrācija ir atspējota"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal applied."
msgstr "Mākslīgā intelekta priekšlikums ir piemērots."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposal rejected."
msgstr "AI priekšlikums noraidīts."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals applied."
msgstr "Piemēroti mākslīgā intelekta priekšlikumi."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI proposals rejected."
msgstr "Mākslīgā intelekta priekšlikumi noraidīti."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "AI Resume Assistant"
msgstr "Mākslīgā intelekta CV palīgs"
#: src/libs/locale.ts
msgid "Albanian"
msgstr "Albāņu"
@@ -367,10 +412,22 @@ msgstr "Studiju joma"
msgid "Artificial Intelligence"
msgstr "Mākslīgais intelekts"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for a targeted resume change..."
msgstr "Pieprasiet mērķtiecīgu CV maiņu..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Ask for an incremental change"
msgstr "Lūdziet pakāpeniskas izmaiņas"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Aspect Ratio"
msgstr "Proporcijas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Assistant request failed"
msgstr "Asistenta pieprasījums neizdevās."
#: src/components/command-palette/pages/navigation.tsx
#: src/routes/dashboard/-components/sidebar.tsx
#: src/routes/dashboard/settings/authentication/index.tsx
@@ -421,6 +478,10 @@ msgstr "Pamatinformācija"
msgid "Beautiful templates to choose from, with more on the way."
msgstr "Skaistas veidnes, no kurām izvēlēties, un vēl vairāk drīzumā."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Before"
msgstr "Pirms"
#: src/libs/locale.ts
msgid "Bengali"
msgstr "Bengāļu"
@@ -462,10 +523,6 @@ msgstr "Aizzīmju saraksts"
msgid "By the community, for the community."
msgstr "No kopienas kopienai."
#: src/routes/_home/-sections/faq.tsx
msgid "Can I customize the templates?"
msgstr "Vai varu pielāgot veidnes?"
#: src/routes/_home/-sections/faq.tsx
msgid "Can I export my resume to PDF?"
msgstr "Vai varu eksportēt savu CV uz PDF?"
@@ -576,6 +633,14 @@ msgstr "Skaidrs"
msgid "Click here to select a file to import"
msgstr "Noklikšķiniet šeit, lai izvēlētos importējamo failu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Close"
msgstr "Aizvērt"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Close AI assistant"
msgstr "Aizvērt mākslīgā intelekta palīgu"
#: src/components/input/rich-input.tsx
msgid "Code Block"
msgstr "Koda bloks"
@@ -622,6 +687,10 @@ msgstr "Apstiprināt"
msgid "Connect"
msgstr "Savienot"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Connect and verify an AI provider before using resume editing proposals."
msgstr "Pirms CV rediģēšanas priekšlikumu izmantošanas izveidojiet savienojumu ar mākslīgā intelekta pakalpojumu sniedzēju un pārbaudiet to."
#: src/dialogs/resume/sections/cover-letter.tsx
#: src/dialogs/resume/sections/summary-item.tsx
msgid "Content"
@@ -669,6 +738,10 @@ msgstr "Nokopējiet šo slepeno atslēgu un izmantojiet to savās lietotnēs, la
msgid "Copy URL"
msgstr "Kopēt URL"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Could not apply the AI proposal."
msgstr "Nevarēja lietot mākslīgā intelekta priekšlikumu."
#. Error description when AI provider cannot be reached during resume analysis
#. Error shown when AI provider is unreachable during PDF/DOCX resume import
#. Error shown when the configured AI provider cannot be reached during connection test
@@ -961,6 +1034,10 @@ msgstr "Atvienot"
msgid "Discord"
msgstr "Discord"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "Noraidīt"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Documentation"
@@ -970,6 +1047,10 @@ msgstr "Dokumentācija"
msgid "Don't have an account? <0/>"
msgstr "Nav konta? <0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "Ziedot"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
msgstr "Ziedot Reactive Resume"
@@ -1094,6 +1175,10 @@ msgstr "Iespējot 2FA"
msgid "Enable AI Features"
msgstr "Iespējot MI funkcijas"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Enable AI integration"
msgstr "Iespējot mākslīgā intelekta integrāciju"
#: src/dialogs/auth/enable-two-factor.tsx
msgid "Enable Two-Factor Authentication"
msgstr "Iespējot divu faktoru autentifikāciju"
@@ -1162,6 +1247,10 @@ msgstr "Viss, ko ievadāt šeit, tiek glabāts lokāli jūsu pārlūkprogrammā.
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
msgstr "Viss, kas jums nepieciešams, lai izveidotu, pielāgotu un kopīgotu profesionālus CV. Veidots, domājot par privātumu, darbināms ar atvērtā pirmkoda risinājumiem un pilnīgi bez maksas uz visiem laikiem."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Examples: rewrite the summary, tighten one experience bullet, add metrics, or adapt the resume for a job description."
msgstr "Piemēri: pārrakstīt kopsavilkumu, sašaurināt vienu pieredzes aizzīmi, pievienot rādītājus vai pielāgot CV amata aprakstam."
#: src/components/input/rich-input.tsx
msgid "Exit Fullscreen"
msgstr "Iziet no pilnekrāna"
@@ -1389,7 +1478,7 @@ msgid "Forgot your password?"
msgstr "Aizmirsāt paroli?"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgctxt "Page Format (A4, Letter)"
msgctxt "Page Format (A4, Letter, Free-form)"
msgid "Format"
msgstr "Formāts"
@@ -1397,6 +1486,10 @@ msgstr "Formāts"
msgid "Free"
msgstr "Bezmaksas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Free-form"
msgstr "Brīvā forma"
#: src/libs/locale.ts
msgid "French"
msgstr "Franču"
@@ -1952,6 +2045,10 @@ msgstr "Microsoft Word"
msgid "Model"
msgstr "Modelis"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "More proposal actions"
msgstr "Vairāk priekšlikumu darbību"
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-item.tsx
msgid "Move to"
msgstr "Pārvietot uz"
@@ -1978,6 +2075,10 @@ msgstr "Jāuzsāk ar https://"
msgid "Name"
msgstr "Nosaukums"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Needs review"
msgstr "Nepieciešama pārskatīšana"
#: src/libs/locale.ts
msgid "Nepali"
msgstr "Nepāļu"
@@ -2008,6 +2109,10 @@ msgstr "Jaunā parole"
msgid "New Section"
msgstr "Jauna sadaļa"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Next"
msgstr "Nākamais"
#: src/routes/_home/-sections/features.tsx
msgid "No Advertising, No Tracking"
msgstr "Bez reklāmām, bez izsekošanas"
@@ -2057,11 +2162,19 @@ msgstr "Nepārtraukta uzturēšana"
msgid "Open"
msgstr "Atvērt"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Open AI assistant"
msgstr "Atvērt AI palīgu"
#. Button label to open the user's default email app
#: src/routes/auth/forgot-password.tsx
msgid "Open Email Client"
msgstr "Atvērt e-pasta klientu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Open Integrations"
msgstr "Atvērtās integrācijas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Open Integrations Settings"
msgstr "Atvērt Integrāciju iestatījumi"
@@ -2215,6 +2328,10 @@ msgstr "Lūdzu, ievadiet paroli, ko ar jums kopīgoja CV īpašnieks, lai turpin
msgid "Please enter the URL you want to link to:"
msgstr "Lūdzu, ievadiet URL, uz kuru vēlaties izveidot saiti:"
#: src/components/ui/donation-toast.tsx
msgid "Please support the project"
msgstr "Lūdzu, atbalstiet projektu"
#: src/routes/$username/-components/public-resume.tsx
#: src/routes/builder/$resumeId/-components/dock.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
@@ -2250,6 +2367,10 @@ msgstr "Amats"
msgid "Preferences"
msgstr "Preferences"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Preparing changes"
msgstr "Izmaiņu sagatavošana"
#: src/components/input/color-picker.tsx
msgid "Presets"
msgstr "Sākotnējie iestatījumi"
@@ -2263,6 +2384,10 @@ msgstr "Nospiediet <0>{RETURN_KEY}</0> vai <1>{COMMA_KEY}</1>, lai pievienotu va
msgid "Press <0>Enter</0> to open"
msgstr "Nospiediet <0>Enter</0>, lai atvērtu"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Prev"
msgstr "Iepriekšējais"
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
msgid "Primary Color"
msgstr "Primārā krāsa"
@@ -2293,6 +2418,11 @@ msgstr "Progresa josla"
msgid "Projects"
msgstr "Projekti"
#. placeholder {0}: index + 1
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Proposal {0} of {total}"
msgstr "Priekšlikums {0} no {total}"
#: src/routes/builder/$resumeId/-sidebar/right/sections/sharing.tsx
msgid "Protect your resume from unauthorized access with a password"
msgstr "Aizsargājiet savu CV no nesankcionētas piekļuves ar paroli"
@@ -2315,6 +2445,10 @@ msgstr "Publikācijas"
msgid "Publisher"
msgstr "Izdevējs"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Raw JSON Patch"
msgstr "Neapstrādāts JSON ielāps"
#: src/routes/_home/-sections/header.tsx
msgid "Reactive Resume - Go to homepage"
msgstr "Reactive Resume - doties uz sākumlapu"
@@ -2336,6 +2470,10 @@ msgstr "Reactive Resume ir bezmaksas un atvērtā pirmkoda projekts, kas veidots
msgid "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
msgstr "Reactive Resume ir bezmaksas un atvērtā pirmkoda CV veidotājs, kas vienkāršo jūsu CV izveides, atjaunināšanas un kopīgošanas procesu."
#: src/components/ui/donation-toast.tsx
msgid "Reactive Resume is free and open source. If it has helped you, please consider donating."
msgstr "Reactive CV ir bezmaksas un atvērtā koda resurss. Ja tas jums ir palīdzējis, lūdzu, apsveriet iespēju ziedot."
#: src/routes/_home/-sections/faq.tsx
msgid "Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall."
msgstr "Reactive Resume ir atvērtā pirmkoda, uz privātumu vērsts un pilnīgi bezmaksas. Atšķirībā no citiem CV veidotājiem tas nerāda reklāmas, neizseko jūsu datus un neierobežo funkcijas ar maksas sienu."
@@ -2362,11 +2500,6 @@ msgstr "Taisnstūris"
msgid "Rectangle (Full Width)"
msgstr "Taisnstūris (pilns platums)"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Redo (Ctrl+Y)"
msgstr "Atkārtot (Ctrl+Y)"
#: src/dialogs/resume/sections/custom.tsx
#: src/libs/resume/section-title.ts
#: src/libs/resume/section.tsx
@@ -2381,6 +2514,18 @@ msgstr "Atsvaidzināt"
msgid "Register New Device"
msgstr "Reģistrēt jaunu ierīci"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject"
msgstr "Noraidīt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reject all"
msgstr "Noraidīt visus"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Rejected proposal"
msgstr "Noraidīts priekšlikums"
#: src/routes/auth/forgot-password.tsx
msgid "Remember your password? <0/>"
msgstr "Atceraties paroli? <0/>"
@@ -2431,6 +2576,10 @@ msgstr "Atkārtoti nosūta verifikācijas e-pastu..."
msgid "Reset"
msgstr "Atiestatīt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reset chat"
msgstr "Atiestatīt tērzēšanu"
#. Primary action button label on reset-password form
#: src/routes/auth/reset-password.tsx
msgid "Reset Password"
@@ -2444,6 +2593,10 @@ msgstr "Atiestatīt paroli"
msgid "Resetting your password..."
msgstr "Tiek atiestatīta jūsu parole..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Resize AI assistant"
msgstr "Mainīt AI palīga izmēru"
#: src/routes/_home/-sections/footer.tsx
msgid "Resources"
msgstr "Resursi"
@@ -2464,6 +2617,14 @@ msgstr "CV analīze pabeigta."
msgid "Resumes"
msgstr "CV"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Review required"
msgstr "Nepieciešama pārskatīšana"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Reviewed proposals"
msgstr "Pārskatītie priekšlikumi"
#: src/components/input/rich-input.tsx
msgid "Right Align"
msgstr "Izlīdzināt pa labi"
@@ -2562,6 +2723,10 @@ msgstr "Atlasīt..."
msgid "Self-Host with Docker"
msgstr "Pašhostēšana ar Docker"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Send"
msgstr "Sūtīt"
#. Primary action button label on forgot-password form
#: src/routes/auth/forgot-password.tsx
msgid "Send Password Reset Email"
@@ -2571,6 +2736,10 @@ msgstr "Nosūtīt paroles atiestatīšanas e-pastu"
msgid "Sending password reset email..."
msgstr "Nosūta paroles atiestatīšanas e-pastu..."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Sending request"
msgstr "Pieprasījuma nosūtīšana"
#: src/components/input/rich-input.tsx
msgid "Separator"
msgstr "Atdalītājs"
@@ -2709,6 +2878,10 @@ msgstr "Vienkolonnu izkārtojums ar sānu joslu un tīru režģa izkārtojumu; u
msgid "Single-column with an inline three-column entry header (position · organization · period); compact and ATS-friendly, well-suited for Asian resume conventions (CN/JP/KR)."
msgstr "Vienas kolonnas ar ievilktu trīs kolonnu virsrakstu (amats - organizācija - punkts); kompakts un ATS draudzīgs, labi piemērots Āzijas CV konvencijām (CN/JP/KR)."
#: src/dialogs/resume/template/data.ts
msgid "Single-column with uppercase section headings and a primary-color top rule on every page; polished for executive, consulting, or startup resumes."
msgstr "Vienas kolonnas CV ar lielajiem burtiem rakstītiem sadaļu virsrakstiem un pamatkrāsas augšējo rindiņu katrā lapā; lieliski piemērots vadītāju, konsultāciju vai jaunuzņēmumu CV."
#: src/dialogs/resume/template/data.ts
msgid "Single-column; polished and serious for senior or enterprise-level positions."
msgstr "Vienkolonnu izkārtojums; nopietns un noslīpēts vecākā līmeņa vai uzņēmuma līmeņa amatiem."
@@ -2809,6 +2982,10 @@ msgstr "Statistika"
msgid "Stay"
msgstr "Palikt"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "Stop"
msgstr "Apstāties"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Strengths"
msgstr "Stiprās puses"
@@ -2903,6 +3080,14 @@ msgstr "Teksta krāsa"
msgid "Thai"
msgstr "Taju"
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI proposed a change that no longer applies to this resume."
msgstr "Mākslīgais intelekts ierosināja izmaiņas, kas vairs neattiecas uz šo CV."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The AI returned a proposal that could not be previewed."
msgstr "Mākslīgais intelekts atgrieza priekšlikumu, kuru nevarēja priekšskatīt."
#. Error description when AI returns invalid resume analysis format
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "The AI returned an invalid analysis format. Please try again."
@@ -2916,6 +3101,10 @@ msgstr "API atslēga veiksmīgi dzēsta."
msgid "The API key will no longer be able to access your data after deletion. This action cannot be undone."
msgstr "Pēc dzēšanas šī API atslēga vairs nevarēs piekļūt jūsu datiem. Šī darbība nav atsaucama."
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "The assistant stopped before returning a proposal."
msgstr "Asistents apstājās, pirms atbildēja uz priekšlikumu."
#. Empty-state message when no command palette results match the search query
#: src/components/command-palette/index.tsx
msgid "The command you're looking for doesn't exist."
@@ -2982,7 +3171,12 @@ msgstr "Tas ir URL-draudzīgs nosaukums jūsu CV."
msgid "This may take a few minutes, depending on the response of the AI provider. Please do not close the window or refresh the page."
msgstr "Tas var aizņemt dažas minūtes atkarībā no MI pakalpojumu sniedzēja atbildes. Lūdzu, neaizveriet logu un neatjaunojiet lapu."
#: src/components/resume/use-resume.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This proposal is stale. Ask the assistant to regenerate it from the latest resume."
msgstr "Šis piedāvājums ir novecojis. Palūdziet asistentam to atkārtoti ģenerēt no jaunākā CV."
#: src/components/resume/builder-resume-draft.ts
#: src/routes/builder/$resumeId/-components/assistant.tsx
msgid "This resume is locked and cannot be updated."
msgstr "Šis CV ir bloķēts un to nevar atjaunināt."
@@ -3034,6 +3228,10 @@ msgstr "Lai dzēstu savu kontu, jums jāievada apstiprinājuma teksts un jānokl
msgid "Toggle left sidebar"
msgstr "Pārslēgt kreiso sānjjoslu"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgid "Toggle page stacking"
msgstr "Pārslēgt lapu sakraušanu"
#. Screen-reader label for opening or closing the right sidebar in resume builder
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Toggle right sidebar"
@@ -3137,11 +3335,6 @@ msgstr "Ukraiņu"
msgid "Underline"
msgstr "Pasvītrot"
#: src/routes/builder/$resumeId/-components/dock.tsx
msgctxt "'Ctrl' may be replaced with the locale-specific equivalent (e.g. 'Strg' for QWERTZ layouts)."
msgid "Undo (Ctrl+Z)"
msgstr "Atsaukt (Ctrl+Z)"
#: src/routes/_home/-sections/features.tsx
msgid "Unlimited Resumes"
msgstr "Neierobežoti CV"
@@ -3387,10 +3580,6 @@ msgstr "X (Twitter)"
msgid "Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can <0>contribute to the translations on Crowdin<1> (opens in new tab)</1></0>."
msgstr "Jā, Reactive Resume ir pieejams vairākās valodās. Jūs varat izvēlēties vēlamo valodu iestatījumu lapā vai, izmantojot valodas pārslēdzēju augšējā labajā stūrī. Ja neredzat savu valodu vai vēlaties uzlabot esošos tulkojumus, varat <0>piedalīties tulkošanā vietnē Crowdin<1> (atveras jaunā cilnē)</1></0>."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Every template is fully customizable. You can change colors, fonts, spacing, and even write custom CSS for complete control over your resume's appearance."
msgstr "Jā! Katra veidne ir pilnībā pielāgojama. Varat mainīt krāsas, fontus, atstatumus un pat rakstīt pielāgotu CSS, lai pilnībā kontrolētu sava CV izskatu."
#: src/routes/_home/-sections/faq.tsx
msgid "Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free."
msgstr "Jā! Reactive Resume ir pilnīgi bez maksas, bez slēptām izmaksām, premium līmeņiem vai abonēšanas maksām. Tas ir atvērtā pirmkoda un vienmēr paliks bez maksas."
@@ -3440,7 +3629,7 @@ msgstr "Jūsu dati tiek glabāti lokāli"
msgid "Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data."
msgstr "Jūsu dati tiek glabāti droši un nekad netiek kopīgoti ar trešajām pusēm. Reactive Resume varat arī pašhostēt uz saviem serveriem, lai pilnībā kontrolētu savus datus."
#: src/components/resume/use-resume.ts
#: src/components/resume/builder-resume-draft.ts
msgid "Your latest changes could not be saved."
msgstr "Jūsu jaunākās izmaiņas nevarēja saglabāt."

Some files were not shown because too many files have changed in this diff Show More