Compare commits

...
41 Commits
Author SHA1 Message Date
Amruth Pillai dcf1b28c22 chore: release v5.1.9 2026-06-18 18:57:09 +02:00
Amruth Pillai f14d8ce693 feat: add Atlas Cloud sponsorship placements 2026-06-18 18:53:01 +02:00
robertoandAmruth Pillai 2317a82106 fix: register language-specific Noto fallback fonts for non-Latin scripts (#3158)
* fix: use language-specific Noto fonts for CJK PDF fallback

* feat: extend fallback to Arabic/Hebrew/Thai

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
2026-06-17 13:37:09 +02:00
Cantale08andsantino cantale a523e13bfd Problem in word wrapping in the templates (#3136)
Co-authored-by: santino cantale <sopor@ARBA-TSM-WS020.tsm.local>
2026-06-17 13:28:19 +02:00
albanofazzitoandAlbano 1be75240dd fix: use non-empty placeholder for redacted resume name (#3138)
* fix: use non-empty placeholder for redacted resume name

* fix: update stale test title to match new placeholder behavior

---------

Co-authored-by: Albano <alumno26.fazzito.albano@ipm.edu.ar>
2026-06-17 13:27:39 +02:00
sdeonvacation 7275da7303 fix(ai): handle markdown-fenced JSON in analyzeResume response (#3142)
Some providers (notably Anthropic via proxies) wrap JSON output in
markdown code fences (```json ... ```), causing Output.object to
throw NoObjectGeneratedError / JSONParseError.

Replace Output.object with manual JSON boundary extraction that works
regardless of fencing. Also propagate the original AISDKError as cause
in throwAiProviderGatewayError for better diagnostics.
2026-06-17 13:27:06 +02:00
Lihan YANG bc498449d3 Fix MCP PDF download test mock (#3144) 2026-06-17 13:26:42 +02:00
Andrea Accardo 3937f7ed2b feat: add flag to disable api rate limit (#3149)
Signed-off-by: aaccardo <hackardo@gmail.com>
2026-06-17 13:26:27 +02:00
github-actions[bot]andCrowdin Bot d6de3f830f Sync Translations from Crowdin (#3162)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-17 13:18:31 +02:00
Amruth Pillai ef5ff30b13 chore: update linter configuration and add rimraf dependency 2026-06-17 10:51:10 +02:00
Amruth Pillai 37faf592b7 chore: update dependencies 2026-06-17 10:40:23 +02:00
github-actions[bot]andCrowdin Bot 76bd1e80f7 [skip ci] chore(i18n): sync translations from crowdin (#3148)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-06 09:33:09 +02:00
Amruth Pillai 042d076efa chore: update dependencies 2026-06-05 23:35:23 +02:00
github-actions[bot]andCrowdin Bot b9e4ab78ef Sync Translations from Crowdin (#3135)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-01 15:32:53 +02:00
Amruth Pillai 90a9bb9cf1 feat: add "Hide Link Underline" translation for multiple languages 2026-06-01 15:31:39 +02:00
Amruth Pillai 5fb4976ec9 feat: add hide link underline option to resume settings, resolves #3134 2026-06-01 15:30:49 +02:00
github-actions[bot]andCrowdin Bot d6a9bc6c4b Sync Translations from Crowdin (#3132)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-01 15:09:18 +02:00
Amruth Pillai 0dcdcd2960 chore(release): v5.1.8 2026-06-01 15:08:22 +02:00
JamesGoslingsandAmruth Pillai e96a51f31c feat(editor): add multicolor highlight with auto-contrast text (#3110)
* feat(editor): add multicolor highlight with auto-contrast text

Enable the Tiptap Highlight extension in multicolor mode, replacing the
single-color yellow toggle with a full color picker (16 presets + custom).
When the chosen highlight color is perceptually dark, text inside the mark
automatically renders white for readability.

Changes span the full pipeline:
- Editor: ColorPicker UI, extended renderHTML for contrast detection
- PDF: normalizeMarkElements preserves data-color as inline style
- DOCX: mergeStyle reads actual background-color from <mark>
- Utils: new isDarkColor() luminance helper

Backward-compatible: legacy <mark> without data-color still renders yellow.

Resolves #3109

* fix: handle multicolor highlight edge cases

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
2026-06-01 14:58:15 +02:00
github-actions[bot]andCrowdin Bot 1507d869c7 Sync Translations from Crowdin (#3131)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-01 14:05:01 +02:00
JamesGoslingscoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>Amruth Pillai
b932711f08 feat: add section heading icons to PDF templates (#3127)
* feat: add section heading icons to PDF templates

Add customizable Phosphor icons before section titles in PDF output.
Users can toggle visibility globally via a new "Hide section heading icons"
switch (independent of item-level icons) and customize individual section
icons through the builder sidebar icon picker.

- Add `icon` field to `baseSectionSchema` and `summarySchema`
- Add `hideSectionIcons` to `pageSchema` (defaults to true for backward compat)
- Implement `SectionHeadingIcon` component with heading font-size scaling
- Support "none" sentinel for per-section icon hiding
- Fallback to sensible defaults (briefcase, graduation-cap, etc.) for legacy data
- Add icon picker to builder sidebar sections and custom section dialogs

Closes #2632

* test: add unit tests for section heading icons

- Add tests for getResumeSectionIcon() covering built-in sections,
  summary, custom sections, "none" sentinel, and default fallbacks
- Add schema tests for baseSectionSchema icon field, summarySchema icon,
  and pageSchema hideSectionIcons default behavior

* refactor: minor updates to icon display

* Update apps/web/locales/es-ES.po

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-06-01 14:02:42 +02:00
Amruth Pillai 1522794733 fix: typecheck 2026-06-01 10:41:37 +02:00
Lihan YANG e00ff8ceca fix(pdf): avoid toReversed in icon size resolution (#3129) 2026-06-01 10:33:04 +02:00
Amruth Pillai 8e72311bc6 Merge branch 'main' of github.com:amruthpillai/reactive-resume 2026-06-01 10:31:53 +02:00
Amruth Pillai a8c70d784c fix: typecheck 2026-06-01 10:31:25 +02:00
Amruth Pillai 0df7f21130 feat: implement download_resume_pdf mcp tool 2026-06-01 10:26:28 +02:00
Amruth PillaiandCursor Agent 6852f586ea ci: purge Cloudflare cache after release Docker image deploy (#3122)
* ci: purge Cloudflare cache after release Docker image deploy

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

* ci: add timeout and retries to Cloudflare cache purge

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

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-29 01:44:30 +02:00
Amruth PillaiandCursor Agent 1414fecade fix(pdf): apply custom style fontSize to icons and level indicators (#3120) and
* fix(pdf): apply custom style fontSize to icon and level indicator sizes

Map fontSize from Icon and Level Indicator custom style slots to Phosphor
icon size and level indicator dimensions, since react-pdf icons ignore
fontSize in favor of the size prop.

* fix: separate global icon and scoped level indicator font sizes

Icon slot fontSize now drives all resume icons plus level display
decorations. Level indicator fontSize overrides only within level display.
Shared sizing logic lives in schema; design sidebar preview uses global rules.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-29 00:41:21 +02:00
Amruth PillaiandCursor Agent c1d11236ae fix(pdf): keep Glalie contact list border box square (#3121)
The decorative border around contact items must not inherit
picture border radius. Set contactList borderRadius to 0.

Fixes amruthpillai/reactive-resume#3119

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-29 00:22:51 +02:00
Lihan YANG d09ad2cdc0 Urgent fix server app version dev (#3117)
* fix(server): avoid app version global in MCP dev

* fix(server): use runtime-safe app version metadata
2026-05-29 00:13:45 +02:00
Amruth Pillai 9ce5bacd22 Show experience position with role progression (#3116) 2026-05-28 13:51:02 +02:00
Amruth Pillai 1d761be05b chore(release): v5.1.7 2026-05-27 23:59:14 +02:00
github-actions[bot]andCrowdin Bot c875541001 [skip ci] chore(i18n): sync translations from crowdin (#3113)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-27 23:56:10 +02:00
Amruth Pillai 16f4d2c072 docs: using custom styles 2026-05-27 23:52:19 +02:00
Amruth Pillai b491582637 chore: add missing translations 2026-05-27 23:31:58 +02:00
Amruth Pillai c6a654191c feat: improvements to custom styles 2026-05-27 22:16:14 +02:00
Amruth Pillai 8461aa65d5 chore: remove react-doctor from package scripts and update task dependencies in turbo.json 2026-05-27 11:09:33 +02:00
Amruth Pillai b04eef1479 feat: implement style rules 2026-05-27 10:57:33 +02:00
Amruth Pillai 7bff6644d8 docs: add custom styles header target design 2026-05-26 15:12:48 +02:00
Amruth Pillai 8da780c868 feat: update links for improved accessibility 2026-05-26 13:09:30 +02:00
Amruth Pillai dd1e37e579 refactor: better resume two-way sync in case of MCP/API updates 2026-05-26 12:05:38 +02:00
298 changed files with 17065 additions and 4693 deletions
+7
View File
@@ -93,6 +93,13 @@ FLAG_DISABLE_EMAIL_AUTH="false"
# This is useful if you are using a machine with limited resources, like a Raspberry Pi.
FLAG_DISABLE_IMAGE_PROCESSING="false"
# This flag disables API rate limiting for authentication endpoints.
# Rate limiting is enabled by default in production to prevent abuse.
FLAG_DISABLE_API_RATE_LIMIT="false"
# This flag shows sponsor placements on the public landing page.
FLAG_SHOW_SPONSORS="false"
# Allows dynamic OAuth client registration to use any parseable redirect URI,
# including custom schemes, private hosts, and non-loopback http:// URLs.
# WARNING: Enabling this on a public or multi-tenant deployment can enable phishing
+21
View File
@@ -249,3 +249,24 @@ jobs:
script: |
cd docker
./manage_stack.sh up reactive_resume
- name: Purge Cloudflare cache
if: ${{ needs.mode.outputs.release == 'true' }}
env:
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: |
set -euo pipefail
response=$(curl -fsS --max-time 10 --retry 3 --retry-delay 5 --retry-connrefused -X POST \
"https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}')
if [ "$(jq -r '.success' <<< "$response")" != "true" ]; then
echo "$response" | jq .
exit 1
fi
echo "Cloudflare cache purged successfully."
+15
View File
@@ -39,6 +39,21 @@ Internal packages are source-consumed through `package.json` export maps that po
- 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 lives under `apps/web/src/features/resume/preview`, and public resume PDF viewer code lives under `apps/web/src/features/resume/public`. Keep PDF.js/canvas/browser APIs out of SSR paths and out of `packages/pdf`.
- 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.
- For React components with explicit props, prefer a named TypeScript props type over inline object annotations in the function signature, especially once the props include more than one field or generics. For example:
```ts
type IntentSelectFieldProps<TValue extends string> = {
label: string;
id: string;
value: TValue | undefined;
options: readonly ComboboxOption<TValue>[];
onChange: (value: TValue | undefined) => void;
};
function IntentSelectField<TValue extends string>(props: IntentSelectFieldProps<TValue>) {
// ...
}
```
### Package and feature boundaries
+14
View File
@@ -31,6 +31,20 @@ Reactive Resume makes building resumes straightforward. Pick a template, fill in
Built with privacy as a core principle, Reactive Resume gives you complete ownership of your data. The codebase is fully open-source under the MIT license, with no tracking, no ads, and no hidden costs.
## Sponsors
Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Thank you to every sponsor who helps fund hosting, maintenance, and continued development for the community.
<p>
<a href="https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=reactive-resume">
<img src="apps/web/public/sponsors/atlas-cloud-logo-white.svg" alt="Atlas Cloud" width="320" />
</a>
</p>
[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=reactive-resume) supports Reactive Resume as a project sponsor. Atlas Cloud provides a unified AI platform for developers, with access to hundreds of models for chat, image generation, video generation, media processing, and GPU cloud workloads through one API key, one endpoint, and one billing account.
If your company would like to sponsor Reactive Resume, email [hello@amruthpillai.com](mailto:hello@amruthpillai.com).
## Features
**Resume Building**
+33 -33
View File
@@ -17,24 +17,24 @@
"#react-pdf-renderer": "@react-pdf/renderer"
},
"dependencies": {
"@ai-sdk/anthropic": "^3.0.79",
"@ai-sdk/google": "^3.0.79",
"@ai-sdk/openai": "^3.0.65",
"@ai-sdk/openai-compatible": "^2.0.48",
"@aws-sdk/client-s3": "^3.1053.0",
"@better-auth/api-key": "^1.6.11",
"@better-auth/drizzle-adapter": "^1.6.11",
"@better-auth/infra": "^0.2.8",
"@better-auth/oauth-provider": "^1.6.11",
"@better-auth/passkey": "^1.6.11",
"@hono/node-server": "^2.0.4",
"@ai-sdk/anthropic": "^3.0.85",
"@ai-sdk/google": "^3.0.83",
"@ai-sdk/openai": "^3.0.72",
"@ai-sdk/openai-compatible": "^2.0.51",
"@aws-sdk/client-s3": "^3.1070.0",
"@better-auth/api-key": "^1.6.19",
"@better-auth/drizzle-adapter": "^1.6.19",
"@better-auth/infra": "^0.2.14",
"@better-auth/oauth-provider": "^1.6.19",
"@better-auth/passkey": "^1.6.19",
"@hono/node-server": "^2.0.5",
"@modelcontextprotocol/sdk": "^1.29.0",
"@orpc/client": "^1.14.3",
"@orpc/experimental-ratelimit": "^1.14.3",
"@orpc/json-schema": "^1.14.3",
"@orpc/openapi": "^1.14.3",
"@orpc/server": "^1.14.3",
"@orpc/zod": "^1.14.3",
"@orpc/client": "^1.14.6",
"@orpc/experimental-ratelimit": "^1.14.6",
"@orpc/json-schema": "^1.14.6",
"@orpc/openapi": "^1.14.6",
"@orpc/server": "^1.14.6",
"@orpc/zod": "^1.14.6",
"@react-pdf/renderer": "^4.5.1",
"@reactive-resume/api": "workspace:*",
"@reactive-resume/auth": "workspace:*",
@@ -46,29 +46,29 @@
"@sindresorhus/slugify": "^3.0.0",
"@t3-oss/env-core": "^0.13.11",
"@uiw/color-convert": "^2.10.3",
"ai": "^6.0.191",
"ai": "^6.0.207",
"bcrypt": "^6.0.0",
"better-auth": "1.6.11",
"better-auth": "1.6.19",
"cjk-regex": "^3.4.0",
"deepmerge-ts": "^7.1.5",
"dompurify": "^3.4.5",
"dompurify": "^3.4.10",
"dotenv": "^17.4.2",
"drizzle-orm": "1.0.0-rc.3",
"drizzle-zod": "1.0.0-beta.14-a36c63d",
"es-toolkit": "^1.47.0",
"es-toolkit": "^1.47.1",
"fast-json-patch": "^3.1.1",
"hono": "^4.12.23",
"hono": "^4.12.25",
"jsonrepair": "^3.14.0",
"node-html-parser": "^7.1.0",
"nodemailer": "^8.0.8",
"ollama-ai-provider-v2": "^3.5.1",
"nodemailer": "^9.0.0",
"ollama-ai-provider-v2": "^3.6.0",
"pg": "^8.21.0",
"phosphor-icons-react-pdf": "^0.1.3",
"react": "^19.2.6",
"react-email": "^6.3.3",
"react": "^19.2.7",
"react-email": "^6.6.3",
"react-pdf-html": "^2.1.5",
"resumable-stream": "^2.2.12",
"sharp": "^0.34.5",
"sharp": "^0.35.1",
"ts-pattern": "^5.9.0",
"unique-names-generator": "^4.7.1",
"uuid": "^14.0.0",
@@ -76,13 +76,13 @@
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@types/node": "^25.9.1",
"@types/node": "^25.9.3",
"@types/pg": "^8.20.0",
"@types/react": "^19.2.15",
"@typescript/native-preview": "7.0.0-dev.20260526.1",
"tsdown": "^0.22.0",
"tsx": "^4.22.3",
"@types/react": "^19.2.17",
"@typescript/native-preview": "7.0.0-dev.20260617.2",
"tsdown": "^0.22.3",
"tsx": "^4.22.4",
"typescript": "^6.0.3",
"vitest": "^4.1.7"
"vitest": "^4.1.9"
}
}
+1
View File
@@ -0,0 +1 @@
export const appVersion = typeof __APP_VERSION__ === "undefined" ? "0.0.0" : __APP_VERSION__;
+19
View File
@@ -8,6 +8,7 @@ const mocks = vi.hoisted(() => ({
handleHealth: vi.fn(),
handleUpload: vi.fn(),
handleMcp: vi.fn(),
handleResumePdfDownload: vi.fn(),
handleMcpServerCard: vi.fn(),
handleOAuthAuthorizationServer: vi.fn(),
handleOAuthProtectedResource: vi.fn(),
@@ -66,6 +67,10 @@ vi.mock("../mcp/handler", () => ({
handleMcp: mocks.handleMcp,
}));
vi.mock("./resume-pdf", () => ({
handleResumePdfDownload: mocks.handleResumePdfDownload,
}));
beforeEach(() => {
vi.clearAllMocks();
mocks.handleAuth.mockResolvedValue(new Response("auth"));
@@ -75,6 +80,7 @@ beforeEach(() => {
mocks.handleHealth.mockReturnValue(new Response("health"));
mocks.handleUpload.mockResolvedValue(new Response("upload"));
mocks.handleMcp.mockResolvedValue(new Response("mcp"));
mocks.handleResumePdfDownload.mockResolvedValue(new Response("pdf"));
mocks.handleMcpServerCard.mockReturnValue(new Response("server-card"));
mocks.handleOAuthAuthorizationServer.mockReturnValue(new Response("oauth-authorization-server"));
mocks.handleOAuthProtectedResource.mockReturnValue(new Response("oauth-protected-resource"));
@@ -101,6 +107,19 @@ describe("createApp", () => {
expect(mocks.handleAuth).not.toHaveBeenCalled();
});
it("routes signed resume PDF downloads before the web fallback", async () => {
const { createApp } = await import("./app");
const app = createApp();
const request = new Request("http://localhost:3001/api/resumes/resume-1/pdf?token=signed");
const response = await app.fetch(request);
await expect(response.text()).resolves.toBe("pdf");
expect(mocks.handleResumePdfDownload).toHaveBeenCalledWith(request, "resume-1");
expect(mocks.serveWebDistStatic).not.toHaveBeenCalled();
expect(mocks.handleWebApp).not.toHaveBeenCalled();
});
it.each([
["GET", "/robots.txt", "robots", mocks.handleRobots],
["HEAD", "/robots.txt", "", mocks.handleRobots],
+2
View File
@@ -15,6 +15,7 @@ import { handleUpload } from "../static/uploads";
import { handleWebApp, handleWebAppHead, serveWebDistStatic } from "../static/web";
import { handleAuth, handleOAuth } from "./auth";
import { handleHealth } from "./health";
import { handleResumePdfDownload } from "./resume-pdf";
export function createApp() {
const app = new Hono();
@@ -26,6 +27,7 @@ export function createApp() {
app.get("/api/auth/oauth", (c) => handleOAuth(c.req.raw));
app.all("/api/auth/*", (c) => handleAuth(c.req.raw));
app.get("/api/health", () => handleHealth());
app.get("/api/resumes/:id/pdf", (c) => handleResumePdfDownload(c.req.raw, c.req.param("id")));
app.get("/api/uploads/*", (c) => handleUpload(c.req.raw));
app.get("/uploads/*", (c) => handleUpload(c.req.raw));
app.get("/schema.json", () => handleSchemaJson());
+70
View File
@@ -0,0 +1,70 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
const mocks = vi.hoisted(() => ({
createResumePdfDownload: vi.fn(),
verifyResumePdfDownloadToken: vi.fn(),
}));
vi.mock("@reactive-resume/api/features/resume/export", () => ({
createResumePdfDownload: mocks.createResumePdfDownload,
verifyResumePdfDownloadToken: mocks.verifyResumePdfDownloadToken,
}));
const { handleResumePdfDownload } = await import("./resume-pdf");
describe("handleResumePdfDownload", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("renders the PDF when the signed URL token is valid", async () => {
const pdf = new File([new Uint8Array([37, 80, 68, 70])], "Scizor.pdf", { type: "application/pdf" });
mocks.verifyResumePdfDownloadToken.mockReturnValueOnce({
ok: true,
resumeId: "resume-1",
userId: "user-1",
expiresAt: "2026-06-01T10:10:00.000Z",
});
mocks.createResumePdfDownload.mockResolvedValueOnce({
headers: { "content-disposition": 'attachment; filename="Scizor.pdf"' },
body: pdf,
});
const response = await handleResumePdfDownload(
new Request("https://example.com/api/resumes/resume-1/pdf?token=signed"),
"resume-1",
);
expect(response.status).toBe(200);
expect(response.headers.get("Content-Type")).toBe("application/pdf");
expect(response.headers.get("Content-Disposition")).toBe('attachment; filename="Scizor.pdf"');
expect(response.headers.get("Cache-Control")).toBe("private, no-store");
expect(await response.text()).toBe("%PDF");
expect(mocks.createResumePdfDownload).toHaveBeenCalledWith({ id: "resume-1", userId: "user-1" });
});
it("rejects missing, invalid, and expired tokens before rendering", async () => {
let response = await handleResumePdfDownload(
new Request("https://example.com/api/resumes/resume-1/pdf"),
"resume-1",
);
expect(response.status).toBe(401);
expect(mocks.createResumePdfDownload).not.toHaveBeenCalled();
mocks.verifyResumePdfDownloadToken.mockReturnValueOnce({ ok: false, reason: "invalid_signature" });
response = await handleResumePdfDownload(
new Request("https://example.com/api/resumes/resume-1/pdf?token=bad"),
"resume-1",
);
expect(response.status).toBe(401);
expect(mocks.createResumePdfDownload).not.toHaveBeenCalled();
mocks.verifyResumePdfDownloadToken.mockReturnValueOnce({ ok: false, reason: "expired" });
response = await handleResumePdfDownload(
new Request("https://example.com/api/resumes/resume-1/pdf?token=expired"),
"resume-1",
);
expect(response.status).toBe(410);
expect(mocks.createResumePdfDownload).not.toHaveBeenCalled();
});
});
+53
View File
@@ -0,0 +1,53 @@
import { createResumePdfDownload, verifyResumePdfDownloadToken } from "@reactive-resume/api/features/resume/export";
function unauthorizedResponse() {
return new Response("Unauthorized", {
status: 401,
headers: {
"Cache-Control": "private, no-store",
},
});
}
function expiredResponse() {
return new Response("Download link expired", {
status: 410,
headers: {
"Cache-Control": "private, no-store",
},
});
}
function errorStatus(error: unknown) {
const code = typeof error === "object" && error && "code" in error ? (error as { code?: unknown }).code : undefined;
return code === "NOT_FOUND" ? 404 : 500;
}
export async function handleResumePdfDownload(request: Request, id: string) {
const token = new URL(request.url).searchParams.get("token");
if (!token) return unauthorizedResponse();
const verification = verifyResumePdfDownloadToken({ resumeId: id, token });
if (!verification.ok) return verification.reason === "expired" ? expiredResponse() : unauthorizedResponse();
try {
const download = await createResumePdfDownload({ id, userId: verification.userId });
return new Response(download.body, {
headers: {
"Content-Type": download.body.type || "application/pdf",
"Content-Disposition": download.headers["content-disposition"],
"Cache-Control": "private, no-store",
"X-Content-Type-Options": "nosniff",
},
});
} catch (error) {
console.error("[PDF Download]", error);
return new Response("Failed to generate resume PDF", {
status: errorStatus(error),
headers: {
"Cache-Control": "private, no-store",
},
});
}
}
+3 -1
View File
@@ -4,6 +4,7 @@ import { onError } from "@orpc/client";
import { createRouterClient } from "@orpc/server";
import router from "@reactive-resume/api/routers";
import { MCP_TOOL_NAME, registerPrompts, registerResources, registerTools } from "@reactive-resume/mcp";
import { appVersion } from "../app-version";
import { getRequestLocale } from "../rpc/locale";
function createRequestClient(request: Request): RouterClient<typeof router> {
@@ -25,7 +26,7 @@ export async function createMcpServer(request: Request) {
const server = new McpServer(
{
name: "reactive-resume",
version: __APP_VERSION__,
version: appVersion,
title: "Reactive Resume",
websiteUrl: "https://rxresu.me",
description:
@@ -52,6 +53,7 @@ export async function createMcpServer(request: Request) {
`Read schema at \`resume://_meta/schema\`; read resume JSON via \`resume://{id}\` or \`${MCP_TOOL_NAME.getResume}\`.`,
`Apply body edits with JSON Patch through \`${MCP_TOOL_NAME.patchResume}\`.`,
`Change name, slug, tags, or public visibility with \`${MCP_TOOL_NAME.updateResume}\` (returns canonical share URL; anonymous access only when \`isPublic\` is true; passwords are managed in the web app only).`,
`Create short-lived authenticated PDF download URLs with \`${MCP_TOOL_NAME.downloadResumePdf}\`.`,
`Import full ResumeData JSON with \`${MCP_TOOL_NAME.importResume}\`; read saved AI analysis with \`${MCP_TOOL_NAME.getResumeAnalysis}\`.`,
].join(" "),
},
+2 -1
View File
@@ -8,6 +8,7 @@ import { downloadResumePdfProcedure } from "@reactive-resume/api/features/resume
import router from "@reactive-resume/api/routers";
import { env } from "@reactive-resume/env/server";
import { resumeDataSchema } from "@reactive-resume/schema/resume/data";
import { appVersion } from "../app-version";
import { mergeResponseHeaders } from "../http/headers";
import { getRequestLocale } from "../rpc/locale";
@@ -44,7 +45,7 @@ export async function handleOpenApi(request: Request) {
const spec = await openAPIGenerator.generate(openAPIRouter, {
info: {
title: "Reactive Resume",
version: __APP_VERSION__,
version: appVersion,
description: "Reactive Resume API",
license: { name: "MIT", url: "https://github.com/amruthpillai/reactive-resume/blob/main/LICENSE" },
contact: { name: "Amruth Pillai", email: "hello@amruthpillai.com", url: "https://amruthpillai.com" },
+2 -1
View File
@@ -2,6 +2,7 @@ import { oauthProviderAuthServerMetadata, oauthProviderOpenIdConfigMetadata } fr
import { auth } from "@reactive-resume/auth/config";
import { env } from "@reactive-resume/env/server";
import { buildMcpServerCard } from "@reactive-resume/mcp/server-card";
import { appVersion } from "../app-version";
const oauthAuthorizationServerHandler = oauthProviderAuthServerMetadata(auth);
const openIdConfigurationHandler = oauthProviderOpenIdConfigMetadata(auth);
@@ -11,7 +12,7 @@ export function handleWellKnownFallback() {
}
export function handleMcpServerCard() {
return Response.json(buildMcpServerCard(__APP_VERSION__), {
return Response.json(buildMcpServerCard(appVersion), {
headers: {
"Content-Type": "application/json",
"Cache-Control": "public, max-age=60, stale-while-revalidate=120",
+2 -1
View File
@@ -1,5 +1,6 @@
import z from "zod";
import { resumeDataSchema } from "@reactive-resume/schema/resume/data";
import { appVersion } from "../app-version";
export function handleSchemaJson() {
const resumeDataJSONSchema = z.toJSONSchema(resumeDataSchema);
@@ -12,7 +13,7 @@ export function handleSchemaJson() {
"Surrogate-Control": "max-age=86400",
"X-Content-Type-Options": "nosniff",
"X-Robots-Tag": "index, follow",
ETag: __APP_VERSION__,
ETag: appVersion,
Vary: "Accept",
},
});
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Toep"
msgid "Application Statistics"
msgstr "Toepassingstatistiek"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Toegepaste Reëls"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabies"
@@ -438,6 +442,10 @@ msgstr "Vra enigiets oor hierdie CV"
msgid "Aspect Ratio"
msgstr "Aspekverhouding"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Heg lêers aan"
@@ -649,6 +657,7 @@ msgstr "Chinees (Tradisioneel)"
msgid "Choose a model and resume draft."
msgstr "Kies 'n model en CV-konsep."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Kies 'n bestaande gesprek vanaf die sybalk, of begin 'n nuwe konsep-gefo
msgid "Circle"
msgstr "Sirkel"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Klaar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Vee seleksie uit"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klik hier om 'n lêer te kies om in te voer"
@@ -953,6 +967,10 @@ msgstr "Pasgemaakte OAuth"
msgid "Custom Sections"
msgstr "Pasgemaakte afdelings"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Pasgemaakte style"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tsjeggies"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Wys"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Versteek alle ikone op die CV"
msgid "Hide Icons"
msgstr "Versteek ikone"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Versteek skakelonderstreep"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Versteek alle ikone op die CV"
msgid "Hide password"
msgstr "Verberg wagwoord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Versteek Afdelingsikone"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Hoog"
msgid "Highlight"
msgstr "Merk"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Kleurmerk"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Nog geen paswoorde geregistreer nie."
msgid "No results found."
msgstr "Geen resultate gevind nie."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Geen stylreëls nog nie."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Geen getoetste verskaffer nie"
@@ -2623,6 +2657,10 @@ msgstr "Reaktiewe CV is gratis en oopbron. As dit jou gehelp het, oorweeg dit as
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Herstel"
msgid "Reset Password"
msgstr "Herstel wagwoord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stel styl terug"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Herstel jou wagwoord"
@@ -2790,6 +2832,14 @@ msgstr "Roemeens"
msgid "Rotation"
msgstr "Rotasie"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "reël"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "reëls"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Voer jou eerste ontleding uit om 'n puntkaart, sterkpunte en geprioritiseerde voorstelle te kry."
@@ -3277,6 +3327,10 @@ msgstr "Tekskleur"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Die agent benodig jou insette."
@@ -3708,6 +3762,10 @@ msgstr "Besig om jou wagwoord by te werk..."
msgid "Updating your resume..."
msgstr "Besig om jou CV by te werk..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Laai aanhegsels op"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Laai prent op"
@@ -3959,4 +4017,3 @@ msgstr "Zoem uit"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zoeloe"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -373,6 +373,10 @@ msgstr "መተግበሪያ"
msgid "Application Statistics"
msgstr "የመተግበሪያ ስታቲስቲክስ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "የተተገበሩ ህጎች"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "ዓረብኛ"
@@ -438,6 +442,10 @@ msgstr "ስለዚህ የስራ ልምድ መግለጫ ማንኛውንም ነገ
msgid "Aspect Ratio"
msgstr "የመገናኛ መጠን"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ፋይሎችን አያይዝ"
@@ -649,6 +657,7 @@ msgstr "ቻይንኛ (ባለባለት)"
msgid "Choose a model and resume draft."
msgstr "ሞዴል ይምረጡ እና የሪዚሜ ረቂቅ ይምረጡ።"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "ከጎን አሞሌው ላይ አንድ ነባር ውይይት ይምረ
msgid "Circle"
msgstr "ክብ"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "አጽዳ"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "ምርጫን አጽዳ"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ፋይል ለማምጣት ለመምረጥ እዚህ ጠቅ ያድርጉ"
@@ -953,6 +967,10 @@ msgstr "ብጁ OAuth"
msgid "Custom Sections"
msgstr "ብጁ ክፍሎች"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "ብጁ ቅጦች"
#: src/libs/locale.ts
msgid "Czech"
msgstr "ቼክኛ"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "አሳይ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "በየታሪክ ማቅረቢያው ላይ ያሉ ሁሉንም አዶዎች ደብቅ"
msgid "Hide Icons"
msgstr "አዶዎችን ደብቅ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "የአገናኝ መስመሩን ደብቅ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "በየታሪክ ማቅረቢያው ላይ ያሉ ሁሉንም አዶዎ
msgid "Hide password"
msgstr "የይለፍ ቃል ደብቅ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "የክፍል አዶዎችን ደብቅ"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "ከፍተኛ"
msgid "Highlight"
msgstr "አብራጭ"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "የድምቀት ቀለም"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ሒንዱኛ"
@@ -2247,6 +2277,10 @@ msgstr "እስካሁን ምንም ፓስኪዎች አልተመዘገቡም።"
msgid "No results found."
msgstr "ምንም ውጤት አልተገኘም።"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "እስካሁን የቅጥ ደንቦች የሉም።"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "የተፈተነ አቅራቢ የለም"
@@ -2623,6 +2657,10 @@ msgstr "ምላሽ ሰጪ የስራ ልምድ (Reactive) ነፃ እና ክፍት
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 ክፍት ምንጭ፣ ግላዊነትን የሚመርጥ እና ፍጹም ነፃ ነው። ከሌሎች የየታሪክ ማቅረቢያዎች የተለየ ምክንያቱ ማስታወቂያ አያሳይም፣ መረጃዎን አይከታተልም፣ ባህሪዎችንም በክፍያ ግድግዳ አያስገባም።"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "ዳግም ለመጀመር"
msgid "Reset Password"
msgstr "የይለፍ ቃል ዳግም አስጀምር"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "ቅጥን ዳግም አስጀምር"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "የይለፍ ቃልዎን ዳግም ያስጀምሩ"
@@ -2790,6 +2832,14 @@ msgstr "ሮማኒያንኛ"
msgid "Rotation"
msgstr "ማሽከርከር"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "ደንብ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "ደንቦች"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "የውጤት ካርድ፣ ጥንካሬዎች እና ቅድሚያ የተሰጣቸው አስተያየቶችን ለማግኘት የመጀመሪያ ትንተናዎን ያከናውኑ።"
@@ -3277,6 +3327,10 @@ msgstr "የጽሁፍ ቀለም"
msgid "Thai"
msgstr "ታይኛ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ወኪሉ የእርስዎን ግብዓት ይፈልጋል።"
@@ -3708,6 +3762,10 @@ msgstr "የይለፍ ቃልዎን በመዘመን ላይ…"
msgid "Updating your resume..."
msgstr "የየታሪክዎን በመዘመን ላይ…"
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "አባሪዎችን ስቀል"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "ምስል ስቀል"
@@ -3959,4 +4017,3 @@ msgstr "አጉር"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ዙሉ"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\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"
@@ -373,6 +373,10 @@ msgstr "التطبيق"
msgid "Application Statistics"
msgstr "إحصاءات التطبيق"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "القواعد المطبقة"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "العربية"
@@ -438,6 +442,10 @@ msgstr "اسأل عن أي شيء بخصوص هذه السيرة الذاتية"
msgid "Aspect Ratio"
msgstr "نسبة الأبعاد"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "إرفاق الملفات"
@@ -649,6 +657,7 @@ msgstr "الصينية (التقليدية)"
msgid "Choose a model and resume draft."
msgstr "اختر نموذجًا واكتب مسودة سيرة ذاتية."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "اختر محادثة موجودة من الشريط الجانبي، أ
msgid "Circle"
msgstr "دائرة"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "واضح"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "كليرست"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "انقر هنا لتحديد ملف لاستيراده"
@@ -953,6 +967,10 @@ msgstr "OAuth مخصص"
msgid "Custom Sections"
msgstr "أقسام مخصصة"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "أنماط مخصصة"
#: src/libs/locale.ts
msgid "Czech"
msgstr "التشيكية"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "إخفاء"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "إخفاء جميع الأيقونات في السيرة الذاتية"
msgid "Hide Icons"
msgstr "إخفاء الأيقونات"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "إخفاء الرابط (تسطير)"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "إخفاء جميع الأيقونات في السيرة الذاتية"
msgid "Hide password"
msgstr "إخفاء كلمة المرور"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "إخفاء أيقونات الأقسام"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "عالية"
msgid "Highlight"
msgstr "تمييز"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "لون مميز"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "الهندية"
@@ -2247,6 +2277,10 @@ msgstr "لم يتم تسجيل أي مفاتيح مرور حتى الآن."
msgid "No results found."
msgstr "لم نعثر على نتائج."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "لا توجد قواعد أسلوبية حتى الآن."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "لم يتم اختبار أي مزود خدمة"
@@ -2623,6 +2657,10 @@ msgstr "برنامج Reactive Resume مجاني ومفتوح المصدر. إذ
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 مفتوح المصدر ويركز على الخصوصية ومجاني تمامًا. وعلى عكس أدوات إنشاء السير الذاتية الأخرى، لا يعرض إعلانات، ولا يتتبع بياناتك، ولا يقيّد ميزاتك خلف جدار دفع."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "إعادة تعيين"
msgid "Reset Password"
msgstr "إعادة تعيين كلمة المرور"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "إعادة ضبط النمط"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "إعادة تعيين كلمة المرور"
@@ -2790,6 +2832,14 @@ msgstr "الرومانية"
msgid "Rotation"
msgstr "الدوران"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "قاعدة"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "قواعد"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "قم بإجراء تحليلك الأول للحصول على بطاقة الأداء ونقاط القوة والاقتراحات ذات الأولوية."
@@ -3277,6 +3327,10 @@ msgstr "لون النص"
msgid "Thai"
msgstr "التايلاندية"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "يحتاج الوكيل إلى رأيك."
@@ -3708,6 +3762,10 @@ msgstr "جاري تحديث كلمة المرور..."
msgid "Updating your resume..."
msgstr "جاري تحديث سيرتك الذاتية..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "تحميل المرفقات"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "تحميل الصورة"
@@ -3959,4 +4017,3 @@ msgstr "تصغير"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "الزولو"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Azerbaijani\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Tətbiq"
msgid "Application Statistics"
msgstr "Tətbiq Statistikası"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Tətbiq olunan Qaydalar"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Ərəb"
@@ -438,6 +442,10 @@ msgstr "Bu CV haqqında hər hansı bir sual verin"
msgid "Aspect Ratio"
msgstr "Propor­siya"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Faylları əlavə edin"
@@ -649,6 +657,7 @@ msgstr "Çin (Ənənəvi)"
msgid "Choose a model and resume draft."
msgstr "Bir model seçin və qaralamanı davam etdirin."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Yan paneldən mövcud bir söhbət seçin və ya qaralamaya yönəlmiş
msgid "Circle"
msgstr "Dairə"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Açıq"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Seçimi təmizləyin"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "İdxal üçün fayl seçmək üçün bura klikləyin"
@@ -953,6 +967,10 @@ msgstr "Fərdiləşdirilmiş OAuth"
msgid "Custom Sections"
msgstr "Xüsusi Bölmələr"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Xüsusi Stillər"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Çex"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Gizlət"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Özgeçmişdəki bütün ikonları gizlət"
msgid "Hide Icons"
msgstr "Nişanları gizlət"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Linkin Alt Xəttini Gizlət"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Özgeçmişdəki bütün ikonları gizlət"
msgid "Hide password"
msgstr "Şifrəni gizlət"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Bölmə İkonlarını Gizlət"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Yüksək"
msgid "Highlight"
msgstr "Vurğula"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Vurğulama Rəngi"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hind"
@@ -2247,6 +2277,10 @@ msgstr "Hələ heç bir giriş açarı qeydiyyatdan keçməyib."
msgid "No results found."
msgstr "Nəticə tapılmadı."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Hələ ki, stil qaydaları yoxdur."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Test edilmiş provayder yoxdur"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume pulsuz və açıq mənbəlidir. Əgər sizə kömək edi
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Sıfırla"
msgid "Reset Password"
msgstr "Parolu Sıfırla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stilini Sıfırla"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Parolunuzu sıfırlayın"
@@ -2790,6 +2832,14 @@ msgstr "Rumın"
msgid "Rotation"
msgstr "Döndürmə"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "qayda"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "qaydalar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "İlk təhlilinizi işə salın, skor kartı, güclü tərəflər və prioritetləşdirilmiş təkliflər əldə edin."
@@ -3277,6 +3327,10 @@ msgstr "Mətn Rəngi"
msgid "Thai"
msgstr "Tay"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agentin sizin fikrinizə ehtiyacı var."
@@ -3708,6 +3762,10 @@ msgstr "Parolunuz yenilənir..."
msgid "Updating your resume..."
msgstr "Özgeçmişiniz yenilənir..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Əlavələri yükləyin"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Şəkil yüklə"
@@ -3959,4 +4017,3 @@ msgstr "Uzaqlaşdır"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Приложение"
msgid "Application Statistics"
msgstr "Статистика на приложението"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Приложени правила"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Арабски"
@@ -438,6 +442,10 @@ msgstr "Попитайте нещо относно тази автобиогра
msgid "Aspect Ratio"
msgstr "Съотношение на страните"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Прикачи файлове"
@@ -649,6 +657,7 @@ msgstr "Китайски (традиционен)"
msgid "Choose a model and resume draft."
msgstr "Изберете модел и чернова на автобиография."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Изберете съществуващ разговор от стран
msgid "Circle"
msgstr "Кръг"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clear"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Изчистване на избора"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Кликнете тук, за да изберете файл за импортиране"
@@ -953,6 +967,10 @@ msgstr "Потребителски OAuth"
msgid "Custom Sections"
msgstr "Потребителски раздели"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Персонализирани стилове"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Чешки"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Скриване"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Скриване на всички икони в автобиографията"
msgid "Hide Icons"
msgstr "Скриване на икони"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Скриване на подчертаната връзка"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Скриване на всички икони в автобиограф
msgid "Hide password"
msgstr "Скриване на паролата"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Скриване на иконите на секциите"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Висока"
msgid "Highlight"
msgstr "Маркер за подчертаване"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Цвят на акцента"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2277,10 @@ msgstr "Все още няма регистрирани ключове за до
msgid "No results found."
msgstr "Няма намерени резултати."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Все още няма стилови правила."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Няма тестван доставчик"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume е безплатен и с отворен код. Ак
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 е с отворен код, фокусиран върху поверителността и напълно безплатен. За разлика от други конструктори на автобиографии, той не показва реклами, не проследява данните ви и не ограничава функциите зад платена стена."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Нулиране"
msgid "Reset Password"
msgstr "Нулиране на паролата"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Нулиране на стила"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Нулирайте паролата си"
@@ -2790,6 +2832,14 @@ msgstr "Румънски"
msgid "Rotation"
msgstr "Завъртане"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "правило"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "правила"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Извършете първия си анализ, за да получите карта с резултати, силни страни и предложения по приоритети."
@@ -3277,6 +3327,10 @@ msgstr "Цвят на текста"
msgid "Thai"
msgstr "Тайландски"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Агентът се нуждае от вашето мнение."
@@ -3708,6 +3762,10 @@ msgstr "Актуализиране на паролата ви..."
msgid "Updating your resume..."
msgstr "Актуализиране на автобиографията ви..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Качване на прикачени файлове"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Качване на снимка"
@@ -3959,4 +4017,3 @@ msgstr "Намаляване"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулуски"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Bengali\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "অ্যাপ"
msgid "Application Statistics"
msgstr "অ্যাপ্লিকেশন পরিসংখ্যান"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "প্রয়োগকৃত নিয়মাবলী"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "আরবি"
@@ -438,6 +442,10 @@ msgstr "এই জীবনবৃত্তান্ত সম্পর্কে
msgid "Aspect Ratio"
msgstr "আকারের অনুপাত"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ফাইলগুলো সংযুক্ত করুন"
@@ -649,6 +657,7 @@ msgstr "চীনা (প্রচলিত)"
msgid "Choose a model and resume draft."
msgstr "একটি মডেল বেছে নিন এবং জীবনবৃত্তান্তের খসড়া তৈরি করুন।"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "সাইডবার থেকে একটি চলমান আল
msgid "Circle"
msgstr "বৃত্ত"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "স্বচ্ছ"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "নির্বাচন পরিষ্কার করুন"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ইমপোর্ট করার জন্য এখান ক্লিক করে একটি ফাইল নির্বাচন করুন"
@@ -953,6 +967,10 @@ msgstr "কাস্টম OAuth"
msgid "Custom Sections"
msgstr "কাস্টম বিভাগসমূহ"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "কাস্টম স্টাইল"
#: src/libs/locale.ts
msgid "Czech"
msgstr "চেক"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "লুকান"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "জীবনবৃত্তান্তে সব আইকন লুকিয়ে রাখুন"
msgid "Hide Icons"
msgstr "আইকন লুকান"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "লিঙ্ক আন্ডারলাইন লুকান"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "জীবনবৃত্তান্তে সব আইকন লুক
msgid "Hide password"
msgstr "পাসওয়ার্ড লুকান"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "সেকশন আইকন লুকান"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "উচ্চ"
msgid "Highlight"
msgstr "হাইলাইট"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "হাইলাইট রঙ"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "হিন্দি"
@@ -2247,6 +2277,10 @@ msgstr "এখনও কোনো পাসকি নিবন্ধিত হ
msgid "No results found."
msgstr "কোন ফলাফল খুঁজে পাওয়া যায়নি।"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "এখনো কোনো স্টাইল নিয়ম ঠিক করা হয়নি।"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "কোন পরীক্ষিত সরবরাহকারী নেই"
@@ -2623,6 +2657,10 @@ msgstr "রিঅ্যাক্টিভ রেজ্যুমে বিনা
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 মুক্ত উৎস, গোপনীয়তা-কেন্দ্রিক এবং সম্পূর্ণ বিনামূল্যে। অন্য জীবনবৃত্তান্ত নির্মাতাদের মতো এটি কোনো বিজ্ঞাপন দেখায় না, আপনার ডেটা ট্র্যাক করে না, বা ফিচারগুলো পেওয়ালের আড়ালে আটকে রাখে না।"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "রিসেট"
msgid "Reset Password"
msgstr "পাসওয়ার্ড রিসেট করুন"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "স্টাইল রিসেট করুন"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "আপনার পাসওয়ার্ড রিসেট করুন"
@@ -2790,6 +2832,14 @@ msgstr "রোমানিয়ান"
msgid "Rotation"
msgstr "রোটেশন"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "নিয়ম"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "নিয়ম"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "আপনার প্রথম বিশ্লেষণ চালান একটি স্কোরকার্ড, শক্তি এবং অগ্রাধিকারপ্রাপ্ত পরামর্শ পেতে।"
@@ -3277,6 +3327,10 @@ msgstr "টেক্সটের রঙ"
msgid "Thai"
msgstr "থাই"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "এজেন্টের আপনার মতামত প্রয়োজন।"
@@ -3708,6 +3762,10 @@ msgstr "আপনার পাসওয়ার্ড আপডেট করা
msgid "Updating your resume..."
msgstr "আপনার জীবনবৃত্তান্ত আপডেট করা হচ্ছে..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "সংযুক্তি আপলোড করুন"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "ছবি আপলোড করুন"
@@ -3959,4 +4017,3 @@ msgstr "জুম আউট"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "জুলু"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Aplicació"
msgid "Application Statistics"
msgstr "Estadístiques de l’aplicació"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Normes aplicades"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Àrab"
@@ -438,6 +442,10 @@ msgstr "Pregunta qualsevol cosa sobre aquest currículum"
msgid "Aspect Ratio"
msgstr "Relació d’aspecte"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Adjunta fitxers"
@@ -649,6 +657,7 @@ msgstr "Xinès (tradicional)"
msgid "Choose a model and resume draft."
msgstr "Trieu un model i un esborrany de currículum."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Trieu una conversa existent de la barra lateral o inicieu un fil nou cen
msgid "Circle"
msgstr "Cercle"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Esborra la selecció"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Fes clic aquí per seleccionar un fitxer per importar"
@@ -953,6 +967,10 @@ msgstr "OAuth personalitzat"
msgid "Custom Sections"
msgstr "Seccions personalitzades"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Estils personalitzats"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Txec"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Amaga"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Amaga totes les icones del currículum"
msgid "Hide Icons"
msgstr "Amaga les icones"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Amaga el subratllat d'enllaços"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Amaga totes les icones del currículum"
msgid "Hide password"
msgstr "Amagar contrasenya"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Amaga les icones de secció"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Alt"
msgid "Highlight"
msgstr "Ressaltat"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Color de ressaltat"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Encara no s'han registrat cap clau d'accés."
msgid "No results found."
msgstr "No s’han trobat resultats."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Encara no hi ha regles d'estil."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Cap proveïdor provat"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume és gratuït i de codi obert. Si t'ha ajudat, considera
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Restableix"
msgid "Reset Password"
msgstr "Restableix la contrasenya"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Restableix l'estil"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Restableix la contrasenya"
@@ -2790,6 +2832,14 @@ msgstr "Romanès"
msgid "Rotation"
msgstr "Rotació"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regles"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Executa la teva primera anàlisi per obtenir un quadre de comandament, els punts forts i suggeriments prioritzats."
@@ -3277,6 +3327,10 @@ msgstr "Color del text"
msgid "Thai"
msgstr "Tai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "L'agent necessita la teva opinió."
@@ -3708,6 +3762,10 @@ msgstr "S’està actualitzant la contrasenya..."
msgid "Updating your resume..."
msgstr "S’està actualitzant el currículum..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Puja fitxers adjunts"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Pujar foto"
@@ -3959,4 +4017,3 @@ msgstr "Allunya"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulú"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -373,6 +373,10 @@ msgstr "Aplikace"
msgid "Application Statistics"
msgstr "Statistiky aplikace"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Použitá pravidla"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabština"
@@ -438,6 +442,10 @@ msgstr "Zeptejte se na cokoli ohledně tohoto životopisu"
msgid "Aspect Ratio"
msgstr "Poměr stran"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Přiložit soubory"
@@ -649,6 +657,7 @@ msgstr "Čínština (tradiční)"
msgid "Choose a model and resume draft."
msgstr "Vyberte si model a návrh životopisu."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Vyberte existující konverzaci z postranního panelu nebo začněte nov
msgid "Circle"
msgstr "Kruh"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Přehledně"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Vymazat výběr"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Kliknutím zde vyberte soubor k importu"
@@ -953,6 +967,10 @@ msgstr "Vlastní OAuth"
msgid "Custom Sections"
msgstr "Vlastní sekce"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Vlastní styly"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Čeština"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Skrýt"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Skrýt všechny ikony v životopisu"
msgid "Hide Icons"
msgstr "Skrýt ikony"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Skrýt podtržení odkazu"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Skrýt všechny ikony v životopisu"
msgid "Hide password"
msgstr "Skrýt heslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Skrýt ikony sekcí"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Vysoká"
msgid "Highlight"
msgstr "Zvýraznění"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Barva zvýraznění"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindština"
@@ -2247,6 +2277,10 @@ msgstr "Zatím nebyly zaregistrovány žádné pasové klíče."
msgid "No results found."
msgstr "Nebyly nalezeny žádné výsledky."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Zatím žádná stylistická pravidla."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Žádný ověřený poskytovatel"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume je zdarma a má otevřený zdrojový kód. Pokud vám po
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Resetovat"
msgid "Reset Password"
msgstr "Obnovit heslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Obnovit styl"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Obnovte své heslo"
@@ -2790,6 +2832,14 @@ msgstr "Rumunština"
msgid "Rotation"
msgstr "Otočení"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "pravidlo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "pravidla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Proveďte první analýzu a získejte hodnotící tabulku, silné stránky a návrhy priorit."
@@ -3277,6 +3327,10 @@ msgstr "Barva textu"
msgid "Thai"
msgstr "Thajština"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agent potřebuje váš vstup."
@@ -3708,6 +3762,10 @@ msgstr "Aktualizace hesla…"
msgid "Updating your resume..."
msgstr "Aktualizace životopisu…"
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Nahrát přílohy"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Nahrát obrázek"
@@ -3959,4 +4017,3 @@ msgstr "Oddálit"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Applikationsstatistik"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Anvendte regler"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabisk"
@@ -438,6 +442,10 @@ msgstr "Spørg om noget om dette CV"
msgid "Aspect Ratio"
msgstr "Billedformat"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Vedhæft filer"
@@ -649,6 +657,7 @@ msgstr "Kinesisk (traditionelt)"
msgid "Choose a model and resume draft."
msgstr "Vælg en model og et udkast til CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Vælg en eksisterende samtale fra sidebjælken, eller start en ny tråd
msgid "Circle"
msgstr "Cirkel"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Klar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Ryd valg"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klik her for at vælge en fil, der skal importeres"
@@ -953,6 +967,10 @@ msgstr "Brugerdefineret OAuth"
msgid "Custom Sections"
msgstr "Brugerdefinerede afsnit"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Brugerdefinerede stilarter"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tjekkisk"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Skjul"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Skjul alle ikoner på CV'et"
msgid "Hide Icons"
msgstr "Skjul ikoner"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Skjul linkunderstregning"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Skjul alle ikoner på CV'et"
msgid "Hide password"
msgstr "Skjul adgangskode"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Skjul sektionsikoner"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Høj"
msgid "Highlight"
msgstr "Fremhæv"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Fremhævelsesfarve"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Ingen nøgler registreret endnu."
msgid "No results found."
msgstr "Ingen resultater fundet."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ingen stilregler endnu."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Ingen testet udbyder"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume er gratis og open source. Hvis det har hjulpet dig, så
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Nulstil"
msgid "Reset Password"
msgstr "Nulstil adgangskode"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Nulstil stil"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Nulstil din adgangskode"
@@ -2790,6 +2832,14 @@ msgstr "Rumænsk"
msgid "Rotation"
msgstr "Rotation"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "herske"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regler"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Kør din første analyse for at få et scorekort, styrker og prioriterede forslag."
@@ -3277,6 +3327,10 @@ msgstr "Tekstfarve"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agenten har brug for din input."
@@ -3708,6 +3762,10 @@ msgstr "Opdaterer din adgangskode..."
msgid "Updating your resume..."
msgstr "Opdaterer dit CV..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Upload vedhæftede filer"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Upload billede"
@@ -3959,4 +4017,3 @@ msgstr "Zoom ud"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Anwendungsstatistiken"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Angewandte Regeln"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabisch"
@@ -438,6 +442,10 @@ msgstr "Fragen Sie alles zu diesem Lebenslauf"
msgid "Aspect Ratio"
msgstr "Seitenverhältnis"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Anhängen von Dateien"
@@ -649,6 +657,7 @@ msgstr "Chinesisch (traditionell)"
msgid "Choose a model and resume draft."
msgstr "Wählen Sie ein Modell und erstellen Sie einen Lebenslaufentwurf."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Wählen Sie eine bestehende Konversation aus der Seitenleiste oder start
msgid "Circle"
msgstr "Kreis"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Klar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Auswahl löschen"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Hier klicken, um eine Datei zum Importieren auszuwählen"
@@ -953,6 +967,10 @@ msgstr "Benutzerdefiniertes OAuth"
msgid "Custom Sections"
msgstr "Benutzerdefinierte Abschnitte"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Benutzerdefinierte Stile"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tschechisch"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ausblenden"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Alle Icons im Lebenslauf ausblenden"
msgid "Hide Icons"
msgstr "Symbole ausblenden"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Link ausblenden Unterstreichung"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Alle Icons im Lebenslauf ausblenden"
msgid "Hide password"
msgstr "Passwort verbergen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Abschnittssymbole ausblenden"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Hoch"
msgid "Highlight"
msgstr "Hervorheben"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Hervorhebungsfarbe"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Noch keine Passkeys registriert."
msgid "No results found."
msgstr "Keine Ergebnisse gefunden."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Noch keine Stilregeln."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Kein geprüfter Anbieter"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume ist kostenlos und Open Source. Wenn es Ihnen geholfen ha
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Zurücksetzen"
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stil zurücksetzen"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Setzen Sie Ihr Passwort zurück"
@@ -2790,6 +2832,14 @@ msgstr "Rumänisch"
msgid "Rotation"
msgstr "Drehung"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "Regel"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "Regeln"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Führen Sie Ihre erste Analyse durch, um eine Scorecard, Stärken und priorisierte Vorschläge zu erhalten."
@@ -3277,6 +3327,10 @@ msgstr "Textfarbe"
msgid "Thai"
msgstr "Thailändisch"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Der Agent benötigt Ihre Mithilfe."
@@ -3708,6 +3762,10 @@ msgstr "Ihr Passwort wird aktualisiert..."
msgid "Updating your resume..."
msgstr "Ihr Lebenslauf wird aktualisiert..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Anhänge hochladen"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Bild hochladen"
@@ -3959,4 +4017,3 @@ msgstr "Herauszoomen"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Εφαρμογή"
msgid "Application Statistics"
msgstr "Στατιστικά εφαρμογής"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Εφαρμοσμένοι κανόνες"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Αραβικά"
@@ -438,6 +442,10 @@ msgstr "Ρωτήστε οτιδήποτε σχετικά με αυτό το βι
msgid "Aspect Ratio"
msgstr "Αναλογία διαστάσεων"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Επισύναψη αρχείων"
@@ -649,6 +657,7 @@ msgstr "Κινέζικα (Παραδοσιακά)"
msgid "Choose a model and resume draft."
msgstr "Επιλέξτε ένα μοντέλο και γράψτε το βιογραφικό σας ως προσχέδιο."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Επιλέξτε μια υπάρχουσα συζήτηση από τη
msgid "Circle"
msgstr "Κύκλος"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Σαφής"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Εκκαθάριση επιλογής"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Κάντε κλικ εδώ για να επιλέξετε ένα αρχείο προς εισαγωγή"
@@ -953,6 +967,10 @@ msgstr "Προσαρμοσμένο OAuth"
msgid "Custom Sections"
msgstr "Προσαρμοσμένες ενότητες"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Προσαρμοσμένα στυλ"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Τσεχικά"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Απόκρυψη"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Απόκρυψη όλων των εικονιδίων στο βιογραφικό σημείωμα"
msgid "Hide Icons"
msgstr "Απόκρυψη εικονιδίων"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Απόκρυψη υπογράμμισης συνδέσμου"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Απόκρυψη όλων των εικονιδίων στο βιογρ
msgid "Hide password"
msgstr "Απόκρυψη κωδικού πρόσβασης"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Απόκρυψη εικονιδίων ενότητας"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Υψηλή"
msgid "Highlight"
msgstr "Επισήμανση"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Χρώμα επισήμανσης"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Χίντι"
@@ -2247,6 +2277,10 @@ msgstr "Δεν έχουν καταχωρηθεί ακόμη passkeys."
msgid "No results found."
msgstr "Δεν βρέθηκαν αποτελέσματα."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Δεν υπάρχουν ακόμα κανόνες στυλ."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Δεν υπάρχει δοκιμασμένος πάροχος"
@@ -2623,6 +2657,10 @@ msgstr "Το Reactive Resume είναι δωρεάν και ανοιχτού κ
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Επαναφορά"
msgid "Reset Password"
msgstr "Επαναφορά κωδικού πρόσβασης"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Επαναφορά στυλ"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Επαναφορά κωδικού πρόσβασης"
@@ -2790,6 +2832,14 @@ msgstr "Ρουμανικά"
msgid "Rotation"
msgstr "Περιστροφή"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "κανόνας"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "κανόνες"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Εκτελέστε την πρώτη σας ανάλυση για να λάβετε έναν πίνακα βαθμολογίας, τα δυνατά σημεία και τις προτάσεις με προτεραιότητες."
@@ -3277,6 +3327,10 @@ msgstr "Χρώμα κειμένου"
msgid "Thai"
msgstr "Ταϊλανδικά"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Ο πράκτορας χρειάζεται τη συμβολή σας."
@@ -3708,6 +3762,10 @@ msgstr "Ενημέρωση του κωδικού πρόσβασής σας..."
msgid "Updating your resume..."
msgstr "Ενημέρωση του βιογραφικού σας σημειώματος..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Μεταφόρτωση συνημμένων"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Ανέβασμα εικόνας"
@@ -3959,4 +4017,3 @@ msgstr "Σμίκρυνση"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Ζουλού"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: English, United Kingdom\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Application Statistics"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Applied Rules"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabic"
@@ -438,6 +442,10 @@ msgstr "Ask anything about this resume"
msgid "Aspect Ratio"
msgstr "Aspect Ratio"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Attach files"
@@ -649,6 +657,7 @@ msgstr "Chinese (Traditional)"
msgid "Choose a model and resume draft."
msgstr "Choose a model and resume draft."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Choose an existing conversation from the sidebar, or start a new draft-f
msgid "Circle"
msgstr "Circle"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clear"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Clear selection"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Click here to select a file to import"
@@ -953,6 +967,10 @@ msgstr "Custom OAuth"
msgid "Custom Sections"
msgstr "Custom Sections"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Custom Styles"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Czech"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Hide"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Hide all icons on the resume"
msgid "Hide Icons"
msgstr "Hide Icons"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Hide Link Underline"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Hide all icons on the resume"
msgid "Hide password"
msgstr "Hide password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Hide Section Icons"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "High"
msgid "Highlight"
msgstr "Highlight"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Highlight Color"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "No passkeys registered yet."
msgid "No results found."
msgstr "No results found."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "No style rules yet."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "No tested provider"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume is free and open source. If it has helped you, please co
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Reset"
msgid "Reset Password"
msgstr "Reset Password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Reset Style"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Reset your password"
@@ -2790,6 +2832,14 @@ msgstr "Romanian"
msgid "Rotation"
msgstr "Rotation"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "rule"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "rules"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
@@ -3277,6 +3327,10 @@ msgstr "Text Colour"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "The agent needs your input."
@@ -3708,6 +3762,10 @@ msgstr "Updating your password..."
msgid "Updating your resume..."
msgstr "Updating your resume..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Upload attachments"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Upload picture"
@@ -3959,4 +4017,3 @@ msgstr "Zoom out"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+60 -2
View File
@@ -368,6 +368,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Application Statistics"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Applied Rules"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabic"
@@ -433,6 +437,10 @@ msgstr "Ask anything about this resume"
msgid "Aspect Ratio"
msgstr "Aspect Ratio"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Attach files"
@@ -644,6 +652,7 @@ msgstr "Chinese (Traditional)"
msgid "Choose a model and resume draft."
msgstr "Choose a model and resume draft."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -661,11 +670,16 @@ msgstr "Choose an existing conversation from the sidebar, or start a new draft-f
msgid "Circle"
msgstr "Circle"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clear"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Clear selection"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Click here to select a file to import"
@@ -948,6 +962,10 @@ msgstr "Custom OAuth"
msgid "Custom Sections"
msgstr "Custom Sections"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Custom Styles"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Czech"
@@ -1728,8 +1746,12 @@ msgid "Hide"
msgstr "Hide"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Hide all icons on the resume"
msgid "Hide Icons"
msgstr "Hide Icons"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Hide Link Underline"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1749,6 +1771,10 @@ msgstr "Hide all icons on the resume"
msgid "Hide password"
msgstr "Hide password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Hide Section Icons"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1758,6 +1784,10 @@ msgstr "High"
msgid "Highlight"
msgstr "Highlight"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Highlight Color"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2242,6 +2272,10 @@ msgstr "No passkeys registered yet."
msgid "No results found."
msgstr "No results found."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "No style rules yet."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "No tested provider"
@@ -2618,6 +2652,10 @@ msgstr "Reactive Resume is free and open source. If it has helped you, please co
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2709,6 +2747,10 @@ msgstr "Reset"
msgid "Reset Password"
msgstr "Reset Password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Reset Style"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Reset your password"
@@ -2785,6 +2827,14 @@ msgstr "Romanian"
msgid "Rotation"
msgstr "Rotation"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "rule"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "rules"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
@@ -3272,6 +3322,10 @@ msgstr "Text Color"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "The agent needs your input."
@@ -3703,6 +3757,10 @@ msgstr "Updating your password..."
msgid "Updating your resume..."
msgstr "Updating your resume..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Upload attachments"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Upload picture"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Aplicación"
msgid "Application Statistics"
msgstr "Estadísticas de la aplicación"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Reglas aplicadas"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Árabe"
@@ -438,6 +442,10 @@ msgstr "Haz cualquier pregunta sobre este currículum."
msgid "Aspect Ratio"
msgstr "Relación de aspecto"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Adjuntar archivos"
@@ -649,6 +657,7 @@ msgstr "Chino (tradicional)"
msgid "Choose a model and resume draft."
msgstr "Elige un modelo y un borrador de currículum."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Selecciona una conversación existente en la barra lateral o inicia un n
msgid "Circle"
msgstr "Círculo"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Claro"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Selección clara"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Haz clic aquí para seleccionar un archivo para importar"
@@ -953,6 +967,10 @@ msgstr "OAuth personalizado"
msgid "Custom Sections"
msgstr "Secciones personalizadas"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Estilos personalizados"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Checo"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ocultar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ocultar todos los iconos en el currículum"
msgid "Hide Icons"
msgstr "Ocultar iconos"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ocultar enlace subrayado"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ocultar todos los iconos en el currículum"
msgid "Hide password"
msgstr "Ocultar contraseña"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Iconos de ocultar sección"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Alta"
msgid "Highlight"
msgstr "Resaltado"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Color de resaltado"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Aún no se ha registrado ninguna llave de paso."
msgid "No results found."
msgstr "No se han encontrado resultados."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Aún no hay reglas de estilo."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "No hay ningún proveedor probado"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume es gratuito y de código abierto. Si te ha sido útil, c
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Restablecer"
msgid "Reset Password"
msgstr "Restablecer contraseña"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Restablecer estilo"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Restablecer tu contraseña"
@@ -2790,6 +2832,14 @@ msgstr "Rumano"
msgid "Rotation"
msgstr "Rotación"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "normas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Realice su primer análisis para obtener un cuadro de mando, los puntos fuertes y las sugerencias priorizadas."
@@ -3277,6 +3327,10 @@ msgstr "Color del texto"
msgid "Thai"
msgstr "Tailandés"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "El agente necesita tu opinión."
@@ -3708,6 +3762,10 @@ msgstr "Actualizando tu contraseña..."
msgid "Updating your resume..."
msgstr "Actualizando tu currículum..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Subir archivos adjuntos"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Subir foto"
@@ -3959,4 +4017,3 @@ msgstr "Alejar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulú"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "اپ"
msgid "Application Statistics"
msgstr "آمار اپلیکیشن"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "قوانین کاربردی"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "عربی"
@@ -438,6 +442,10 @@ msgstr "در مورد این رزومه هر سوالی دارید بپرسید"
msgid "Aspect Ratio"
msgstr "نسبت تصویر"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "پیوست کردن فایل‌ها"
@@ -649,6 +657,7 @@ msgstr "چینی (سنتی)"
msgid "Choose a model and resume draft."
msgstr "یک مدل انتخاب کنید و پیش‌نویس رزومه را بنویسید."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "یک مکالمه موجود را از نوار کناری انتخاب
msgid "Circle"
msgstr "دایره"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "شفاف"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "انتخاب را پاک کنید"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "برای انتخاب فایل برای وارد کردن، اینجا کلیک کنید"
@@ -953,6 +967,10 @@ msgstr "OAuth سفارشی"
msgid "Custom Sections"
msgstr "بخش‌های سفارشی"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "سبک‌های سفارشی"
#: src/libs/locale.ts
msgid "Czech"
msgstr "چکی"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "پنهان کردن"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "تمام آیکون‌ها را روی رزومه مخفی کن"
msgid "Hide Icons"
msgstr "پنهان کردن آیکون‌ها"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "پنهان کردن زیرخط لینک"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "تمام آیکون‌ها را روی رزومه مخفی کن"
msgid "Hide password"
msgstr "پنهان کردن رمز عبور"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "پنهان کردن آیکن‌های بخش"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "بالا"
msgid "Highlight"
msgstr "هایلایت"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "رنگ برجسته"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "هندی"
@@ -2247,6 +2277,10 @@ msgstr "هنوز هیچ کلید عبوری ثبت نشده است."
msgid "No results found."
msgstr "موردی یافت نشد."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "هنوز هیچ قانون سبکی وجود ندارد."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "هیچ ارائه دهنده آزمایش شده ای وجود ندارد"
@@ -2623,6 +2657,10 @@ msgstr "رزومه واکنشی رایگان و متن‌باز است. اگر
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 متن‌باز، حریم‌خصوصی‌محور و کاملاً رایگان است. برخلاف سایر رزومه‌سازها، هیچ تبلیغی نشان نمی‌دهد، داده‌های شما را رهگیری نمی‌کند و قابلیت‌هایتان را پشت دیوار پرداخت محدود نمی‌کند."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "ریست"
msgid "Reset Password"
msgstr "تنظیم مجدد گذرواژه"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "تنظیم مجدد سبک"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "تنظیم مجدد گذرواژهٔ شما"
@@ -2790,6 +2832,14 @@ msgstr "رومانیایی"
msgid "Rotation"
msgstr "چرخش"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "قاعده"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "قوانین"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "اولین تحلیل خود را اجرا کنید تا کارت امتیاز، نقاط قوت و پیشنهادهای اولویت‌بندی‌شده را دریافت کنید."
@@ -3277,6 +3327,10 @@ msgstr "رنگ متن"
msgid "Thai"
msgstr "تایلندی"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "نماینده به نظرات شما نیاز دارد."
@@ -3708,6 +3762,10 @@ msgstr "در حال به‌روزرسانی گذرواژه شما..."
msgid "Updating your resume..."
msgstr "در حال به‌روزرسانی رزومه شما..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "آپلود پیوست‌ها"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "بارگذاری تصویر"
@@ -3959,4 +4017,3 @@ msgstr "کوچک‌نمایی"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "زولو"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Sovellus"
msgid "Application Statistics"
msgstr "Sovelluksen tilastot"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Sovelletut säännöt"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "arabia"
@@ -438,6 +442,10 @@ msgstr "Kysy mitä tahansa tästä ansioluettelosta"
msgid "Aspect Ratio"
msgstr "Kuvasuhde"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Liitä tiedostoja"
@@ -649,6 +657,7 @@ msgstr "kiina (perinteinen)"
msgid "Choose a model and resume draft."
msgstr "Valitse malli ja ansioluettelon luonnos."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Valitse olemassa oleva keskustelu sivupalkista tai aloita uusi luonnosty
msgid "Circle"
msgstr "Ympyrä"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Kirkas"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Tyhjennä valinta"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Napsauta tästä valitaksesi tuotavan tiedoston"
@@ -953,6 +967,10 @@ msgstr "Mukautettu OAuth"
msgid "Custom Sections"
msgstr "Mukautetut osiot"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Mukautetut tyylit"
#: src/libs/locale.ts
msgid "Czech"
msgstr "tšekki"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Piilota"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Piilota kaikki ansioluettelon ikonit"
msgid "Hide Icons"
msgstr "Piilota kuvakkeet"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Piilota linkin alleviivaus"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Piilota kaikki ansioluettelon ikonit"
msgid "Hide password"
msgstr "Piilota salasana"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Piilota osiokuvakkeet"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Korkea"
msgid "Highlight"
msgstr "Korostus"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Korostusväri"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "hindi"
@@ -2247,6 +2277,10 @@ msgstr "Ei vielä rekisteröityjä kulkulupia."
msgid "No results found."
msgstr "Tuloksia ei löytynyt."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ei vielä tyylisääntöjä."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Ei testattua tarjoajaa"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume on ilmainen ja avoimen lähdekoodin työkalu. Jos siitä
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Palauta"
msgid "Reset Password"
msgstr "Palauta salasana"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Palauta tyyli"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Palauta salasanasi"
@@ -2790,6 +2832,14 @@ msgstr "romania"
msgid "Rotation"
msgstr "Kierrätys"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "sääntö"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "säännöt"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Suorita ensimmäinen analyysi, jotta saat tuloskortin, vahvuudet ja priorisoidut ehdotukset."
@@ -3277,6 +3327,10 @@ msgstr "Tekstiväri"
msgid "Thai"
msgstr "thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Välittäjä tarvitsee panostasi."
@@ -3708,6 +3762,10 @@ msgstr "Päivitetään salasanaasi..."
msgid "Updating your resume..."
msgstr "Päivitetään ansioluetteloasi..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Lähetä liitteitä"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Lataa kuva"
@@ -3959,4 +4017,3 @@ msgstr "Loitonna"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Statistiques d'application"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Règles appliquées"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabe"
@@ -438,6 +442,10 @@ msgstr "Posez toutes vos questions concernant ce CV"
msgid "Aspect Ratio"
msgstr "Format d'image"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Joindre des fichiers"
@@ -649,6 +657,7 @@ msgstr "Chinois (traditionnel)"
msgid "Choose a model and resume draft."
msgstr "Choisissez un modèle et un brouillon de CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Choisissez une conversation existante dans la barre latérale, ou créez
msgid "Circle"
msgstr "Cercle"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clair"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Sélection claire"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Cliquez ici pour sélectionner un fichier à importer"
@@ -953,6 +967,10 @@ msgstr "OAuth personnalisé"
msgid "Custom Sections"
msgstr "Sections personnalisées"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Styles personnalisés"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tchèque"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Masquer"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Masquer toutes les icônes du CV"
msgid "Hide Icons"
msgstr "Masquer les icônes"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Masquer le lien Souligner"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Masquer toutes les icônes du CV"
msgid "Hide password"
msgstr "Cacher le mot de passe"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Masquer les icônes de section"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Haut"
msgid "Highlight"
msgstr "Mettre en surbrillance"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Couleur de surbrillance"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Aucun passe-partout n'a encore été enregistré."
msgid "No results found."
msgstr "Aucun résultat trouvé."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Pas encore de règles de style."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Fournisseur non testé"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume est un logiciel libre et gratuit. S'il vous a été util
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Réinitialiser"
msgid "Reset Password"
msgstr "Réinitialiser le mot de passe"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Réinitialiser le style"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Réinitialisez votre mot de passe"
@@ -2790,6 +2832,14 @@ msgstr "Roumain"
msgid "Rotation"
msgstr "Rotation"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "règle"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "règles"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Effectuez votre première analyse pour obtenir un tableau de bord, des points forts et des suggestions classées par ordre de priorité."
@@ -3277,6 +3327,10 @@ msgstr "Couleur du texte"
msgid "Thai"
msgstr "Thaïlandais"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "L'agent a besoin de votre contribution."
@@ -3708,6 +3762,10 @@ msgstr "Mise à jour de votre mot de passe..."
msgid "Updating your resume..."
msgstr "Mise à jour de votre CV..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Télécharger des pièces jointes"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Télécharger l'image"
@@ -3959,4 +4017,3 @@ msgstr "Zoom arrière"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zoulou"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\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"
@@ -373,6 +373,10 @@ msgstr "יישום"
msgid "Application Statistics"
msgstr "סטטיסטיקת היישום"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "כללים יישומיים"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "ערבית"
@@ -438,6 +442,10 @@ msgstr "שאלו כל דבר בנוגע לקורות חיים אלה"
msgid "Aspect Ratio"
msgstr "יחס גובה־רוחב"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "צרף קבצים"
@@ -649,6 +657,7 @@ msgstr "סינית (מסורתית)"
msgid "Choose a model and resume draft."
msgstr "בחר מודל וטיוטת קורות חיים."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "בחר שיחה קיימת מסרגל הצד, או התחל שרשור
msgid "Circle"
msgstr "עיגול"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "נקה"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "נקה את הבחירה"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "לחץ כאן כדי לבחור קובץ לייבוא"
@@ -953,6 +967,10 @@ msgstr "OAuth מותאם אישית"
msgid "Custom Sections"
msgstr "סעיפים מותאמים אישית"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "סגנונות מותאמים אישית"
#: src/libs/locale.ts
msgid "Czech"
msgstr "צ׳כית"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "הסתרה"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "הסתרת כל הסמלים בקורות החיים"
msgid "Hide Icons"
msgstr "הסתר סמלים"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "הסתר קו תחתון של קישור"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "הסתרת כל הסמלים בקורות החיים"
msgid "Hide password"
msgstr "הסתר סיסמה"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "הסתר סמלי מדור"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "גבוה"
msgid "Highlight"
msgstr "סימון"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "צבע סימון"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "הינדי"
@@ -2247,6 +2277,10 @@ msgstr "עדיין לא נרשמו מפתחות גישה."
msgid "No results found."
msgstr "לא נמצאו תוצאות."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "עדיין אין חוקי סגנון."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "אין ספק שנבדק"
@@ -2623,6 +2657,10 @@ msgstr "ריאקטיבי קורות חיים הם חינמיים ובקוד פת
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 הוא בקוד פתוח, ממוקד פרטיות וחינמי לחלוטין. בניגוד לבוני קורות חיים אחרים, הוא לא מציג פרסומות, לא עוקב אחרי הנתונים שלך ולא נועל יכולות מאחורי חומת תשלום."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "איפוס"
msgid "Reset Password"
msgstr "איפוס סיסמה"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "איפוס סגנון"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "איפוס הסיסמה שלך"
@@ -2790,6 +2832,14 @@ msgstr "רומנית"
msgid "Rotation"
msgstr "סיבוב"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "כְּלָל"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "כללים"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "בצע את הניתוח הראשון שלך כדי לקבל דוח ביצועים, נקודות חוזק והצעות מסודרות לפי סדר עדיפויות."
@@ -3277,6 +3327,10 @@ msgstr "צבע כתב"
msgid "Thai"
msgstr "תאית"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "הסוכן זקוק לתשומתך."
@@ -3708,6 +3762,10 @@ msgstr "מעדכן את הסיסמה שלך..."
msgid "Updating your resume..."
msgstr "מעדכן את קורות החיים שלך..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "העלאת קבצים מצורפים"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "העלה תמונה"
@@ -3959,4 +4017,3 @@ msgstr "התרחקות"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "זולו"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "ऐप"
msgid "Application Statistics"
msgstr "ऐप आँकड़े"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "लागू नियम"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "अरबी"
@@ -438,6 +442,10 @@ msgstr "इस रिज्यूमे के बारे में कुछ
msgid "Aspect Ratio"
msgstr "आकार अनुपात"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "फ़ाइलों को संलग्न करें"
@@ -649,6 +657,7 @@ msgstr "चीनी (परंपरागत)"
msgid "Choose a model and resume draft."
msgstr "एक मॉडल चुनें और रिज्यूमे का ड्राफ्ट तैयार करें।"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "साइडबार से किसी मौजूदा बात
msgid "Circle"
msgstr "गोला"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "स्पष्ट"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "चयन साफ़ करें"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "इम्पोर्ट करने के लिए फ़ाइल चुनने हेतु यहाँ क्लिक करें"
@@ -953,6 +967,10 @@ msgstr "कस्टम OAuth"
msgid "Custom Sections"
msgstr "कस्टम अनुभाग"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "कस्टम शैलियाँ"
#: src/libs/locale.ts
msgid "Czech"
msgstr "चेक"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "छुपायें"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "रेज़्यूमे पर सभी आइकॉन छुपाएँ"
msgid "Hide Icons"
msgstr "आइकन छिपाएँ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "लिंक के नीचे की रेखा छिपाएँ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "रेज़्यूमे पर सभी आइकॉन छुप
msgid "Hide password"
msgstr "पासवर्ड छिपाएँ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "सेक्शन आइकन छिपाएँ"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हाइलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "हाइलाइट रंग"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिन्दी"
@@ -2247,6 +2277,10 @@ msgstr "अभी तक कोई पासकी पंजीकृत नह
msgid "No results found."
msgstr "कोई परिणाम नहीं मिला।"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "अभी तक कोई शैली संबंधी नियम नहीं हैं।"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "कोई परीक्षित प्रदाता नहीं"
@@ -2623,6 +2657,10 @@ msgstr "रिएक्टिव रिज्यूम मुफ़्त और
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 ओपन‑सोर्स, गोपनीयता‑केंद्रित और पूरी तरह मुफ़्त है। अन्य रेज़्यूमे बिल्डर के विपरीत, यह विज्ञापन नहीं दिखाता, आपका डेटा ट्रैक नहीं करता और न ही आपकी सुविधाओं को पेवॉल के पीछे सीमित करता है।"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "रीसेट"
msgid "Reset Password"
msgstr "पासवर्ड रीसेट करें"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "शैली रीसेट करें"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "अपना पासवर्ड रीसेट करें"
@@ -2790,6 +2832,14 @@ msgstr "रोमानियाई"
msgid "Rotation"
msgstr "रोटेशन"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "नियम"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "नियम"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "अपना पहला विश्लेषण चलाएँ ताकि आपको एक स्कोरकार्ड, ताकतें और प्राथमिकता-आधारित सुझाव मिल सकें।"
@@ -3277,6 +3327,10 @@ msgstr "अक्षरों का रंग"
msgid "Thai"
msgstr "थाई"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "एजेंट को आपके सुझाव की आवश्यकता है।"
@@ -3708,6 +3762,10 @@ msgstr "आपका पासवर्ड अपडेट किया जा
msgid "Updating your resume..."
msgstr "आपका रेज़्यूमे अपडेट किया जा रहा है..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "संलग्नक अपलोड करें"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "तस्वीर अपलोड करें"
@@ -3959,4 +4017,3 @@ msgstr "ज़ूम आउट"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ज़ुलु"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Alkalmazás"
msgid "Application Statistics"
msgstr "Alkalmazásstatisztikák"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Alkalmazott szabályok"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "arab"
@@ -438,6 +442,10 @@ msgstr "Kérdezzen bármit erről az önéletrajzról"
msgid "Aspect Ratio"
msgstr "Méretarány"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Fájlok csatolása"
@@ -649,6 +657,7 @@ msgstr "kínai (hagyományos)"
msgid "Choose a model and resume draft."
msgstr "Válasszon egy modellt és önéletrajz-tervezetet."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Válasszon egy meglévő beszélgetést az oldalsávon, vagy indítson e
msgid "Circle"
msgstr "Kör"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Tiszta"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Kijelölés törlése"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Kattints ide az importálandó fájl kiválasztásához"
@@ -953,6 +967,10 @@ msgstr "Egyéni OAuth"
msgid "Custom Sections"
msgstr "Egyéni szekciók"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Egyéni stílusok"
#: src/libs/locale.ts
msgid "Czech"
msgstr "cseh"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Elrejtés"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Az önéletrajz összes ikonjának elrejtése"
msgid "Hide Icons"
msgstr "Ikonok elrejtése"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Hivatkozás aláhúzásának elrejtése"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Az önéletrajz összes ikonjának elrejtése"
msgid "Hide password"
msgstr "Jelszó elrejtése"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Szakasz ikonok elrejtése"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Magas"
msgid "Highlight"
msgstr "Kiemelés"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Kiemelő szín"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "hindi"
@@ -2247,6 +2277,10 @@ msgstr "Még nincsenek regisztrált kulcsok."
msgid "No results found."
msgstr "Nincs találat."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Stílusra még nincsenek szabályok."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nincs tesztelt szolgáltató"
@@ -2623,6 +2657,10 @@ msgstr "A Reactive Resume ingyenes és nyílt forráskódú. Ha segített, kérj
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é."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Visszaállítás"
msgid "Reset Password"
msgstr "Jelszó visszaállítása"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stílus visszaállítása"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Jelszó visszaállítása"
@@ -2790,6 +2832,14 @@ msgstr "Román"
msgid "Rotation"
msgstr "Forgatás"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "szabály"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "szabályok"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Futtassa le az első elemzést, hogy kapjon egy értékelőlapot, erősségeket és rangsorolt javaslatokat."
@@ -3277,6 +3327,10 @@ msgstr "Szövegszín"
msgid "Thai"
msgstr "thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Az ügynöknek szüksége van az Ön közreműködésére."
@@ -3708,6 +3762,10 @@ msgstr "Jelszó frissítése..."
msgid "Updating your resume..."
msgstr "Önéletrajz frissítése..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Mellékletek feltöltése"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Kép feltöltése"
@@ -3959,4 +4017,3 @@ msgstr "Kicsinyítés"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "Aplikasi"
msgid "Application Statistics"
msgstr "Statistik Aplikasi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Aturan yang Diterapkan"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arab"
@@ -438,6 +442,10 @@ msgstr "Tanyakan apa pun tentang resume ini."
msgid "Aspect Ratio"
msgstr "Rasio Aspek"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Lampirkan file"
@@ -649,6 +657,7 @@ msgstr "Cina (Tradisional)"
msgid "Choose a model and resume draft."
msgstr "Pilih model dan draf resume."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Pilih percakapan yang sudah ada dari bilah sisi, atau mulai utas baru ya
msgid "Circle"
msgstr "Lingkaran"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Jelas"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Hapus pilihan"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klik di sini untuk memilih file yang akan diimpor"
@@ -953,6 +967,10 @@ msgstr "OAuth khusus"
msgid "Custom Sections"
msgstr "Bagian Kustom"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Gaya Kustom"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Ceko"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Sembunyikan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Sembunyikan semua ikon di resume"
msgid "Hide Icons"
msgstr "Sembunyikan Ikon"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Sembunyikan Garis Bawah Tautan"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Sembunyikan semua ikon di resume"
msgid "Hide password"
msgstr "Sembunyikan kata sandi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Sembunyikan Ikon Bagian"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Tinggi"
msgid "Highlight"
msgstr "Sorot"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Warna Sorot"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Belum ada kunci sandi yang terdaftar."
msgid "No results found."
msgstr "Tidak ada hasil."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Belum ada aturan gaya."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Tidak ada penyedia yang teruji"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume gratis dan bersifat open source. Jika aplikasi ini berma
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Atur Ulang"
msgid "Reset Password"
msgstr "Atur Ulang Kata Sandi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Atur Ulang Gaya"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Atur ulang kata sandi Anda"
@@ -2790,6 +2832,14 @@ msgstr "Rumania"
msgid "Rotation"
msgstr "Rotasi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "aturan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "aturan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Jalankan analisis pertama Anda untuk mendapatkan kartu skor, kekuatan, dan saran yang diprioritaskan."
@@ -3277,6 +3327,10 @@ msgstr "Warna Teks"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agen tersebut membutuhkan masukan Anda."
@@ -3708,6 +3762,10 @@ msgstr "Memperbarui kata sandi Anda..."
msgid "Updating your resume..."
msgstr "Memperbarui resume Anda..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Unggah lampiran"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Unggah gambar"
@@ -3959,4 +4017,3 @@ msgstr "Perkecil"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Statistiche dell'applicazione"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Regole applicate"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabo"
@@ -438,6 +442,10 @@ msgstr "Chiedi qualsiasi cosa su questo curriculum"
msgid "Aspect Ratio"
msgstr "Proporzioni"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Allega i file"
@@ -649,6 +657,7 @@ msgstr "Cinese (tradizionale)"
msgid "Choose a model and resume draft."
msgstr "Scegli un modello e una bozza di curriculum."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Scegli una conversazione esistente dalla barra laterale oppure avvia una
msgid "Circle"
msgstr "Cerchio"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Libero"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Cancella selezione"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Fai clic qui per selezionare un file da importare"
@@ -953,6 +967,10 @@ msgstr "OAuth personalizzato"
msgid "Custom Sections"
msgstr "Sezioni personalizzate"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Stili personalizzati"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Ceco"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Nascondi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Nascondi tutte le icone sul curriculum"
msgid "Hide Icons"
msgstr "Nascondi icone"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Nascondi il collegamento sottolineato"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Nascondi tutte le icone sul curriculum"
msgid "Hide password"
msgstr "Nascondere la password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Nascondi le icone della sezione"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Alto"
msgid "Highlight"
msgstr "Evidenzia"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Colore di evidenziazione"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Non sono ancora stati registrati dei passepartout."
msgid "No results found."
msgstr "Nessun risultato trovato."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Non sono ancora state definite delle regole di stile."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nessun fornitore segnalato"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume è gratuito e open source. Se ti è stato utile, conside
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Ripristina"
msgid "Reset Password"
msgstr "Reimposta password"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Ripristina stile"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Reimposta la tua password"
@@ -2790,6 +2832,14 @@ msgstr "Rumeno"
msgid "Rotation"
msgstr "Rotazione"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regola"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regole"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Esegua la prima analisi per ottenere una scorecard, i punti di forza e i suggerimenti prioritari."
@@ -3277,6 +3327,10 @@ msgstr "Colore del testo"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "L'agente ha bisogno del tuo contributo."
@@ -3708,6 +3762,10 @@ msgstr "Aggiornamento della tua password in corso..."
msgid "Updating your resume..."
msgstr "Aggiornamento del tuo curriculum in corso..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Carica allegati"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Carica l'immagine"
@@ -3959,4 +4017,3 @@ msgstr "Rimpicciolisci"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+243 -186
View File
File diff suppressed because it is too large Load Diff
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Khmer\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "កម្មវិធី"
msgid "Application Statistics"
msgstr "ស្ថិតិ​កម្មវិធី"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "ច្បាប់ដែលបានអនុវត្ត"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabic"
@@ -438,6 +442,10 @@ msgstr "សួរអ្វីមួយអំពីប្រវត្តិរូ
msgid "Aspect Ratio"
msgstr "សមាមាត្រទ្រង់ទ្រាយ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ភ្ជាប់ឯកសារ"
@@ -649,6 +657,7 @@ msgstr "Chinese (Traditional)"
msgid "Choose a model and resume draft."
msgstr "ជ្រើសរើសគំរូ និងប្រវត្តិរូបសង្ខេប។"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "ជ្រើសរើសការសន្ទនាដែលមានស
msgid "Circle"
msgstr "រង្វង់"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "សម្អាត"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "សម្អាតការជ្រើសរើស"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ចុច​ទីនេះ​ដើម្បី​ជ្រើស​ឯកសារ​មួយ​ដើម្បី​នាំចូល"
@@ -953,6 +967,10 @@ msgstr "OAuth ផ្ទាល់ខ្លួន"
msgid "Custom Sections"
msgstr "ផ្នែក​ផ្ទាល់ខ្លួន"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "រចនាប័ទ្មផ្ទាល់ខ្លួន"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Czech"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "លាក់"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "លាក់​រូបតំណាង​ទាំងអស់​លើ​ប្រវត្តិរូប"
msgid "Hide Icons"
msgstr "លាក់រូបតំណាង"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "លាក់​បន្ទាត់​ក្រោម​តំណ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "លាក់​រូបតំណាង​ទាំងអស់​លើ
msgid "Hide password"
msgstr "លាក់ពាក្យសម្ងាត់"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "លាក់រូបតំណាងផ្នែក"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "ខ្ពស់"
msgid "Highlight"
msgstr "រំលេច"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "ពណ៌​បន្លិច"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "មិនទាន់មាន passkey បានចុះឈ្មោះ
msgid "No results found."
msgstr "រក​មិន​ឃើញ​លទ្ធផល។"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "មិនទាន់មានច្បាប់រចនាប័ទ្មនៅឡើយទេ។"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "គ្មានអ្នកផ្តល់សេវាដែលបានធ្វើតេស្តទេ"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume គឺឥតគិតថ្លៃ និងជាប្
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 ឡើយ។"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "កំណត់​ឡើងវិញ"
msgid "Reset Password"
msgstr "កំណត់​ពាក្យសម្ងាត់​ឡើងវិញ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "កំណត់រចនាប័ទ្មឡើងវិញ"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "កំណត់​ពាក្យសម្ងាត់​របស់​អ្នក​ឡើងវិញ"
@@ -2790,6 +2832,14 @@ msgstr "Romanian"
msgid "Rotation"
msgstr "មុំ​បង្វែរ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "គ្រប់គ្រង"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "ច្បាប់"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "ដំណើរការវិភាគលើកដំបូងរបស់អ្នកដើម្បីទទួលបានតារាងពិន្ទុ ចំណុចខ្លាំង និងសំណើដែលបានកំណត់អាទិភាព។"
@@ -3277,6 +3327,10 @@ msgstr "ពណ៌​អត្ថបទ"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ភ្នាក់ងារត្រូវការមតិយោបល់ពីអ្នក។"
@@ -3708,6 +3762,10 @@ msgstr "កំពុង​បច្ចុប្បន្នភាព​ពាក
msgid "Updating your resume..."
msgstr "កំពុង​បច្ចុប្បន្នភាព​ប្រវត្តិរូប​របស់​អ្នក..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "ផ្ទុកឡើងឯកសារភ្ជាប់"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "អាប់ឡូដរូបភាព"
@@ -3959,4 +4017,3 @@ msgstr "បង្រួម"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Kannada\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "ಆ್ಯಪ್"
msgid "Application Statistics"
msgstr "ಅಪ್ಲಿಕೇಶನ್ ಅಂಕಿಅಂಶಗಳು"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "ಅನ್ವಯವಾಗುವ ನಿಯಮಗಳು"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "ಅರೇಬಿಕ್"
@@ -438,6 +442,10 @@ msgstr "ಈ ರೆಸ್ಯೂಮ್ ಬಗ್ಗೆ ಏನಾದರೂ ಕೇ
msgid "Aspect Ratio"
msgstr "ಆಕಾರ ಅನುಪಾತ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ಫೈಲ್‌ಗಳನ್ನು ಲಗತ್ತಿಸಿ"
@@ -649,6 +657,7 @@ msgstr "ಚೈನೀಸ್ (ಸಾಂಪ್ರದಾಯಿಕ)"
msgid "Choose a model and resume draft."
msgstr "ಮಾದರಿ ಮತ್ತು ಪುನರಾರಂಭದ ಡ್ರಾಫ್ಟ್ ಅನ್ನು ಆರಿಸಿ."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "ಸೈಡ್‌ಬಾರ್‌ನಿಂದ ಅಸ್ತಿತ್ವದ
msgid "Circle"
msgstr "ವೃತ್ತ"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "ತೆರವುಗೊಳಿಸಿ"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "ಆಯ್ಕೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ಆಮದು ಮಾಡಲು ಕಡತವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ"
@@ -953,6 +967,10 @@ msgstr "ಕಸ್ಟಮ್ OAuth"
msgid "Custom Sections"
msgstr "ಕಸ್ಟಮ್ ವಿಭಾಗಗಳು"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "ಕಸ್ಟಮ್ ಶೈಲಿಗಳು"
#: src/libs/locale.ts
msgid "Czech"
msgstr "ಚೆಕ್"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "ಮರೆಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ರೆಸ್ಯೂಮ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಐಕಾನ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ"
msgid "Hide Icons"
msgstr "ಐಕಾನ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "ಲಿಂಕ್ ಅಂಡರ್‌ಲೈನ್ ಅನ್ನು ಮರೆಮಾಡಿ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "ರೆಸ್ಯೂಮ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಐಕಾ
msgid "Hide password"
msgstr "ಪಾಸ್‌ವರ್ಡ್ ಮರೆಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "ವಿಭಾಗ ಐಕಾನ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "ಹೆಚ್ಚು"
msgid "Highlight"
msgstr "ಹೈಲೈಟ್ ಮಾಡಿ"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "ಬಣ್ಣವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ಹಿಂದಿ"
@@ -2247,6 +2277,10 @@ msgstr "ಇನ್ನೂ ಯಾವುದೇ ಪಾಸ್‌ಕೀಗಳು ನೋ
msgid "No results found."
msgstr "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬರಲಿಲ್ಲ."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "ಇನ್ನೂ ಯಾವುದೇ ಶೈಲಿಯ ನಿಯಮಗಳಿಲ್ಲ."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "ಪರೀಕ್ಷಿಸದ ಪೂರೈಕೆದಾರರು ಇಲ್ಲ."
@@ -2623,6 +2657,10 @@ msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮ್ ಉಚಿತ ಮ
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 ಮುಕ್ತ-ಮೂಲ, ಗೌಪ್ಯತಿಗೆ ಪ್ರಾಧಾನ್ಯ ನೀಡುವ ಹಾಗು ಸಂಪೂರ್ಣವಾಗಿ ಉಚಿತವಾಗಿದೆ. ಇತರೆ ರೆಸ್ಯೂಮ್ ನಿರ್ಮಾಪಕರಿಗಿಂತ ವಿಭಿನ್ನವಾಗಿ, ಇದು ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸುವುದಿಲ್ಲ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದಿಲ್ಲ, ಅಥವಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪೇಯ್‌ವಾಲ್ ಹಿಂದೆ ಮಿತಿ ಮಾಡುವುದಿಲ್ಲ."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "ಮರುಹೊಂದಿಸಿ"
msgid "Reset Password"
msgstr "ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "ಶೈಲಿಯನ್ನು ಮರುಹೊಂದಿಸಿ"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಿ"
@@ -2790,6 +2832,14 @@ msgstr "ರೊಮೇನಿಯನ್"
msgid "Rotation"
msgstr "ಭ್ರಮನ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "ನಿಯಮ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "ನಿಯಮಗಳು"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "ಸ್ಕೋರ್‌ಕಾರ್ಡ್, ಬಲಗಳು ಮತ್ತು ಆದ್ಯತೆಯ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಮೊದಲ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಚಲಾಯಿಸಿ."
@@ -3277,6 +3327,10 @@ msgstr "ಅಕ್ಷರದ ಬಣ್ಣ"
msgid "Thai"
msgstr "ಥಾಯ್"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ಏಜೆಂಟ್‌ಗೆ ನಿಮ್ಮ ಸಲಹೆಯ ಅಗತ್ಯವಿದೆ."
@@ -3708,6 +3762,10 @@ msgstr "ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನವೀ
msgid "Updating your resume..."
msgstr "ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "ಲಗತ್ತುಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "ಚಿತ್ರವನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ"
@@ -3959,4 +4017,3 @@ msgstr "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ಜೂಲೂ"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "앱"
msgid "Application Statistics"
msgstr "애플리케이션 통계"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "적용된 규칙"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "아랍어"
@@ -438,6 +442,10 @@ msgstr "이력서에 대해 궁금한 점이 있으면 무엇이든 물어보세
msgid "Aspect Ratio"
msgstr "가로세로 비율"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "파일 첨부"
@@ -649,6 +657,7 @@ msgstr "중국어(번체)"
msgid "Choose a model and resume draft."
msgstr "모델을 선택하고 이력서 초안을 작성하세요."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "사이드바에서 기존 대화를 선택하거나, 초안 작성에
msgid "Circle"
msgstr "원"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "지우기"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "선택 해제"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "가져올 파일을 선택하려면 여기를 클릭하세요"
@@ -953,6 +967,10 @@ msgstr "사용자 지정 OAuth"
msgid "Custom Sections"
msgstr "사용자 지정 섹션"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "사용자 지정 스타일"
#: src/libs/locale.ts
msgid "Czech"
msgstr "체코어"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "숨기기"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "이력서의 모든 아이콘 숨기기"
msgid "Hide Icons"
msgstr "아이콘 숨기기"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "링크 밑줄 숨기기"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "이력서의 모든 아이콘 숨기기"
msgid "Hide password"
msgstr "비밀번호 숨기기"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "섹션 아이콘 숨기기"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "높음"
msgid "Highlight"
msgstr "형광펜"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "하이라이트 색상"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "힌디어"
@@ -2247,6 +2277,10 @@ msgstr "아직 등록된 패스키가 없습니다."
msgid "No results found."
msgstr "결과가 없습니다."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "아직 스타일 규칙은 없습니다."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "검증되지 않은 제공업체"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume는 무료 오픈 소스 소프트웨어입니다. 도움
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는 오픈 소스, 개인정보 보호 중심, 완전 무료 서비스입니다. 다른 이력서 작성 도구와 달리 광고를 표시하지 않고, 데이터를 추적하지 않으며, 기능을 페이월 뒤에 숨기지도 않습니다."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "초기화"
msgid "Reset Password"
msgstr "비밀번호 재설정"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "스타일 재설정"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "비밀번호 재설정"
@@ -2790,6 +2832,14 @@ msgstr "루마니아어"
msgid "Rotation"
msgstr "회전"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "규칙"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "규칙"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "첫 번째 분석을 실행하여 스코어카드, 강점, 우선순위가 지정된 제안을 확인하세요."
@@ -3277,6 +3327,10 @@ msgstr "텍스트 색상"
msgid "Thai"
msgstr "태국어"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "상담원이 고객님의 입력을 필요로 합니다."
@@ -3708,6 +3762,10 @@ msgstr "비밀번호를 업데이트하는 중입니다..."
msgid "Updating your resume..."
msgstr "이력서를 업데이트하는 중입니다..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "첨부 파일을 업로드하세요"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "사진 업로드"
@@ -3959,4 +4017,3 @@ msgstr "축소"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "줄루어"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\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"
@@ -373,6 +373,10 @@ msgstr "Programa"
msgid "Application Statistics"
msgstr "Programos statistika"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Taikomos taisyklės"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabų"
@@ -438,6 +442,10 @@ msgstr "Klauskite bet ko apie šį gyvenimo aprašymą"
msgid "Aspect Ratio"
msgstr "Vaizdo santykis"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Pridėti failus"
@@ -649,6 +657,7 @@ msgstr "Kinų (tradicinė)"
msgid "Choose a model and resume draft."
msgstr "Pasirinkite modelį ir gyvenimo aprašymo juodraštį."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Šoninėje juostoje pasirinkite esamą pokalbį arba pradėkite naują,
msgid "Circle"
msgstr "Apskritimas"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Skaidrus"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Išvalyti pasirinkimą"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Spustelėkite čia, kad pasirinktumėte importuojamą failą"
@@ -953,6 +967,10 @@ msgstr "Pasirinktinis OAuth"
msgid "Custom Sections"
msgstr "Pasirinktiniai skyriai"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Pasirinktiniai stiliai"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Čekų"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Paslėpti"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Paslėpti visas ikonas gyvenimo aprašyme"
msgid "Hide Icons"
msgstr "Slėpti piktogramas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Slėpti nuorodos pabraukimą"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Paslėpti visas ikonas gyvenimo aprašyme"
msgid "Hide password"
msgstr "Paslėpti slaptažodį"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Slėpti skyrių piktogramas"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Aukštas"
msgid "Highlight"
msgstr "Paryškinti"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Paryškinimo spalva"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Kol kas neužregistruota jokių passkeys."
msgid "No results found."
msgstr "Rezultatų nerasta."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Stiliaus taisyklių dar nėra."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nėra patikrinto tiekėjo"
@@ -2623,6 +2657,10 @@ msgstr "„Reactive Resume“ yra nemokamas ir atvirojo kodo. Jei jis jums padė
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Nustatyti iš naujo"
msgid "Reset Password"
msgstr "Atkurti slaptažodį"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Atstatyti stilių"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Atkurkite slaptažodį"
@@ -2790,6 +2832,14 @@ msgstr "Rumunų"
msgid "Rotation"
msgstr "Sukimas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "taisyklė"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "taisyklės"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Atlikite pirmąją analizę, kad gautumėte rezultatų lentelę, stipriąsias puses ir prioritetinius pasiūlymus."
@@ -3277,6 +3327,10 @@ msgstr "Teksto spalva"
msgid "Thai"
msgstr "Tajų"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agentui reikia jūsų indėlio."
@@ -3708,6 +3762,10 @@ msgstr "Atnaujinamas jūsų slaptažodis..."
msgid "Updating your resume..."
msgstr "Atnaujinamas jūsų gyvenimo aprašymas..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Įkelti priedus"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Įkelti nuotrauką"
@@ -3959,4 +4017,3 @@ msgstr "Tolinti"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulų"
+61 -4
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-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\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"
@@ -373,6 +373,10 @@ msgstr "Lietotne"
msgid "Application Statistics"
msgstr "Lietotnes statistika"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Piemērotie noteikumi"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arābu"
@@ -438,6 +442,10 @@ msgstr "Jautājiet jebko par šo CV"
msgid "Aspect Ratio"
msgstr "Proporcijas"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Pievienot failus"
@@ -649,6 +657,7 @@ msgstr "Ķīniešu (tradicionālā)"
msgid "Choose a model and resume draft."
msgstr "Izvēlieties modeli un CV melnrakstu."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Sānjoslā izvēlieties esošu sarunu vai sāciet jaunu, uz melnrakstu o
msgid "Circle"
msgstr "Aplis"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Skaidrs"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Notīrīt atlasi"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Noklikšķiniet šeit, lai izvēlētos importējamo failu"
@@ -953,6 +967,10 @@ msgstr "Pielāgotais OAuth"
msgid "Custom Sections"
msgstr "Pielāgotās sadaļas"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Pielāgoti stili"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Čehu"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Slēpt"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Paslēpt visas ikonas CV"
msgid "Hide Icons"
msgstr "Slēpt ikonas"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Slēpt saites pasvītrojumu"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Paslēpt visas ikonas CV"
msgid "Hide password"
msgstr "Paslēpt paroli"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Slēpt sadaļu ikonas"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Augsts"
msgid "Highlight"
msgstr "Izcelt"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Izcelt krāsu"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Pagaidām nav reģistrēti pases taustiņi."
msgid "No results found."
msgstr "Rezultāti nav atrasti."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Vēl nav stila noteikumu."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nav pārbaudīta pakalpojumu sniedzēja"
@@ -2623,6 +2657,10 @@ msgstr "Reactive CV ir bezmaksas un atvērtā koda resurss. Ja tas jums ir palī
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."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Atiestatīt"
msgid "Reset Password"
msgstr "Atiestatīt paroli"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Atiestatīt stilu"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Atiestatīt paroli"
@@ -2790,6 +2832,14 @@ msgstr "Rumāņu"
msgid "Rotation"
msgstr "Rotācija"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "noteikums"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "noteikumi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Veiciet pirmo analīzi, lai iegūtu rezultātu tabulu, stiprās puses un prioritizētus ieteikumus."
@@ -3277,6 +3327,10 @@ msgstr "Teksta krāsa"
msgid "Thai"
msgstr "Taju"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Aģentam ir nepieciešama jūsu ieguldījums."
@@ -3708,6 +3762,10 @@ msgstr "Tiek atjaunināta jūsu parole..."
msgid "Updating your resume..."
msgstr "Tiek atjaunināts jūsu CV..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Augšupielādēt pielikumus"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Augšupielādēt attēlu"
@@ -3959,4 +4017,3 @@ msgstr "Tālināt"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ml\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Malayalam\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "ആപ്പ്"
msgid "Application Statistics"
msgstr "ആപ്ലിക്കേഷൻ സ്റ്റാറ്റിസ്റ്റിക്സ്"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "ബാധകമായ നിയമങ്ങൾ"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "അറബിക്"
@@ -438,6 +442,10 @@ msgstr "ഈ റെസ്യൂമെയെക്കുറിച്ച് എന
msgid "Aspect Ratio"
msgstr "ആസ്പെക്ട് റേഷ്യോ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ഫയലുകൾ അറ്റാച്ചുചെയ്യുക"
@@ -649,6 +657,7 @@ msgstr "ചൈനീസ് (ട്രഡീഷണൽ)"
msgid "Choose a model and resume draft."
msgstr "ഒരു മോഡൽ തിരഞ്ഞെടുത്ത് ഡ്രാഫ്റ്റ് റെസ്യൂമെ ചെയ്യുക."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "സൈഡ്‌ബാറിൽ നിന്ന് നിലവിലു
msgid "Circle"
msgstr "വൃത്തം"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "വ്യക്തമാക്കുക"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "തിരഞ്ഞെടുപ്പ് മായ്ക്കുക"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ഇംപോർട്ട് ചെയ്യാൻ ഒരു ഫയൽ തിരഞ്ഞെടുക്കാൻ ഇവിടെ ക്ലിക്ക് ചെയ്യുക"
@@ -953,6 +967,10 @@ msgstr "ഇഷ്ടാനുസൃത OAuth"
msgid "Custom Sections"
msgstr "കസ്റ്റം സെക്ഷനുകൾ"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "ഇഷ്ടാനുസൃത ശൈലികൾ"
#: src/libs/locale.ts
msgid "Czech"
msgstr "ചെക്ക്"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "മറയ്ക്കുക"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "റിസ്യൂമിലെ എല്ലാ ഐക്കണുകളും മറയ്ക്കുക"
msgid "Hide Icons"
msgstr "ഐക്കണുകൾ മറയ്ക്കുക"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "ലിങ്ക് അടിവര മറയ്ക്കുക"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "റിസ്യൂമിലെ എല്ലാ ഐക്കണുകള
msgid "Hide password"
msgstr "പാസ്‌വേഡ് മറയ്ക്കുക"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "വിഭാഗ ഐക്കണുകൾ മറയ്ക്കുക"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "ഉയർന്ന"
msgid "Highlight"
msgstr "ഹൈലൈറ്റ്"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "നിറം ഹൈലൈറ്റ് ചെയ്യുക"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ഹിന്ദി"
@@ -2247,6 +2277,10 @@ msgstr "ഇതുവരെ പാസ്‌കീകൾ രജിസ്റ്റ
msgid "No results found."
msgstr "ഒരൊന്നുമാത്രം ഫലങ്ങളൊന്നും ലഭ്യമല്ല."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "ഇതുവരെ സ്റ്റൈൽ നിയമങ്ങളൊന്നുമില്ല."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "പരിശോധിച്ച ദാതാവില്ല."
@@ -2623,6 +2657,10 @@ msgstr "റിയാക്ടീവ് റെസ്യൂമെ സൌജന്
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 ഓപ്പൺ സോഴ്‌സും സ്വകാര്യത കേന്ദ്രീകൃതവുമായ, പൂർണ്ണമായും സൗജന്യമായൊരു ആപ്പാണ്. മറ്റ് റിസ്യൂം ബിൽഡറുകളെ അപേക്ഷിച്ച്, ഇത് പരസ്യങ്ങൾ കാണിക്കുകയോ, നിങ്ങളുടെ ഡാറ്റ ട്രാക്ക് ചെയ്യുകയോ, സവിശേഷതകൾ പേയ്വാളിന് പിന്നിൽ ഒതുക്കുകയോ ചെയ്യുന്നില്ല."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "റീസെറ്റ് ചെയ്യുക"
msgid "Reset Password"
msgstr "പാസ്‌വേഡ് റീസെറ്റ് ചെയ്യുക"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "സ്റ്റൈൽ പുനഃസജ്ജമാക്കുക"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "നിങ്ങളുടെ പാസ്‌വേഡ് റീസെറ്റ് ചെയ്യുക"
@@ -2790,6 +2832,14 @@ msgstr "റൊമാനിയൻ"
msgid "Rotation"
msgstr "ററോട്ടേഷൻ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "ഭരണം"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "നിയമങ്ങൾ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "നിങ്ങളുടെ ആദ്യ വിശകലനം നടത്തി ഒരു സ്കോർകാർഡ്, ശക്തികൾ, മുൻഗണനാ നിർദ്ദേശങ്ങൾ എന്നിവ നേടുക."
@@ -3277,6 +3327,10 @@ msgstr "ടെക്സ്റ്റ് നിറം"
msgid "Thai"
msgstr "തായ്"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ഏജന്റിന് നിങ്ങളുടെ അഭിപ്രായം ആവശ്യമാണ്."
@@ -3708,6 +3762,10 @@ msgstr "നിങ്ങളുടെ പാസ്‌വേഡ് അപ്‌ഡ
msgid "Updating your resume..."
msgstr "നിങ്ങളുടെ റിസ്യൂം അപ്‌ഡേറ്റ് ചെയ്യുന്നു..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "അറ്റാച്ചുമെന്റുകൾ അപ്‌ലോഡ് ചെയ്യുക"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "ചിത്രം അപ്‌ലോഡ് ചെയ്യുക"
@@ -3959,4 +4017,3 @@ msgstr "സൂം ഔട്ട് ചെയ്യുക"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "സൂളു"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: mr\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Marathi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "अ‍ॅप"
msgid "Application Statistics"
msgstr "अ‍ॅप्लिकेशन आकडेवारी"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "लागू केलेले नियम"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "अरबी"
@@ -438,6 +442,10 @@ msgstr "या रिझ्युमेबद्दल काहीही वि
msgid "Aspect Ratio"
msgstr "प्रसर गुणोत्तर"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "फाईल्स जोडा"
@@ -649,6 +657,7 @@ msgstr "चीनी (परंपरागत)"
msgid "Choose a model and resume draft."
msgstr "मॉडेल आणि रिझ्युमेचा मसुदा निवडा."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "साइडबारमधून आधीपासून सुरू
msgid "Circle"
msgstr "गोलाकार"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "स्पष्ट"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "निवड साफ करा"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "इम्पोर्ट करण्यासाठी फाईल निवडण्यासाठी येथे क्लिक करा"
@@ -953,6 +967,10 @@ msgstr "सानुकूल OAuth"
msgid "Custom Sections"
msgstr "सानुकूल विभाग"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "सानुकूल शैली"
#: src/libs/locale.ts
msgid "Czech"
msgstr "चेक"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "लपवा"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "रेझ्युमेवरील सर्व आयकन्स लपवा"
msgid "Hide Icons"
msgstr "चिन्हे लपवा"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "लिंक लपवा"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "रेझ्युमेवरील सर्व आयकन्स ल
msgid "Hide password"
msgstr "पासवर्ड लपवा"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "विभाग चिन्हे लपवा"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हायलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "हायलाइट रंग"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिंदी"
@@ -2247,6 +2277,10 @@ msgstr "अद्याप कोणतीही पासकी नोंदव
msgid "No results found."
msgstr "कोणतेही परिणाम आढळले नाहीत."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "अद्याप शैलीचे नियम नाहीत."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "कोणताही तपासलेला प्रदाता नाही"
@@ -2623,6 +2657,10 @@ msgstr "रिॲक्टिव्ह रिझ्युमे मोफत आ
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 हे मुक्त-स्रोत, गोपनीयता-केंद्रित आणि पूर्णपणे मोफत आहे. इतर रेझ्युमे बिल्डर्सप्रमाणेच नाही, हे जाहिराती दाखवत नाही, तुमचा डेटा ट्रॅक करत नाही किंवा फिचर्स पेवॉलच्या मागे मर्यादित करत नाही."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "रीसेट करा"
msgid "Reset Password"
msgstr "पासवर्ड रीसेट करा"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "शैली रीसेट करा"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "तुमचा पासवर्ड रीसेट करा"
@@ -2790,6 +2832,14 @@ msgstr "रोमानियन"
msgid "Rotation"
msgstr "रोटेशन"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "नियम"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "नियम"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "तुमचे पहिले विश्लेषण चालवा आणि स्कोरकार्ड, सामर्थ्ये आणि प्राधान्यक्रमाने सुचवलेल्या सूचना मिळवा."
@@ -3277,6 +3327,10 @@ msgstr "मजकुराचा रंग"
msgid "Thai"
msgstr "थाई"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "एजंटला तुमच्या माहितीची आवश्यकता आहे."
@@ -3708,6 +3762,10 @@ msgstr "तुमचा पासवर्ड अपडेट केला ज
msgid "Updating your resume..."
msgstr "तुमचा रेझ्युमे अपडेट केला जात आहे..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "संलग्नक अपलोड करा"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "चित्र अपलोड करा"
@@ -3959,4 +4017,3 @@ msgstr "बाहेर झूम करा"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "झुलू"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ms\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Malay\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "Apl"
msgid "Application Statistics"
msgstr "Statistik Aplikasi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Peraturan yang Digunakan"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Bahasa Arab"
@@ -438,6 +442,10 @@ msgstr "Tanya apa-apa sahaja tentang resume ini"
msgid "Aspect Ratio"
msgstr "Nisbah Aspek"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Lampirkan fail"
@@ -649,6 +657,7 @@ msgstr "Cina (Tradisional)"
msgid "Choose a model and resume draft."
msgstr "Pilih model dan draf resume."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Pilih perbualan sedia ada daripada bar sisi atau mulakan thread berfokus
msgid "Circle"
msgstr "Bulatan"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Jelas"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Kosongkan pilihan"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klik di sini untuk memilih fail untuk diimport"
@@ -953,6 +967,10 @@ msgstr "OAuth Tersuai"
msgid "Custom Sections"
msgstr "Seksyen Tersuai"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Gaya Tersuai"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Czech"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Sembunyi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Sembunyikan semua ikon pada resume"
msgid "Hide Icons"
msgstr "Sembunyikan Ikon"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Sembunyikan Garis Bawah Pautan"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Sembunyikan semua ikon pada resume"
msgid "Hide password"
msgstr "Sembunyikan kata laluan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Sembunyikan Ikon Bahagian"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Tinggi"
msgid "Highlight"
msgstr "Sorot"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Warna Serlahan"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Tiada kunci laluan yang didaftarkan lagi."
msgid "No results found."
msgstr "Tiada keputusan dijumpai."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Tiada peraturan gaya lagi."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Tiada pembekal yang diuji"
@@ -2623,6 +2657,10 @@ msgstr "Resume Reaktif adalah percuma dan sumber terbuka. Jika ia telah membantu
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 ialah sumber terbuka, berfokuskan privasi dan benar-benar percuma. Tidak seperti pembina resume yang lain, ia tidak memaparkan iklan, menjejak data anda atau mengehadkan ciri di sebalik dinding bayaran."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Tetapkan Semula"
msgid "Reset Password"
msgstr "Tetapkan Semula Kata Laluan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Tetapkan Semula Gaya"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Tetapkan semula kata laluan anda"
@@ -2790,6 +2832,14 @@ msgstr "Rom"
msgid "Rotation"
msgstr "Putaran"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "peraturan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "peraturan"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Jalankan analisis pertama anda untuk mendapatkan kad skor, kekuatan, dan cadangan yang diutamakan."
@@ -3277,6 +3327,10 @@ msgstr "Warna Teks"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Ejen memerlukan input anda."
@@ -3708,6 +3762,10 @@ msgstr "Mengemas kini kata laluan anda..."
msgid "Updating your resume..."
msgstr "Mengemas kini resume anda..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Muat naik lampiran"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Muat naik gambar"
@@ -3959,4 +4017,3 @@ msgstr "Zum keluar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ne\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Nepali\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "एप"
msgid "Application Statistics"
msgstr "अनुप्रयोग तथ्याङ्क"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "लागू नियमहरू"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "अरबी"
@@ -438,6 +442,10 @@ msgstr "यो बायोडाटा बारे केहि सोध्
msgid "Aspect Ratio"
msgstr "आकार अनुपात (Aspect Ratio)"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "फाइलहरू संलग्न गर्नुहोस्"
@@ -649,6 +657,7 @@ msgstr "चिनियाँ (परम्परागत)"
msgid "Choose a model and resume draft."
msgstr "एउटा मोडेल छान्नुहोस् र मस्यौदा पुनः सुरु गर्नुहोस्।"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "साइडबारबाट अवस्थित कुराका
msgid "Circle"
msgstr "वृत्त"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "स्पष्ट"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "चयन खाली गर्नुहोस्"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "आयात गर्न फाइल छान्न यहाँ क्लिक गर्नुहोस्"
@@ -953,6 +967,10 @@ msgstr "अनुकूलित OAuth"
msgid "Custom Sections"
msgstr "अनुकूल (Custom) खण्डहरू"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "अनुकूलन शैलीहरू"
#: src/libs/locale.ts
msgid "Czech"
msgstr "चेक"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "ल्यুকाउनुहोस्"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "बायोडाटाबाट सबै आइकनहरू लुकाउनुहोस्"
msgid "Hide Icons"
msgstr "आइकनहरू लुकाउनुहोस्"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "लिङ्क अन्डरलाइन लुकाउनुहोस्"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "बायोडाटाबाट सबै आइकनहरू लु
msgid "Hide password"
msgstr "पासवर्ड लुकाउनुहोस्"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "खण्ड आइकनहरू लुकाउनुहोस्"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हाइलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "हाइलाइट रङ"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिन्दी"
@@ -2247,6 +2277,10 @@ msgstr "अहिलेसम्म कुनै पासकी दर्ता
msgid "No results found."
msgstr "कुनै परिणाम फेला परेन।"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "अहिलेसम्म कुनै शैली नियमहरू छैनन्।"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "परीक्षण गरिएको कुनै प्रदायक छैन"
@@ -2623,6 +2657,10 @@ msgstr "प्रतिक्रियाशील रिजुमे नि:श
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 खुला-स्रोत, गोपनीयता-केन्द्रित र पूर्ण रूपमा निःशुल्क छ। अन्य बायोडाटा निर्माण गर्ने साधनहरूको विपरीत, यसले विज्ञापन देखाउँदैन, तपाईंको डाटा ट्र्याक गर्दैन, वा सुविधालाई भुक्तानी पछाडि थुन्न्दैन।"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "रिसेट गर्नुहोस्"
msgid "Reset Password"
msgstr "पासवर्ड रिसेट गर्नुहोस्"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "शैली रिसेट गर्नुहोस्"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "तपाईंको पासवर्ड रिसेट गर्नुहोस्"
@@ -2790,6 +2832,14 @@ msgstr "रुमानियन"
msgid "Rotation"
msgstr "घुमाउने कोण (Rotation)"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "नियम"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "नियमहरू"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "स्कोरकार्ड, शक्तिहरू, र प्राथमिकता दिइएका सुझावहरू प्राप्त गर्न आफ्नो पहिलो विश्लेषण चलाउनुहोस्।"
@@ -3277,6 +3327,10 @@ msgstr "पाठ रङ"
msgid "Thai"
msgstr "थाइ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "एजेन्टलाई तपाईंको सुझाव चाहिन्छ।"
@@ -3708,6 +3762,10 @@ msgstr "तपाईंको पासवर्ड अद्यावधिक
msgid "Updating your resume..."
msgstr "तपाईंको बायोडाटा अद्यावधिक हुँदैछ..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "संलग्नकहरू अपलोड गर्नुहोस्"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "तस्बिर अपलोड गर्नुहोस्"
@@ -3959,4 +4017,3 @@ msgstr "जूम आउट"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "जुलु"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Applicatiestatistieken"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Toegepaste regels"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabisch"
@@ -438,6 +442,10 @@ msgstr "Stel gerust al je vragen over dit cv."
msgid "Aspect Ratio"
msgstr "Beeldverhouding"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Voeg bestanden toe"
@@ -649,6 +657,7 @@ msgstr "Chinees (traditioneel)"
msgid "Choose a model and resume draft."
msgstr "Kies een model en stel een concept-cv op."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Kies een bestaand gesprek uit de zijbalk of start een nieuw discussieond
msgid "Circle"
msgstr "Cirkel"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Duidelijk"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Selectie wissen"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klik hier om een bestand te selecteren om te importeren"
@@ -953,6 +967,10 @@ msgstr "Aangepaste OAuth"
msgid "Custom Sections"
msgstr "Aangepaste secties"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Aangepaste stijlen"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tsjechisch"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Verbergen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Alle pictogrammen op het cv verbergen"
msgid "Hide Icons"
msgstr "Pictogrammen verbergen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Link onderstrepen verbergen"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Alle pictogrammen op het cv verbergen"
msgid "Hide password"
msgstr "Wachtwoord verbergen"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Sectiepictogrammen verbergen"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Hoog"
msgid "Highlight"
msgstr "Markeren"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Markeer de kleur"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Er zijn nog geen paskeys geregistreerd."
msgid "No results found."
msgstr "Geen resultaten gevonden."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Er zijn nog geen stijlregels."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Geen geteste provider"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume is gratis en open source. Als het je geholpen heeft, ove
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, privacygericht en volledig gratis. In tegenstelling tot andere cv-bouwers toont het geen advertenties, volgt het uw gegevens niet en beperkt het uw functies niet achter een betaalmuur."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Resetten"
msgid "Reset Password"
msgstr "Wachtwoord resetten"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stijl opnieuw instellen"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Reset uw wachtwoord"
@@ -2790,6 +2832,14 @@ msgstr "Roemeens"
msgid "Rotation"
msgstr "Rotatie"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regel"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regels"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Voer uw eerste analyse uit om een scorekaart, sterke punten en geprioriteerde suggesties te krijgen."
@@ -3277,6 +3327,10 @@ msgstr "Tekstkleur"
msgid "Thai"
msgstr "Thais"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "De agent heeft uw input nodig."
@@ -3708,6 +3762,10 @@ msgstr "Uw wachtwoord wordt bijgewerkt..."
msgid "Updating your resume..."
msgstr "Uw cv wordt bijgewerkt..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Bijlagen uploaden"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Afbeelding uploaden"
@@ -3959,4 +4017,3 @@ msgstr "Uitzoomen"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: no\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Applikasjonsstatistikk"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Anvendte regler"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabisk"
@@ -438,6 +442,10 @@ msgstr "Spør om hva som helst om denne CV-en"
msgid "Aspect Ratio"
msgstr "Størrelsesforhold"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Legg ved filer"
@@ -649,6 +657,7 @@ msgstr "Kinesisk (tradisjonell)"
msgid "Choose a model and resume draft."
msgstr "Velg en modell og et utkast til CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Velg en eksisterende samtale fra sidefeltet, eller start en ny utkastfok
msgid "Circle"
msgstr "Sirkel"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Tøm"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Fjern valg"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klikk her for å velge en fil å importere"
@@ -953,6 +967,10 @@ msgstr "Egendefinert OAuth"
msgid "Custom Sections"
msgstr "Tilpassede seksjoner"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Tilpassede stiler"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tsjekkisk"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Skjul"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Skjul alle ikoner på CV-en"
msgid "Hide Icons"
msgstr "Skjul ikoner"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Skjul lenkeunderstrek"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Skjul alle ikoner på CV-en"
msgid "Hide password"
msgstr "Skjul passord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Skjul seksjonsikoner"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Høy"
msgid "Highlight"
msgstr "Fremhev"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Uthevingsfarge"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Ingen passnøkler registrert ennå."
msgid "No results found."
msgstr "Ingen resultater funnet."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ingen stilregler ennå."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Ingen testet leverandør"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume er gratis og har åpen kildekode. Hvis det har hjulpet d
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 åpen kildekode, personvernfokusert og helt gratis. I motsetning til andre CV-byggere viser den ikke annonser, sporer ikke dataene dine og begrenser ikke funksjoner bak en betalingsmur."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Tilbakestill"
msgid "Reset Password"
msgstr "Tilbakestill passord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Tilbakestill stil"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Tilbakestill passordet ditt"
@@ -2790,6 +2832,14 @@ msgstr "Rumensk"
msgid "Rotation"
msgstr "Rotasjon"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regel"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regler"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Kjør din første analyse for å få et poengkort, styrker og prioriterte forslag."
@@ -3277,6 +3327,10 @@ msgstr "Tekstfarge"
msgid "Thai"
msgstr "Thai"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agenten trenger din innspill."
@@ -3708,6 +3762,10 @@ msgstr "Oppdaterer passordet ditt..."
msgid "Updating your resume..."
msgstr "Oppdaterer CV-en din..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Last opp vedlegg"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Last opp bilde"
@@ -3959,4 +4017,3 @@ msgstr "Zoom ut"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: or\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Odia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "ଆପ୍"
msgid "Application Statistics"
msgstr "ଆପ୍ଲିକେସନ୍ ସଂଖ୍ୟାତ୍ମକ ତଥ୍ୟ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "ଲାଗୁ ହୋଇଥିବା ନିୟମଗୁଡ଼ିକ"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "ଆରବୀ"
@@ -438,6 +442,10 @@ msgstr "ଏହି ରିଜ୍ୟୁମ୍ ବିଷୟରେ କିଛି ବ
msgid "Aspect Ratio"
msgstr "ଆସ୍ପେକ୍ଟ ଅନୁପାତ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ଫାଇଲ୍ ସଂଲଗ୍ନ କରନ୍ତୁ"
@@ -649,6 +657,7 @@ msgstr "ଚାଇନିଜ୍ (ପାରମ୍ପରିକ)"
msgid "Choose a model and resume draft."
msgstr "ଏକ ମଡେଲ୍ ବାଛନ୍ତୁ ଏବଂ ଡ୍ରାଫ୍ଟ ପୁଣି ଆରମ୍ଭ କରନ୍ତୁ।"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "ସାଇଡବାରରୁ ଏକ ପୂର୍ବରୁ ଥିବା
msgid "Circle"
msgstr "ବୃତ୍ତ"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "ସଫା କରନ୍ତୁ"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "ଚୟନ ଖାଲି କରନ୍ତୁ"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ଆୟାତ କରିବା ପାଇଁ ଫାଇଲ୍ ଚୟନ କରିବାକୁ ଏଠାରେ କ୍ଲିକ୍ କରନ୍ତୁ"
@@ -953,6 +967,10 @@ msgstr "କଷ୍ଟମ୍ OAuth"
msgid "Custom Sections"
msgstr "କଷ୍ଟମ୍ ବିଭାଗଗୁଡିକ"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "କଷ୍ଟମ୍ ଷ୍ଟାଇଲ୍ସ"
#: src/libs/locale.ts
msgid "Czech"
msgstr "ଚେକ୍"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "ଲୁଚାନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ରେଜ୍ୟୁମେର ସମସ୍ତ ଆଇକନ୍ ଲୁଚାନ୍ତୁ"
msgid "Hide Icons"
msgstr "ଚିତ୍ରସଂକେତଗୁଡିକୁ ଲୁଚାନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "ଲିଙ୍କ ଅଣ୍ଡରଲାଇନ୍ ଲୁଚାନ୍ତୁ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "ରେଜ୍ୟୁମେର ସମସ୍ତ ଆଇକନ୍ ଲୁଚା
msgid "Hide password"
msgstr "ପାସୱାର୍ଡ ଲୁଚାନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "ବିଭାଗ ଆଇକନଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "ଉଚ୍ଚ"
msgid "Highlight"
msgstr "ହାଇଲାଇଟ୍"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "ହାଇଲାଇଟ୍ ରଙ୍ଗ"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ହିନ୍ଦୀ"
@@ -2247,6 +2277,10 @@ msgstr "ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ପାସକି ପଞ୍
msgid "No results found."
msgstr "କୌଣସି ଫଳାଫଳ ମିଳିଲା ନାହିଁ।"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ଷ୍ଟାଇଲ୍ ନିୟମ ନାହିଁ।"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "କୌଣସି ପରୀକ୍ଷିତ ପ୍ରଦାନକାରୀ ନାହାଁନ୍ତି"
@@ -2623,6 +2657,10 @@ msgstr "ପ୍ରତିକ୍ରିୟାଶୀଳ ରିଜ୍ୟୁମ୍ ମ
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 ଖୋଲା‑ମୂଳ, ଗୋପନୀୟତା‑କେନ୍ଦ୍ରିତ ଏବଂ ସଂପୂର୍ଣ୍ଣ ଭାବରେ ନିଶୁଳ୍କ। ଅନ୍ୟ ରେଜ୍ୟୁମେ ବିଲ୍ଡରଗୁଡିକ ଭଳି ଏହା ବିଜ୍ଞାପନ ଦେଖାଏ ନାହିଁ, ଆପଣଙ୍କ ତଥ୍ୟକୁ ଟ୍ରାକ୍ କରେ ନାହିଁ, କିମ୍ବା ପେୱାଲ୍ ପଛରେ ବିଶେଷତାଗୁଡିକୁ ଆଟକାଇ ରଖେ ନାହିଁ।"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "ରିସେଟ୍ କରନ୍ତୁ"
msgid "Reset Password"
msgstr "ପାସୱାର୍ଡ ରିସେଟ୍ କରନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "ଷ୍ଟାଇଲ୍ ରିସେଟ୍ କରନ୍ତୁ"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "ଆପଣଙ୍କ ପାସୱାର୍ଡ ରିସେଟ୍ କରନ୍ତୁ"
@@ -2790,6 +2832,14 @@ msgstr "ରୋମାନିଆନ୍"
msgid "Rotation"
msgstr "ଘୁର୍ଣ୍ଣନ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "ନିୟମ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "ନିୟମ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "ସ୍କୋରକାର୍ଡ, ଶକ୍ତି ଏବଂ ପ୍ରାଥମିକତାଭିତ୍ତିକ ପରାମର୍ଶ ପାଇବା ପାଇଁ ଆପଣଙ୍କ ପ୍ରଥମ ବିଶ୍ଳେଷଣ ଚଲାନ୍ତୁ।"
@@ -3277,6 +3327,10 @@ msgstr "ପାଠ୍ୟ ରଙ୍ଗ"
msgid "Thai"
msgstr "ଥାଇ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ଏଜେଣ୍ଟଙ୍କୁ ଆପଣଙ୍କ ମତାମତ ଆବଶ୍ୟକ।"
@@ -3708,6 +3762,10 @@ msgstr "ଆପଣଙ୍କ ପାସୱାର୍ଡ ଅଦ୍ୟତନ ହେଉ
msgid "Updating your resume..."
msgstr "ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ଅଦ୍ୟତନ ହେଉଛି..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "ଆଟାଚମେଣ୍ଟ୍ ଅପଲୋଡ୍ କରନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "ଛବି ଅପଲୋଡ୍ କରନ୍ତୁ"
@@ -3959,4 +4017,3 @@ msgstr "ଜୁମ୍ ଆଉଟ୍ କରନ୍ତୁ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ଜୁଲୁ"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -373,6 +373,10 @@ msgstr "Aplikacja"
msgid "Application Statistics"
msgstr "Statystyki aplikacji"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Zastosowane zasady"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabski"
@@ -438,6 +442,10 @@ msgstr "Zapytaj o wszystko na temat tego CV"
msgid "Aspect Ratio"
msgstr "Proporcje obrazu"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Dołącz pliki"
@@ -649,6 +657,7 @@ msgstr "Chiński (tradycyjny)"
msgid "Choose a model and resume draft."
msgstr "Wybierz model i szkic CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Wybierz istniejącą konwersację z paska bocznego lub rozpocznij nowy w
msgid "Circle"
msgstr "Koło"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Wyczyść"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Wyczyść wybór"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Kliknij tutaj, aby wybrać plik do importu"
@@ -953,6 +967,10 @@ msgstr "Niestandardowy OAuth"
msgid "Custom Sections"
msgstr "Sekcje niestandardowe"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Style niestandardowe"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Czeski"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ukryj"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ukryj wszystkie ikony w CV"
msgid "Hide Icons"
msgstr "Ukryj ikony"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ukryj podkreślenie linku"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ukryj wszystkie ikony w CV"
msgid "Hide password"
msgstr "Proszę ukryć hasło"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Ukryj ikony sekcji"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Wysoki"
msgid "Highlight"
msgstr "Zakreślenie"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Podświetl kolor"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Nie zarejestrowano jeszcze żadnych kluczy dostępu."
msgid "No results found."
msgstr "Brak wyników."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Nie ma jeszcze reguł dotyczących stylu."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Brak sprawdzonego dostawcy"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume jest darmowy i ma otwarte oprogramowanie. Jeśli Ci pomo
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 jest open-source, skupione na prywatności i całkowicie darmowe. W przeciwieństwie do innych kreatorów CV nie wyświetla reklam, nie śledzi Twoich danych ani nie ukrywa funkcji za paywallem."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Zresetuj"
msgid "Reset Password"
msgstr "Zresetuj hasło"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Resetuj styl"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Zresetuj swoje hasło"
@@ -2790,6 +2832,14 @@ msgstr "Rumuński"
msgid "Rotation"
msgstr "Obrót"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "reguła"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "zasady"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Proszę przeprowadzić pierwszą analizę, aby uzyskać kartę wyników, mocne strony i sugestie dotyczące priorytetów."
@@ -3277,6 +3327,10 @@ msgstr "Kolor tekstu"
msgid "Thai"
msgstr "Tajski"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agent potrzebuje Twojej opinii."
@@ -3708,6 +3762,10 @@ msgstr "Aktualizowanie hasła..."
msgid "Updating your resume..."
msgstr "Aktualizowanie CV..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Prześlij załączniki"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Proszę przesłać zdjęcie"
@@ -3959,4 +4017,3 @@ msgstr "Pomniejsz"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Aplicativo"
msgid "Application Statistics"
msgstr "Estatísticas do aplicativo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Regras Aplicadas"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Árabe"
@@ -438,6 +442,10 @@ msgstr "Pergunte qualquer coisa sobre este currículo."
msgid "Aspect Ratio"
msgstr "Proporção da imagem"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Anexar arquivos"
@@ -649,6 +657,7 @@ msgstr "Chinês (Tradicional)"
msgid "Choose a model and resume draft."
msgstr "Escolha um modelo e um rascunho de currículo."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Escolha uma conversa existente na barra lateral ou inicie uma nova discu
msgid "Circle"
msgstr "Círculo"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Limpo"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Limpar seleção"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Clique aqui para selecionar um arquivo para importar"
@@ -953,6 +967,10 @@ msgstr "OAuth personalizado"
msgid "Custom Sections"
msgstr "Seções personalizadas"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Estilos personalizados"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tcheco"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ocultar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ocultar todos os ícones no currículo"
msgid "Hide Icons"
msgstr "Ocultar ícones"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ocultar link sublinhado"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ocultar todos os ícones no currículo"
msgid "Hide password"
msgstr "Ocultar senha"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Ocultar ícones de seção"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Alta"
msgid "Highlight"
msgstr "Realce"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Cor de destaque"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Ainda não há chaves de acesso registradas."
msgid "No results found."
msgstr "Nenhum resultado encontrado."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ainda não há regras de estilo."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nenhum fornecedor testado"
@@ -2623,6 +2657,10 @@ msgstr "O Reactive Resume é gratuito e de código aberto. Se ele lhe foi útil,
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 "O Reactive Resume é de código aberto, focado em privacidade e completamente gratuito. Ao contrário de outros criadores de currículos, ele não exibe anúncios, não rastreia seus dados e não limita recursos atrás de um paywall."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Redefinir"
msgid "Reset Password"
msgstr "Redefinir senha"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Redefinir estilo"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Redefinir a sua senha"
@@ -2790,6 +2832,14 @@ msgstr "Romeno"
msgid "Rotation"
msgstr "Rotação"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regra"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regras"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Faça sua primeira análise para obter um quadro de resultados, pontos fortes e sugestões priorizadas."
@@ -3277,6 +3327,10 @@ msgstr "Cor do texto"
msgid "Thai"
msgstr "Tailandês"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "O agente precisa da sua opinião."
@@ -3708,6 +3762,10 @@ msgstr "Atualizando sua senha..."
msgid "Updating your resume..."
msgstr "Atualizando seu currículo..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Anexar arquivos"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Carregar imagem"
@@ -3959,4 +4017,3 @@ msgstr "Diminuir zoom"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Aplicação"
msgid "Application Statistics"
msgstr "Estatísticas da aplicação"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Regras Aplicadas"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Árabe"
@@ -438,6 +442,10 @@ msgstr "Pergunte qualquer coisa sobre este currículo."
msgid "Aspect Ratio"
msgstr "Proporção"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Anexar ficheiros"
@@ -649,6 +657,7 @@ msgstr "Chinês (tradicional)"
msgid "Choose a model and resume draft."
msgstr "Escolha um modelo e um esboço de currículo."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Escolha uma conversa existente na barra lateral ou inicie uma nova discu
msgid "Circle"
msgstr "Círculo"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Limpar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Limpar seleção"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Clique aqui para selecionar um ficheiro para importar"
@@ -953,6 +967,10 @@ msgstr "OAuth personalizado"
msgid "Custom Sections"
msgstr "Secções personalizadas"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Estilos personalizados"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Checo"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ocultar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ocultar todos os ícones no currículo"
msgid "Hide Icons"
msgstr "Ocultar ícones"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ocultar link sublinhado"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ocultar todos os ícones no currículo"
msgid "Hide password"
msgstr "Ocultar palavra-passe"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Ocultar ícones de secção"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Elevado"
msgid "Highlight"
msgstr "Realce"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Cor de destaque"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Ainda não há chaves de acesso registadas."
msgid "No results found."
msgstr "Nenhum resultado encontrado."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ainda não existem regras de estilo."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Nenhum fornecedor testado"
@@ -2623,6 +2657,10 @@ msgstr "O Reactive Resume é gratuito e de código aberto. Se ele lhe foi útil,
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 "O Reactive Resume é de código aberto, focado na privacidade e completamente gratuito. Ao contrário de outros criadores de currículos, não mostra anúncios, não rastreia os seus dados nem limita funcionalidades atrás de um paywall."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Repor"
msgid "Reset Password"
msgstr "Repor senha"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Redefinir estilo"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Repor a sua senha"
@@ -2790,6 +2832,14 @@ msgstr "Romeno"
msgid "Rotation"
msgstr "Rotação"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regra"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regras"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Execute a sua primeira análise para obter um quadro de pontuação, pontos fortes e sugestões prioritárias."
@@ -3277,6 +3327,10 @@ msgstr "Cor do texto"
msgid "Thai"
msgstr "Tailandês"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "O agente precisa da sua opinião."
@@ -3708,6 +3762,10 @@ msgstr "A atualizar a sua senha..."
msgid "Updating your resume..."
msgstr "A atualizar o seu currículo..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Anexar ficheiros"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Carregar imagem"
@@ -3959,4 +4017,3 @@ msgstr "Afastar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ro\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:31\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
@@ -373,6 +373,10 @@ msgstr "Aplicație"
msgid "Application Statistics"
msgstr "Statistici aplicație"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Reguli aplicate"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabă"
@@ -438,6 +442,10 @@ msgstr "Întreabă orice despre acest CV"
msgid "Aspect Ratio"
msgstr "Raport de aspect"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Atașați fișiere"
@@ -649,6 +657,7 @@ msgstr "Chineză (tradițională)"
msgid "Choose a model and resume draft."
msgstr "Alegeți un model și o schiță de CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Alege o conversație existentă din bara laterală sau începe un nou fi
msgid "Circle"
msgstr "Cerc"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clar"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Ștergeți selecția"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Faceți clic aici pentru a selecta un fișier de importat"
@@ -953,6 +967,10 @@ msgstr "OAuth personalizat"
msgid "Custom Sections"
msgstr "Secțiuni personalizate"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Stiluri personalizate"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Cehă"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ascunde"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ascunde toate iconițele de pe CV"
msgid "Hide Icons"
msgstr "Ascunde pictogramele"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ascunde sublinierea linkului"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ascunde toate iconițele de pe CV"
msgid "Hide password"
msgstr "Ascundeți parola"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Ascundeți pictogramele secțiunii"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Înaltă"
msgid "Highlight"
msgstr "Evidențiere"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Culoare evidențiere"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Nicio cheie de acces înregistrată încă."
msgid "No results found."
msgstr "Nu s-a găsit niciun rezultat."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Încă nu există reguli de stil."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Niciun furnizor testat"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume este gratuit și open source. Dacă te-a ajutat, te rug
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 este open-source, axat pe confidențialitate și complet gratuit. Spre deosebire de alți constructori de CV-uri, nu afișează reclame, nu vă urmărește datele și nu limitează funcționalitățile în spatele unui paywall."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Resetează"
msgid "Reset Password"
msgstr "Resetați parola"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Resetare stil"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Resetați-vă parola"
@@ -2790,6 +2832,14 @@ msgstr "Română"
msgid "Rotation"
msgstr "Rotire"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regulă"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "reguli"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Efectuați prima analiză pentru a obține o fișă de evaluare, puncte forte și sugestii prioritizate."
@@ -3277,6 +3327,10 @@ msgstr "Culoare text"
msgid "Thai"
msgstr "Thailandeză"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agentul are nevoie de contribuția dumneavoastră."
@@ -3708,6 +3762,10 @@ msgstr "Se actualizează parola..."
msgid "Updating your resume..."
msgstr "Se actualizează CV-ul..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Încărcați atașamente"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Încărcați imaginea"
@@ -3959,4 +4017,3 @@ msgstr "Micșorează"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -373,6 +373,10 @@ msgstr "Приложение"
msgid "Application Statistics"
msgstr "Статистика приложения"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Применяемые правила"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Арабский"
@@ -438,6 +442,10 @@ msgstr "Задайте любой вопрос по поводу этого ре
msgid "Aspect Ratio"
msgstr "Соотношение сторон"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Прикрепить файлы"
@@ -649,6 +657,7 @@ msgstr "Китайский (традиционный)"
msgid "Choose a model and resume draft."
msgstr "Выберите образец и черновик резюме."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Выберите существующую беседу на боково
msgid "Circle"
msgstr "Круг"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Clear"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Четкий выбор"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Нажмите здесь, чтобы выбрать файл для импорта"
@@ -953,6 +967,10 @@ msgstr "Пользовательский OAuth"
msgid "Custom Sections"
msgstr "Пользовательские разделы"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Пользовательские стили"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Чешский"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Скрыть"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Скрыть все иконки в резюме"
msgid "Hide Icons"
msgstr "Скрыть значки"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Скрыть подчеркивание ссылки"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Скрыть все иконки в резюме"
msgid "Hide password"
msgstr "Скрыть пароль"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Скрыть значки разделов"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Высокий"
msgid "Highlight"
msgstr "Подсветка"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Цвет выделения"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2277,10 @@ msgstr "Паски пока не зарегистрированы."
msgid "No results found."
msgstr "Результатов не найдено."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Пока нет никаких правил стиля."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Нет проверенного поставщика"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume — бесплатный проект с открыты
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 — это проект с открытым исходным кодом, ориентированный на конфиденциальность и полностью бесплатный. В отличие от других конструкторов резюме, он не показывает рекламу, не отслеживает ваши данные и не ограничивает функции платной подпиской."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Сброс"
msgid "Reset Password"
msgstr "Сбросить пароль"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Сбросить стиль"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Сбросить пароль"
@@ -2790,6 +2832,14 @@ msgstr "Румынский"
msgid "Rotation"
msgstr "Поворот"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "правило"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "правила"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Проведите свой первый анализ, чтобы получить оценочный лист, сильные стороны и приоритетные предложения."
@@ -3277,6 +3327,10 @@ msgstr "Цвет текста"
msgid "Thai"
msgstr "Тайский"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Агенту необходима ваша помощь."
@@ -3708,6 +3762,10 @@ msgstr "Обновление пароля..."
msgid "Updating your resume..."
msgstr "Обновление вашего резюме..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Загрузить вложения"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Загрузите картинку"
@@ -3959,4 +4017,3 @@ msgstr "Уменьшить"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sk\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -373,6 +373,10 @@ msgstr "Aplikácia"
msgid "Application Statistics"
msgstr "Štatistiky aplikácie"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Použité pravidlá"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabčina"
@@ -438,6 +442,10 @@ msgstr "Opýtajte sa na čokoľvek ohľadom tohto životopisu"
msgid "Aspect Ratio"
msgstr "Pomer strán"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Priložiť súbory"
@@ -649,6 +657,7 @@ msgstr "Čínština (tradičná)"
msgid "Choose a model and resume draft."
msgstr "Vyberte si model a návrh životopisu."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Vyberte existujúcu konverzáciu z bočného panela alebo začnite nové
msgid "Circle"
msgstr "Kruh"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Jasné"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Vymazať výber"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Kliknutím sem vyber súbor na import"
@@ -953,6 +967,10 @@ msgstr "Vlastný OAuth"
msgid "Custom Sections"
msgstr "Vlastné sekcie"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Vlastné štýly"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Čeština"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Skryť"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Skryť všetky ikony v životopise"
msgid "Hide Icons"
msgstr "Skryť ikony"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Skryť podčiarknutie odkazu"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Skryť všetky ikony v životopise"
msgid "Hide password"
msgstr "Skryť heslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Skryť ikony sekcií"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Vysoká"
msgid "Highlight"
msgstr "Zvýraznenie"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Farba zvýraznenia"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindčina"
@@ -2247,6 +2277,10 @@ msgstr "Zatiaľ neboli zaregistrované žiadne pasové kľúče."
msgid "No results found."
msgstr "Nenašli sa žiadne výsledky."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Zatiaľ žiadne pravidlá štýlu."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Žiadny testovaný poskytovateľ"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume je bezplatný a má otvorený zdrojový kód. Ak vám po
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, zamerané na súkromie a úplne zadarmo. Na rozdiel od iných nástrojov na tvorbu životopisov nezobrazuje reklamy, nesleduje tvoje dáta a neuzamyká funkcie za paywallom."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Resetovať"
msgid "Reset Password"
msgstr "Obnoviť heslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Obnoviť štýl"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Obnov svoje heslo"
@@ -2790,6 +2832,14 @@ msgstr "Rumunčina"
msgid "Rotation"
msgstr "Otočenie"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "pravidlo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "pravidlá"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Spustite prvú analýzu, aby ste získali hodnotiacu tabuľku, silné stránky a prioritné návrhy."
@@ -3277,6 +3327,10 @@ msgstr "Farba textu"
msgid "Thai"
msgstr "Thajčina"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agent potrebuje váš názor."
@@ -3708,6 +3762,10 @@ msgstr "Aktualizujem tvoje heslo..."
msgid "Updating your resume..."
msgstr "Aktualizujem tvoj životopis..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Nahrať prílohy"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Nahrať obrázok"
@@ -3959,4 +4017,3 @@ msgstr "Oddialiť"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sl\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -373,6 +373,10 @@ msgstr "Aplikacija"
msgid "Application Statistics"
msgstr "Statistika aplikacije"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Uporabljena pravila"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabščina"
@@ -438,6 +442,10 @@ msgstr "Vprašajte karkoli o tem življenjepisu"
msgid "Aspect Ratio"
msgstr "Razmerje stranic"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Priložite datoteke"
@@ -649,6 +657,7 @@ msgstr "Kitajščina (tradicionalna)"
msgid "Choose a model and resume draft."
msgstr "Izberite model in osnutek življenjepisa."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "V stranski vrstici izberite obstoječi pogovor ali začnite novo nit, os
msgid "Circle"
msgstr "Krog"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Jasno"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Počisti izbor"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Kliknite tukaj za izbiro datoteke za uvoz"
@@ -953,6 +967,10 @@ msgstr "OAuth po meri"
msgid "Custom Sections"
msgstr "Poljubni razdelki"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Slogi po meri"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Češčina"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Skrij"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Skrij vse ikone na življenjepisu"
msgid "Hide Icons"
msgstr "Skrij ikone"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Skrij podčrtano povezavo"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Skrij vse ikone na življenjepisu"
msgid "Hide password"
msgstr "Skrijte geslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Skrij ikone razdelkov"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Visoka"
msgid "Highlight"
msgstr "Označi"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Barva označevanja"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindujščina"
@@ -2247,6 +2277,10 @@ msgstr "Registriranih še ni nobenih ključev pasov."
msgid "No results found."
msgstr "Ni rezultatov."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Še ni slogovnih pravil."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Ni preizkušenega ponudnika"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume je brezplačen in odprtokoden. Če vam je pomagal, prosi
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 odprtokoden, osredotočen na zasebnost in popolnoma brezplačen. Za razliko od drugih graditeljev življenjepisov ne prikazuje oglasov, ne sledi vašim podatkom in ne omejuje funkcij z zidovi plačila."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Ponastavi"
msgid "Reset Password"
msgstr "Ponastavi geslo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Ponastavi slog"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Ponastavite svoje geslo"
@@ -2790,6 +2832,14 @@ msgstr "romunščina"
msgid "Rotation"
msgstr "Rotacija"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "pravilo"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "pravila"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Izvedite prvo analizo in pridobite preglednico, prednosti in prednostne predloge."
@@ -3277,6 +3327,10 @@ msgstr "Barva besedila"
msgid "Thai"
msgstr "tajščina"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agent potrebuje vaše mnenje."
@@ -3708,6 +3762,10 @@ msgstr "Posodabljanje vašega gesla..."
msgid "Updating your resume..."
msgstr "Posodabljanje vašega življenjepisa..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Naloži priloge"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Naloži sliko"
@@ -3959,4 +4017,3 @@ msgstr "Oddalji"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zuluščina"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sq\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Albanian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Aplikacioni"
msgid "Application Statistics"
msgstr "Statistikat e aplikacionit"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Rregullat e zbatuara"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabisht"
@@ -438,6 +442,10 @@ msgstr "Pyetni për çdo gjë në lidhje me këtë CV"
msgid "Aspect Ratio"
msgstr "Proporcioni"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Bashkëngjit skedarë"
@@ -649,6 +657,7 @@ msgstr "Kinezçe (Tradicionale)"
msgid "Choose a model and resume draft."
msgstr "Zgjidhni një model dhe rifilloni draftin."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Zgjidh një bisedë ekzistuese nga shiriti anësor ose fillo një temë
msgid "Circle"
msgstr "Rreth"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "E qartë"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Fshij përzgjedhjen"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klikoni këtu për të zgjedhur një skedar për importim"
@@ -953,6 +967,10 @@ msgstr "OAuth i personalizuar"
msgid "Custom Sections"
msgstr "Rubrika të personalizuara"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Stilet e Personalizuara"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Çekisht"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Fshih"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Fshih të gjitha ikonat në CV"
msgid "Hide Icons"
msgstr "Fshih ikonat"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Fshih nënvizimin e lidhjes"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Fshih të gjitha ikonat në CV"
msgid "Hide password"
msgstr "Fshi fjalëkalimin"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Fshih ikonat e seksionit"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "I lartë"
msgid "Highlight"
msgstr "Thekso"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Ngjyra e theksimit"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Indisht (Hindi)"
@@ -2247,6 +2277,10 @@ msgstr "Ende nuk janë regjistruar asnjë fjalëkalim."
msgid "No results found."
msgstr "Nuk u gjetën rezultate."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Ende nuk ka rregulla stili."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Asnjë ofrues i testuar"
@@ -2623,6 +2657,10 @@ msgstr "Reactive CV është falas dhe me kod të hapur. Nëse ju ka ndihmuar, ju
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 është me burim të hapur, i përqendruar te privatësia dhe krejtësisht falas. Ndryshe nga ndërtuesit e tjerë të CV-ve, nuk shfaq reklama, nuk gjurmon të dhënat tuaja dhe nuk i kufizon veçoritë pas një muri pagese."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Rivendos"
msgid "Reset Password"
msgstr "Rivendos fjalëkalimin"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Rivendos stilin"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Rivendosni fjalëkalimin tuaj"
@@ -2790,6 +2832,14 @@ msgstr "Rumanisht"
msgid "Rotation"
msgstr "Rrotullimi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "sundoj"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "rregulla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Ekzekutoni analizën tuaj të parë për të marrë një kartë rezultatesh, pikat e forta dhe sugjerime të prioritizuara."
@@ -3277,6 +3327,10 @@ msgstr "Ngjyra e tekstit"
msgid "Thai"
msgstr "Tajlandisht"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agjenti ka nevojë për kontributin tuaj."
@@ -3708,6 +3762,10 @@ msgstr "Po përditësohet fjalëkalimi juaj..."
msgid "Updating your resume..."
msgstr "Po përditësohet CV-ja juaj..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Ngarko bashkëngjitjet"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Ngarko foton"
@@ -3959,4 +4017,3 @@ msgstr "Zvogëlo"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sr\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Serbian (Cyrillic)\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -373,6 +373,10 @@ msgstr "Апликација"
msgid "Application Statistics"
msgstr "Статистика апликације"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Примењена правила"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Арапски"
@@ -438,6 +442,10 @@ msgstr "Питајте било шта о овом животопису"
msgid "Aspect Ratio"
msgstr "Однос стране"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Приложи датотеке"
@@ -649,6 +657,7 @@ msgstr "Кинески (традиционални)"
msgid "Choose a model and resume draft."
msgstr "Изаберите модел и нацртајте животопис."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Изаберите постојећи разговор са бочне
msgid "Circle"
msgstr "Круг"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Јасно"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Обриши избор"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Кликните овде да изаберете датотеку за увоз"
@@ -953,6 +967,10 @@ msgstr "Прилагођени OAuth"
msgid "Custom Sections"
msgstr "Прилагођени одељци"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Прилагођени стилови"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Чешки"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Сакриј"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Сакриј све иконице на резимеу"
msgid "Hide Icons"
msgstr "Сакриј иконе"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Сакриј подвучену везу"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Сакриј све иконице на резимеу"
msgid "Hide password"
msgstr "Сакриј лозинку"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Сакриј иконе одељака"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Високо"
msgid "Highlight"
msgstr "Истакни"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Боја истицања"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2277,10 @@ msgstr "Још нису регистровани никакви кључеви
msgid "No results found."
msgstr "Нема резултата."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Још нема стилских правила."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Нема тестираног добављача"
@@ -2623,6 +2657,10 @@ msgstr "Реактивни резиме је бесплатан и отворе
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 "Реактивни Резиме је отвореног кода, усмерен на приватност и потпуно бесплатан. За разлику од других алата за креирање резимеа, не приказује огласе, не прати ваше податке и не ограничава функције иза платног зида."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Ресетуј"
msgid "Reset Password"
msgstr "Ресетуј лозинку"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Ресетуј стил"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Ресетујте своју лозинку"
@@ -2790,6 +2832,14 @@ msgstr "Румунски"
msgid "Rotation"
msgstr "Ротација"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "правило"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "правила"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Покрените прву анализу да бисте добили контролну таблу, снаге и приоритезоване предлоге."
@@ -3277,6 +3327,10 @@ msgstr "Боја текста"
msgid "Thai"
msgstr "Тајландски"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Агенту је потребан ваш допринос."
@@ -3708,6 +3762,10 @@ msgstr "Ажурирање ваше лозинке..."
msgid "Updating your resume..."
msgstr "Ажурирање вашег резимеа..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Отпреми прилоге"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Отпреми фотографију"
@@ -3959,4 +4017,3 @@ msgstr "Умањи"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sv\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "App"
msgid "Application Statistics"
msgstr "Applikationsstatistik"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Tillämpade regler"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arabiska"
@@ -438,6 +442,10 @@ msgstr "Fråga vad som helst om detta CV"
msgid "Aspect Ratio"
msgstr "Bildförhållande"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Bifoga filer"
@@ -649,6 +657,7 @@ msgstr "Kinesiska (traditionell)"
msgid "Choose a model and resume draft."
msgstr "Välj en modell och ett utkast till CV."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Välj en befintlig konversation från sidofältet eller starta en ny utk
msgid "Circle"
msgstr "Cirkel"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Klart"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Rensa valet"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Klicka här för att välja en fil att importera"
@@ -953,6 +967,10 @@ msgstr "Anpassad OAuth"
msgid "Custom Sections"
msgstr "Anpassade avsnitt"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Anpassade stilar"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tjeckiska"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Dölj"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Dölj alla ikoner på CV:t"
msgid "Hide Icons"
msgstr "Dölj ikoner"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Dölj länkunderstrykning"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Dölj alla ikoner på CV:t"
msgid "Hide password"
msgstr "Dölj lösenord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Dölj sektionsikoner"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Hög"
msgid "Highlight"
msgstr "Markera"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Markeringsfärg"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Inga nycklar registrerade ännu."
msgid "No results found."
msgstr "Inga resultat hittades."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Inga stilregler än."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Ingen testad leverantör"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume är gratis och har öppen källkod. Om det har hjälpt d
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 har en öppen källkod, är integritetsfokuserat och helt gratis. Till skillnad från andra CV-byggare visas inga annonser, spårar dig inte och gömmer inte funktioner bakom en betalvägg."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Återställ"
msgid "Reset Password"
msgstr "Återställ lösenord"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Återställ stil"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Återställ ditt lösenord"
@@ -2790,6 +2832,14 @@ msgstr "Rumänska"
msgid "Rotation"
msgstr "Rotation"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "regel"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "regler"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Kör din första analys för att få ett scorecard, styrkor och prioriterade förslag."
@@ -3277,6 +3327,10 @@ msgstr "Textfärg"
msgid "Thai"
msgstr "Thailändska"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agenten behöver din input."
@@ -3708,6 +3762,10 @@ msgstr "Uppdaterar ditt lösenord..."
msgid "Updating your resume..."
msgstr "Uppdaterar ditt CV..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Ladda upp bilagor"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Ladda upp bild"
@@ -3959,4 +4017,3 @@ msgstr "Zooma ut"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ta\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Tamil\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "செயலி"
msgid "Application Statistics"
msgstr "செயலி புள்ளிவிபரங்கள்"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "பயன்படுத்தப்பட்ட விதிகள்"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "அரபிக்"
@@ -438,6 +442,10 @@ msgstr "இந்த சுயவிவரம் பற்றி எதையு
msgid "Aspect Ratio"
msgstr "ஒப்புத்திணைவு விகிதம்"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "கோப்புகளை இணைக்கவும்"
@@ -649,6 +657,7 @@ msgstr "சீனம் (சம்பிரதாய)"
msgid "Choose a model and resume draft."
msgstr "ஒரு மாதிரியையும் சுயவிவர வரைவையும் தேர்வு செய்யவும்."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "பக்கப் பட்டியில் இருந்து ஏ
msgid "Circle"
msgstr "வட்டம்"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "தெளிவான"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "தெளிவான தேர்வு"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "இறக்குமதி செய்ய ஒரு கோப்பை தேர்ந்தெடுக்க இங்கே கிளிக் செய்யவும்"
@@ -953,6 +967,10 @@ msgstr "தனிப்பயன் OAuth"
msgid "Custom Sections"
msgstr "தனிப்பயன் பகுதிகள்"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "தனிப்பயன் பாணிகள்"
#: src/libs/locale.ts
msgid "Czech"
msgstr "செக்"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "மறை"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ரெஸ்யூமியில் உள்ள அனைத்து ஐகான்களையும் மறைக்கவும்"
msgid "Hide Icons"
msgstr "சின்னங்களை மறைக்கவும்"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "இணைப்பு அடிக்கோட்டை மறைக்கவும்"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "ரெஸ்யூமியில் உள்ள அனைத்து
msgid "Hide password"
msgstr "கடவுச்சொல்லை மறை"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "பிரிவு சின்னங்களை மறைக்கவும்"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "உயர்"
msgid "Highlight"
msgstr "ஹைலைட்"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "ஹைலைட் நிறம்"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ஹிந்தி"
@@ -2247,6 +2277,10 @@ msgstr "இன்னும் கடவுச்சொற்கள் எது
msgid "No results found."
msgstr "எந்த முடிவுகளும் கிடைக்கவில்லை."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "இன்னும் பாணி விதிகள் எதுவும் இல்லை."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "சோதிக்கப்பட்ட வழங்குநர் இல்லை"
@@ -2623,6 +2657,10 @@ msgstr "ரியாக்டிவ் ரெஸ்யூம் இலவசம
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 திறந்த மூலமாகவும், தனியுரிமை மீது கவனம் செலுத்தியதாகவும், முற்றிலும் இலவசமாகவும் உள்ளது. மற்ற ரெஸ்யூம் பில்டர்களைப் போல் இது விளம்பரங்களை காட்டாது, உங்கள் தரவை கண்காணிக்காது, அல்லது அம்சங்களை கட்டண சுவருக்கு பின்னால் பூட்டாது."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "மீட்டமை"
msgid "Reset Password"
msgstr "கடவுச்சொல்லை மீட்டமைக்கவும்"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "பாணியை மீட்டமைக்கவும்"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "உங்கள் கடவுச்சொல்லை மீட்டமைக்கவும்"
@@ -2790,6 +2832,14 @@ msgstr "ரோமேனியன்"
msgid "Rotation"
msgstr "சுழற்சி"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "விதி"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "விதிகள்"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "மதிப்பெண் அட்டை, பலங்கள் மற்றும் முன்னுரிமைப்படுத்தப்பட்ட பரிந்துரைகளைப் பெற உங்கள் முதல் பகுப்பாய்வை இயக்கவும்."
@@ -3277,6 +3327,10 @@ msgstr "எழுத்து நிறம்"
msgid "Thai"
msgstr "தாய்"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "முகவருக்கு உங்கள் கருத்து தேவைப்படுகிறது."
@@ -3708,6 +3762,10 @@ msgstr "உங்கள் கடவுச்சொல்லை புதுப
msgid "Updating your resume..."
msgstr "உங்கள் ரெஸ்யூமியை புதுப்பித்து கொண்டிருக்கிறது..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "இணைப்புகளைப் பதிவேற்றவும்"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "படத்தைப் பதிவேற்றவும்"
@@ -3959,4 +4017,3 @@ msgstr "சிறிதாக்கு"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ஜூலு"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: te\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Telugu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "యాప్"
msgid "Application Statistics"
msgstr "యాప్ గణాంకాలు"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "వర్తింపజేసిన నియమాలు"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "అరబిక్"
@@ -438,6 +442,10 @@ msgstr "ఈ రెజ్యూమె గురించి ఏమైనా అ
msgid "Aspect Ratio"
msgstr "కారక నిష్పత్తి"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "ఫైళ్లను జతచేయండి"
@@ -649,6 +657,7 @@ msgstr "చైనీస్ (సాంప్రదాయ)"
msgid "Choose a model and resume draft."
msgstr "ఒక నమూనా మరియు రెజ్యూమె ముసాయిదాను ఎంచుకోండి."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "సైడ్‌బార్ నుండి ఇప్పటికే ఉ
msgid "Circle"
msgstr "వృత్తం"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "తొలగించు"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "స్పష్టమైన ఎంపిక"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "ఇంపోర్ట్ చేయడానికి ఫైల్ ను ఎంచుకోవడానికి ఇక్కడ క్లిక్ చేయండి"
@@ -953,6 +967,10 @@ msgstr "కస్టమ్ OAuth"
msgid "Custom Sections"
msgstr "కస్టమ్ విభాగాలు"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "కస్టమ్ స్టైల్స్"
#: src/libs/locale.ts
msgid "Czech"
msgstr "చెక్"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "హైడ్"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "జీవన చరిత్రపై అన్ని చిహ్నాలను దాచండి"
msgid "Hide Icons"
msgstr "చిహ్నాలను దాచండి"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "లింక్ అండర్‌లైన్‌ను దాచండి"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "జీవన చరిత్రపై అన్ని చిహ్నా
msgid "Hide password"
msgstr "పాస్‌వర్డ్ దాచు"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "విభాగం చిహ్నాలను దాచండి"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "అధిక"
msgid "Highlight"
msgstr "హైలైట్"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "హైలైట్ రంగు"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "హిందీ"
@@ -2247,6 +2277,10 @@ msgstr "ఇంకా పాస్‌కీలు నమోదు కాలేద
msgid "No results found."
msgstr "ఏ ఫలితాలు లభించలేదు."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "ఇంకా శైలి నియమాలు ఏవీ లేవు."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "పరీక్షించిన ప్రొవైడర్ లేదు"
@@ -2623,6 +2657,10 @@ msgstr "రియాక్టివ్ రెజ్యూమ్ ఉచితం
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 ఓపెన్‌సోర్స్‌, గోప్యతపై దృష్టి సారించినది మరియు పూర్తిగా ఉచితం. ఇతర జీవన చరిత్ర తయారీదార్ల వలె ప్రకటనలను చూపించదు, మీ డేటాను ట్రాక్ చేయదు, లేదా ఫీచర్లను వాలుతో పరిమితం చేయదు."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "రీసెట్ చేయండి"
msgid "Reset Password"
msgstr "పాస్‌వర్డ్ రీసెట్ చేయండి"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "శైలిని రీసెట్ చేయండి"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "మీ పాస్‌వర్డ్‌ను రీసెట్ చేయండి"
@@ -2790,6 +2832,14 @@ msgstr "రోమేనియన్"
msgid "Rotation"
msgstr "రోటేషన్"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "నియమం"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "నియమాలు"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "స్కోర్‌కార్డ్, బలాలు మరియు ప్రాధాన్యతా సూచనలను పొందడానికి మీ మొదటి విశ్లేషణను అమలు చేయండి."
@@ -3277,6 +3327,10 @@ msgstr "టెక్స్ట్ కలర్"
msgid "Thai"
msgstr "థాయ్"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ఏజెంట్‌కు మీ సమాచారం అవసరం."
@@ -3708,6 +3762,10 @@ msgstr "మీ పాస్‌వర్డ్‌ను నవీకరిస్
msgid "Updating your resume..."
msgstr "మీ రిజ్యూమ్‌ను నవీకరిస్తోంది..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "జోడింపులను అప్‌లోడ్ చేయండి"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "చిత్రాన్ని అప్‌లోడ్ చేయండి"
@@ -3959,4 +4017,3 @@ msgstr "జూమ్ అవుట్ చేయండి"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "జులు"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: th\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "แอป"
msgid "Application Statistics"
msgstr "สถิติของแอปพลิเคชัน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "กฎที่ใช้"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "อารบิก"
@@ -438,6 +442,10 @@ msgstr "สอบถามอะไรก็ได้เกี่ยวกับ
msgid "Aspect Ratio"
msgstr "อัตราส่วนภาพ"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "แนบไฟล์"
@@ -649,6 +657,7 @@ msgstr "จีน (ตัวเต็ม)"
msgid "Choose a model and resume draft."
msgstr "เลือกแบบและร่างประวัติย่อ"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "เลือกบทสนทนาที่มีอยู่แล้
msgid "Circle"
msgstr "วงกลม"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "ชัดเจน"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "การเลือกที่ชัดเจน"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "คลิกที่นี่เพื่อเลือกไฟล์ที่จะนำเข้า"
@@ -953,6 +967,10 @@ msgstr "OAuth แบบกำหนดเอง"
msgid "Custom Sections"
msgstr "ส่วนที่กำหนดเอง"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "สไตล์ที่กำหนดเอง"
#: src/libs/locale.ts
msgid "Czech"
msgstr "เช็ก"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "ซ่อน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ซ่อนไอคอนทั้งหมดในเรซูเม่"
msgid "Hide Icons"
msgstr "ซ่อนไอคอน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "ซ่อนเส้นขีดใต้ลิงก์"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "ซ่อนไอคอนทั้งหมดในเรซูเม
msgid "Hide password"
msgstr "ซ่อนรหัสผ่าน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "ซ่อนไอคอนส่วนต่างๆ"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "สูง"
msgid "Highlight"
msgstr "ไฮไลต์"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "สีไฮไลท์"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ฮินดี"
@@ -2247,6 +2277,10 @@ msgstr "ยังไม่มีพาสคีย์ที่ลงทะเบ
msgid "No results found."
msgstr "ไม่พบผลลัพธ์"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "ยังไม่มีกฎเกณฑ์ด้านสไตล์ใดๆ"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "ไม่มีผู้ให้บริการที่ผ่านการทดสอบ"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume เป็นซอฟต์แวร์ฟรีแล
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 เป็นโอเพ่นซอร์ส เน้นความเป็นส่วนตัว และฟรีอย่างสมบูรณ์ แตกต่างจากเครื่องมือสร้างเรซูเม่อื่น ๆ ไม่มีโฆษณา ไม่ติดตามข้อมูลของคุณ หรือจำกัดฟีเจอร์หลังระบบจ่ายเงิน"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "รีเซ็ต"
msgid "Reset Password"
msgstr "รีเซ็ตรหัสผ่าน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "รีเซ็ตสไตล์"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "รีเซ็ตรหัสผ่านของคุณ"
@@ -2790,6 +2832,14 @@ msgstr "โรมาเนีย"
msgid "Rotation"
msgstr "การหมุน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "กฎ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "กฎ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "ดำเนินการวิเคราะห์ครั้งแรกของคุณเพื่อรับสกอร์การ์ด จุดแข็ง และข้อเสนอแนะที่จัดลำดับความสำคัญ"
@@ -3277,6 +3327,10 @@ msgstr "สีตัวอักษร"
msgid "Thai"
msgstr "ไทย"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "ตัวแทนต้องการข้อมูลจากคุณ"
@@ -3708,6 +3762,10 @@ msgstr "กำลังอัปเดตรหัสผ่านของคุ
msgid "Updating your resume..."
msgstr "กำลังอัปเดตประวัติย่อของคุณ..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "อัปโหลดไฟล์แนบ"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "อัปโหลดรูปภาพ"
@@ -3959,4 +4017,3 @@ msgstr "ซูมออก"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ซูลู"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: tr\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -373,6 +373,10 @@ msgstr "Uygulama"
msgid "Application Statistics"
msgstr "Uygulama İstatistikleri"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Uygulanan Kurallar"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arapça"
@@ -438,6 +442,10 @@ msgstr "Bu özgeçmişle ilgili her şeyi sorabilirsiniz."
msgid "Aspect Ratio"
msgstr "En/Boy Oranı"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Dosyaları ekleyin"
@@ -649,6 +657,7 @@ msgstr "Çince (Geleneksel)"
msgid "Choose a model and resume draft."
msgstr "Bir model ve özgeçmiş taslağı seçin."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Yan menüden mevcut bir konuşmayı seçin veya taslak odaklı yeni bir
msgid "Circle"
msgstr "Daire"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Temiz"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Seçimi temizle"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "İçe aktarmak için bir dosya seçmek üzere buraya tıklayın"
@@ -953,6 +967,10 @@ msgstr "Özel OAuth"
msgid "Custom Sections"
msgstr "Özel Bölümler"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Özel Stiller"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Çekçe"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Gizle"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Özgeçmişteki tüm simgeleri gizle"
msgid "Hide Icons"
msgstr "Simgeleri Gizle"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Bağlantının altını çizili kısmını gizle"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Özgeçmişteki tüm simgeleri gizle"
msgid "Hide password"
msgstr "Şifreyi gizle"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Bölüm Simgelerini Gizle"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Yüksek"
msgid "Highlight"
msgstr "Vurgula"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Vurgu Rengi"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hintçe"
@@ -2247,6 +2277,10 @@ msgstr "Henüz kayıtlı geçiş anahtarı yok."
msgid "No results found."
msgstr "Hiçbir sonuç bulunamadı."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Henüz stil kuralları yok."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Test edilmiş sağlayıcı yok."
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume ücretsiz ve açık kaynaklıdır. Eğer size yardımcı
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 Özgeçmiş açık kaynaklı, gizliliğe önem veren ve tamamen ücretsizdir. Diğer özgeçmiş oluşturuculardan farklı olarak reklam göstermez, verilerinizi takip etmez veya özelliklerinizi bir ödeme duvarının arkasına gizlemez."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Sıfırla"
msgid "Reset Password"
msgstr "Şifreyi Sıfırla"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Stili Sıfırla"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Şifrenizi sıfırlayın"
@@ -2790,6 +2832,14 @@ msgstr "Rumence"
msgid "Rotation"
msgstr "Döndürme"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "kural"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "tüzük"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Bir puan kartı, güçlü yönler ve önceliklendirilmiş öneriler elde etmek için ilk analizinizi çalıştırın."
@@ -3277,6 +3327,10 @@ msgstr "Metin Rengi"
msgid "Thai"
msgstr "Tayca"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Temsilcinin sizin görüşünüze ihtiyacı var."
@@ -3708,6 +3762,10 @@ msgstr "Şifreniz güncelleniyor..."
msgid "Updating your resume..."
msgstr "Özgeçmişiniz güncelleniyor..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Ekleri yükle"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Resim yükle"
@@ -3959,4 +4017,3 @@ msgstr "Uzaklaştır"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: uk\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -373,6 +373,10 @@ msgstr "Додаток"
msgid "Application Statistics"
msgstr "Статистика заявок"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Застосовані правила"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Арабська"
@@ -438,6 +442,10 @@ msgstr "Запитайте що завгодно щодо цього резюм
msgid "Aspect Ratio"
msgstr "Пропорції"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Додати файли"
@@ -649,6 +657,7 @@ msgstr "Китайська (традиційна)"
msgid "Choose a model and resume draft."
msgstr "Виберіть модель та чернетку резюме."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Виберіть існуючу розмову на бічній пан
msgid "Circle"
msgstr "Кругле"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Чисто"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Очистити вибір"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Натисніть тут, щоб вибрати файл для імпорту"
@@ -953,6 +967,10 @@ msgstr "Користувацький OAuth"
msgid "Custom Sections"
msgstr "Користувацькі розділи"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Власні стилі"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Чеська"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Приховати"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Сховати всі іконки на резюме"
msgid "Hide Icons"
msgstr "Приховати значки"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Приховати посилання Підкреслення"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Сховати всі іконки на резюме"
msgid "Hide password"
msgstr "Приховати пароль"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Приховати значки розділів"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Високий"
msgid "Highlight"
msgstr "Виділити"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Колір виділення"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Гінді"
@@ -2247,6 +2277,10 @@ msgstr "Поки що не зареєстровано жодного парол
msgid "No results found."
msgstr "Результатів не знайдено."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Поки що немає правил стилю."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Немає перевіреного постачальника"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume — безкоштовний ресурс з відкр
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, орієнтована на приватність і повністю безкоштовна. На відміну від інших редакторів резюме, вона не показує рекламу, не відстежує ваші дані і не обмежує функції за оплатою."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Скинути"
msgid "Reset Password"
msgstr "Скинути пароль"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Скинути стиль"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Скинути пароль"
@@ -2790,6 +2832,14 @@ msgstr "Румунська"
msgid "Rotation"
msgstr "Обертання"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "правило"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "правила"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Проведіть перший аналіз, щоб отримати оціночну таблицю, сильні сторони та пріоритетні пропозиції."
@@ -3277,6 +3327,10 @@ msgstr "Колір тексту"
msgid "Thai"
msgstr "Тайська"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Агенту потрібна ваша думка."
@@ -3708,6 +3762,10 @@ msgstr "Оновлення пароля..."
msgid "Updating your resume..."
msgstr "Оновлення резюме..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Завантажити вкладення"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Завантажити зображення"
@@ -3959,4 +4017,3 @@ msgstr "Зменшити"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: uz\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Uzbek\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -373,6 +373,10 @@ msgstr "Ilova"
msgid "Application Statistics"
msgstr "Ilova statistikasi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Amaliy qoidalar"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Arab tili"
@@ -438,6 +442,10 @@ msgstr "Ushbu rezyume haqida biron narsa so'rang"
msgid "Aspect Ratio"
msgstr "Tomonlar nisbati"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Fayllarni biriktirish"
@@ -649,6 +657,7 @@ msgstr "Xitoy (An’anaviy)"
msgid "Choose a model and resume draft."
msgstr "Modelni tanlang va qoralamani rezyume qiling."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Yon paneldan mavjud suhbatni tanlang yoki qoralamaga yo'naltirilgan yang
msgid "Circle"
msgstr "Doira"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Tiniq"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Tanlovni tozalash"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Import qilish uchun faylni tanlash uchun shu yerni bosing"
@@ -953,6 +967,10 @@ msgstr "Moslashtirilgan OAuth"
msgid "Custom Sections"
msgstr "Maxsus boʻlimlar"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Maxsus uslublar"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Chex tili"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Yashirish"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Rezumedagi barcha ikonkalarni yashirish"
msgid "Hide Icons"
msgstr "Belgilarni yashirish"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Havola ostiga chizilgan chiziqni yashirish"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Rezumedagi barcha ikonkalarni yashirish"
msgid "Hide password"
msgstr "Parolni yashirish"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Bo'lim piktogrammalarini yashirish"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Yuqori"
msgid "Highlight"
msgstr "Ajratib ko‘rsatish"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Belgilash rangi"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hind tili"
@@ -2247,6 +2277,10 @@ msgstr "Hali hech qanday kirish kalitlari ro'yxatdan o'tmagan."
msgid "No results found."
msgstr "Hech qanday natija topilmadi."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Hali uslub qoidalari yo'q."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Sinovdan o'tgan provayder yo'q"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume bepul va ochiq kodli. Agar u sizga yordam bergan bo'lsa,
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 ochiq manbali, maxfiylikka yo'naltirilgan va butunlay bepul. Boshqa rezume tuzuvchilardan farqli o'laroq, u reklamalarni ko'rsatmaydi, ma'lumotlaringizni kuzatmaydi yoki funksiyalarni to'lov devori ortida cheklamaydi."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Tiklash"
msgid "Reset Password"
msgstr "Parolni tiklash"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Uslubni tiklash"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Parolingizni tiklang"
@@ -2790,6 +2832,14 @@ msgstr "Rumin tili"
msgid "Rotation"
msgstr "Aylantirish"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "qoida"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "qoidalar"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Birinchi tahlilingizni ishga tushiring va ballar jadvali, kuchli tomonlar hamda ustuvor tavsiyalarni oling."
@@ -3277,6 +3327,10 @@ msgstr "Matn rangi"
msgid "Thai"
msgstr "Tay tili"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Agent sizning fikringizni bilishi kerak."
@@ -3708,6 +3762,10 @@ msgstr "Parolingiz yangilanmoqda..."
msgid "Updating your resume..."
msgstr "Rezyume yangilanmoqda..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Qo'shimchalarni yuklash"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Rasmni yuklang"
@@ -3959,4 +4017,3 @@ msgstr "Kichraytirish"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: vi\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "Ứng dụng"
msgid "Application Statistics"
msgstr "Thống kê ứng dụng"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "Quy tắc áp dụng"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "Tiếng Ả Rập"
@@ -438,6 +442,10 @@ msgstr "Hãy hỏi bất cứ điều gì về sơ yếu lý lịch này."
msgid "Aspect Ratio"
msgstr "Tỷ lệ khung hình"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "Đính kèm tệp"
@@ -649,6 +657,7 @@ msgstr "Tiếng Trung (Phồn thể)"
msgid "Choose a model and resume draft."
msgstr "Chọn một mẫu và soạn thảo bản nháp sơ yếu lý lịch."
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "Chọn một cuộc hội thoại hiện có từ thanh bên hoặc bắ
msgid "Circle"
msgstr "Vòng tròn"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "Xóa"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "Xóa lựa chọn"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "Nhấn vào đây để chọn file cần nhập khẩu"
@@ -953,6 +967,10 @@ msgstr "OAuth tùy chỉnh"
msgid "Custom Sections"
msgstr "Các mục tùy chỉnh"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "Kiểu dáng tùy chỉnh"
#: src/libs/locale.ts
msgid "Czech"
msgstr "Tiếng Séc"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "Ẩn đi"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Ẩn tất cả biểu tượng trên hồ sơ"
msgid "Hide Icons"
msgstr "Ẩn biểu tượng"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "Ẩn gạch chân liên kết"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "Ẩn tất cả biểu tượng trên hồ sơ"
msgid "Hide password"
msgstr "Ẩn mật khẩu"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "Ẩn biểu tượng phần"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "Cao"
msgid "Highlight"
msgstr "Làm nổi bật"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Màu nổi bật"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Tiếng Hindi"
@@ -2247,6 +2277,10 @@ msgstr "Chưa có khóa truy cập nào được đăng ký."
msgid "No results found."
msgstr "Không tìm thấy kết quả."
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "Chưa có quy tắc về phong cách nào cả."
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "Không có nhà cung cấp nào được kiểm thử"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume là phần mềm mã nguồn mở miễn phí. Nếu th
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 "Resume Phản Ứng là mã nguồn mở, tập trung vào quyền riêng tư và hoàn toàn miễn phí. Khác với các trình tạo hồ sơ khác, nó không hiển thị quảng cáo, không theo dõi dữ liệu của bạn, và không giới hạn tính năng đằng sau tường phí."
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "Thiết lập lại"
msgid "Reset Password"
msgstr "Đặt mật khẩu mới"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "Đặt lại kiểu"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "Đặt lại mật khẩu"
@@ -2790,6 +2832,14 @@ msgstr "Rumani"
msgid "Rotation"
msgstr "Xoay"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "luật lệ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "quy tắc"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "Hãy thực hiện phân tích đầu tiên để nhận được bảng điểm, điểm mạnh và các đề xuất được sắp xếp theo mức độ ưu tiên."
@@ -3277,6 +3327,10 @@ msgstr "Màu chữ"
msgid "Thai"
msgstr "Thái"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "Nhân viên cần thông tin đầu vào từ bạn."
@@ -3708,6 +3762,10 @@ msgstr "Đang cập nhật mật khẩu của bạn..."
msgid "Updating your resume..."
msgstr "Đang cập nhật resume của bạn..."
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "Tải lên tệp đính kèm"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "Tải ảnh lên"
@@ -3959,4 +4017,3 @@ msgstr "Thu nhỏ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+64 -7
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-05 21:35\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "应用"
msgid "Application Statistics"
msgstr "应用统计数据"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "应用规则"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "阿拉伯语"
@@ -438,6 +442,10 @@ msgstr "关于这份简历,有什么想问的吗?"
msgid "Aspect Ratio"
msgstr "宽高比"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "附加文件"
@@ -649,6 +657,7 @@ msgstr "中文(繁体)"
msgid "Choose a model and resume draft."
msgstr "选择一款简历模板并撰写简历草稿。"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "从侧边栏选择现有对话,或发起新的以草稿为中心的讨
msgid "Circle"
msgstr "圆形"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "清晰"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "清除选择"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "点击此处选择要导入的文件"
@@ -953,6 +967,10 @@ msgstr "自定义 OAuth"
msgid "Custom Sections"
msgstr "自定义章节"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "自定义样式"
#: src/libs/locale.ts
msgid "Czech"
msgstr "捷克语"
@@ -1100,7 +1118,7 @@ msgstr "Discord 频道"
#: src/components/ui/donation-toast.tsx
msgid "Dismiss"
msgstr "解雇"
msgstr "忽略"
#: src/routes/_home/-sections/footer.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
@@ -1113,7 +1131,7 @@ msgstr "没有账户?<0/>"
#: src/components/ui/donation-toast.tsx
msgid "Donate"
msgstr "捐"
msgstr "捐赠"
#: src/routes/builder/$resumeId/-sidebar/right/sections/information.tsx
msgid "Donate to Reactive Resume"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "隐藏"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "在简历中隐藏所有图标"
msgid "Hide Icons"
msgstr "隐藏图标"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "隐藏链接下划线"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "在简历中隐藏所有图标"
msgid "Hide password"
msgstr "隐藏密码"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "隐藏版块图标"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "高"
msgid "Highlight"
msgstr "高亮"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "高亮颜色"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "印地语"
@@ -2247,6 +2277,10 @@ msgstr "尚未登记通行钥匙。"
msgid "No results found."
msgstr "没找到结果。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "目前还没有风格规则。"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "没有经过测试的提供商"
@@ -2617,12 +2651,16 @@ 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 是免费开源的。如果它对您有所帮助,请考虑捐赠。"
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 是开源、注重隐私且完全免费的。与其他简历生成器不同,它不会展示广告、跟踪你的数据,也不会把功能锁在付费墙后面。"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "重置"
msgid "Reset Password"
msgstr "重置密码"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "重置样式"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "重置密码"
@@ -2790,6 +2832,14 @@ msgstr "罗马尼亚语"
msgid "Rotation"
msgstr "旋转"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "规则"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "规则"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "进行首次分析,以获得记分卡、优势和优先建议。"
@@ -3277,6 +3327,10 @@ msgstr "文本颜色"
msgid "Thai"
msgstr "泰语"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "经纪人需要您的意见。"
@@ -3708,6 +3762,10 @@ msgstr "正在更新你的密码…"
msgid "Updating your resume..."
msgstr "正在更新你的简历…"
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "上传附件"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "上传图片"
@@ -3959,4 +4017,3 @@ msgstr "缩小"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "祖鲁语"
+61 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 13:32\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -373,6 +373,10 @@ msgstr "應用程式"
msgid "Application Statistics"
msgstr "應用程式統計資料"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr "應用規則"
#: src/libs/locale.ts
msgid "Arabic"
msgstr "阿拉伯文"
@@ -438,6 +442,10 @@ msgstr "關於這份履歷,有什麼想問的嗎?"
msgid "Aspect Ratio"
msgstr "顯示比例"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr "附加文件"
@@ -649,6 +657,7 @@ msgstr "中文(繁體)"
msgid "Choose a model and resume draft."
msgstr "選擇一款履歷表範本並撰寫履歷草稿。"
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -666,11 +675,16 @@ msgstr "從側邊欄選擇現有對話,或發起新的以草稿為中心的討
msgid "Circle"
msgstr "圓形"
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr "清除"
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr "清除選擇"
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr "按這裡選擇要匯入的檔案"
@@ -953,6 +967,10 @@ msgstr "自訂 OAuth"
msgid "Custom Sections"
msgstr "自訂段落"
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr "自訂樣式"
#: src/libs/locale.ts
msgid "Czech"
msgstr "捷克語"
@@ -1733,8 +1751,12 @@ msgid "Hide"
msgstr "隱藏"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "隱藏履歷中的所有圖示"
msgid "Hide Icons"
msgstr "隱藏圖示"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr "隱藏連結下劃線"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1776,10 @@ msgstr "隱藏履歷中的所有圖示"
msgid "Hide password"
msgstr "隱藏密碼"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr "隱藏版塊圖標"
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1763,6 +1789,10 @@ msgstr "高"
msgid "Highlight"
msgstr "螢光標記"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "高亮顏色"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "印地語"
@@ -2247,6 +2277,10 @@ msgstr "尚未註冊通行鑰匙。"
msgid "No results found."
msgstr "找不到相符的結果。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr "目前還沒有風格規則。"
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr "沒有經過測試的提供者"
@@ -2623,6 +2657,10 @@ msgstr "Reactive Resume 是免費開源的。如果它對您有所幫助,請
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 是開放原始碼、重視隱私且完全免費的工具。與其他履歷建立工具不同,它不會顯示廣告、不追蹤您的資料,也不會把功能鎖在付費牆後面。"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2714,6 +2752,10 @@ msgstr "重置"
msgid "Reset Password"
msgstr "重設密碼"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr "重設樣式"
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr "重設您的密碼"
@@ -2790,6 +2832,14 @@ msgstr "羅馬尼亞語"
msgid "Rotation"
msgstr "旋轉"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr "規則"
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr "規則"
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr "執行您的第一次分析,以獲得計分卡、優勢和優先建議。"
@@ -3277,6 +3327,10 @@ msgstr "字型色彩"
msgid "Thai"
msgstr "泰文"
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr "經紀人需要您的意見。"
@@ -3708,6 +3762,10 @@ msgstr "正在更新您的密碼…"
msgid "Updating your resume..."
msgstr "正在更新您的履歷…"
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr "上傳附件"
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr "上傳圖片"
@@ -3959,4 +4017,3 @@ msgstr "縮小"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "祖魯語"
+59 -1
View File
@@ -368,6 +368,10 @@ msgstr ""
msgid "Application Statistics"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Applied Rules"
msgstr ""
#: src/libs/locale.ts
msgid "Arabic"
msgstr ""
@@ -433,6 +437,10 @@ msgstr ""
msgid "Aspect Ratio"
msgstr ""
#: src/routes/_home/-sections/sponsors.tsx
msgid "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
msgstr "Atlas Cloud supports Reactive Resume as a project sponsor. If your company would like to sponsor the project, email <0>{sponsorshipEmail}</0>."
#: src/routes/agent/$threadId.tsx
msgid "Attach files"
msgstr ""
@@ -644,6 +652,7 @@ msgstr ""
msgid "Choose a model and resume draft."
msgstr ""
#. Preset or custom shade refer to the color picker
#. Preset or custom shade refer to the color picker
#: src/components/input/rich-input.tsx
msgid "Choose a preset or custom shade."
@@ -661,11 +670,16 @@ msgstr ""
msgid "Circle"
msgstr ""
#. Clear the highlight color
#. Clear the text color
#: src/components/input/rich-input.tsx
msgid "Clear"
msgstr ""
#: src/components/ui/combobox.tsx
msgid "Clear selection"
msgstr ""
#: src/dialogs/resume/import.tsx
msgid "Click here to select a file to import"
msgstr ""
@@ -948,6 +962,10 @@ msgstr ""
msgid "Custom Sections"
msgstr ""
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr ""
#: src/libs/locale.ts
msgid "Czech"
msgstr ""
@@ -1728,7 +1746,11 @@ msgid "Hide"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgid "Hide Icons"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Link Underline"
msgstr ""
#. Accessible label for button that hides password in registration form
@@ -1749,6 +1771,10 @@ msgstr ""
msgid "Hide password"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide Section Icons"
msgstr ""
#. Impact severity label in resume analysis suggestion card
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "High"
@@ -1758,6 +1784,10 @@ msgstr ""
msgid "Highlight"
msgstr ""
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr ""
@@ -2242,6 +2272,10 @@ msgstr ""
msgid "No results found."
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "No style rules yet."
msgstr ""
#: src/features/settings/integrations/components/ai-section.tsx
msgid "No tested provider"
msgstr ""
@@ -2618,6 +2652,10 @@ msgstr ""
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 ""
#: src/routes/_home/-sections/sponsors.tsx
msgid "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
msgstr "Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Their sponsorship helps fund hosting, maintenance, and continued development for the community."
#. App version label in footer; includes semantic version variable
#: src/components/ui/copyright.tsx
msgid "Reactive Resume v{__APP_VERSION__}"
@@ -2709,6 +2747,10 @@ msgstr ""
msgid "Reset Password"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "Reset Style"
msgstr ""
#: src/features/auth/pages/reset-password.tsx
msgid "Reset your password"
msgstr ""
@@ -2785,6 +2827,14 @@ msgstr ""
msgid "Rotation"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rule"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/custom-styles.tsx
msgid "rules"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/resume-analysis.tsx
msgid "Run your first analysis to get a scorecard, strengths, and prioritized suggestions."
msgstr ""
@@ -3272,6 +3322,10 @@ msgstr ""
msgid "Thai"
msgstr ""
#: src/routes/_home/-sections/sponsors.tsx
msgid "Thank you to our sponsors"
msgstr "Thank you to our sponsors"
#: src/routes/agent/$threadId.tsx
msgid "The agent needs your input."
msgstr ""
@@ -3703,6 +3757,10 @@ msgstr ""
msgid "Updating your resume..."
msgstr ""
#: src/routes/agent/$threadId.tsx
msgid "Upload attachments"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/left/sections/picture.tsx
msgid "Upload picture"
msgstr ""
+42 -42
View File
@@ -4,7 +4,7 @@
"type": "module",
"private": true,
"scripts": {
"build": "rm -rf dist && vite build",
"build": "rimraf dist && vite build",
"dev": "vite dev",
"serve": "vite preview",
"start": "vite preview",
@@ -16,20 +16,20 @@
"lingui:extract": "lingui extract --clean --overwrite"
},
"dependencies": {
"@ai-sdk/react": "^3.0.193",
"@ai-sdk/react": "^3.0.209",
"@base-ui/react": "^1.5.0",
"@better-auth/api-key": "^1.6.11",
"@better-auth/infra": "^0.2.8",
"@better-auth/oauth-provider": "^1.6.11",
"@better-auth/passkey": "^1.6.11",
"@better-auth/api-key": "^1.6.19",
"@better-auth/infra": "^0.2.14",
"@better-auth/oauth-provider": "^1.6.19",
"@better-auth/passkey": "^1.6.19",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@lingui/core": "^6.1.0",
"@lingui/react": "^6.1.0",
"@orpc/client": "^1.14.3",
"@orpc/server": "^1.14.3",
"@orpc/tanstack-query": "^1.14.3",
"@lingui/core": "^6.4.0",
"@lingui/react": "^6.4.0",
"@orpc/client": "^1.14.6",
"@orpc/server": "^1.14.6",
"@orpc/tanstack-query": "^1.14.6",
"@phosphor-icons/react": "^2.1.10",
"@react-pdf/renderer": "^4.5.1",
"@reactive-resume/ai": "workspace:*",
@@ -39,40 +39,39 @@
"@reactive-resume/fonts": "workspace:*",
"@reactive-resume/import": "workspace:*",
"@reactive-resume/pdf": "workspace:*",
"@reactive-resume/resume": "workspace:*",
"@reactive-resume/schema": "workspace:*",
"@reactive-resume/ui": "workspace:*",
"@reactive-resume/utils": "workspace:*",
"@tailwindcss/vite": "^4.3.0",
"@tanstack/react-form": "^1.32.0",
"@tailwindcss/vite": "^4.3.1",
"@tanstack/react-form": "^1.33.0",
"@tanstack/react-hotkeys": "^0.10.0",
"@tanstack/react-query": "^5.100.14",
"@tanstack/react-router": "^1.170.8",
"@tiptap/extension-color": "^3.23.6",
"@tiptap/extension-highlight": "^3.23.6",
"@tiptap/extension-table": "^3.23.6",
"@tiptap/extension-text-align": "^3.23.6",
"@tiptap/extension-text-style": "^3.23.6",
"@tiptap/pm": "^3.23.6",
"@tiptap/react": "^3.23.6",
"@tiptap/starter-kit": "^3.23.6",
"@tanstack/react-query": "^5.101.0",
"@tanstack/react-router": "^1.170.16",
"@tiptap/extension-color": "^3.27.0",
"@tiptap/extension-highlight": "^3.27.0",
"@tiptap/extension-table": "^3.27.0",
"@tiptap/extension-text-align": "^3.27.0",
"@tiptap/extension-text-style": "^3.27.0",
"@tiptap/pm": "^3.27.0",
"@tiptap/react": "^3.27.0",
"@tiptap/starter-kit": "^3.27.0",
"@types/js-cookie": "^3.0.6",
"@uiw/color-convert": "^2.10.3",
"@uiw/react-color-colorful": "^2.10.3",
"ai": "^6.0.191",
"better-auth": "1.6.11",
"ai": "^6.0.207",
"better-auth": "1.6.19",
"cmdk": "^1.1.1",
"drizzle-orm": "1.0.0-rc.3",
"es-toolkit": "^1.47.0",
"fuse.js": "^7.3.0",
"es-toolkit": "^1.47.1",
"fuse.js": "^7.4.2",
"immer": "^11.1.8",
"js-cookie": "^3.0.7",
"js-cookie": "^3.0.8",
"motion": "^12.40.0",
"pdfjs-dist": "5.7.284",
"pdfjs-dist": "6.0.227",
"pg": "^8.21.0",
"qrcode.react": "^4.2.0",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^4.11.2",
"react-window": "^2.2.7",
@@ -81,26 +80,27 @@
"ts-pattern": "^5.9.0",
"usehooks-ts": "^3.1.1",
"zod": "^4.4.3",
"zustand": "^5.0.13"
"zustand": "^5.0.14"
},
"devDependencies": {
"@babel/core": "^7.29.7",
"@lingui/babel-plugin-lingui-macro": "^6.1.0",
"@lingui/cli": "^6.1.0",
"@lingui/format-po": "^6.1.0",
"@lingui/vite-plugin": "^6.1.0",
"@babel/core": "^8.0.0",
"@lingui/babel-plugin-lingui-macro": "^6.4.0",
"@lingui/cli": "^6.4.0",
"@lingui/format-po": "^6.4.0",
"@lingui/vite-plugin": "^6.4.0",
"@reactive-resume/config": "workspace:*",
"@rolldown/plugin-babel": "^0.2.3",
"@tanstack/router-plugin": "^1.168.11",
"@tanstack/router-plugin": "^1.168.18",
"@types/babel__core": "^7.20.5",
"@types/pg": "^8.20.0",
"@types/react": "^19.2.15",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260526.1",
"@typescript/native-preview": "7.0.0-dev.20260617.2",
"@vitejs/plugin-react": "^6.0.2",
"babel-plugin-macros": "^3.1.0",
"babel-plugin-react-compiler": "^1.0.0",
"typescript": "^6.0.3",
"vite": "^8.0.14"
"rimraf": "^6.1.3",
"vite": "^8.0.16"
}
}
+1
View File
@@ -1,4 +1,5 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<title>Reactive Resume</title>
<path fill-rule="evenodd" clip-rule="evenodd" d="M173.611 166.311L132.877 219.804H173.524L193.973 191.813L213.183 219.804H256L215.673 165.707L215.15 165.046L207.461 155.332L195.329 140.004L195.258 139.915L193.813 138.089L193.923 138.001L176.286 112.861H134.061L173.611 166.311ZM199.89 133.554L214.959 112.861H254.619L219.874 158.8L199.89 133.554Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 36.1959V174.314H39.0678V137.614H60.3938L60.4323 137.671C60.8436 137.653 61.2517 137.634 61.6567 137.614C75.0665 136.968 85.1471 135.549 96.385 131.385C96.7596 131.246 97.1355 131.104 97.5128 130.959L97.4591 130.881C105.816 126.86 112.331 121.344 117.006 114.331C122.005 106.702 124.504 97.6915 124.504 87.2997C124.504 76.7764 122.005 67.7 117.006 60.0706C112.007 52.3097 104.904 46.3903 95.6964 42.3125C86.62 38.2347 75.7679 36.1959 63.1399 36.1959H0ZM102.156 137.725L64.8705 144.175L85.4361 174.314H127.266L102.156 137.725ZM39.0678 107.426H60.7721C68.9277 107.426 74.9786 105.65 78.9248 102.098C83.0026 98.5465 85.0415 93.6137 85.0415 87.2997C85.0415 80.8542 83.0026 75.8556 78.9248 72.304C74.9786 68.7523 68.9277 66.9765 60.7721 66.9765H39.0678V107.426Z" fill="#FAFAFA"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -1,4 +1,5 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<title>Reactive Resume</title>
<path fill-rule="evenodd" clip-rule="evenodd" d="M173.611 166.311L132.877 219.804H173.524L193.973 191.813L213.183 219.804H256L215.673 165.707L215.15 165.046L207.461 155.332L195.329 140.004L195.258 139.915L193.813 138.089L193.923 138.001L176.286 112.861H134.061L173.611 166.311ZM199.89 133.554L214.959 112.861H254.619L219.874 158.8L199.89 133.554Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 36.1959V174.314H39.0678V137.614H60.3938L60.4323 137.671C60.8436 137.653 61.2517 137.634 61.6567 137.614C75.0665 136.968 85.1471 135.549 96.385 131.385C96.7596 131.246 97.1355 131.104 97.5128 130.959L97.4591 130.881C105.816 126.86 112.331 121.344 117.006 114.331C122.005 106.702 124.504 97.6915 124.504 87.2997C124.504 76.7764 122.005 67.7 117.006 60.0706C112.007 52.3097 104.904 46.3903 95.6964 42.3125C86.62 38.2347 75.7679 36.1959 63.1399 36.1959H0ZM102.156 137.725L64.8705 144.175L85.4361 174.314H127.266L102.156 137.725ZM39.0678 107.426H60.7721C68.9277 107.426 74.9786 105.65 78.9248 102.098C83.0026 98.5465 85.0415 93.6137 85.0415 87.2997C85.0415 80.8542 83.0026 75.8556 78.9248 72.304C74.9786 68.7523 68.9277 66.9765 60.7721 66.9765H39.0678V107.426Z" fill="#FAFAFA"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -1,4 +1,5 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<title>Reactive Resume</title>
<path fill-rule="evenodd" clip-rule="evenodd" d="M173.611 166.311L132.877 219.804H173.524L193.973 191.813L213.183 219.804H256L215.673 165.707L215.15 165.046L207.461 155.332L195.329 140.004L195.258 139.915L193.813 138.089L193.923 138.001L176.286 112.861H134.061L173.611 166.311ZM199.89 133.554L214.959 112.861H254.619L219.874 158.8L199.89 133.554Z" fill="#09090B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 36.1959V174.314H39.0678V137.614H60.3938L60.4323 137.671C60.8436 137.653 61.2518 137.634 61.6569 137.614C75.0665 136.968 85.1471 135.549 96.3849 131.385C96.7596 131.246 97.1355 131.104 97.5128 130.959L97.4591 130.881C105.816 126.86 112.331 121.344 117.006 114.331C122.005 106.702 124.504 97.6915 124.504 87.2997C124.504 76.7764 122.005 67.7 117.006 60.0706C112.007 52.3097 104.904 46.3903 95.6964 42.3125C86.62 38.2347 75.7678 36.1959 63.1399 36.1959H0ZM102.156 137.725L64.8705 144.175L85.4361 174.314H127.266L102.156 137.725ZM39.0678 107.426H60.7721C68.9277 107.426 74.9786 105.65 78.9248 102.098C83.0026 98.5465 85.0415 93.6137 85.0415 87.2997C85.0415 80.8542 83.0026 75.8556 78.9248 72.304C74.9786 68.7523 68.9277 66.9765 60.7721 66.9765H39.0678V107.426Z" fill="#09090B"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

+1
View File
@@ -1,4 +1,5 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<title>Reactive Resume</title>
<rect width="512" height="512" fill="#09090B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M183.603 184.722L156.74 220H183.545L197.032 201.54L209.701 220H237.938L211.008 183.874L211.014 183.866L210.81 183.608L205.927 177.44L197.895 167.292L197.882 167.31L197.669 167.007L196.926 166.068L196.98 166.025L185.367 149.472H157.52L183.603 184.722ZM200.951 163.096L214.129 179.747L237.027 149.472H210.872L200.951 163.096Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M69.1088 98.9125V190H94.8735V165.797H108.938L108.938 165.797C108.943 165.797 108.948 165.797 108.953 165.797C118.377 165.381 125.285 164.448 133.094 161.494C133.195 161.455 133.296 161.417 133.397 161.378L133.382 161.356C138.893 158.705 143.19 155.066 146.273 150.442C149.569 145.41 151.218 139.468 151.218 132.615C151.218 125.675 149.569 119.689 146.273 114.658C142.976 109.539 138.292 105.636 132.219 102.946C126.234 100.257 119.077 98.9125 110.749 98.9125H69.1088ZM136.456 165.836L111.867 170.09L125.453 190H153.039L136.456 165.836ZM94.8735 145.888H109.187C114.566 145.888 118.556 144.716 121.159 142.374C123.848 140.032 125.193 136.779 125.193 132.615C125.193 128.364 123.848 125.068 121.159 122.725C118.556 120.383 114.566 119.212 109.187 119.212H94.8735V145.888Z" fill="#FAFAFA"/>

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

@@ -0,0 +1,55 @@
<svg role="img" aria-labelledby="atlas-cloud-logo-title" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1224 792">
<title id="atlas-cloud-logo-title">Atlas Cloud</title>
<defs>
<style>
.cls-1 {
clip-path: url(#clippath);
}
.cls-2 {
fill: none;
}
.cls-2, .cls-3 {
stroke-width: 0px;
}
.cls-4 {
clip-path: url(#clippath-1);
}
.cls-5 {
clip-path: url(#clippath-2);
}
.cls-3 {
fill: #000;
}
</style>
<clipPath id="clippath">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
<clipPath id="clippath-1">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
<clipPath id="clippath-2">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
</defs>
<g class="cls-1">
<path class="cls-3" d="M104.38,315.14L20.73,476.86c38.73-15.32,70.03-17.6,98.12-16.26l-12.85-28.4c-5.63-.57-21.86-.57-29.57,1.45l27.95-62.14s42.06,91.31,42.13,91.32c8.09,1.27,29.8,8.55,41.52,14.03l-83.66-161.72Z"/>
</g>
<polygon class="cls-3" points="207.87 323.37 207.87 361.57 189.68 361.57 189.68 381.76 207.87 381.76 207.87 471.35 234.07 471.35 234.07 381.76 252.87 381.76 252.87 361.57 234.07 361.57 234.07 323.37 207.87 323.37"/>
<rect class="cls-3" x="268.07" y="323.37" width="26.19" height="147.98"/>
<g class="cls-4">
<path class="cls-3" d="M340.48,416.95c0,13.6,9.79,33.39,33.39,33.39,14.6,0,24.2-7.6,29.2-17.59,2.6-4.8,3.8-10,4.2-15.4.2-5.2-.8-10.6-3-15.4-4.6-10.4-14.8-19.4-30.6-19.4-21.2,0-33.19,17.2-33.19,34.19v.2ZM433.26,471.35h-26.19v-15.8c-7,12.8-21.6,19.2-36.99,19.2-35.2,0-55.8-27.4-55.8-58.4,0-34.6,25-58.19,55.8-58.19,20,0,32.19,10.6,36.99,19.4v-16h26.19v109.78Z"/>
<path class="cls-3" d="M506.87,391.16c-.2-5.8-3.2-11.8-13.4-11.8-8.8,0-12.99,5.6-12.99,11,.2,7,8.2,10.79,18.6,13.8,17.6,4.8,36.6,10,36.8,33.59.4,22.6-18.6,36.99-41.59,36.99-17,0-40-8.8-41.99-35.39h26.19c1,11.8,11.2,14.2,16.2,14.2,8.2,0,15.2-5.4,15-12.8,0-9.4-8.2-12-28.4-18.99-14.8-4.6-26.79-12.8-26.99-28.6,0-21.6,18.19-35,39.39-35,14.8,0,36.8,6.6,39,33h-25.8Z"/>
<path class="cls-3" d="M760.26,421.76c-9,30.59-37.8,52.39-72.39,52.39-45.19,0-77.59-35.8-77.59-76.99s30.59-76.58,77.39-76.58c42.59.2,66.79,31.59,72.59,53.19h-31.4c-4.6-10.19-17.8-26.79-41.39-26.99-28.8,0-47.39,24.2-47.39,50.39s19.4,50.79,47.6,50.79c26.39,0,38.39-20.8,41.19-26.19h31.4Z"/>
</g>
<rect class="cls-3" x="779.68" y="323.37" width="26.19" height="147.98"/>
<g class="cls-5">
<path class="cls-3" d="M852.09,416.56c0,19.2,14.59,33.39,32.59,33.39s32.4-14.2,32.4-33.6-14.4-33.59-32.4-33.59-32.59,14.2-32.59,33.59v.2ZM825.89,416.15c0-28,20.6-57.79,58.79-57.79s58.79,29.79,58.79,57.99-20.59,58.19-58.79,58.19-58.79-29.79-58.79-58.19v-.2Z"/>
<path class="cls-3" d="M1064.87,471.35h-24.6v-14.6c-4.6,8.6-14.4,18.2-34.19,18-36-.2-42.79-27.6-42.79-46.8v-66.39h26.19v59.79c0,16.2,5.4,28.99,23.99,28.8,18.8,0,25.2-12.4,25.2-28v-60.59h26.2v109.78Z"/>
<path class="cls-3" d="M1111.28,416.35c0,18.6,13.4,33.8,33.59,33.8,9.6,0,18.2-3.8,24.4-10,6.2-6.2,9.8-14.8,9.39-24.4,0-9.6-3.8-17.8-9.8-23.6-6-6-14.39-9.6-23.79-9.6-21.4,0-33.8,16.4-33.8,33.59v.2ZM1203.27,471.35h-25v-15.8c-4.8,8.2-15.2,19.2-37.6,19.2-33.79,0-55.59-26.4-55.59-58.4,0-35.59,25.4-58.19,55.19-58.19,21,0,32.8,11.19,36.8,17.59v-52.39h26.2v147.98Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1,55 @@
<svg role="img" aria-labelledby="atlas-cloud-logo-title" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1224 792">
<title id="atlas-cloud-logo-title">Atlas Cloud</title>
<defs>
<style>
.cls-1 {
clip-path: url(#clippath);
}
.cls-2 {
fill: none;
}
.cls-2, .cls-3 {
stroke-width: 0px;
}
.cls-4 {
clip-path: url(#clippath-1);
}
.cls-5 {
clip-path: url(#clippath-2);
}
.cls-3 {
fill: #fff;
}
</style>
<clipPath id="clippath">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
<clipPath id="clippath-1">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
<clipPath id="clippath-2">
<rect class="cls-2" x="20.73" y="315.14" width="1182.55" height="161.72"/>
</clipPath>
</defs>
<g class="cls-1">
<path class="cls-3" d="M104.38,315.14L20.73,476.86c38.73-15.32,70.03-17.6,98.12-16.26l-12.85-28.4c-5.63-.57-21.86-.57-29.57,1.45l27.95-62.14s42.06,91.31,42.13,91.32c8.09,1.27,29.8,8.55,41.52,14.03l-83.66-161.72Z"/>
</g>
<polygon class="cls-3" points="207.87 323.37 207.87 361.57 189.68 361.57 189.68 381.76 207.87 381.76 207.87 471.35 234.07 471.35 234.07 381.76 252.87 381.76 252.87 361.57 234.07 361.57 234.07 323.37 207.87 323.37"/>
<rect class="cls-3" x="268.07" y="323.37" width="26.19" height="147.98"/>
<g class="cls-4">
<path class="cls-3" d="M340.48,416.95c0,13.6,9.79,33.39,33.39,33.39,14.6,0,24.2-7.6,29.2-17.59,2.6-4.8,3.8-10,4.2-15.4.2-5.2-.8-10.6-3-15.4-4.6-10.4-14.8-19.4-30.6-19.4-21.2,0-33.19,17.2-33.19,34.19v.2ZM433.26,471.35h-26.19v-15.8c-7,12.8-21.6,19.2-36.99,19.2-35.2,0-55.8-27.4-55.8-58.4,0-34.6,25-58.19,55.8-58.19,20,0,32.19,10.6,36.99,19.4v-16h26.19v109.78Z"/>
<path class="cls-3" d="M506.87,391.16c-.2-5.8-3.2-11.8-13.4-11.8-8.8,0-12.99,5.6-12.99,11,.2,7,8.2,10.79,18.6,13.8,17.6,4.8,36.6,10,36.8,33.59.4,22.6-18.6,36.99-41.59,36.99-17,0-40-8.8-41.99-35.39h26.19c1,11.8,11.2,14.2,16.2,14.2,8.2,0,15.2-5.4,15-12.8,0-9.4-8.2-12-28.4-18.99-14.8-4.6-26.79-12.8-26.99-28.6,0-21.6,18.19-35,39.39-35,14.8,0,36.8,6.6,39,33h-25.8Z"/>
<path class="cls-3" d="M760.26,421.76c-9,30.59-37.8,52.39-72.39,52.39-45.19,0-77.59-35.8-77.59-76.99s30.59-76.58,77.39-76.58c42.59.2,66.79,31.59,72.59,53.19h-31.4c-4.6-10.19-17.8-26.79-41.39-26.99-28.8,0-47.39,24.2-47.39,50.39s19.4,50.79,47.6,50.79c26.39,0,38.39-20.8,41.19-26.19h31.4Z"/>
</g>
<rect class="cls-3" x="779.68" y="323.37" width="26.19" height="147.98"/>
<g class="cls-5">
<path class="cls-3" d="M852.09,416.56c0,19.2,14.59,33.39,32.59,33.39s32.4-14.2,32.4-33.6-14.4-33.59-32.4-33.59-32.59,14.2-32.59,33.59v.2ZM825.89,416.15c0-28,20.6-57.79,58.79-57.79s58.79,29.79,58.79,57.99-20.59,58.19-58.79,58.19-58.79-29.79-58.79-58.19v-.2Z"/>
<path class="cls-3" d="M1064.87,471.35h-24.6v-14.6c-4.6,8.6-14.4,18.2-34.19,18-36-.2-42.79-27.6-42.79-46.8v-66.39h26.19v59.79c0,16.2,5.4,28.99,23.99,28.8,18.8,0,25.2-12.4,25.2-28v-60.59h26.2v109.78Z"/>
<path class="cls-3" d="M1111.28,416.35c0,18.6,13.4,33.8,33.59,33.8,9.6,0,18.2-3.8,24.4-10,6.2-6.2,9.8-14.8,9.39-24.4,0-9.6-3.8-17.8-9.8-23.6-6-6-14.39-9.6-23.79-9.6-21.4,0-33.8,16.4-33.8,33.59v.2ZM1203.27,471.35h-25v-15.8c-4.8,8.2-15.2,19.2-37.6,19.2-33.79,0-55.59-26.4-55.59-58.4,0-35.59,25.4-58.19,55.19-58.19,21,0,32.8,11.19,36.8,17.59v-52.39h26.2v147.98Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+10 -2
View File
@@ -35,7 +35,11 @@ type ChipItemProps = {
onRemove: (index: number) => void;
};
function ChipDragPreview({ chip }: { chip: string }) {
type ChipDragPreviewProps = {
chip: string;
};
function ChipDragPreview({ chip }: ChipDragPreviewProps) {
return (
<Badge
variant="outline"
@@ -46,7 +50,11 @@ function ChipDragPreview({ chip }: { chip: string }) {
);
}
function ChipDragOverlay({ activeChip }: { activeChip: string | null }) {
type ChipDragOverlayProps = {
activeChip: string | null;
};
function ChipDragOverlay({ activeChip }: ChipDragOverlayProps) {
const overlay = (
<DragOverlay dropAnimation={null}>{activeChip ? <ChipDragPreview chip={activeChip} /> : null}</DragOverlay>
);
@@ -7,6 +7,10 @@ import { I18nProvider } from "@lingui/react";
const queryResult = vi.hoisted(() => ({ data: undefined as number | undefined }));
type CountUpProps = {
to: number;
};
vi.mock("@tanstack/react-query", () => ({
useQuery: () => queryResult,
}));
@@ -14,7 +18,7 @@ vi.mock("@/libs/orpc/client", () => ({
orpc: { statistics: { github: { getStarCount: { queryOptions: () => ({}) } } } },
}));
vi.mock("../animation/count-up", () => ({
CountUp: ({ to }: { to: number }) => <span data-testid="count-up">{to.toLocaleString()}</span>,
CountUp: ({ to }: CountUpProps) => <span data-testid="count-up">{to.toLocaleString()}</span>,
}));
const { GithubStarsButton } = await import("./github-stars-button");
@@ -35,12 +39,12 @@ const renderButton = () =>
);
describe("GithubStarsButton", () => {
it("renders an anchor pointing at the project repo with rel=noopener and target=_blank", () => {
it("renders an anchor pointing at the project repo with rel=noopener noreferrer and target=_blank", () => {
renderButton();
const link = screen.getByRole("button") as HTMLAnchorElement;
expect(link.href).toBe("https://github.com/amruthpillai/reactive-resume");
expect(link.target).toBe("_blank");
expect(link.rel).toBe("noopener");
expect(link.rel).toBe("noopener noreferrer");
});
it("uses the no-count aria-label when star count hasn't loaded yet", () => {
@@ -18,7 +18,12 @@ export function GithubStarsButton() {
variant="outline"
nativeButton={false}
render={
<a target="_blank" href="https://github.com/amruthpillai/reactive-resume" aria-label={ariaLabel} rel="noopener">
<a
target="_blank"
href="https://github.com/amruthpillai/reactive-resume"
aria-label={ariaLabel}
rel="noopener noreferrer"
>
<GithubLogoIcon aria-hidden="true" />
{starCount != null ? (
<CountUp to={starCount} duration={0.5} separator="," className="font-bold" aria-hidden="true" />
@@ -5,23 +5,20 @@ import { beforeAll, describe, expect, it, vi } from "vitest";
import { i18n } from "@lingui/core";
import { I18nProvider } from "@lingui/react";
type GridProps = {
rowCount: number;
columnCount: number;
cellComponent: React.ComponentType<
{ rowIndex: number; columnIndex: number; style: React.CSSProperties } & Record<string, unknown>
>;
cellProps: Record<string, unknown>;
};
// react-window's <Grid> uses ResizeObserver / IntersectionObserver heavily and
// expects measurable layouts that happy-dom can't provide. Stub it with a simple
// pass-through that renders the first row of cells via the supplied cellComponent.
vi.mock("react-window", () => ({
Grid: ({
rowCount,
columnCount,
cellComponent: CellComponent,
cellProps,
}: {
rowCount: number;
columnCount: number;
cellComponent: React.ComponentType<
{ rowIndex: number; columnIndex: number; style: React.CSSProperties } & Record<string, unknown>
>;
cellProps: Record<string, unknown>;
}) => {
Grid: ({ rowCount, columnCount, cellComponent: CellComponent, cellProps }: GridProps) => {
const cells: React.ReactNode[] = [];
for (let r = 0; r < Math.min(rowCount, 1); r++) {
for (let c = 0; c < columnCount; c++) {
@@ -0,0 +1,18 @@
import { describe, expect, it } from "vitest";
import { resolveHighlightToolbarState } from "./rich-input";
describe("resolveHighlightToolbarState", () => {
it("shows legacy colorless highlights as default yellow and clearable", () => {
expect(resolveHighlightToolbarState(true, null)).toEqual({
visibleHighlightColor: "rgba(255, 255, 0, 1)",
canClearHighlight: true,
});
});
it("does not show or clear a highlight when no highlight mark is active", () => {
expect(resolveHighlightToolbarState(false, null)).toEqual({
visibleHighlightColor: undefined,
canClearHighlight: false,
});
});
});
+91 -15
View File
@@ -62,12 +62,14 @@ import {
} from "@reactive-resume/ui/components/dropdown-menu";
import { PopoverHeader, PopoverTitle, PopoverTrigger } from "@reactive-resume/ui/components/popover";
import { Toggle } from "@reactive-resume/ui/components/toggle";
import { isDarkColor } from "@reactive-resume/utils/color";
import { cn } from "@reactive-resume/utils/style";
import { usePrompt } from "@/hooks/use-prompt";
import { isRTL } from "@/libs/locale";
import { ColorPicker } from "./color-picker";
const defaultTextColor = "rgba(0, 0, 0, 1)";
const defaultHighlightColor = "rgba(255, 255, 0, 1)";
const extensions = [
StarterKit.configure({
@@ -86,7 +88,15 @@ const extensions = [
}),
TextStyle,
Color,
Highlight.configure(),
Highlight.configure({ multicolor: true }).extend({
renderHTML({ HTMLAttributes }) {
const color = HTMLAttributes["data-color"] as string | undefined;
if (color && isDarkColor(color)) {
HTMLAttributes.style = `${HTMLAttributes.style ?? ""}; color: #ffffff`;
}
return ["mark", HTMLAttributes, 0];
},
}),
TextAlign.configure({ types: ["heading", "paragraph", "listItem"] }),
TableKit.configure(),
];
@@ -223,10 +233,12 @@ function useEditorToolbarState(editor: Editor) {
canStrike: ctx.editor.can().chain().toggleStrike().run() ?? false,
toggleStrike: () => ctx.editor.chain().focus().toggleStrike().run(),
// Highlight
// Highlight Color
isHighlight: ctx.editor.isActive("highlight") ?? false,
canHighlight: ctx.editor.can().chain().toggleHighlight().run() ?? false,
toggleHighlight: () => ctx.editor.chain().focus().toggleHighlight().run(),
highlightColor: (ctx.editor.getAttributes("highlight").color as string | undefined) ?? null,
canHighlightColor: ctx.editor.can().chain().toggleHighlight().run() ?? false,
setHighlightColor: (color: string) => ctx.editor.chain().focus().toggleHighlight({ color }).run(),
unsetHighlightColor: () => ctx.editor.chain().focus().unsetHighlight().run(),
// Text Color
textColor: (ctx.editor.getAttributes("textStyle").color as string | undefined) ?? null,
@@ -372,13 +384,29 @@ function useEditorToolbarState(editor: Editor) {
type EditorToolbarState = ReturnType<typeof useEditorToolbarState>;
function EditorToolbar({ editor, isFullscreen }: { editor: Editor; isFullscreen: boolean }) {
export function resolveHighlightToolbarState(isHighlight: boolean, highlightColor: string | null) {
const visibleHighlightColor = highlightColor ?? (isHighlight ? defaultHighlightColor : undefined);
return { visibleHighlightColor, canClearHighlight: isHighlight };
}
type EditorToolbarProps = {
editor: Editor;
isFullscreen: boolean;
};
function EditorToolbar({ editor, isFullscreen }: EditorToolbarProps) {
const state = useEditorToolbarState(editor);
return renderEditorToolbar(state, isFullscreen);
}
function renderEditorToolbar(state: EditorToolbarState, isFullscreen: boolean) {
const { visibleHighlightColor, canClearHighlight } = resolveHighlightToolbarState(
state.isHighlight,
state.highlightColor,
);
return (
<div className="flex flex-wrap items-center gap-y-0.5 rounded-md rounded-b-none border border-b-0">
<Toggle
@@ -429,17 +457,65 @@ function renderEditorToolbar(state: EditorToolbarState, isFullscreen: boolean) {
<TextStrikethroughIcon className="size-3.5" />
</Toggle>
<Toggle
size={isFullscreen ? "lg" : "sm"}
tabIndex={-1}
className="rounded-none"
title={t`Highlight`}
pressed={state.isHighlight}
disabled={!state.canHighlight}
onPressedChange={state.toggleHighlight}
<ColorPicker
defaultValue={defaultHighlightColor}
value={visibleHighlightColor}
onChange={state.setHighlightColor}
trigger={
<PopoverTrigger
render={
<Button
size={isFullscreen ? "lg" : "sm"}
tabIndex={-1}
variant="ghost"
className={cn("rounded-none px-2", state.isHighlight && "bg-muted text-foreground")}
title={t`Highlight`}
disabled={!state.canHighlightColor}
>
<span className="flex flex-col items-center leading-none">
<HighlighterCircleIcon className="size-3.5" />
<span
className="mt-0.5 h-0.5 w-3 rounded-full"
style={{ backgroundColor: visibleHighlightColor ?? "currentColor" }}
/>
</span>
</Button>
}
/>
}
>
<HighlighterCircleIcon className="size-3.5" />
</Toggle>
<PopoverHeader className="flex-row items-start justify-between gap-2">
<div className="flex items-center gap-2.5">
<span
className="grid size-9 place-items-center rounded-lg border border-border bg-muted/60 text-sm shadow-xs"
style={{ backgroundColor: visibleHighlightColor ?? defaultHighlightColor }}
>
<HighlighterCircleIcon className="size-4" />
</span>
<div className="flex flex-col gap-0.5">
<PopoverTitle>
<Trans>Highlight Color</Trans>
</PopoverTitle>
<span className="text-muted-foreground text-xs">
<Trans comment="Preset or custom shade refer to the color picker">
Choose a preset or custom shade.
</Trans>
</span>
</div>
</div>
<Button
size="xs"
variant="ghost"
className="shrink-0"
onClick={state.unsetHighlightColor}
disabled={!canClearHighlight}
>
<Trans comment="Clear the highlight color">Clear</Trans>
</Button>
</PopoverHeader>
</ColorPicker>
<ColorPicker
defaultValue={defaultTextColor}
@@ -71,6 +71,21 @@ describe("LevelDisplay", () => {
expect(wrapper.getAttribute("aria-label")).toContain("4");
});
it("applies custom decoration and icon sizes in pixels", () => {
const { container } = render(
<LevelDisplay type="circle" icon="star" level={2} decorationSizePx={18} iconSizePx={20} />,
);
const shapes = container.querySelectorAll("div[data-active]");
expect(shapes[0]).toHaveStyle({ width: "18px", height: "18px" });
const { container: iconContainer } = render(
<LevelDisplay type="icon" icon="star" level={2} decorationSizePx={16} />,
);
const icon = iconContainer.querySelector("i");
expect(icon).toHaveStyle({ fontSize: "16px", width: "16px", height: "16px" });
});
it("merges extra className into the wrapper", () => {
const { container } = render(<LevelDisplay type="circle" icon="star" level={1} className="extra" />);
const wrapper = container.firstChild as HTMLElement;
+36 -5
View File
@@ -3,14 +3,35 @@ import type z from "zod";
import { t } from "@lingui/core/macro";
import { cn } from "@reactive-resume/utils/style";
type Props = z.infer<typeof levelDesignSchema> & React.ComponentProps<"div"> & { level: number };
type Props = z.infer<typeof levelDesignSchema> &
React.ComponentProps<"div"> & {
level: number;
decorationSizePx?: number | undefined;
iconSizePx?: number | undefined;
};
const LEVEL_ITEM_KEYS = ["level-1", "level-2", "level-3", "level-4", "level-5"] as const;
export function LevelDisplay({ icon, type, level, className, ...props }: Props) {
const defaultDecorationClassName = "size-2.5";
export function LevelDisplay({ icon, type, level, className, decorationSizePx, iconSizePx, ...props }: Props) {
if (level === 0) return null;
if (type === "hidden" || icon === "") return null;
const decorationStyle =
decorationSizePx === undefined
? undefined
: ({ width: decorationSizePx, height: decorationSizePx } satisfies React.CSSProperties);
const resolvedIconSizePx = iconSizePx ?? decorationSizePx;
const iconStyle =
resolvedIconSizePx === undefined
? undefined
: ({
fontSize: resolvedIconSizePx,
width: resolvedIconSizePx,
height: resolvedIconSizePx,
} satisfies React.CSSProperties);
return (
<div
role="img"
@@ -29,8 +50,10 @@ export function LevelDisplay({ icon, type, level, className, ...props }: Props)
<div
key={itemKey}
data-active={isActive}
style={decorationStyle}
className={cn(
"h-2.5 flex-1 border border-(--page-primary-color) border-x-0 first:border-l last:border-r",
"flex-1 border border-(--page-primary-color) border-x-0 first:border-l last:border-r",
decorationSizePx === undefined && "h-2.5",
isActive && "bg-(--page-primary-color)",
)}
/>
@@ -41,7 +64,13 @@ export function LevelDisplay({ icon, type, level, className, ...props }: Props)
return (
<i
key={itemKey}
className={cn("ph size-2.5 text-(--page-primary-color)", `ph-${icon}`, !isActive && "opacity-40")}
style={iconStyle}
className={cn(
"ph text-(--page-primary-color)",
resolvedIconSizePx === undefined && defaultDecorationClassName,
`ph-${icon}`,
!isActive && "opacity-40",
)}
/>
);
}
@@ -50,8 +79,10 @@ export function LevelDisplay({ icon, type, level, className, ...props }: Props)
<div
key={itemKey}
data-active={isActive}
style={decorationStyle}
className={cn(
"size-2.5 border border-(--page-primary-color)",
"border border-(--page-primary-color)",
decorationSizePx === undefined && defaultDecorationClassName,
isActive && "bg-(--page-primary-color)",
type === "circle" && "rounded-full",
type === "rectangle" && "w-7",
@@ -8,8 +8,12 @@ const comboboxMock = vi.hoisted(() => ({
props: undefined as { onValueChange?: (value: string[] | null) => void } | undefined,
}));
type ComboboxProps = {
onValueChange?: (value: string[] | null) => void;
};
vi.mock("@/components/ui/combobox", () => ({
Combobox: (props: { onValueChange?: (value: string[] | null) => void }) => {
Combobox: (props: ComboboxProps) => {
comboboxMock.props = props;
return null;
},
@@ -2,6 +2,7 @@
import type { ComboboxOption } from "./combobox";
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { beforeAll, describe, expect, it } from "vitest";
import { i18n } from "@lingui/core";
import { I18nProvider } from "@lingui/react";
@@ -32,12 +33,40 @@ describe("Combobox", () => {
expect(screen.getAllByText("Beta").length).toBeGreaterThan(0);
});
it("places the clear action inside the trigger footprint", () => {
const { container } = wrap(<Combobox options={[...options]} value="beta" showClear />);
expect(screen.getByRole("button", { name: "Clear selection" })).toHaveClass("absolute", "end-7");
expect(screen.getByRole("combobox")).not.toHaveClass("pe-14");
expect(container.querySelector("[data-slot='combobox-trigger'] > span")).toHaveClass("pe-7");
});
it("renders all option labels for the multi-select default values", () => {
wrap(<Combobox multiple options={[...options]} defaultValue={["alpha", "gamma"]} />);
expect(screen.getAllByText(/Alpha/).length).toBeGreaterThan(0);
expect(screen.getAllByText(/Gamma/).length).toBeGreaterThan(0);
});
it("renders grouped options with group labels", async () => {
const user = userEvent.setup();
const groupedOptions: ComboboxOption[] = [
{ value: "alpha", label: "Alpha", group: "Primary" },
{ value: "beta", label: "Beta", group: { value: "secondary", label: "Secondary" } },
{ value: "gamma", label: "Gamma", group: { value: "secondary", label: "Secondary" } },
];
wrap(<Combobox options={groupedOptions} placeholder="Pick something" />);
await user.click(screen.getByRole("combobox"));
expect(screen.getByText("Primary")).toBeInTheDocument();
expect(screen.getByText("Secondary")).toBeInTheDocument();
expect(screen.getByText("Alpha")).toBeInTheDocument();
expect(screen.getByText("Beta")).toBeInTheDocument();
expect(screen.getByText("Gamma")).toBeInTheDocument();
expect(document.querySelectorAll("[data-slot=combobox-group]")).toHaveLength(2);
});
it("renders nothing extra when given an empty options array (no crash)", () => {
expect(() => wrap(<Combobox options={[]} placeholder="Empty" />)).not.toThrow();
expect(screen.getByText("Empty")).toBeInTheDocument();
+70 -5
View File
@@ -5,10 +5,13 @@ import React from "react";
import { Button } from "@reactive-resume/ui/components/button";
import {
ComboboxClear,
ComboboxCollection,
ComboboxContent,
ComboboxEmpty,
ComboboxGroup,
ComboboxInput,
ComboboxItem,
ComboboxLabel,
ComboboxList,
ComboboxRoot,
ComboboxTrigger,
@@ -22,10 +25,21 @@ import { useControlledState } from "@/hooks/use-controlled-state";
type ComboboxOption<TValue extends string | number = string> = {
value: TValue;
label: React.ReactNode;
group?: string | ComboboxOptionGroup;
keywords?: string[];
disabled?: boolean;
};
type ComboboxOptionGroup = {
value: string;
label: React.ReactNode;
};
type GroupedComboboxOption<TValue extends string | number = string> = ComboboxOptionGroup & {
key: string;
items: ComboboxOption<TValue>[];
};
type SingleComboboxProps<TValue extends string | number = string> = {
options: ComboboxOption<TValue>[];
value?: TValue | null;
@@ -81,6 +95,40 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
const optionMap = React.useMemo(() => new Map(options.map((opt) => [String(opt.value), opt])), [options]);
const optionGroups = React.useMemo(() => {
const groups: GroupedComboboxOption<TValue>[] = [];
const groupMap = new Map<string, GroupedComboboxOption<TValue>>();
let ungroupedGroup: GroupedComboboxOption<TValue> | null = null;
let hasGroupedOptions = false;
for (const option of options) {
if (option.group === undefined) {
if (!ungroupedGroup) {
ungroupedGroup = { key: "ungrouped", value: "", label: null, items: [] };
groups.push(ungroupedGroup);
}
ungroupedGroup.items.push(option);
continue;
}
hasGroupedOptions = true;
const group = typeof option.group === "string" ? { value: option.group, label: option.group } : option.group;
let optionGroup = groupMap.get(group.value);
if (!optionGroup) {
optionGroup = { ...group, key: `group:${group.value}`, items: [] };
groupMap.set(group.value, optionGroup);
groups.push(optionGroup);
}
optionGroup.items.push(option);
}
return hasGroupedOptions ? groups : null;
}, [options]);
const findOption = React.useCallback(
(v: TValue | TValue[] | null | undefined) => {
if (multiple) {
@@ -147,12 +195,23 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
[contains],
);
const hasSelectedValue = multiple
? Array.isArray(selectedValue) && selectedValue.length > 0
: selectedValue !== null && selectedValue !== undefined;
const listContent = (item: ComboboxOption<TValue>) => (
<ComboboxItem key={String(item.value)} value={item} disabled={item.disabled}>
{item.label}
</ComboboxItem>
);
const groupedListContent = (group: GroupedComboboxOption<TValue>) => (
<ComboboxGroup key={group.key} items={group.items}>
{group.label !== null && group.label !== undefined ? <ComboboxLabel>{group.label}</ComboboxLabel> : null}
<ComboboxCollection>{listContent}</ComboboxCollection>
</ComboboxGroup>
);
const triggerNode = (
<ComboboxTrigger
id={id}
@@ -166,7 +225,7 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
)
}
>
<span className="min-w-0 flex-1 truncate text-left">
<span className={cn("min-w-0 flex-1 truncate text-left", showClear && hasSelectedValue && "pe-7")}>
<ComboboxValue placeholder={placeholder ?? t`Select...`} />
</span>
</ComboboxTrigger>
@@ -175,7 +234,7 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
return (
<ComboboxRoot
name={name}
items={options}
items={optionGroups ?? options}
filter={filter}
disabled={disabled}
value={selectedValue as ComboboxOption<TValue>[] & ComboboxOption<TValue>}
@@ -185,9 +244,15 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
{...(multiple ? { multiple: true } : {})}
>
{showClear ? (
<div className="flex items-center gap-1">
<div className="relative w-full min-w-0">
{triggerNode}
<ComboboxClear disabled={disabled} />
{hasSelectedValue && (
<ComboboxClear
aria-label={t`Clear selection`}
disabled={disabled}
className="absolute end-7 top-1/2 z-10 -translate-y-1/2 text-muted-foreground opacity-70 hover:opacity-100 focus-visible:opacity-100"
/>
)}
</div>
) : (
triggerNode
@@ -200,7 +265,7 @@ function Combobox<TValue extends string | number = string>(props: ComboboxProps<
render={<Input disabled={disabled} className="border-none focus-visible:border-none focus-visible:ring-0" />}
/>
<ComboboxEmpty>{emptyMessage ?? t`No results found.`}</ComboboxEmpty>
<ComboboxList>{listContent}</ComboboxList>
<ComboboxList>{optionGroups ? groupedListContent : listContent}</ComboboxList>
</ComboboxContent>
</ComboboxRoot>
);
@@ -25,7 +25,7 @@ describe("Copyright", () => {
renderCopyright();
const link = screen.getByRole("link", { name: "MIT" });
expect(link.getAttribute("href")).toBe("https://github.com/AmruthPillai/Reactive-Resume/blob/main/LICENSE");
expect(link.getAttribute("rel")).toBe("noopener");
expect(link.getAttribute("rel")).toBe("noopener noreferrer");
});
it("renders the Amruth Pillai attribution link", () => {
+2 -2
View File
@@ -12,7 +12,7 @@ export function Copyright({ className, ...props }: Props) {
<a
href="https://github.com/AmruthPillai/Reactive-Resume/blob/main/LICENSE"
target="_blank"
rel="noopener"
rel="noopener noreferrer"
className="font-medium underline underline-offset-2"
>
MIT
@@ -30,7 +30,7 @@ export function Copyright({ className, ...props }: Props) {
A passion project by{" "}
<a
target="_blank"
rel="noopener"
rel="noopener noreferrer"
href="https://amruthpillai.com"
className="font-medium underline underline-offset-2"
>
@@ -36,6 +36,14 @@ const verifyFormSchema = z.object({
type TwoFactorSetupStep = "backup" | "enable" | "verify";
type TwoFactorStepProps = {
step: TwoFactorSetupStep;
};
type TwoFactorQRCodeProps = {
totpUri: string;
};
export function EnableTwoFactorDialog(_: DialogProps<"auth.two-factor.enable">) {
const router = useRouter();
@@ -345,7 +353,7 @@ function extractSecretFromTotpUri(totpUri: string): string | null {
}
}
function TwoFactorDialogTitle({ step }: { step: TwoFactorSetupStep }) {
function TwoFactorDialogTitle({ step }: TwoFactorStepProps) {
return match(step)
.with("enable", () => <Trans>Enable Two-Factor Authentication</Trans>)
.with("verify", () => <Trans>Setup Authenticator App</Trans>)
@@ -353,7 +361,7 @@ function TwoFactorDialogTitle({ step }: { step: TwoFactorSetupStep }) {
.exhaustive();
}
function TwoFactorDialogDescription({ step }: { step: TwoFactorSetupStep }) {
function TwoFactorDialogDescription({ step }: TwoFactorStepProps) {
return match(step)
.with("enable", () => (
<Trans>
@@ -371,7 +379,7 @@ function TwoFactorDialogDescription({ step }: { step: TwoFactorSetupStep }) {
.exhaustive();
}
function TwoFactorQRCode({ totpUri }: { totpUri: string }) {
function TwoFactorQRCode({ totpUri }: TwoFactorQRCodeProps) {
return (
<QRCodeSVG
value={totpUri}
+4 -9
View File
@@ -6,7 +6,7 @@ import { DownloadSimpleIcon, FileIcon, UploadSimpleIcon } from "@phosphor-icons/
import { useStore } from "@tanstack/react-form";
import { useMutation, useQuery } from "@tanstack/react-query";
import { useNavigate } from "@tanstack/react-router";
import { useEffect, useRef, useState } from "react";
import { useRef, useState } from "react";
import { toast } from "sonner";
import z from "zod";
import { JSONResumeImporter } from "@reactive-resume/import/json-resume";
@@ -92,7 +92,6 @@ export function ImportResumeDialog(_: DialogProps<"resume.import">) {
const navigate = useNavigate();
const closeDialog = useDialogStore((state) => state.closeDialog);
const prevTypeRef = useRef<string>("");
const inputRef = useRef<HTMLInputElement>(null);
const [isImporting, setIsImporting] = useState<boolean>(false);
@@ -207,12 +206,6 @@ export function ImportResumeDialog(_: DialogProps<"resume.import">) {
const type = useStore(form.store, (s) => s.values.type);
useEffect(() => {
if (prevTypeRef.current === type) return;
prevTypeRef.current = type;
form.setFieldValue("file", undefined);
}, [form, type]);
const onSelectFile = () => {
if (!inputRef.current) return;
inputRef.current.click();
@@ -261,7 +254,9 @@ export function ImportResumeDialog(_: DialogProps<"resume.import">) {
showClear={false}
value={field.state.value}
onValueChange={(value) => {
field.handleChange(value as ImportType);
const nextType = value as ImportType;
if (nextType !== field.state.value) form.setFieldValue("file", undefined);
field.handleChange(nextType);
}}
options={[
{
@@ -0,0 +1,35 @@
import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const source = readFileSync(new URL("./custom.tsx", import.meta.url), "utf8");
function rendererBody(name: string) {
const start = source.indexOf(`render: function ${name}({ form }) {`);
expect(start).toBeGreaterThanOrEqual(0);
const end =
name === "CreateCustomSectionFormRenderer" ? source.indexOf("const UpdateCustomSectionForm", start) : source.length;
expect(end).toBeGreaterThan(start);
return source.slice(start, end);
}
describe("custom section dialog layout", () => {
it.each([
"CreateCustomSectionFormRenderer",
"UpdateCustomSectionFormRenderer",
])("renders icon and title in one row for %s", (name) => {
const body = rendererBody(name);
const rowIndex = body.indexOf('"flex items-end sm:col-span-full"');
const iconIndex = body.indexOf('name="icon"', rowIndex);
const titleIndex = body.indexOf('name="title"', rowIndex);
const sectionTypeIndex = body.indexOf('name="type"', rowIndex);
expect(rowIndex).toBeGreaterThanOrEqual(0);
expect(iconIndex).toBeGreaterThan(rowIndex);
expect(titleIndex).toBeGreaterThan(iconIndex);
expect(sectionTypeIndex).toBeGreaterThan(titleIndex);
expect(body).toContain('className="rounded-r-none border-input border-e-0"');
expect(body).toContain('className="rounded-s-none"');
});
});
+111 -47
View File
@@ -19,10 +19,13 @@ import {
import { FormControl, FormItem, FormLabel, FormMessage } from "@reactive-resume/ui/components/form";
import { Input } from "@reactive-resume/ui/components/input";
import { generateId } from "@reactive-resume/utils/string";
import { cn } from "@reactive-resume/utils/style";
import { IconPicker } from "@/components/input/icon-picker";
import { Combobox } from "@/components/ui/combobox";
import { useDialogStore } from "@/dialogs/store";
import { useUpdateResumeData } from "@/features/resume/builder/draft";
import { useFormBlocker } from "@/hooks/use-form-blocker";
import { defaultSectionIconNames } from "@/libs/resume/section";
import { useAppForm, withForm } from "@/libs/tanstack-form";
const formSchema = customSectionSchema;
@@ -33,6 +36,7 @@ const defaultValues: FormValues = {
id: "",
title: "",
type: "experience",
icon: "",
columns: 1,
hidden: false,
items: [],
@@ -59,6 +63,12 @@ function isCustomSectionType(value: string | null | undefined): value is CustomS
return SECTION_TYPE_OPTIONS.some((option) => option.value === value);
}
function getIconPickerValue(icon: string, type: CustomSectionType): string {
if (icon === "none") return "";
return icon || defaultSectionIconNames[type];
}
export function CreateCustomSectionDialog({ data }: DialogProps<"resume.sections.custom.create">) {
const closeDialog = useDialogStore((state) => state.closeDialog);
const updateResumeData = useUpdateResumeData();
@@ -68,6 +78,7 @@ export function CreateCustomSectionDialog({ data }: DialogProps<"resume.sections
id: generateId(),
title: data?.title ?? "",
type: (data?.type ?? "experience") as CustomSectionType,
icon: data?.icon ?? "",
columns: data?.columns ?? 1,
hidden: data?.hidden ?? false,
items: data?.items ?? [],
@@ -126,7 +137,10 @@ export function UpdateCustomSectionDialog({ data }: DialogProps<"resume.sections
const updateResumeData = useUpdateResumeData();
const form = useAppForm({
defaultValues: data,
defaultValues: {
...data,
icon: data.icon ?? "",
},
validators: { onSubmit: formSchema },
onSubmit: async ({ value }) => {
updateResumeData((draft) => {
@@ -179,32 +193,57 @@ const CreateCustomSectionForm = withForm({
defaultValues,
render: function CreateCustomSectionFormRenderer({ form }) {
const { i18n } = useLingui();
const titleMeta = useStore(form.store, (state) => state.fieldMeta?.title);
const sectionType = useStore(form.store, (state) => state.values.type);
const isTitleInvalid = (titleMeta?.isTouched ?? false) && (titleMeta?.errors?.length ?? 0) > 0;
return (
<>
<form.Field name="title">
{(field) => (
<FormItem
className="sm:col-span-full"
hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}
>
<FormLabel>
<Trans>Title</Trans>
</FormLabel>
<FormControl
render={
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
onChange={(event) => field.handleChange(event.target.value)}
/>
}
/>
<FormMessage errors={field.state.meta.errors} />
</FormItem>
)}
</form.Field>
<div className={cn("flex items-end sm:col-span-full", isTitleInvalid && "items-center")}>
<form.Field name="icon">
{(field) => (
<FormItem
className="shrink-0"
hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}
>
<FormControl
render={
<IconPicker
value={getIconPickerValue(field.state.value, sectionType)}
onChange={(icon) => {
field.handleChange(icon === "" ? "none" : icon);
}}
className="rounded-r-none border-input border-e-0"
/>
}
/>
</FormItem>
)}
</form.Field>
<form.Field name="title">
{(field) => (
<FormItem className="flex-1" hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}>
<FormLabel>
<Trans>Title</Trans>
</FormLabel>
<FormControl
render={
<Input
className="rounded-s-none"
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
onChange={(event) => field.handleChange(event.target.value)}
/>
}
/>
<FormMessage errors={field.state.meta.errors} />
</FormItem>
)}
</form.Field>
</div>
<form.Field name="type">
{(field) => (
@@ -244,32 +283,57 @@ const UpdateCustomSectionForm = withForm({
defaultValues,
render: function UpdateCustomSectionFormRenderer({ form }) {
const { i18n } = useLingui();
const titleMeta = useStore(form.store, (state) => state.fieldMeta?.title);
const sectionType = useStore(form.store, (state) => state.values.type);
const isTitleInvalid = (titleMeta?.isTouched ?? false) && (titleMeta?.errors?.length ?? 0) > 0;
return (
<>
<form.Field name="title">
{(field) => (
<FormItem
className="sm:col-span-full"
hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}
>
<FormLabel>
<Trans>Title</Trans>
</FormLabel>
<FormControl
render={
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
onChange={(event) => field.handleChange(event.target.value)}
/>
}
/>
<FormMessage errors={field.state.meta.errors} />
</FormItem>
)}
</form.Field>
<div className={cn("flex items-end sm:col-span-full", isTitleInvalid && "items-center")}>
<form.Field name="icon">
{(field) => (
<FormItem
className="shrink-0"
hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}
>
<FormControl
render={
<IconPicker
value={getIconPickerValue(field.state.value, sectionType)}
onChange={(icon) => {
field.handleChange(icon === "" ? "none" : icon);
}}
className="rounded-r-none border-input border-e-0"
/>
}
/>
</FormItem>
)}
</form.Field>
<form.Field name="title">
{(field) => (
<FormItem className="flex-1" hasError={field.state.meta.isTouched && field.state.meta.errors.length > 0}>
<FormLabel>
<Trans>Title</Trans>
</FormLabel>
<FormControl
render={
<Input
className="rounded-s-none"
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
onChange={(event) => field.handleChange(event.target.value)}
/>
}
/>
<FormMessage errors={field.state.meta.errors} />
</FormItem>
)}
</form.Field>
</div>
<form.Field name="type">
{(field) => (
@@ -0,0 +1,340 @@
// @vitest-environment happy-dom
import type { ResumeData } from "@reactive-resume/schema/resume/data";
import type { Resume } from "./draft";
import { act, renderHook } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { i18n } from "@lingui/core";
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
import { useBuilderResumeUpdateSubscription, useResumeStore, useResumeUpdateSubscription } from "./draft";
const orpcMocks = vi.hoisted(() => ({
getResumeById: vi.fn(),
patchResume: vi.fn(),
streamSubscribe: vi.fn(),
updateResume: vi.fn(),
}));
const consumeEventIteratorMock = vi.hoisted(() => vi.fn());
const queryClientMock = vi.hoisted(() => ({
setQueryData: vi.fn(),
}));
const routerParamsMock = vi.hoisted(() => ({
value: {} as { resumeId?: string },
}));
const toastMocks = vi.hoisted(() => ({
dismiss: vi.fn(),
error: vi.fn(() => "sync-error-toast"),
}));
vi.mock("@orpc/client", () => ({
consumeEventIterator: consumeEventIteratorMock,
}));
vi.mock("@tanstack/react-query", () => ({
useQueryClient: () => queryClientMock,
}));
vi.mock("@tanstack/react-router", () => ({
useParams: () => routerParamsMock.value,
}));
vi.mock("@/libs/orpc/client", () => ({
orpc: {
resume: {
getById: {
call: orpcMocks.getResumeById,
queryOptions: ({ input }: { input: { id: string } }) => ({
queryKey: ["resume", "getById", input.id],
}),
},
patch: {
call: orpcMocks.patchResume,
},
update: {
call: orpcMocks.updateResume,
},
},
},
streamClient: {
resume: {
updates: {
subscribe: orpcMocks.streamSubscribe,
},
},
},
}));
vi.mock("sonner", () => ({
toast: toastMocks,
}));
function cloneResumeData(data: ResumeData): ResumeData {
return structuredClone(data);
}
function makeResume(id: string): Resume {
return {
id,
name: "Resume",
slug: id,
tags: [],
data: cloneResumeData(defaultResumeData),
isLocked: false,
isPublic: false,
hasPassword: false,
updatedAt: new Date("2026-05-26T12:00:00.000Z"),
};
}
function withBasicsName(resume: Resume, name: string): Resume {
return {
...resume,
data: {
...resume.data,
basics: {
...resume.data.basics,
name,
},
},
};
}
async function flushMicrotasks() {
await Promise.resolve();
await Promise.resolve();
await Promise.resolve();
}
describe("builder resume autosave", () => {
beforeEach(() => {
vi.useFakeTimers();
orpcMocks.getResumeById.mockReset();
orpcMocks.patchResume.mockReset();
orpcMocks.streamSubscribe.mockReset();
orpcMocks.updateResume.mockReset();
consumeEventIteratorMock.mockReset();
queryClientMock.setQueryData.mockClear();
routerParamsMock.value = {};
i18n.loadAndActivate({ locale: "en-US", messages: {} });
toastMocks.dismiss.mockClear();
toastMocks.error.mockClear();
useResumeStore.getState().reset();
});
afterEach(() => {
vi.clearAllTimers();
vi.useRealTimers();
useResumeStore.getState().reset();
});
it("coalesces rapid local edits into one full-data update", async () => {
const initial = makeResume("resume-rapid");
const updated = withBasicsName(initial, "Latest Name");
orpcMocks.updateResume.mockResolvedValue(updated);
useResumeStore.getState().initialize(initial);
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "First Name";
});
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "Latest Name";
});
vi.advanceTimersByTime(500);
await flushMicrotasks();
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(1);
expect(orpcMocks.updateResume).toHaveBeenCalledWith(
{ id: initial.id, data: updated.data },
expect.objectContaining({ signal: expect.any(AbortSignal) }),
);
expect(orpcMocks.patchResume).not.toHaveBeenCalled();
});
it("saves the latest pending snapshot after an in-flight save resolves", async () => {
const initial = makeResume("resume-in-flight");
const first = withBasicsName(initial, "First Name");
const latest = withBasicsName(initial, "Latest Name");
let resolveFirst!: (resume: Resume) => void;
orpcMocks.updateResume
.mockReturnValueOnce(
new Promise<Resume>((resolve) => {
resolveFirst = resolve;
}),
)
.mockResolvedValueOnce(latest);
useResumeStore.getState().initialize(initial);
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "First Name";
});
vi.advanceTimersByTime(500);
await flushMicrotasks();
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "Latest Name";
});
vi.advanceTimersByTime(500);
await flushMicrotasks();
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(1);
resolveFirst(first);
await flushMicrotasks();
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(2);
expect(orpcMocks.updateResume.mock.calls[0]?.[0]).toEqual({ id: initial.id, data: first.data });
expect(orpcMocks.updateResume.mock.calls[1]?.[0]).toEqual({ id: initial.id, data: latest.data });
expect(orpcMocks.patchResume).not.toHaveBeenCalled();
});
it("does not run a stale debounced save after immediately saving an edit made during an in-flight save", async () => {
const initial = makeResume("resume-stale-timer");
const first = withBasicsName(initial, "First Name");
const latest = withBasicsName(initial, "Latest Name");
let resolveFirst!: (resume: Resume) => void;
orpcMocks.updateResume
.mockReturnValueOnce(
new Promise<Resume>((resolve) => {
resolveFirst = resolve;
}),
)
.mockResolvedValue(latest);
useResumeStore.getState().initialize(initial);
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "First Name";
});
vi.advanceTimersByTime(500);
await flushMicrotasks();
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "Latest Name";
});
resolveFirst(first);
await flushMicrotasks();
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(2);
vi.advanceTimersByTime(500);
await flushMicrotasks();
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(2);
expect(orpcMocks.updateResume.mock.calls[1]?.[0]).toEqual({ id: initial.id, data: latest.data });
});
it("keeps the latest draft data and shows a persistent toast when saving fails", async () => {
const initial = makeResume("resume-failure");
orpcMocks.updateResume.mockRejectedValue(new Error("network down"));
useResumeStore.getState().initialize(initial);
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "Unsaved Name";
});
vi.advanceTimersByTime(500);
await flushMicrotasks();
expect(useResumeStore.getState().resume?.data.basics.name).toBe("Unsaved Name");
expect(toastMocks.error).toHaveBeenCalledWith(
"Your latest changes could not be saved.",
expect.objectContaining({ duration: Number.POSITIVE_INFINITY }),
);
expect(orpcMocks.patchResume).not.toHaveBeenCalled();
});
});
describe("resume update stream subscription", () => {
beforeEach(() => {
vi.useFakeTimers();
orpcMocks.streamSubscribe.mockReset();
consumeEventIteratorMock.mockReset();
orpcMocks.getResumeById.mockReset();
queryClientMock.setQueryData.mockClear();
routerParamsMock.value = {};
i18n.loadAndActivate({ locale: "en-US", messages: {} });
useResumeStore.getState().reset();
});
afterEach(() => {
vi.clearAllTimers();
vi.useRealTimers();
useResumeStore.getState().reset();
});
it("subscribes by explicit resume id and calls the provided update handler", async () => {
const cancel = vi.fn().mockResolvedValue(undefined);
const onUpdate = vi.fn().mockResolvedValue(undefined);
consumeEventIteratorMock.mockReturnValue(cancel);
const { unmount } = renderHook(() =>
useResumeUpdateSubscription({
resumeId: "resume-stream",
onUpdate,
}),
);
expect(orpcMocks.streamSubscribe).toHaveBeenCalledWith({ id: "resume-stream" });
const handlers = consumeEventIteratorMock.mock.calls[0]?.[1] as { onEvent: () => Promise<void> } | undefined;
expect(handlers).toBeDefined();
await act(async () => {
await handlers?.onEvent();
});
expect(onUpdate).toHaveBeenCalledTimes(1);
unmount();
expect(cancel).toHaveBeenCalledTimes(1);
});
it("replaces the builder draft from the server when there are no pending local edits", async () => {
const initial = makeResume("resume-clean");
const remote = withBasicsName(initial, "Remote Name");
const cancel = vi.fn().mockResolvedValue(undefined);
consumeEventIteratorMock.mockReturnValue(cancel);
orpcMocks.getResumeById.mockResolvedValue(remote);
routerParamsMock.value = { resumeId: initial.id };
useResumeStore.getState().initialize(initial);
renderHook(() => useBuilderResumeUpdateSubscription());
const handlers = consumeEventIteratorMock.mock.calls[0]?.[1] as { onEvent: () => Promise<void> } | undefined;
await act(async () => {
await handlers?.onEvent();
});
expect(queryClientMock.setQueryData).toHaveBeenCalledWith(["resume", "getById", initial.id], remote);
expect(useResumeStore.getState().resume?.data.basics.name).toBe("Remote Name");
});
it("does not overwrite pending local builder edits when a remote update arrives", async () => {
const initial = makeResume("resume-pending");
const remote = withBasicsName(initial, "Remote Name");
const cancel = vi.fn().mockResolvedValue(undefined);
consumeEventIteratorMock.mockReturnValue(cancel);
orpcMocks.getResumeById.mockResolvedValue(remote);
routerParamsMock.value = { resumeId: initial.id };
useResumeStore.getState().initialize(initial);
useResumeStore.getState().updateResumeData((draft) => {
draft.basics.name = "Local Name";
});
renderHook(() => useBuilderResumeUpdateSubscription());
const handlers = consumeEventIteratorMock.mock.calls[0]?.[1] as { onEvent: () => Promise<void> } | undefined;
await act(async () => {
await handlers?.onEvent();
});
expect(queryClientMock.setQueryData).toHaveBeenCalledWith(["resume", "getById", initial.id], remote);
expect(useResumeStore.getState().resume?.data.basics.name).toBe("Local Name");
});
});
+110 -84
View File
@@ -10,7 +10,6 @@ import { useCallback, useEffect, useState } from "react";
import { toast } from "sonner";
import { immer } from "zustand/middleware/immer";
import { create } from "zustand/react";
import { applyResumePatches, createResumePatches } from "@reactive-resume/resume/patch";
import { orpc, streamClient } from "@/libs/orpc/client";
export type Resume = {
@@ -46,13 +45,20 @@ type ResumeStore = ResumeStoreState & ResumeStoreActions;
type Runtime = {
abortController: AbortController;
queryClient?: QueryClient;
baselineData?: ResumeData;
hasPendingLocalChanges: boolean;
isSaving: boolean;
pendingResume?: Resume;
syncErrorToastId?: string | number;
syncResume: ReturnType<typeof debounce<(resume: Resume) => Promise<void>>>;
syncResume: ReturnType<typeof debounce<(resume: Resume) => void>>;
beforeUnloadHandler?: () => void;
};
type ResumeUpdateSubscriptionOptions = {
resumeId?: string;
onUpdate: () => Promise<void> | void;
onError?: (error: unknown) => void;
};
const SAVE_DEBOUNCE_MS = 500;
const runtimes = new Map<string, Runtime>();
@@ -66,66 +72,86 @@ function cloneResumeData(data: ResumeData): ResumeData {
return structuredClone(data);
}
function cloneResume(resume: Resume): Resume {
return { ...resume, data: cloneResumeData(resume.data) };
}
function createResumeUpdateEventIterator(resumeId: string) {
return streamClient.resume.updates.subscribe({ id: resumeId });
}
function setRuntimeBaseline(resume: Resume) {
const runtime = getRuntime(resume.id);
runtime.baselineData = cloneResumeData(resume.data);
runtime.hasPendingLocalChanges = false;
runtime.pendingResume = undefined;
}
async function flushResumeSave(id: string) {
const runtime = runtimes.get(id);
if (!runtime || runtime.isSaving || !runtime.pendingResume) return;
const submitted = runtime.pendingResume;
const submittedData = cloneResumeData(submitted.data);
runtime.pendingResume = undefined;
runtime.isSaving = true;
try {
const updated = (await orpc.resume.update.call(
{ id: submitted.id, data: submittedData },
{ signal: runtime.abortController.signal },
)) as Resume;
runtime.queryClient?.setQueryData(getResumeQueryKey(submitted.id), updated);
const currentResume = useResumeStore.getState().resume;
const currentDataStillMatchesSubmission =
currentResume?.id === submitted.id && isEqual(currentResume.data, submittedData);
if (currentDataStillMatchesSubmission && !runtime.pendingResume) {
runtime.hasPendingLocalChanges = false;
useResumeStore.getState().replaceResumeFromServer(updated);
} else {
runtime.hasPendingLocalChanges = true;
useResumeStore.getState().mergeResumeMetadata(updated);
if (!runtime.pendingResume && currentResume?.id === submitted.id && !isEqual(currentResume.data, submittedData)) {
runtime.syncResume.cancel();
runtime.pendingResume = cloneResume(currentResume);
}
}
if (runtime.syncErrorToastId !== undefined) {
toast.dismiss(runtime.syncErrorToastId);
runtime.syncErrorToastId = undefined;
}
} catch (error: unknown) {
if (error instanceof DOMException && error.name === "AbortError") return;
runtime.pendingResume ??= submitted;
runtime.hasPendingLocalChanges = true;
runtime.syncErrorToastId = toast.error(t`Your latest changes could not be saved.`, {
id: runtime.syncErrorToastId,
duration: Number.POSITIVE_INFINITY,
});
} finally {
runtime.isSaving = false;
if (runtime.pendingResume && runtime.syncErrorToastId === undefined) void flushResumeSave(id);
}
}
function queueResumeSave(resume: Resume) {
const runtime = getRuntime(resume.id);
runtime.pendingResume = cloneResume(resume);
runtime.hasPendingLocalChanges = true;
void flushResumeSave(resume.id);
}
function createRuntime(): Runtime {
const abortController = new AbortController();
const syncResume = debounce(
async (resume: Resume) => {
const runtime = runtimes.get(resume.id);
if (!runtime) return;
const baselineData = runtime.baselineData ?? cloneResumeData(resume.data);
const operations = createResumePatches(baselineData, resume.data);
if (operations.length === 0) {
runtime.hasPendingLocalChanges = false;
return;
}
const submittedData = cloneResumeData(resume.data);
try {
const updated = (await orpc.resume.patch.call(
{ id: resume.id, operations },
{ signal: abortController.signal },
)) as Resume;
runtime.queryClient?.setQueryData(getResumeQueryKey(resume.id), updated);
runtime.baselineData = cloneResumeData(updated.data);
const currentResume = useResumeStore.getState().resume;
const currentDataStillMatchesSubmission =
currentResume?.id === resume.id && isEqual(currentResume.data, submittedData);
if (currentDataStillMatchesSubmission) {
runtime.hasPendingLocalChanges = false;
useResumeStore.getState().replaceResumeFromServer(updated);
} else {
runtime.hasPendingLocalChanges = true;
useResumeStore.getState().mergeResumeMetadata(updated);
syncCurrentResume(resume.id);
}
if (runtime.syncErrorToastId === undefined) return;
toast.dismiss(runtime.syncErrorToastId);
runtime.syncErrorToastId = undefined;
} catch (error: unknown) {
if (error instanceof DOMException && error.name === "AbortError") return;
runtime.syncErrorToastId = toast.error(t`Your latest changes could not be saved.`, {
id: runtime.syncErrorToastId,
duration: Number.POSITIVE_INFINITY,
});
}
(resume: Resume) => {
queueResumeSave(resume);
},
SAVE_DEBOUNCE_MS,
{ signal: abortController.signal },
@@ -134,6 +160,7 @@ function createRuntime(): Runtime {
const runtime: Runtime = {
abortController,
hasPendingLocalChanges: false,
isSaving: false,
syncResume,
};
@@ -330,56 +357,26 @@ export function useUpdateResumeData() {
);
}
export function useResumeUpdateSubscription() {
const queryClient = useQueryClient();
const replaceResumeFromServer = useResumeStore((state) => state.replaceResumeFromServer);
const params = useParams({ strict: false }) as { resumeId?: string };
const resumeId = params.resumeId;
export function useResumeUpdateSubscription({ resumeId, onUpdate, onError }: ResumeUpdateSubscriptionOptions) {
const [_retryNonce, setRetryNonce] = useState(0);
useEffect(() => {
if (!resumeId) return;
bindRuntimeQueryClient(resumeId, queryClient);
let didCancel = false;
let retryTimer: number | undefined;
const cancel = consumeEventIterator(createResumeUpdateEventIterator(resumeId), {
onEvent: async () => {
try {
const resume = (await orpc.resume.getById.call({ id: resumeId })) as Resume;
if (hasPendingLocalChanges(resumeId)) {
const runtime = getRuntime(resumeId);
const currentResume = useResumeStore.getState().resume;
const baselineData = runtime.baselineData ?? currentResume?.data;
if (currentResume && baselineData) {
const localOperations = createResumePatches(baselineData, currentResume.data);
const mergedData = applyResumePatches(resume.data, localOperations);
runtime.baselineData = cloneResumeData(resume.data);
runtime.hasPendingLocalChanges = localOperations.length > 0;
queryClient.setQueryData(getResumeQueryKey(resumeId), resume);
useResumeStore.getState().replaceResumeDraft({ ...resume, data: mergedData });
syncCurrentResume(resumeId);
} else {
runtime.baselineData = cloneResumeData(resume.data);
useResumeStore.getState().mergeResumeMetadata(resume);
}
return;
}
queryClient.setQueryData(getResumeQueryKey(resumeId), resume);
replaceResumeFromServer(resume);
await onUpdate();
} catch (error) {
if (error instanceof DOMException && error.name === "AbortError") return;
console.warn("Failed to refresh resume after update event:", error);
onError?.(error);
}
},
onError: (error) => {
if (didCancel) return;
console.warn("Resume update stream failed, reconnecting:", error);
onError?.(error);
retryTimer = window.setTimeout(() => setRetryNonce((value) => value + 1), 2500);
},
});
@@ -389,7 +386,36 @@ export function useResumeUpdateSubscription() {
if (retryTimer) window.clearTimeout(retryTimer);
void cancel().catch(() => {});
};
}, [onError, onUpdate, resumeId]);
}
export function useBuilderResumeUpdateSubscription() {
const queryClient = useQueryClient();
const replaceResumeFromServer = useResumeStore((state) => state.replaceResumeFromServer);
const params = useParams({ strict: false }) as { resumeId?: string };
const resumeId = params.resumeId;
const onUpdate = useCallback(async () => {
if (!resumeId) return;
bindRuntimeQueryClient(resumeId, queryClient);
const resume = (await orpc.resume.getById.call({ id: resumeId })) as Resume;
queryClient.setQueryData(getResumeQueryKey(resumeId), resume);
if (hasPendingLocalChanges(resumeId)) {
useResumeStore.getState().mergeResumeMetadata(resume);
return;
}
replaceResumeFromServer(resume);
}, [queryClient, replaceResumeFromServer, resumeId]);
const onError = useCallback((error: unknown) => {
console.warn("Resume update stream failed, reconnecting:", error);
}, []);
useResumeUpdateSubscription({ resumeId, onUpdate, onError });
}
export function useResumeCleanup() {
@@ -46,7 +46,6 @@ export function PdfCanvasDocument({ children, file, onLoadSuccess }: PdfCanvasDo
useEffect(() => {
let isCancelled = false;
let loadingTask: PDFDocumentLoadingTask | undefined;
let loadedDocument: PDFDocumentProxy | undefined;
const loadDocument = async () => {
setDocument(null);
@@ -59,9 +58,8 @@ export function PdfCanvasDocument({ children, file, onLoadSuccess }: PdfCanvasDo
const pdfDocument = await loadingTask.promise;
if (isCancelled) {
void pdfDocument.destroy();
void loadingTask.destroy();
} else {
loadedDocument = pdfDocument;
setDocument(pdfDocument);
onLoadSuccessRef.current(pdfDocument);
}
@@ -76,12 +74,7 @@ export function PdfCanvasDocument({ children, file, onLoadSuccess }: PdfCanvasDo
return () => {
isCancelled = true;
if (loadedDocument) {
void loadedDocument.destroy();
} else if (loadingTask) {
void loadingTask.destroy();
}
void loadingTask?.destroy();
};
}, [file]);
@@ -190,13 +183,8 @@ export function PdfCanvasPage({
</figcaption>
) : null}
<div
role="img"
aria-label={`Resume page ${pageNumber} of ${totalPages}`}
style={scaledPageSize}
className={cn("aspect-page overflow-hidden rounded-md", className)}
>
<canvas ref={canvasRef} />
<div style={scaledPageSize} className={cn("aspect-page overflow-hidden rounded-md", className)}>
<canvas ref={canvasRef} aria-label={`Resume page ${pageNumber} of ${totalPages}`} />
</div>
</figure>
);
@@ -60,10 +60,6 @@ export const createPdfFirstPageImageUrl = async (file: Blob) => {
page.cleanup();
}
} finally {
if (pdfDocument) {
void pdfDocument.destroy();
} else {
void loadingTask.destroy();
}
void loadingTask.destroy();
}
};
@@ -10,7 +10,6 @@ const pdfjsMock = vi.hoisted(() => {
};
const pdfDocument = {
destroy: vi.fn(),
getPage: vi.fn(async () => page),
numPages: 1,
};
@@ -41,12 +40,14 @@ vi.mock("pdfjs-dist", () => {
vi.mock("pdfjs-dist/legacy/build/pdf.mjs", () => pdfjsMock.legacyModule);
const pdfCanvasModule = import("./pdf-canvas");
const pdfCanvasModuleTimeoutMs = 15_000;
describe("PDF.js browser entrypoints", () => {
beforeEach(() => {
pdfjsMock.legacyModule.GlobalWorkerOptions.workerSrc = undefined;
pdfjsMock.legacyModule.getDocument.mockClear();
pdfjsMock.loadingTask.destroy.mockClear();
pdfjsMock.pdfDocument.destroy.mockClear();
pdfjsMock.pdfDocument.getPage.mockClear();
pdfjsMock.page.cleanup.mockClear();
pdfjsMock.page.getViewport.mockClear();
@@ -58,18 +59,22 @@ describe("PDF.js browser entrypoints", () => {
vi.restoreAllMocks();
});
it("loads the canvas preview renderer from the legacy PDF.js runtime", async () => {
await expect(import("./pdf-canvas")).resolves.toEqual(
expect.objectContaining({
PdfCanvasDocument: expect.any(Function),
PdfCanvasPage: expect.any(Function),
}),
);
it(
"loads the canvas preview renderer from the legacy PDF.js runtime",
async () => {
await expect(pdfCanvasModule).resolves.toEqual(
expect.objectContaining({
PdfCanvasDocument: expect.any(Function),
PdfCanvasPage: expect.any(Function),
}),
);
expect(pdfjsMock.legacyModule.GlobalWorkerOptions.workerSrc).toContain(
"pdfjs-dist/legacy/build/pdf.worker.min.mjs",
);
});
expect(pdfjsMock.legacyModule.GlobalWorkerOptions.workerSrc).toContain(
"pdfjs-dist/legacy/build/pdf.worker.min.mjs",
);
},
pdfCanvasModuleTimeoutMs,
);
it("creates thumbnails with the legacy PDF.js runtime", async () => {
vi.spyOn(HTMLCanvasElement.prototype, "getContext").mockReturnValue({} as CanvasRenderingContext2D);
@@ -93,6 +98,6 @@ describe("PDF.js browser entrypoints", () => {
expect(pdfjsMock.page.render).toHaveBeenCalledWith(
expect.objectContaining({ annotationMode: 0, background: "white" }),
);
expect(pdfjsMock.pdfDocument.destroy).toHaveBeenCalledTimes(1);
expect(pdfjsMock.loadingTask.destroy).toHaveBeenCalledTimes(1);
});
});

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