mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-09-30 08:44:31 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0dcdcd2960 | ||
|
|
e96a51f31c | ||
|
|
1507d869c7 | ||
|
|
b932711f08 | ||
|
|
1522794733 | ||
|
|
e00ff8ceca | ||
|
|
8e72311bc6 | ||
|
|
a8c70d784c | ||
|
|
0df7f21130 | ||
|
|
6852f586ea | ||
|
|
1414fecade | ||
|
|
c1d11236ae | ||
|
|
d09ad2cdc0 | ||
|
|
9ce5bacd22 | ||
|
|
1d761be05b | ||
|
|
c875541001 | ||
|
|
16f4d2c072 | ||
|
|
b491582637 | ||
|
|
c6a654191c | ||
|
|
8461aa65d5 | ||
|
|
b04eef1479 | ||
|
|
7bff6644d8 | ||
|
|
8da780c868 | ||
|
|
dd1e37e579 |
@@ -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."
|
||||
|
||||
@@ -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
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export const appVersion = typeof __APP_VERSION__ === "undefined" ? "0.0.0" : __APP_VERSION__;
|
||||
@@ -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],
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
@@ -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",
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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(" "),
|
||||
},
|
||||
|
||||
@@ -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,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",
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "ዙሉ"
|
||||
|
||||
|
||||
@@ -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 "الزولو"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "Зулуски"
|
||||
|
||||
|
||||
@@ -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 "জুলু"
|
||||
|
||||
|
||||
@@ -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ú"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "Ζουλού"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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ú"
|
||||
|
||||
|
||||
@@ -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 "زولو"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "זולו"
|
||||
|
||||
|
||||
@@ -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 "ज़ुलु"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "ズールー語"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "ಜೂಲೂ"
|
||||
|
||||
|
||||
@@ -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 "줄루어"
|
||||
|
||||
|
||||
@@ -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ų"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "സൂളു"
|
||||
|
||||
|
||||
@@ -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 "झुलू"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "जुलु"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "ଜୁଲୁ"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "Зулу"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "Зулу"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "ஜூலு"
|
||||
|
||||
|
||||
@@ -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 "జులు"
|
||||
|
||||
|
||||
@@ -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 "ซูลู"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "Зулу"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "祖鲁语"
|
||||
|
||||
|
||||
@@ -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 "祖魯語"
|
||||
|
||||
|
||||
@@ -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
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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", () => {
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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"');
|
||||
});
|
||||
});
|
||||
@@ -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");
|
||||
});
|
||||
});
|
||||
@@ -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());
|
||||
|
||||
@@ -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", () => {
|
||||
|
||||
@@ -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()}>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,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
Reference in New Issue
Block a user