Compare commits

...
24 Commits
Author SHA1 Message Date
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
254 changed files with 10246 additions and 2752 deletions
+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
+24 -24
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/anthropic": "^3.0.81",
"@ai-sdk/google": "^3.0.80",
"@ai-sdk/openai": "^3.0.67",
"@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",
"@aws-sdk/client-s3": "^3.1057.0",
"@better-auth/api-key": "^1.6.13",
"@better-auth/drizzle-adapter": "^1.6.13",
"@better-auth/infra": "^0.2.11",
"@better-auth/oauth-provider": "^1.6.13",
"@better-auth/passkey": "^1.6.13",
"@hono/node-server": "^2.0.4",
"@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.4",
"@orpc/experimental-ratelimit": "^1.14.4",
"@orpc/json-schema": "^1.14.4",
"@orpc/openapi": "^1.14.4",
"@orpc/server": "^1.14.4",
"@orpc/zod": "^1.14.4",
"@react-pdf/renderer": "^4.5.1",
"@reactive-resume/api": "workspace:*",
"@reactive-resume/auth": "workspace:*",
@@ -46,12 +46,12 @@
"@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.193",
"bcrypt": "^6.0.0",
"better-auth": "1.6.11",
"better-auth": "1.6.13",
"cjk-regex": "^3.4.0",
"deepmerge-ts": "^7.1.5",
"dompurify": "^3.4.5",
"dompurify": "^3.4.7",
"dotenv": "^17.4.2",
"drizzle-orm": "1.0.0-rc.3",
"drizzle-zod": "1.0.0-beta.14-a36c63d",
@@ -60,12 +60,12 @@
"hono": "^4.12.23",
"jsonrepair": "^3.14.0",
"node-html-parser": "^7.1.0",
"nodemailer": "^8.0.8",
"nodemailer": "^8.0.10",
"ollama-ai-provider-v2": "^3.5.1",
"pg": "^8.21.0",
"phosphor-icons-react-pdf": "^0.1.3",
"react": "^19.2.6",
"react-email": "^6.3.3",
"react-email": "^6.5.0",
"react-pdf-html": "^2.1.5",
"resumable-stream": "^2.2.12",
"sharp": "^0.34.5",
@@ -79,10 +79,10 @@
"@types/node": "^25.9.1",
"@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",
"@typescript/native-preview": "7.0.0-dev.20260527.2",
"tsdown": "^0.22.1",
"tsx": "^4.22.4",
"typescript": "^6.0.3",
"vitest": "^4.1.7"
"vitest": "^4.1.8"
}
}
+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",
},
});
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zoem uit"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zoeloe"
+45 -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 12:55\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 "ዓረብኛ"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "አሳይ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "በየታሪክ ማቅረቢያው ላይ ያሉ ሁሉንም አዶዎች ደብቅ"
msgid "Hide Icons"
msgstr "አዶዎችን ደብቅ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "ከፍተኛ"
msgid "Highlight"
msgstr "አብራጭ"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ሒንዱኛ"
@@ -2247,6 +2269,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 "የተፈተነ አቅራቢ የለም"
@@ -2714,6 +2740,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 +2820,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 "የውጤት ካርድ፣ ጥንካሬዎች እና ቅድሚያ የተሰጣቸው አስተያየቶችን ለማግኘት የመጀመሪያ ትንተናዎን ያከናውኑ።"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "አጉር"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ዙሉ"
+45 -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 12:55\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 "العربية"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "إخفاء"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "إخفاء جميع الأيقونات في السيرة الذاتية"
msgid "Hide Icons"
msgstr "إخفاء الأيقونات"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "عالية"
msgid "Highlight"
msgstr "تمييز"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "لون مميز"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "الهندية"
@@ -2247,6 +2269,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 "لم يتم اختبار أي مزود خدمة"
@@ -2714,6 +2740,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 +2820,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 "قم بإجراء تحليلك الأول للحصول على بطاقة الأداء ونقاط القوة والاقتراحات ذات الأولوية."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "تصغير"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "الزولو"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Yüksək"
msgid "Highlight"
msgstr "Vurğula"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hind"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Uzaqlaşdır"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "Арабски"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "Скриване"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Скриване на всички икони в автобиографията"
msgid "Hide Icons"
msgstr "Скриване на икони"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Висока"
msgid "Highlight"
msgstr "Маркер за подчертаване"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Цвят на акцента"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2269,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 "Няма тестван доставчик"
@@ -2714,6 +2740,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 +2820,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 "Извършете първия си анализ, за да получите карта с резултати, силни страни и предложения по приоритети."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Намаляване"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулуски"
+45 -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 12:55\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 "আরবি"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "লুকান"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "জীবনবৃত্তান্তে সব আইকন লুকিয়ে রাখুন"
msgid "Hide Icons"
msgstr "আইকন লুকান"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "উচ্চ"
msgid "Highlight"
msgstr "হাইলাইট"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "হিন্দি"
@@ -2247,6 +2269,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 "কোন পরীক্ষিত সরবরাহকারী নেই"
@@ -2714,6 +2740,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 +2820,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 "আপনার প্রথম বিশ্লেষণ চালান একটি স্কোরকার্ড, শক্তি এবং অগ্রাধিকারপ্রাপ্ত পরামর্শ পেতে।"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "জুম আউট"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "জুলু"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Allunya"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulú"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Oddálit"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zoom ud"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Herauszoomen"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "Αραβικά"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "Απόκρυψη"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Απόκρυψη όλων των εικονιδίων στο βιογραφικό σημείωμα"
msgid "Hide Icons"
msgstr "Απόκρυψη εικονιδίων"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Υψηλή"
msgid "Highlight"
msgstr "Επισήμανση"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "Χρώμα επισήμανσης"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Χίντι"
@@ -2247,6 +2269,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 "Δεν υπάρχει δοκιμασμένος πάροχος"
@@ -2714,6 +2740,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 +2820,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 "Εκτελέστε την πρώτη σας ανάλυση για να λάβετε έναν πίνακα βαθμολογίας, τα δυνατά σημεία και τις προτάσεις με προτεραιότητες."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Σμίκρυνση"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Ζουλού"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zoom out"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+44 -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"
@@ -644,6 +648,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 +666,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 +958,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 +1742,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1749,6 +1763,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 +1776,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 +2264,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"
@@ -2709,6 +2735,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 +2815,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."
@@ -3703,6 +3741,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"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Alejar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulú"
+45 -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 12:55\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 "عربی"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "پنهان کردن"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "تمام آیکون‌ها را روی رزومه مخفی کن"
msgid "Hide Icons"
msgstr "پنهان کردن آیکون‌ها"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "بالا"
msgid "Highlight"
msgstr "هایلایت"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "هندی"
@@ -2247,6 +2269,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 "هیچ ارائه دهنده آزمایش شده ای وجود ندارد"
@@ -2714,6 +2740,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 +2820,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 "اولین تحلیل خود را اجرا کنید تا کارت امتیاز، نقاط قوت و پیشنهادهای اولویت‌بندی‌شده را دریافت کنید."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "کوچک‌نمایی"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "زولو"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Loitonna"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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é"
@@ -2714,6 +2740,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 +2820,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é."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zoom arrière"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zoulou"
+45 -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 12:55\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 "ערבית"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "הסתרה"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "הסתרת כל הסמלים בקורות החיים"
msgid "Hide Icons"
msgstr "הסתר סמלים"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "גבוה"
msgid "Highlight"
msgstr "סימון"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "צבע סימון"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "הינדי"
@@ -2247,6 +2269,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 "אין ספק שנבדק"
@@ -2714,6 +2740,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 +2820,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 "בצע את הניתוח הראשון שלך כדי לקבל דוח ביצועים, נקודות חוזק והצעות מסודרות לפי סדר עדיפויות."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "התרחקות"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "זולו"
+45 -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 12:55\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 "अरबी"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "छुपायें"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "रेज़्यूमे पर सभी आइकॉन छुपाएँ"
msgid "Hide Icons"
msgstr "आइकन छिपाएँ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हाइलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिन्दी"
@@ -2247,6 +2269,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 "कोई परीक्षित प्रदाता नहीं"
@@ -2714,6 +2740,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 +2820,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 "अपना पहला विश्लेषण चलाएँ ताकि आपको एक स्कोरकार्ड, ताकतें और प्राथमिकता-आधारित सुझाव मिल सकें।"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "ज़ूम आउट"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ज़ुलु"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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ó"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Kicsinyítés"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Tinggi"
msgid "Highlight"
msgstr "Sorot"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Perkecil"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Rimpicciolisci"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -4
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: reactive-resume\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-05-21 07:54\n"
"PO-Revision-Date: 2026-06-01 12:55\n"
"Last-Translator: \n"
"Language-Team: Japanese\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 "アラビア語"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "非表示にする"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "履歴書上のすべてのアイコンを非表示にする"
msgid "Hide Icons"
msgstr "アイコンを非表示にする"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "高い"
msgid "Highlight"
msgstr "ハイライト"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "ハイライトカラー"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ヒンディー語"
@@ -2247,6 +2269,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 "テスト済みのプロバイダーはありません"
@@ -2714,6 +2740,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 +2820,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 "最初の分析を実行し、スコアカード、強み、優先順位付けされた提案を得る。"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "ズームアウト"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ズールー語"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "លាក់"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "លាក់​រូបតំណាង​ទាំងអស់​លើ​ប្រវត្តិរូប"
msgid "Hide Icons"
msgstr "លាក់រូបតំណាង"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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 "គ្មានអ្នកផ្តល់សេវាដែលបានធ្វើតេស្តទេ"
@@ -2714,6 +2740,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 +2820,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 "ដំណើរការវិភាគលើកដំបូងរបស់អ្នកដើម្បីទទួលបានតារាងពិន្ទុ ចំណុចខ្លាំង និងសំណើដែលបានកំណត់អាទិភាព។"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "បង្រួម"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "ಅರೇಬಿಕ್"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "ಮರೆಮಾಡಿ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ರೆಸ್ಯೂಮ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಐಕಾನ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ"
msgid "Hide Icons"
msgstr "ಐಕಾನ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "ಹೆಚ್ಚು"
msgid "Highlight"
msgstr "ಹೈಲೈಟ್ ಮಾಡಿ"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ಹಿಂದಿ"
@@ -2247,6 +2269,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 "ಪರೀಕ್ಷಿಸದ ಪೂರೈಕೆದಾರರು ಇಲ್ಲ."
@@ -2714,6 +2740,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 +2820,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 "ಸ್ಕೋರ್‌ಕಾರ್ಡ್, ಬಲಗಳು ಮತ್ತು ಆದ್ಯತೆಯ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಮೊದಲ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಚಲಾಯಿಸಿ."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ಜೂಲೂ"
+45 -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 12:55\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 "아랍어"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "숨기기"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "이력서의 모든 아이콘 숨기기"
msgid "Hide Icons"
msgstr "아이콘 숨기기"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "높음"
msgid "Highlight"
msgstr "형광펜"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr "하이라이트 색상"
#: src/libs/locale.ts
msgid "Hindi"
msgstr "힌디어"
@@ -2247,6 +2269,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 "검증되지 않은 제공업체"
@@ -2714,6 +2740,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 +2820,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 "첫 번째 분석을 실행하여 스코어카드, 강점, 우선순위가 지정된 제안을 확인하세요."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "축소"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "줄루어"
+45 -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 12:55\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ų"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Aukštas"
msgid "Highlight"
msgstr "Paryškinti"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Tolinti"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulų"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Augsts"
msgid "Highlight"
msgstr "Izcelt"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Tālināt"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "അറബിക്"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "മറയ്ക്കുക"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "റിസ്യൂമിലെ എല്ലാ ഐക്കണുകളും മറയ്ക്കുക"
msgid "Hide Icons"
msgstr "ഐക്കണുകൾ മറയ്ക്കുക"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "ഉയർന്ന"
msgid "Highlight"
msgstr "ഹൈലൈറ്റ്"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ഹിന്ദി"
@@ -2247,6 +2269,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 "പരിശോധിച്ച ദാതാവില്ല."
@@ -2714,6 +2740,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 +2820,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 "നിങ്ങളുടെ ആദ്യ വിശകലനം നടത്തി ഒരു സ്കോർകാർഡ്, ശക്തികൾ, മുൻഗണനാ നിർദ്ദേശങ്ങൾ എന്നിവ നേടുക."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "സൂം ഔട്ട് ചെയ്യുക"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "സൂളു"
+45 -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 12:55\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 "अरबी"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "लपवा"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "रेझ्युमेवरील सर्व आयकन्स लपवा"
msgid "Hide Icons"
msgstr "चिन्हे लपवा"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हायलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिंदी"
@@ -2247,6 +2269,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 "कोणताही तपासलेला प्रदाता नाही"
@@ -2714,6 +2740,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 +2820,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 "तुमचे पहिले विश्लेषण चालवा आणि स्कोरकार्ड, सामर्थ्ये आणि प्राधान्यक्रमाने सुचवलेल्या सूचना मिळवा."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "बाहेर झूम करा"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "झुलू"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Tinggi"
msgid "Highlight"
msgstr "Sorot"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zum keluar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "अरबी"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "ल्यুকाउनुहोस्"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "बायोडाटाबाट सबै आइकनहरू लुकाउनुहोस्"
msgid "Hide Icons"
msgstr "आइकनहरू लुकाउनुहोस्"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "उच्च"
msgid "Highlight"
msgstr "हाइलाइट"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "हिन्दी"
@@ -2247,6 +2269,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 "परीक्षण गरिएको कुनै प्रदायक छैन"
@@ -2714,6 +2740,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 +2820,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 "स्कोरकार्ड, शक्तिहरू, र प्राथमिकता दिइएका सुझावहरू प्राप्त गर्न आफ्नो पहिलो विश्लेषण चलाउनुहोस्।"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "जूम आउट"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "जुलु"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Hoog"
msgid "Highlight"
msgstr "Markeren"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Uitzoomen"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Høy"
msgid "Highlight"
msgstr "Fremhev"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zoom ut"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "ଆରବୀ"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "ଲୁଚାନ୍ତୁ"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ରେଜ୍ୟୁମେର ସମସ୍ତ ଆଇକନ୍ ଲୁଚାନ୍ତୁ"
msgid "Hide Icons"
msgstr "ଚିତ୍ରସଂକେତଗୁଡିକୁ ଲୁଚାନ୍ତୁ"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "ଉଚ୍ଚ"
msgid "Highlight"
msgstr "ହାଇଲାଇଟ୍"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ହିନ୍ଦୀ"
@@ -2247,6 +2269,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 "କୌଣସି ପରୀକ୍ଷିତ ପ୍ରଦାନକାରୀ ନାହାଁନ୍ତି"
@@ -2714,6 +2740,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 +2820,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 "ସ୍କୋରକାର୍ଡ, ଶକ୍ତି ଏବଂ ପ୍ରାଥମିକତାଭିତ୍ତିକ ପରାମର୍ଶ ପାଇବା ପାଇଁ ଆପଣଙ୍କ ପ୍ରଥମ ବିଶ୍ଳେଷଣ ଚଲାନ୍ତୁ।"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "ଜୁମ୍ ଆଉଟ୍ କରନ୍ତୁ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ଜୁଲୁ"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Wysoki"
msgid "Highlight"
msgstr "Zakreślenie"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Pomniejsz"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Alta"
msgid "Highlight"
msgstr "Realce"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Diminuir zoom"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Elevado"
msgid "Highlight"
msgstr "Realce"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Afastar"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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ă"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,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 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Micșorează"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "Арабский"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "Скрыть"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Скрыть все иконки в резюме"
msgid "Hide Icons"
msgstr "Скрыть значки"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Высокий"
msgid "Highlight"
msgstr "Подсветка"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2269,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 "Нет проверенного поставщика"
@@ -2714,6 +2740,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 +2820,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 "Проведите свой первый анализ, чтобы получить оценочный лист, сильные стороны и приоритетные предложения."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Уменьшить"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Vysoká"
msgid "Highlight"
msgstr "Zvýraznenie"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindčina"
@@ -2247,6 +2269,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ľ"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Oddialiť"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Visoka"
msgid "Highlight"
msgstr "Označi"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindujščina"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Oddalji"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zuluščina"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "I lartë"
msgid "Highlight"
msgstr "Thekso"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Indisht (Hindi)"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zvogëlo"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "Арапски"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "Сакриј"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Сакриј све иконице на резимеу"
msgid "Hide Icons"
msgstr "Сакриј иконе"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Високо"
msgid "Highlight"
msgstr "Истакни"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Хинди"
@@ -2247,6 +2269,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 "Нема тестираног добављача"
@@ -2714,6 +2740,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 +2820,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 "Покрените прву анализу да бисте добили контролну таблу, снаге и приоритезоване предлоге."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Умањи"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Hög"
msgid "Highlight"
msgstr "Markera"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hindi"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Zooma ut"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "அரபிக்"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "மறை"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ரெஸ்யூமியில் உள்ள அனைத்து ஐகான்களையும் மறைக்கவும்"
msgid "Hide Icons"
msgstr "சின்னங்களை மறைக்கவும்"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "உயர்"
msgid "Highlight"
msgstr "ஹைலைட்"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ஹிந்தி"
@@ -2247,6 +2269,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 "சோதிக்கப்பட்ட வழங்குநர் இல்லை"
@@ -2714,6 +2740,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 +2820,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 "மதிப்பெண் அட்டை, பலங்கள் மற்றும் முன்னுரிமைப்படுத்தப்பட்ட பரிந்துரைகளைப் பெற உங்கள் முதல் பகுப்பாய்வை இயக்கவும்."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "சிறிதாக்கு"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ஜூலு"
+45 -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 12:55\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 "అరబిక్"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "హైడ్"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "జీవన చరిత్రపై అన్ని చిహ్నాలను దాచండి"
msgid "Hide Icons"
msgstr "చిహ్నాలను దాచండి"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "అధిక"
msgid "Highlight"
msgstr "హైలైట్"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "హిందీ"
@@ -2247,6 +2269,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 "పరీక్షించిన ప్రొవైడర్ లేదు"
@@ -2714,6 +2740,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 +2820,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 "స్కోర్‌కార్డ్, బలాలు మరియు ప్రాధాన్యతా సూచనలను పొందడానికి మీ మొదటి విశ్లేషణను అమలు చేయండి."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "జూమ్ అవుట్ చేయండి"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "జులు"
+45 -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 12:55\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 "อารบิก"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "ซ่อน"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "ซ่อนไอคอนทั้งหมดในเรซูเม่"
msgid "Hide Icons"
msgstr "ซ่อนไอคอน"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "สูง"
msgid "Highlight"
msgstr "ไฮไลต์"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "ฮินดี"
@@ -2247,6 +2269,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 "ไม่มีผู้ให้บริการที่ผ่านการทดสอบ"
@@ -2714,6 +2740,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 +2820,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 "ดำเนินการวิเคราะห์ครั้งแรกของคุณเพื่อรับสกอร์การ์ด จุดแข็ง และข้อเสนอแนะที่จัดลำดับความสำคัญ"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "ซูมออก"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "ซูลู"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Yüksek"
msgid "Highlight"
msgstr "Vurgula"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hintçe"
@@ -2247,6 +2269,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."
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Uzaklaştır"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "Арабська"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "Приховати"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "Сховати всі іконки на резюме"
msgid "Hide Icons"
msgstr "Приховати значки"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Високий"
msgid "Highlight"
msgstr "Виділити"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Гінді"
@@ -2247,6 +2269,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 "Немає перевіреного постачальника"
@@ -2714,6 +2740,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 +2820,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 "Проведіть перший аналіз, щоб отримати оціночну таблицю, сильні сторони та пріоритетні пропозиції."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Зменшити"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Зулу"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Yuqori"
msgid "Highlight"
msgstr "Ajratib ko‘rsatish"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Hind tili"
@@ -2247,6 +2269,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"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Kichraytirish"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ 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"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "Cao"
msgid "Highlight"
msgstr "Làm nổi bật"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "Tiếng Hindi"
@@ -2247,6 +2269,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ử"
@@ -2714,6 +2740,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 +2820,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."
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "Thu nhỏ"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "Zulu"
+45 -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 12:55\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 "阿拉伯语"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "隐藏"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "在简历中隐藏所有图标"
msgid "Hide Icons"
msgstr "隐藏图标"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "高"
msgid "Highlight"
msgstr "高亮"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "印地语"
@@ -2247,6 +2269,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 "没有经过测试的提供商"
@@ -2714,6 +2740,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 +2820,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 "进行首次分析,以获得记分卡、优势和优先建议。"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "缩小"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "祖鲁语"
+45 -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 12:55\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 "阿拉伯文"
@@ -649,6 +653,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 +671,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 +963,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 +1747,8 @@ msgid "Hide"
msgstr "隱藏"
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgstr "隱藏履歷中的所有圖示"
msgid "Hide Icons"
msgstr "隱藏圖示"
#. Accessible label for button that hides password in registration form
#. Accessible label for button that hides password in reset-password form
@@ -1754,6 +1768,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 +1781,10 @@ msgstr "高"
msgid "Highlight"
msgstr "螢光標記"
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr "印地語"
@@ -2247,6 +2269,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 "沒有經過測試的提供者"
@@ -2714,6 +2740,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 +2820,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 "執行您的第一次分析,以獲得計分卡、優勢和優先建議。"
@@ -3708,6 +3746,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 +4001,3 @@ msgstr "縮小"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "祖魯語"
+43 -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 ""
@@ -644,6 +648,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 +666,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 +958,10 @@ msgstr ""
msgid "Custom Sections"
msgstr ""
#: src/libs/resume/section.tsx
msgid "Custom Styles"
msgstr ""
#: src/libs/locale.ts
msgid "Czech"
msgstr ""
@@ -1728,7 +1742,7 @@ msgid "Hide"
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/right/sections/page.tsx
msgid "Hide all icons on the resume"
msgid "Hide Icons"
msgstr ""
#. Accessible label for button that hides password in registration form
@@ -1749,6 +1763,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 +1776,10 @@ msgstr ""
msgid "Highlight"
msgstr ""
#: src/components/input/rich-input.tsx
msgid "Highlight Color"
msgstr ""
#: src/libs/locale.ts
msgid "Hindi"
msgstr ""
@@ -2242,6 +2264,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 ""
@@ -2709,6 +2735,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 +2815,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 ""
@@ -3703,6 +3741,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 ""
+27 -28
View File
@@ -16,20 +16,20 @@
"lingui:extract": "lingui extract --clean --overwrite"
},
"dependencies": {
"@ai-sdk/react": "^3.0.193",
"@ai-sdk/react": "^3.0.195",
"@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.13",
"@better-auth/infra": "^0.2.11",
"@better-auth/oauth-provider": "^1.6.13",
"@better-auth/passkey": "^1.6.13",
"@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",
"@orpc/client": "^1.14.4",
"@orpc/server": "^1.14.4",
"@orpc/tanstack-query": "^1.14.4",
"@phosphor-icons/react": "^2.1.10",
"@react-pdf/renderer": "^4.5.1",
"@reactive-resume/ai": "workspace:*",
@@ -39,36 +39,35 @@
"@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",
"@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-router": "^1.170.10",
"@tiptap/extension-color": "^3.24.0",
"@tiptap/extension-highlight": "^3.24.0",
"@tiptap/extension-table": "^3.24.0",
"@tiptap/extension-text-align": "^3.24.0",
"@tiptap/extension-text-style": "^3.24.0",
"@tiptap/pm": "^3.24.0",
"@tiptap/react": "^3.24.0",
"@tiptap/starter-kit": "^3.24.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.193",
"better-auth": "1.6.13",
"cmdk": "^1.1.1",
"drizzle-orm": "1.0.0-rc.3",
"es-toolkit": "^1.47.0",
"fuse.js": "^7.3.0",
"fuse.js": "^7.4.0",
"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",
@@ -81,7 +80,7 @@
"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",
@@ -91,16 +90,16 @@
"@lingui/vite-plugin": "^6.1.0",
"@reactive-resume/config": "workspace:*",
"@rolldown/plugin-babel": "^0.2.3",
"@tanstack/router-plugin": "^1.168.11",
"@tanstack/router-plugin": "^1.168.13",
"@types/babel__core": "^7.20.5",
"@types/pg": "^8.20.0",
"@types/react": "^19.2.15",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260526.1",
"@typescript/native-preview": "7.0.0-dev.20260527.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"
"vite": "^8.0.16"
}
}
+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);
});
});
@@ -11,6 +11,18 @@ const previewMock = vi.hoisted(() => ({
toBlob: vi.fn(async () => new Blob(["%PDF"], { type: "application/pdf" })),
}));
type PdfCanvasDocumentProps = {
children: (document: { numPages: number }) => React.ReactNode;
onLoadSuccess: (document: { numPages: number }) => void;
};
type PdfCanvasPageProps = {
onLoadSuccess: (pageNumber: number, pageSize: { height: number; width: number }) => void;
onRenderSuccess?: () => void;
pageNumber: number;
totalPages: number;
};
const resumeDataWithPageCount = (pageCount: number): ResumeData => ({
...sampleResumeData,
metadata: {
@@ -35,30 +47,14 @@ vi.mock("./pdf-canvas", async () => {
const pdfDocument = { numPages: 1 };
return {
PdfCanvasDocument: ({
children,
onLoadSuccess,
}: {
children: (document: typeof pdfDocument) => React.ReactNode;
onLoadSuccess: (document: typeof pdfDocument) => void;
}) => {
PdfCanvasDocument: ({ children, onLoadSuccess }: PdfCanvasDocumentProps) => {
React.useEffect(() => {
onLoadSuccess(pdfDocument);
}, [onLoadSuccess]);
return React.createElement(React.Fragment, null, children(pdfDocument));
},
PdfCanvasPage: ({
onLoadSuccess,
onRenderSuccess,
pageNumber,
totalPages,
}: {
onLoadSuccess: (pageNumber: number, pageSize: { height: number; width: number }) => void;
onRenderSuccess?: () => void;
pageNumber: number;
totalPages: number;
}) => {
PdfCanvasPage: ({ onLoadSuccess, onRenderSuccess, pageNumber, totalPages }: PdfCanvasPageProps) => {
React.useEffect(() => {
onLoadSuccess(pageNumber, { height: 200, width: 100 });
onRenderSuccess?.();
@@ -6,7 +6,6 @@ import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
const pdfViewerMock = vi.hoisted(() => {
const pdfDocument = {
destroy: vi.fn(),
numPages: 1,
};
@@ -93,7 +92,6 @@ beforeEach(() => {
pdfViewerMock.createResumePdfBlob.mockClear();
pdfViewerMock.getDocument.mockClear();
pdfViewerMock.loadingTask.destroy.mockClear();
pdfViewerMock.pdfDocument.destroy.mockClear();
});
describe("PdfViewer", () => {
@@ -113,7 +111,6 @@ describe("PdfViewer", () => {
expect(abortSignal?.aborted).toBe(true);
expect(viewer.setDocument).toHaveBeenCalledWith(null);
expect(pdfViewerMock.pdfDocument.destroy).toHaveBeenCalledTimes(1);
expect(pdfViewerMock.loadingTask.destroy).toHaveBeenCalledTimes(1);
});
});
@@ -168,7 +168,7 @@ export function PdfViewer({ className, data }: PdfViewerProps) {
const nextDocument = await loadingTask.promise;
if (isCancelled) {
void nextDocument.destroy();
void loadingTask.destroy();
} else {
pdfDocument = nextDocument;
const pdfViewerOptions = {
@@ -208,7 +208,6 @@ export function PdfViewer({ className, data }: PdfViewerProps) {
window.cancelAnimationFrame(animationFrameId);
resizeObserver?.disconnect();
if (pdfViewer) clearPdfViewerDocument(pdfViewer);
void pdfDocument?.destroy();
void loadingTask?.destroy();
viewer.replaceChildren();
};
@@ -8,11 +8,16 @@ import { i18n } from "@lingui/core";
import { I18nProvider } from "@lingui/react";
import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
type PdfViewerProps = {
className?: string;
data: ResumeData;
};
const publicResumeMock = vi.hoisted(() => ({
createResumePdfBlob: vi.fn(async () => new Blob(["%PDF"], { type: "application/pdf" })),
downloadWithAnchor: vi.fn(),
generateFilename: vi.fn((name: string, extension: string) => `${name}.${extension}`),
PdfViewer: vi.fn<(_props: { className?: string; data: ResumeData }) => ReactNode>(() => null),
PdfViewer: vi.fn<(_props: PdfViewerProps) => ReactNode>(() => null),
resume: undefined as
| undefined
| {
@@ -23,6 +23,10 @@ import { orpc } from "@/libs/orpc/client";
type SavedProvider = RouterOutput["aiProviders"]["list"][number];
type AIProviderOption = ComboboxOption<AIProvider> & { defaultBaseURL: string };
type ProviderRowProps = {
provider: SavedProvider;
};
const providerOptions: AIProviderOption[] = [
{
value: "openai",
@@ -110,7 +114,7 @@ function isAiProviderConfigError(error: unknown) {
return status === "PRECONDITION_FAILED" || status === 412;
}
function ProviderRow({ provider }: { provider: SavedProvider }) {
function ProviderRow({ provider }: ProviderRowProps) {
const queryClient = useQueryClient();
const invalidate = () => queryClient.invalidateQueries({ queryKey: orpc.aiProviders.list.queryKey() });
const { mutate: testProvider, isPending: isTesting } = useMutation(orpc.aiProviders.test.mutationOptions());
+5 -3
View File
@@ -4,9 +4,11 @@ import { act, renderHook } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { ConfirmDialogProvider, useConfirm } from "./use-confirm";
const wrapper = ({ children }: { children: React.ReactNode }) => (
<ConfirmDialogProvider>{children}</ConfirmDialogProvider>
);
type HookWrapperProps = {
children: React.ReactNode;
};
const wrapper = ({ children }: HookWrapperProps) => <ConfirmDialogProvider>{children}</ConfirmDialogProvider>;
describe("useConfirm", () => {
it("throws when used outside ConfirmDialogProvider", () => {
+8 -2
View File
@@ -27,9 +27,13 @@ type ConfirmContextType = {
confirm: (title: string, options?: ConfirmOptions) => Promise<boolean>;
};
type ConfirmDialogProviderProps = {
children: React.ReactNode;
};
const ConfirmContext = React.createContext<ConfirmContextType | null>(null);
export function ConfirmDialogProvider({ children }: { children: React.ReactNode }) {
export function ConfirmDialogProvider({ children }: ConfirmDialogProviderProps) {
const [state, setState] = React.useState<ConfirmState>({
open: false,
resolve: null,
@@ -64,8 +68,10 @@ export function ConfirmDialogProvider({ children }: { children: React.ReactNode
setState((prev) => ({ ...prev, open: false, resolve: null }));
}, [state.resolve]);
const contextValue = React.useMemo<ConfirmContextType>(() => ({ confirm }), [confirm]);
return (
<ConfirmContext.Provider value={{ confirm }}>
<ConfirmContext.Provider value={contextValue}>
{children}
<AlertDialog open={state.open} onOpenChange={(open) => !open && handleCancel()}>
+6 -8
View File
@@ -1,4 +1,4 @@
import { useCallback, useEffect, useState } from "react";
import { useCallback, useState } from "react";
interface CommonControlledStateProps<T> {
value?: T;
@@ -13,19 +13,17 @@ export function useControlledState<T, Rest extends unknown[] = []>(
props: UseControlledStateProps<T, Rest>,
): readonly [T, (next: T, ...args: Rest) => void] {
const { value, defaultValue, onChange } = props;
const isControlled = value !== undefined;
const [state, setInternalState] = useState<T>(value !== undefined ? value : (defaultValue as T));
useEffect(() => {
if (value !== undefined) setInternalState(value);
}, [value]);
const [internalState, setInternalState] = useState<T>(value !== undefined ? value : (defaultValue as T));
const state = isControlled ? (value as T) : internalState;
const setState = useCallback(
(next: T, ...args: Rest) => {
setInternalState(next);
if (!isControlled) setInternalState(next);
onChange?.(next, ...args);
},
[onChange],
[isControlled, onChange],
);
return [state, setState] as const;
+17 -12
View File
@@ -1,20 +1,25 @@
import { useEffect, useState } from "react";
import { useRef, useState, useSyncExternalStore } from "react";
const MOBILE_BREAKPOINT = 768;
const MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`;
export function useIsMobile() {
const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined);
const [mediaQueryList] = useState(() => (typeof window === "undefined" ? null : window.matchMedia(MOBILE_QUERY)));
const latestMatchesRef = useRef(mediaQueryList?.matches ?? false);
useEffect(() => {
const mql = window.matchMedia(MOBILE_QUERY);
const onChange = (e: MediaQueryListEvent) => {
setIsMobile(e.matches);
};
mql.addEventListener("change", onChange);
setIsMobile(mql.matches);
return () => mql.removeEventListener("change", onChange);
}, []);
return useSyncExternalStore(
(onStoreChange) => {
if (!mediaQueryList) return () => {};
return !!isMobile;
const handleChange = (event: MediaQueryListEvent | { matches: boolean }) => {
latestMatchesRef.current = event.matches;
onStoreChange();
};
mediaQueryList.addEventListener("change", handleChange);
return () => mediaQueryList.removeEventListener("change", handleChange);
},
() => latestMatchesRef.current,
() => false,
);
}
+5 -3
View File
@@ -5,13 +5,15 @@ import { beforeAll, describe, expect, it } from "vitest";
import { i18n } from "@lingui/core";
import { PromptDialogProvider, usePrompt } from "./use-prompt";
type HookWrapperProps = {
children: React.ReactNode;
};
beforeAll(() => {
i18n.loadAndActivate({ locale: "en", messages: {} });
});
const wrapper = ({ children }: { children: React.ReactNode }) => (
<PromptDialogProvider>{children}</PromptDialogProvider>
);
const wrapper = ({ children }: HookWrapperProps) => <PromptDialogProvider>{children}</PromptDialogProvider>;
const clickButton = (re: RegExp) => {
const buttons = Array.from(document.body.querySelectorAll<HTMLButtonElement>("button"));

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