mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-01 01:04:29 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae8d48bcee | ||
|
|
517199471a | ||
|
|
15f8bce988 | ||
|
|
164a279306 | ||
|
|
79e4a3ddc8 | ||
|
|
d2ffbf9618 | ||
|
|
4ac19f81b3 | ||
|
|
b303b89758 | ||
|
|
c6ac3fd1a9 | ||
|
|
fe6f84e06d | ||
|
|
9d6426b2e0 | ||
|
|
d34a429dea | ||
|
|
b69583c181 | ||
|
|
50f50b2672 | ||
|
|
fb8c73be76 | ||
|
|
18468a5658 | ||
|
|
048eab3b49 | ||
|
|
ca774c77c8 | ||
|
|
a4897c20d7 | ||
|
|
bed14a72af | ||
|
|
93c06934bd | ||
|
|
1e665fbe7e | ||
|
|
30812f8a8e | ||
|
|
dd0531091b | ||
|
|
a2901bfb2e | ||
|
|
418c7887ee | ||
|
|
12407d473d | ||
|
|
36a46cfd66 | ||
|
|
0868a92e62 |
@@ -56,6 +56,9 @@ jobs:
|
||||
- name: Install Dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Run Server and Tooling Tests
|
||||
run: pnpm exec turbo run test:ci --filter=server --filter=@reactive-resume/tooling
|
||||
|
||||
- name: Install Playwright Browser
|
||||
run: pnpm exec playwright install --with-deps chromium
|
||||
|
||||
@@ -73,8 +76,38 @@ jobs:
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
|
||||
- name: Run E2E Tests
|
||||
run: pnpm test:e2e:ci
|
||||
- name: Run Baseline E2E Tests
|
||||
env:
|
||||
FLAG_SEMANTIC_CSS_AUTHORING: "false"
|
||||
FLAG_SEMANTIC_CSS_DEFAULT: "false"
|
||||
run: pnpm exec playwright test --grep-invert "@semantic-css"
|
||||
|
||||
- name: Run Semantic CSS Opt-In Acceptance
|
||||
env:
|
||||
FLAG_SEMANTIC_CSS_AUTHORING: "true"
|
||||
FLAG_SEMANTIC_CSS_DEFAULT: "false"
|
||||
run: |
|
||||
pnpm exec playwright test \
|
||||
tests/e2e/specs/semantic-css/legacy-conversion.spec.ts \
|
||||
tests/e2e/specs/semantic-css/invalid-last-valid.spec.ts \
|
||||
tests/e2e/specs/semantic-css/portable-stylesheet.spec.ts \
|
||||
tests/e2e/specs/semantic-css/revision-conflict.spec.ts \
|
||||
tests/e2e/specs/semantic-css/template-visual.spec.ts
|
||||
|
||||
- name: Run Semantic CSS Default-On Acceptance
|
||||
env:
|
||||
FLAG_SEMANTIC_CSS_AUTHORING: "true"
|
||||
FLAG_SEMANTIC_CSS_DEFAULT: "true"
|
||||
run: pnpm exec playwright test tests/e2e/specs/semantic-css/default-mode.spec.ts
|
||||
|
||||
- name: Run Semantic CSS Dormant Acceptance
|
||||
env:
|
||||
FLAG_SEMANTIC_CSS_AUTHORING: "false"
|
||||
FLAG_SEMANTIC_CSS_DEFAULT: "false"
|
||||
run: |
|
||||
pnpm exec playwright test \
|
||||
tests/e2e/specs/semantic-css/dormant-mode.spec.ts \
|
||||
tests/e2e/specs/semantic-css/flag-off-semantic.spec.ts
|
||||
|
||||
- name: Upload Playwright Report
|
||||
if: always()
|
||||
|
||||
@@ -51,6 +51,7 @@ temp
|
||||
.cursor
|
||||
.codegraph
|
||||
.superpowers
|
||||
.worktrees
|
||||
.migration
|
||||
|
||||
# Local Storage Data
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Task 1: Harden public PDF response contract
|
||||
|
||||
## Implemented
|
||||
|
||||
- Pinned successful public PDF responses to `Content-Type: application/pdf` at the HTTP boundary.
|
||||
- Kept `Cache-Control: private, no-store` hardcoded at that boundary for successful, validation-error, and service-error responses.
|
||||
- Removed the unused `cacheControl` member from `createPublicResumePdf` and all affected tests/mocks.
|
||||
- Updated the route regression to return a `text/plain` file from the service mock while asserting the HTTP response remains `application/pdf`.
|
||||
|
||||
## Verification
|
||||
|
||||
- `pnpm --filter server test -- src/http/public-resume-pdf.test.ts` — 13 files / 71 tests passed.
|
||||
- `dotenvx run -f .env.local -- pnpm exec vitest run packages/api/src/features/resume/public-pdf.test.ts` — 1 file / 7 tests passed.
|
||||
- `pnpm exec biome check apps/server/src/http/public-resume-pdf.ts apps/server/src/http/public-resume-pdf.test.ts packages/api/src/features/resume/public-pdf.ts packages/api/src/features/resume/public-pdf.test.ts` — passed.
|
||||
- `pnpm --filter server typecheck` and `pnpm --filter @reactive-resume/api typecheck` — passed.
|
||||
|
||||
## Note
|
||||
|
||||
The API package test script did not scope to the supplied test path and initially ran the package suite, which has two unrelated baseline failures: `src/features/ai/url-policy.test.ts` and `src/features/resume/export.test.ts` (missing required env). The target test was then run directly with `.env.local` and passed.
|
||||
|
||||
## Self-review
|
||||
|
||||
`git diff --check` passed. The diff is restricted to the public PDF service contract, HTTP response header, and their focused tests.
|
||||
@@ -12,7 +12,7 @@ Internal packages are source-consumed through `package.json` export maps that po
|
||||
|
||||
- **Node.js 24** (matches Dockerfile `ARG NODE_VERSION=24`). Use `nvm install 24 && nvm use 24` if needed.
|
||||
- **Docker** is required to run PostgreSQL. Start it with `sudo dockerd &` if the daemon isn't running.
|
||||
- **pnpm 11.1.2** is managed via corepack (`corepack enable`).
|
||||
- **pnpm 11.17.0** is managed via corepack (`corepack enable`).
|
||||
|
||||
### Codebase map
|
||||
|
||||
|
||||
+28
-22
@@ -7,6 +7,7 @@
|
||||
"dev": "tsx watch src/index.ts",
|
||||
"build": "tsdown",
|
||||
"start": "node dist/index.mjs",
|
||||
"docs:gen": "tsx src/openapi/generate-spec.ts",
|
||||
"typecheck": "tsgo --noEmit",
|
||||
"test": "vitest run --passWithNoTests",
|
||||
"test:coverage": "vitest run --coverage --passWithNoTests",
|
||||
@@ -17,48 +18,52 @@
|
||||
"#react-pdf-renderer": "@react-pdf/renderer"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/anthropic": "^4.0.21",
|
||||
"@ai-sdk/cerebras": "^3.0.14",
|
||||
"@ai-sdk/cohere": "^4.0.12",
|
||||
"@ai-sdk/deepseek": "^3.0.13",
|
||||
"@ai-sdk/fireworks": "^3.0.15",
|
||||
"@ai-sdk/google": "^4.0.24",
|
||||
"@ai-sdk/groq": "^4.0.13",
|
||||
"@ai-sdk/mistral": "^4.0.14",
|
||||
"@ai-sdk/openai": "^4.0.20",
|
||||
"@ai-sdk/openai-compatible": "^3.0.14",
|
||||
"@ai-sdk/perplexity": "^4.0.13",
|
||||
"@ai-sdk/togetherai": "^3.0.15",
|
||||
"@ai-sdk/xai": "^4.0.18",
|
||||
"@aws-sdk/client-s3": "^3.1096.0",
|
||||
"@ai-sdk/anthropic": "^4.0.24",
|
||||
"@ai-sdk/cerebras": "^3.0.17",
|
||||
"@ai-sdk/cohere": "^4.0.15",
|
||||
"@ai-sdk/deepseek": "^3.0.16",
|
||||
"@ai-sdk/fireworks": "^3.0.18",
|
||||
"@ai-sdk/google": "^4.0.28",
|
||||
"@ai-sdk/groq": "^4.0.16",
|
||||
"@ai-sdk/mistral": "^4.0.17",
|
||||
"@ai-sdk/openai": "^4.0.24",
|
||||
"@ai-sdk/openai-compatible": "^3.0.17",
|
||||
"@ai-sdk/perplexity": "^4.0.17",
|
||||
"@ai-sdk/togetherai": "^3.0.18",
|
||||
"@ai-sdk/xai": "^4.0.22",
|
||||
"@aws-sdk/client-s3": "^3.1098.0",
|
||||
"@better-auth/api-key": "^1.6.25",
|
||||
"@better-auth/drizzle-adapter": "^1.6.25",
|
||||
"@better-auth/infra": "^0.3.7",
|
||||
"@better-auth/oauth-provider": "^1.6.25",
|
||||
"@better-auth/passkey": "^1.6.25",
|
||||
"@bramus/specificity": "^2.4.2",
|
||||
"@hono/node-server": "^2.0.12",
|
||||
"@modelcontextprotocol/sdk": "^1.30.0",
|
||||
"@orpc/client": "^1.14.12",
|
||||
"@orpc/experimental-ratelimit": "^1.14.12",
|
||||
"@orpc/json-schema": "^1.14.12",
|
||||
"@orpc/openapi": "^1.14.12",
|
||||
"@orpc/server": "^1.14.12",
|
||||
"@orpc/zod": "^1.14.12",
|
||||
"@orpc/client": "^1.14.13",
|
||||
"@orpc/experimental-ratelimit": "^1.14.13",
|
||||
"@orpc/json-schema": "^1.14.13",
|
||||
"@orpc/openapi": "^1.14.13",
|
||||
"@orpc/server": "^1.14.13",
|
||||
"@orpc/zod": "^1.14.13",
|
||||
"@react-pdf/renderer": "^4.5.1",
|
||||
"@reactive-resume/api": "workspace:*",
|
||||
"@reactive-resume/auth": "workspace:*",
|
||||
"@reactive-resume/db": "workspace:*",
|
||||
"@reactive-resume/env": "workspace:*",
|
||||
"@reactive-resume/mcp": "workspace:*",
|
||||
"@reactive-resume/pdf": "workspace:*",
|
||||
"@reactive-resume/schema": "workspace:*",
|
||||
"@reactive-resume/utils": "workspace:*",
|
||||
"@sindresorhus/slugify": "^3.0.0",
|
||||
"@t3-oss/env-core": "^0.13.11",
|
||||
"@uiw/color-convert": "^2.10.3",
|
||||
"ai": "^7.0.37",
|
||||
"ai": "^7.0.42",
|
||||
"bcrypt": "^6.0.0",
|
||||
"better-auth": "1.6.25",
|
||||
"canonicalize": "^3.0.0",
|
||||
"cjk-regex": "^3.4.0",
|
||||
"css-tree": "^3.2.1",
|
||||
"deepmerge-ts": "^7.1.5",
|
||||
"drizzle-orm": "1.0.0-rc.4",
|
||||
"drizzle-zod": "1.0.0-beta.14-a36c63d",
|
||||
@@ -66,9 +71,10 @@
|
||||
"fast-json-patch": "^3.1.1",
|
||||
"hono": "^4.12.32",
|
||||
"jsonrepair": "^3.15.0",
|
||||
"node-html-parser": "^9.0.0",
|
||||
"node-html-parser": "^9.0.1",
|
||||
"nodemailer": "^9.0.3",
|
||||
"ollama-ai-provider-v2": "^4.0.1",
|
||||
"pdfjs-dist": "^6.2.108",
|
||||
"pg": "^8.22.0",
|
||||
"phosphor-icons-react-pdf": "^0.1.3",
|
||||
"react": "^19.2.8",
|
||||
|
||||
@@ -9,6 +9,7 @@ const mocks = vi.hoisted(() => ({
|
||||
handleUpload: vi.fn(),
|
||||
handleMcp: vi.fn(),
|
||||
handleResumePdfDownload: vi.fn(),
|
||||
handlePublicResumePdf: vi.fn(),
|
||||
handleMcpServerCard: vi.fn(),
|
||||
handleOAuthAuthorizationServer: vi.fn(),
|
||||
handleOAuthProtectedResource: vi.fn(),
|
||||
@@ -69,6 +70,15 @@ vi.mock("./resume-pdf", () => ({
|
||||
handleResumePdfDownload: mocks.handleResumePdfDownload,
|
||||
}));
|
||||
|
||||
vi.mock("./public-resume-pdf", () => ({
|
||||
handlePublicResumePdf: mocks.handlePublicResumePdf,
|
||||
}));
|
||||
|
||||
const transportEnv = (remoteAddress: string) =>
|
||||
({
|
||||
incoming: { socket: { remoteAddress } },
|
||||
}) as never;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
mocks.handleAuth.mockResolvedValue(new Response("auth"));
|
||||
@@ -79,6 +89,7 @@ beforeEach(() => {
|
||||
mocks.handleUpload.mockResolvedValue(new Response("upload"));
|
||||
mocks.handleMcp.mockResolvedValue(new Response("mcp"));
|
||||
mocks.handleResumePdfDownload.mockResolvedValue(new Response("pdf"));
|
||||
mocks.handlePublicResumePdf.mockResolvedValue(new Response("public-pdf"));
|
||||
mocks.handleMcpServerCard.mockReturnValue(new Response("server-card"));
|
||||
mocks.handleOAuthAuthorizationServer.mockReturnValue(new Response("oauth-authorization-server"));
|
||||
mocks.handleOAuthProtectedResource.mockReturnValue(new Response("oauth-protected-resource"));
|
||||
@@ -117,6 +128,51 @@ describe("createApp", () => {
|
||||
expect(mocks.handleWebApp).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("uses the transport address for public PDF fallback despite rotated forwarding headers", async () => {
|
||||
const { createApp } = await import("./app");
|
||||
const app = createApp();
|
||||
const first = new Request("http://localhost:3001/api/resumes/jane/resume/pdf?reason=render-data-hash", {
|
||||
headers: { "x-forwarded-for": "198.51.100.1" },
|
||||
});
|
||||
const rotated = new Request("http://localhost:3001/api/resumes/jane/resume/pdf?reason=render-data-hash", {
|
||||
headers: { "x-forwarded-for": "198.51.100.2" },
|
||||
});
|
||||
const env = transportEnv("203.0.113.9");
|
||||
|
||||
const response = await app.fetch(first, env);
|
||||
await app.fetch(rotated, env);
|
||||
|
||||
await expect(response.text()).resolves.toBe("public-pdf");
|
||||
expect(mocks.handlePublicResumePdf).toHaveBeenNthCalledWith(1, first, "jane", "resume", "203.0.113.9");
|
||||
expect(mocks.handlePublicResumePdf).toHaveBeenNthCalledWith(2, rotated, "jane", "resume", "203.0.113.9");
|
||||
expect(mocks.handleResumePdfDownload).not.toHaveBeenCalled();
|
||||
expect(mocks.serveWebDistStatic).not.toHaveBeenCalled();
|
||||
expect(mocks.handleWebApp).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("passes the transport address to RPC and OpenAPI and fails closed when it is unavailable", async () => {
|
||||
const { createApp } = await import("./app");
|
||||
const app = createApp();
|
||||
const trustedRpcRequest = new Request("http://localhost:3001/api/rpc", {
|
||||
headers: { "cf-connecting-ip": "198.51.100.1" },
|
||||
});
|
||||
const unknownRpcRequest = new Request("http://localhost:3001/api/rpc", {
|
||||
headers: { "cf-connecting-ip": "198.51.100.2" },
|
||||
});
|
||||
const trustedOpenApiRequest = new Request("http://localhost:3001/api/openapi/resumes/jane/resume/style-projection");
|
||||
const unknownOpenApiRequest = new Request("http://localhost:3001/api/openapi/resumes/jane/resume/style-projection");
|
||||
|
||||
await app.fetch(trustedRpcRequest, transportEnv("203.0.113.9"));
|
||||
await app.fetch(unknownRpcRequest);
|
||||
await app.fetch(trustedOpenApiRequest, transportEnv("203.0.113.9"));
|
||||
await app.fetch(unknownOpenApiRequest);
|
||||
|
||||
expect(mocks.handleRpc).toHaveBeenNthCalledWith(1, trustedRpcRequest, "203.0.113.9");
|
||||
expect(mocks.handleRpc).toHaveBeenNthCalledWith(2, unknownRpcRequest, "unknown");
|
||||
expect(mocks.handleOpenApi).toHaveBeenNthCalledWith(1, trustedOpenApiRequest, "203.0.113.9");
|
||||
expect(mocks.handleOpenApi).toHaveBeenNthCalledWith(2, unknownOpenApiRequest, "unknown");
|
||||
});
|
||||
|
||||
it.each([
|
||||
["GET", "/robots.txt", "robots", mocks.handleRobots],
|
||||
["HEAD", "/robots.txt", "", mocks.handleRobots],
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
import type { Http2Bindings, HttpBindings } from "@hono/node-server";
|
||||
import type { Context } from "hono";
|
||||
import { isIP } from "node:net";
|
||||
import { getConnInfo } from "@hono/node-server/conninfo";
|
||||
import { Hono } from "hono";
|
||||
import { handleMcp } from "../mcp/handler";
|
||||
import { handleOpenApi } from "../openapi/handler";
|
||||
@@ -15,18 +19,33 @@ import { handleUpload } from "../static/uploads";
|
||||
import { handleWebApp, serveWebDistStatic } from "../static/web";
|
||||
import { handleAuth, handleOAuth } from "./auth";
|
||||
import { handleHealth } from "./health";
|
||||
import { handlePublicResumePdf } from "./public-resume-pdf";
|
||||
import { handleResumePdfDownload } from "./resume-pdf";
|
||||
|
||||
export function createApp() {
|
||||
const app = new Hono();
|
||||
type ServerEnvironment = { Bindings: HttpBindings | Http2Bindings };
|
||||
|
||||
app.all("/api/rpc", (c) => handleRpc(c.req.raw));
|
||||
app.all("/api/rpc/*", (c) => handleRpc(c.req.raw));
|
||||
app.all("/api/openapi", (c) => handleOpenApi(c.req.raw));
|
||||
app.all("/api/openapi/*", (c) => handleOpenApi(c.req.raw));
|
||||
const getTrustedClient = (context: Context<ServerEnvironment>): string => {
|
||||
try {
|
||||
const address = getConnInfo(context).remote.address?.trim();
|
||||
return address && isIP(address) ? address : "unknown";
|
||||
} catch {
|
||||
return "unknown";
|
||||
}
|
||||
};
|
||||
|
||||
export function createApp() {
|
||||
const app = new Hono<ServerEnvironment>();
|
||||
|
||||
app.all("/api/rpc", (c) => handleRpc(c.req.raw, getTrustedClient(c)));
|
||||
app.all("/api/rpc/*", (c) => handleRpc(c.req.raw, getTrustedClient(c)));
|
||||
app.all("/api/openapi", (c) => handleOpenApi(c.req.raw, getTrustedClient(c)));
|
||||
app.all("/api/openapi/*", (c) => handleOpenApi(c.req.raw, getTrustedClient(c)));
|
||||
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/:username/:slug/pdf", (c) =>
|
||||
handlePublicResumePdf(c.req.raw, c.req.param("username"), c.req.param("slug"), getTrustedClient(c)),
|
||||
);
|
||||
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));
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
createPublicResumePdf: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@reactive-resume/api/features/resume/public-pdf", () => ({
|
||||
createPublicResumePdf: mocks.createPublicResumePdf,
|
||||
PUBLIC_RESUME_PDF_MISMATCH_REASONS: [
|
||||
"missing-projection",
|
||||
"format-version",
|
||||
"language-version",
|
||||
"semantic-tree-version",
|
||||
"registry-fingerprint",
|
||||
"adapter-fingerprint",
|
||||
"render-data-hash",
|
||||
"invalid-projection",
|
||||
],
|
||||
}));
|
||||
|
||||
const { handlePublicResumePdf } = await import("./public-resume-pdf");
|
||||
const trustedClient = "203.0.113.9";
|
||||
|
||||
describe("handlePublicResumePdf", () => {
|
||||
beforeEach(() => vi.clearAllMocks());
|
||||
|
||||
it("returns the authorized fallback PDF with strict mismatch metadata and cache policy", async () => {
|
||||
const body = new File(["%PDF"], "Ada_Lovelace.pdf", { type: "text/plain" });
|
||||
mocks.createPublicResumePdf.mockResolvedValueOnce({
|
||||
body,
|
||||
filename: "Ada_Lovelace.pdf",
|
||||
});
|
||||
const registry = "0".repeat(64);
|
||||
const adapter = "1".repeat(64);
|
||||
const request = new Request(
|
||||
`https://example.com/api/resumes/jane/resume/pdf?reason=render-data-hash®istryFingerprint=${registry}&adapterFingerprint=${adapter}`,
|
||||
{ headers: { "x-forwarded-for": "203.0.113.7" } },
|
||||
);
|
||||
|
||||
const response = await handlePublicResumePdf(request, "jane", "resume", trustedClient);
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.headers.get("Content-Type")).toBe("application/pdf");
|
||||
expect(response.headers.get("Content-Disposition")).toBe('inline; filename="Ada_Lovelace.pdf"');
|
||||
expect(response.headers.get("Cache-Control")).toBe("private, no-store");
|
||||
expect(response.headers.get("X-Content-Type-Options")).toBe("nosniff");
|
||||
expect(await response.text()).toBe("%PDF");
|
||||
expect(mocks.createPublicResumePdf).toHaveBeenCalledWith({
|
||||
username: "jane",
|
||||
slug: "resume",
|
||||
requestHeaders: request.headers,
|
||||
trustedClient,
|
||||
mismatchReason: "render-data-hash",
|
||||
clientRegistryFingerprint: registry,
|
||||
clientAdapterFingerprint: adapter,
|
||||
});
|
||||
});
|
||||
|
||||
it("defaults a missing mismatch reason and keeps password/private responses uncacheable", async () => {
|
||||
mocks.createPublicResumePdf.mockResolvedValueOnce({
|
||||
body: new File(["%PDF"], "resume.pdf", { type: "application/pdf" }),
|
||||
filename: "resume.pdf",
|
||||
});
|
||||
const request = new Request("https://example.com/api/resumes/jane/resume/pdf");
|
||||
|
||||
const response = await handlePublicResumePdf(request, "jane", "resume", trustedClient);
|
||||
|
||||
expect(response.headers.get("Cache-Control")).toBe("private, no-store");
|
||||
expect(mocks.createPublicResumePdf).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ mismatchReason: "missing-projection" }),
|
||||
);
|
||||
});
|
||||
|
||||
it.each([
|
||||
[{ code: "BAD_REQUEST" }, 400],
|
||||
[{ code: "NEED_PASSWORD" }, 401],
|
||||
[{ code: "NOT_FOUND" }, 404],
|
||||
[{ code: "RATE_LIMIT_EXCEEDED" }, 429],
|
||||
[{ code: "INTERNAL_SERVER_ERROR" }, 500],
|
||||
])("maps controlled API errors without caching the response", async (error, status) => {
|
||||
mocks.createPublicResumePdf.mockRejectedValueOnce(error);
|
||||
|
||||
const response = await handlePublicResumePdf(
|
||||
new Request("https://example.com/api/resumes/jane/resume/pdf"),
|
||||
"jane",
|
||||
"resume",
|
||||
trustedClient,
|
||||
);
|
||||
|
||||
expect(response.status).toBe(status);
|
||||
expect(response.headers.get("Cache-Control")).toBe("private, no-store");
|
||||
});
|
||||
|
||||
it.each(["?reason=private-source", "?registryFingerprint=unsafe", "?adapterFingerprint=unsafe"])(
|
||||
"rejects invalid fallback metadata before the API service",
|
||||
async (search) => {
|
||||
const response = await handlePublicResumePdf(
|
||||
new Request(`https://example.com/api/resumes/jane/resume/pdf${search}`),
|
||||
"jane",
|
||||
"resume",
|
||||
trustedClient,
|
||||
);
|
||||
|
||||
expect(response.status).toBe(400);
|
||||
expect(response.headers.get("Cache-Control")).toBe("private, no-store");
|
||||
expect(mocks.createPublicResumePdf).not.toHaveBeenCalled();
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -0,0 +1,72 @@
|
||||
import type { PublicResumePdfMismatchReason } from "@reactive-resume/api/features/resume/public-pdf";
|
||||
import {
|
||||
createPublicResumePdf,
|
||||
PUBLIC_RESUME_PDF_MISMATCH_REASONS,
|
||||
} from "@reactive-resume/api/features/resume/public-pdf";
|
||||
|
||||
const noStoreResponse = (body: string, status: number) =>
|
||||
new Response(body, { status, headers: { "Cache-Control": "private, no-store" } });
|
||||
|
||||
const errorStatus = (error: unknown): number => {
|
||||
const code = typeof error === "object" && error && "code" in error ? (error as { code?: unknown }).code : undefined;
|
||||
if (code === "BAD_REQUEST") return 400;
|
||||
if (code === "NEED_PASSWORD") return 401;
|
||||
if (code === "NOT_FOUND") return 404;
|
||||
if (code === "RATE_LIMIT_EXCEEDED") return 429;
|
||||
return 500;
|
||||
};
|
||||
|
||||
const fingerprint = (value: string | null): string | undefined => {
|
||||
if (value === null) return;
|
||||
return /^[a-f0-9]{64}$/.test(value) ? value : undefined;
|
||||
};
|
||||
|
||||
export async function handlePublicResumePdf(
|
||||
request: Request,
|
||||
username: string,
|
||||
slug: string,
|
||||
trustedClient = "unknown",
|
||||
): Promise<Response> {
|
||||
const searchParams = new URL(request.url).searchParams;
|
||||
const rawReason = searchParams.get("reason") ?? "missing-projection";
|
||||
if (!PUBLIC_RESUME_PDF_MISMATCH_REASONS.includes(rawReason as PublicResumePdfMismatchReason)) {
|
||||
return noStoreResponse("Invalid fallback metadata", 400);
|
||||
}
|
||||
const rawRegistryFingerprint = searchParams.get("registryFingerprint");
|
||||
const rawAdapterFingerprint = searchParams.get("adapterFingerprint");
|
||||
const clientRegistryFingerprint = fingerprint(rawRegistryFingerprint);
|
||||
const clientAdapterFingerprint = fingerprint(rawAdapterFingerprint);
|
||||
if (
|
||||
(rawRegistryFingerprint !== null && clientRegistryFingerprint === undefined) ||
|
||||
(rawAdapterFingerprint !== null && clientAdapterFingerprint === undefined)
|
||||
) {
|
||||
return noStoreResponse("Invalid fallback metadata", 400);
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await createPublicResumePdf({
|
||||
username,
|
||||
slug,
|
||||
requestHeaders: request.headers,
|
||||
trustedClient,
|
||||
mismatchReason: rawReason as PublicResumePdfMismatchReason,
|
||||
...(clientRegistryFingerprint ? { clientRegistryFingerprint } : {}),
|
||||
...(clientAdapterFingerprint ? { clientAdapterFingerprint } : {}),
|
||||
});
|
||||
|
||||
return new Response(result.body, {
|
||||
headers: {
|
||||
"Content-Type": "application/pdf",
|
||||
"Content-Disposition": `inline; filename="${result.filename.replaceAll('"', "")}"`,
|
||||
"Cache-Control": "private, no-store",
|
||||
"X-Content-Type-Options": "nosniff",
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
const status = errorStatus(error);
|
||||
return noStoreResponse(
|
||||
status === 500 ? "Failed to generate public resume PDF" : "Public resume PDF unavailable",
|
||||
status,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { mkdtemp, readFile, rm } from "node:fs/promises";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { afterEach, expect, it } from "vitest";
|
||||
import { generateOpenApiDocumentation } from "./generate-spec";
|
||||
|
||||
const temporaryDirectories: string[] = [];
|
||||
const committedSpec = new URL("../../../../docs/spec.json", import.meta.url);
|
||||
|
||||
afterEach(async () => {
|
||||
await Promise.all(temporaryDirectories.splice(0).map((path) => rm(path, { recursive: true, force: true })));
|
||||
});
|
||||
|
||||
it("keeps the committed OpenAPI specification synchronized without rewriting it", async () => {
|
||||
const directory = await mkdtemp(join(tmpdir(), "openapi-documentation-"));
|
||||
temporaryDirectories.push(directory);
|
||||
const firstTarget = join(directory, "first.json");
|
||||
const secondTarget = join(directory, "second.json");
|
||||
const before = await readFile(committedSpec, "utf8");
|
||||
|
||||
await generateOpenApiDocumentation(firstTarget);
|
||||
await generateOpenApiDocumentation(secondTarget);
|
||||
|
||||
expect(await readFile(firstTarget, "utf8")).toBe(before);
|
||||
expect(await readFile(secondTarget, "utf8")).toBe(before);
|
||||
expect(await readFile(committedSpec, "utf8")).toBe(before);
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
import { readFile, writeFile } from "node:fs/promises";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
export async function generateOpenApiDocumentation(
|
||||
target = fileURLToPath(new URL("../../../../docs/spec.json", import.meta.url)),
|
||||
) {
|
||||
const packageJson = JSON.parse(await readFile(new URL("../../../../package.json", import.meta.url), "utf8")) as {
|
||||
version: string;
|
||||
};
|
||||
process.env.APP_URL ??= "https://rxresu.me";
|
||||
process.env.DATABASE_URL ??= "postgresql://localhost/reactive_resume_docs";
|
||||
process.env.AUTH_SECRET ??= "documentation-generation-isolated-process-only";
|
||||
const { generateOpenApiSpec } = await import("./generator");
|
||||
const spec = await generateOpenApiSpec({ appUrl: "https://rxresu.me", version: packageJson.version });
|
||||
await writeFile(target, `${JSON.stringify(spec, null, "\t")}\n`);
|
||||
}
|
||||
|
||||
if (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {
|
||||
await generateOpenApiDocumentation(process.argv[2]);
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import z from "zod";
|
||||
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
||||
import { createResumeDataJsonSchema } from "@reactive-resume/schema/resume/json-schema";
|
||||
|
||||
type GeneratedSpecView = {
|
||||
components?: { schemas?: Record<string, unknown> };
|
||||
paths?: Record<
|
||||
string,
|
||||
Record<
|
||||
string,
|
||||
{
|
||||
requestBody?: {
|
||||
content?: Record<string, { schema?: unknown }>;
|
||||
};
|
||||
}
|
||||
>
|
||||
>;
|
||||
};
|
||||
|
||||
async function generateSpec() {
|
||||
process.env.APP_URL ??= "https://rxresu.me";
|
||||
process.env.DATABASE_URL ??= "postgresql://localhost/reactive_resume_test";
|
||||
process.env.AUTH_SECRET ??= "openapi-generator-test-process-only";
|
||||
const { generateOpenApiSpec } = await import("./generator");
|
||||
return generateOpenApiSpec({
|
||||
appUrl: "https://rxresu.me",
|
||||
version: "9.8.7",
|
||||
});
|
||||
}
|
||||
|
||||
function getRequestSchema(spec: GeneratedSpecView, path: string, method: string) {
|
||||
return spec.paths?.[path]?.[method]?.requestBody?.content?.["application/json"]?.schema;
|
||||
}
|
||||
|
||||
function containsImpossibleSchema(value: unknown): boolean {
|
||||
if (Array.isArray(value)) return value.some(containsImpossibleSchema);
|
||||
if (typeof value !== "object" || value === null) return false;
|
||||
const object = value as Record<string, unknown>;
|
||||
const negated = object.not;
|
||||
if (typeof negated === "object" && negated !== null && Object.keys(negated).length === 0) {
|
||||
return true;
|
||||
}
|
||||
return Object.values(object).some(containsImpossibleSchema);
|
||||
}
|
||||
|
||||
function findImpossibleRequestSchemas(spec: GeneratedSpecView) {
|
||||
const impossibleRequests: string[] = [];
|
||||
for (const [path, operations] of Object.entries(spec.paths ?? {})) {
|
||||
for (const [method, operation] of Object.entries(operations)) {
|
||||
for (const [mediaType, content] of Object.entries(operation.requestBody?.content ?? {})) {
|
||||
if (containsImpossibleSchema(content.schema)) {
|
||||
impossibleRequests.push(`${method.toUpperCase()} ${path} (${mediaType})`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return impossibleRequests;
|
||||
}
|
||||
|
||||
describe("generateOpenApiSpec", () => {
|
||||
it("uses caller-provided application URL and version", async () => {
|
||||
const spec = await generateSpec();
|
||||
|
||||
expect(spec.info).toMatchObject({
|
||||
title: "Reactive Resume",
|
||||
version: "9.8.7",
|
||||
});
|
||||
expect(spec.servers).toEqual([{ url: "https://rxresu.me/api/openapi" }]);
|
||||
expect(spec.externalDocs).toEqual({
|
||||
url: "https://docs.rxresu.me",
|
||||
description: "Reactive Resume Documentation",
|
||||
});
|
||||
}, 15_000);
|
||||
|
||||
it("uses the canonical input-side ResumeData schema in update requests", async () => {
|
||||
const spec = (await generateSpec()) as GeneratedSpecView;
|
||||
const { $schema: _dialect, ...canonicalInputSchema } = createResumeDataJsonSchema();
|
||||
|
||||
expect(spec.components?.schemas?.ResumeData).toEqual(canonicalInputSchema);
|
||||
expect(getRequestSchema(spec, "/resumes/{id}", "put")).toMatchObject({
|
||||
properties: {
|
||||
data: { $ref: "#/components/schemas/ResumeData" },
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("publishes the custom-section type and item correlation", async () => {
|
||||
const spec = (await generateSpec()) as GeneratedSpecView;
|
||||
const schema = z.fromJSONSchema(spec.components?.schemas?.ResumeData as Parameters<typeof z.fromJSONSchema>[0]);
|
||||
const mismatched = {
|
||||
...defaultResumeData,
|
||||
customSections: [
|
||||
{
|
||||
id: "custom-experience",
|
||||
type: "experience",
|
||||
title: "Experience",
|
||||
icon: "",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [{ id: "summary-item", hidden: false, content: "<p>Not an experience item</p>" }],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
expect(schema.safeParse(mismatched).success).toBe(false);
|
||||
});
|
||||
|
||||
it("does not publish impossible request schemas", async () => {
|
||||
const spec = (await generateSpec()) as GeneratedSpecView;
|
||||
|
||||
expect(findImpossibleRequestSchemas(spec)).toEqual([]);
|
||||
});
|
||||
|
||||
it("checks every request body media type for impossible schemas", () => {
|
||||
const spec: GeneratedSpecView = {
|
||||
paths: {
|
||||
"/documents": {
|
||||
post: {
|
||||
requestBody: {
|
||||
content: {
|
||||
"application/json": { schema: { type: "object" } },
|
||||
"multipart/form-data": { schema: { not: {} } },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
expect(findImpossibleRequestSchemas(spec)).toEqual(["POST /documents (multipart/form-data)"]);
|
||||
});
|
||||
|
||||
it("documents imported data as an accepted ResumeData input", async () => {
|
||||
const spec = (await generateSpec()) as GeneratedSpecView;
|
||||
|
||||
expect(getRequestSchema(spec, "/resumes/import", "post")).toEqual({
|
||||
type: "object",
|
||||
properties: {
|
||||
data: { $ref: "#/components/schemas/ResumeData" },
|
||||
},
|
||||
required: ["data"],
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,80 @@
|
||||
import { OpenAPIGenerator } from "@orpc/openapi";
|
||||
import { JSON_SCHEMA_INPUT_REGISTRY, ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
||||
import { downloadResumePdfProcedure } from "@reactive-resume/api/features/resume/export";
|
||||
import router from "@reactive-resume/api/routers";
|
||||
import { resumeDataSchema } from "@reactive-resume/schema/resume/data";
|
||||
import { createResumeDataJsonSchema } from "@reactive-resume/schema/resume/json-schema";
|
||||
|
||||
export const openAPIRouter = {
|
||||
...router,
|
||||
resume: {
|
||||
...router.resume,
|
||||
downloadPdf: downloadResumePdfProcedure,
|
||||
},
|
||||
};
|
||||
|
||||
const { $schema: _dialect, ...resumeDataInputSchema } = createResumeDataJsonSchema();
|
||||
type ResumeDataInputJsonSchema = Parameters<typeof JSON_SCHEMA_INPUT_REGISTRY.add<typeof resumeDataSchema>>[1];
|
||||
JSON_SCHEMA_INPUT_REGISTRY.add(resumeDataSchema, resumeDataInputSchema as unknown as ResumeDataInputJsonSchema);
|
||||
const importResumeInputSchema = openAPIRouter.resume.import["~orpc"].inputSchema;
|
||||
if (importResumeInputSchema) {
|
||||
JSON_SCHEMA_INPUT_REGISTRY.add(importResumeInputSchema, {
|
||||
type: "object",
|
||||
properties: {
|
||||
data: { $ref: "#/components/schemas/ResumeData" },
|
||||
},
|
||||
required: ["data"],
|
||||
});
|
||||
}
|
||||
|
||||
const openAPIGenerator = new OpenAPIGenerator({
|
||||
schemaConverters: [
|
||||
new ZodToJsonSchemaConverter({
|
||||
interceptors: [
|
||||
({ options, next }) => {
|
||||
const [required, schema] = next();
|
||||
const impossible =
|
||||
Object.keys(schema).length === 1 &&
|
||||
typeof schema.not === "object" &&
|
||||
schema.not !== null &&
|
||||
Object.keys(schema.not).length === 0;
|
||||
return options.strategy === "input" && impossible ? [required, {}] : [required, schema];
|
||||
},
|
||||
],
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
type GenerateOpenApiSpecOptions = {
|
||||
appUrl: string;
|
||||
version: string;
|
||||
};
|
||||
|
||||
export async function generateOpenApiSpec({ appUrl, version }: GenerateOpenApiSpecOptions) {
|
||||
return await openAPIGenerator.generate(openAPIRouter, {
|
||||
info: {
|
||||
title: "Reactive Resume",
|
||||
version,
|
||||
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" },
|
||||
},
|
||||
servers: [{ url: `${appUrl}/api/openapi` }],
|
||||
externalDocs: { url: "https://docs.rxresu.me", description: "Reactive Resume Documentation" },
|
||||
commonSchemas: {
|
||||
ResumeData: { schema: resumeDataSchema, strategy: "input" },
|
||||
},
|
||||
components: {
|
||||
securitySchemes: {
|
||||
apiKey: {
|
||||
type: "apiKey",
|
||||
name: "x-api-key",
|
||||
in: "header",
|
||||
description: "The API key to authenticate requests.",
|
||||
},
|
||||
},
|
||||
},
|
||||
security: [{ apiKey: [] }],
|
||||
filter: ({ contract }) => !contract["~orpc"].route.tags?.includes("Internal"),
|
||||
});
|
||||
}
|
||||
@@ -1,24 +1,13 @@
|
||||
import { SmartCoercionPlugin } from "@orpc/json-schema";
|
||||
import { OpenAPIGenerator } from "@orpc/openapi";
|
||||
import { OpenAPIHandler } from "@orpc/openapi/fetch";
|
||||
import { onError } from "@orpc/server";
|
||||
import { BatchHandlerPlugin, RequestHeadersPlugin, StrictGetMethodPlugin } from "@orpc/server/plugins";
|
||||
import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
|
||||
import { downloadResumePdfProcedure } from "@reactive-resume/api/features/resume/export";
|
||||
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";
|
||||
|
||||
const openAPIRouter = {
|
||||
...router,
|
||||
resume: {
|
||||
...router.resume,
|
||||
downloadPdf: downloadResumePdfProcedure,
|
||||
},
|
||||
};
|
||||
import { generateOpenApiSpec, openAPIRouter } from "./generator";
|
||||
|
||||
const openAPIHandler = new OpenAPIHandler(openAPIRouter, {
|
||||
plugins: [
|
||||
@@ -36,46 +25,15 @@ const openAPIHandler = new OpenAPIHandler(openAPIRouter, {
|
||||
],
|
||||
});
|
||||
|
||||
const openAPIGenerator = new OpenAPIGenerator({
|
||||
schemaConverters: [new ZodToJsonSchemaConverter()],
|
||||
});
|
||||
|
||||
export async function handleOpenApi(request: Request) {
|
||||
export async function handleOpenApi(request: Request, trustedClient = "unknown") {
|
||||
if (request.method === "GET" && (request.url.endsWith("/spec.json") || request.url.endsWith("/spec"))) {
|
||||
const spec = await openAPIGenerator.generate(openAPIRouter, {
|
||||
info: {
|
||||
title: "Reactive Resume",
|
||||
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" },
|
||||
},
|
||||
servers: [{ url: `${env.APP_URL}/api/openapi` }],
|
||||
externalDocs: { url: "https://docs.rxresu.me", description: "Reactive Resume Documentation" },
|
||||
commonSchemas: {
|
||||
ResumeData: { schema: resumeDataSchema },
|
||||
},
|
||||
components: {
|
||||
securitySchemes: {
|
||||
apiKey: {
|
||||
type: "apiKey",
|
||||
name: "x-api-key",
|
||||
in: "header",
|
||||
description: "The API key to authenticate requests.",
|
||||
},
|
||||
},
|
||||
},
|
||||
security: [{ apiKey: [] }],
|
||||
filter: ({ contract }) => !contract["~orpc"].route.tags?.includes("Internal"),
|
||||
});
|
||||
|
||||
return Response.json(spec);
|
||||
return Response.json(await generateOpenApiSpec({ appUrl: env.APP_URL, version: appVersion }));
|
||||
}
|
||||
|
||||
const resHeaders = new Headers();
|
||||
const { response } = await openAPIHandler.handle(request, {
|
||||
prefix: "/api/openapi",
|
||||
context: { locale: getRequestLocale(request), reqHeaders: request.headers, resHeaders },
|
||||
context: { locale: getRequestLocale(request), reqHeaders: request.headers, resHeaders, trustedClient },
|
||||
});
|
||||
|
||||
if (!response) return new Response("NOT_FOUND", { status: 404 });
|
||||
|
||||
@@ -3,6 +3,7 @@ import { RPCHandler } from "@orpc/server/fetch";
|
||||
import { BatchHandlerPlugin, RequestHeadersPlugin, StrictGetMethodPlugin } from "@orpc/server/plugins";
|
||||
import router from "@reactive-resume/api/routers";
|
||||
import { mergeResponseHeaders } from "../http/headers";
|
||||
import { stylesheetPreflightRunner } from "../services/stylesheet-preflight";
|
||||
import { getRequestLocale } from "./locale";
|
||||
|
||||
const rpcHandler = new RPCHandler(router, {
|
||||
@@ -14,11 +15,17 @@ const rpcHandler = new RPCHandler(router, {
|
||||
],
|
||||
});
|
||||
|
||||
export async function handleRpc(request: Request) {
|
||||
export async function handleRpc(request: Request, trustedClient = "unknown") {
|
||||
const resHeaders = new Headers();
|
||||
const { response } = await rpcHandler.handle(request, {
|
||||
prefix: "/api/rpc",
|
||||
context: { locale: getRequestLocale(request), reqHeaders: request.headers, resHeaders },
|
||||
context: {
|
||||
locale: getRequestLocale(request),
|
||||
reqHeaders: request.headers,
|
||||
resHeaders,
|
||||
trustedClient,
|
||||
stylesheetPreflightRunner,
|
||||
},
|
||||
});
|
||||
|
||||
if (!response) return new Response("NOT_FOUND", { status: 404 });
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
||||
import { createStylesheetPreflightRunner, STYLESHEET_PREFLIGHT_LIMITS } from "./stylesheet-preflight";
|
||||
|
||||
const validStylesheet = {
|
||||
languageVersion: 1,
|
||||
text: "@version 1;",
|
||||
} as const;
|
||||
|
||||
const input = {
|
||||
data: defaultResumeData,
|
||||
template: defaultResumeData.metadata.template,
|
||||
stylesheet: validStylesheet,
|
||||
} as const;
|
||||
|
||||
const memoryExhaustionWorker = new URL(
|
||||
`data:text/javascript,${encodeURIComponent(`
|
||||
const retained = [];
|
||||
while (true) {
|
||||
const batch = Array.from({ length: 100_000 }, (_, index) => ({ batch: retained.length, index }));
|
||||
retained.push(batch);
|
||||
}
|
||||
`)}`,
|
||||
);
|
||||
|
||||
const failedWorker = new URL(
|
||||
`data:text/javascript,${encodeURIComponent('throw new Error("sensitive worker details");')}`,
|
||||
);
|
||||
|
||||
const delayedSuccessfulWorker = new URL(
|
||||
`data:text/javascript,${encodeURIComponent(`
|
||||
import { parentPort, workerData } from "node:worker_threads";
|
||||
parentPort.postMessage({ type: "ready" });
|
||||
setTimeout(() => {
|
||||
parentPort.postMessage({
|
||||
ok: true,
|
||||
pageCount: 1,
|
||||
byteCount: Number(workerData.input.data.basics.name),
|
||||
diagnostics: [],
|
||||
});
|
||||
}, 300);
|
||||
`)}`,
|
||||
);
|
||||
|
||||
const delayedReadyWorker = new URL(
|
||||
`data:text/javascript,${encodeURIComponent(`
|
||||
import { parentPort } from "node:worker_threads";
|
||||
setTimeout(() => {
|
||||
parentPort.postMessage({ type: "ready" });
|
||||
setTimeout(() => {
|
||||
parentPort.postMessage({
|
||||
ok: true,
|
||||
pageCount: 1,
|
||||
byteCount: 1,
|
||||
diagnostics: [],
|
||||
});
|
||||
}, 10);
|
||||
}, 50);
|
||||
`)}`,
|
||||
);
|
||||
|
||||
const neverCompletesWorker = new URL(
|
||||
`data:text/javascript,${encodeURIComponent(`
|
||||
import { parentPort } from "node:worker_threads";
|
||||
parentPort.postMessage({ type: "ready" });
|
||||
setInterval(() => {}, 1_000);
|
||||
`)}`,
|
||||
);
|
||||
|
||||
const synchronousFailureWorker = new URL("https://example.com/stylesheet-preflight.mjs");
|
||||
|
||||
const numberedInput = (number: number) => ({
|
||||
...input,
|
||||
data: {
|
||||
...input.data,
|
||||
basics: {
|
||||
...input.data.basics,
|
||||
name: String(number),
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const invalidInput = () => {
|
||||
const data = structuredClone(defaultResumeData);
|
||||
data.customSections = [
|
||||
{
|
||||
id: "custom-experience",
|
||||
type: "experience",
|
||||
title: "Experience",
|
||||
icon: "",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [{ id: "summary-shaped-item", hidden: false, content: "<p>Missing company</p>" }],
|
||||
} as never,
|
||||
];
|
||||
return { ...input, data };
|
||||
};
|
||||
|
||||
describe("stylesheet PDF preflight worker", () => {
|
||||
it("keeps the production resource policy fixed and immutable", () => {
|
||||
expect(STYLESHEET_PREFLIGHT_LIMITS).toEqual({
|
||||
timeoutMs: 5_000,
|
||||
maxPages: 20,
|
||||
maxBytes: 10_000_000,
|
||||
maxPageWidthPt: 2_000,
|
||||
maxPageHeightPt: 20_000,
|
||||
maxPageAreaPt2: 20_000_000,
|
||||
maxOldGenerationMb: 256,
|
||||
maxConcurrentWorkers: 1,
|
||||
maxQueuedRequests: 32,
|
||||
});
|
||||
expect(Object.isFrozen(STYLESHEET_PREFLIGHT_LIMITS)).toBe(true);
|
||||
});
|
||||
|
||||
it("accepts a bounded candidate render in an isolated worker", async () => {
|
||||
const runner = createStylesheetPreflightRunner({ timeoutMs: 15_000 });
|
||||
|
||||
const result = await runner.run(input);
|
||||
|
||||
expect(result).toEqual(
|
||||
expect.objectContaining({
|
||||
ok: true,
|
||||
pageCount: 1,
|
||||
byteCount: expect.any(Number),
|
||||
}),
|
||||
);
|
||||
if (!result.ok) throw new Error(`Expected successful preflight, received ${result.code}.`);
|
||||
expect(result.byteCount).toBeGreaterThan(0);
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
}, 45_000);
|
||||
|
||||
it("preserves structured resume-data failures across the worker boundary", async () => {
|
||||
const runner = createStylesheetPreflightRunner({ timeoutMs: 15_000 });
|
||||
|
||||
const result = runner.run(invalidInput());
|
||||
|
||||
await expect(result).rejects.toMatchObject({
|
||||
name: "ZodError",
|
||||
issues: expect.arrayContaining([expect.objectContaining({ path: ["customSections", 0, "items", 0, "company"] })]),
|
||||
});
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
expect(runner.queuedPreflightCount).toBe(0);
|
||||
}, 20_000);
|
||||
|
||||
it("terminates a worker when the render exceeds its deadline", async () => {
|
||||
const runner = createStylesheetPreflightRunner({ timeoutMs: 1 }, neverCompletesWorker);
|
||||
|
||||
const result = await runner.run(input);
|
||||
|
||||
expect(result).toEqual(expect.objectContaining({ ok: false, code: "STYLESHEET_PREFLIGHT_TIMEOUT" }));
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
expect(runner.queuedPreflightCount).toBe(0);
|
||||
});
|
||||
|
||||
it("starts the authored render deadline after the worker runtime is ready", async () => {
|
||||
const runner = createStylesheetPreflightRunner({ timeoutMs: 20 }, delayedReadyWorker);
|
||||
|
||||
await expect(runner.run(input)).resolves.toEqual(expect.objectContaining({ ok: true, pageCount: 1 }));
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
});
|
||||
|
||||
it("returns deterministic output byte and page limit codes", async () => {
|
||||
const byteRunner = createStylesheetPreflightRunner({ maxBytes: 16 });
|
||||
const pageRunner = createStylesheetPreflightRunner({ maxPages: 0 });
|
||||
|
||||
await expect(byteRunner.run(input)).resolves.toEqual(
|
||||
expect.objectContaining({ ok: false, code: "STYLESHEET_PREFLIGHT_BYTE_LIMIT" }),
|
||||
);
|
||||
await expect(pageRunner.run(input)).resolves.toEqual(
|
||||
expect.objectContaining({ ok: false, code: "STYLESHEET_PREFLIGHT_PAGE_LIMIT" }),
|
||||
);
|
||||
expect(byteRunner.activeWorkerCount).toBe(0);
|
||||
expect(pageRunner.activeWorkerCount).toBe(0);
|
||||
}, 30_000);
|
||||
|
||||
it("maps worker heap exhaustion to a controlled memory-limit result", async () => {
|
||||
const runner = createStylesheetPreflightRunner(
|
||||
{ maxOldGenerationMb: 8, timeoutMs: 10_000 },
|
||||
memoryExhaustionWorker,
|
||||
);
|
||||
|
||||
const result = await runner.run(input);
|
||||
|
||||
expect(result).toEqual(expect.objectContaining({ ok: false, code: "STYLESHEET_PREFLIGHT_MEMORY_LIMIT" }));
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
}, 15_000);
|
||||
|
||||
it("does not expose internal errors from a failed worker", async () => {
|
||||
const runner = createStylesheetPreflightRunner({}, failedWorker);
|
||||
|
||||
const result = await runner.run(input);
|
||||
|
||||
expect(result).toEqual({
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_WORKER_FAILED",
|
||||
message: "The PDF preflight worker failed.",
|
||||
diagnostics: [],
|
||||
});
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
expect(runner.queuedPreflightCount).toBe(0);
|
||||
});
|
||||
|
||||
it("bounds concurrent workers and queued requests without charging queue time to the worker deadline", async () => {
|
||||
const runner = createStylesheetPreflightRunner(
|
||||
{
|
||||
timeoutMs: 500,
|
||||
maxConcurrentWorkers: 1,
|
||||
maxQueuedRequests: 2,
|
||||
},
|
||||
delayedSuccessfulWorker,
|
||||
);
|
||||
const completionOrder: number[] = [];
|
||||
const accepted = [1, 2, 3].map((number) =>
|
||||
runner.run(numberedInput(number)).then((result) => {
|
||||
if (result.ok) completionOrder.push(result.byteCount);
|
||||
return result;
|
||||
}),
|
||||
);
|
||||
const rejected = runner.run(numberedInput(4));
|
||||
|
||||
expect(runner.activeWorkerCount).toBe(1);
|
||||
expect(runner.queuedPreflightCount).toBe(2);
|
||||
await expect(rejected).resolves.toEqual(
|
||||
expect.objectContaining({
|
||||
code: "STYLESHEET_PREFLIGHT_WORKER_FAILED",
|
||||
message: "The PDF preflight queue is full.",
|
||||
}),
|
||||
);
|
||||
const results = await Promise.all(accepted);
|
||||
|
||||
expect(results.every((result) => result.ok)).toBe(true);
|
||||
expect(completionOrder).toEqual([1, 2, 3]);
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
expect(runner.queuedPreflightCount).toBe(0);
|
||||
}, 5_000);
|
||||
|
||||
it("does not leak a slot when the worker constructor throws synchronously", async () => {
|
||||
const runner = createStylesheetPreflightRunner({}, synchronousFailureWorker);
|
||||
|
||||
await expect(runner.run(input)).resolves.toEqual(
|
||||
expect.objectContaining({ ok: false, code: "STYLESHEET_PREFLIGHT_WORKER_FAILED" }),
|
||||
);
|
||||
expect(runner.activeWorkerCount).toBe(0);
|
||||
expect(runner.queuedPreflightCount).toBe(0);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,225 @@
|
||||
import type {
|
||||
PdfPreflightFailure,
|
||||
PdfPreflightResult,
|
||||
StylesheetPreflightInput,
|
||||
StylesheetPreflightRunner,
|
||||
} from "@reactive-resume/pdf/server";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { Worker } from "node:worker_threads";
|
||||
import { STYLESHEET_PREFLIGHT_LIMITS } from "@reactive-resume/pdf/preflight-reference";
|
||||
|
||||
export { STYLESHEET_PREFLIGHT_LIMITS } from "@reactive-resume/pdf/preflight-reference";
|
||||
|
||||
type StylesheetPreflightLimits = {
|
||||
timeoutMs: number;
|
||||
maxPages: number;
|
||||
maxBytes: number;
|
||||
maxPageWidthPt: number;
|
||||
maxPageHeightPt: number;
|
||||
maxPageAreaPt2: number;
|
||||
maxOldGenerationMb: number;
|
||||
maxConcurrentWorkers: number;
|
||||
maxQueuedRequests: number;
|
||||
};
|
||||
|
||||
const SOURCE_WORKER_LOADER_HEAP_MB = 256;
|
||||
const SOURCE_WORKER_STARTUP_TIMEOUT_MS = 30_000;
|
||||
const WORKER_STARTUP_TIMEOUT_MS = 15_000;
|
||||
|
||||
type SerializedPreflightCause = {
|
||||
name: string;
|
||||
message: string;
|
||||
issues: readonly unknown[];
|
||||
};
|
||||
|
||||
type StylesheetPreflightWorkerMessage =
|
||||
| PdfPreflightResult
|
||||
| { type: "ready" }
|
||||
| { type: "preflight_error"; cause: SerializedPreflightCause };
|
||||
|
||||
export type NodeStylesheetPreflightRunner = StylesheetPreflightRunner & {
|
||||
readonly activeWorkerCount: number;
|
||||
readonly queuedPreflightCount: number;
|
||||
};
|
||||
|
||||
const failure = (code: PdfPreflightFailure["code"], message: string): PdfPreflightFailure => ({
|
||||
ok: false,
|
||||
code,
|
||||
message,
|
||||
diagnostics: [],
|
||||
});
|
||||
|
||||
const workerFailure = (error: Error): PdfPreflightFailure => {
|
||||
const code = (error as NodeJS.ErrnoException).code;
|
||||
return code === "ERR_WORKER_OUT_OF_MEMORY" || /heap out of memory/i.test(error.message)
|
||||
? failure("STYLESHEET_PREFLIGHT_MEMORY_LIMIT", "The PDF preflight worker exceeded its memory limit.")
|
||||
: failure("STYLESHEET_PREFLIGHT_WORKER_FAILED", "The PDF preflight worker failed.");
|
||||
};
|
||||
|
||||
const sourceWorkerExecArgv = () => {
|
||||
const importIndex = process.execArgv.findIndex(
|
||||
(argument, index, arguments_) =>
|
||||
(argument === "--import" && arguments_[index + 1]?.includes("tsx")) ||
|
||||
(argument.startsWith("--import=") && argument.includes("tsx")),
|
||||
);
|
||||
const inherited = process.execArgv[importIndex];
|
||||
if (inherited?.startsWith("--import=")) return [inherited];
|
||||
if (inherited === "--import") return [inherited, process.execArgv[importIndex + 1] as string];
|
||||
return ["--import", import.meta.resolve("tsx")];
|
||||
};
|
||||
|
||||
const workerLocation = () => {
|
||||
const source = import.meta.url.endsWith(".ts");
|
||||
return {
|
||||
source,
|
||||
url: source
|
||||
? new URL("../workers/stylesheet-preflight.ts", import.meta.url)
|
||||
: new URL("./stylesheet-preflight-worker.mjs", import.meta.url),
|
||||
...(source
|
||||
? {
|
||||
execArgv: sourceWorkerExecArgv(),
|
||||
env: {
|
||||
...process.env,
|
||||
TSX_TSCONFIG_PATH: fileURLToPath(new URL("../../tsconfig.json", import.meta.url)),
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
};
|
||||
};
|
||||
|
||||
export function createStylesheetPreflightRunner(
|
||||
overrides: Partial<StylesheetPreflightLimits> = {},
|
||||
testWorkerUrl?: URL,
|
||||
): NodeStylesheetPreflightRunner {
|
||||
const limits = Object.freeze({ ...STYLESHEET_PREFLIGHT_LIMITS, ...overrides });
|
||||
let activeWorkerCount = 0;
|
||||
// ponytail: Keep admission process-local and bounded; upgrade to a distributed/pooled queue only for multi-process coordination.
|
||||
const queue: Array<{
|
||||
input: StylesheetPreflightInput;
|
||||
resolve: (result: PdfPreflightResult) => void;
|
||||
reject: (cause: unknown) => void;
|
||||
}> = [];
|
||||
|
||||
const runWorker = (
|
||||
input: StylesheetPreflightInput,
|
||||
resolve: (result: PdfPreflightResult) => void,
|
||||
reject: (cause: unknown) => void,
|
||||
): boolean => {
|
||||
// The URL seam is internal to the server package and keeps worker failure tests independent from the PDF renderer.
|
||||
const location = testWorkerUrl ? { source: false, url: testWorkerUrl } : workerLocation();
|
||||
let worker: Worker;
|
||||
try {
|
||||
worker = new Worker(location.url, {
|
||||
name: "stylesheet-preflight",
|
||||
workerData: { input, limits },
|
||||
resourceLimits: {
|
||||
// The source-only tsx compiler heap is outside the production render budget.
|
||||
maxOldGenerationSizeMb: limits.maxOldGenerationMb + (location.source ? SOURCE_WORKER_LOADER_HEAP_MB : 0),
|
||||
},
|
||||
...("execArgv" in location ? { execArgv: location.execArgv } : {}),
|
||||
...("env" in location ? { env: location.env } : {}),
|
||||
});
|
||||
} catch (error) {
|
||||
resolve(workerFailure(error instanceof Error ? error : new Error("Failed to start PDF preflight worker.")));
|
||||
return false;
|
||||
}
|
||||
|
||||
activeWorkerCount += 1;
|
||||
let settled = false;
|
||||
let renderTimer: ReturnType<typeof setTimeout> | undefined;
|
||||
let startupTimer: ReturnType<typeof setTimeout> | undefined;
|
||||
|
||||
const cleanup = () => {
|
||||
if (renderTimer) clearTimeout(renderTimer);
|
||||
if (startupTimer) clearTimeout(startupTimer);
|
||||
worker.off("message", onMessage);
|
||||
worker.off("error", onError);
|
||||
worker.off("exit", onExit);
|
||||
activeWorkerCount -= 1;
|
||||
};
|
||||
|
||||
const finish = async (result: PdfPreflightResult) => {
|
||||
if (settled) return;
|
||||
settled = true;
|
||||
await worker.terminate().catch(() => undefined);
|
||||
cleanup();
|
||||
resolve(result);
|
||||
drainQueue();
|
||||
};
|
||||
const fail = async (cause: SerializedPreflightCause) => {
|
||||
if (settled) return;
|
||||
settled = true;
|
||||
await worker.terminate().catch(() => undefined);
|
||||
cleanup();
|
||||
reject(Object.assign(new Error(cause.message), { name: cause.name, issues: cause.issues }));
|
||||
drainQueue();
|
||||
};
|
||||
|
||||
const onMessage = (message: StylesheetPreflightWorkerMessage) => {
|
||||
if ("type" in message) {
|
||||
if (message.type === "preflight_error") {
|
||||
void fail(message.cause);
|
||||
return;
|
||||
}
|
||||
if (startupTimer) clearTimeout(startupTimer);
|
||||
renderTimer = setTimeout(() => {
|
||||
void finish(failure("STYLESHEET_PREFLIGHT_TIMEOUT", "The PDF preflight exceeded its deadline."));
|
||||
}, limits.timeoutMs);
|
||||
return;
|
||||
}
|
||||
void finish(message);
|
||||
};
|
||||
const onError = (error: Error) => {
|
||||
void finish(workerFailure(error));
|
||||
};
|
||||
const onExit = () => {
|
||||
if (!settled) {
|
||||
void finish(failure("STYLESHEET_PREFLIGHT_WORKER_FAILED", "The PDF preflight worker failed."));
|
||||
}
|
||||
};
|
||||
|
||||
worker.on("message", onMessage);
|
||||
worker.once("error", onError);
|
||||
worker.once("exit", onExit);
|
||||
startupTimer = setTimeout(
|
||||
() => {
|
||||
void finish(failure("STYLESHEET_PREFLIGHT_WORKER_FAILED", "The PDF preflight worker failed."));
|
||||
},
|
||||
location.source ? SOURCE_WORKER_STARTUP_TIMEOUT_MS : WORKER_STARTUP_TIMEOUT_MS,
|
||||
);
|
||||
return true;
|
||||
};
|
||||
|
||||
function drainQueue() {
|
||||
while (activeWorkerCount < limits.maxConcurrentWorkers && queue.length > 0) {
|
||||
const next = queue.shift();
|
||||
if (!next) return;
|
||||
runWorker(next.input, next.resolve, next.reject);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
get activeWorkerCount() {
|
||||
return activeWorkerCount;
|
||||
},
|
||||
get queuedPreflightCount() {
|
||||
return queue.length;
|
||||
},
|
||||
|
||||
run(input: StylesheetPreflightInput): Promise<PdfPreflightResult> {
|
||||
return new Promise<PdfPreflightResult>((resolve, reject) => {
|
||||
if (activeWorkerCount < limits.maxConcurrentWorkers) {
|
||||
runWorker(input, resolve, reject);
|
||||
return;
|
||||
}
|
||||
if (queue.length >= limits.maxQueuedRequests) {
|
||||
resolve(failure("STYLESHEET_PREFLIGHT_WORKER_FAILED", "The PDF preflight queue is full."));
|
||||
return;
|
||||
}
|
||||
queue.push({ input, resolve, reject });
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export const stylesheetPreflightRunner = createStylesheetPreflightRunner();
|
||||
@@ -0,0 +1,29 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import z from "zod";
|
||||
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
||||
import { handleSchemaJson } from "./schema";
|
||||
|
||||
describe("handleSchemaJson", () => {
|
||||
it("publishes the custom-section type and item correlation", async () => {
|
||||
const response = handleSchemaJson();
|
||||
const schema = z.fromJSONSchema((await response.json()) as Parameters<typeof z.fromJSONSchema>[0]);
|
||||
const mismatched = {
|
||||
...defaultResumeData,
|
||||
customSections: [
|
||||
{
|
||||
id: "custom-experience",
|
||||
type: "experience",
|
||||
title: "Experience",
|
||||
icon: "",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
keepTogether: false,
|
||||
startOnNewPage: false,
|
||||
items: [{ id: "summary-item", hidden: false, content: "<p>Not an experience item</p>" }],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
expect(schema.safeParse(mismatched).success).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -1,11 +1,8 @@
|
||||
import z from "zod";
|
||||
import { resumeDataSchema } from "@reactive-resume/schema/resume/data";
|
||||
import { createResumeDataJsonSchema } from "@reactive-resume/schema/resume/json-schema";
|
||||
import { appVersion } from "../app-version";
|
||||
|
||||
export function handleSchemaJson() {
|
||||
const resumeDataJSONSchema = z.toJSONSchema(resumeDataSchema);
|
||||
|
||||
return Response.json(resumeDataJSONSchema, {
|
||||
return Response.json(createResumeDataJsonSchema(), {
|
||||
status: 200,
|
||||
headers: {
|
||||
"Content-Type": "application/schema+json; charset=utf-8",
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import fs from "node:fs/promises";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
env: { APP_URL: "https://rxresu.me" },
|
||||
serveStatic: vi.fn((_options?: unknown) => vi.fn()),
|
||||
}));
|
||||
|
||||
vi.mock("node:fs", () => ({
|
||||
existsSync: vi.fn(() => true),
|
||||
}));
|
||||
@@ -12,10 +17,25 @@ vi.mock("node:fs/promises", () => ({
|
||||
}));
|
||||
|
||||
vi.mock("@hono/node-server/serve-static", () => ({
|
||||
serveStatic: vi.fn(() => vi.fn()),
|
||||
serveStatic: mocks.serveStatic,
|
||||
}));
|
||||
|
||||
vi.mock("@reactive-resume/env/server", () => ({
|
||||
env: mocks.env,
|
||||
}));
|
||||
|
||||
type StaticOptions = {
|
||||
onFound?: (
|
||||
path: string,
|
||||
context: {
|
||||
req: { path: string };
|
||||
header: (name: string, value: string) => void;
|
||||
},
|
||||
) => void | Promise<void>;
|
||||
};
|
||||
|
||||
const { handleWebApp } = await import("./web");
|
||||
const staticOptions = mocks.serveStatic.mock.calls[0]?.[0] as StaticOptions | undefined;
|
||||
|
||||
describe("web app fallback classification", () => {
|
||||
beforeEach(() => {
|
||||
@@ -32,6 +52,56 @@ describe("web app fallback classification", () => {
|
||||
expect(await response.text()).toBe("<html>app</html>");
|
||||
});
|
||||
|
||||
it("injects canonical metadata and structured data into tracking-parameter root requests only", async () => {
|
||||
vi.mocked(fs.readFile).mockResolvedValue(`
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Reactive Resume — A free and open-source resume builder</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume."
|
||||
>
|
||||
</head>
|
||||
<body><div id="app"></div></body>
|
||||
</html>
|
||||
`);
|
||||
|
||||
const response = await handleWebApp(new Request("http://server.internal/?utm_source=search"));
|
||||
const html = await response.text();
|
||||
|
||||
expect(html).toContain('<link rel="canonical" href="https://rxresu.me/">');
|
||||
expect(html).toContain('<link rel="preload" href="/videos/timelapse-v1.webp" as="image" fetchpriority="high">');
|
||||
expect(html).toContain('<meta property="og:url" content="https://rxresu.me/">');
|
||||
expect(html).toContain('<meta property="og:image" content="https://rxresu.me/opengraph/banner.jpg">');
|
||||
expect(html).toContain('id="reactive-resume-structured-data"');
|
||||
expect(html).toContain('"@type":["SoftwareApplication","WebApplication"]');
|
||||
expect(html).toContain('"url":"https://rxresu.me/"');
|
||||
expect(html).not.toContain("utm_source");
|
||||
|
||||
const dashboardResponse = await handleWebApp(new Request("https://example.com/dashboard"));
|
||||
expect(await dashboardResponse.text()).not.toContain('rel="canonical"');
|
||||
});
|
||||
|
||||
it("caches versioned homepage media immutably", async () => {
|
||||
const headers = new Headers();
|
||||
|
||||
await staticOptions?.onFound?.("", {
|
||||
req: { path: "/videos/timelapse-v1.mp4" },
|
||||
header: (name, value) => headers.set(name, value),
|
||||
});
|
||||
|
||||
expect(headers.get("Cache-Control")).toBe("public, max-age=31536000, immutable");
|
||||
|
||||
const unversionedHeaders = new Headers();
|
||||
await staticOptions?.onFound?.("", {
|
||||
req: { path: "/videos/timelapse.mp4" },
|
||||
header: (name, value) => unversionedHeaders.set(name, value),
|
||||
});
|
||||
|
||||
expect(unversionedHeaders.get("Cache-Control")).toBeNull();
|
||||
});
|
||||
|
||||
it.each(["/", "/alice/resume"])("sets framing and report-only CSP security headers on %s", async (pathname) => {
|
||||
const response = await handleWebApp(new Request(`https://example.com${pathname}`));
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import { existsSync } from "node:fs";
|
||||
import fs from "node:fs/promises";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { serveStatic } from "@hono/node-server/serve-static";
|
||||
import { env } from "@reactive-resume/env/server";
|
||||
|
||||
function resolveWebDistPath() {
|
||||
const candidates = [
|
||||
@@ -31,8 +32,6 @@ const reservedPublicResumeSegments = new Set([
|
||||
"templates",
|
||||
]);
|
||||
|
||||
export const serveWebDistStatic = serveStatic({ root: staticRoot });
|
||||
|
||||
function isAssetPath(pathname: string): boolean {
|
||||
return pathname.split("/").pop()?.includes(".") ?? false;
|
||||
}
|
||||
@@ -60,6 +59,115 @@ const BASE_SECURITY_HEADERS = {
|
||||
"default-src 'self'; img-src 'self' data: blob:; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; object-src 'none'",
|
||||
};
|
||||
|
||||
const ROOT_TITLE = "Reactive Resume — A free and open-source resume builder";
|
||||
const ROOT_DESCRIPTION =
|
||||
"Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.";
|
||||
const ROOT_POSTER_PATH = "/videos/timelapse-v1.webp";
|
||||
const ROOT_FAQ_ITEMS = [
|
||||
{
|
||||
question: "Is Reactive Resume really free?",
|
||||
answer:
|
||||
"Yes! Reactive Resume is completely free to use, with no hidden costs, premium tiers, or subscription fees. It's open-source and will always remain free.",
|
||||
},
|
||||
{
|
||||
question: "How is my data protected?",
|
||||
answer:
|
||||
"Your data is stored securely and is never shared with third parties. You can also self-host Reactive Resume on your own servers for complete control over your data.",
|
||||
},
|
||||
{
|
||||
question: "Can I export my resume to PDF?",
|
||||
answer:
|
||||
"Absolutely! You can export your resume to PDF with a single click. The exported PDF maintains all your formatting and styling perfectly.",
|
||||
},
|
||||
{
|
||||
question: "Is Reactive Resume available in multiple languages?",
|
||||
answer:
|
||||
"Yes, Reactive Resume is available in multiple languages. You can choose your preferred language in the settings page, or using the language switcher in the top right corner. If you don't see your language, or you would like to improve the existing translations, you can contribute to the translations on Crowdin.",
|
||||
},
|
||||
{
|
||||
question: "What makes Reactive Resume different from other resume builders?",
|
||||
answer:
|
||||
"Reactive Resume is open-source, privacy-focused, and completely free. Unlike other resume builders, it doesn't show ads, track your data, or limit your features behind a paywall.",
|
||||
},
|
||||
{
|
||||
question: "How do I share my resume?",
|
||||
answer:
|
||||
"You can share your resume via a unique public URL, protect it with a password, or download it as a PDF to share directly. The choice is yours!",
|
||||
},
|
||||
] as const;
|
||||
|
||||
function createRootSeoMarkup(canonicalUrl: string) {
|
||||
const origin = new URL(canonicalUrl).origin;
|
||||
const imageUrl = `${origin}/opengraph/banner.jpg`;
|
||||
const structuredData = {
|
||||
"@context": "https://schema.org",
|
||||
"@graph": [
|
||||
{
|
||||
"@type": "WebSite",
|
||||
name: "Reactive Resume",
|
||||
url: canonicalUrl,
|
||||
},
|
||||
{
|
||||
"@type": ["SoftwareApplication", "WebApplication"],
|
||||
name: "Reactive Resume",
|
||||
url: canonicalUrl,
|
||||
description: ROOT_DESCRIPTION,
|
||||
applicationCategory: "BusinessApplication",
|
||||
operatingSystem: "Web",
|
||||
isAccessibleForFree: true,
|
||||
offers: {
|
||||
"@type": "Offer",
|
||||
price: "0",
|
||||
priceCurrency: "USD",
|
||||
},
|
||||
codeRepository: "https://github.com/amruthpillai/reactive-resume",
|
||||
},
|
||||
{
|
||||
"@type": "Project",
|
||||
name: "Reactive Resume",
|
||||
url: canonicalUrl,
|
||||
sameAs: ["https://github.com/amruthpillai/reactive-resume"],
|
||||
},
|
||||
{
|
||||
"@type": "FAQPage",
|
||||
mainEntity: ROOT_FAQ_ITEMS.map((item) => ({
|
||||
"@type": "Question",
|
||||
name: item.question,
|
||||
acceptedAnswer: {
|
||||
"@type": "Answer",
|
||||
text: item.answer,
|
||||
},
|
||||
})),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
return `
|
||||
<link rel="canonical" href="${canonicalUrl}">
|
||||
<link rel="preload" href="${ROOT_POSTER_PATH}" as="image" fetchpriority="high">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Reactive Resume">
|
||||
<meta property="og:title" content="${ROOT_TITLE}">
|
||||
<meta property="og:description" content="${ROOT_DESCRIPTION}">
|
||||
<meta property="og:url" content="${canonicalUrl}">
|
||||
<meta property="og:image" content="${imageUrl}">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="${ROOT_TITLE}">
|
||||
<meta name="twitter:description" content="${ROOT_DESCRIPTION}">
|
||||
<meta name="twitter:image" content="${imageUrl}">
|
||||
<script id="reactive-resume-structured-data" type="application/ld+json">${JSON.stringify(structuredData)}</script>
|
||||
`;
|
||||
}
|
||||
|
||||
export const serveWebDistStatic = serveStatic({
|
||||
root: staticRoot,
|
||||
onFound: (_path, context) => {
|
||||
if (/^\/videos\/.*-v\d+\.(?:mp4|webp)$/.test(context.req.path)) {
|
||||
context.header("Cache-Control", "public, max-age=31536000, immutable");
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
function getFallbackResponseHeaders(pathname: string) {
|
||||
if (pathname === "/") return { "Content-Type": "text/html; charset=UTF-8", ...BASE_SECURITY_HEADERS };
|
||||
if (isNoindexShellPath(pathname) || isPublicResumePath(pathname)) {
|
||||
@@ -98,5 +206,8 @@ export async function handleWebApp(request: Request) {
|
||||
if (isHead) return new Response(null, { status: 200, headers });
|
||||
|
||||
const html = await fs.readFile(indexHtmlPath, "utf-8");
|
||||
return new Response(html, { headers });
|
||||
const canonicalUrl = new URL("/", env.APP_URL).toString();
|
||||
const responseHtml = pathname === "/" ? html.replace("</head>", `${createRootSeoMarkup(canonicalUrl)}</head>`) : html;
|
||||
|
||||
return new Response(responseHtml, { headers });
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
import type { PdfPreflightPageLimits, PdfPreflightResult, RenderPreflightPdfResult } from "@reactive-resume/pdf/server";
|
||||
import { getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
|
||||
|
||||
type StylesheetPreflightInspectionLimits = PdfPreflightPageLimits & {
|
||||
maxPages: number;
|
||||
maxBytes: number;
|
||||
};
|
||||
|
||||
type PdfLoadingTask = {
|
||||
promise: PromiseLike<{ numPages: number }>;
|
||||
destroy(): Promise<void>;
|
||||
};
|
||||
|
||||
type LoadPdf = (options: { data: Uint8Array }) => PdfLoadingTask;
|
||||
|
||||
export async function inspectPreflightPdf(
|
||||
rendered: Extract<RenderPreflightPdfResult, { ok: true }>,
|
||||
limits: StylesheetPreflightInspectionLimits,
|
||||
loadPdf: LoadPdf = getDocument,
|
||||
): Promise<PdfPreflightResult> {
|
||||
if (rendered.bytes.byteLength > limits.maxBytes) {
|
||||
return {
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_BYTE_LIMIT",
|
||||
message: "The rendered PDF exceeds the preflight byte limit.",
|
||||
diagnostics: rendered.diagnostics,
|
||||
};
|
||||
}
|
||||
|
||||
const byteCount = rendered.bytes.byteLength;
|
||||
let loadingTask: PdfLoadingTask;
|
||||
try {
|
||||
loadingTask = loadPdf({ data: rendered.bytes });
|
||||
} catch {
|
||||
return {
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
||||
message: "PDF inspection failed.",
|
||||
diagnostics: rendered.diagnostics,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
let document: { numPages: number };
|
||||
try {
|
||||
document = await loadingTask.promise;
|
||||
} catch {
|
||||
return {
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
||||
message: "PDF inspection failed.",
|
||||
diagnostics: rendered.diagnostics,
|
||||
};
|
||||
}
|
||||
|
||||
if (document.numPages > limits.maxPages) {
|
||||
return {
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_PAGE_LIMIT",
|
||||
message: "The rendered PDF exceeds the preflight page limit.",
|
||||
diagnostics: rendered.diagnostics,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
ok: true,
|
||||
pageCount: document.numPages,
|
||||
byteCount,
|
||||
diagnostics: rendered.diagnostics,
|
||||
};
|
||||
} finally {
|
||||
await loadingTask.destroy().catch(() => undefined);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { inspectPreflightPdf } from "./stylesheet-preflight-inspection";
|
||||
|
||||
const warning = {
|
||||
code: "EXTREME_VALUE",
|
||||
severity: "warning",
|
||||
message: "The authored value is unusually large.",
|
||||
range: {
|
||||
start: { line: 1, column: 1, offset: 0 },
|
||||
end: { line: 1, column: 10, offset: 9 },
|
||||
},
|
||||
} as const;
|
||||
|
||||
const rendered = {
|
||||
ok: true as const,
|
||||
bytes: new TextEncoder().encode("%PDF-1.7"),
|
||||
diagnostics: [warning],
|
||||
};
|
||||
|
||||
const limits = {
|
||||
maxPages: 20,
|
||||
maxBytes: 10_000_000,
|
||||
maxPageWidthPt: 2_000,
|
||||
maxPageHeightPt: 20_000,
|
||||
maxPageAreaPt2: 20_000_000,
|
||||
};
|
||||
|
||||
describe("stylesheet preflight PDF inspection", () => {
|
||||
it("preserves compiler warnings and hides parser exceptions", async () => {
|
||||
const destroy = vi.fn(async () => undefined);
|
||||
|
||||
const result = await inspectPreflightPdf(rendered, limits, () => ({
|
||||
promise: Promise.reject(new Error("sensitive parser details")),
|
||||
destroy,
|
||||
}));
|
||||
|
||||
expect(result).toEqual({
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
||||
message: "PDF inspection failed.",
|
||||
diagnostics: [warning],
|
||||
});
|
||||
expect(destroy).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it("preserves compiler warnings when PDF.js fails before returning a loading task", async () => {
|
||||
const result = await inspectPreflightPdf(rendered, limits, () => {
|
||||
throw new Error("sensitive parser setup details");
|
||||
});
|
||||
|
||||
expect(result).toEqual({
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
||||
message: "PDF inspection failed.",
|
||||
diagnostics: [warning],
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
import type { PdfPreflightPageLimits, PdfPreflightResult, StylesheetPreflightInput } from "@reactive-resume/pdf/server";
|
||||
import { parentPort, workerData } from "node:worker_threads";
|
||||
import * as React from "react";
|
||||
import { renderPreflightPdf } from "@reactive-resume/pdf/server";
|
||||
import { inspectPreflightPdf } from "./stylesheet-preflight-inspection";
|
||||
|
||||
(globalThis as typeof globalThis & { React: typeof React }).React = React;
|
||||
|
||||
type StylesheetPreflightWorkerLimits = PdfPreflightPageLimits & {
|
||||
maxPages: number;
|
||||
maxBytes: number;
|
||||
};
|
||||
|
||||
type StylesheetPreflightWorkerData = {
|
||||
input: StylesheetPreflightInput;
|
||||
limits: StylesheetPreflightWorkerLimits;
|
||||
};
|
||||
|
||||
type SerializedPreflightCause = {
|
||||
name: string;
|
||||
message: string;
|
||||
issues: readonly unknown[];
|
||||
};
|
||||
|
||||
const send = (result: PdfPreflightResult) => {
|
||||
parentPort?.postMessage(result);
|
||||
};
|
||||
|
||||
const serializeZodCause = (cause: unknown): SerializedPreflightCause | undefined => {
|
||||
if (!(cause instanceof Error) || cause.name !== "ZodError" || !("issues" in cause) || !Array.isArray(cause.issues)) {
|
||||
return;
|
||||
}
|
||||
return { name: cause.name, message: cause.message, issues: cause.issues };
|
||||
};
|
||||
|
||||
parentPort?.postMessage({ type: "ready" });
|
||||
|
||||
async function run(): Promise<PdfPreflightResult> {
|
||||
const { input, limits } = workerData as StylesheetPreflightWorkerData;
|
||||
const rendered = await renderPreflightPdf(input, limits);
|
||||
return rendered.ok ? inspectPreflightPdf(rendered, limits) : rendered;
|
||||
}
|
||||
|
||||
if (parentPort) {
|
||||
void run()
|
||||
.then(send)
|
||||
.catch((cause: unknown) => {
|
||||
const serializedCause = serializeZodCause(cause);
|
||||
if (serializedCause) {
|
||||
parentPort?.postMessage({ type: "preflight_error", cause: serializedCause });
|
||||
return;
|
||||
}
|
||||
send({
|
||||
ok: false,
|
||||
code: "STYLESHEET_PREFLIGHT_WORKER_FAILED",
|
||||
message: "The PDF preflight worker failed.",
|
||||
diagnostics: [],
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -33,7 +33,10 @@ const promptAssetsPlugin: TsdownPlugin = {
|
||||
};
|
||||
|
||||
export default defineConfig({
|
||||
entry: { index: "src/index.ts" },
|
||||
entry: {
|
||||
index: "src/index.ts",
|
||||
"stylesheet-preflight-worker": "src/workers/stylesheet-preflight.ts",
|
||||
},
|
||||
format: "esm",
|
||||
platform: "node",
|
||||
target: "node24",
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{
|
||||
"extends": ["//"],
|
||||
"tags": ["app:server", "runtime:server", "role:adapter"]
|
||||
"tags": ["app:server", "runtime:server", "role:adapter"],
|
||||
"tasks": {
|
||||
"test:ci": {
|
||||
"cache": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon-180x180.png" type="image/png" sizes="180x180 any" />
|
||||
<link rel="manifest" href="/manifest.webmanifest" crossorigin="use-credentials" />
|
||||
|
||||
<title>Reactive Resume</title>
|
||||
<title>Reactive Resume — A free and open-source resume builder</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Keep #app empty: main.tsx only mounts React when rootElement has no children. -->
|
||||
@@ -56,6 +56,6 @@
|
||||
clip: rect(0 0 0 0);
|
||||
}
|
||||
</style>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
<script type="module" data-cfasync="false" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: af\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Rekeningkieslys"
|
||||
msgid "Actions"
|
||||
msgstr "Aksies"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktiveer Semantiese CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Werklike grootte (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Aansoeke per week gestuur (laaste 8 weke)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Aansoek gedoen"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Toegepas op"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Toegepaste Reëls"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Toegepas met waarskuwings"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabies"
|
||||
@@ -800,6 +809,14 @@ msgstr "Gaan jou e-pos na vir 'n skakel om jou wagwoord te herstel."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Gaan jou e-pos na vir 'n skakel om jou rekening te verifieer."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontroleer"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Kontroleer konsep"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinees (Vereenvoudig)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Gesprek gekopieer."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Gesprek JSON gekopieer."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Omgeskakelde stylbladkonsep"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Na knipbord gekopieer."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopieer rugsteunkodes"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopieer JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopieer stylblad"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopieer hierdie geheime sleutel en gebruik dit in jou toepassings om toegang tot jou data te kry."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Wysig {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Wysig toepassing"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Wysig kleur {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Voer jou wagwoord in om die opstel van twee-faktor-magtiging te bevestig
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Voer jou wagwoord in om twee-faktor-magtiging te deaktiveer. Jou rekening sal minder veilig wees sonder 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Elke bydrae, groot of klein, maak 'n reuseverskil vir die projek.<0/>Dankie vir jou ondersteuning!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Elke bydrae, groot of klein, maak 'n reuseverskil vir die projek.<0/>Da
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Alles wat jy nodig het om professionele CV's te skep, te pasmaak en te deel. Gebou met privaatheid in gedagte, aangedryf deur oopbron, en heeltemal gratis vir altyd."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Verlaat fokusmodus"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Verlaat volskerm"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formaat"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formateer stylblad"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Lig"
|
||||
msgid "Light theme"
|
||||
msgstr "Lig tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Lyn {0}, kolom {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Reëlhoogte"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Noors"
|
||||
msgid "Not connected"
|
||||
msgstr "Nie gekoppel nie"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Maak KI-assistent oop"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Maak e-posklient oop"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Maak fokusmodus oop"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Maak oop in bouer"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-versoenbaar"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Druk <0>Enter</0> om oop te maak"
|
||||
msgid "Preview"
|
||||
msgstr "Voorskou"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Voorskou en uitvoer gebruik die laaste geldige weergawe."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primêre kleur"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiewe CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktiewe CV v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lees…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Gereed om te aktiveer"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Gereed om te aktiveer met waarskuwings"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Ontvanger"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Reghoek (volle breedte)"
|
||||
msgid "Redo"
|
||||
msgstr "Herdoen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Herhaal stylbladwysiging"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Herstel wagwoord"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stel styl terug"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Stel terug na toegepaste stylblad"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Herstel jou wagwoord"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "gekies"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-aanbieding met Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantiese CSS-stylblad"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiese style bly aktief"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Stuur boodskap"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Deurstreep"
|
||||
msgid "Strong fit"
|
||||
msgstr "Sterk pasvorm"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stylbladredigeerder"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylblad bevat foute"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Die bladsy waarna jy soek, is dalk geskuif of bestaan nie meer nie."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Die wagwoord wat jy ingevoer het, is verkeerd"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Die CV-voorskou kon nie opgedateer word nie. Die laaste geldige voorskou word steeds gewys."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Die CV waarna jy probeer toegang kry, word met 'n wagwoord beskerm"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Hierdie inskrywing sal permanent uitgevee word. Dit kan nie ongedaan gem
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Hierdie kenmerk vereis 'n gekoppelde KI-verskaffer. Stel asseblief een op in die instellings."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Hierdie instansie laat tans nie Semantiese CSS-redigering toe nie."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Dit is 'n URL-vriendelike naam vir jou CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Onderstreep"
|
||||
msgid "Undo"
|
||||
msgstr "Ongedaan maak"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Maak stylbladwysiging ongedaan"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Onbeperkte CV's"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Jou data word veilig gestoor en nooit met derde partye gedeel nie. Jy ka
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Jou jongste veranderinge kon nie gestoor word nie."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Jou ouer style bly aktief totdat jy hierdie Semantiese CSS-konsep eksplisiet aktiveer."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Jou wagwoord is suksesvol herstel. Jy kan nou met jou nuwe wagwoord aanmeld."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: am\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Amharic\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "የመለያ ምናሌ"
|
||||
msgid "Actions"
|
||||
msgstr "እርምጃዎች"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "የሴማንቲክ CSS ን ያግብሩ"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "ትክክለኛው መጠን (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "በሳምንት የተላኩ ማመልከቻዎች (ያለፉት 8 ሳምንታት)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "ተመልክቷል"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "የተተገበረው በ"
|
||||
msgid "Applied Rules"
|
||||
msgstr "የተተገበሩ ህጎች"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "ከማስጠንቀቂያዎች ጋር ተተግብሯል"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "ዓረብኛ"
|
||||
@@ -800,6 +809,14 @@ msgstr "የይለፍ ቃልዎን ለመደገፍ አገናኝ በኢሜልዎ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "መለያዎን ለማረጋገጥ አገናኝ በኢሜልዎ ውስጥ ይፈልጉ።"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "ፍተሻ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "ረቂቅን በመፈተሽ ላይ"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "ቻይንኛ (ቀለል ያለ)"
|
||||
@@ -966,6 +983,10 @@ msgstr "ውይይት ተቀድቷል።"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "ውይይት JSON ተገልብጧል።"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "የተቀየረ የቅጥ ሉህ ረቂቅ"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "ወደ ቅንጥብ ሰሌዳ ተገልብጧል።"
|
||||
@@ -989,6 +1010,10 @@ msgstr "የመከላከያ ኮዶችን ቅጂ አድርግ"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSONን ይቅዱ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "የቅጥ ሉህን ቅዳ"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ይህንን ሚስጥራዊ ቁልፍ ቅጂ አድርጉ እና ውስጥ በመተግበሪያዎቻችሁ መረጃዎን ለመድረስ ይጠቀሙበት።"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "{chip} አርትዕ"
|
||||
msgid "Edit application"
|
||||
msgstr "መተግበሪያን ያርትዑ"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "ቀለምን አርትዕ {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "ሁለት-ደረጃ ማረጋገጫን ስትቆጣጠሩ የሚሆን
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "ሁለት-ደረጃ ማረጋገጫን ለማቦዘን የይለፍ ቃልዎን ያስገቡ። 2FA ባቦዘነ ጊዜ መለያዎ ያነሰ ደህንነት ይኖረዋል።"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "ስህተት"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "እያንዳንዱ መዋጮ፣ ትልቅ ወይም ትንሽ፣ በፕሮጀክቱ ላይ ትልቅ ልዩነት ያመጣል።<0/>ስለ ድጋፍዎ እናመሰግናለን!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "እያንዳንዱ መዋጮ፣ ትልቅ ወይም ትንሽ፣ በፕ
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "ሙያዊ የየታሪክ ማቅረቢያዎችን ለመፍጠር፣ ለማበጀት እና ለመካፈል ያስፈልግዎትን ሁሉ ይዟል። የግላዊነትን ጥበቃ በማስቡ፣ በክፍት ምንጭ የሚነቃቃ፣ ፍጹም ነፃ የሆነ ነው።"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ከትኩረት ሁነታ ውጣ"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "ሙሉ ስክሪን ውጣ"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ቅርጸት"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "የቅርጸት ቅጥ ሉህ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ነፃ"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ብርሃን"
|
||||
msgid "Light theme"
|
||||
msgstr "ብርሃን ገጽታ"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "መስመር {0}፣ አምድ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "የመስመር ከፍታ"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "ኖርዌጂያንኛ"
|
||||
msgid "Not connected"
|
||||
msgstr "አልተገናኘም"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "ክፍት የ AI ረዳት"
|
||||
msgid "Open Email Client"
|
||||
msgstr "የኢሜል ደንበኛን ክፈት"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "የትኩረት ሁነታን ክፈት"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "በገንቢ ውስጥ ክፈት"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ከ OpenAI ጋር ተኳሃኝ"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "ለመክፈት <0>Enter</0>ን ይጫኑ"
|
||||
msgid "Preview"
|
||||
msgstr "ቅድመ እይታ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ቅድመ እይታ እና ወደ ውጭ መላክ የመጨረሻውን ትክክለኛ ስሪት ይጠቀሙ።"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "ዋና ቀለም"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "ምላሽ ሰጪ የስራ ልምድ v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "ንባብ…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "ለማግበር ዝግጁ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "ከማስጠንቀቂያዎች ጋር ለማግበር ዝግጁ"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "ተቀባይ"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "አክታ (ሙሉ ወፍር)"
|
||||
msgid "Redo"
|
||||
msgstr "ድገም"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "የቅጥ ሉህ አርትዖትን ድገም"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "የይለፍ ቃል ዳግም አስጀምር"
|
||||
msgid "Reset Style"
|
||||
msgstr "ቅጥን ዳግም አስጀምር"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "ወደ ተተገበረ የቅጥ ሉህ ዳግም አስጀምር"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "የይለፍ ቃልዎን ዳግም ያስጀምሩ"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "ተመርጧል"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "በ Docker ራስህን አስተናግድ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "የትርጓሜ CSS የቅጥ ሉህ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "የትርጓሜ ቅጦች ንቁ ሆነው ይቆያሉ"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "መልእክት ላክ"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "መሰረዣ"
|
||||
msgid "Strong fit"
|
||||
msgstr "ጠንካራ መገጣጠም"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "የቅጥ ሉህ አርታኢ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "የቅጥ ሉህ ስህተቶች አሉት"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "ሰብሬዲት"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "የሚፈልጉት ገጽ ተዛውሮ ወይም ከአሁን በኋላ
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "ያስገቡት የይለፍ ቃል ትክክል አይደለም"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "የሪሴምዩ ቅድመ እይታ ሊዘመን አልቻለም። የመጨረሻው ትክክለኛ ቅድመ እይታ አሁንም ይታያል።"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "መድረስ የሚሞክሩት የየታሪክ ማቅረቢያ በይለፍ ቃል የተጠበቀ ነው"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ይህ ግቤት በቋሚነት ይሰረዛል። ይህን መመለ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ይህ ባህሪ የተገናኘ የAI አቅራቢ ያስፈልገዋል። እባክዎ በቅንብሮች ውስጥ አንድ ያዋቅሩ።"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ይህ አጋጣሚ በአሁኑ ጊዜ የሴማንቲክ CSS አርትዖትን አይፈቅድም።"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "ይህ ለየታሪክዎ ተመቻቹ የ URL ስም ነው።"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "ነጥብ ተስማሚ"
|
||||
msgid "Undo"
|
||||
msgstr "ቀልብስ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "የቅጥ ሉህ አርትዖትን ቀልብስ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "ያለ ገደብ የየታሪክ ማቅረቢያዎች"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "መረጃዎ በደህና ይከማቻል እና ከሶስተኛ ወገ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "የቅርብ ጊዜ ለውጦችዎ ሊቀመጡ አልቻሉም።"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "የቆዩ ቅጦችዎ ይህንን የሴማንቲክ CSS ረቂቅ በግልጽ እስኪያነቁ ድረስ ንቁ ሆነው ይቆያሉ።"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "የይለፍ ቃልዎ በተሳካ ሁኔታ ዳግም ተጀምሯል። አሁን በአዲሱ የይለፍ ቃል መግባት ትችላላችሁ።"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ar\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "قائمة الحساب"
|
||||
msgid "Actions"
|
||||
msgstr "الإجراءات"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "تفعيل CSS الدلالي"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "الحجم الفعلي (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "الطلبات المرسلة أسبوعيًا (آخر 8 أسابيع)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "تم التقديم"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "تم التقديم في"
|
||||
msgid "Applied Rules"
|
||||
msgstr "القواعد المطبقة"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "تم استخدامه مع التحذيرات"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "العربية"
|
||||
@@ -800,6 +809,14 @@ msgstr "تحقق من بريدك الإلكتروني للحصول على راب
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "تحقق من بريدك الإلكتروني للحصول على رابط للتحقق من حسابك."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "التحقق"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "مراجعة المسودة"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "الصينية (المبسطة)"
|
||||
@@ -966,6 +983,10 @@ msgstr "تم نسخ المحادثة."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "تم نسخ بيانات المحادثة بصيغة JSON."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "مسودة ورقة الأنماط المحولة"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "تم نسخها إلى الحافظة."
|
||||
@@ -989,6 +1010,10 @@ msgstr "نسخ رموز النسخ الاحتياطي"
|
||||
msgid "Copy JSON"
|
||||
msgstr "نسخ JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "انسخ ورقة الأنماط"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "انسخ مفتاحك السري هذا واستخدمه في تطبيقاتك للوصول إلى بياناتك."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "تحرير {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "تعديل الطلب"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "تعديل اللون {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "أدخِل كلمة المرور الخاصة بك لتأكيد إعدا
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "أدخِل كلمة المرور الخاصة بك لتعطيل المصادقة الثنائية. سيكون حسابك أقل أمانًا بدون تمكين المصادقة الثنائية (2FA)."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "خطأ"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "كل مساهمة، كبيرة كانت أم صغيرة، تُحدث فارقًا كبيرًا في المشروع.<0/>شكرًا لك على دعمك!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "كل مساهمة، كبيرة كانت أم صغيرة، تُحدث ف
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "كل ما تحتاجه لإنشاء سير ذاتية احترافية وتخصيصها ومشاركتها. بُني مع مراعاة الخصوصية، ومدعوم بالمصدر المفتوح، ومجاني تمامًا إلى الأبد."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "الخروج من وضع التركيز"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "الخروج من وضع ملء الشاشة"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "الصيغة"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "نمط التنسيق"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "مجاني"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "مضيء"
|
||||
msgid "Light theme"
|
||||
msgstr "سمة مضيئة"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "السطر {0}، العمود {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "ارتفاع السطر"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "النرويجية"
|
||||
msgid "Not connected"
|
||||
msgstr "غير متصل"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "مساعد الذكاء الاصطناعي المفتوح"
|
||||
msgid "Open Email Client"
|
||||
msgstr "فتح عميل البريد الإلكتروني"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "وضع التركيز المفتوح"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "افتح في أداة الإنشاء"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "متوافق مع OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "الموجه المفتوح (OpenRouter)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "اضغط على <0>Enter</0> لفتح"
|
||||
msgid "Preview"
|
||||
msgstr "معاينة"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "استخدم آخر نسخة صالحة للمعاينة والتصدير."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "اللون الأساسي"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "السيرة الذاتية التفاعلية v<0>{__APP_VERSION__}</0>
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "استئناف تفاعلي الإصدار 4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "قراءة…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "جاهز للتفعيل"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "جاهز للتفعيل مع التحذيرات"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "المستلم"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "مستطيل (عرض كامل)"
|
||||
msgid "Redo"
|
||||
msgstr "إعادة العمل"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "إعادة تحرير ورقة الأنماط"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "إعادة تعيين كلمة المرور"
|
||||
msgid "Reset Style"
|
||||
msgstr "إعادة ضبط النمط"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "إعادة ضبط نمط التنسيق المُطبق"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "إعادة تعيين كلمة المرور"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "تم الاختيار"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "الاستضافة الذاتية مع Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "ورقة أنماط CSS الدلالية"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "لا تزال الأساليب الدلالية نشطة"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "إرسال الرسائل"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "شطب"
|
||||
msgid "Strong fit"
|
||||
msgstr "ملاءمة قوية"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "محرر أنماط CSS"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "يحتوي ملف الأنماط على أخطاء"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "سبريديت"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "قد تكون الصفحة التي تبحث عنها قد نُقلت أ
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "كلمة المرور التي أدخلتها غير صحيحة"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "تعذر تحديث معاينة السيرة الذاتية. لا تزال آخر معاينة صالحة معروضة."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "السيرة الذاتية التي تحاول الوصول إليها محمية بكلمة مرور"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "سيتم حذف هذا الإدخال نهائيًا. لا يمكن ال
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "تتطلب هذه الميزة وجود موفر ذكاء اصطناعي متصل. يرجى إعداد واحد في الإعدادات."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "لا تسمح هذه النسخة حاليًا بتحرير CSS الدلالي."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "هذا اسم مناسب لعناوين URL لسيرتك الذاتية."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "تسطير"
|
||||
msgid "Undo"
|
||||
msgstr "التراجع"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "التراجع عن تعديل ورقة الأنماط"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "سير ذاتية غير محدودة"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "تُخزَّن بياناتك بأمان ولا تتم مشاركتها
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "لم يتم حفظ آخر التغييرات التي أجريتها."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "ستبقى أنماطك القديمة نشطة حتى تقوم بتفعيل مسودة CSS الدلالية هذه بشكل صريح."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "تمت إعادة تعيين كلمة المرور الخاصة بك بنجاح. يمكنك الآن تسجيل الدخول باستخدام كلمة المرور الجديدة."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: az\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Azerbaijani\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Hesab menyusu"
|
||||
msgid "Actions"
|
||||
msgstr "Əməliyyatlar"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Semantik CSS-i aktivləşdirin"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Həqiqi ölçü (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Həftəlik göndərilən müraciətlər (son 8 həftə)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Müraciət edildi"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Tətbiq edildiyi tarix"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Tətbiq olunan Qaydalar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Xəbərdarlıqlarla tətbiq olunur"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Ərəb"
|
||||
@@ -800,6 +809,14 @@ msgstr "Parolu sıfırlamaq üçün link üçün e‑poçtunuzu yoxlayın."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Hesabınızı təsdiqləmək üçün link üçün e‑poçtunuzu yoxlayın."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Yoxlama"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Qaralama yoxlanılır"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Çin (Sadələşdirilmiş)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Söhbət kopyalandı."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Söhbət JSON formatında kopyalandı."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Çevirilmiş stil cədvəli qaralaması"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Panoya kopyalandı."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Ehtiyat Kodlarını Kopyala"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON-u kopyalayın"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Stil cədvəlini kopyalayın"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Bu gizli açarı kopyalayın və verilənlərinizə daxil olmaq üçün tətbiqlərinizdə istifadə edin."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Düzəliş et {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Tətbiqi redaktə edin"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Rəngi redaktə edin {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "İki mərhələli autentifikasiyanı qurmağı təsdiqləmək üçün pa
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "İki mərhələli autentifikasiyanı deaktiv etmək üçün parolunuzu daxil edin. 2FA deaktiv edildikdə, hesabınız daha az təhlükəsiz olacaq."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Xəta"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Hər bir töhfə, böyük və ya kiçik olmasından asılı olmayaraq, layihə üçün böyük fərq yaradır.<0/>Dəstəyiniz üçün təşəkkür edirik!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Hər bir töhfə, böyük və ya kiçik olmasından asılı olmayaraq, l
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Peşəkar özgeçmişlər yaratmaq, fərdiləşdirmək və paylaşmaq üçün lazım olan hər şey. Məxfilik nəzərə alınaraq qurulub, açıq mənbə ilə işləyir və tamamilə pulsuzdur."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Fokus rejimindən çıxın"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Tam ekrandan çıx"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Stil cədvəlini formatlayın"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Pulsuz"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Açıq"
|
||||
msgid "Light theme"
|
||||
msgstr "Açıq mövzu"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Sətir {0}, sütun {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Sətir Hündürlüyü"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norveç"
|
||||
msgid "Not connected"
|
||||
msgstr "Qoşulmamışdır"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Açıq süni intellekt köməkçisi"
|
||||
msgid "Open Email Client"
|
||||
msgstr "E‑poçt müştərisini aç"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Fokus rejimini açın"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Qurucuda açın"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI ilə uyğun"
|
||||
msgid "OpenRouter"
|
||||
msgstr "AçıqRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Açmaq üçün <0>Enter düyməsini</0> basın"
|
||||
msgid "Preview"
|
||||
msgstr "Önizləmə"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Önizləmə və ixrac üçün son etibarlı versiyadan istifadə edin."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Əsas Rəng"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiv CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktiv Rezume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "… oxunur"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Aktivləşdirməyə hazırdır"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Xəbərdarlıqlarla aktivləşdirməyə hazırdır"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Alıcı"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Düzbucaqlı (Tam En)"
|
||||
msgid "Redo"
|
||||
msgstr "Təkrar et"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Stil cədvəli redaktəsini yenidən edin"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Parolu Sıfırla"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stilini Sıfırla"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Tətbiq olunmuş stil cədvəlinə sıfırlayın"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Parolunuzu sıfırlayın"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "seçilmiş"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker ilə Özün‑host et"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantik CSS stil cədvəli"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantik üslublar aktiv olaraq qalır"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Mesaj göndərin"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Üstündən xətt çək"
|
||||
msgid "Strong fit"
|
||||
msgstr "Güclü uyğunluq"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stil cədvəli redaktoru"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stil cədvəlində səhvlər var"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Axtardığınız səhifə köçürülmüş və ya artıq mövcud olmamı
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Daxil etdiyiniz parol yanlışdır"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "CV önizləməsi yenilənə bilmədi. Son etibarlı önizləmə hələ də göstərilir."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Daxil olmağa çalışdığınız özgeçmiş parol ilə qorunur"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Bu qeyd həmişəlik silinəcək. Bunu geri qaytarmaq mümkün deyil."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Bu funksiya qoşulmuş süni intellekt provayderi tələb edir. Zəhmət olmasa, parametrlərdə birini quraşdırın."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Bu nümunə hazırda semantik CSS redaktəsinə icazə vermir."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Bu, özgeçmişiniz üçün URL‑ə uyğun bir addır."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Altını Xətlə"
|
||||
msgid "Undo"
|
||||
msgstr "Geri al"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Stil cədvəli düzəlişini geri qaytarın"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Limitsiz Özgeçmişlər"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Məlumatlarınız təhlükəsiz şəkildə saxlanılır və heç vaxt ü
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Son dəyişiklikləriniz yadda saxlanıla bilmədi."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Bu Semantik CSS layihəsini açıq şəkildə aktivləşdirənə qədər köhnə üslublarınız aktiv qalır."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Parolunuz uğurla sıfırlandı. İndi yeni parolunuzla daxil ola bilərsiniz."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: bg\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Bulgarian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Меню на акаунта"
|
||||
msgid "Actions"
|
||||
msgstr "Действия"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Активиране на семантичен CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Действителен размер (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Изпратени кандидатури на седмица (последните 8 седмици)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Кандидатствано"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Приложено на"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Приложени правила"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Прилага се с предупреждения"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Арабски"
|
||||
@@ -800,6 +809,14 @@ msgstr "Проверете имейла си за връзка за нулира
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Проверете имейла си за връзка за потвърждение на профила."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Проверка"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Проверка на черновата"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Китайски (опростен)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Разговорът е копиран."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON файлът на разговора е копиран."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Конвертирана чернова на стилов лист"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Копирано в клипборда."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Копиране на резервни кодове"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Копиране на JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Копиране на стилов лист"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Копирайте този таен ключ и го използвайте във вашите приложения, за да получите достъп до данните си."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Редактиране на {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Редактиране на приложението"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Редактиране на цвят {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Въведете паролата си, за да потвърдите
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Въведете паролата си, за да изключите двуфакторното удостоверяване. Вашият профил ще бъде по-малко защитен без активирано 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Грешка"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Всеки принос, голям или малък, прави огромна разлика за проекта.<0/>Благодарим ви за подкрепата!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Всеки принос, голям или малък, прави огр
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Всичко, от което се нуждаете, за да създавате, персонализирате и споделяте професионални автобиографии. Създадено с мисъл за поверителността, базирано на отворен код и напълно безплатно завинаги."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Изход от режим на фокус"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Излизане от цял екран"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Формат"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Форматиране на стилов лист"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Безплатно"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Светла"
|
||||
msgid "Light theme"
|
||||
msgstr "Светла тема"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Ред {0}, колона {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Междуредие"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Норвежки"
|
||||
msgid "Not connected"
|
||||
msgstr "Няма връзка"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Отворете AI асистент"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Отваряне на имейл клиент"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Отвори режим на фокус"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Отваряне в конструктора"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Съвместим с OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Натиснете <0>Enter</0>, за да отворите"
|
||||
msgid "Preview"
|
||||
msgstr "Преглед"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Прегледът и експортът използват последната валидна версия."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Основен цвят"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Реактивно резюме v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Четене…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Готов за активиране"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Готово за активиране с предупреждения"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Получател"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Правоъгълник (пълна ширина)"
|
||||
msgid "Redo"
|
||||
msgstr "Преработи"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Възстановяване на редакцията на стиловия лист"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Нулиране на паролата"
|
||||
msgid "Reset Style"
|
||||
msgstr "Нулиране на стила"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Възстановяване към приложения стилов лист"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Нулирайте паролата си"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "избран"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Самостоятелно хостване с Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Семантичен CSS стилов лист"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Семантичните стилове остават активни"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Изпрати съобщение"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Зачеркване"
|
||||
msgid "Strong fit"
|
||||
msgstr "Силно прилягане"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Редактор на стилови листове"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Стилният лист съдържа грешки"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Страницата, която търсите, може да е бил
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Въведената от вас парола е неправилна"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Прегледът на автобиографията не можа да бъде актуализиран. Последният валиден преглед все още се показва."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Автобиографията, до която се опитвате да получите достъп, е защитена с парола"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Този запис ще бъде изтрит за постоянно.
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Тази функция изисква свързан доставчик на изкуствен интелект. Моля, настройте такъв в настройките."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Този екземпляр в момента не позволява редактиране на семантичен CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Това е име, подходящо за URL, за вашата автобиография."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Подчертаване"
|
||||
msgid "Undo"
|
||||
msgstr "Отмяна"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Отмяна на редакцията на стиловия лист"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Неограничен брой автобиографии"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Вашите данни се съхраняват сигурно и ни
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Последните ви промени не можаха да бъдат запазени."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Вашите стари стилове остават активни, докато изрично не активирате този проект на Semantic CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Паролата ви беше нулирана успешно. Сега можете да влезете с новата си парола."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: bn\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Bengali\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "অ্যাকাউন্ট মেনু"
|
||||
msgid "Actions"
|
||||
msgstr "অ্যাকশন"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "সিমান্টিক CSS সক্রিয় করুন"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "প্রকৃত আকার (১০০%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "প্রতি সপ্তাহে পাঠানো আবেদন (শেষ 8 সপ্তাহ)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "আবেদন করা হয়েছে"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "প্রয়োগ করা হয়েছে"
|
||||
msgid "Applied Rules"
|
||||
msgstr "প্রয়োগকৃত নিয়মাবলী"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "সতর্কতাসহ প্রয়োগ করা হয়েছে"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "আরবি"
|
||||
@@ -800,6 +809,14 @@ msgstr "আপনার পাসওয়ার্ড রিসেট করা
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "আপনার অ্যাকাউন্ট যাচাই করার লিঙ্কের জন্য ইমেইল চেক করুন।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "চেকিং"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "খসড়া পরীক্ষা করা হচ্ছে"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "চীনা (সরলীকৃত)"
|
||||
@@ -966,6 +983,10 @@ msgstr "কথোপকথনটি অনুলিপি করা হয়ে
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "কথোপকথনের JSON কপি করা হয়েছে।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "রূপান্তরিত স্টাইলশীট খসড়া"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "ক্লিপবোর্ডে কপি করা হয়েছে।"
|
||||
@@ -989,6 +1010,10 @@ msgstr "ব্যাকআপ কোড কপি করুন"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON কপি করুন"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "স্টাইলশিট কপি করুন"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "এই সিক্রেট কী কপি করে আপনার অ্যাপ্লিকেশনগুলোতে ব্যবহার করুন আপনার ডেটায় প্রবেশ করার জন্য।"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "সম্পাদনা {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "অ্যাপ্লিকেশন সম্পাদনা করুন"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "রঙ সম্পাদনা করুন {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "টু‑ফ্যাক্টর প্রমাণীকরণ সে
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "টু‑ফ্যাক্টর প্রমাণীকরণ বন্ধ করতে আপনার পাসওয়ার্ড লিখুন। 2FA বন্ধ করলে আপনার অ্যাকাউন্ট কম সুরক্ষিত থাকবে।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "ত্রুটি"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "প্রতিটি অবদান, বড় বা ছোট, প্রজেক্টটিতে বিশাল পরিবর্তন আনে।<0/>আপনার সহায়তার জন্য ধন্যবাদ!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "প্রতিটি অবদান, বড় বা ছোট, প
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "পেশাদার জীবনবৃত্তান্ত তৈরি, কাস্টমাইজ এবং শেয়ার করার জন্য যা যা প্রয়োজন সবই এখানে আছে। গোপনীয়তা মাথায় রেখে তৈরি, মুক্ত উৎস দ্বারা চালিত এবং চিরদিনের জন্য সম্পূর্ণ বিনামূল্যে।"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ফোকাস মোড থেকে প্রস্থান করুন"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "পূর্ণ স্ক্রীন থেকে বের হন"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "রূপ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "ফরম্যাট স্টাইলশিট"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "বিনামূল্যে"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "লাইট"
|
||||
msgid "Light theme"
|
||||
msgstr "লাইট থিম"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "লাইন {0}, কলাম {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "লাইন হাইট"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "নরওয়েজিয়ান"
|
||||
msgid "Not connected"
|
||||
msgstr "সংযুক্ত নয়"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "ওপেন এআই অ্যাসিস্ট্যান্ট"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ইমেইল ক্লায়েন্ট খুলুন"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ফোকাস মোড খুলুন"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "বিল্ডারে খুলুন"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ওপেনএআই-সামঞ্জস্যপূর্ণ"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ওপেনরাউটার"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "খুলতে <0>এন্টার</0> চাপুন"
|
||||
msgid "Preview"
|
||||
msgstr "প্রিভিউ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "প্রিভিউ এবং এক্সপোর্টের জন্য সর্বশেষ বৈধ সংস্করণটি ব্যবহার করা হয়।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "প্রাথমিক রঙ"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "প্রতিক্রিয়াশীল জীবনবৃত্
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "প্রতিক্রিয়াশীল রিজ্যুম v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "পড়া…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "সক্রিয় করার জন্য প্রস্তুত"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "সতর্কতা সহ সক্রিয় করার জন্য প্রস্তুত"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "প্রাপক"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "আয়তক্ষেত্র (পূর্ণ প্রস্থ)"
|
||||
msgid "Redo"
|
||||
msgstr "পুনরায় করুন"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "স্টাইলশীট সম্পাদনা পুনরায় করুন"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "পাসওয়ার্ড রিসেট করুন"
|
||||
msgid "Reset Style"
|
||||
msgstr "স্টাইল রিসেট করুন"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "প্রয়োগকৃত স্টাইলশীটে রিসেট করুন"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "আপনার পাসওয়ার্ড রিসেট করুন"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "নির্বাচিত"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "ডকার দিয়ে নিজে হোস্ট করুন"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "সিমান্টিক সিএসএস স্টাইলশিট"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "শব্দার্থিক শৈলী সক্রিয় থাকে"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "বার্তা পাঠান"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "স্ট্রাইক"
|
||||
msgid "Strong fit"
|
||||
msgstr "শক্তিশালী ফিট"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "স্টাইলশিট সম্পাদক"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "স্টাইলশিটে ত্রুটি আছে"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "সাবরেডিট"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "আপনি যে পৃষ্ঠাটি খুঁজছেন স
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "আপনি যে পাসওয়ার্ড লিখেছেন তা সঠিক নয়"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "জীবনবৃত্তান্তের প্রিভিউ আপডেট করা যায়নি। সর্বশেষ বৈধ প্রিভিউটিই এখনও দেখানো হচ্ছে।"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "আপনি যে জীবনবৃত্তান্তে প্রবেশ করার চেষ্টা করছেন তা পাসওয়ার্ড দ্বারা সুরক্ষিত"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "এই এন্ট্রি স্থায়ীভাবে মুছ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "এই ফিচারটি ব্যবহারের জন্য একটি সংযুক্ত এআই প্রোভাইডার প্রয়োজন। অনুগ্রহ করে সেটিংস থেকে একটি সেট আপ করুন।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "এই ইনস্ট্যান্সটিতে বর্তমানে সিমান্টিক সিএসএস সম্পাদনার অনুমতি নেই।"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "এটি আপনার জীবনবৃত্তান্তের জন্য একটি URL‑বান্ধব নাম।"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "আন্ডারলাইন"
|
||||
msgid "Undo"
|
||||
msgstr "পূর্বাবস্থায় ফেরান"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "স্টাইলশীট সম্পাদনা পূর্বাবস্থায় ফেরান"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "আনলিমিটেড জীবনবৃত্তান্ত"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "আপনার ডেটা নিরাপদভাবে সংরক
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "আপনার সর্বশেষ পরিবর্তনগুলো সংরক্ষণ করা যায়নি।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "যতক্ষণ না আপনি স্পষ্টভাবে এই সিম্যান্টিক সিএসএস ড্রাফটটি সক্রিয় করছেন, ততক্ষণ আপনার পুরোনো স্টাইলগুলো সক্রিয় থাকবে।"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "আপনার পাসওয়ার্ড সফলভাবে রিসেট হয়েছে। এখন আপনি নতুন পাসওয়ার্ড দিয়ে সাইন ইন করতে পারবেন।"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ca\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menú del compte"
|
||||
msgid "Actions"
|
||||
msgstr "Accions"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activa el CSS semàntic"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Mida real (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Sol·licituds enviades per setmana (darreres 8 setmanes)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Sol·licitada"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplicat a"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Normes aplicades"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Aplicat amb avisos"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Àrab"
|
||||
@@ -800,6 +809,14 @@ msgstr "Comprova el correu electrònic per trobar un enllaç per restablir la co
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Comprova el correu electrònic per trobar un enllaç per verificar el compte."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Comprovació"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "S'està revisant l'esborrany"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Xinès (simplificat)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversa copiada."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "S'ha copiat el fitxer JSON de la conversa."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Esborrany de full d'estil convertit"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiat al porta-retalls."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copia els codis de reserva"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copia JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copiar full d'estils"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copia aquesta clau secreta i utilitza-la a les aplicacions per accedir a les dades."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Edita {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edita l'aplicació"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Edita el color {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Introdueix la contrasenya per confirmar la configuració de l’autentic
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Introdueix la contrasenya per desactivar l’autenticació en dos passos. El compte serà menys segur sense l’A2F activada."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Cada contribució, gran o petita, marca una gran diferència per al projecte.<0/>Gràcies pel teu suport!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Cada contribució, gran o petita, marca una gran diferència per al proj
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tot el que necessites per crear, personalitzar i compartir currículums professionals. Creat amb la privadesa en ment, impulsat per codi obert i completament gratuït per sempre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Surt del mode d'enfocament"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Surt de la pantalla completa"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Full d'estils de format"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuït"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Clar"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema clar"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Línia {0}, columna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Interlineat"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Noruec"
|
||||
msgid "Not connected"
|
||||
msgstr "No connectat"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Assistent d'IA oberta"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Obre el client de correu"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Obre el mode d'enfocament"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Obre al constructor"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatible amb OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "Routador obert"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Premeu <0>Intro</0> per obrir"
|
||||
msgid "Preview"
|
||||
msgstr "Vista prèvia"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "La vista prèvia i l'exportació utilitzen l'última versió vàlida."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Color principal"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Currículum reactiu v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Llegint…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Llest per activar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Llest per activar amb avisos"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatari"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rectangle (amplada completa)"
|
||||
msgid "Redo"
|
||||
msgstr "Refer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Refés l'edició del full d'estils"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Restableix la contrasenya"
|
||||
msgid "Reset Style"
|
||||
msgstr "Restableix l'estil"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Restableix al full d'estils aplicat"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Restableix la contrasenya"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "seleccionat"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Allotjament propi amb Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Full d'estil CSS semàntic"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Els estils semàntics romanen actius"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Enviar missatge"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Barrat"
|
||||
msgid "Strong fit"
|
||||
msgstr "Ajust fort"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor de fulls d'estil"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "El full d'estil té errors"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Pot ser que la pàgina que busques s'hagi mogut o que ja no existeixi."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "La contrasenya introduïda és incorrecta"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "No s'ha pogut actualitzar la vista prèvia del currículum. Encara es mostra l'última vista prèvia vàlida."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "El currículum al qual intentes accedir està protegit amb contrasenya"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Aquesta entrada se suprimirà permanentment. Això no es pot desfer."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Aquesta funció requereix un proveïdor d'IA connectat. Configura'n un a la configuració."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Aquesta instància actualment no permet l'edició semàntica de CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Aquest és un nom d’URL fàcil d’utilitzar per al currículum."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Subratllat"
|
||||
msgid "Undo"
|
||||
msgstr "Desfer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Desfés l'edició del full d'estils"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Currículums il·limitats"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Les dades s’emmagatzemen de manera segura i mai no es comparteixen amb
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "No s'han pogut desar els darrers canvis."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Els vostres estils antics romanen actius fins que activeu explícitament aquest esborrany de CSS semàntic."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "La contrasenya s’ha restablert correctament. Ara ja pots iniciar sessió amb la contrasenya nova."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Nabídka účtu"
|
||||
msgid "Actions"
|
||||
msgstr "Akce"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivace sémantického CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Skutečná velikost (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Žádosti odeslané týdně (posledních 8 týdnů)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Podáno"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplikováno na"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Použitá pravidla"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Použito s varováním"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabština"
|
||||
@@ -800,6 +809,14 @@ msgstr "Zkontrolujte svůj e-mail, kde najdete odkaz pro obnovení hesla."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Zkontrolujte svůj e-mail, kde najdete odkaz pro ověření účtu."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontrola"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Kontrola návrhu"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Čínština (zjednodušená)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Konverzace zkopírována."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON konverzace zkopírován."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konverze konceptu stylů"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Zkopírováno do schránky."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Zkopírovat záložní kódy"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopírovat JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopírovat stylový list"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Zkopírujte tento tajný klíč a použijte ho ve svých aplikacích pro přístup k vašim datům."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Upravit {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Upravit aplikaci"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Upravit barvu {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Zadejte své heslo pro potvrzení nastavení dvoufázového ověření.
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Zadejte své heslo pro deaktivaci dvoufázového ověření. Bez aktivního 2FA bude váš účet méně zabezpečený."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Každý příspěvek, velký i malý, má pro projekt obrovský význam.<0/>Děkujeme za vaši podporu!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Každý příspěvek, velký i malý, má pro projekt obrovský význam.
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Vše, co potřebujete k vytvoření, přizpůsobení a sdílení profesionálních životopisů. Vytvořeno s ohledem na soukromí, poháněno open source a zcela zdarma, navždy."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Ukončit režim ostření"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Ukončit celou obrazovku"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formát"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formátovat stylový list"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Zdarma"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Světlý"
|
||||
msgid "Light theme"
|
||||
msgstr "Světlý motiv"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Řádek {0}, sloupec {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Výška řádku"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norština"
|
||||
msgid "Not connected"
|
||||
msgstr "Nepřipojeno"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Otevřený asistent s umělou inteligencí"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Otevřít e-mailového klienta"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Otevřít režim ostření"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Otevřít v editoru"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Kompatibilní s OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Stisknutím klávesy <0>Enter</0> otevřete"
|
||||
msgid "Preview"
|
||||
msgstr "Náhled"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Náhled a export použijí poslední platnou verzi."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Hlavní barva"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktivní životopis v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktivní životopis v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Čtení…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Připraveno k aktivaci"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Připraveno k aktivaci s varováními"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Příjemce"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Obdélník (plná šířka)"
|
||||
msgid "Redo"
|
||||
msgstr "Předělat"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Znovu upravit stylový list"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Obnovit heslo"
|
||||
msgid "Reset Style"
|
||||
msgstr "Obnovit styl"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Obnovit použitý stylový list"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Obnovte své heslo"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "vybraný"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Vlastní hosting pomocí Dockeru"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Sémantický CSS stylový list"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Sémantické styly zůstávají aktivní"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Odeslat zprávu"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Přeškrtnutí"
|
||||
msgid "Strong fit"
|
||||
msgstr "Silné uchycení"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor stylů"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylový list obsahuje chyby"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Stránka, kterou hledáte, mohla být přesunuta nebo již neexistuje."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Zadané heslo je nesprávné"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Náhled životopisu se nepodařilo aktualizovat. Stále se zobrazuje poslední platný náhled."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Životopis, ke kterému se snažíte získat přístup, je chráněn heslem"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Tento záznam bude trvale odstraněn. Tuto akci nelze vrátit zpět."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Tato funkce vyžaduje připojeného poskytovatele umělé inteligence. Nastavte si ho prosím v nastavení."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Tato instance aktuálně neumožňuje úpravy sémantického CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Toto je název vašeho životopisu vhodný pro URL adresu."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Podtržení"
|
||||
msgid "Undo"
|
||||
msgstr "Zpět"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Zrušit úpravu stylového listu"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Neomezené životopisy"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Vaše data jsou ukládána bezpečně a nikdy nejsou sdílena s třetím
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Vaše poslední změny se nepodařilo uložit."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Vaše starší styly zůstanou aktivní, dokud explicitně neaktivujete tento koncept sémantického CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Vaše heslo bylo úspěšně obnoveno. Nyní se můžete přihlásit pomocí nového hesla."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: da\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Danish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Kontomenu"
|
||||
msgid "Actions"
|
||||
msgstr "Handlinger"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivér semantisk CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Faktisk størrelse (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Ansøgninger sendt pr. uge (sidste 8 uger)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Ansøgt"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Anvendt den"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Anvendte regler"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Anvendt med advarsler"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisk"
|
||||
@@ -800,6 +809,14 @@ msgstr "Tjek din e-mail for et link til at nulstille din adgangskode."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Tjek din e-mail for et link til at verificere din konto."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontrol"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Tjekker udkast"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kinesisk (forenklet)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Samtalen er kopieret."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Samtalens JSON-fil kopieret."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konverteret stylesheet-kladde"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopieret til udklipsholder."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopiér backup-koder"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopiér JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopiér stylesheet"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopiér denne hemmelige nøgle og brug den i dine applikationer for at få adgang til dine data."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Rediger {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Rediger applikation"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Rediger farve {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Indtast din adgangskode for at bekræfte opsætning af to-faktor-godkend
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Indtast din adgangskode for at deaktivere to-faktor-godkendelse. Din konto vil være mindre sikker uden 2FA aktiveret."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Hvert bidrag, stort som lille, gør en stor forskel for projektet.<0/>Tak for din støtte!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Hvert bidrag, stort som lille, gør en stor forskel for projektet.<0/>Ta
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Alt hvad du behøver for at oprette, tilpasse og dele professionelle CV'er. Bygget med fokus på privatliv, drevet af open source og helt gratis for altid."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Afslut fokustilstand"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Afslut fuldskærm"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatér typografiark"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Lys"
|
||||
msgid "Light theme"
|
||||
msgstr "Lyst tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linje {0}, kolonne {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Linjehøjde"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norsk"
|
||||
msgid "Not connected"
|
||||
msgstr "Ikke forbundet"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Åbn AI-assistent"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Åbn e-mailklient"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Åbn fokustilstand"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Åbn i builderen"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-kompatibel"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Tryk på <0>Enter</0> for at åbne"
|
||||
msgid "Preview"
|
||||
msgstr "Forhåndsvisning"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Forhåndsvisning og eksport med den seneste gyldige version."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primær farve"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktivt CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktivt CV v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Læsning…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Klar til aktivering"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Klar til aktivering med advarsler"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Modtager"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rektangel (fuld bredde)"
|
||||
msgid "Redo"
|
||||
msgstr "Gentag"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Gentag redigering af stylesheet"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Nulstil adgangskode"
|
||||
msgid "Reset Style"
|
||||
msgstr "Nulstil stil"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Nulstil til anvendt stylesheet"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Nulstil din adgangskode"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "udvalgte"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Selvhostning med Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantisk CSS-stilark"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiske stilarter forbliver aktive"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Send besked"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Gennemstreget"
|
||||
msgid "Strong fit"
|
||||
msgstr "Stærk pasform"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stylesheet-editor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylesheet indeholder fejl"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Den side, du leder efter, er muligvis blevet flyttet eller findes ikke l
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Den adgangskode, du indtastede, er forkert"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Forhåndsvisningen af CV'et kunne ikke opdateres. Den sidste gyldige forhåndsvisning vises stadig."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Det CV, du prøver at få adgang til, er beskyttet af en adgangskode"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Denne post slettes permanent. Dette kan ikke fortrydes."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Denne funktion kræver en tilsluttet AI-udbyder. Opsæt venligst en i indstillingerne."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Denne instans tillader i øjeblikket ikke semantisk CSS-redigering."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Dette er et URL-venligt navn til dit CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Understreg"
|
||||
msgid "Undo"
|
||||
msgstr "Fortryd"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Fortryd redigering af stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Ubegrænsede CV'er"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Dine data lagres sikkert og deles aldrig med tredjeparter. Du kan også
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Dine seneste ændringer kunne ikke gemmes."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Dine ældre stilarter forbliver aktive, indtil du eksplicit aktiverer denne semantiske CSS-kladde."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Din adgangskode er blevet nulstillet. Du kan nu logge ind med din nye adgangskode."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Kontomenü"
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Semantisches CSS aktivieren"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Tatsächliche Größe (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Pro Woche gesendete Bewerbungen (letzte 8 Wochen)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Beworben"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Beworben am"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Angewandte Regeln"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Mit Warnungen angewendet"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisch"
|
||||
@@ -800,6 +809,14 @@ msgstr "Bitte prüfen Sie Ihre E-Mails auf einen Link zum Zurücksetzen Ihres Pa
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Bitte prüfen Sie Ihre E-Mails auf einen Link, um Ihr Konto zu verifizieren."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Überprüfung"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Entwurf prüfen"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinesisch (vereinfacht)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Konversation kopiert."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Konversations-JSON kopiert."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konvertierter Stylesheet-Entwurf"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "In die Zwischenablage kopiert."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Backup-Codes kopieren"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON kopieren"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Stylesheet kopieren"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopiere diesen geheimen Schlüssel und verwende ihn in deinen Anwendungen, um auf deine Daten zuzugreifen."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "{chip} bearbeiten"
|
||||
msgid "Edit application"
|
||||
msgstr "Bewerbung bearbeiten"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Farbe bearbeiten {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Geben Sie Ihr Passwort ein, um die Einrichtung der Zwei-Faktor-Authentif
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Geben Sie Ihr Passwort ein, um die Zwei-Faktor-Authentifizierung zu deaktivieren. Ihr Konto ist ohne 2FA weniger sicher."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Jeder Beitrag, ob groß oder klein, macht einen riesigen Unterschied für das Projekt.<0/>Vielen Dank für deine Unterstützung!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Jeder Beitrag, ob groß oder klein, macht einen riesigen Unterschied fü
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Alles, was du brauchst, um professionelle Lebensläufe zu erstellen, anzupassen und zu teilen. Mit Blick auf Datenschutz entwickelt, von Open Source angetrieben und für immer komplett kostenlos."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Fokusmodus beenden"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Vollbild schließen"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Seitenformat"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Format-Stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Kostenlos"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Hell"
|
||||
msgid "Light theme"
|
||||
msgstr "Helles Design"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Zeile {0}, Spalte {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Zeilenhöhe"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norwegisch"
|
||||
msgid "Not connected"
|
||||
msgstr "Nicht verbunden"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Offener KI-Assistent"
|
||||
msgid "Open Email Client"
|
||||
msgstr "E-Mail-Programm öffnen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Offener Fokusmodus"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Im Builder öffnen"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-kompatibel"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Drücken Sie <0>Enter</0> zum Öffnen"
|
||||
msgid "Preview"
|
||||
msgstr "Vorschau"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Vorschau und Export verwenden die letzte gültige Version."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primärfarbe"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiver Lebenslauf v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktiver Lebenslauf v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Wird gelesen…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Bereit zur Aktivierung"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Bereit zur Aktivierung mit Warnungen"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Empfänger"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rechteck (volle Breite)"
|
||||
msgid "Redo"
|
||||
msgstr "Wiederholen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Stylesheet-Bearbeitung wiederholen"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Passwort zurücksetzen"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stil zurücksetzen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Auf angewendetes Stylesheet zurücksetzen"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Setzen Sie Ihr Passwort zurück"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "ausgewählt"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Selbst hosten mit Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantisches CSS-Stylesheet"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantische Stile bleiben aktiv"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Nachricht senden"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Durchgestrichen"
|
||||
msgid "Strong fit"
|
||||
msgstr "Starke Passung"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stylesheet-Editor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Das Stylesheet enthält Fehler."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Die gesuchte Seite wurde möglicherweise verschoben oder existiert nicht
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Das eingegebene Passwort ist falsch"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Die Lebenslaufvorschau konnte nicht aktualisiert werden. Die letzte gültige Vorschau wird weiterhin angezeigt."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Der Lebenslauf, auf den Sie zugreifen möchten, ist passwortgeschützt"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Dieser Eintrag wird dauerhaft gelöscht. Das kann nicht rückgängig gem
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Diese Funktion erfordert einen verbundenen KI-Anbieter. Bitte richten Sie einen in den Einstellungen ein."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Diese Instanz erlaubt derzeit keine Bearbeitung von semantischem CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Dies ist ein URL-freundlicher Name für Ihren Lebenslauf."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Unterstreichen"
|
||||
msgid "Undo"
|
||||
msgstr "Rückgängig machen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Stylesheet-Änderung rückgängig machen"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Unbegrenzte Lebensläufe"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Deine Daten werden sicher gespeichert und niemals an Dritte weitergegebe
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Ihre letzten Änderungen konnten nicht gespeichert werden."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Ihre bisherigen Stile bleiben aktiv, bis Sie diesen Entwurf für semantisches CSS explizit aktivieren."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun mit Ihrem neuen Passwort anmelden."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: el\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Μενού λογαριασμού"
|
||||
msgid "Actions"
|
||||
msgstr "Ενέργειες"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Ενεργοποίηση Σημασιολογικού CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Πραγματικό μέγεθος (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Αιτήσεις που στάλθηκαν ανά εβδομάδα (τελευταίες 8 εβδομάδες)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Υποβλήθηκε"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Ημερομηνία αίτησης"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Εφαρμοσμένοι κανόνες"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Εφαρμόζεται με προειδοποιήσεις"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Αραβικά"
|
||||
@@ -800,6 +809,14 @@ msgstr "Ελέγξτε το email σας για έναν σύνδεσμο επα
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Ελέγξτε το email σας για έναν σύνδεσμο επαλήθευσης του λογαριασμού σας."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Ελεγχος"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Έλεγχος προσχεδίου"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Κινέζικα (Απλοποιημένα)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Η συνομιλία αντιγράφηκε."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Το JSON συνομιλίας αντιγράφηκε."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Μετατρεπόμενο προσχέδιο φύλλου στυλ"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Αντιγράφηκε στο πρόχειρο."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Αντιγραφή εφεδρικών κωδικών"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Αντιγραφή JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Αντιγραφή φύλλου στυλ"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Αντιγράψτε αυτό το μυστικό κλειδί και χρησιμοποιήστε το στις εφαρμογές σας για να αποκτήσετε πρόσβαση στα δεδομένα σας."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Επεξεργασία {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Επεξεργασία αίτησης"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Επεξεργασία χρώματος {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Εισαγάγετε τον κωδικό πρόσβασής σας γι
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Εισαγάγετε τον κωδικό πρόσβασής σας για να απενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων. Ο λογαριασμός σας θα είναι λιγότερο ασφαλής χωρίς ενεργοποιημένο 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Σφάλμα"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Κάθε συνεισφορά, μικρή ή μεγάλη, κάνει τεράστια διαφορά στο έργο.<0/>Σας ευχαριστούμε για την υποστήριξή σας!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Κάθε συνεισφορά, μικρή ή μεγάλη, κάνει τ
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Όλα όσα χρειάζεστε για να δημιουργήσετε, να προσαρμόσετε και να μοιραστείτε επαγγελματικά βιογραφικά σημειώματα. Δημιουργήθηκε με γνώμονα το απόρρητο, βασισμένο σε ανοικτό κώδικα και εντελώς δωρεάν για πάντα."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Έξοδος από τη λειτουργία εστίασης"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Έξοδος από πλήρη οθόνη"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Μορφή"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Μορφοποίηση φύλλου στυλ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Δωρεάν"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Φωτεινό"
|
||||
msgid "Light theme"
|
||||
msgstr "Φωτεινό θέμα"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Γραμμή {0}, στήλη {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Ύψος γραμμής"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Νορβηγικά"
|
||||
msgid "Not connected"
|
||||
msgstr "Δεν είναι συνδεδεμένο"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Ανοιχτός βοηθός τεχνητής νοημοσύνης"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Άνοιγμα προγράμματος email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Άνοιγμα λειτουργίας εστίασης"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Άνοιγμα στο Builder"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Συμβατό με OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Πατήστε <0>Enter</0> για να ανοίξετε"
|
||||
msgid "Preview"
|
||||
msgstr "Πρεμιέρα"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Η προεπισκόπηση και η εξαγωγή χρησιμοποιούν την τελευταία έγκυρη έκδοση."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Βασικό χρώμα"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Αντιδραστικό βιογραφικό v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Αντιδραστικό βιογραφικό σημείωμα v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Ανάγνωση…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Έτοιμο για ενεργοποίηση"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Έτοιμο για ενεργοποίηση με προειδοποιήσεις"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Παραλήπτης"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Ορθογώνιο (πλήρους πλάτους)"
|
||||
msgid "Redo"
|
||||
msgstr "Ξανακάνω"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Επανάληψη επεξεργασίας φύλλου στυλ"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Επαναφορά κωδικού πρόσβασης"
|
||||
msgid "Reset Style"
|
||||
msgstr "Επαναφορά στυλ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Επαναφορά στο εφαρμοσμένο φύλλο στυλ"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Επαναφορά κωδικού πρόσβασης"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "επιλεγμένο"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Αυτο-φιλοξενία με Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Φύλλο στυλ σημασιολογικού CSS"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Τα σημασιολογικά στυλ παραμένουν ενεργά"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Αποστολή μηνύματος"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Διακριτική διαγραφή"
|
||||
msgid "Strong fit"
|
||||
msgstr "Ισχυρή καταλληλότητα"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Επεξεργαστής φύλλου στυλ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Το φύλλο στυλ έχει σφάλματα"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Η σελίδα που αναζητάτε ενδέχεται να έχε
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Ο κωδικός πρόσβασης που εισάγατε είναι λανθασμένος"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Δεν ήταν δυνατή η ενημέρωση της προεπισκόπησης βιογραφικού σημειώματος. Η τελευταία έγκυρη προεπισκόπηση εξακολουθεί να εμφανίζεται."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Το βιογραφικό σημείωμα στο οποίο προσπαθείτε να αποκτήσετε πρόσβαση προστατεύεται με κωδικό πρόσβασης"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Αυτή η καταχώριση θα διαγραφεί οριστικ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Αυτή η λειτουργία απαιτεί έναν συνδεδεμένο πάροχο τεχνητής νοημοσύνης. Ορίστε έναν στις ρυθμίσεις."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Αυτή η παρουσία δεν επιτρέπει προς το παρόν την επεξεργασία σημασιολογικού CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Αυτό είναι ένα φιλικό προς το URL όνομα για το βιογραφικό σας σημείωμα."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Υπογράμμιση"
|
||||
msgid "Undo"
|
||||
msgstr "Ξεκάνω"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Αναίρεση επεξεργασίας φύλλου στυλ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Απεριόριστα βιογραφικά σημειώματα"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Τα δεδομένα σας αποθηκεύονται με ασφάλ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Δεν ήταν δυνατή η αποθήκευση των τελευταίων αλλαγών σας."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Τα παλαιότερα στυλ σας παραμένουν ενεργά μέχρι να ενεργοποιήσετε ρητά αυτό το προσχέδιο Semantic CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ο κωδικός πρόσβασής σας επαναφέρθηκε με επιτυχία. Τώρα μπορείτε να συνδεθείτε με τον νέο σας κωδικό πρόσβασης."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: en_GB\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: English, United Kingdom\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Account menu"
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activate Semantic CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Actual size (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Applications sent per week (last 8 weeks)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Applied"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Applied on"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Applied Rules"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Applied with warnings"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabic"
|
||||
@@ -800,6 +809,14 @@ msgstr "Check your email for a link to reset your password."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Check your email for a link to verify your account."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Checking"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Checking draft"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinese (Simplified)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversation copied."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Conversation JSON copied."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Converted stylesheet draft"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copied to clipboard."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copy Backup Codes"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copy JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copy stylesheet"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copy this secret key and use it in your applications to access your data."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Edit {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edit application"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Edit color {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Enter your password to confirm setting up two-factor authentication. Whe
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Every contribution, big or small, makes a huge difference to the project
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Everything you need to create, customise, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Exit focus mode"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Exit fullscreen"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Format stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Free"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Light"
|
||||
msgid "Light theme"
|
||||
msgstr "Light theme"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Line {0}, column {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Line Height"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norwegian"
|
||||
msgid "Not connected"
|
||||
msgstr "Not connected"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Open AI assistant"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Open Email Client"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Open focus mode"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Open in builder"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-compatible"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Press <0>Enter</0> to open"
|
||||
msgid "Preview"
|
||||
msgstr "Preview"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Preview and export use the last valid version."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primary Colour"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Reading…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Ready to activate"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Ready to activate with warnings"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Recipient"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rectangle (Full Width)"
|
||||
msgid "Redo"
|
||||
msgstr "Redo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Redo stylesheet edit"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Reset Password"
|
||||
msgid "Reset Style"
|
||||
msgstr "Reset Style"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Reset to applied stylesheet"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Reset your password"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "selected"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-Host with Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantic CSS stylesheet"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantic styles remain active"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Send message"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Strike"
|
||||
msgid "Strong fit"
|
||||
msgstr "Strong fit"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stylesheet editor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylesheet has errors"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "The page you're looking for may have been moved or no longer exists."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "The password you entered is incorrect"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "The resume preview could not be updated. The last valid preview is still shown."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "The resume you are trying to access is password protected"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "This entry will be permanently deleted. This can't be undone."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "This instance does not currently allow Semantic CSS editing."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "This is a URL-friendly name for your resume."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Underline"
|
||||
msgid "Undo"
|
||||
msgstr "Undo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Undo stylesheet edit"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Unlimited Resumes"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Your data is stored securely and is never shared with third parties. You
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Your latest changes could not be saved."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Your password has been reset successfully. You can now sign in with your new password."
|
||||
|
||||
@@ -158,6 +158,10 @@ msgstr "Account menu"
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activate Semantic CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Actual size (100%)"
|
||||
@@ -477,6 +481,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Applications sent per week (last 8 weeks)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Applied"
|
||||
|
||||
@@ -488,6 +493,10 @@ msgstr "Applied on"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Applied Rules"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Applied with warnings"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabic"
|
||||
@@ -795,6 +804,14 @@ msgstr "Check your email for a link to reset your password."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Check your email for a link to verify your account."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Checking"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Checking draft"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinese (Simplified)"
|
||||
@@ -961,6 +978,10 @@ msgstr "Conversation copied."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Conversation JSON copied."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Converted stylesheet draft"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copied to clipboard."
|
||||
@@ -984,6 +1005,10 @@ msgstr "Copy Backup Codes"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copy JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copy stylesheet"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copy this secret key and use it in your applications to access your data."
|
||||
@@ -1540,6 +1565,11 @@ msgstr "Edit {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edit application"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Edit color {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1669,6 +1699,10 @@ msgstr "Enter your password to confirm setting up two-factor authentication. Whe
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
@@ -1677,6 +1711,10 @@ msgstr "Every contribution, big or small, makes a huge difference to the project
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Exit focus mode"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Exit Fullscreen"
|
||||
@@ -1996,6 +2034,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Format stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Free"
|
||||
@@ -2579,6 +2621,12 @@ msgstr "Light"
|
||||
msgid "Light theme"
|
||||
msgstr "Light theme"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Line {0}, column {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Line Height"
|
||||
@@ -2913,6 +2961,10 @@ msgstr "Norwegian"
|
||||
msgid "Not connected"
|
||||
msgstr "Not connected"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr "Not sure what to write?"
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2963,6 +3015,10 @@ msgstr "Open AI assistant"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Open Email Client"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Open focus mode"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Open in builder"
|
||||
@@ -2987,6 +3043,7 @@ msgstr "OpenAI-compatible"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3262,6 +3319,10 @@ msgstr "Press <0>Enter</0> to open"
|
||||
msgid "Preview"
|
||||
msgstr "Preview"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Preview and export use the last valid version."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primary Color"
|
||||
@@ -3369,10 +3430,22 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr "Read the Applying Custom Styles guide."
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Reading…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Ready to activate"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Ready to activate with warnings"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Recipient"
|
||||
@@ -3389,6 +3462,10 @@ msgstr "Rectangle (Full Width)"
|
||||
msgid "Redo"
|
||||
msgstr "Redo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Redo stylesheet edit"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3490,6 +3567,10 @@ msgstr "Reset Password"
|
||||
msgid "Reset Style"
|
||||
msgstr "Reset Style"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Reset to applied stylesheet"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Reset your password"
|
||||
@@ -3786,6 +3867,14 @@ msgstr "selected"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-Host with Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantic CSS stylesheet"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantic styles remain active"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Send message"
|
||||
@@ -4147,6 +4236,14 @@ msgstr "Strike"
|
||||
msgid "Strong fit"
|
||||
msgstr "Strong fit"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stylesheet editor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylesheet has errors"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4303,6 +4400,10 @@ msgstr "The page you're looking for may have been moved or no longer exists."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "The password you entered is incorrect"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "The resume preview could not be updated. The last valid preview is still shown."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "The resume you are trying to access is password protected"
|
||||
@@ -4376,6 +4477,10 @@ msgstr "This entry will be permanently deleted. This can't be undone."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "This instance does not currently allow Semantic CSS editing."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "This is a URL-friendly name for your resume."
|
||||
@@ -4634,6 +4739,10 @@ msgstr "Underline"
|
||||
msgid "Undo"
|
||||
msgstr "Undo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Undo stylesheet edit"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Unlimited Resumes"
|
||||
@@ -5008,6 +5117,10 @@ msgstr "Your data is stored securely and is never shared with third parties. You
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Your latest changes could not be saved."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Your password has been reset successfully. You can now sign in with your new password."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menú de cuenta"
|
||||
msgid "Actions"
|
||||
msgstr "Acciones"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activar CSS semántico"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Tamaño real (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidaturas enviadas por semana (últimas 8 semanas)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Enviada"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Postulado el"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Reglas aplicadas"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Aplicado con advertencias"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Árabe"
|
||||
@@ -800,6 +809,14 @@ msgstr "Revisa tu correo electrónico para encontrar un enlace para restablecer
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Revisa tu correo electrónico para encontrar un enlace para verificar tu cuenta."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "De cheques"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Borrador de comprobación"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chino (simplificado)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversación copiada."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON de conversación copiada."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Borrador de hoja de estilo convertido"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiado al portapapeles."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copiar códigos de respaldo"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copiar JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copiar hoja de estilo"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copia esta clave secreta y úsala en tus aplicaciones para acceder a tus datos."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Edite {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Editar candidatura"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Editar color {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Introduce tu contraseña para confirmar la configuración de la autentic
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Introduce tu contraseña para deshabilitar la autenticación de doble factor. Tu cuenta será menos segura sin 2FA habilitada."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Cada contribución, grande o pequeña, marca una gran diferencia para el proyecto.<0/>¡Gracias por tu apoyo!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Cada contribución, grande o pequeña, marca una gran diferencia para el
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Todo lo que necesitas para crear, personalizar y compartir currículums profesionales. Creado con la privacidad en mente, impulsado por el código abierto y completamente gratis para siempre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Salir del modo de enfoque"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Salir de pantalla completa"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formato"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Hoja de estilo de formato"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Claro"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema claro"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Línea {0}, columna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Altura de la línea"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Noruego"
|
||||
msgid "Not connected"
|
||||
msgstr "No conectado"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr "¿No sabes qué escribir?"
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Asistente de IA abierta"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Abrir cliente de correo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Modo de enfoque abierto"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Abrir en constructor"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatible con OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Pulse <0>Intro</0> para abrir"
|
||||
msgid "Preview"
|
||||
msgstr "Avance"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "La vista previa y la exportación utilizan la última versión válida."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Color primario"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reanudación reactiva v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Currículum reactivo v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Leyendo…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Listo para activar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Listo para activarse con advertencias"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatario"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rectángulo (ancho completo)"
|
||||
msgid "Redo"
|
||||
msgstr "Rehacer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Rehacer la edición de la hoja de estilos"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Restablecer contraseña"
|
||||
msgid "Reset Style"
|
||||
msgstr "Restablecer estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Restablecer a la hoja de estilos aplicada"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Restablecer tu contraseña"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "seleccionado"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Auto alojamiento con Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Hoja de estilo CSS semántica"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Los estilos semánticos siguen activos"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Enviar mensaje"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Tachado"
|
||||
msgid "Strong fit"
|
||||
msgstr "Buen encaje"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor de hojas de estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "La hoja de estilos tiene errores."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Es posible que la página que buscas se haya movido o que ya no exista."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "La contraseña que introdujiste es incorrecta"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "No se pudo actualizar la vista previa del currículum. Todavía se muestra la última vista previa válida."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "El currículum al que intentas acceder está protegido con contraseña"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Esta entrada se eliminará permanentemente. Esta acción no se puede des
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Esta función requiere un proveedor de IA conectado. Por favor, configure uno en los ajustes."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Actualmente, esta instancia no permite la edición de CSS semántico."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Este es un nombre compatible con URL para tu currículum."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Subrayado"
|
||||
msgid "Undo"
|
||||
msgstr "Deshacer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Deshacer la edición de la hoja de estilos"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Currículums ilimitados"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Tus datos se almacenan de forma segura y nunca se comparten con terceros
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "No se pudieron guardar los últimos cambios."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Tus estilos heredados permanecerán activos hasta que actives explícitamente este borrador de CSS semántico."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Tu contraseña se ha restablecido correctamente. Ahora puedes iniciar sesión con tu nueva contraseña."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fa\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Persian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "منوی حساب کاربری"
|
||||
msgid "Actions"
|
||||
msgstr "اقدامات"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "فعال کردن CSS معنایی"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "اندازه واقعی (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "درخواستهای ارسالشده در هفته (۸ هفته گذشته)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "ارسالشده"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "تاریخ درخواست"
|
||||
msgid "Applied Rules"
|
||||
msgstr "قوانین کاربردی"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "با هشدارها اعمال میشود"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "عربی"
|
||||
@@ -800,6 +809,14 @@ msgstr "ایمیل خود را برای لینکی جهت تنظیم مجدد گ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "ایمیل خود را برای لینکی جهت تأیید حسابتان بررسی کنید."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "بررسی"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "بررسی پیشنویس"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "چینی (سادهشده)"
|
||||
@@ -966,6 +983,10 @@ msgstr "مکالمه کپی شد."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON مکالمه کپی شد."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "پیشنویس شیوهنامه تبدیلشده"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "در کلیپبورد کپی شد."
|
||||
@@ -989,6 +1010,10 @@ msgstr "کپی کردن کدهای پشتیبان"
|
||||
msgid "Copy JSON"
|
||||
msgstr "کپی کردن JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "کپی کردن شیوهنامه"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "این کلید مخفی را کپی کنید و برای دسترسی به دادههای خود در اپلیکیشنهایتان از آن استفاده کنید."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "ویرایش {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "ویرایش درخواست"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "ویرایش رنگ {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "برای تأیید راهاندازی احراز هویت دو مر
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "برای غیرفعال کردن احراز هویت دو مرحلهای گذرواژهٔ خود را وارد کنید. بدون فعال بودن 2FA حساب شما امنیت کمتری خواهد داشت."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "خطا"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "هر مشارکت، چه بزرگ چه کوچک، تفاوت بزرگی در این پروژه ایجاد میکند.<0/>از حمایت شما سپاسگزاریم!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "هر مشارکت، چه بزرگ چه کوچک، تفاوت بزرگی
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "همهچیزی که برای ایجاد، شخصیسازی و اشتراکگذاری رزومههای حرفهای نیاز دارید. با تمرکز بر حریم خصوصی ساخته شده، با متنباز قدرت گرفته و برای همیشه کاملاً رایگان است."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "خروج از حالت فوکوس"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "خروج از حالت تمامصفحه"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "فرمت"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "قالببندی برگه سبک"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "رایگان"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "روشن"
|
||||
msgid "Light theme"
|
||||
msgstr "تم روشن"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "خط {0}، ستون {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "فاصلهٔ بین خطوط"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "نروژی"
|
||||
msgid "Not connected"
|
||||
msgstr "متصل نیست"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "دستیار هوش مصنوعی را باز کنید"
|
||||
msgid "Open Email Client"
|
||||
msgstr "باز کردن کلاینت ایمیل"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "حالت فوکوس را باز کنید"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "باز کردن در سازنده"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "سازگار با OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "روتر آزاد"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "برای باز کردن <0>Enter را</0> فشار دهید"
|
||||
msgid "Preview"
|
||||
msgstr "پیشنمایش"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "پیشنمایش و خروجی گرفتن از آخرین نسخه معتبر."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "رنگ اصلی"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "رزومه واکنشی نسخه<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "رزومهٔ واکنشی نسخهٔ ۴ (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "در حال خواندن…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "آماده فعال سازی"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "آماده فعال شدن با هشدارها"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "گیرنده"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "مستطیل (تمامعرض)"
|
||||
msgid "Redo"
|
||||
msgstr "از نو انجام دادن"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "ویرایش استایلشیت را دوباره انجام دهید"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "تنظیم مجدد گذرواژه"
|
||||
msgid "Reset Style"
|
||||
msgstr "تنظیم مجدد سبک"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "تنظیم مجدد به شیوهنامه اعمال شده"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "تنظیم مجدد گذرواژهٔ شما"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "انتخابشده"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "میزبانی خودکار با Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "شیوهنامه CSS معنایی"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "سبکهای معنایی فعال میمانند"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "ارسال پیام"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "خطخورده"
|
||||
msgid "Strong fit"
|
||||
msgstr "تناسب قوی"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "ویرایشگر استایلشیت"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "استایلشیت خطا دارد"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "ردیت"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "ممکن است صفحهای که به دنبال آن هستید،
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "گذرواژهای که وارد کردهاید نادرست است"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "پیشنمایش رزومه قابل بهروزرسانی نیست. آخرین پیشنمایش معتبر هنوز نمایش داده میشود."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "رزومهای که میخواهید به آن دسترسی پیدا کنید با گذرواژه محافظت شده است"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "این ورودی برای همیشه حذف خواهد شد. این ک
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "این ویژگی به یک ارائهدهنده هوش مصنوعی متصل نیاز دارد. لطفاً یکی را در تنظیمات تنظیم کنید."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "این نمونه در حال حاضر امکان ویرایش CSS معنایی را فراهم نمیکند."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "این یک نام مناسب برای URLِ رزومه شما است."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "زیرخط"
|
||||
msgid "Undo"
|
||||
msgstr "لغو"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "ویرایش برگه سبک را لغو کنید"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "رزومههای نامحدود"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "دادههای شما بهطور ایمن ذخیره شده و ه
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "آخرین تغییرات شما ذخیره نشد."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "سبکهای قدیمی شما تا زمانی که صریحاً این پیشنویس CSS معنایی را فعال نکنید، فعال میمانند."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "گذرواژهٔ شما با موفقیت تنظیم مجدد شد. اکنون میتوانید با گذرواژهٔ جدید خود وارد شوید."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fi\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Tilivalikko"
|
||||
msgid "Actions"
|
||||
msgstr "Toiminnot"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivoi semanttinen CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Todellinen koko (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Lähetetyt hakemukset viikoittain (viimeiset 8 viikkoa)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Haettu"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Haettu"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Sovelletut säännöt"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Käytetty varoituksilla"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "arabia"
|
||||
@@ -800,6 +809,14 @@ msgstr "Tarkista sähköpostisi linkin löytämiseksi salasanan palauttamiseksi.
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Tarkista sähköpostisi linkin löytämiseksi tilisi vahvistamiseksi."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Tarkistetaan"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Luonnoksen tarkistaminen"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "kiina (yksinkertaistettu)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Keskustelu kopioitu."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Keskustelun JSON-tiedosto kopioitu."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Muunnettu tyylitiedoston luonnos"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopioitu leikepöydälle."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopioi varmuuskoodit"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopioi JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopioi tyylitiedosto"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopioi tämä salainen avain ja käytä sitä sovelluksissasi tietojesi käsittelyyn."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Muokkaa {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Muokkaa hakemusta"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Muokkaa väriä {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Syötä salasanasi vahvistaaksesi kaksivaiheisen todennuksen käyttöön
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Syötä salasanasi poistaaksesi kaksivaiheisen todennuksen käytöstä. Tilisi on vähemmän suojattu ilman 2FA:ta."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Virhe"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Jokainen panos, suuri tai pieni, vaikuttaa valtavasti projektiin.<0/>Kiitos tuestasi!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Jokainen panos, suuri tai pieni, vaikuttaa valtavasti projektiin.<0/>Kii
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Kaikki, mitä tarvitset ammattimaisen ansioluettelon luomiseen, mukauttamiseen ja jakamiseen. Rakennettu yksityisyys edellä, avoimen lähdekoodin voimin ja täysin ilmainen ikuisesti."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Poistu tarkennustilasta"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Poistu koko näytöstä"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Muoto"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Muotoile tyylitiedosto"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Ilmainen"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Vaalea"
|
||||
msgid "Light theme"
|
||||
msgstr "Vaalea teema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Rivi {0}, sarake {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Riviväli"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "norja"
|
||||
msgid "Not connected"
|
||||
msgstr "Ei yhdistetty"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Avoin tekoälyavustaja"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Avaa sähköpostiohjelma"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Avoin tarkennustila"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Avaa rakentajassa"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-yhteensopiva"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Paina <0>Enter</0> avataksesi"
|
||||
msgid "Preview"
|
||||
msgstr "Esikatselu"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Esikatsele ja vie käyttämällä viimeisintä kelvollista versiota."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Pääväri"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiivinen ansioluettelo v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktiivinen ansioluettelo v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Luetaan…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Valmis aktivoitavaksi"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Valmis aktivoitavaksi varoituksilla"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Vastaanottaja"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Suorakulmio (täysi leveys)"
|
||||
msgid "Redo"
|
||||
msgstr "Tee uudelleen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Tee tyylitiedoston muokkaus uudelleen"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Palauta salasana"
|
||||
msgid "Reset Style"
|
||||
msgstr "Palauta tyyli"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Palauta käytettyyn tyylitiedostoon"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Palauta salasanasi"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "valittu"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Itse-isännöinti Dockerilla"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semanttinen CSS-tyylitiedosto"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semanttiset tyylit pysyvät aktiivisina"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Lähetä viesti"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Yliviivaus"
|
||||
msgid "Strong fit"
|
||||
msgstr "Vahva sopivuus"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Tyylitiedostoeditori"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Tyylitiedostossa on virheitä"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Etsimäsi sivu on ehkä siirretty tai sitä ei enää ole."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Syöttämäsi salasana on virheellinen"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Ansioluettelon esikatselua ei voitu päivittää. Viimeisin kelvollinen esikatselu näkyy edelleen."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Ansioluettelo, johon yrität päästä, on salasanalla suojattu"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Tämä merkintä poistetaan pysyvästi. Tätä ei voi kumota."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Tämä ominaisuus vaatii yhdistetyn tekoälypalveluntarjoajan. Määritä sellainen asetuksissa."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Tämä instanssi ei tällä hetkellä salli semanttisen CSS:n muokkausta."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Tämä on URL-ystävällinen nimi ansioluettelollesi."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Alleviivaus"
|
||||
msgid "Undo"
|
||||
msgstr "Kumoa"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Kumoa tyylitiedoston muokkaus"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Rajoittamattomasti ansioluetteloita"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Tietosi tallennetaan turvallisesti eikä niitä koskaan jaeta kolmansill
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Viimeisimpiä muutoksiasi ei voitu tallentaa."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Vanhat tyylisi pysyvät aktiivisina, kunnes aktivoit tämän semanttisen CSS-luonnoksen erikseen."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Salasanasi on palautettu onnistuneesti. Voit nyt kirjautua sisään uudella salasanallasi."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu du compte"
|
||||
msgid "Actions"
|
||||
msgstr "Actes"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activer le CSS sémantique"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Taille réelle (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidatures envoyées par semaine (8 dernières semaines)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Candidature envoyée"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Postulé le"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Règles appliquées"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Appliqué avec avertissements"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabe"
|
||||
@@ -800,6 +809,14 @@ msgstr "Consultez votre messagerie pour obtenir un lien pour réinitialiser votr
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Consultez votre messagerie pour obtenir un lien pour vérifier votre compte."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Vérification"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Vérification du brouillon"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinois (simplifié)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversation copiée."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Conversation JSON copiée."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Brouillon de feuille de style converti"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copié dans le presse-papiers."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copier les codes de secours"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copier le JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copier la feuille de style"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copiez cette clé secrète et utilisez-la dans vos applications pour accéder à vos données."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Modifier {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Modifier la candidature"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Modifier la couleur {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Saisissez votre mot de passe pour confirmer la configuration de l'authen
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Saisissez votre mot de passe pour désactiver l'authentification à deux facteurs. Votre compte sera moins sécurisé si l'authentification à deux facteurs n'est pas activée."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Chaque contribution, petite ou grande, fait une énorme différence pour le projet.<0/>Merci pour votre soutien !"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Chaque contribution, petite ou grande, fait une énorme différence pour
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tout ce dont vous avez besoin pour créer, personnaliser et partager des CV professionnels. Construit dans le respect de la vie privée, propulsé par l'open source, et entièrement gratuit pour toujours."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Quitter le mode de mise au point"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Quitter le mode plein écran"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Feuille de style de format"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuit"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Clair"
|
||||
msgid "Light theme"
|
||||
msgstr "Thème clair"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Ligne {0}, colonne {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Hauteur de ligne"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvégien"
|
||||
msgid "Not connected"
|
||||
msgstr "Non connecté"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Assistant Open AI"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Ouvrir le client de messagerie"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Mode de mise au point ouvert"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Ouvrir dans le constructeur"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatible avec OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Appuyez sur <0>Entrée</0> pour ouvrir"
|
||||
msgid "Preview"
|
||||
msgstr "Aperçu"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "L'aperçu et l'exportation utilisent la dernière version valide."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Couleur principale"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "React Resume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lecture…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Prêt à activer"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Prêt à être activé avec avertissements"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinataire"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rectangle (pleine largeur)"
|
||||
msgid "Redo"
|
||||
msgstr "Refaire"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Rétablir la modification de la feuille de style"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Réinitialiser le mot de passe"
|
||||
msgid "Reset Style"
|
||||
msgstr "Réinitialiser le style"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Réinitialiser la feuille de style appliquée"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Réinitialisez votre mot de passe"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "sélectionné"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Auto-hébergement avec Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Feuille de style CSS sémantique"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Les styles sémantiques restent actifs"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Envoyer un message"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Barré"
|
||||
msgid "Strong fit"
|
||||
msgstr "Forte adéquation"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Éditeur de feuilles de style"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "La feuille de style contient des erreurs"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "La page que vous recherchez a peut-être été déplacée ou n'existe pl
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Le mot de passe saisi est incorrect"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "L'aperçu du CV n'a pas pu être mis à jour. Le dernier aperçu valide est toujours affiché."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Le CV auquel vous essayez d'accéder est protégé par un mot de passe"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Cette entrée sera supprimée définitivement. Cette action est irréver
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Cette fonctionnalité nécessite un fournisseur d'IA connecté. Veuillez en configurer un dans les paramètres."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Cette instance ne permet actuellement pas l'édition CSS sémantique."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Il s'agit d'un nom convivial pour l'URL de votre CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Souligner"
|
||||
msgid "Undo"
|
||||
msgstr "Défaire"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Annuler la modification de la feuille de style"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "CVs illimités"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Vos données sont stockées en toute sécurité et ne sont jamais partag
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Vos dernières modifications n'ont pas pu être enregistrées."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Vos styles hérités restent actifs jusqu'à ce que vous activiez explicitement ce brouillon CSS sémantique."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Votre mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: he\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "תפריט חשבון"
|
||||
msgid "Actions"
|
||||
msgstr "פעולות"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "הפעלת CSS סמנטי"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "גודל אמיתי (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "מועמדויות שנשלחו בשבוע (8 השבועות האחרונים)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "הוגש"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "הוגש בתאריך"
|
||||
msgid "Applied Rules"
|
||||
msgstr "כללים יישומיים"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "יושם עם אזהרות"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "ערבית"
|
||||
@@ -800,6 +809,14 @@ msgstr "נא לבדוק את הדוא״ל שלך לקישור לאיפוס הס
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "נא לבדוק את הדוא״ל שלך לקישור לאימות החשבון."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "בודק"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "בודק טיוטה"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "סינית (מופשטת)"
|
||||
@@ -966,6 +983,10 @@ msgstr "השיחה הועתקה."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "קובץ JSON של השיחה הועתק."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "טיוטת גיליון סגנונות שהומרה"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "הועתק ללוח."
|
||||
@@ -989,6 +1010,10 @@ msgstr "העתקת קודי גיבוי"
|
||||
msgid "Copy JSON"
|
||||
msgstr "העתקת JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "העתקת גיליון סגנונות"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "העתק את המפתח הסודי הזה והשתמש בו ביישומים שלך כדי לגשת לנתונים שלך."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "ערוך {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "ערוך מועמדות"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "עריכת צבע {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "הזן את הסיסמה שלך כדי לאשר הגדרת אימות ד
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "הזן את הסיסמה שלך כדי להשבית אימות דו־שלבי. החשבון שלך יהיה פחות מאובטח ללא אימות דו־שלבי."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "שְׁגִיאָה"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "כל תרומה, קטנה כגדולה, עושה הבדל גדול למיזם.<0/>תודה על התמיכה!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "כל תרומה, קטנה כגדולה, עושה הבדל גדול למ
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "כל מה שצריך כדי ליצור, להתאים אישית ולשתף קורות חיים מקצועיים. נבנה עם דגש על פרטיות, מונע בקוד פתוח וחינמי לחלוטין לנצח."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "יציאה ממצב מיקוד"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "יציאה ממסך מלא"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "תבנית"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "עיצוב גיליון סגנונות"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "חינמי"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "בהירה"
|
||||
msgid "Light theme"
|
||||
msgstr "ערכת עיצוב בהירה"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "שורה {0}, עמודה {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "גובה שורה"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "נורווגית"
|
||||
msgid "Not connected"
|
||||
msgstr "לא מחובר"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "פתח את עוזר הבינה המלאכותית"
|
||||
msgid "Open Email Client"
|
||||
msgstr "פתיחת תוכנת הדוא\"ל"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "פתיחת מצב מיקוד"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "פתח בבונה"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "תואם ל-OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "לחץ על <0>Enter</0> כדי לפתוח"
|
||||
msgid "Preview"
|
||||
msgstr "תצוגה מקדימה"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "תצוגה מקדימה וייצוא משתמשים בגרסה התקינה האחרונה."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "צבע עיקרי"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "קורות חיים ריאקטיביים v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "קורות חיים תגובתיים גרסה 4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "קורא…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "מוכן להפעלה"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "מוכן להפעלה עם אזהרות"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "נמען"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "מלבן (רוחב מלא)"
|
||||
msgid "Redo"
|
||||
msgstr "לַעֲשׂוֹת שׁוּב"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "בצע שוב עריכת גיליון סגנונות"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "איפוס סיסמה"
|
||||
msgid "Reset Style"
|
||||
msgstr "איפוס סגנון"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "איפוס לגיליון הסגנונות שהוחל"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "איפוס הסיסמה שלך"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "נבחר"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "אירוח עצמי עם Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "גיליון סגנונות CSS סמנטי"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "סגנונות סמנטיים נשארים פעילים"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "שלח הודעה"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "קו חוצה"
|
||||
msgid "Strong fit"
|
||||
msgstr "התאמה חזקה"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "עורך גיליון סגנונות"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "גיליון הסגנונות מכיל שגיאות"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "סברדיט"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "ייתכן שהדף שאתה מחפש הועבר או שכבר אינו
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "הסיסמה שהזנת שגויה"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "לא ניתן היה לעדכן את התצוגה המקדימה של קורות החיים. התצוגה המקדימה האחרונה התקפה עדיין מוצגת."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "קורות החיים שאליהם ניסית לגשת מוגנים בסיסמה"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "רשומה זו תימחק לצמיתות. לא ניתן לבטל פעו
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "תכונה זו דורשת ספק בינה מלאכותית מחובר. אנא הגדר ספק כזה בהגדרות."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "מופע זה אינו מאפשר כעת עריכת CSS סמנטי."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "זהו שם ידידותי לכתובת URL עבור קורות החיים שלך."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "קו תחתון"
|
||||
msgid "Undo"
|
||||
msgstr "לְבַטֵל"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "בטל עריכת גיליון סגנונות"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "מסמכי קורות חיים ללא הגבלה"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "הנתונים שלך מאוחסנים בצורה מאובטחת ולע
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "לא ניתן היה לשמור את השינויים האחרונים שלך."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "סגנונות ה-Derospace שלך יישארו פעילים עד שתפעיל במפורש טיוטת CSS סמנטית זו."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "הסיסמה שלך אופסה בהצלחה. כעת אפשר להתחבר עם הסיסמה החדשה שלך."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: hi\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hindi\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "खाता मेनू"
|
||||
msgid "Actions"
|
||||
msgstr "कार्रवाइयाँ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "सिमेंटिक सीएसएस को सक्रिय करें"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "वास्तविक आकार (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "प्रति सप्ताह भेजे गए आवेदन (पिछले 8 सप्ताह)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "आवेदन किया"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "आवेदन की तारीख"
|
||||
msgid "Applied Rules"
|
||||
msgstr "लागू नियम"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "चेतावनी सहित लागू"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "अरबी"
|
||||
@@ -800,6 +809,14 @@ msgstr "अपना पासवर्ड रीसेट करने के
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "अपना खाता सत्यापित करने के लिए लिंक के लिए अपना ईमेल जाँचें।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "चेकिंग"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "मसौदे की जाँच"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "चीनी (सरलीकृत)"
|
||||
@@ -966,6 +983,10 @@ msgstr "बातचीत कॉपी हो गई।"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "वार्तालाप का JSON कॉपी हो गया।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "रूपांतरित स्टाइलशीट ड्राफ्ट"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "क्लिपबोर्ड पर कॉपी किया गया।"
|
||||
@@ -989,6 +1010,10 @@ msgstr "बैकअप कोड कॉपी करें"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON कॉपी करें"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "स्टाइलशीट कॉपी करें"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "इस सीक्रेट कुंजी को कॉपी करें और अपने ऐप्लिकेशन्स में अपने डेटा तक पहुँचने के लिए इसका उपयोग करें।"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "संपादित करें {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "आवेदन संपादित करें"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "रंग संपादित करें {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "दो‑कारक प्रमाणीकरण सेटअप क
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "दो‑कारक प्रमाणीकरण अक्षम करने के लिए अपना पासवर्ड दर्ज करें। 2FA सक्षम न होने पर आपका खाता कम सुरक्षित रहेगा।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "गलती"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "हर योगदान, बड़ा या छोटा, प्रोजेक्ट के लिए बहुत बड़ा अंतर लाता है।<0/>आपके समर्थन के लिए धन्यवाद!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "हर योगदान, बड़ा या छोटा, प्र
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "पेशेवर रेज़्यूमे बनाने, अनुकूलित करने और साझा करने के लिए आपको जो कुछ भी चाहिए। गोपनीयता को ध्यान में रखकर बनाया गया, ओपन‑सोर्स द्वारा संचालित और हमेशा के लिए पूरी तरह मुफ़्त।"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "फोकस मोड से बाहर निकलें"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "पूर्ण स्क्रीन से बाहर निकलें"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "फॉर्मेट"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "प्रारूप शैलीपत्र"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "मुफ़्त"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "हल्का रंग"
|
||||
msgid "Light theme"
|
||||
msgstr "लाइट थीम"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "पंक्ति {0}, स्तंभ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "पंक्ति ऊँचाई"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "नॉर्वेजियन"
|
||||
msgid "Not connected"
|
||||
msgstr "जुड़े नहीं हैं"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "ओपन एआई सहायक"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ईमेल क्लाइंट खोलें"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ओपन फोकस मोड"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "बिल्डर में खोलें"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ओपनएआई-संगत"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ओपनराउटर"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "खोलने के लिए <0>Enter</0> दबाएँ"
|
||||
msgid "Preview"
|
||||
msgstr "पूर्व दर्शन"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "पूर्वावलोकन और निर्यात के लिए अंतिम मान्य संस्करण का उपयोग करें।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "प्राथमिक रंग"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "रिएक्टिव रिज्यूम v<0>{__APP_VERSION__}</0>
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "प्रतिक्रियाशील रिज़्यूमे v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "पढ़ा जा रहा है…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "सक्रिय करने के लिए तैयार"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "चेतावनी सहित सक्रिय करने के लिए तैयार"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "प्राप्तकर्ता"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "आयत (पूर्ण चौड़ाई)"
|
||||
msgid "Redo"
|
||||
msgstr "फिर से करना"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "स्टाइलशीट संपादन को पुनः करें"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "पासवर्ड रीसेट करें"
|
||||
msgid "Reset Style"
|
||||
msgstr "शैली रीसेट करें"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "लागू स्टाइलशीट पर रीसेट करें"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "अपना पासवर्ड रीसेट करें"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "चुना गया"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "डॉकर के साथ स्व‑मेज़बान"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "सिमेंटिक सीएसएस स्टाइलशीट"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "सिमेंटिक शैलियाँ सक्रिय रहती हैं"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "मेसेज भेजें"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "स्ट्राइक"
|
||||
msgid "Strong fit"
|
||||
msgstr "मजबूत उपयुक्तता"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "स्टाइलशीट संपादक"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "स्टाइलशीट में त्रुटियाँ हैं"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "सबरेडिट"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "आप जिस पेज को ढूंढ रहे हैं, व
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "आपके द्वारा दर्ज किया गया पासवर्ड गलत है"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "रिज्यूमे का पूर्वावलोकन अपडेट नहीं हो सका। पिछला वैध पूर्वावलोकन अभी भी प्रदर्शित हो रहा है।"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "जिस रेज़्यूमे तक आप पहुँचने की कोशिश कर रहे हैं वह पासवर्ड से सुरक्षित है"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "यह प्रविष्टि स्थायी रूप से
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "इस फ़ीचर के लिए एक कनेक्टेड एआई प्रदाता की आवश्यकता है। कृपया सेटिंग्स में जाकर इसे सेट अप करें।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "यह इंस्टेंस फिलहाल सिमेंटिक सीएसएस संपादन की अनुमति नहीं देता है।"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "यह आपके रेज़्यूमे के लिए एक URL‑फ्रेंडली नाम है।"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "रेखांकित"
|
||||
msgid "Undo"
|
||||
msgstr "पूर्ववत"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "स्टाइलशीट संपादन को पूर्ववत करें"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "असीमित रेज़्यूमे"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "आपका डेटा सुरक्षित रूप से स
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "आपके नवीनतम परिवर्तन सहेजे नहीं जा सके।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "जब तक आप इस सिमेंटिक सीएसएस ड्राफ्ट को स्पष्ट रूप से सक्रिय नहीं करते, तब तक आपकी पुरानी शैलियाँ सक्रिय रहेंगी।"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "आपका पासवर्ड सफलतापूर्वक रीसेट कर दिया गया है। अब आप अपने नए पासवर्ड से साइन इन कर सकते हैं।"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: hu\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hungarian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Fiók menü"
|
||||
msgid "Actions"
|
||||
msgstr "Műveletek"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Szemantikus CSS aktiválása"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Valós méret (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Hetente elküldött jelentkezések (az elmúlt 8 hét)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Jelentkezve"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Jelentkezés dátuma"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Alkalmazott szabályok"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Figyelmeztetésekkel alkalmazva"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "arab"
|
||||
@@ -800,6 +809,14 @@ msgstr "Ellenőrizd az e‑mailedet a jelszó visszaállításához szükséges
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Ellenőrizd az e‑mailedet a fiókod megerősítéséhez szükséges linkért."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Ellenőrzés"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Vázlat ellenőrzése"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "kínai (egyszerűsített)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Beszélgetés másolva."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "A beszélgetés JSON-fájlja másolva."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Stíluslap-tervezet konvertálása"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "A vágólapra másolva."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Biztonsági kódok másolása"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON másolása"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Stíluslap másolása"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Másold ki ezt a titkos kulcsot, és használd az alkalmazásaidban az adataid eléréséhez."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Szerkesztés {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Jelentkezés szerkesztése"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Szín szerkesztése {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Add meg a jelszavadat a kétlépcsős hitelesítés beállításának me
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Add meg a jelszavadat a kétlépcsős hitelesítés kikapcsolásához. A fiókod kevésbé lesz biztonságos 2FA nélkül."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Hiba"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Minden hozzájárulás – legyen kicsi vagy nagy – hatalmas különbséget jelent a projekt számára.<0/>Köszönjük a támogatásodat!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Minden hozzájárulás – legyen kicsi vagy nagy – hatalmas különbs
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Minden, amire szükséged van professzionális önéletrajzok létrehozásához, testreszabásához és megosztásához. Adatvédelemre tervezve, nyílt forráskóddal működve és teljesen ingyen, örökre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Kilépés a fókuszmódból"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Kilépés a teljes képernyőből"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formátum"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Stíluslap formázása"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Ingyenes"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Világos"
|
||||
msgid "Light theme"
|
||||
msgstr "Világos téma"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Sor {0}, oszlop {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Sorköz"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "norvég"
|
||||
msgid "Not connected"
|
||||
msgstr "Nincs csatlakoztatva"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Nyílt AI asszisztens"
|
||||
msgid "Open Email Client"
|
||||
msgstr "E‑mail kliens megnyitása"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Nyitott fókusz mód"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Megnyitás a szerkesztőben"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-kompatibilis"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Nyomja meg az <0>Entert</0> a megnyitáshoz"
|
||||
msgid "Preview"
|
||||
msgstr "Előnézet"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Az előnézet és az exportálás a legutóbbi érvényes verziót használja."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Elsődleges szín"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktív önéletrajz v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktív önéletrajz v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Olvasás…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Aktiválásra kész"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Aktiválásra kész, figyelmeztetésekkel"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Címzett"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Téglalap (teljes szélesség)"
|
||||
msgid "Redo"
|
||||
msgstr "Újra"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Stíluslap szerkesztésének megismétlése"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Jelszó visszaállítása"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stílus visszaállítása"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Visszaállítás az alkalmazott stíluslapra"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Jelszó visszaállítása"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "kijelölve"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Önálló hosztolás Dockerrel"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Szemantikus CSS stíluslap"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "A szemantikai stílusok továbbra is aktívak"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Üzenet küldése"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Áthúzás"
|
||||
msgid "Strong fit"
|
||||
msgstr "Erős illeszkedés"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stíluslap-szerkesztő"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "A stíluslap hibákat tartalmaz"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Lehetséges, hogy a keresett oldal áthelyeződött, vagy már nem léte
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "A megadott jelszó helytelen"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Az önéletrajz előnézetét nem sikerült frissíteni. Az utolsó érvényes előnézet továbbra is látható."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "A megnyitni kívánt önéletrajz jelszóval védett"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Ez a bejegyzés véglegesen törlődik. Ezt nem lehet visszavonni."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ehhez a funkcióhoz csatlakoztatott MI-szolgáltató szükséges. Kérjük, állítson be egyet a beállításokban."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Ez a példány jelenleg nem engedélyezi a szemantikus CSS szerkesztést."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Ez az önéletrajzod URL‑barát neve."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Aláhúzás"
|
||||
msgid "Undo"
|
||||
msgstr "Visszavonás"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Stíluslap szerkesztésének visszavonása"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Korlátlan önéletrajz"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Az adataid biztonságosan tároljuk, és soha nem osztjuk meg harmadik f
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "A legutóbbi módosításokat nem sikerült menteni."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "A korábbi stílusok aktívak maradnak, amíg explicit módon nem aktiválja ezt a szemantikus CSS-tervezetet."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "A jelszavadat sikeresen visszaállítottuk. Mostantól az új jelszóval jelentkezhetsz be."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: id\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu Akun"
|
||||
msgid "Actions"
|
||||
msgstr "Tindakan"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktifkan CSS Semantik"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Ukuran sebenarnya (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Lamaran dikirim per minggu (8 minggu terakhir)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Dilamar"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Dilamar pada"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Aturan yang Diterapkan"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Diterapkan dengan peringatan"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arab"
|
||||
@@ -800,6 +809,14 @@ msgstr "Periksa email Anda untuk tautan mengatur ulang kata sandi."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Periksa email Anda untuk tautan memverifikasi akun Anda."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Memeriksa"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Memeriksa draf"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Cina (Sederhana)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Percakapan disalin."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON percakapan telah disalin."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Draf stylesheet yang telah dikonversi"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Disalin ke papan klip."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Salin Kode Cadangan"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Salin JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Salin stylesheet"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Salin kunci rahasia ini dan gunakan di aplikasi Anda untuk mengakses data Anda."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Sunting {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edit lamaran"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Edit warna {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Masukkan kata sandi Anda untuk mengonfirmasi penyiapan autentikasi dua f
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Masukkan kata sandi Anda untuk menonaktifkan autentikasi dua faktor. Akun Anda akan menjadi kurang aman tanpa 2FA diaktifkan."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Kesalahan"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Setiap kontribusi, besar atau kecil, membuat perbedaan besar bagi proyek ini.<0/>Terima kasih atas dukungan Anda!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Setiap kontribusi, besar atau kecil, membuat perbedaan besar bagi proyek
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Segala yang Anda butuhkan untuk membuat, menyesuaikan, dan membagikan resume profesional. Dibangun dengan mengutamakan privasi, didukung oleh sumber terbuka, dan sepenuhnya gratis selamanya."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Keluar dari mode fokus"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Keluar dari Layar Penuh"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Format stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Terang"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema terang"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Baris {0}, kolom {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Tinggi Baris"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norwegia"
|
||||
msgid "Not connected"
|
||||
msgstr "Tidak terhubung"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Asisten AI terbuka"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Buka Klien Email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Mode fokus terbuka"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Buka di pembangun"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Kompatibel dengan OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Tekan <0>Enter</0> untuk membuka"
|
||||
msgid "Preview"
|
||||
msgstr "Pratinjau"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Pratinjau dan ekspor menggunakan versi valid terakhir."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Warna Utama"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktif Lanjutkan v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Lanjutkan Reaktif v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Membaca…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Siap diaktifkan"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Siap diaktifkan dengan peringatan"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Penerima"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Persegi Panjang (Lebar Penuh)"
|
||||
msgid "Redo"
|
||||
msgstr "Mengulangi"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Ulangi pengeditan stylesheet"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Atur Ulang Kata Sandi"
|
||||
msgid "Reset Style"
|
||||
msgstr "Atur Ulang Gaya"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Atur ulang ke stylesheet yang diterapkan"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Atur ulang kata sandi Anda"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "dipilih"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-Host dengan Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Lembar gaya CSS semantik"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Gaya semantik tetap aktif."
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Kirim pesan"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Coret"
|
||||
msgid "Strong fit"
|
||||
msgstr "Sangat cocok"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor lembar gaya"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stylesheet memiliki kesalahan"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Halaman yang Anda cari mungkin telah dipindahkan atau sudah tidak ada la
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Kata sandi yang Anda masukkan salah"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Pratinjau resume tidak dapat diperbarui. Pratinjau valid terakhir masih ditampilkan."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Resume yang Anda coba akses dilindungi kata sandi"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Entri ini akan dihapus secara permanen. Ini tidak dapat dibatalkan."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Fitur ini memerlukan penyedia AI yang terhubung. Silakan atur di pengaturan."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Instansi ini saat ini tidak mengizinkan pengeditan CSS Semantik."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Ini adalah nama yang ramah URL untuk resume Anda."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Garis Bawah"
|
||||
msgid "Undo"
|
||||
msgstr "Membuka"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Batalkan pengeditan stylesheet"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Resume Tak Terbatas"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Data Anda disimpan dengan aman dan tidak pernah dibagikan dengan pihak k
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Perubahan terbaru Anda tidak dapat disimpan."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Gaya lama Anda tetap aktif hingga Anda secara eksplisit mengaktifkan draf CSS Semantik ini."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Kata sandi Anda telah berhasil diatur ulang. Anda sekarang dapat masuk dengan kata sandi baru Anda."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu dell'account"
|
||||
msgid "Actions"
|
||||
msgstr "Azioni"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Attiva il CSS semantico"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Dimensioni reali (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidature inviate a settimana (ultime 8 settimane)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Candidatura inviata"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Candidatura inviata il"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Regole applicate"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Applicato con avvertenze"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabo"
|
||||
@@ -800,6 +809,14 @@ msgstr "Controlla la tua email per un link per reimpostare la password."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Controlla la tua email per un link per verificare il tuo account."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Controllo"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Controllo della bozza"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Cinese (semplificato)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversazione copiata."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Copia del JSON della conversazione."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Bozza del foglio di stile convertito"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiato negli appunti."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copia codici di backup"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copia JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copia foglio di stile"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copia questa chiave segreta e usala nelle tue applicazioni per accedere ai tuoi dati."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Modifica {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Modifica candidatura"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Modifica colore {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Inserisci la tua password per confermare la configurazione dell'autentic
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Inserisci la tua password per disabilitare l'autenticazione a due fattori. Il tuo account sarà meno sicuro senza 2FA attiva."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Ogni contributo, grande o piccolo, fa una grande differenza per il progetto.<0/>Grazie per il tuo supporto!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Ogni contributo, grande o piccolo, fa una grande differenza per il proge
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tutto ciò di cui hai bisogno per creare, personalizzare e condividere curriculum professionali. Creato pensando alla privacy, alimentato dall'open source e completamente gratuito per sempre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Esci dalla modalità di messa a fuoco"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Esci dalla modalità a schermo intero"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formato"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formato foglio di stile"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuito"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Chiaro"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema chiaro"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Riga {0}, colonna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Altezza linea"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvegese"
|
||||
msgid "Not connected"
|
||||
msgstr "Non connesso"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Assistente Open AI"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Apri client email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Modalità di messa a fuoco aperta"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Apri nel generatore"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatibile con OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Premere <0>Invio</0> per aprire"
|
||||
msgid "Preview"
|
||||
msgstr "Anteprima"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "L'anteprima e l'esportazione utilizzano l'ultima versione valida."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Colore primario"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Ripresa reattiva v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Ripresa reattiva v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lettura…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Pronto per l'attivazione"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Pronto per l'attivazione con avvisi"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatario"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rettangolo (larghezza completa)"
|
||||
msgid "Redo"
|
||||
msgstr "Rifare"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Riesegui la modifica del foglio di stile"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Reimposta password"
|
||||
msgid "Reset Style"
|
||||
msgstr "Ripristina stile"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Ripristina il foglio di stile applicato"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Reimposta la tua password"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "selezionati"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-host con Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Foglio di stile CSS semantico"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Gli stili semantici rimangono attivi"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Invia messaggio"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Barrato"
|
||||
msgid "Strong fit"
|
||||
msgstr "Ottima corrispondenza"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor di fogli di stile"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Il foglio di stile presenta degli errori"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "La pagina che stai cercando potrebbe essere stata spostata o non esister
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "La password inserita non è corretta"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Impossibile aggiornare l'anteprima del curriculum. Viene ancora visualizzata l'ultima anteprima valida."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Il curriculum a cui stai cercando di accedere è protetto da password"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Questa voce verrà eliminata definitivamente. L'azione non può essere a
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Questa funzionalità richiede un provider di intelligenza artificiale connesso. Configuralo nelle impostazioni."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Questa istanza al momento non consente la modifica del CSS semantico."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Questo è un nome adatto agli URL per il tuo curriculum."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Sottolinea"
|
||||
msgid "Undo"
|
||||
msgstr "Disfare"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Annulla la modifica del foglio di stile"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Curriculum illimitati"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "I tuoi dati sono archiviati in modo sicuro e non vengono mai condivisi c
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Impossibile salvare le ultime modifiche."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "I tuoi stili legacy rimarranno attivi finché non attiverai esplicitamente questa bozza di CSS semantico."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "La tua password è stata reimpostata correttamente. Ora puoi accedere con la tua nuova password."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ja\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "アカウントメニュー"
|
||||
msgid "Actions"
|
||||
msgstr "操作"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "セマンティックCSSを有効にする"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "実寸大(100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "週ごとの応募送信数(直近8週間)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "応募済み"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "応募日"
|
||||
msgid "Applied Rules"
|
||||
msgstr "適用中のルール"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "警告付きで適用"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "アラビア語"
|
||||
@@ -800,6 +809,14 @@ msgstr "パスワードをリセットするリンクを記載したメールを
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "アカウントを認証するリンクを記載したメールを確認してください。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "チェック中"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "下書きの確認"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "中国語(簡体字)"
|
||||
@@ -966,6 +983,10 @@ msgstr "会話内容をコピーしました。"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "会話のJSONデータがコピーされました。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "変換されたスタイルシートのドラフト"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "クリップボードにコピーしました。"
|
||||
@@ -989,6 +1010,10 @@ msgstr "バックアップコードをコピー"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSONをコピー"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "スタイルシートをコピー"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "このシークレットキーをコピーし、アプリケーションで使用してデータにアクセスしてください。"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "編集 {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "応募を編集"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "色を編集 {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "二要素認証を設定することを確定するために、パスワ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "二要素認証を無効にするには、パスワードを入力してください。2FA を無効化すると、アカウントのセキュリティレベルは下がります。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "エラー"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "すべてのご支援は、大きくても小さくても、このプロジェクトにとって大きな力になります。<0/>ご支援ありがとうございます。"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "すべてのご支援は、大きくても小さくても、このプロ
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "プロフェッショナルな履歴書・職務経歴書を作成・カスタマイズ・共有するために必要な機能がすべて揃っています。プライバシーを重視して設計され、オープンソースによって支えられ、そして完全に無料で利用できます。"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "フォーカスモードを終了する"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "全画面表示を終了"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "フォーマット"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "書式スタイルシート"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "無料"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ライト"
|
||||
msgid "Light theme"
|
||||
msgstr "ライトテーマ"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "行 {0}、列 {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "行の高さ"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "ノルウェー語"
|
||||
msgid "Not connected"
|
||||
msgstr "接続されていません"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "OpenAIアシスタント"
|
||||
msgid "Open Email Client"
|
||||
msgstr "メールクライアントを開く"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "オープンフォーカスモード"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "ビルダーで開く"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI互換"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "<0>Enter</0>キーを押して開く"
|
||||
msgid "Preview"
|
||||
msgstr "プレビュー"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "プレビューとエクスポートには、最新の有効なバージョンを使用してください。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "メインカラー"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "リアクティブレジューム v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "読み込み中…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "起動準備完了"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "警告付きで有効化準備完了"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "宛先"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "長方形(全幅)"
|
||||
msgid "Redo"
|
||||
msgstr "やり直し"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "スタイルシートの編集をやり直す"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "パスワードをリセット"
|
||||
msgid "Reset Style"
|
||||
msgstr "スタイルをリセット"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "適用済みのスタイルシートにリセットします"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "パスワードをリセット"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "選択済み"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker でセルフホスト"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "セマンティックCSSスタイルシート"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "セマンティックスタイルは引き続き有効です"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "メッセージを送信"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "取り消し線"
|
||||
msgid "Strong fit"
|
||||
msgstr "高い適合度"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "スタイルシートエディタ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "スタイルシートにエラーがあります"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "お探しのページは移動されたか、既に存在しない可能
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "入力されたパスワードが正しくありません。"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "履歴書のプレビューを更新できませんでした。最後に有効だったプレビューが表示されたままです。"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "アクセスしようとしているレジュメはパスワードで保護されています"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "この項目は完全に削除されます。元に戻すことはでき
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "この機能を使用するには、AIプロバイダーとの接続が必要です。設定画面でプロバイダーを設定してください。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "このインスタンスでは現在、セマンティックCSSの編集はできません。"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "URLに使用されるレジュメの識別名です。"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "下線"
|
||||
msgid "Undo"
|
||||
msgstr "元に戻す"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "スタイルシートの編集を元に戻す"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "レジュメを無制限に作成"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "あなたのデータは安全に保存され、第三者と共有され
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "最新の変更内容を保存できませんでした。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "このセマンティックCSSドラフトを明示的に有効化するまで、既存のスタイルは有効なままです。"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "パスワードを正常にリセットしました。新しいパスワードでサインインできます。"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: km\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Khmer\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "ម៉ឺនុយគណនី"
|
||||
msgid "Actions"
|
||||
msgstr "សកម្មភាព"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "ធ្វើឱ្យ CSS ន័យវិទ្យាសកម្ម"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "ទំហំពិត (១០០%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "ពាក្យសុំបានផ្ញើក្នុងមួយសប្តាហ៍ (៨ សប្តាហ៍ចុងក្រោយ)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "បានដាក់ពាក្យ"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "បានដាក់ពាក្យនៅ"
|
||||
msgid "Applied Rules"
|
||||
msgstr "ច្បាប់ដែលបានអនុវត្ត"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "អនុវត្តជាមួយការព្រមាន"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabic"
|
||||
@@ -800,6 +809,14 @@ msgstr "ពិនិត្យអ៊ីមែលរបស់អ្នក
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "ពិនិត្យអ៊ីមែលរបស់អ្នកសម្រាប់តំណមួយ ដើម្បីផ្ទៀងផ្ទាត់គណនីរបស់អ្នក។"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "កំពុងត្រួតពិនិត្យ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "កំពុងពិនិត្យមើលសេចក្តីព្រាង"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinese (Simplified)"
|
||||
@@ -966,6 +983,10 @@ msgstr "បានចម្លងការសន្ទនា។"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "បានចម្លង JSON នៃការសន្ទនា។"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "សេចក្តីព្រាងសន្លឹករចនាប័ទ្មដែលបានបម្លែង"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "បានចម្លងទៅក្ដារតម្បៀតខ្ទាស់។"
|
||||
@@ -989,6 +1010,10 @@ msgstr "ចម្លងកូដបម្រុងទុក"
|
||||
msgid "Copy JSON"
|
||||
msgstr "ចម្លង JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "ចម្លងសន្លឹករចនាប័ទ្ម"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ចម្លងកូនសោសម្ងាត់នេះ ហើយប្រើវាក្នុងកម្មវិធីរបស់អ្នក ដើម្បីចូលដំណើរការទិន្នន័យរបស់អ្នក។"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "កែសម្រួល {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "កែសម្រួលពាក្យសុំ"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "កែសម្រួលពណ៌ {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "បញ្ចូលពាក្យសម្ងាត់របស់
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "បញ្ចូលពាក្យសម្ងាត់របស់អ្នក ដើម្បីបិទការផ្ទៀងផ្ទាត់ពីរជាន់។ គណនីរបស់អ្នកនឹងកាន់តែមានហានិភ័យនៅពេលមិនបានបើក 2FA ទៀត។"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "កំហុស"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "រាល់ការរួមចំណែក មួយធំនោ ឬតូច ក៏មានឥទ្ធិពលយ៉ាងច្រើនលើគម្រោងនេះ។<0/>សូមអរគុណចំពោះការគាំទ្ររបស់អ្នក!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "រាល់ការរួមចំណែក មួយធំន
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "អ្វីៗដែលអ្នកត្រូវការ ដើម្បីបង្កើត ប្ដូរតាមបំណង និងចែករំលែកប្រវត្តិរូបវិជ្ជាជីវៈ។ ត្រូវបានបង្កើតឡើងដោយគិតពីភាពឯកជន ប្រើបច្ចេកវិទ្យាបើកប្រភព ហើយឥតគិតថ្លៃទាំងស្រុង ជារៀងរហូត។"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ចេញពីរបៀបផ្តោតអារម្មណ៍"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "ចេញពីអេក្រង់ពេញ"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ទ្រង់ទ្រាយ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "សន្លឹករចនាប័ទ្មទម្រង់"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ឥតគិតថ្លៃ"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ភ្លឺ"
|
||||
msgid "Light theme"
|
||||
msgstr "ស្បែកភ្លឺ"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "ជួរ {0}, ជួរឈរ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "កម្ពស់បន្ទាត់"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norwegian"
|
||||
msgid "Not connected"
|
||||
msgstr "មិនបានភ្ជាប់"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "បើកជំនួយការ AI"
|
||||
msgid "Open Email Client"
|
||||
msgstr "បើកកម្មវិធីអ៊ីមែល"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "របៀបផ្តោតអារម្មណ៍បើកចំហ"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "បើកនៅក្នុងកម្មវិធីបង្កើត"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ឆបគ្នាជាមួយ OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "ចុច <0>Enter</0> ដើម្បីបើក"
|
||||
msgid "Preview"
|
||||
msgstr "មើលជាមុន"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ការមើលជាមុន និងការនាំចេញប្រើប្រាស់កំណែដែលមានសុពលភាពចុងក្រោយ។"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "ពណ៌មូលដ្ឋាន"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "ប្រវត្តិរូបសង្ខេបដែលមានប
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "កំពុងអាន…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "រួចរាល់ដើម្បីធ្វើឱ្យសកម្ម"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "រួចរាល់ដើម្បីធ្វើឲ្យសកម្មជាមួយនឹងការព្រមាន"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "អ្នកទទួល"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "ចតុកោណ (ទទឹងពេញ)"
|
||||
msgid "Redo"
|
||||
msgstr "ធ្វើឡើងវិញ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "ធ្វើការកែសម្រួលសន្លឹករចនាប័ទ្មឡើងវិញ"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "កំណត់ពាក្យសម្ងាត់ឡើងវិ
|
||||
msgid "Reset Style"
|
||||
msgstr "កំណត់រចនាប័ទ្មឡើងវិញ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "កំណត់ឡើងវិញទៅសន្លឹករចនាប័ទ្មដែលបានអនុវត្ត"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "កំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "បានជ្រើស"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "ដំឡើងផ្ទាល់ខ្លួនដោយប្រើ Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "សន្លឹករចនាប័ទ្ម CSS ន័យវិទ្យា"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "រចនាប័ទ្មន័យវិទ្យានៅតែសកម្ម"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "ផ្ញើសារ"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "អក្សរឆូត"
|
||||
msgid "Strong fit"
|
||||
msgstr "សមស្របខ្លាំង"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "កម្មវិធីនិពន្ធសន្លឹករចនាប័ទ្ម"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "សន្លឹករចនាប័ទ្មមានកំហុស"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "ទំព័រដែលអ្នកកំពុងស្វែងរក
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "ពាក្យសម្ងាត់ដែលអ្នកបានបញ្ចូល មិនត្រឹមត្រូវទេ"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "ការមើលជាមុននៃប្រវត្តិរូបសង្ខេបមិនអាចធ្វើបច្ចុប្បន្នភាពបានទេ។ ការមើលជាមុនដែលមានសុពលភាពចុងក្រោយនៅតែត្រូវបានបង្ហាញ។"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "ប្រវត្តិរូប ដែលអ្នកកំពុងព្យាយាមចូលដំណើរការ ត្រូវបានការពារដោយពាក្យសម្ងាត់"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ធាតុនេះនឹងត្រូវបានលុបជាអ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "មុខងារនេះតម្រូវឱ្យមានអ្នកផ្តល់សេវា AI ដែលបានភ្ជាប់។ សូមដំឡើងមួយនៅក្នុងការកំណត់។"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ឧទាហរណ៍នេះមិនអនុញ្ញាតឱ្យមានការកែសម្រួល CSS តាមន័យវិទ្យានៅពេលនេះទេ។"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "នេះជាឈ្មោះងាយស្រួលសម្រាប់ប្រើនៅក្នុង URL សម្រាប់ប្រវត្តិរូបរបស់អ្នក។"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "គូសបន្ទាត់ក្រោម"
|
||||
msgid "Undo"
|
||||
msgstr "មិនធ្វើវិញ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "មិនធ្វើការកែសម្រួលសន្លឹករចនាប័ទ្មវិញ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "ប្រវត្តិរូបមិនមានដែនកំណត់"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "ទិន្នន័យរបស់អ្នកត្រូវ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "មិនអាចរក្សាទុកការផ្លាស់ប្តូរចុងក្រោយបំផុតរបស់អ្នកបានទេ។"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "រចនាប័ទ្មចាស់របស់អ្នកនៅតែសកម្មរហូតដល់អ្នកធ្វើឱ្យសេចក្តីព្រាង CSS Semantic នេះសកម្មយ៉ាងច្បាស់លាស់។"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "ពាក្យសម្ងាត់របស់អ្នកត្រូវបានកំណត់ឡើងវិញដោយជោគជ័យ។ ឥឡូវអ្នកអាចចូលដោយប្រើពាក្យសម្ងាត់ថ្មីរបស់អ្នកបានហើយ។"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: kn\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Kannada\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "ಖಾತೆ ಮೆನು"
|
||||
msgid "Actions"
|
||||
msgstr "ಕ್ರಿಯೆಗಳು"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "ಲಾಕ್ಷಣಿಕ CSS ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "ನಿಜವಾದ ಗಾತ್ರ (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "ಪ್ರತಿ ವಾರ ಕಳುಹಿಸಿದ ಅರ್ಜಿಗಳು (ಕೊನೆಯ 8 ವಾರಗಳು)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "ಅರ್ಜಿಸಲಾಗಿದೆ"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "ಅರ್ಜಿ ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ"
|
||||
msgid "Applied Rules"
|
||||
msgstr "ಅನ್ವಯವಾಗುವ ನಿಯಮಗಳು"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "ಎಚ್ಚರಿಕೆಗಳೊಂದಿಗೆ ಅನ್ವಯಿಸಲಾಗಿದೆ"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "ಅರೇಬಿಕ್"
|
||||
@@ -800,6 +809,14 @@ msgstr "ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ರೀಸೆಟ್ ಮಾ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಲಿಂಕ್ಗಾಗಿ ನಿಮ್ಮ ಇಮೇಲ್ ಪರಿಶೀಲಿಸಿ."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "ಡ್ರಾಫ್ಟ್ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "ಚೈನೀಸ್ (ಸರಳೀಕೃತ)"
|
||||
@@ -966,6 +983,10 @@ msgstr "ಸಂಭಾಷಣೆಯನ್ನು ನಕಲಿಸಲಾಗಿದೆ."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "ಸಂಭಾಷಣೆಯನ್ನು JSON ನಕಲಿಸಲಾಗಿದೆ."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "ಪರಿವರ್ತಿಸಲಾದ ಸ್ಟೈಲ್ಶೀಟ್ ಡ್ರಾಫ್ಟ್"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಲಾಗಿದೆ."
|
||||
@@ -989,6 +1010,10 @@ msgstr "ಬ್ಯಾಕಪ್ ಕೋಡ್ಗಳನ್ನು ನಕಲಿಸ
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON ನಕಲಿಸಿ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ನಕಲಿಸಿ"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ಈ ಸೀಕ್ರೆಟ್ ಕೀ ಅನ್ನು ನಕಲಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಬಳಸಿ."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "{chip} ಸಂಪಾದಿಸಿ"
|
||||
msgid "Edit application"
|
||||
msgstr "ಅರ್ಜಿಯನ್ನು ಸಂಪಾದಿಸಿ"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "ಬಣ್ಣವನ್ನು ಸಂಪಾದಿಸಿ {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಹೊ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ. 2FA ಸಕ್ರಿಯಗೊಳಿಸದಿದ್ದರೆ ನಿಮ್ಮ ಖಾತೆ ಕಡಿಮೆ ಸುರಕ್ಷಿತವಾಗಿರುತ್ತದೆ."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "ದೋಷ"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ಪ್ರತಿ ಕೊಡುಗೆ, ದೊಡ್ಡದಾಗಲಿ ಸಣ್ಣದಾಗಲಿ, ಯೋಜನೆಗೆ ಮಹತ್ತರವಾದ ಬದಲಾವಣೆಯನ್ನು ತರುತ್ತದೆ.<0/>ನಿಮ್ಮ ಬೆಂಬಲಕ್ಕೆ ಧನ್ಯವಾದಗಳು!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ಪ್ರತಿ ಕೊಡುಗೆ, ದೊಡ್ಡದಾಗಲಿ ಸ
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "ವೃತ್ತಿಪರ ರೆಸ್ಯೂಮ್ಗಳನ್ನು ರಚಿಸಲು, ಕಸ್ಟಮೈಸ್ ಮಾಡಲು ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಲು ನಿಮಗೆ ಬೇಕಾದ ಎಲ್ಲವೂ ಇಲ್ಲಿ ಇದೆ. ಗೌಪ್ಯತೆಯನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು, ಮುಕ್ತ-ಮೂಲದೊಂದಿಗೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ಉಚಿತವಾಗಿದೆ."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ಫೋಕಸ್ ಮೋಡ್ನಿಂದ ನಿರ್ಗಮಿಸಿ"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "ಪೂರ್ಣ ಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ಸ್ವರೂಪ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ಅನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಿ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ಉಚಿತ"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ತಿಳಿ ಬಣ್ಣ"
|
||||
msgid "Light theme"
|
||||
msgstr "ಲೈಟ್ ಥೀಮ್"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "ಸಾಲು {0}, ಕಾಲಮ್ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "ಗೆರೆಯ ಎತ್ತರ"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "ನಾರ್ವೇಜಿಯನ್"
|
||||
msgid "Not connected"
|
||||
msgstr "ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "AI ಸಹಾಯಕವನ್ನು ತೆರೆಯಿರಿ"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ಇಮೇಲ್ ಕ್ಲೈಂಟ್ ತೆರೆಯಿರಿ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ಫೋಕಸ್ ಮೋಡ್ ತೆರೆಯಿರಿ"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "ಬಿಲ್ಡರ್ನಲ್ಲಿ ತೆರೆಯಿರಿ"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI- ಹೊಂದಾಣಿಕೆ"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "ತೆರೆಯಲು <0>Enter</0> ಒತ್ತಿರಿ"
|
||||
msgid "Preview"
|
||||
msgstr "ಪೂರ್ವವೀಕ್ಷಣೆ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ಕೊನೆಯ ಮಾನ್ಯ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಪೂರ್ವವೀಕ್ಷಣೆ ಮತ್ತು ರಫ್ತು ಮಾಡಿ."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "ಪ್ರಾಥಮಿಕ ಬಣ್ಣ"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "ಪ್ರತಿಕ್ರಿಯಾತ್ಮಕ ಪುನರಾರಂಭ v
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "ರಿಯಾಕ್ಟಿವ್ ರೆಸ್ಯೂಮೇ v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "ಓದುತ್ತಿದೆ…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಿದ್ಧವಾಗಿದೆ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "ಎಚ್ಚರಿಕೆಗಳೊಂದಿಗೆ ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಿದ್ಧವಾಗಿದೆ"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "ಸ್ವೀಕೃತದಾರ"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "ಆಯತ (ಪೂರ್ಣ ಅಗಲ)"
|
||||
msgid "Redo"
|
||||
msgstr "ಮತ್ತೆಮಾಡು"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ಸಂಪಾದನೆಯನ್ನು ಮತ್ತೆ ಮಾಡಿ"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿ
|
||||
msgid "Reset Style"
|
||||
msgstr "ಶೈಲಿಯನ್ನು ಮರುಹೊಂದಿಸಿ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "ಅನ್ವಯಿಸಲಾದ ಸ್ಟೈಲ್ಶೀಟ್ಗೆ ಮರುಹೊಂದಿಸಿ"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಿ"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "ಡಾಕರ್ ಜೊತೆಗೆ ಸ್ವಯಂ ಹೋಸ್ಟ್"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "ಲಾಕ್ಷಣಿಕ CSS ಶೈಲಿ ಹಾಳೆ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "ಶಬ್ದಾರ್ಥದ ಶೈಲಿಗಳು ಸಕ್ರಿಯವಾಗಿರುತ್ತವೆ"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "ಸಂದೇಶ ಕಳುಹಿಸಿ"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "ಸ್ಟ್ರೈಕ್"
|
||||
msgid "Strong fit"
|
||||
msgstr "ಬಲವಾದ ಹೊಂದಾಣಿಕೆ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ಸಂಪಾದಕ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ದೋಷಗಳನ್ನು ಹೊಂದಿದೆ."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "ಸಬ್ರೆಡಿಟ್"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "ನೀವು ಹುಡುಕುತ್ತಿರುವ ಪುಟವು ಸ
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "ನೀವು ನಮೂದಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಸರಿಯಲ್ಲ"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "ರೆಸ್ಯೂಮ್ ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ನವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಕೊನೆಯ ಮಾನ್ಯ ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ಇನ್ನೂ ತೋರಿಸಲಾಗಿದೆ."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "ನೀವು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ರೆಸ್ಯೂಮ್ ಪಾಸ್ವರ್ಡ್ರಿಂದ ರಕ್ಷಿಸಲಾಗಿದೆ"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ಈ ನಮೂದನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ಈ ವೈಶಿಷ್ಟ್ಯಕ್ಕೆ ಸಂಪರ್ಕಿತ AI ಪೂರೈಕೆದಾರರ ಅಗತ್ಯವಿದೆ. ದಯವಿಟ್ಟು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಒಂದನ್ನು ಹೊಂದಿಸಿ."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ಈ ನಿದರ್ಶನವು ಪ್ರಸ್ತುತ ಲಾಕ್ಷಣಿಕ CSS ಸಂಪಾದನೆಯನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "ಇದು ನಿಮ್ಮ ರೆಸ್ಯೂಮ್ಗಾಗಿ URL ಗೆ ಅನುಕೂಲಕರವಾದ ಹೆಸರು."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "ಅಂಡರ್ಲೈನ್"
|
||||
msgid "Undo"
|
||||
msgstr "ರದ್ದುಗೊಳಿಸಿ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "ಸ್ಟೈಲ್ಶೀಟ್ ಸಂಪಾದನೆಯನ್ನು ರದ್ದುಗೊಳಿಸಿ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "ಅನಿಯಮಿತ ರೆಸ್ಯೂಮ್ಗಳು"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸುರಕ್ಷಿತವ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲಾಗಲಿಲ್ಲ."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "ಈ ಸೆಮ್ಯಾಂಟಿಕ್ CSS ಡ್ರಾಫ್ಟ್ ಅನ್ನು ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸುವವರೆಗೆ ನಿಮ್ಮ ಲೆಗಸಿ ಶೈಲಿಗಳು ಸಕ್ರಿಯವಾಗಿರುತ್ತವೆ."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಮರುಹೊಂದಿಸಲಾಗಿದೆ. ಈಗ ನೀವು ನಿಮ್ಮ ಹೊಸ ಪಾಸ್ವರ್ಡ್ ಬಳಸಿಕೊಂಡು ಸೈನ್ ಇನ್ ಮಾಡಬಹುದು."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ko\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Korean\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "계정 메뉴"
|
||||
msgid "Actions"
|
||||
msgstr "작업"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "시맨틱 CSS 활성화"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "실제 크기(100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "주당 보낸 지원서 (최근 8주)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "지원함"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "지원일"
|
||||
msgid "Applied Rules"
|
||||
msgstr "적용된 규칙"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "경고와 함께 적용됨"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "아랍어"
|
||||
@@ -800,6 +809,14 @@ msgstr "비밀번호를 재설정할 수 있는 링크가 이메일로 전송되
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "계정을 인증할 수 있는 링크가 이메일로 전송되었습니다."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "확인 중"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "초안 검토"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "중국어(간체)"
|
||||
@@ -966,6 +983,10 @@ msgstr "대화 내용이 복사되었습니다."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "대화 JSON이 복사되었습니다."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "변환된 스타일시트 초안"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "클립보드에 복사되었습니다."
|
||||
@@ -989,6 +1010,10 @@ msgstr "백업 코드 복사"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON 복사"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "스타일시트 복사"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "이 비밀 키를 복사해 애플리케이션에 붙여넣어 데이터에 액세스하세요."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "{chip} 수정"
|
||||
msgid "Edit application"
|
||||
msgstr "지원 편집"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "색상 편집 {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "2단계 인증을 설정하려면 비밀번호를 입력해 확인하세
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "2단계 인증을 비활성화하려면 비밀번호를 입력하세요. 2단계 인증을 사용하지 않으면 계정 보안이 낮아집니다."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "오류"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "크든 작든 모든 기여는 프로젝트에 큰 변화를 가져옵니다.<0/>후원해 주셔서 감사합니다!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "크든 작든 모든 기여는 프로젝트에 큰 변화를 가져옵
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "전문적인 이력서를 만들고, 사용자 지정하고, 공유하는 데 필요한 모든 것을 제공합니다. 개인정보 보호를 최우선으로 설계되었으며, 오픈 소스로 구동되고, 완전히 무료입니다."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "포커스 모드 종료"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "전체 화면 종료"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "용지 형식"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "서식 스타일시트"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "무료"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "라이트"
|
||||
msgid "Light theme"
|
||||
msgstr "라이트 테마"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "행 {0}, 열 {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "줄 간격"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "노르웨이어"
|
||||
msgid "Not connected"
|
||||
msgstr "연결되지 않음"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "오픈 AI 어시스턴트"
|
||||
msgid "Open Email Client"
|
||||
msgstr "이메일 클라이언트 열기"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "초점 모드 열기"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "빌더에서 열기"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI 호환"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "<0>Enter</0> 키를 눌러 열기"
|
||||
msgid "Preview"
|
||||
msgstr "시사"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "미리보기 및 내보내기 시에는 마지막으로 유효한 버전을 사용합니다."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "기본 색상"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "반응형 재개 v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "리액티브 이력서 v4(JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "읽는 중…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "활성화 준비 완료"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "경고 메시지와 함께 활성화할 준비가 되었습니다."
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "수신인"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "사각형(전체 너비)"
|
||||
msgid "Redo"
|
||||
msgstr "다시 하다"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "스타일시트 편집 다시 실행"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "비밀번호 재설정"
|
||||
msgid "Reset Style"
|
||||
msgstr "스타일 재설정"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "적용된 스타일시트로 재설정"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "비밀번호 재설정"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "선택됨"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker로 자체 호스팅"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "시맨틱 CSS 스타일시트"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "의미 스타일은 계속 활성화되어 있습니다."
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "메시지 보내기"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "취소선"
|
||||
msgid "Strong fit"
|
||||
msgstr "높은 적합도"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "스타일시트 편집기"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "스타일시트에 오류가 있습니다"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "서브레딧"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "찾으시는 페이지가 이동되었거나 더 이상 존재하지 않
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "입력하신 비밀번호가 올바르지 않습니다"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "이력서 미리보기를 업데이트할 수 없습니다. 마지막으로 유효했던 미리보기가 여전히 표시됩니다."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "접근하려는 이력서는 비밀번호로 보호되어 있습니다"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "이 항목은 영구적으로 삭제됩니다. 되돌릴 수 없습니
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "이 기능을 사용하려면 연결된 AI 제공업체가 필요합니다. 설정에서 AI 제공업체를 설정해 주세요."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "이 인스턴스에서는 현재 시맨틱 CSS 편집을 지원하지 않습니다."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "이것은 이력서에 사용할 URL 친화적인 이름입니다."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "밑줄"
|
||||
msgid "Undo"
|
||||
msgstr "끄르다"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "스타일시트 편집 취소"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "무제한 이력서"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "데이터는 안전하게 저장되며 제3자와 공유되지 않습니
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "최근 변경 내용을 저장할 수 없습니다."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "이 시맨틱 CSS 초안을 명시적으로 활성화하기 전까지는 기존 스타일이 계속 유지됩니다."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "비밀번호가 성공적으로 재설정되었습니다. 이제 새 비밀번호로 로그인할 수 있습니다."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: lt\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Paskyros meniu"
|
||||
msgid "Actions"
|
||||
msgstr "Veiksmai"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Semantinio CSS aktyvavimas"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Tikrasis dydis (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Per savaitę išsiųstos paraiškos (paskutinės 8 savaitės)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Pateikta"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Pateikta"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Taikomos taisyklės"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Taikoma su įspėjimais"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabų"
|
||||
@@ -800,6 +809,14 @@ msgstr "Patikrinkite el. paštą – ten rasite nuorodą slaptažodžiui atkurti
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Patikrinkite el. paštą – ten rasite nuorodą paskyrai patvirtinti."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Tikrinama"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Tikrinamas juodraštis"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kinų (supaprastinta)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Pokalbis nukopijuotas."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Pokalbio JSON nukopijuotas."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konvertuotas stilių lapo juodraštis"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Nukopijuota į iškarpinę."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopijuoti atsarginius kodus"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopijuoti JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopijuoti stiliaus lapą"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Nukopijuokite šį slaptą raktą ir naudokite jį savo programose duomenims pasiekti."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Redaguoti {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Redaguoti paraišką"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Redaguoti spalvą {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Įveskite slaptažodį, kad patvirtintumėte dviejų veiksnių tapatumo
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Įveskite slaptažodį, kad išjungtumėte dviejų veiksnių tapatumo patvirtinimą. Be įjungto 2FA jūsų paskyra bus mažiau saugi."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Klaida"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Kiekvienas įnašas, didelis ar mažas, daro milžinišką įtaką projektui.<0/>Ačiū už jūsų palaikymą!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Kiekvienas įnašas, didelis ar mažas, daro milžinišką įtaką proje
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Viskas, ko reikia sukurti, pritaikyti ir bendrinti profesionalius gyvenimo aprašymus. Sukurta atsižvelgiant į privatumą, paremta atviruoju kodu ir visiškai nemokama visam laikui."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Išeiti iš fokusavimo režimo"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Išeiti iš viso ekrano"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formatas"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatuoti stiliaus lapą"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Nemokama"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Šviesi"
|
||||
msgid "Light theme"
|
||||
msgstr "Šviesi tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Eilutė {0}, stulpelis {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Tarpueilio aukštis"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvegų"
|
||||
msgid "Not connected"
|
||||
msgstr "Nesusijungta"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Atidaryti dirbtinio intelekto asistentą"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Atidaryti el. pašto programą"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Atidaryti fokusavimo režimą"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Atidaryti kūrimo priemonėje"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Suderinamas su OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "\"OpenRouter\""
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Paspauskite <0>Enter</0>, kad atidarytumėte"
|
||||
msgid "Preview"
|
||||
msgstr "Peržiūra"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Peržiūrai ir eksportui naudokite paskutinę galiojančią versiją."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Pagrindinė spalva"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktyvus gyvenimo aprašymas v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktyvusis CV v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Skaitoma…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Paruošta aktyvuoti"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Paruošta aktyvuoti su įspėjimais"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Gavėjas"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Stačiakampis (visas plotis)"
|
||||
msgid "Redo"
|
||||
msgstr "Pakartoti"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Grąžinti stiliaus lapo redagavimą"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Atkurti slaptažodį"
|
||||
msgid "Reset Style"
|
||||
msgstr "Atstatyti stilių"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Atkurti pritaikytą stiliaus lapą"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Atkurkite slaptažodį"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "pasirinkta"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Savarankiškas talpinimas naudojant Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantinis CSS stiliaus lapas"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiniai stiliai išlieka aktyvūs"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Siųsti žinutę"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Perbraukti"
|
||||
msgid "Strong fit"
|
||||
msgstr "Stiprus atitikimas"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stilių lapų redaktorius"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stiliaus lape yra klaidų"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreditas"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Puslapis, kurio ieškote, galėjo būti perkeltas arba jo nebėra."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Neteisingas slaptažodis"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Nepavyko atnaujinti gyvenimo aprašymo peržiūros. Vis dar rodoma paskutinė galiojanti peržiūra."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Gyvenimo aprašymas, kurį bandote atidaryti, yra apsaugotas slaptažodžiu"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Šis įrašas bus visam laikui ištrintas. To negalima atšaukti."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Šiai funkcijai reikalingas prijungtas dirbtinio intelekto teikėjas. Nustatykite jį nustatymuose."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Šiuo metu šis egzempliorius neleidžia redaguoti semantinio CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Tai URL draugiškas jūsų gyvenimo aprašymo pavadinimas."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Pabraukti"
|
||||
msgid "Undo"
|
||||
msgstr "Atšaukti"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Atšaukti stiliaus lapo redagavimą"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Neriboti gyvenimo aprašymai"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Jūsų duomenys saugiai laikomi ir niekada nebendrinami su trečiosiomis
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Nepavyko išsaugoti naujausių pakeitimų."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Jūsų seni stiliai liks aktyvūs, kol aiškiai neaktyvuosite šio semantinio CSS juodraščio."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Jūsų slaptažodis sėkmingai atstatytas. Dabar galite prisijungti naudodami naują slaptažodį."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: lv\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Konta izvēlne"
|
||||
msgid "Actions"
|
||||
msgstr "Darbības"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivizēt semantisko CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Faktiskais izmērs (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Nedēļā nosūtītie pieteikumi (pēdējās 8 nedēļas)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Pieteikts"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Pieteikts"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Piemērotie noteikumi"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Pielietots ar brīdinājumiem"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arābu"
|
||||
@@ -800,6 +809,14 @@ msgstr "Pārbaudiet savu e-pastu, lai atrastu saiti paroles atiestatīšanai."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Pārbaudiet savu e-pastu, lai atrastu saiti konta verifikācijai."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Pārbaude"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Melnraksta pārbaude"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Ķīniešu (vienkāršotā)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Saruna nokopēta."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Sarunas JSON fails ir nokopēts."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konvertēts stila lapas melnraksts"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Nokopēts starpliktuvē."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopēt rezerves kodus"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopēt JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopēt stila lapu"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Nokopējiet šo slepeno atslēgu un izmantojiet to savās lietotnēs, lai piekļūtu saviem datiem."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Rediģēt {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Rediģēt pieteikumu"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Rediģēt krāsu {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Ievadiet savu paroli, lai apstiprinātu divu faktoru autentifikācijas i
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Ievadiet savu paroli, lai deaktivētu divu faktoru autentifikāciju. Bez ieslēgtas 2FA jūsu konts būs mazāk drošs."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Kļūda"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Katrs ieguldījums, liels vai mazs, projektam ir milzīgi nozīmīgs.<0/>Paldies par jūsu atbalstu!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Katrs ieguldījums, liels vai mazs, projektam ir milzīgi nozīmīgs.<0/
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Viss, kas jums nepieciešams, lai izveidotu, pielāgotu un kopīgotu profesionālus CV. Veidots, domājot par privātumu, darbināms ar atvērtā pirmkoda risinājumiem un pilnīgi bez maksas uz visiem laikiem."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Iziet no fokusa režīma"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Iziet no pilnekrāna"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formāts"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Stilu lapas formatēšana"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Bezmaksas"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Gaišs"
|
||||
msgid "Light theme"
|
||||
msgstr "Gaišā tēma"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Rinda {0}, kolonna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Rindu augstums"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvēģu"
|
||||
msgid "Not connected"
|
||||
msgstr "Nav izveidots savienojums"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Atvērt AI palīgu"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Atvērt e-pasta klientu"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Atvērtā fokusa režīms"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Atvērt veidotājā"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI saderīgs"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Nospiediet <0>Enter</0>, lai atvērtu"
|
||||
msgid "Preview"
|
||||
msgstr "Priekšskatījums"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Priekšskatījumā un eksportā tiek izmantota pēdējā derīgā versija."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primārā krāsa"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktīvs CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lasa…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Gatavs aktivizēšanai"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Gatavs aktivizēšanai ar brīdinājumiem"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Saņēmējs"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Taisnstūris (pilns platums)"
|
||||
msgid "Redo"
|
||||
msgstr "Atkārtot"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Atkārtoti veikt stila lapas rediģēšanu"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Atiestatīt paroli"
|
||||
msgid "Reset Style"
|
||||
msgstr "Atiestatīt stilu"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Atiestatīt uz lietoto stila lapu"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Atiestatīt paroli"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "atlasīts"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Pašhostēšana ar Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantiskā CSS stila lapa"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiskie stili paliek aktīvi"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Sūtīt ziņojumu"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Pārsvītrot"
|
||||
msgid "Strong fit"
|
||||
msgstr "Spēcīga atbilstība"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stilu lapu redaktors"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stilu lapā ir kļūdas"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddits"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Iespējams, ka meklētā lapa ir pārvietota vai vairs nepastāv."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Ievadītā parole ir nepareiza"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "CV priekšskatījumu nevarēja atjaunināt. Joprojām tiek rādīts pēdējais derīgais priekšskatījums."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV, kam mēģināt piekļūt, ir aizsargāts ar paroli"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Šis ieraksts tiks neatgriezeniski dzēsts. To nevar atsaukt."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Šai funkcijai ir nepieciešams pievienots mākslīgā intelekta pakalpojumu sniedzējs. Lūdzu, iestatiet to iestatījumos."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Šajā instancē pašlaik nav atļauta semantiskās CSS rediģēšana."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Tas ir URL-draudzīgs nosaukums jūsu CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Pasvītrot"
|
||||
msgid "Undo"
|
||||
msgstr "Atsaukt"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Atsaukt stila lapas rediģēšanu"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Neierobežoti CV"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Jūsu dati tiek glabāti droši un nekad netiek kopīgoti ar trešajām
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Jūsu jaunākās izmaiņas nevarēja saglabāt."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Jūsu mantotie stili paliek aktīvi, līdz jūs skaidri aktivizējat šo semantiskās CSS melnrakstu."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Jūsu parole ir veiksmīgi atiestatīta. Tagad varat pieteikties ar jauno paroli."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ml\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Malayalam\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "അക്കൗണ്ട് മെനു"
|
||||
msgid "Actions"
|
||||
msgstr "പ്രവർത്തനങ്ങൾ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "സെമാന്റിക് CSS സജീവമാക്കുക"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "യഥാർത്ഥ വലുപ്പം (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "ആഴ്ചയിൽ അയച്ച അപേക്ഷകൾ (കഴിഞ്ഞ 8 ആഴ്ച)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "അപേക്ഷിച്ചു"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "പ്രയോഗിച്ചു"
|
||||
msgid "Applied Rules"
|
||||
msgstr "ബാധകമായ നിയമങ്ങൾ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "മുന്നറിയിപ്പുകൾ ഉപയോഗിച്ച് പ്രയോഗിച്ചു"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "അറബിക്"
|
||||
@@ -800,6 +809,14 @@ msgstr "നിങ്ങളുടെ പാസ്വേഡ് റീസെറ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "നിങ്ങളുടെ അക്കൗണ്ട് സ്ഥിരീകരിക്കുന്നതിന് ഒരു ലിങ്കിനായി നിങ്ങളുടെ ഇമെയിൽ പരിശോധിക്കുക."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "പരിശോധിക്കുന്നു"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "ഡ്രാഫ്റ്റ് പരിശോധിക്കുന്നു"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "ചൈനീസ് (സിംപ്ലിഫൈഡ്)"
|
||||
@@ -966,6 +983,10 @@ msgstr "സംഭാഷണം പകർത്തി."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "സംഭാഷണം JSON പകർത്തി."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "പരിവർത്തനം ചെയ്ത സ്റ്റൈൽഷീറ്റ് ഡ്രാഫ്റ്റ്"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി."
|
||||
@@ -989,6 +1010,10 @@ msgstr "ബാക്കപ്പ് കോഡുകൾ പകർത്തുക"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON പകർത്തുക"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റ് പകർത്തുക"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ഈ സീക്രട്ട് കീ പകർത്തി, നിങ്ങളുടെ ആപ്പ്ലിക്കേഷനുകളിൽ നിങ്ങൾക്കുള്ള ഡാറ്റ ആക്സ്സ് ചെയ്യുന്നതിനായി ഉപയോഗിക്കുക."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "തിരുത്തുക {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "ആപ്ലിക്കേഷൻ എഡിറ്റ് ചെയ്യുക"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "നിറം എഡിറ്റ് ചെയ്യുക {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "ടു‑ഫാക്ടർ ഓത്ന്റിക്കേഷൻ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "ടു‑ഫാക്ടർ ഓത്ന്റിക്കേഷൻ അപ്രാപ്തമാക്കാൻ നിങ്ങളുടെ പാസ്വേഡ് നൽകുക. 2FA പ്രാപ്തമാക്കിയിട്ടില്ലാത്തതിനാൽ നിങ്ങളുടെ അക്കൗണ്ട് കുറച്ച് കുറവായി സുരക്ഷിതമായിവരും."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "പിശക്"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "വലുതോ ചെറുതോ ആയ ഓരോ സംഭാവനയും പ്രോജക്റ്റിന് വലിയൊരു മാറ്റം സൃഷ്ടിക്കുന്നു.<0/>നിങ്ങളുടെ പിന്തുണയ്ക്ക് നന്ദി!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "വലുതോ ചെറുതോ ആയ ഓരോ സംഭാവന
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "പ്രൊഫഷണൽ റിസ്യൂങ്ങൾ സൃഷ്ടിക്കാനും ഇഷ്ടാനുസൃതമാക്കാനും പങ്കിടാനും നിങ്ങൾക്ക് വേണ്ടതെല്ലാം ഇവിടെ ലഭ്യമാണ്. സ്വകാര്യത മുൻനിർത്തി നിർമ്മിച്ചതും, ഓപ്പൺ സോഴ്സിനാൽ കരുത്തു ലഭിച്ചതും, പൂർണ്ണമായും സൗജന്യവുമാണ്."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ഫോക്കസ് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "മുഴുവൻ സ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ഫോർമാറ്റ്"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റ് ഫോർമാറ്റ് ചെയ്യുക"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "സൗജന്യം"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ലൈറ്റ്"
|
||||
msgid "Light theme"
|
||||
msgstr "ലൈറ്റ് തീം"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "വരി {0}, നിര {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "ലൈൻ ഹൈറ്റ്"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "നോർവീജിയൻ"
|
||||
msgid "Not connected"
|
||||
msgstr "കണക്റ്റ് ചെയ്തിട്ടില്ല"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "AI അസിസ്റ്റന്റ് തുറക്കുക"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ഇമെയിൽ ക്ലയന്റ് ഓപ്പൺ ചെയ്യുക"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ഫോക്കസ് മോഡ് തുറക്കുക"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "ബിൽഡറിൽ തുറക്കുക"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-ക്ക് അനുയോജ്യം"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ഓപ്പൺ റൂട്ടർ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "തുറക്കാൻ <0>എന്റർ</0> അമർത്തുക
|
||||
msgid "Preview"
|
||||
msgstr "പ്രിവ്യൂ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "അവസാനത്തെ സാധുവായ പതിപ്പ് ഉപയോഗിച്ച് പ്രിവ്യൂ ചെയ്ത് എക്സ്പോർട്ട് ചെയ്യുക."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "പ്രൈമറി നിറം"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "റിയാക്ടീവ് റെസ്യൂമെ v<0>{__APP_VERSI
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "റിയാക്ടീവ് റെസ്യൂമെ v4 (ജെസൺ)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "വായിക്കുന്നു..."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "സജീവമാക്കാൻ തയ്യാറാണ്"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "മുന്നറിയിപ്പുകൾ നൽകി സജീവമാക്കാൻ തയ്യാറാണ്"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "സ്വീകർത്താവ്"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "ചതുരാകൃതി (പൂർണ്ണ വീതി)"
|
||||
msgid "Redo"
|
||||
msgstr "വീണ്ടും ചെയ്യുക"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റ് എഡിറ്റ് വീണ്ടും ചെയ്യുക"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "പാസ്വേഡ് റീസെറ്റ് ചെയ്യു
|
||||
msgid "Reset Style"
|
||||
msgstr "സ്റ്റൈൽ പുനഃസജ്ജമാക്കുക"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "പ്രയോഗിച്ച സ്റ്റൈൽഷീറ്റിലേക്ക് പുനഃസജ്ജമാക്കുക"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "നിങ്ങളുടെ പാസ്വേഡ് റീസെറ്റ് ചെയ്യുക"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "തിരഞ്ഞെടുത്തു"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker ഉപയോഗിച്ച് സ്വയം ഹോസ്റ്റ് ചെയ്യുക"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "സെമാന്റിക് CSS സ്റ്റൈൽഷീറ്റ്"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "സെമാന്റിക് ശൈലികൾ സജീവമായി തുടരുന്നു"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "സന്ദേശം അയയ്ക്കുക"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "സ്ട്രൈക്ക്"
|
||||
msgid "Strong fit"
|
||||
msgstr "ശക്തമായ ഫിറ്റ്"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റ് എഡിറ്റർ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റിൽ പിശകുകൾ ഉണ്ട്"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "സബ്റെഡിറ്റ്"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "നിങ്ങൾ തിരയുന്ന പേജ് നീക്ക
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "നിങ്ങൾ നൽകിയ പാസ്വേഡ് തെറ്റാണ്"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "റെസ്യൂമെ പ്രിവ്യൂ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല. അവസാനത്തെ സാധുവായ പ്രിവ്യൂ ഇപ്പോഴും കാണിച്ചിരിക്കുന്നു."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "നിങ്ങൾ ആക്സസ് ചെയ്യാൻ ശ്രമിക്കുന്ന റിസ്യൂം പാസ്വേഡ് സംരക്ഷിതമാണ്"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ഈ എൻട്രി ശാശ്വതമായി ഇല്ലാത
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ഈ ഫീച്ചറിന് കണക്റ്റുചെയ്ത ഒരു AI ദാതാവ് ആവശ്യമാണ്. ക്രമീകരണങ്ങളിൽ ഒന്ന് സജ്ജീകരിക്കുക."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ഈ സന്ദർഭം നിലവിൽ സെമാന്റിക് CSS എഡിറ്റിംഗ് അനുവദിക്കുന്നില്ല."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "ഇത് നിങ്ങളുടെ റിസ്യൂമിനുള്ള URL‑സൗഹൃദമായ ഒരു പേരാണ്."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "അണ്ടർലൈൻ"
|
||||
msgid "Undo"
|
||||
msgstr "പഴയപടിയാക്കുക"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "സ്റ്റൈൽഷീറ്റ് എഡിറ്റ് പഴയപടിയാക്കുക"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "പരിമിതിയില്ലാത്ത റിസ്യൂങ്ങൾ"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "നിങ്ങളുടെ ഡാറ്റ സുരക്ഷിതമ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "നിങ്ങളുടെ ഏറ്റവും പുതിയ മാറ്റങ്ങൾ സംരക്ഷിക്കാൻ കഴിഞ്ഞില്ല."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "ഈ സെമാന്റിക് CSS ഡ്രാഫ്റ്റ് വ്യക്തമായി സജീവമാക്കുന്നതുവരെ നിങ്ങളുടെ ലെഗസി സ്റ്റൈലുകൾ സജീവമായി തുടരും."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "നിങ്ങളുടെ പാസ്വേഡ് വിജയകരമായി റീസെറ്റ് ചെയ്തിട്ടുണ്ട്. ഇനി നിങ്ങൾക്ക് പുതിയ പാസ്വേഡ് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യാം."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: mr\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Marathi\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "खाते मेनू"
|
||||
msgid "Actions"
|
||||
msgstr "कृती"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "सिमँटिक CSS सक्रिय करा"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "वास्तविक आकार (१००%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "दर आठवड्याला पाठवलेले अर्ज (मागील 8 आठवडे)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "अर्ज केला"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "वर अर्ज केला"
|
||||
msgid "Applied Rules"
|
||||
msgstr "लागू केलेले नियम"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "इशाऱ्यांसह लागू केले"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "अरबी"
|
||||
@@ -800,6 +809,14 @@ msgstr "तुमचा पासवर्ड रिसेट करण्या
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "तुमचे खाते पडताळण्यासाठीच्या लिंकसाठी तुमचे ईमेल तपासा."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "तपासणी"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "मसुदा तपासणे"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "चीनी (सुलभ)"
|
||||
@@ -966,6 +983,10 @@ msgstr "संभाषण कॉपी केले."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "संभाषणाचा JSON कॉपी केला."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "रूपांतरित स्टाईलशीटचा मसुदा"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "क्लिपबोर्डवर कॉपी केले."
|
||||
@@ -989,6 +1010,10 @@ msgstr "बॅकअप कोड्स कॉपी करा"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON कॉपी करा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "स्टाईलशीट कॉपी करा"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ही गुप्त key कॉपी करा आणि तुमच्या अॅप्लिकेशन्समध्ये तुमचा डेटा अॅक्सेस करण्यासाठी वापरा."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "संपादन {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "अर्ज संपादित करा"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "रंग संपादित करा {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "दुहेरी घटक ओथेंटिकेशन सेटअ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "दुहेरी घटक ओथेंटिकेशन अक्षम करण्यासाठी तुमचा पासवर्ड टाका. 2FA शिवाय तुमचे खाते कमी सुरक्षित राहील."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "त्रुटी"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "प्रत्येक योगदान, मोठे असो वा छोटे, प्रोजेक्टसाठी खूप मोठा फरक घडवते.<0/>तुमच्या पाठिंब्याबद्दल धन्यवाद!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "प्रत्येक योगदान, मोठे असो व
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "व्यावसायिक रेझ्युमे तयार, सानुकूलित आणि शेअर करण्यासाठी लागणारे सर्व काही येथेच आहे. गोपनीयतेचा विचार करून तयार केलेले, मुक्त स्रोतावर चालणारे आणि कायमस्वरूपी पूर्णपणे मोफत."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "फोकस मोडमधून बाहेर पडा"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "पूर्ण स्क्रीनमधून बाहेर पडा"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "स्वरूप"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "फॉरमॅट स्टाईलशीट"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "मोफत"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "हलकी"
|
||||
msgid "Light theme"
|
||||
msgstr "हलकी थीम"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "ओळ {0}, स्तंभ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "रेषेची उंची"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "नॉर्वेजियन"
|
||||
msgid "Not connected"
|
||||
msgstr "जोडलेले नाही"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "ओपन एआय असिस्टंट"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ईमेल क्लायंट उघडा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "फोकस मोड उघडा"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "बिल्डरमध्ये उघडा"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ओपनएआय-सुसंगत"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ओपनराऊटर"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "उघडण्यासाठी <0>Enter</0> दाबा"
|
||||
msgid "Preview"
|
||||
msgstr "पूर्वावलोकन"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "पूर्वावलोकन आणि निर्यातीसाठी शेवटची वैध आवृत्ती वापरली जाते."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "प्राथमिक रंग"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "रिॲक्टिव्ह रिझ्युमे v<0>{__APP_VERSI
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "वाचत आहे…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "सक्रिय करण्यासाठी तयार"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "इशाऱ्यांसह सक्रिय करण्यास तयार"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "प्राप्तकर्ता"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "आयत (पूर्ण रुंदी)"
|
||||
msgid "Redo"
|
||||
msgstr "पुन्हा करा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "स्टाईलशीट संपादन पुन्हा करा"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "पासवर्ड रीसेट करा"
|
||||
msgid "Reset Style"
|
||||
msgstr "शैली रीसेट करा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "लागू केलेल्या स्टाईलशीटवर रीसेट करा"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "तुमचा पासवर्ड रीसेट करा"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "निवडले"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker ने स्वतः होस्ट करा"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "सिमँटिक CSS स्टाईलशीट"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "अर्थात्मक शैली सक्रिय राहतात"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "संदेश पाठवा"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "स्ट्राइक"
|
||||
msgid "Strong fit"
|
||||
msgstr "मजबूत फिट"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "स्टाईलशीट संपादक"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "स्टाईलशीटमध्ये त्रुटी आहेत"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "सबरेडिट"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "तुम्ही शोधत असलेले पान कदा
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "तुम्ही टाकलेला पासवर्ड चुकीचा आहे"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "रेझ्युमेचा प्रिव्ह्यू अद्ययावत करता आला नाही. शेवटचा वैध प्रिव्ह्यूच अजूनही दाखवला जात आहे."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "ज्या रेझ्युमेला तुम्ही अॅक्सेस करण्याचा प्रयत्न करत आहात तो पासवर्डने संरक्षित आहे"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ही नोंद कायमची हटवली जाईल. ह
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "या वैशिष्ट्यासाठी एका कनेक्टेड एआय प्रोव्हायडरची आवश्यकता आहे. कृपया सेटिंग्जमध्ये त्याची नोंदणी करा."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "या इन्स्टन्समध्ये सध्या सिमेंटिक CSS संपादनास परवानगी नाही."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "हा तुमच्या रेझ्युमेसाठी URL-फ्रेंडली नाव आहे."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "अधोरेखा"
|
||||
msgid "Undo"
|
||||
msgstr "पूर्ववत करा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "स्टाईलशीटमधील बदल पूर्ववत करा"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "अमर्यादित रेझ्युमे"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "तुमचा डेटा सुरक्षितपणे साठ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "तुमचे नवीनतम बदल जतन केले जाऊ शकले नाहीत."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "जोपर्यंत तुम्ही हा सिमेंटिक CSS ड्राफ्ट स्पष्टपणे सक्रिय करत नाही, तोपर्यंत तुमच्या जुन्या स्टाईल्स सक्रिय राहतील."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "तुमचा पासवर्ड यशस्वीरित्या रिसेट केला गेला आहे. तुम्ही आता नवीन पासवर्डने साइन इन करू शकता."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ms\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Malay\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu akaun"
|
||||
msgid "Actions"
|
||||
msgstr "Tindakan"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktifkan CSS Semantik"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Saiz sebenar (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Permohonan dihantar setiap minggu (8 minggu lepas)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Dimohon"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Digunakan pada"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Peraturan yang Digunakan"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Digunakan dengan amaran"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Bahasa Arab"
|
||||
@@ -800,6 +809,14 @@ msgstr "Semak e-mel anda untuk pautan bagi menetapkan semula kata laluan anda."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Semak e-mel anda untuk pautan bagi mengesahkan akaun anda."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Memeriksa"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Memeriksa draf"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Cina (Ringkas)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Perbualan disalin."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON perbualan disalin."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Draf helaian gaya yang ditukar"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Disalin ke papan keratan."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Salin Kod Sandaran"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Salin JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Salin helaian gaya"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Salin kunci rahsia ini dan gunakan dalam aplikasi anda untuk mengakses data anda."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Sunting {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edit aplikasi"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Sunting warna {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Masukkan kata laluan anda untuk mengesahkan penyediaan pengesahan dua fa
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Masukkan kata laluan anda untuk melumpuhkan pengesahan dua faktor. Akaun anda akan menjadi kurang selamat tanpa 2FA diaktifkan."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Ralat"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Setiap sumbangan, besar atau kecil, memberi perbezaan besar kepada projek ini.<0/>Terima kasih atas sokongan anda!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Setiap sumbangan, besar atau kecil, memberi perbezaan besar kepada proje
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Segala yang anda perlukan untuk mencipta, menyesuaikan dan berkongsi resume profesional. Dibina dengan mengambil kira privasi, dikuasakan oleh sumber terbuka dan benar-benar percuma selama-lamanya."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Keluar dari mod fokus"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Keluar dari Skrin Penuh"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Helaian gaya format"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Percuma"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Cerah"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema cerah"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Baris {0}, lajur {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Tinggi Baris"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norwegian"
|
||||
msgid "Not connected"
|
||||
msgstr "Tidak bersambung"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Pembantu AI terbuka"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Buka Klien E-mel"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Mod fokus terbuka"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Buka dalam pembina"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Serasi dengan OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Tekan <0>Enter</0> untuk membuka"
|
||||
msgid "Preview"
|
||||
msgstr "Pratonton"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Pratonton dan eksport gunakan versi terakhir yang sah."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Warna Utama"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Resume Reaktif v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktif Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Membaca…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Bersedia untuk diaktifkan"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Bersedia untuk diaktifkan dengan amaran"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Penerima"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Segi empat tepat (Lebar Penuh)"
|
||||
msgid "Redo"
|
||||
msgstr "Buat semula"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Buat semula suntingan helaian gaya"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Tetapkan Semula Kata Laluan"
|
||||
msgid "Reset Style"
|
||||
msgstr "Tetapkan Semula Gaya"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Tetapkan semula kepada helaian gaya yang digunakan"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Tetapkan semula kata laluan anda"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "dipilih"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Hos Sendiri dengan Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Helaian gaya CSS semantik"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Gaya semantik kekal aktif"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Hantar mesej"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Coret"
|
||||
msgid "Strong fit"
|
||||
msgstr "Kuat sesuai"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor helaian gaya"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Helaian gaya mempunyai ralat"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Halaman yang anda cari mungkin telah dipindahkan atau tidak lagi wujud."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Kata laluan yang anda masukkan adalah tidak betul"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Pratonton resume tidak dapat dikemas kini. Pratonton sah terakhir masih dipaparkan."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Resume yang anda cuba akses dilindungi kata laluan"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Entri ini akan dipadam secara kekal. Ini tidak boleh dibuat asal."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ciri ini memerlukan penyedia AI yang disambungkan. Sila sediakan satu dalam tetapan."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Keadaan ini pada masa ini tidak membenarkan pengeditan CSS Semantik."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Ini ialah nama mesra URL untuk resume anda."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Garis Bawah"
|
||||
msgid "Undo"
|
||||
msgstr "Buat asal"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Buat asal suntingan helaian gaya"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Resume Tanpa Had"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Data anda disimpan dengan selamat dan tidak pernah dikongsi dengan pihak
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Perubahan terkini anda tidak dapat disimpan."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Gaya legasi anda kekal aktif sehingga anda mengaktifkan draf CSS Semantik ini secara eksplisit."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Kata laluan anda telah berjaya ditetapkan semula. Anda kini boleh log masuk dengan kata laluan baharu anda."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ne\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Nepali\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "खाता मेनु"
|
||||
msgid "Actions"
|
||||
msgstr "कार्यहरू"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "सिमेन्टिक CSS सक्रिय गर्नुहोस्"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "वास्तविक आकार (१००%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "प्रति हप्ता पठाइएका आवेदनहरू (पछिल्ला 8 हप्ता)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "आवेदन गरियो"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "मा लागू गरियो"
|
||||
msgid "Applied Rules"
|
||||
msgstr "लागू नियमहरू"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "चेतावनीहरू सहित लागू गरियो"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "अरबी"
|
||||
@@ -800,6 +809,14 @@ msgstr "पासवर्ड रिसेट गर्न लिङ्कको
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "खाताको यकिन गर्न लिङ्कको लागि आफ्नो इमेल जाँच गर्नुहोस्।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "जाँच गर्दै"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "मस्यौदा जाँच गर्दै"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "चिनियाँ (सरल)"
|
||||
@@ -966,6 +983,10 @@ msgstr "कुराकानीको प्रतिलिपि बनाइ
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "कुराकानी JSON प्रतिलिपि गरियो।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "रूपान्तरित स्टाइलसिट ड्राफ्ट"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "क्लिपबोर्डमा प्रतिलिपि गरियो।"
|
||||
@@ -989,6 +1010,10 @@ msgstr "ब्याकअप कोडहरू प्रतिलिपि ग
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON प्रतिलिपि गर्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "स्टाइलसिट प्रतिलिपि गर्नुहोस्"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "यो गोप्य key प्रतिलिपि गरेर आफ्ना अनुप्रयोगहरूमा प्रयोग गर्नुहोस् ताकि तपाईंको डाटामा पहुँच गर्न सकियोस्।"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "सम्पादन {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "आवेदन सम्पादन गर्नुहोस्"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "रङ सम्पादन गर्नुहोस् {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "दुई-कारक प्रमाणीकरण सेटअप
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "दुई-कारक प्रमाणीकरण अक्षम गर्न आफ्नो पासवर्ड प्रविष्ट गर्नुहोस्। २FA सक्रिय नभएको अवस्थामा तपाईंको खाता कम सुरक्षित हुनेछ।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "त्रुटि"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ठुलो होस् वा सानो, प्रत्येक योगदानले परियोजनामा ठूलो फरक पार्छ।<0/>तपाईंको सहयोगका लागि धन्यवाद!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ठुलो होस् वा सानो, प्रत्येक
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "व्यावसायिक बायोडाटा बनाउन, अनुकूल बनाउन र सेयर गर्न आवश्यक सबै कुरा एकै ठाउँमा। गोपनीयतालाई प्राथमिकता दिँदै, खुला-स्रोतको सहायतामा निर्माण गरिएको, र पूर्ण रूपमा निःशुल्क, सधैंका लागि।"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "फोकस मोडबाट बाहिर निस्कनुहोस्"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "पूर्ण स्क्रिनबाट बाहिर निस्कनुहोस्"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ढाँचा"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "शैलीपाना ढाँचाबद्ध गर्नुहोस्"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "निःशुल्क"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ल्याइट"
|
||||
msgid "Light theme"
|
||||
msgstr "ल्याइट थिम"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "रेखा {0}, स्तम्भ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "लाइन उचाइ (Line Height)"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "नर्वेजियन"
|
||||
msgid "Not connected"
|
||||
msgstr "जडान गरिएको छैन"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "एआई सहायक खोल्नुहोस्"
|
||||
msgid "Open Email Client"
|
||||
msgstr "इमेल क्लाइन्ट खोल्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "फोकस मोड खोल्नुहोस्"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "बिल्डरमा खोल्नुहोस्"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "ओपनएआई-कम्प्याटिबल"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ओपनराउटर"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "खोल्न <0>Enter</0> थिच्नुहोस्"
|
||||
msgid "Preview"
|
||||
msgstr "पूर्वावलोकन"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "पूर्वावलोकन र निर्यात अन्तिम मान्य संस्करण प्रयोग गर्नुहोस्।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "मुख्य रङ"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "प्रतिक्रियाशील रिजुमे v<0>{__APP
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "प्रतिक्रियाशील बायोडाटा v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "पढ्दै…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "सक्रिय गर्न तयार छ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "चेतावनी सहित सक्रिय गर्न तयार"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "प्राप्तकर्ता"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "आयत (पूर्ण चौडाइ)"
|
||||
msgid "Redo"
|
||||
msgstr "पुन: गर्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "शैलीपत्र सम्पादन पुन: गर्नुहोस्"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "पासवर्ड रिसेट गर्नुहोस्"
|
||||
msgid "Reset Style"
|
||||
msgstr "शैली रिसेट गर्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "लागू गरिएको शैली पानामा रिसेट गर्नुहोस्"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "तपाईंको पासवर्ड रिसेट गर्नुहोस्"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "चयन गरियो"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker प्रयोग गरेर आफैं होस्ट गर्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "अर्थपूर्ण CSS शैली पाना"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "अर्थपूर्ण शैलीहरू सक्रिय रहन्छन्"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "सन्देश पठाउनुहोस्"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "स्ट्राइक (Strikethrough)"
|
||||
msgid "Strong fit"
|
||||
msgstr "बलियो फिट"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "स्टाइलसिट सम्पादक"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "स्टाइलसिटमा त्रुटिहरू छन्"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "सबरेडिट"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "तपाईंले खोजिरहनुभएको पृष्
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "तपाईंले प्रविष्ट गर्नुभएको पासवर्ड सही छैन"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "रिजुमे पूर्वावलोकन अद्यावधिक गर्न सकिएन। अन्तिम मान्य पूर्वावलोकन अझै देखाइएको छ।"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "तपाईं पहुँच गर्न खोजिरहनुभएको बायोडाटा पासवर्डद्वारा सुरक्षित गरिएको छ"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "यो प्रविष्टि स्थायी रूपमा
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "यो सुविधाको लागि जडान गरिएको AI प्रदायक आवश्यक पर्दछ। कृपया सेटिङहरूमा एउटा सेट अप गर्नुहोस्।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "यो उदाहरणले हाल सिमेन्टिक CSS सम्पादनलाई अनुमति दिँदैन।"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "यो तपाईंको बायोडाटाका लागि URL-मैत्री नाम हो।"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "अन्डरलाइन"
|
||||
msgid "Undo"
|
||||
msgstr "पूर्ववत गर्नुहोस्"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "शैलीपत्र सम्पादन पूर्ववत गर्नुहोस्"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "असीमित बायोडाटाहरू"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "तपाईंको डाटा सुरक्षित रूपम
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "तपाईंका पछिल्ला परिवर्तनहरू सुरक्षित गर्न सकिएन।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "तपाईंले यो सिमेन्टिक CSS ड्राफ्ट स्पष्ट रूपमा सक्रिय नगरेसम्म तपाईंको लिगेसी शैलीहरू सक्रिय रहन्छन्।"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "तपाईंको पासवर्ड सफलतापूर्वक रिसेट भयो। अब नयाँ पासवर्ड प्रयोग गरेर साइन इन गर्न सक्नुहुन्छ।"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Accountmenu"
|
||||
msgid "Actions"
|
||||
msgstr "Acties"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activeer semantische CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Werkelijke grootte (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Sollicitaties per week verstuurd (laatste 8 weken)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Gesolliciteerd"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Toegepast op"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Toegepaste regels"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Toegepast met waarschuwingen"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisch"
|
||||
@@ -800,6 +809,14 @@ msgstr "Controleer uw e-mail voor een link om uw wachtwoord te resetten."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Controleer uw e-mail voor een link om uw account te verifiëren."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Controleren"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Concept controleren"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinees (vereenvoudigd)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Gesprek gekopieerd."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Het JSON-bestand van het gesprek is gekopieerd."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Omgezette stylesheet-concept"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Gekopieerd naar klembord."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Back-upcodes kopiëren"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON kopiëren"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Stijlpagina kopiëren"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopieer deze geheime sleutel en gebruik deze in uw applicaties om toegang te krijgen tot uw gegevens."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Bewerk {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Applicatie bewerken"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Kleur bewerken {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Voer uw wachtwoord in om het instellen van tweestapsverificatie te beves
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Voer uw wachtwoord in om tweestapsverificatie uit te schakelen. Uw account is minder goed beveiligd zonder 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Elke bijdrage, groot of klein, maakt een enorm verschil voor het project.<0/>Bedankt voor uw steun!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Elke bijdrage, groot of klein, maakt een enorm verschil voor het project
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Alles wat u nodig heeft om professionele cv's te maken, aan te passen en te delen. Gebouwd met privacy in gedachten, aangedreven door open source en volledig gratis, voor altijd."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Focusmodus verlaten"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Volledig scherm afsluiten"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formaat"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Stijlpagina opmaken"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Licht"
|
||||
msgid "Light theme"
|
||||
msgstr "Licht thema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Regel {0}, kolom {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Regelafstand"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Noors"
|
||||
msgid "Not connected"
|
||||
msgstr "Niet verbonden"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Open AI-assistent"
|
||||
msgid "Open Email Client"
|
||||
msgstr "E-mailclient openen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Focusmodus openen"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Openen in builder"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-compatibel"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Druk op <0>Enter</0> om te openen"
|
||||
msgid "Preview"
|
||||
msgstr "Voorbeeld"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Voor het bekijken en exporteren wordt de laatst geldige versie gebruikt."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primaire kleur"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reactief hervatten v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactieve cv v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lezen…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Klaar om te activeren"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Klaar voor activering met waarschuwingen"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Ontvanger"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rechthoek (volledige breedte)"
|
||||
msgid "Redo"
|
||||
msgstr "Opnieuw doen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Stijlpagina bewerken opnieuw uitvoeren"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Wachtwoord resetten"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stijl opnieuw instellen"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Terugzetten naar toegepaste stijlblad"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Reset uw wachtwoord"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "geselecteerd"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Zelf hosten met Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantische CSS-stijlpagina"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantische stijlen blijven actief."
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Bericht verzenden"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Doorhalen"
|
||||
msgid "Strong fit"
|
||||
msgstr "Sterke pasvorm"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stijlpagina-editor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Het stylesheet bevat fouten."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "De pagina die u zoekt is mogelijk verplaatst of bestaat niet meer."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Het ingevoerde wachtwoord is onjuist"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "De cv-preview kon niet worden bijgewerkt. De laatst geldige preview wordt nog steeds weergegeven."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Het cv dat u probeert te openen, is met een wachtwoord beveiligd"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Deze vermelding wordt permanent verwijderd. Dit kan niet ongedaan worden
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Voor deze functie is een gekoppelde AI-provider vereist. Stel er een in via de instellingen."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Deze instantie staat momenteel geen semantische CSS-bewerking toe."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Dit is een URL-vriendelijke naam voor uw cv."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Onderstrepen"
|
||||
msgid "Undo"
|
||||
msgstr "Ongedaan maken"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Stijlbewerking ongedaan maken"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Onbeperkte cv's"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Uw gegevens worden veilig opgeslagen en nooit met derden gedeeld. U kunt
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Je laatste wijzigingen konden niet worden opgeslagen."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Uw oude stijlen blijven actief totdat u dit concept van Semantische CSS expliciet activeert."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Uw wachtwoord is succesvol gereset. U kunt nu met uw nieuwe wachtwoord inloggen."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: no\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Konto-meny"
|
||||
msgid "Actions"
|
||||
msgstr "Handlinger"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktiver semantisk CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Faktisk størrelse (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Søknader sendt per uke (siste 8 uker)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Søkt"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Påført på"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Anvendte regler"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Brukes med advarsler"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisk"
|
||||
@@ -800,6 +809,14 @@ msgstr "Sjekk e-posten din for en lenke for å tilbakestille passordet."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Sjekk e-posten din for en lenke for å bekrefte kontoen din."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Sjekker"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Sjekker utkast"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kinesisk (forenklet)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Samtalen er kopiert."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Samtalens JSON-fil er kopiert."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konvertert stilarkutkast"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopiert til utklippstavlen."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopier sikkerhetskopieringskoder"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopier JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopier stilark"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopier denne hemmelige nøkkelen og bruk den i applikasjonene dine for å få tilgang til dataene dine."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Rediger {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Rediger søknad"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Rediger farge {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Skriv inn passordet ditt for å bekrefte at du vil sette opp tofaktoraut
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Skriv inn passordet ditt for å deaktivere tofaktorautentisering. Kontoen din vil være mindre sikker uten aktivert 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Feil"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Hvert bidrag, stort eller lite, gjør en enorm forskjell for prosjektet.<0/>Takk for støtten!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Hvert bidrag, stort eller lite, gjør en enorm forskjell for prosjektet.
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Alt du trenger for å opprette, tilpasse og dele profesjonelle CV-er. Bygget med personvern i fokus, drevet av åpen kildekode og helt gratis for alltid."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Gå ut av fokusmodus"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Avslutt fullskjerm"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formater stilark"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Lyst"
|
||||
msgid "Light theme"
|
||||
msgstr "Lyst tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linje {0}, kolonne {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Linjehøyde"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norsk"
|
||||
msgid "Not connected"
|
||||
msgstr "Ikke tilkoblet"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Åpne AI-assistenten"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Åpne e-postklient"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Åpne fokusmodus"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Åpne i byggeren"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-kompatibel"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Trykk <0>Enter</0> for å åpne"
|
||||
msgid "Preview"
|
||||
msgstr "Forhåndsvisning"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Forhåndsvisning og eksport med den siste gyldige versjonen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Hovedfarge"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiv CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Leser …"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Klar til å aktiveres"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Klar til aktivering med advarsler"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Mottaker"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rektangel (full bredde)"
|
||||
msgid "Redo"
|
||||
msgstr "Gjør om"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Gjør om redigeringen av stilark"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Tilbakestill passord"
|
||||
msgid "Reset Style"
|
||||
msgstr "Tilbakestill stil"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Tilbakestill til brukt stilark"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Tilbakestill passordet ditt"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "valgt"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Selvhosting med Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantisk CSS-stilark"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiske stiler forblir aktive"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Send melding"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Gjennomstreking"
|
||||
msgid "Strong fit"
|
||||
msgstr "Sterk passform"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stilarkredigeringsprogram"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stilarket inneholder feil"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Siden du leter etter kan ha blitt flyttet eller finnes ikke lenger."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Passordet du skrev inn er feil"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Forhåndsvisningen av CV-en kunne ikke oppdateres. Den siste gyldige forhåndsvisningen vises fortsatt."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV-en du prøver å få tilgang til er passordbeskyttet"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Denne oppføringen slettes permanent. Dette kan ikke angres."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Denne funksjonen krever en tilkoblet AI-leverandør. Vennligst konfigurer en i innstillingene."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Denne instansen tillater for øyeblikket ikke semantisk CSS-redigering."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Dette er et URL-vennlig navn på CV-en din."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Understrek"
|
||||
msgid "Undo"
|
||||
msgstr "Angre"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Angre redigering av stilark"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Ubegrenset antall CV-er"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Dataene dine lagres sikkert og deles aldri med tredjeparter. Du kan ogs
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "De siste endringene dine kunne ikke lagres."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Dine eldre stiler forblir aktive inntil du eksplisitt aktiverer dette semantiske CSS-utkastet."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Passordet ditt er tilbakestilt. Du kan nå logge inn med det nye passordet ditt."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: or\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Odia\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "ଆକାଉଣ୍ଟ ମେନୁ"
|
||||
msgid "Actions"
|
||||
msgstr "କାର୍ଯ୍ୟଗୁଡ଼ିକ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "ସିମାଣ୍ଟିକ୍ CSS ସକ୍ରିୟ କରନ୍ତୁ"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "ପ୍ରକୃତ ଆକାର (୧୦୦%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "ପ୍ରତି ସପ୍ତାହରେ ପଠାଯାଇଥିବା ଆବେଦନ (ଗତ 8 ସପ୍ତାହ)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "ଆବେଦନ କରାଯାଇଛି"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "ପ୍ରୟୋଗ ହୋଇଛି |"
|
||||
msgid "Applied Rules"
|
||||
msgstr "ଲାଗୁ ହୋଇଥିବା ନିୟମଗୁଡ଼ିକ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "ଚେତାବନୀ ସହିତ ଲାଗୁ କରାଯାଇଛି"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "ଆରବୀ"
|
||||
@@ -800,6 +809,14 @@ msgstr "ଆପଣଙ୍କ ପାସୱାର୍ଡ ପୁନଃସେଟ୍ କ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "ଆପଣଙ୍କ ଆକାଉଣ୍ଟ ସତ୍ୟାପନ କରିବା ପାଇଁ ଲିଙ୍କ ପାଇଁ ଆପଣଙ୍କ ଇମେଲ୍ ଯାଞ୍ଚ କରନ୍ତୁ।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "ଯାଞ୍ଚ କରାଯାଉଛି"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "ଡ୍ରାଫ୍ଟ ଯାଞ୍ଚ କରାଯାଉଛି"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "ଚାଇନିଜ୍ (ସରଳୀକୃତ)"
|
||||
@@ -966,6 +983,10 @@ msgstr "ବାର୍ତ୍ତାଳାପ କପି କରାଯାଇଛି।"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "ବାର୍ତ୍ତାଳାପ JSON କପି କରାଯାଇଛି।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "ରୂପାନ୍ତରିତ ଷ୍ଟାଇଲସିଟ୍ ଡ୍ରାଫ୍ଟ"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "କ୍ଲିପବୋର୍ଡରେ କପି କରାଯାଇଛି |"
|
||||
@@ -989,6 +1010,10 @@ msgstr "ବ୍ୟାକଅପ୍ କୋଡଗୁଡିକ କପି କରନ୍
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON କପି କରନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟ୍ କପି କରନ୍ତୁ"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ଏହି ଗୁପ୍ତ କିକୁ କପି କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କ ଆପ୍ଲିକେସନ୍ରେ ଆପଣଙ୍କ ତଥ୍ୟ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ।"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "{chip} ସମ୍ପାଦନ କରନ୍ତୁ"
|
||||
msgid "Edit application"
|
||||
msgstr "ପ୍ରୟୋଗ ସଂପାଦନ କରନ୍ତୁ |"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "ରଙ୍ଗ ସମ୍ପାଦନ କରନ୍ତୁ {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "ଦ୍ୱି-ଘଟକ ପରିଚୟ ପ୍ରମାଣିକରଣ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "ଦ୍ୱି-ଘଟକ ପରିଚୟ ପ୍ରମାଣିକରଣ ଅସକ୍ରିୟ କରିବା ପାଇଁ ଆପଣଙ୍କ ପାସୱାର୍ଡ ପ୍ରବେଶ କରନ୍ତୁ। 2FA ସକ୍ରିୟ ନ ଥିଲେ ଆପଣଙ୍କ ଆକାଉଣ୍ଟ କମ୍ ସୁରକ୍ଷିତ ହେବ।"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "ତ୍ରୁଟି"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ପ୍ରତ୍ୟେକ ଅବଦାନ, ବଡ଼ କିମ୍ବା ଛୋଟ, ପ୍ରକଳ୍ପ ପାଇଁ ବିଶେଷ ପରିବର୍ତ୍ତନ ଆଣେ।<0/>ଆପଣଙ୍କ ସମର୍ଥନ ପାଇଁ ଧନ୍ୟବାଦ!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ପ୍ରତ୍ୟେକ ଅବଦାନ, ବଡ଼ କିମ୍ବା
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "ପେଶାଦାର ରେଜ୍ୟୁମେ ତିଆରି, କଷ୍ଟମାଇଜ୍ ଏବଂ ସେୟାର କରିବାକୁ ଆପଣଙ୍କୁ ଯାହା କିଛି ଆବଶ୍ୟକ ସମସ୍ତ ଏଥିରେ ଅଛି। ଗୋପନୀୟତା ଧ୍ୟାନରେ ରଖି ନିର୍ମିତ, ଖୋଲା‑ମୂଳ ଦ୍ୱାରା ଶକ୍ତିଶାଳୀ ହୋଇଛି, ଏବଂ ସଂପୂର୍ଣ୍ଣ ଭାବରେ ସଦା ପାଇଁ ନିଶୁଳ୍କ।"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ଫୋକସ୍ ମୋଡ୍ରୁ ବାହାରି ଯାଆନ୍ତୁ"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରୁ ବାହାରକୁ ଆସନ୍ତୁ"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ରୂପରେଖା (Format)"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟ୍ ଫର୍ମାଟ୍ କରନ୍ତୁ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ନିଶୁଳ୍କ"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "ଲାଇଟ୍"
|
||||
msgid "Light theme"
|
||||
msgstr "ଲାଇଟ୍ ଥିମ୍"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "ଧାଡି {0}, ସ୍ତମ୍ଭ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "ଲାଇନ୍ ଉଚ୍ଚତା"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "ନରୱେଜିଆନ୍"
|
||||
msgid "Not connected"
|
||||
msgstr "ସଂଯୁକ୍ତ ହୋଇନାହିଁ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "AI ଆସିଷ୍ଟାଣ୍ଟ ଖୋଲନ୍ତୁ"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ଇମେଲ୍ କ୍ଲାୟେଣ୍ଟ ଖୋଲନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ଫୋକସ୍ ମୋଡ୍ ଖୋଲନ୍ତୁ"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "ବିଲ୍ଡରରେ ଖୋଲନ୍ତୁ"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-ସୁସଙ୍ଗତ"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "ଖୋଲିବା ପାଇଁ <0>Enter</0> ଦବାନ୍ତୁ"
|
||||
msgid "Preview"
|
||||
msgstr "ପୂର୍ବାବଲୋକନ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ପୂର୍ବାବଲୋକନ ଏବଂ ରପ୍ତାନି ଶେଷ ବୈଧ ସଂସ୍କରଣ ବ୍ୟବହାର କରନ୍ତୁ।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "ମୁଖ୍ୟ ରଙ୍ଗ"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "ପ୍ରତିକ୍ରିୟାଶୀଳ ରିଜ୍ୟୁମ୍ v<0>
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "ପ Reading ିବା…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "ସକ୍ରିୟ କରିବାକୁ ପ୍ରସ୍ତୁତ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "ଚେତାବନୀ ସହିତ ସକ୍ରିୟ କରିବାକୁ ପ୍ରସ୍ତୁତ"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "ପ୍ରାପ୍ତକର୍ତ୍ତା"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "ଆୟାତାକାର (ପୁରା ପ୍ରସ୍ଥ)"
|
||||
msgid "Redo"
|
||||
msgstr "ପୁନଃକରିଦିଅନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟ୍ ସମ୍ପାଦନ ପୁନଃକରିବା"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "ପାସୱାର୍ଡ ରିସେଟ୍ କରନ୍ତୁ"
|
||||
msgid "Reset Style"
|
||||
msgstr "ଷ୍ଟାଇଲ୍ ରିସେଟ୍ କରନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "ଲାଗୁ ହୋଇଥିବା ଷ୍ଟାଇଲସିଟକୁ ରିସେଟ୍ କରନ୍ତୁ"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "ଆପଣଙ୍କ ପାସୱାର୍ଡ ରିସେଟ୍ କରନ୍ତୁ"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "ମନୋନୀତ |"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker ସହ ସ୍ୱୟଂ‑ହୋଷ୍ଟ କରନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "ଅର୍ଥଗତ CSS ଷ୍ଟାଇଲସିଟ୍"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "ଅର୍ଥାତ୍ମକ ଶୈଳୀ ସକ୍ରିୟ ରହିଥାଏ"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "ମେସେଜ୍ ପଠାନ୍ତୁ"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "ଷ୍ଟ୍ରାଇକ୍"
|
||||
msgid "Strong fit"
|
||||
msgstr "ଶକ୍ତିଶାଳୀ ଫିଟ୍ |"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟ୍ ଏଡିଟର୍"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟରେ ତ୍ରୁଟି ଅଛି"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "ସବ୍ରେଡିଟ୍ (Subreddit)"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "ଆପଣ ଖୋଜୁଥିବା ପୃଷ୍ଠାଟି ହୁଏତ
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "ଆପଣ ଯେ ପାସୱାର୍ଡ ପ୍ରବେଶ କରିଛନ୍ତି ସେଥା ଭୁଲ୍"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "ରିଜ୍ୟୁମ୍ ପ୍ରିଭ୍ୟୁ ଅପଡେଟ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଶେଷ ବୈଧ ପ୍ରିଭ୍ୟୁ ଏବେ ବି ଦେଖାଯାଉଛି।"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "ଯେ ରେଜ୍ୟୁମେକୁ ଆପଣ ଆକ୍ସେସ୍ କରିବାକୁ ଚେଷ୍ଟା କରୁଛନ୍ତି ଏହା ପାସୱାର୍ଡ ସୁରକ୍ଷିତ"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ଏହି ପ୍ରବେଶ ସ୍ଥାୟୀଭାବେ ଡିଲି
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ଏହି ବୈଶିଷ୍ଟ୍ୟ ପାଇଁ ଏକ ସଂଯୁକ୍ତ AI ପ୍ରଦାତା ଆବଶ୍ୟକ। ଦୟାକରି ସେଟିଂସରେ ଗୋଟିଏ ସେଟ୍ ଅପ୍ କରନ୍ତୁ।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ଏହି ଉଦାହରଣ ବର୍ତ୍ତମାନ ସିମାଣ୍ଟିକ୍ CSS ସମ୍ପାଦନାକୁ ଅନୁମତି ଦିଏ ନାହିଁ।"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "ଏହା ଆପଣଙ୍କ ରେଜ୍ୟୁମେ ପାଇଁ URL‑ଫ୍ରେଣ୍ଡଲି ନାମ।"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "ଅଣ୍ଡର୍ଲାଇନ୍"
|
||||
msgid "Undo"
|
||||
msgstr "ପୂର୍ବବତ୍ କରନ୍ତୁ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "ଷ୍ଟାଇଲସିଟ୍ ସମ୍ପାଦନକୁ ପୂର୍ବବତ୍ କରନ୍ତୁ"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "ଅସୀମିତ ରେଜ୍ୟୁମେଗୁଡିକ"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "ଆପଣଙ୍କ ତଥ୍ୟ ସୁରକ୍ଷିତ ଭାବରେ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "ଆପଣଙ୍କର ନବୀନତମ ପରିବର୍ତ୍ତନଗୁଡ଼ିକୁ ସେଭ୍ କରାଯାଇପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "ଆପଣ ଏହି ସେମାଣ୍ଟିକ୍ CSS ଡ୍ରାଫ୍ଟକୁ ସ୍ପଷ୍ଟ ଭାବରେ ସକ୍ରିୟ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଆପଣଙ୍କର ଲିଗାସୀ ଷ୍ଟାଇଲ୍ ସକ୍ରିୟ ରହିବ।"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "ଆପଣଙ୍କ ପାସୱାର୍ଡ ସଫଳତାର ସହ ପୁନଃ ସେଟ୍ କରାଯାଇଛି। ଆପଣ ଏବେ ନୂତନ ପାସୱାର୍ଡ ସହ ସାଇନ୍ ଇନ୍ କରିପାରିବେ।"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: pl\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu konta"
|
||||
msgid "Actions"
|
||||
msgstr "Działania"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktywuj semantyczny CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Rzeczywisty rozmiar (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Aplikacje wysłane tygodniowo (ostatnie 8 tygodni)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Złożono aplikację"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Zastosowano"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Zastosowane zasady"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Zastosowano z ostrzeżeniami"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabski"
|
||||
@@ -800,6 +809,14 @@ msgstr "Sprawdź swoją skrzynkę e-mail, aby znaleźć link do zresetowania has
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Sprawdź swoją skrzynkę e-mail, aby znaleźć link do weryfikacji konta."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontrola"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Sprawdzanie wersji roboczej"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chiński (uproszczony)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Skopiowano konwersację."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Skopiowano plik JSON rozmowy."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Przekonwertowany projekt arkusza stylów"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Skopiowano do schowka."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Skopiuj kody zapasowe"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopiuj JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopiuj arkusz stylów"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Skopiuj ten tajny klucz i użyj go w swoich aplikacjach, aby uzyskać dostęp do swoich danych."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Proszę edytować {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Edytuj aplikację"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Edytuj kolor {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Wprowadź hasło, aby potwierdzić konfigurację uwierzytelniania dwusk
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Wprowadź hasło, aby wyłączyć uwierzytelnianie dwuskładnikowe. Twoje konto będzie mniej bezpieczne bez włączonego 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Każdy wkład, mały czy duży, ma ogromne znaczenie dla projektu.<0/>Dziękujemy za wsparcie!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Każdy wkład, mały czy duży, ma ogromne znaczenie dla projektu.<0/>Dz
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Wszystko, czego potrzebujesz, aby tworzyć, dostosowywać i udostępniać profesjonalne CV. Zbudowane z myślą o prywatności, oparte na open source i całkowicie darmowe na zawsze."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Wyjdź z trybu ostrości"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Wyjdź z trybu pełnoekranowego"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatuj arkusz stylów"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Darmowe"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Jasny"
|
||||
msgid "Light theme"
|
||||
msgstr "Jasny motyw"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linia {0}, kolumna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Wysokość wiersza"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norweski"
|
||||
msgid "Not connected"
|
||||
msgstr "Nie połączony"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Otwarty asystent AI"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Otwórz klienta poczty e-mail"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Otwórz tryb ostrości"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Otwórz w kreatorze"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Zgodny z OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Proszę wcisnąć <0>Enter</0>, aby otworzyć"
|
||||
msgid "Preview"
|
||||
msgstr "Zapowiedź"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Podczas podglądu i eksportu użyj ostatniej ważnej wersji."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Kolor główny"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktywne CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Czytanie…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Gotowy do aktywacji"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Gotowy do aktywacji z ostrzeżeniami"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Odbiorca"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Prostokąt (pełna szerokość)"
|
||||
msgid "Redo"
|
||||
msgstr "Przerobić"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Ponów edycję arkusza stylów"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Zresetuj hasło"
|
||||
msgid "Reset Style"
|
||||
msgstr "Resetuj styl"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Resetuj do zastosowanego arkusza stylów"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Zresetuj swoje hasło"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "wybrane"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Samodzielny hosting z Dockerem"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Arkusz stylów CSS semantyczny"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Style semantyczne pozostają aktywne"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Wyślij wiadomość"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Przekreślenie"
|
||||
msgid "Strong fit"
|
||||
msgstr "Mocne dopasowanie"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Edytor arkuszy stylów"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Arkusz stylów zawiera błędy"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Strona, której szukasz, mogła zostać przeniesiona lub już nie istnie
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Wprowadzone hasło jest nieprawidłowe"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Nie udało się zaktualizować podglądu CV. Nadal wyświetlany jest ostatni prawidłowy podgląd."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV, do którego próbujesz uzyskać dostęp, jest chronione hasłem"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Ten wpis zostanie trwale usunięty. Tej czynności nie można cofnąć."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ta funkcja wymaga podłączonego dostawcy sztucznej inteligencji. Skonfiguruj go w ustawieniach."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "W tej instancji edycja semantycznego kodu CSS nie jest obecnie możliwa."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "To przyjazna dla adresu URL nazwa Twojego CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Podkreślenie"
|
||||
msgid "Undo"
|
||||
msgstr "Anulować"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Cofnij edycję arkusza stylów"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Nielimitowana liczba CV"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Twoje dane są przechowywane w bezpieczny sposób i nigdy nie są udost
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Nie udało się zapisać ostatnich zmian."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Twoje starsze style pozostaną aktywne, dopóki wyraźnie nie aktywujesz tego projektu semantycznego CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Twoje hasło zostało pomyślnie zresetowane. Możesz teraz zalogować się przy użyciu nowego hasła."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: pt\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu da conta"
|
||||
msgid "Actions"
|
||||
msgstr "Ações"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Ativar CSS Semântico"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Tamanho real (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidaturas enviadas por semana (últimas 8 semanas)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Aplicado"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplicado em"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Regras Aplicadas"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Aplicado com ressalvas."
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Árabe"
|
||||
@@ -800,6 +809,14 @@ msgstr "Verifique seu email em busca de um link para redefinir sua senha."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Verifique seu email em busca de um link para verificar sua conta."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Verificando rascunho"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinês (Simplificado)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversa copiada."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON da conversa copiado."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Rascunho da folha de estilo convertida"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiado para a área de transferência."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copiar códigos de backup"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copiar JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copiar folha de estilo"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copie esta chave secreta e use-a em seus aplicativos para acessar seus dados."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Editar {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Editar aplicativo"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Editar cor {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Digite sua senha para confirmar a configuração da autenticação de do
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Digite sua senha para desativar a autenticação de dois fatores. Sua conta ficará menos segura sem o 2FA ativado."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Cada contribuição, grande ou pequena, faz uma enorme diferença para o projeto.<0/>Obrigado pelo seu apoio!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Cada contribuição, grande ou pequena, faz uma enorme diferença para o
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tudo o que você precisa para criar, personalizar e compartilhar currículos profissionais. Construído com foco na privacidade, impulsionado por código aberto e completamente gratuito para sempre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Sair do modo de foco"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Sair da tela cheia"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formatar"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatar folha de estilo"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuito"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Claro"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema claro"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linha {0}, coluna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Altura da linha"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norueguês"
|
||||
msgid "Not connected"
|
||||
msgstr "Não conectado"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Assistente de IA aberta"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Abrir cliente de email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Modo de foco aberto"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Abrir no construtor"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatível com OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Pressione <0>Enter</0> para abrir"
|
||||
msgid "Preview"
|
||||
msgstr "Pré-visualização"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "A pré-visualização e a exportação utilizam a última versão válida."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Cor primária"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Retomar reativo v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Currículo reativo v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lendo…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Pronto para ativar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Pronto para ativar com avisos"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatário"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Retângulo (largura total)"
|
||||
msgid "Redo"
|
||||
msgstr "Refazer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Refazer edição da folha de estilo"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Redefinir senha"
|
||||
msgid "Reset Style"
|
||||
msgstr "Redefinir estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Redefinir para a folha de estilo aplicada"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Redefinir a sua senha"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "selecionado"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Auto-hospedagem com Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Folha de estilo CSS semântica"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Os estilos semânticos permanecem ativos"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Enviar mensagem"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Tachar"
|
||||
msgid "Strong fit"
|
||||
msgstr "Ajuste forte"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor de folhas de estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "A folha de estilo contém erros."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "A página que você está procurando pode ter sido movida ou não existi
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "A senha que você digitou está incorreta"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Não foi possível atualizar a pré-visualização do currículo. A última pré-visualização válida ainda está sendo exibida."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "O currículo que você está tentando acessar está protegido por senha"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Esta entrada será excluída permanentemente. Isso não pode ser desfeit
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Este recurso requer um provedor de IA conectado. Configure um nas configurações."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Esta instância não permite, no momento, a edição de CSS semântico."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Este é um nome amigável para URL do seu currículo."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Sublinhar"
|
||||
msgid "Undo"
|
||||
msgstr "Desfazer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Desfazer edição da folha de estilo"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Currículos ilimitados"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Seus dados são armazenados com segurança e nunca são compartilhados c
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Não foi possível salvar suas últimas alterações."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Seus estilos legados permanecerão ativos até que você ative explicitamente este rascunho de CSS Semântico."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Sua senha foi redefinida com sucesso. Agora você pode entrar com sua nova senha."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: pt\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu da conta"
|
||||
msgid "Actions"
|
||||
msgstr "Ações"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Ativar CSS Semântico"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Tamanho real (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidaturas enviadas por semana (últimas 8 semanas)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Candidatura enviada"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplicado em"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Regras Aplicadas"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Aplicado com reservas."
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Árabe"
|
||||
@@ -800,6 +809,14 @@ msgstr "Verifique o seu email para obter um link para repor a sua senha."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Verifique o seu email para obter um link para verificar a sua conta."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Verificando rascunho"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chinês (simplificado)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversa copiada."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON da conversa copiado."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Rascunho da folha de estilo convertida"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiado para a área de transferência."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copiar códigos de backup"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copiar JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copiar folha de estilo"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copie esta chave secreta e utilize-a nas suas aplicações para aceder aos seus dados."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Edite {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Editar aplicação"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Editar cor {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Introduza a sua senha para confirmar a configuração da autenticação
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Introduza a sua senha para desativar a autenticação de dois fatores. A sua conta ficará menos segura sem a 2FA ativada."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Cada contribuição, grande ou pequena, faz uma enorme diferença para o projeto.<0/>Obrigado pelo seu apoio!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Cada contribuição, grande ou pequena, faz uma enorme diferença para o
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tudo o que precisa para criar, personalizar e partilhar currículos profissionais. Criado com a privacidade em mente, alimentado por código aberto e completamente gratuito para sempre."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Sair do modo de focagem"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Sair do ecrã inteiro"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formato"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatar folha de estilos"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Grátis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Modo claro"
|
||||
msgid "Light theme"
|
||||
msgstr "Tema claro"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linha {0}, coluna {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Altura da linha"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norueguês"
|
||||
msgid "Not connected"
|
||||
msgstr "Não conectado"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Assistente de IA aberta"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Abrir cliente de email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Modo de focagem aberta"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Abrir no construtor"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatível com OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Prima <0>Enter</0> para abrir"
|
||||
msgid "Preview"
|
||||
msgstr "Pré-visualização"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "A pré-visualização e a exportação utilizam a última versão válida."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Cor principal"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reativo reativo v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Currículo reativo v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Leitura…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Pronto para ativar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Pronto para ativar com avisos"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatário"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Retângulo (largura total)"
|
||||
msgid "Redo"
|
||||
msgstr "Refazer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Refazer edição da folha de estilos"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Repor senha"
|
||||
msgid "Reset Style"
|
||||
msgstr "Redefinir estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Repor para a folha de estilo aplicada"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Repor a sua senha"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "selecionado"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Faça auto-hospedagem com o Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Folha de estilo CSS semântica"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Os estilos semânticos permanecem ativos"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Enviar mensagem"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Rasurar"
|
||||
msgid "Strong fit"
|
||||
msgstr "Ajuste forte"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor de folhas de estilo"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "A folha de estilos contém erros."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "A página que procura pode ter sido movida ou já não existir."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "A senha que introduziu está incorreta"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Não foi possível atualizar a pré-visualização do currículo. A última pré-visualização válida ainda está a ser apresentada."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "O currículo a que está a tentar aceder está protegido por senha"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Esta entrada será eliminada permanentemente. Isto não pode ser anulado
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Este recurso requer um fornecedor de IA conectado. Configure um nas definições."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Esta instância não permite, de momento, a edição de CSS semântico."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Este é um nome compatível com URL para o seu currículo."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Sublinhar"
|
||||
msgid "Undo"
|
||||
msgstr "Desfazer"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Desfazer edição da folha de estilos"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Currículos ilimitados"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Os seus dados são armazenados em segurança e nunca são partilhados co
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Não foi possível guardar as suas últimas alterações."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Os seus estilos legados permanecerão ativos até que ative explicitamente este rascunho de CSS Semântico."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "A sua senha foi reposta com sucesso. Já pode iniciar sessão com a sua nova senha."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ro\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Meniul Cont"
|
||||
msgid "Actions"
|
||||
msgstr "Acțiuni"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Activează CSS-ul semantic"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Dimensiune reală (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Candidaturi trimise pe săptămână (ultimele 8 săptămâni)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Candidatură trimisă"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplicat pe"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Reguli aplicate"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Aplicat cu avertismente"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabă"
|
||||
@@ -800,6 +809,14 @@ msgstr "Verificați-vă e-mailul pentru un link de resetare a parolei."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Verificați-vă e-mailul pentru un link de verificare a contului."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Control"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Verificare schiță"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Chineză (simplificată)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Conversație copiată."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON-ul conversației a fost copiat."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Schiță de foaie de stil convertită"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Copiat în clipboard."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Copiază codurile de rezervă"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Copiază JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Copiați foaia de stil"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Copiați această cheie secretă și folosiți-o în aplicațiile dvs. pentru a vă accesa datele."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Editează {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Editați aplicația"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Editează culoarea {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Introduceți parola pentru a confirma configurarea autentificării cu do
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Introduceți parola pentru a dezactiva autentificarea cu doi factori. Contul va fi mai puțin sigur fără 2FA activat."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Eroare"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Fiecare contribuție, mare sau mică, face o diferență uriașă pentru proiect.<0/>Vă mulțumim pentru sprijin!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Fiecare contribuție, mare sau mică, face o diferență uriașă pentru
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Tot ce aveți nevoie pentru a crea, personaliza și partaja CV-uri profesionale. Construit având confidențialitatea în minte, bazat pe open source și complet gratuit pentru totdeauna."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Ieșiți din modul de focalizare"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Ieșire din ecran complet"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Foaie de stil de format"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuit"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Deschisă"
|
||||
msgid "Light theme"
|
||||
msgstr "Temă deschisă"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Linia {0}, coloana {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Înălțimea liniei"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvegiană"
|
||||
msgid "Not connected"
|
||||
msgstr "Neconectat"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr "Nu ești sigur ce să scrii?"
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Asistent AI deschis"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Deschide clientul de e-mail"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Deschide modul de focalizare"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Deschide în constructor"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Compatibil cu OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Apăsați <0>Enter</0> pentru a deschide"
|
||||
msgid "Preview"
|
||||
msgstr "Previzualizare"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Previzualizarea și exportarea utilizează ultima versiune validă."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Culoare primară"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "CV reactiv v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "CV reactiv v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr "Citiți ghidul Aplicarea stilurilor personalizate."
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Lectură…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Gata de activare"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Gata de activare cu avertismente"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatar"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Dreptunghi (lățime completă)"
|
||||
msgid "Redo"
|
||||
msgstr "Refaceți"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Refaceți editarea foii de stil"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Resetați parola"
|
||||
msgid "Reset Style"
|
||||
msgstr "Resetare stil"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Resetare la foaia de stil aplicată"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Resetați-vă parola"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "selectat"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-host cu Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Foaie de stil CSS semantică"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Stilurile semantice rămân active"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Trimite mesaj"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Tăiat"
|
||||
msgid "Strong fit"
|
||||
msgstr "Potrivire puternică"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor de foi de stil"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Foaia de stil conține erori"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Pagina pe care o căutați s-ar putea să fi fost mutată sau să nu mai
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Parola introdusă este incorectă"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Previzualizarea CV-ului nu a putut fi actualizată. Ultima previzualizare validă este încă afișată."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV-ul la care încercați să accesați este protejat prin parolă"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Această intrare va fi ștearsă definitiv. Această acțiune nu poate f
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Această funcție necesită un furnizor de inteligență artificială conectat. Vă rugăm să configurați unul în setări."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Această instanță nu permite în prezent editarea CSS semantică."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Acesta este un nume prietenos cu URL-ul pentru CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Subliniat"
|
||||
msgid "Undo"
|
||||
msgstr "Anula"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Anulează editarea foii de stil"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "CV-uri nelimitate"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Datele dvs. sunt stocate în siguranță și nu sunt niciodată partajat
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Ultimele modificări ale dvs. nu au putut fi salvate."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Stilurile tale vechi rămân active până când activezi explicit această schiță CSS semantică."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Parola a fost resetată cu succes. Vă puteți autentifica acum cu noua parolă."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ru\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Меню учетной записи"
|
||||
msgid "Actions"
|
||||
msgstr "Действия"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Активировать семантический CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Фактический размер (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Заявки, отправленные за неделю (последние 8 недель)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Отклик отправлен"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Применяется на"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Применяемые правила"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Применяется с предупреждениями."
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Арабский"
|
||||
@@ -800,6 +809,14 @@ msgstr "Проверьте свою электронную почту: в пис
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Проверьте свою электронную почту: в письме есть ссылка для подтверждения учетной записи."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Проверка"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Проверка черновика"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Китайский (упрощенный)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Переписка скопирована."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON-данные диалога скопированы."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Преобразованный черновик таблицы стилей"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Скопировано в буфер обмена."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Скопировать резервные коды"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Скопировать JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Скопировать таблицу стилей"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Скопируйте этот секретный ключ и используйте его в своих приложениях для доступа к данным."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Редактировать {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Редактировать заявку"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Изменить цвет {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Введите пароль, чтобы подтвердить наст
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Введите пароль, чтобы отключить двухфакторную аутентификацию. Без 2FA ваша учетная запись будет менее защищена."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Каждый вклад, большой или маленький, имеет огромное значение для проекта.<0/>Спасибо за вашу поддержку!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Каждый вклад, большой или маленький, им
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Все, что нужно для создания, настройки и обмена профессиональными резюме. Создано с заботой о конфиденциальности, работает на базе открытого исходного кода и навсегда останется полностью бесплатным."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Выйти из режима фокусировки"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Выйти из полноэкранного режима"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Формат"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Формат таблицы стилей"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Бесплатно"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Светлая"
|
||||
msgid "Light theme"
|
||||
msgstr "Светлая тема"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Строка {0}, столбец {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Высота строки"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Норвежский"
|
||||
msgid "Not connected"
|
||||
msgstr "Не подключено"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Открытый ИИ-помощник"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Открыть почтовый клиент"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Открытый режим фокусировки"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Открыть в конструкторе"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Совместимость с OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Нажмите <0>Enter</0>, чтобы открыть"
|
||||
msgid "Preview"
|
||||
msgstr "Предварительный просмотр"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Для предварительного просмотра и экспорта используется последняя действующая версия."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Основной цвет"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Реактивное возобновление v<0>{__APP_VERSION__}</0
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Чтение…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Готово к активации"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Готов к активации с предупреждениями."
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Получатель"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Прямоугольник (на всю ширину)"
|
||||
msgid "Redo"
|
||||
msgstr "Переделать"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Повторить редактирование таблицы стилей"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Сбросить пароль"
|
||||
msgid "Reset Style"
|
||||
msgstr "Сбросить стиль"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Сбросить до примененной таблицы стилей"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Сбросить пароль"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "выбрано"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Хостинг на Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Семантическая таблица стилей CSS"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Семантические стили остаются активными."
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Отправить сообщение"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Зачеркнутый"
|
||||
msgid "Strong fit"
|
||||
msgstr "Сильная посадка"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Редактор таблиц стилей"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "В таблице стилей обнаружены ошибки."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Сабреддит"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Возможно, искомая вами страница была пе
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Введенный пароль неверен"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Не удалось обновить предварительный просмотр резюме. По-прежнему отображается последний корректный предварительный просмотр."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Резюме, к которому вы пытаетесь получить доступ, защищено паролем"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Эта запись будет удалена навсегда. Это
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Для работы этой функции требуется подключенный поставщик ИИ. Пожалуйста, настройте его в параметрах."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "В настоящее время данная версия не позволяет редактировать семантические CSS-стили."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Это удобное для URL название вашего резюме."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Подчеркивание"
|
||||
msgid "Undo"
|
||||
msgstr "Отменить"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Отменить редактирование таблицы стилей"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Неограниченное количество резюме"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Ваши данные надежно хранятся и никогда
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Ваши последние изменения не удалось сохранить."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Ваши устаревшие стили останутся активными до тех пор, пока вы явно не активируете этот черновой вариант семантического CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ваш пароль был успешно сброшен. Теперь вы можете войти с новым паролем."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: sk\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Slovak\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Ponuka účtu"
|
||||
msgid "Actions"
|
||||
msgstr "Akcie"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivovať sémantický CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Skutočná veľkosť (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Žiadosti odoslané za týždeň (posledných 8 týždňov)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Odoslané"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplikované dňa"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Použité pravidlá"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Použité s upozorneniami"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabčina"
|
||||
@@ -800,6 +809,14 @@ msgstr "Skontroluj svoj e‑mail, nájdeš tam odkaz na obnovenie hesla."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Skontroluj svoj e‑mail, nájdeš tam odkaz na overenie účtu."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontrola"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Kontrola konceptu"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Čínština (zjednodušená)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Konverzácia bola skopírovaná."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON konverzácie bol skopírovaný."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konvertovaný koncept štýlového hárka"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Skopírované do schránky."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Skopírovať záložné kódy"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopírovať JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopírovať šablónu so štýlmi"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Skopíruj tento tajný kľúč a použi ho vo svojich aplikáciách na prístup k svojim dátam."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Upraviť {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Upraviť aplikáciu"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Upraviť farbu {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Zadaj svoje heslo na potvrdenie nastavenia dvojfaktorového overenia. Po
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Zadaj svoje heslo na vypnutie dvojfaktorového overenia. Bez zapnutého 2FA bude tvoj účet menej zabezpečený."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Každý príspevok, veľký či malý, má pre projekt obrovský význam.<0/>Ďakujeme za tvoju podporu!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Každý príspevok, veľký či malý, má pre projekt obrovský význam
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Všetko, čo potrebuješ na vytvorenie, prispôsobenie a zdieľanie profesionálnych životopisov. Vytvorené s dôrazom na súkromie, poháňané open source a úplne zadarmo – navždy."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Ukončiť režim zaostrenia"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Ukončiť celú obrazovku"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formát"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formátovať štýlový hárok"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Zadarmo"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Svetlá"
|
||||
msgid "Light theme"
|
||||
msgstr "Svetlá téma"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Riadok {0}, stĺpec {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Riadkovanie"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Nórčina"
|
||||
msgid "Not connected"
|
||||
msgstr "Nepripojené"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Otvorený asistent s umelou inteligenciou"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Otvoriť e‑mailového klienta"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Otvoriť režim zaostrenia"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Otvoriť v editore"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Kompatibilné s OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Stlačením tlačidla <0>Enter</0> otvoríte"
|
||||
msgid "Preview"
|
||||
msgstr "Náhľad"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Pri ukážke a exporte sa použije posledná platná verzia."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Hlavná farba"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktívny životopis v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktívny životopis v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Číta sa…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Pripravené na aktiváciu"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Pripravené na aktiváciu s upozorneniami"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Príjemca"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Obdĺžnik (plná šírka)"
|
||||
msgid "Redo"
|
||||
msgstr "Znovu"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Znovu upraviť štýlový hárok"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Obnoviť heslo"
|
||||
msgid "Reset Style"
|
||||
msgstr "Obnoviť štýl"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Obnoviť na použitý štýlový hárok"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Obnov svoje heslo"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "vybrané"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Vlastný hosting cez Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Sémantický CSS štýlový hárok"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Sémantické štýly zostávajú aktívne"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Odoslať správu"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Prečiarknuté"
|
||||
msgid "Strong fit"
|
||||
msgstr "Silný strih"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Editor štýlov"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Štýlový hárok obsahuje chyby"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Stránka, ktorú hľadáte, mohla byť presunutá alebo už neexistuje."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Zadané heslo je nesprávne"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Ukážku životopisu sa nepodarilo aktualizovať. Stále sa zobrazuje posledná platná ukážka."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Životopis, ku ktorému sa snažíš pristúpiť, je chránený heslom"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Tento záznam bude natrvalo odstránený. Túto akciu nie je možné vr
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Táto funkcia vyžaduje pripojeného poskytovateľa umelej inteligencie. Nastavte si ho v nastaveniach."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Táto inštancia momentálne neumožňuje úpravu sémantického CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Toto je URL‑prívetivý názov tvojho životopisu."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Podčiarknuté"
|
||||
msgid "Undo"
|
||||
msgstr "Späť"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Vrátiť späť úpravu štýlového hárka"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Neobmedzený počet životopisov"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Tvoje dáta sú bezpečne uložené a nikdy sa nezdieľajú s tretími s
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Vaše posledné zmeny sa nepodarilo uložiť."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Vaše staršie štýly zostanú aktívne, kým explicitne neaktivujete tento koncept sémantického CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Tvoje heslo bolo úspešne obnovené. Teraz sa môžeš prihlásiť s novým heslom."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: sl\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Meni računa"
|
||||
msgid "Actions"
|
||||
msgstr "Dejanja"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktiviraj semantični CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Dejanska velikost (100 %)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Prijave, poslane na teden (zadnjih 8 tednov)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Prijavljeno"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Uporabljeno na"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Uporabljena pravila"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Uporabljeno z opozorili"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabščina"
|
||||
@@ -800,6 +809,14 @@ msgstr "Preverite svoj e-poštni naslov za povezavo za ponastavitev gesla."
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Preverite svoj e-poštni naslov za povezavo za potrditev računa."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Preverjanje"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Preverjanje osnutka"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kitajščina (poenostavljena)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Pogovor je kopiran."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON pogovora je bil kopiran."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Pretvorjen osnutek slogovne predloge"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopirano v odložišče."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopiraj rezervne kode"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopiraj JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopiraj slogovno predlogo"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopirajte to skrivno kodo in jo uporabite v svojih aplikacijah za dostop do svojih podatkov."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Uredi {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Uredi aplikacijo"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Uredi barvo {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Vnesite svoje geslo, da potrdite nastavitev dvostopenjskega preverjanja
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Vnesite svoje geslo za onemogočanje dvostopenjskega preverjanja pristnosti. Vaš račun bo brez omogočenega 2FA manj varen."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Napaka"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Vsak prispevek, velik ali majhen, veliko pomeni projektu.<0/>Hvala za vašo podporo!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Vsak prispevek, velik ali majhen, veliko pomeni projektu.<0/>Hvala za va
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Vse, kar potrebujete za ustvarjanje, prilagajanje in deljenje strokovnih življenjepisov. Zgrajeno z mislijo na zasebnost, temelji na odprti kodi in je popolnoma brezplačno za vedno."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Izhod iz načina ostrenja"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Izhod iz celozaslonskega načina"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Oblikovanje slogovne predloge"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Brezplačno"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Svetlo"
|
||||
msgid "Light theme"
|
||||
msgstr "Svetla tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Vrstica {0}, stolpec {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Višina vrstice"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "norveščina"
|
||||
msgid "Not connected"
|
||||
msgstr "Ni povezano"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Odprti pomočnik umetne inteligence"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Odpri e-poštni odjemalec"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Odpri način ostrenja"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Odpri v graditelju"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Združljivo z OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Pritisnite <0>Enter</0>, da odprete"
|
||||
msgid "Preview"
|
||||
msgstr "Predogled"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Predogled in izvoz uporabljata zadnjo veljavno različico."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primarna barva"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktivni življenjepis v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktivni življenjepis v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Branje ..."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Pripravljeno za aktivacijo"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Pripravljeno za aktivacijo z opozorili"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Prejemnik"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Pravokotnik (polna širina)"
|
||||
msgid "Redo"
|
||||
msgstr "Ponovi"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Ponovi urejanje slogovne predloge"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Ponastavi geslo"
|
||||
msgid "Reset Style"
|
||||
msgstr "Ponastavi slog"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Ponastavi na uporabljeno slogovno predlogo"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Ponastavite svoje geslo"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "izbrano"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Lastno gostovanje z Dockerjem"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantični CSS slogovni predlog"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantični slogi ostajajo aktivni"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Pošlji sporočilo"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Prečrtano"
|
||||
msgid "Strong fit"
|
||||
msgstr "Močno prileganje"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Urejevalnik slogovnih predlog"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Slogovna predloga vsebuje napake"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Podreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Stran, ki jo iščete, je bila morda premaknjena ali pa ne obstaja več.
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Vnesli ste napačno geslo"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Predogleda življenjepisa ni bilo mogoče posodobiti. Še vedno je prikazan zadnji veljaven predogled."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Življenjepis, do katerega želite dostopati, je zaščiten z geslom"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Ta vnos bo trajno izbrisan. Tega ni mogoče razveljaviti."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ta funkcija zahteva povezanega ponudnika umetne inteligence. Nastavite ga v nastavitvah."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Ta primerek trenutno ne dovoljuje urejanja semantičnega CSS-ja."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "To je ime vašega življenjepisa, ki je prijazno do URL-jev."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Podčrtano"
|
||||
msgid "Undo"
|
||||
msgstr "Razveljavi"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Razveljavi urejanje slogovne predloge"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Neomejeni življenjepisi"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Vaši podatki so varno shranjeni in se nikoli ne delijo s tretjimi oseba
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Vaših zadnjih sprememb ni bilo mogoče shraniti."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Vaši podedovani slogi ostanejo aktivni, dokler izrecno ne aktivirate tega osnutka semantičnega CSS-ja."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Vaše geslo je bilo uspešno ponastavljeno. Zdaj se lahko prijavite z novim geslom."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: sq\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Albanian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menuja e llogarisë"
|
||||
msgid "Actions"
|
||||
msgstr "Veprime"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivizo CSS-në Semantike"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Madhësia reale (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Aplikimet e dërguara për javë (8 javët e fundit)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Aplikuar"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Aplikuar në"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Rregullat e zbatuara"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Zbatuar me paralajmërime"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabisht"
|
||||
@@ -800,6 +809,14 @@ msgstr "Kontrolloni emailin tuaj për një link për të rivendosur fjalëkalimi
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Kontrolloni emailin tuaj për një link për të verifikuar llogarinë tuaj."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Duke kontrolluar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Duke kontrolluar draftin"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kinezçe (E thjeshtuar)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Biseda u kopjua."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON i bisedës u kopjua."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Drafti i konvertuar i fletës së stilit"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopjuar në kujtesën e fragmenteve."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopjo kodet rezervë"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopjo JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopjo fletën e stilit"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopjoni këtë çelës sekret dhe përdoreni në aplikacionet tuaja për të aksesuar të dhënat tuaja."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Redakto {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Redakto aplikacionin"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Modifiko ngjyrën {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Shkruani fjalëkalimin tuaj për të konfirmuar konfigurimin e vërtetim
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Shkruani fjalëkalimin tuaj për të çaktivizuar vërtetimin me dy faktorë. Llogaria juaj do të jetë më pak e sigurt pa 2FA të aktivizuar."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Gabim"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Çdo kontribut, i madh apo i vogël, bën një ndryshim të madh për projektin.<0/>Faleminderit për mbështetjen tuaj!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Çdo kontribut, i madh apo i vogël, bën një ndryshim të madh për pr
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Gjithçka që ju nevojitet për të krijuar, personalizuar dhe shpërndarë CV profesionale. Ndërtuar me fokus privatësinë, i fuqizuar nga burimi i hapur dhe krejtësisht falas përgjithmonë."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Dil nga modaliteti i fokusit"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Dil nga ekrani i plotë"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Formati"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formato fletën e stilit"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Falas"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "E çelët"
|
||||
msgid "Light theme"
|
||||
msgstr "Temë e çelët"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Rreshti {0}, kolona {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Lartësia e rreshtit"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norvegjisht"
|
||||
msgid "Not connected"
|
||||
msgstr "I palidhur"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Asistent i hapur i inteligjencës artificiale"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Hap klientin e emailit"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Hap modalitetin e fokusit"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Hap në ndërtues"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "I pajtueshëm me OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "Ruter i hapur"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Shtypni <0>Enter</0> për të hapur"
|
||||
msgid "Preview"
|
||||
msgstr "Pamje paraprake"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Parapamja dhe eksportimi përdorin versionin e fundit të vlefshëm."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Ngjyra kryesore"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Rezyme Reaktive v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reactive Resume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Duke lexuar…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Gati për t'u aktivizuar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Gati për t'u aktivizuar me paralajmërime"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Marrësi"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Drejtkëndësh (gjerësi e plotë)"
|
||||
msgid "Redo"
|
||||
msgstr "Ribëj"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Ribëj ndryshimin e fletës së stilit"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Rivendos fjalëkalimin"
|
||||
msgid "Reset Style"
|
||||
msgstr "Rivendos stilin"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Rivendos në fletën e stilit të aplikuar"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Rivendosni fjalëkalimin tuaj"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "të zgjedhura"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Self-host me Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Fletë stili semantike CSS"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Stilet semantike mbeten aktive"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Dërgo mesazh"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Heqje"
|
||||
msgid "Strong fit"
|
||||
msgstr "Përshtatje e fortë"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Redaktuesi i fletës së stilit"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Fleta e stilit ka gabime"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Faqja që po kërkoni mund të jetë zhvendosur ose nuk ekziston më."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Fjalëkalimi që keni futur është i pasaktë"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Pamja paraprake e CV-së nuk mund të përditësohej. Pamja paraprake e fundit e vlefshme shfaqet ende."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV-ja që po përpiqeni të aksesoni është e mbrojtur me fjalëkalim"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Kjo hyrje do të fshihet përgjithmonë. Kjo nuk mund të zhbëhet."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Kjo veçori kërkon një ofrues të lidhur të inteligjencës artificiale. Ju lutemi konfiguroni një të tillë në cilësime."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Kjo instancë aktualisht nuk lejon redaktimin semantik të CSS-së."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Ky është një emër miqësor për URL për CV-në tuaj."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Nënvizo"
|
||||
msgid "Undo"
|
||||
msgstr "Anulo"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Anulo ndryshimin e fletës së stilit"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "CV të pakufizuara"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Të dhënat tuaja ruhen në mënyrë të sigurt dhe nuk ndahen kurrë me
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Ndryshimet tuaja të fundit nuk mund të ruheshin."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Stilet tuaja të trashëguara mbeten aktive derisa ta aktivizoni në mënyrë të qartë këtë draft Semantic CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Fjalëkalimi juaj u rivendos me sukses. Tani mund të hyni me fjalëkalimin tuaj të ri."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: sr\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Мени налога"
|
||||
msgid "Actions"
|
||||
msgstr "Радње"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Активирајте семантички CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Стварна величина (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Пријаве послате недељно (последњих 8 недеља)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Пријављено"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Примењено на"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Примењена правила"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Примењено са упозорењима"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Арапски"
|
||||
@@ -800,6 +809,14 @@ msgstr "Проверите е-пошту за везу за ресетовање
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Проверите е-пошту за везу да верификујете налог."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Провера"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Текућа верзија"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Кинески (поједностављени)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Разговор је копиран."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON датотека разговора је копирана."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Конвертована нацртна верзија стилског листа"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Копирано у међуспремник."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Копирај резервне кодове"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Копирај JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Копирај стилски лист"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Копирајте овај тајни кључ и користите га у својим апликацијама за приступ вашим подацима."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Уреди {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Уреди апликацију"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Измени боју {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Унесите своју лозинку да потврдите под
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Унесите своју лозинку да бисте онемогућили двофакторску аутентификацију. Ваш налог ће бити мање безбедан без омогућеног 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Грешка"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Сваки допринос, велики или мали, прави велику разлику за пројекат.<0/>Хвала вам на подршци!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Сваки допринос, велики или мали, прави в
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Све што вам је потребно да креирате, прилагодите и делите професионалне резимее. Направљено имајући у виду приватност, базирано на отвореном коду и потпуно бесплатно заувек."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Изађи из режима фокусирања"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Изађи из целог екрана"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Формат"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Форматирање стилског листа"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Бесплатно"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Светла"
|
||||
msgid "Light theme"
|
||||
msgstr "Светла тема"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Ред {0}, колона {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Висина реда"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Норвешки"
|
||||
msgid "Not connected"
|
||||
msgstr "Није повезано"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Отворите AI асистент"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Отвори клијент за е-пошту"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Отвори режим фокуса"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Отвори у креатору"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Компатибилно са OpenAI-ом"
|
||||
msgid "OpenRouter"
|
||||
msgstr "Отворени рутер"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Притисните <0>Enter</0> да бисте отворили"
|
||||
msgid "Preview"
|
||||
msgstr "Преглед"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Преглед и извоз користе последњу важећу верзију."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Примарна боја"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Реактивни резиме v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Реактивни резиме v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Читање…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Спремно за активирање"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Спремно за активирање са упозорењима"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Прималац"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Правоугаоник (пуна ширина)"
|
||||
msgid "Redo"
|
||||
msgstr "Понови"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Понови измену стилског листа"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Ресетуј лозинку"
|
||||
msgid "Reset Style"
|
||||
msgstr "Ресетуј стил"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Врати на примењени стилски лист"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Ресетујте своју лозинку"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "изабрани"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Самохостовање помоћу Docker-а"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Семантички CSS стилски лист"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Семантички стилови остају активни"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Пошаљи поруку"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Прецртано"
|
||||
msgid "Strong fit"
|
||||
msgstr "Снажно уклапање"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Уређивач стилских листова"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Стилски лист садржи грешке"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Субредит"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Страница коју тражите је можда премешт
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Лозинка коју сте унели је нетачна"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Преглед резимеа није могао бити ажуриран. Последњи важећи преглед је и даље приказан."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Резиме коме покушавате да приступите је заштићен лозинком"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Овај унос ће бити трајно избрисан. Ово с
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ова функција захтева повезаног добављача вештачке интелигенције. Молимо вас да га подесите у подешавањима."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Ова инстанца тренутно не дозвољава уређивање семантичког CSS-а."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Ово је URL-пријатељско име за ваш резиме."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Подвучено"
|
||||
msgid "Undo"
|
||||
msgstr "Поништи"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Поништи измену стилског листа"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Неограничени резимеи"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Ваши подаци се чувају безбедно и никада
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Ваше последње измене нису могле бити сачуване."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Ваши старији стилови остају активни док експлицитно не активирате ову семантичку CSS верзију."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ваша лозинка је успешно ресетована. Сада можете да се пријавите новом лозинком."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: sv\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Swedish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Konto-meny"
|
||||
msgid "Actions"
|
||||
msgstr "Åtgärder"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Aktivera semantisk CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Verklig storlek (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Ansökningar skickade per vecka (senaste 8 veckorna)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Ansökt"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Tillämpas på"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Tillämpade regler"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Tillämpas med varningar"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arabiska"
|
||||
@@ -800,6 +809,14 @@ msgstr "Kontrollera din e-post för en länk för att återställa ditt lösenor
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Kontrollera din e-post för en länk för att verifiera ditt konto."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontroll"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Kontrollerar utkast"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Kinesiska (förenklad)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Konversationen kopierades."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Konversationens JSON kopierades."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Konverterat utkast till stilark"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Kopierade till urklipp."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Kopiera säkerhetskoder"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Kopiera JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Kopiera stilark"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Kopiera denna hemliga nyckel och använd den i dina applikationer för att komma åt din data."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Redigera {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Redigera ansökan"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Redigera färg {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Ange ditt lösenord för att bekräfta att du vill ställa in tvåfaktor
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Ange ditt lösenord för att inaktivera tvåfaktorsautentisering. Ditt konto blir mindre säkert utan aktiverad 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Varje bidrag, stort som litet, gör en enorm skillnad för projektet.<0/>Tack för ditt stöd!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Varje bidrag, stort som litet, gör en enorm skillnad för projektet.<0/
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Allt du behöver för att skapa, anpassa och dela professionella CV:n. Byggt med fokus på integritet, drivet av öppen källkod och helt gratis för alltid."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Avsluta fokusläge"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Avsluta helskärm"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Formatera stilark"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Ljus"
|
||||
msgid "Light theme"
|
||||
msgstr "Ljust tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Rad {0}, kolumn {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Radavstånd"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norska"
|
||||
msgid "Not connected"
|
||||
msgstr "Inte ansluten"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Öppna AI-assistenten"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Öppna e-postklient"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Öppna fokusläge"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Öppna i verktyget"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-kompatibel"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Tryck på <0>Enter</0> för att öppna"
|
||||
msgid "Preview"
|
||||
msgstr "Förhandsvisning"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Förhandsgranska och exportera med den senast giltiga versionen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Primärfärg"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktivt CV v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktivt CV v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Läsning…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Klar att aktiveras"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Klar att aktiveras med varningar"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Mottagare"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Rektangel (full bredd)"
|
||||
msgid "Redo"
|
||||
msgstr "Göra om"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Gör om redigeringen av stilmall"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Återställ lösenord"
|
||||
msgid "Reset Style"
|
||||
msgstr "Återställ stil"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Återställ till tillämpat formatmall"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Återställ ditt lösenord"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "vald"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Självhosting med Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantisk CSS-stilmall"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantiska stilar förblir aktiva"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Skicka meddelande"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Genomstrykning"
|
||||
msgid "Strong fit"
|
||||
msgstr "Stark passform"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stilarksredigerare"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stilarket innehåller fel"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Sidan du letar efter kan ha flyttats eller inte längre existera."
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Lösenordet du angav är felaktigt"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Förhandsgranskningen av CV:t kunde inte uppdateras. Den senast giltiga förhandsgranskningen visas fortfarande."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "CV:t du försöker komma åt är lösenordsskyddat"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Den här posten tas bort permanent. Det går inte att ångra."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Den här funktionen kräver en ansluten AI-leverantör. Vänligen konfigurera en i inställningarna."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Den här instansen tillåter för närvarande inte semantisk CSS-redigering."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Detta är ett URL-vänligt namn för ditt CV."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Understrykning"
|
||||
msgid "Undo"
|
||||
msgstr "Ångra"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Ångra redigering av stilark"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Obegränsat antal CV:n"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Dina data lagras säkert och delas aldrig med tredje part. Du kan också
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Dina senaste ändringar kunde inte sparas."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Dina äldre stilar förblir aktiva tills du uttryckligen aktiverar detta semantiska CSS-utkast."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ditt lösenord har återställts. Du kan nu logga in med ditt nya lösenord."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ta\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Tamil\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "கணக்கு மெனு"
|
||||
msgid "Actions"
|
||||
msgstr "செயல்கள்"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "செமாண்டிக் CSS-ஐ செயல்படுத்துக"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "உண்மையான அளவு (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "வாரத்திற்கு அனுப்பப்பட்ட விண்ணப்பங்கள் (கடைசி 8 வாரங்கள்)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "விண்ணப்பிக்கப்பட்டது"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "அன்று விண்ணப்பித்தது"
|
||||
msgid "Applied Rules"
|
||||
msgstr "பயன்படுத்தப்பட்ட விதிகள்"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "எச்சரிக்கைகளுடன் கூடிய அறிவு"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "அரபிக்"
|
||||
@@ -800,6 +809,14 @@ msgstr "உங்கள் கடவுச்சொல்லை மீட்ட
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "உங்கள் கணக்கை சரிபார்க்க ஒரு இணைப்புக்காக உங்கள் மின்னஞ்சலைச் சரிபார்க்கவும்."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "சரிபார்த்தல்"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "வரைவைச் சரிபார்த்தல்"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "சீனம் (எளிய)"
|
||||
@@ -966,6 +983,10 @@ msgstr "உரையாடல் நகலெடுக்கப்பட்ட
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "உரையாடல் JSON நகலெடுக்கப்பட்டது."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "மாற்றப்பட்ட ஸ்டைல்ஷீட் வரைவு"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது."
|
||||
@@ -989,6 +1010,10 @@ msgstr "காப்பு குறியீடுகளை நகலெடு"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON-ஐ நகலெடுக்கவும்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "பாணித்தாளை நகலெடுக்கவும்"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "இந்த ரகசிய விசையை நகலெடுத்து, உங்கள் பயன்பாடுகளில் உங்கள் தரவினை அணுக பயன்படுத்தவும்."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "திருத்து {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "பயன்பாட்டைத் திருத்தவும்"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "வண்ணத்தைத் திருத்து {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "இரண்டு நிலை அங்கீகாரத்தை அ
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "இரண்டு நிலை அங்கீகாரத்தை முடக்க உங்கள் கடவுச்சொல்லை உள்ளிடவும். 2FA இயங்காவிட்டால் உங்கள் கணக்கு குறைந்த பாதுகாப்புடன் இருக்கும்."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "பிழை"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ஒவ்வொரு பங்களிப்பும், பெரியதோ சிறியதோ, இந்த திட்டத்திற்கு மிகப் பெரிய மாற்றத்தை கொண்டுவந்து விடுகிறது.<0/>உங்கள் ஆதரவுக்கு நன்றி!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ஒவ்வொரு பங்களிப்பும், பெரி
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "தொழில்முறை ரெஸ்யூமிகளை உருவாக்க, விருப்பத்துக்கு உருப்பெற்றி, பகிர்வதற்குத் தேவையான அனைத்தும் இங்கே. தனியுரிமையை கருத்தில் கொண்டு உருவாக்கப்பட்டதால், திறந்த மூலத்தால் இயக்கப்படுகிறது மற்றும் எப்போதும் முழுவதுமாக இலவசம்."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "கவனப் பயன்முறையிலிருந்து வெளியேறு"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "முழுத்திரையிலிருந்து வெளியேறு"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "வடிவம்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "வடிவமைப்பு பாணித்தாள்"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "இலவசம்"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "லைட்"
|
||||
msgid "Light theme"
|
||||
msgstr "லைட் தீம்"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "வரி {0}, நெடுவரிசை {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "வரி உயரம்"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "நார்வேஜியன்"
|
||||
msgid "Not connected"
|
||||
msgstr "இணைப்பு இல்லை"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "திறந்த AI உதவியாளர்"
|
||||
msgid "Open Email Client"
|
||||
msgstr "மின்னஞ்சல் பயன்பாட்டை திறக்கவும்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "திறந்த குவிய முறை"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "பில்டரில் திறக்கவும்"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-இணக்கமானது"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ஓப்பன்ரவுட்டர்"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "திறக்க <0>Enter ஐ</0> அழுத்தவும்"
|
||||
msgid "Preview"
|
||||
msgstr "முன்னோட்டம்"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "முன்னோட்டம் மற்றும் ஏற்றுமதிக்கு, கடைசியாகச் செல்லுபடியாகும் பதிப்பைப் பயன்படுத்தவும்."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "முதன்மை நிறம்"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "ரியாக்டிவ் ரெஸ்யூம் v<0>{__APP_VERSI
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "எதிர்வினை ரெஸ்யூம் v4 (ஜேசன்)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "படிக்கிறது…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "செயல்படுத்தத் தயார்"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "எச்சரிக்கைகளுடன் செயல்படுத்தத் தயார்"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "பெறுநர்"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "சதுரம் (முழு அகலம்)"
|
||||
msgid "Redo"
|
||||
msgstr "மீண்டும் செய்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "ஸ்டைல்ஷீட் திருத்தத்தை மீண்டும் செய்"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "கடவுச்சொல்லை மீட்டமைக்கவ
|
||||
msgid "Reset Style"
|
||||
msgstr "பாணியை மீட்டமைக்கவும்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "பயன்படுத்தப்பட்ட பாணித் தாளுக்கு மீட்டமைக்கவும்"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "உங்கள் கடவுச்சொல்லை மீட்டமைக்கவும்"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "தேர்ந்தெடுக்கப்பட்டது"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker-இன் உதவியுடன் தானே ஹோஸ்ட் செய்யவும்"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "செமாண்டிக் CSS ஸ்டைல்ஷீட்"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "சொற்பொருள் பாணிகள் செயலில் உள்ளன"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "செய்திகளை அனுப்பு"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "கோடு கிழித்தல்"
|
||||
msgid "Strong fit"
|
||||
msgstr "வலுவான பொருத்தம்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "ஸ்டைல்ஷீட் எடிட்டர்"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "ஸ்டைல்ஷீட்டில் பிழைகள் உள்ளன"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "சப்ரெட்டிட்"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "நீங்கள் தேடும் பக்கம் வேறு
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "நீங்கள் உள்ளிட்ட கடவுச்சொல் தவறானது"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "சுயவிவர முன்னோட்டத்தைப் புதுப்பிக்க முடியவில்லை. கடைசியாகச் செல்லுபடியான முன்னோட்டம் இன்னும் காட்டப்படுகிறது."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "நீங்கள் அணுக முயற்சிக்கும் ரெஸ்யூமி கடவுச்சொல் பாதுகாப்புடன் உள்ளது"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "இந்த உள்ளீடு நிரந்தரமாக நீ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "இந்த அம்சத்திற்கு இணைக்கப்பட்ட AI வழங்குநர் தேவைப்படுகிறது. அமைப்புகளில் ஒன்றை அமைக்கவும்."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "இந்த இன்ஸ்டன்ஸ் தற்போது செமாண்டிக் CSS திருத்தத்தை அனுமதிக்காது."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "இது உங்கள் ரெஸ்யூமிக்கான URL-க்கு உகந்த பெயராகும்."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "அடைமுறை கோடு"
|
||||
msgid "Undo"
|
||||
msgstr "செயல்தவிர்"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "ஸ்டைல்ஷீட் திருத்தத்தை செயல்தவிர்க்கவும்"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "வரம்பற்ற ரெஸ்யூமிகள்"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "உங்கள் தரவு பாதுகாப்பாக சே
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "உங்கள் சமீபத்திய மாற்றங்களைச் சேமிக்க முடியவில்லை."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "நீங்கள் இந்த செமாண்டிக் CSS வரைவை வெளிப்படையாகச் செயல்படுத்தும் வரை, உங்கள் மரபுப் பாணிகள் செயலில் இருக்கும்."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "உங்கள் கடவுச்சொல் வெற்றிகரமாக மீட்டமைக்கப்பட்டுள்ளது. இப்போது உங்கள் புதிய கடவுச்சொல்லைப் பயன்படுத்தி உள்நுழையலாம்."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: te\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Telugu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "ఖాతా మెనూ"
|
||||
msgid "Actions"
|
||||
msgstr "చర్యలు"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "సెమాంటిక్ CSSని యాక్టివేట్ చేయండి"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "వాస్తవ పరిమాణం (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "వారానికి పంపిన దరఖాస్తులు (చివరి 8 వారాలు)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "దరఖాస్తు చేశారు"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "దరఖాస్తు చేసిన తేదీ"
|
||||
msgid "Applied Rules"
|
||||
msgstr "వర్తింపజేసిన నియమాలు"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "హెచ్చరికలతో వర్తింపజేయబడింది"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "అరబిక్"
|
||||
@@ -800,6 +809,14 @@ msgstr "మీ పాస్వర్డ్ను రీసెట్ చే
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "మీ అకౌంట్ను ధృవీకరించడానికి లింక్ కోసం మీ ఇమెయిల్ను తనిఖీ చేయండి."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "తనిఖీ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "డ్రాఫ్ట్ను తనిఖీ చేయడం"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "చైనీస్ (సరళీకృత)"
|
||||
@@ -966,6 +983,10 @@ msgstr "సంభాషణ నకలు చేయబడింది."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "సంభాషణ JSON కాపీ చేయబడింది."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "మార్చబడిన స్టైల్షీట్ డ్రాఫ్ట్"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "క్లిప్బోర్డ్కు కాపీ చేయబడింది."
|
||||
@@ -989,6 +1010,10 @@ msgstr "బ్యాకప్ కోడ్లను కాపీ చేయం
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSONని కాపీ చేయండి"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "స్టైల్షీట్ను కాపీ చేయండి"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "ఈ సీక్రెట్ కీని కాపీ చేసి మీ యాప్లలో మీరు మీ డేటాను యాక్సెస్ చేయడానికి ఉపయోగించండి."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "సవరించు {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "దరఖాస్తును సవరించు"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "రంగును సవరించండి {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "రెండు దశల ధృవీకరణ ఏర్పాటున
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "రెండు దశల ధృవీకరణను నిలిపివేయడానికి మీ పాస్వర్డ్ని నమోదు చేయండి. 2FA ప్రారంభించబడకుండా ఉంటే మీ ఖాతా తక్కువ భద్రతగా ఉంటుంది."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "లోపం"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ప్రతి సహకారం, చిన్నదైనా పెద్దదైనా, ప్రాజెక్టులో గొప్ప మార్పును తీసుకురాగలదు.<0/>మీ మద్దతుకు ధన్యవాదాలు!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ప్రతి సహకారం, చిన్నదైనా పె
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "ప్రొఫెషనల్ రిజ్యూమ్లు సృష్టించడానికి, అనుకూలీకరించడానికి, మరియు పంచుకోవడానికి మీకు కావాల్సిన ప్రతిదీ. ప్రైవసీని దృష్టిలో పెట్టుకొని, ఓపెన్ సోర్స్తో నిర్మించబడింది, ఎప్పటికీ ఉచితం."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ఫోకస్ మోడ్ నుండి నిష్క్రమించండి"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "పూర్తి స్క్రీన్ నుండి నిష్క్రమించు"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "ఫార్మాట్"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "ఫార్మాట్ స్టైల్షీట్"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ఉచితం"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "లైట్"
|
||||
msgid "Light theme"
|
||||
msgstr "లైట్ థీమ్"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "లైన్ {0}, కాలమ్ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "లైన్ హైట్"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "నార్వేజియన్"
|
||||
msgid "Not connected"
|
||||
msgstr "కనెక్ట్ కాలేదు"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "ఓపెన్ AI అసిస్టెంట్"
|
||||
msgid "Open Email Client"
|
||||
msgstr "ఈమెయిల్ క్లైంట్ తెరవండి"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "ఫోకస్ మోడ్ను తెరవండి"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "బిల్డర్లో తెరవండి"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI-అనుకూలమైనది"
|
||||
msgid "OpenRouter"
|
||||
msgstr "ఓపెన్రౌటర్"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "తెరవడానికి <0>ఎంటర్</0> నొక్కం
|
||||
msgid "Preview"
|
||||
msgstr "ప్రివ్యూ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ప్రివ్యూ మరియు ఎక్స్పోర్ట్ చివరి చెల్లుబాటు అయ్యే వెర్షన్ను ఉపయోగిస్తాయి."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "ప్రాథమిక రంగు"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "రియాక్టివ్ రెజ్యూమ్ v<0>{__APP_VERSI
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "రియాక్టివ్ రెజ్యూమ్ v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "చదువుతోంది…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "యాక్టివేట్ చేయడానికి సిద్ధంగా ఉంది"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "హెచ్చరికలతో యాక్టివేట్ చేయడానికి సిద్ధంగా ఉంది"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "గ్రహీత"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "ఆయతం (పూర్తి వెడల్పు)"
|
||||
msgid "Redo"
|
||||
msgstr "మళ్ళీ చేయండి"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "స్టైల్షీట్ సవరణను మళ్లీ చేయండి"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "పాస్వర్డ్ రీసెట్ చేయండి"
|
||||
msgid "Reset Style"
|
||||
msgstr "శైలిని రీసెట్ చేయండి"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "వర్తింపజేసిన స్టైల్షీట్కు రీసెట్ చేయండి"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "మీ పాస్వర్డ్ను రీసెట్ చేయండి"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "ఎంచుకోబడ్డాయి"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "డాకర్తో స్వయంగా హోస్ట్ చేయండి"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "సెమాంటిక్ CSS స్టైల్షీట్"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "సెమాంటిక్ శైలులు చురుకుగా ఉంటాయి"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "సందేశం పంపండి"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "స్ట్రైక్"
|
||||
msgid "Strong fit"
|
||||
msgstr "బలమైన సరిపోలిక"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "స్టైల్షీట్ ఎడిటర్"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "స్టైల్షీట్లో లోపాలు ఉన్నాయి"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "సబ్రెడిట్"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "మీరు వెతుకుతున్న పేజీ తరలి
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "మీరు నమోదు చేసిన పాస్వర్డ్ సరియైనది కాదు"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "రెస్యూమ్ ప్రివ్యూను అప్డేట్ చేయలేకపోయింది. చివరి చెల్లుబాటు అయ్యే ప్రివ్యూ ఇప్పటికీ చూపబడుతోంది."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "మీరు యాక్సెస్ చేయడానికి ప్రయత్నిస్తున్న రెజ్యూమే పాస్వర్డ్ ద్వారా రక్షించబడింది"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "ఈ ఎంట్రీ శాశ్వతంగా తొలగించ
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ఈ ఫీచర్కు అనుసంధానించబడిన AI ప్రొవైడర్ అవసరం. దయచేసి సెట్టింగ్స్లో ఒకదాన్ని ఏర్పాటు చేసుకోండి."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ఈ ఇన్స్టాన్స్ ప్రస్తుతం సెమాంటిక్ CSS ఎడిటింగ్ను అనుమతించదు."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "ఇది మీ రెజ్యూమ్కి URL-ప్రియమైన పేరు."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "అండర్లైన్"
|
||||
msgid "Undo"
|
||||
msgstr "రద్దు చేయి"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "స్టైల్షీట్ సవరణను రద్దు చేయండి"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "అనంత రెజ్యూమ్లు"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "మీ డేటా భద్రంగా నిల్వ చేయబ
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "మీ తాజా మార్పులు సేవ్ చేయబడలేదు."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "మీరు ఈ సెమాంటిక్ CSS డ్రాఫ్ట్ను స్పష్టంగా యాక్టివేట్ చేసే వరకు మీ పాత స్టైల్స్ చురుకుగా ఉంటాయి."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "మీ పాస్వర్డ్ విజయవంతంగా రీసెట్ చేయబడింది. ఇప్పుడు మీ కొత్త పాస్వర్డ్తో సైన్ ఇన్ చేయవచ్చు."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: th\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Thai\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "เมนูบัญชี"
|
||||
msgid "Actions"
|
||||
msgstr "การดำเนินการ"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "เปิดใช้งาน Semantic CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "ขนาดจริง (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "ใบสมัครที่ส่งต่อสัปดาห์ (8 สัปดาห์ล่าสุด)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "สมัครแล้ว"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "สมัครเมื่อ"
|
||||
msgid "Applied Rules"
|
||||
msgstr "กฎที่ใช้"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "ใช้งานโดยมีคำเตือน"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "อารบิก"
|
||||
@@ -800,6 +809,14 @@ msgstr "ตรวจสอบอีเมลของคุณสำหรับ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "ตรวจสอบอีเมลของคุณสำหรับลิงก์ยืนยันบัญชีของคุณ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "กำลังตรวจสอบ"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "ตรวจสอบร่าง"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "จีน (ตัวย่อ)"
|
||||
@@ -966,6 +983,10 @@ msgstr "บทสนทนานี้ถูกคัดลอกแล้ว"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "คัดลอกข้อมูล JSON ของบทสนทนาแล้ว"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "แปลงร่างสไตล์ชีตแล้ว"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "คัดลอกไปยังคลิปบอร์ดแล้ว"
|
||||
@@ -989,6 +1010,10 @@ msgstr "คัดลอกรหัสสำรอง"
|
||||
msgid "Copy JSON"
|
||||
msgstr "คัดลอก JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "คัดลอกสไตล์ชีต"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "คัดลอกคีย์ลับนี้และใช้ในแอปพลิเคชันของคุณเพื่อเข้าถึงข้อมูลของคุณ"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "แก้ไข {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "แก้ไขใบสมัคร"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "แก้ไขสี {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "กรอกรหัสผ่านของคุณเพื่อย
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "กรอกรหัสผ่านของคุณเพื่อปิดการใช้งานการยืนยันตัวตนสองขั้นตอน บัญชีของคุณจะไม่ปลอดภัยเท่าเดิมหากไม่ได้เปิดใช้งาน 2FA"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "ข้อผิดพลาด"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "ทุกการสนับสนุน ไม่ว่ามากหรือน้อย มีความสำคัญอย่างยิ่งต่อโปรเจกต์นี้<0/>ขอขอบคุณที่สนับสนุน!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "ทุกการสนับสนุน ไม่ว่ามาก
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "ทุกสิ่งที่คุณต้องการในการสร้าง ปรับแต่ง และแบ่งปันเรซูเม่มืออาชีพ สร้างขึ้นโดยคำนึงถึงความเป็นส่วนตัว เปิดบริการด้วยโอเพ่นซอร์ส และฟรีตลอดไป"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "ออกจากโหมดโฟกัส"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "ออกจากเต็มหน้าจอ"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "รูปแบบ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "จัดรูปแบบสไตล์ชีต"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "ฟรี"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "สว่าง"
|
||||
msgid "Light theme"
|
||||
msgstr "ธีมสว่าง"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "แถว {0}, คอลัมน์ {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "ความสูงของเส้น"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "นอร์เวย์"
|
||||
msgid "Not connected"
|
||||
msgstr "ไม่ได้เชื่อมต่อ"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "เปิดผู้ช่วย AI"
|
||||
msgid "Open Email Client"
|
||||
msgstr "เปิดโปรแกรมอีเมล"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "โหมดเปิดโฟกัส"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "เปิดในโปรแกรมสร้าง"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "เข้ากันได้กับ OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "โอเพ่นรูเตอร์"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "กด<0>Enter</0>เพื่อเปิด"
|
||||
msgid "Preview"
|
||||
msgstr "ตัวอย่าง"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "ให้ใช้เวอร์ชันล่าสุดที่ถูกต้องในการแสดงตัวอย่างและการส่งออก"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "สีหลัก"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "เรแอคทีฟ เรซูเม่ v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "กำลังอ่าน…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "พร้อมใช้งานแล้ว"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "พร้อมใช้งานพร้อมคำเตือน"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "ผู้รับ"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "สี่เหลี่ยมผืนผ้า (เต็มควา
|
||||
msgid "Redo"
|
||||
msgstr "ทำซ้ำ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "แก้ไขสไตล์ชีตใหม่"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "รีเซ็ตรหัสผ่าน"
|
||||
msgid "Reset Style"
|
||||
msgstr "รีเซ็ตสไตล์"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "รีเซ็ตเป็นสไตล์ชีตที่ใช้งานอยู่"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "รีเซ็ตรหัสผ่านของคุณ"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "เลือกแล้ว"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "โฮสต์ด้วยตนเองบน Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "สไตล์ชีต CSS เชิงความหมาย"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "รูปแบบความหมายยังคงใช้งานอยู่"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "ส่งข้อความ"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "ขีดฆ่า"
|
||||
msgid "Strong fit"
|
||||
msgstr "เหมาะสมมาก"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "ตัวแก้ไขสไตล์ชีต"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "ไฟล์สไตล์ชีตมีข้อผิดพลาด"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "ซับเรดดิต"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "หน้าที่คุณกำลังมองหาอาจถ
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "รหัสผ่านที่คุณกรอกไม่ถูกต้อง"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "ไม่สามารถอัปเดตตัวอย่างประวัติย่อได้ ตัวอย่างที่ถูกต้องล่าสุดยังคงแสดงอยู่"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "เรซูเม่ที่คุณพยายามเข้าถึงถูกป้องกันด้วยรหัสผ่าน"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "รายการนี้จะถูกลบอย่างถาว
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "ฟังก์ชันนี้ต้องใช้ผู้ให้บริการ AI ที่เชื่อมต่ออยู่ โปรดตั้งค่าผู้ให้บริการในส่วนการตั้งค่า"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "ขณะนี้ระบบยังไม่รองรับการแก้ไข CSS แบบ Semantic"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "นี่คือชื่อเรซูเม่ที่เหมาะสำหรับใช้ใน URL"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "ขีดเส้นใต้"
|
||||
msgid "Undo"
|
||||
msgstr "เลิกทำ"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "ยกเลิกการแก้ไขสไตล์ชีต"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "เรซูเม่ไม่จำกัดจำนวน"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "ข้อมูลของคุณถูกจัดเก็บไว
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "ไม่สามารถบันทึกการเปลี่ยนแปลงล่าสุดของคุณได้"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "สไตล์เดิมของคุณจะยังคงใช้งานได้จนกว่าคุณจะเปิดใช้งานร่าง CSS เชิงความหมายนี้อย่างชัดเจน"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "รหัสผ่านของคุณถูกรีเซ็ตเรียบร้อยแล้ว ตอนนี้คุณสามารถเข้าสู่ระบบด้วยรหัสผ่านใหม่ของคุณได้."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: tr\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Turkish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Hesap menüsü"
|
||||
msgid "Actions"
|
||||
msgstr "Eylemler"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Semantik CSS'i Etkinleştir"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Gerçek boyut (%100)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Haftalık gönderilen başvurular (son 8 hafta)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Başvuruldu"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Başvuru tarihi"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Uygulanan Kurallar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Uyarılarla birlikte uygulandı."
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arapça"
|
||||
@@ -800,6 +809,14 @@ msgstr "Şifrenizi sıfırlamak için bağlantı içeren e-postanızı kontrol e
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Hesabınızı doğrulamak için bağlantı içeren e-postanızı kontrol edin."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kontrol Etme"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Taslağı kontrol etme"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Çince (Basitleştirilmiş)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Konuşma kopyalandı."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Konuşma JSON'u kopyalandı."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Dönüştürülmüş stil sayfası taslağı"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Panoya kopyalandı."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Yedekleme Kodlarını Kopyala"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON'u kopyala"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Stil sayfasını kopyala"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Bu gizli anahtarı kopyalayıp uygulamalarınızda verilerinize erişmek için kullanın."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Düzenle {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Başvuruyu düzenle"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Renk düzenleme {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "İki faktörlü kimlik doğrulamayı kurmayı onaylamak için şifrenizi
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "İki faktörlü kimlik doğrulamayı devre dışı bırakmak için şifrenizi girin. 2FA etkin olmadığında hesabınız daha az güvenli olur."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Hata"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Her katkı, büyük ya da küçük, projeye önemli bir katkı sağlar.<0/>Desteğiniz için teşekkürler!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Her katkı, büyük ya da küçük, projeye önemli bir katkı sağlar.<
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Profesyonel özgeçmişler oluşturmak, özelleştirmek ve paylaşmak için ihtiyacınız olan her şey. Gizlilik odaklı, açık kaynaklı ve sonsuza dek tamamen ücretsiz."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Odak modundan çık"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Tam Ekrandan Çık"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Biçimlendirme stili sayfası"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Ücretsiz"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Açık"
|
||||
msgid "Light theme"
|
||||
msgstr "Açık tema"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Satır {0}, sütun {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Satır Yüksekliği"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norveççe"
|
||||
msgid "Not connected"
|
||||
msgstr "Bağlı değil"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Açık yapay zeka asistanı"
|
||||
msgid "Open Email Client"
|
||||
msgstr "E-posta İstemcisini Aç"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Açık odak modu"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Yapıcıda aç"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI uyumlu"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Açmak için <0>Enter</0> tuşuna basın"
|
||||
msgid "Preview"
|
||||
msgstr "Önizleme"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Önizleme ve dışa aktarma işlemleri için en son geçerli sürüm kullanılır."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Birincil Renk"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktif Özgeçmiş v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktif Özgeçmiş v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Okunuyor…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Etkinleştirmeye hazır"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Uyarılarla birlikte etkinleştirmeye hazır."
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Alıcı"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Dikdörtgen (Tam Genişlik)"
|
||||
msgid "Redo"
|
||||
msgstr "Tekrarla"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Stil sayfası düzenlemesini yeniden yap"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Şifreyi Sıfırla"
|
||||
msgid "Reset Style"
|
||||
msgstr "Stili Sıfırla"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Uygulanan stil sayfasına sıfırla"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Şifrenizi sıfırlayın"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "seçildi"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker ile kendi kendine barındırma"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Anlamsal CSS stil sayfası"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantik stiller aktif kalmaya devam ediyor."
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Mesaj gönder"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Üstü Çizili"
|
||||
msgid "Strong fit"
|
||||
msgstr "Güçlü uyum"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Stil sayfası düzenleyici"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Stil dosyasında hatalar var."
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Alt Reddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Aradığınız sayfa taşınmış olabilir veya artık mevcut olmayabili
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Girdiğiniz şifre yanlış"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Özgeçmiş önizlemesi güncellenemedi. Son geçerli önizleme hala gösteriliyor."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Erişmeye çalıştığınız özgeçmiş şifre korumalıdır"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Bu girdi kalıcı olarak silinecek. Bu işlem geri alınamaz."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Bu özellik için bağlantılı bir yapay zeka sağlayıcısı gereklidir. Lütfen ayarlardan bir tane kurun."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Bu örnek şu anda Semantik CSS düzenlemesine izin vermiyor."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Bu, özgeçmişiniz için URL dostu bir isimdir."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Altı Çizili"
|
||||
msgid "Undo"
|
||||
msgstr "Geri al"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Stil sayfası düzenlemesini geri al"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Sınırsız Özgeçmiş"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Verileriniz güvenli bir şekilde saklanır ve asla üçüncü partilerl
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Son değişiklikleriniz kaydedilemedi."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Eski stilleriniz, bu Semantik CSS taslağını açıkça etkinleştirene kadar aktif kalacaktır."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Şifreniz başarıyla sıfırlandı. Artık yeni şifrenizle giriş yapabilirsiniz."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: uk\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\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"
|
||||
@@ -163,6 +163,10 @@ msgstr "Меню облікового запису"
|
||||
msgid "Actions"
|
||||
msgstr "Дії"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Активуйте семантичний CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Фактичний розмір (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Заявки, надіслані за тиждень (останні 8 тижнів)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Подано"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Подано"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Застосовані правила"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Застосовується з попередженнями"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Арабська"
|
||||
@@ -800,6 +809,14 @@ msgstr "Перевірте свою електронну пошту для по
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Перевірте свою електронну пошту для підтвердження облікового запису."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Перевірка"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Перевірка чернетки"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Китайська (спрощена)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Розмову скопійовано."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON розмови скопійовано."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Конвертований чернетка таблиці стилів"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Скопійовано до буфера обміну."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Скопіювати резервні коди"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Копіювати JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Копіювати таблицю стилів"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Скопіюйте цей секретний ключ та використовуйте його у своїх додатках для доступу до своїх даних."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Редагувати {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Редагувати заявку"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Редагувати колір {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Введіть пароль для підтвердження налаш
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Введіть свій пароль для вимикання двофакторної автентифікації. Ваш профіль буде менш захищений без увімкненого 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Помилка"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Кожен внесок, великий чи малий, має величезне значення для проєкту.<0/>Дякуємо за вашу підтримку!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Кожен внесок, великий чи малий, має вели
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Все необхідне для створення, налаштування та поширення професійних резюме. Створено з урахуванням приватності, на основі відкритих вихідних кодів і назавжди безкоштовно."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Вийти з режиму фокусування"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Вийти з повноекранного режиму"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Формат"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Формат таблиці стилів"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Безкоштовно"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Світлий"
|
||||
msgid "Light theme"
|
||||
msgstr "Світла тема"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Рядок {0}, стовпець {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Інтервал між рядками"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Норвезька"
|
||||
msgid "Not connected"
|
||||
msgstr "Не підключено"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Відкритий помічник зі штучним інтелект
|
||||
msgid "Open Email Client"
|
||||
msgstr "Відкрити поштовий клієнт"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Відкрити режим фокусування"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Відкрити в конструкторі"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Сумісний з OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Натисніть <0>Enter</0>, щоб відкрити"
|
||||
msgid "Preview"
|
||||
msgstr "Попередній перегляд"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Для попереднього перегляду та експорту використовується остання дійсна версія."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Основний колір"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Реактивне резюме v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Реактивне резюме v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Читання…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Готовий до активації"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Готовий до активації з попередженнями"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Одержувач"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Прямокутник (на всю ширину)"
|
||||
msgid "Redo"
|
||||
msgstr "Повторити"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Повторити редагування таблиці стилів"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Скинути пароль"
|
||||
msgid "Reset Style"
|
||||
msgstr "Скинути стиль"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Скинути до застосованого таблиці стилів"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Скинути пароль"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "вибрано"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Самостійний хостинг з Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Семантична таблиця стилів CSS"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Семантичні стилі залишаються активними"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Надіслати повідомлення"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Закреслення"
|
||||
msgid "Strong fit"
|
||||
msgstr "Висока відповідність"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Редактор таблиць стилів"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Таблиця стилів містить помилки"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Сабреддіт"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Можливо, сторінку, яку ви шукаєте, було
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Введений вами пароль невірний"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Не вдалося оновити попередній перегляд резюме. Останній дійсний попередній перегляд все ще відображається."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Резюме, до якого ви намагаєтеся отримати доступ, захищене паролем"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Цей запис буде видалено назавжди. Цю ді
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Ця функція вимагає підключеного постачальника штучного інтелекту. Будь ласка, налаштуйте його в налаштуваннях."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Цей екземпляр наразі не дозволяє редагування семантичного CSS."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Це ім'я вашого резюме, пристосоване для використання у URL."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Підкреслення"
|
||||
msgid "Undo"
|
||||
msgstr "Скасувати"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Скасувати редагування таблиці стилів"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Необмежена кількість резюме"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Ваші дані зберігаються безпечно і ніко
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Не вдалося зберегти ваші останні зміни."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Ваші застарілі стилі залишаються активними, доки ви явно не активуєте цей черновик семантичного CSS."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Ваш пароль було успішно скинуто. Тепер ви можете увійти з новим паролем."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: uz\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Uzbek\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Hisob menyusi"
|
||||
msgid "Actions"
|
||||
msgstr "Amallar"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Semantik CSS-ni faollashtirish"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Haqiqiy o'lcham (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Haftasiga yuborilgan arizalar (so‘nggi 8 hafta)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Topshirildi"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Ariza sanasi"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Amaliy qoidalar"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Ogohlantirishlar bilan qo'llanildi"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Arab tili"
|
||||
@@ -800,6 +809,14 @@ msgstr "Parolingizni tiklash uchun havola yuborilganligini emailingizni tekshiri
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Hisobingizni tasdiqlash uchun havola yuborilganligini emailingizni tekshiring."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Tekshirish"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Qoralama tekshirilmoqda"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Xitoy (Soddalashtirilgan)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Suhbat nusxalandi."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "JSON suhbatidan nusxa ko'chirildi."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "O'zgartirilgan uslublar jadvali qoralamasi"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Buferga nusxalandi."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Zaxira kodlarini nusxalash"
|
||||
msgid "Copy JSON"
|
||||
msgstr "JSON nusxasini olish"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Uslublar jadvalini nusxalash"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Ushbu maxfiy kalitni nusxalab, maʼlumotlaringizga kirish uchun ilovalaringizda foydalaning."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Tahrir qilish {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Arizani tahrirlash"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "{0} rangini tahrirlash"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Ikki bosqichli autentifikatsiyani yoqishni tasdiqlash uchun parolingizni
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Ikki bosqichli autentifikatsiyani o‘chirishni tasdiqlash uchun parolingizni kiriting. 2BShT yoqilmagan holda hisobingiz kamroq xavfsiz boʻladi."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Xato"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Har bir hissa, kichik yoki katta bo‘lishidan qat’i nazar, loyiha uchun katta ahamiyatga ega.<0/>Qo‘llab-quvvatlaganingiz uchun rahmat!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Har bir hissa, kichik yoki katta bo‘lishidan qat’i nazar, loyiha uch
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Professional rezyumelar yaratish, sozlash va ulashish uchun kerakli barcha narsa. Maxfiylik tamoyiliga asoslangan, ochiq manba asosida qurilgan va doimiy ravishda butunlay bepul."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Fokus rejimidan chiqish"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Toʻliq ekrandan chiqish"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Uslublar jadvalini formatlash"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Bepul"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Yorugʻ"
|
||||
msgid "Light theme"
|
||||
msgstr "Yorugʻ mavzu"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "{0}qatori, {1} ustuni"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Satr balandligi"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Norveg tili"
|
||||
msgid "Not connected"
|
||||
msgstr "Ulanmagan"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Ochiq AI yordamchisi"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Pochta dasturini ochish"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Fokus rejimini ochish"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Quruvchida ochish"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "OpenAI bilan mos keladi"
|
||||
msgid "OpenRouter"
|
||||
msgstr "Ochiq marshrutizator"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Ochish uchun <0>Enter tugmasini</0> bosing"
|
||||
msgid "Preview"
|
||||
msgstr "Oldindan ko'rish"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Oldindan ko'rish va eksport qilish uchun oxirgi amaldagi versiyadan foydalaning."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Asosiy rang"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reaktiv rezyume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Reaktiv Rezume v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "O'qilmoqda…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Faollashtirishga tayyor"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Ogohlantirishlar bilan faollashtirishga tayyor"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Qabul qiluvchi"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Toʻgʻri burchakli (toʻliq kenglik)"
|
||||
msgid "Redo"
|
||||
msgstr "Qayta bajarish"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Uslublar jadvalini tahrirlashni qayta bajarish"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Parolni tiklash"
|
||||
msgid "Reset Style"
|
||||
msgstr "Uslubni tiklash"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Qo'llanilgan uslublar jadvaliga qayta o'rnatish"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Parolingizni tiklang"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "tanlandi"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Docker bilan mustaqil joylashtirish"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Semantik CSS uslublar jadvali"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Semantik uslublar faol bo'lib qolmoqda"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Xabar yuborish"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Ustiga chizish"
|
||||
msgid "Strong fit"
|
||||
msgstr "Kuchli moslik"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Uslublar jadvali muharriri"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Uslublar jadvalida xatolar mavjud"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Siz izlayotgan sahifa boshqa joyga ko'chirilgan yoki endi mavjud emas bo
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Kiritilgan parol noto'g'ri"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Rezyume oldindan ko'rish versiyasini yangilab bo'lmadi. Oxirgi haqiqiy oldindan ko'rish versiyasi hali ham ko'rsatilmoqda."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Siz kirishga harakat qilayotgan rezyume parol bilan himoyalangan"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Bu yozuv butunlay o‘chiriladi. Buni ortga qaytarib bo‘lmaydi."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Bu funksiya ulangan AI provayderini talab qiladi. Iltimos, sozlamalarda bittasini sozlang."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Bu misol hozirda semantik CSS tahrirlashga ruxsat bermaydi."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Bu rezyume uchun URL uchun qulay ism."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Tagiga chizilgan"
|
||||
msgid "Undo"
|
||||
msgstr "Bekor qilish"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Uslublar jadvali tahririni bekor qilish"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Cheksiz rezyumelar"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Maʼlumotlaringiz xavfsiz saqlanadi va uchinchi tomonlarga hech qachon u
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "So'nggi o'zgarishlaringizni saqlab bo'lmadi."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Sizning eski uslublaringiz ushbu Semantik CSS qoralamasini aniq faollashtirmaguningizcha faol bo'lib qoladi."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Parolingiz muvaffaqiyatli tiklandi. Endi yangi parolingiz bilan tizimga kirishingiz mumkin."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: vi\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Vietnamese\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "Menu tài khoản"
|
||||
msgid "Actions"
|
||||
msgstr "Hành động"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "Kích hoạt CSS ngữ nghĩa"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "Kích thước thật (100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "Đơn ứng tuyển đã gửi mỗi tuần (8 tuần gần nhất)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "Đã ứng tuyển"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "Đã ứng tuyển vào"
|
||||
msgid "Applied Rules"
|
||||
msgstr "Quy tắc áp dụng"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "Được áp dụng kèm theo cảnh báo"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "Tiếng Ả Rập"
|
||||
@@ -800,6 +809,14 @@ msgstr "Hãy kiểm tra email của bạn để lấy đường link đặt lạ
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "Hãy kiểm tra email của bạn để lấy liên kết xác minh tài khoản."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "Kiểm tra"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "Kiểm tra bản nháp"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "Tiếng Trung (Giản thể)"
|
||||
@@ -966,6 +983,10 @@ msgstr "Cuộc hội thoại đã được sao chép."
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "Đã sao chép JSON hội thoại."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "Bản nháp bảng định kiểu đã chuyển đổi"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "Đã sao chép vào bảng nhớ tạm."
|
||||
@@ -989,6 +1010,10 @@ msgstr "Sao chép mã Backup"
|
||||
msgid "Copy JSON"
|
||||
msgstr "Sao chép JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "Sao chép bảng định kiểu"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "Sao chép khóa bí mật này và sử dụng trong ứng dụng của bạn để truy cập dữ liệu."
|
||||
@@ -1545,6 +1570,11 @@ msgstr "Chỉnh sửa {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "Chỉnh sửa hồ sơ ứng tuyển"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "Chỉnh sửa màu {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "Nhập mật khẩu của bạn để xác nhận thiết lập xác th
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "Nhập mật khẩu của bạn để tắt xác thực hai yếu tố. Tài khoản của bạn sẽ kém an toàn hơn nếu không bật 2FA."
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "Lỗi"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "Mỗi đóng góp, dù lớn hay nhỏ, đều tạo nên sự khác biệt lớn cho dự án.<0/>Cảm ơn sự ủng hộ của bạn!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "Mỗi đóng góp, dù lớn hay nhỏ, đều tạo nên sự khác bi
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "Mọi thứ bạn cần để tạo, tùy chỉnh và chia sẻ bản lý lịch chuyên nghiệp. Được xây dựng với tính riêng tư, mã nguồn mở và hoàn toàn miễn phí mãi mãi."
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "Thoát chế độ lấy nét"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "Thoát toàn màn hình"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "Định dạng"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "Định dạng bảng định kiểu"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "Miễn phí"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "Sáng"
|
||||
msgid "Light theme"
|
||||
msgstr "Chủ đề sáng"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "Dòng {0}, cột {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Chiều cao giữa các dòng"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "Na Uy"
|
||||
msgid "Not connected"
|
||||
msgstr "Không kết nối"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "Trợ lý AI mở"
|
||||
msgid "Open Email Client"
|
||||
msgstr "Mở ứng dụng Email"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "Chế độ lấy nét mở"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "Mở trong trình soạn thảo"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "Tương thích với OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "Nhấn <0>phím Enter</0> để mở"
|
||||
msgid "Preview"
|
||||
msgstr "Xem trước"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "Chức năng xem trước và xuất khẩu sử dụng phiên bản hợp lệ mới nhất."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "Màu chủ đạo"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "Reactive Resume v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "Sơ yếu lý lịch phản hồi phiên bản 4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "Đang đọc…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "Sẵn sàng kích hoạt"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "Sẵn sàng kích hoạt kèm cảnh báo"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "Người nhận"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "Hình chữ nhật (Toàn bộ chiều rộng)"
|
||||
msgid "Redo"
|
||||
msgstr "Làm lại"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "Chỉnh sửa lại bảng định kiểu"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "Đặt mật khẩu mới"
|
||||
msgid "Reset Style"
|
||||
msgstr "Đặt lại kiểu"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "Đặt lại về kiểu định dạng đã áp dụng"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "Đặt lại mật khẩu"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "đã chọn"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "Tự dựng với Docker"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "Bảng định kiểu CSS ngữ nghĩa"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "Các kiểu ngữ nghĩa vẫn còn hiệu lực"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "Gửi tin nhắn"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "Gạch ngang"
|
||||
msgid "Strong fit"
|
||||
msgstr "Rất phù hợp"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "Trình chỉnh sửa bảng định kiểu"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "Tệp định kiểu có lỗi"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "Trang bạn đang tìm có thể đã được di chuyển hoặc không
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "Mật khẩu bạn đã nhập không đúng"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "Không thể cập nhật bản xem trước sơ yếu lý lịch. Bản xem trước hợp lệ cuối cùng vẫn được hiển thị."
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "Hồ sơ bạn đang cố truy cập đã được bảo vệ bằng mật khẩu"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "Mục này sẽ bị xóa vĩnh viễn. Không thể hoàn tác."
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "Tính năng này yêu cầu kết nối với nhà cung cấp AI. Vui lòng thiết lập nhà cung cấp này trong phần cài đặt."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "Hiện tại, phiên bản này không cho phép chỉnh sửa CSS ngữ nghĩa."
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "Đây là tên thân thiện với URL cho hồ sơ của bạn."
|
||||
@@ -4639,6 +4744,10 @@ msgstr "Gạch chân"
|
||||
msgid "Undo"
|
||||
msgstr "Hoàn tác"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "Hoàn tác chỉnh sửa bảng định kiểu"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "Không giới hạn hồ sơ"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "Dữ liệu của bạn được lưu trữ an toàn và không bao gi
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "Những thay đổi gần đây của bạn không thể được lưu lại."
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "Các kiểu định dạng cũ của bạn vẫn hoạt động cho đến khi bạn kích hoạt bản nháp CSS ngữ nghĩa này một cách rõ ràng."
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "Mật khẩu của bạn đã được đặt lại thành công. Bây giờ bạn có thể đăng nhập bằng mật khẩu mới."
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: zh\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "帐户菜单"
|
||||
msgid "Actions"
|
||||
msgstr "操作"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "启用语义化 CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "实际尺寸(100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "每周发送的申请(最近 8 周)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "已申请"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "申请日期"
|
||||
msgid "Applied Rules"
|
||||
msgstr "应用规则"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "附带警告"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "阿拉伯语"
|
||||
@@ -800,6 +809,14 @@ msgstr "请检查你的电子邮件,点击邮件中的链接重置密码。"
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "请检查你的电子邮件,点击邮件中的链接验证账号。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "检查"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "检查草稿"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "中文(简体)"
|
||||
@@ -966,6 +983,10 @@ msgstr "对话已复制。"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "对话JSON已复制。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "已转换的样式表草稿"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "已复制到剪贴板。"
|
||||
@@ -989,6 +1010,10 @@ msgstr "复制备份码"
|
||||
msgid "Copy JSON"
|
||||
msgstr "复制 JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "复制样式表"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "复制此密钥,并在你的应用程序中使用它来访问你的数据。"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "编辑 {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "编辑申请"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "编辑颜色 {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "请输入你的密码以确认设置双重身份验证。启用后,你
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "请输入你的密码以禁用双重身份验证。关闭 2FA 后,你的账号将不再那么安全。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "每一笔捐助,无论多少,都会对项目产生巨大的积极影响。<0/>感谢你的支持!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "每一笔捐助,无论多少,都会对项目产生巨大的积极影
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "你创建、定制和分享专业简历所需的一切。以隐私为核心设计,由开源驱动,并且永久免费。"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "退出对焦模式"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "退出全屏"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "格式"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "格式样式表"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "免费"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "浅色"
|
||||
msgid "Light theme"
|
||||
msgstr "浅色主题"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "行 {0},列 {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "行高"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "挪威语"
|
||||
msgid "Not connected"
|
||||
msgstr "未连接"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "OpenAI助手"
|
||||
msgid "Open Email Client"
|
||||
msgstr "打开邮件客户端"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "打开对焦模式"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "在构建器中打开"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "兼容 OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "开放路由器"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "按<0>Enter 键</0>打开"
|
||||
msgid "Preview"
|
||||
msgstr "预览"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "预览和导出时请使用最新有效版本。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "主颜色"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "响应式恢复 v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "反应式简历 v4(JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "正在读取…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "准备激活"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "准备激活并发出警告"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "收件人"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "矩形(全宽)"
|
||||
msgid "Redo"
|
||||
msgstr "重做"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "重新编辑样式表"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "重置密码"
|
||||
msgid "Reset Style"
|
||||
msgstr "重置样式"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "重置为已应用的样式表"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "重置密码"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "已选择"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "使用 Docker 自托管"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "语义化 CSS 样式表"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "语义风格仍然活跃"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "发送消息"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "删除线"
|
||||
msgid "Strong fit"
|
||||
msgstr "高度匹配"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "样式表编辑器"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "样式表存在错误"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit 论坛"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "您要查找的页面可能已被移动或已不存在。"
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "你输入的密码不正确"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "简历预览无法更新,仍显示上次有效的预览版本。"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "你尝试访问的这份简历已启用密码保护"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "此条目将被永久删除。此操作无法撤销。"
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "此功能需要连接人工智能服务提供商。请在设置中进行设置。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "此实例目前不支持语义化 CSS 编辑。"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "这是一个适合放在 URL 中的简历名称。"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "下划线"
|
||||
msgid "Undo"
|
||||
msgstr "撤销"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "撤销样式表编辑"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "无限简历"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "你的数据会被安全存储,且绝不会与第三方共享。你也
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "您所做的最新更改未能保存。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "在您明确激活此语义化 CSS 草案之前,您的旧版样式仍将保持有效。"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "你的密码已成功重置。你现在可以使用新密码登录。"
|
||||
|
||||
+114
-1
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: zh\n"
|
||||
"Project-Id-Version: reactive-resume\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-07-27 18:56\n"
|
||||
"PO-Revision-Date: 2026-07-30 10:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -163,6 +163,10 @@ msgstr "帳戶選單"
|
||||
msgid "Actions"
|
||||
msgstr "動作"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr "啟用語意化 CSS"
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr "實際尺寸(100%)"
|
||||
@@ -482,6 +486,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr "每週送出的申請(最近 8 週)"
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr "已申請"
|
||||
|
||||
@@ -493,6 +498,10 @@ msgstr "應徵日期"
|
||||
msgid "Applied Rules"
|
||||
msgstr "應用規則"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr "附帶警告"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr "阿拉伯文"
|
||||
@@ -800,6 +809,14 @@ msgstr "請到電子郵件收件匣查看重設密碼的連結。"
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr "請到電子郵件收件匣查看用於驗證帳戶的連結。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr "檢查"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr "檢查草稿"
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr "中文(簡體)"
|
||||
@@ -966,6 +983,10 @@ msgstr "對話已複製。"
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr "對話JSON已複製。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr "已轉換的樣式表草稿"
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr "已複製到剪貼簿。"
|
||||
@@ -989,6 +1010,10 @@ msgstr "複製備份代碼"
|
||||
msgid "Copy JSON"
|
||||
msgstr "複製 JSON"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr "複製樣式表"
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr "複製這組私密金鑰,並在您的應用程式中使用它來存取您的資料。"
|
||||
@@ -1545,6 +1570,11 @@ msgstr "編輯 {chip}"
|
||||
msgid "Edit application"
|
||||
msgstr "編輯應徵紀錄"
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr "編輯顏色 {0}"
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1674,6 +1704,10 @@ msgstr "請輸入您的密碼以確認設定雙因子驗證。啟用後,每次
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr "請輸入您的密碼以停用雙因子驗證。停用後,您的帳戶將會比較不安全。"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr "錯誤"
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr "每一筆捐款,不論大小,都能為此專案帶來巨大的幫助。<0/>感謝您的支持!"
|
||||
@@ -1682,6 +1716,10 @@ msgstr "每一筆捐款,不論大小,都能為此專案帶來巨大的幫助
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr "建立、客製化與分享專業履歷所需的一切功能一應俱全。以隱私為出發點,由開放原始碼驅動,而且永遠完全免費。"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr "退出對焦模式"
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr "退出全螢幕"
|
||||
@@ -2001,6 +2039,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr "格式"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr "格式樣式表"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr "免費"
|
||||
@@ -2584,6 +2626,12 @@ msgstr "亮色"
|
||||
msgid "Light theme"
|
||||
msgstr "淺色主題"
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr "行 {0},列 {1}"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "行高"
|
||||
@@ -2918,6 +2966,10 @@ msgstr "挪威語"
|
||||
msgid "Not connected"
|
||||
msgstr "未連接"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2968,6 +3020,10 @@ msgstr "OpenAI助手"
|
||||
msgid "Open Email Client"
|
||||
msgstr "開啟電子郵件用戶端"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr "開啟對焦模式"
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr "在建構器中開啟"
|
||||
@@ -2992,6 +3048,7 @@ msgstr "相容 OpenAI"
|
||||
msgid "OpenRouter"
|
||||
msgstr "OpenRouter"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3267,6 +3324,10 @@ msgstr "按<0>Enter</0>開啟"
|
||||
msgid "Preview"
|
||||
msgstr "預覽"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr "預覽和匯出時請使用最新有效版本。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr "主要顏色"
|
||||
@@ -3374,10 +3435,22 @@ msgstr "響應式恢復 v<0>{__APP_VERSION__}</0>"
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr "反應式履歷 v4 (JSON)"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr "正在讀取…"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr "準備啟用"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr "準備啟動並發出警告"
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr "收件人"
|
||||
@@ -3394,6 +3467,10 @@ msgstr "長方形(全幅寬)"
|
||||
msgid "Redo"
|
||||
msgstr "重做"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr "重新編輯樣式表"
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3495,6 +3572,10 @@ msgstr "重設密碼"
|
||||
msgid "Reset Style"
|
||||
msgstr "重設樣式"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr "重設為已套用的樣式表"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr "重設您的密碼"
|
||||
@@ -3791,6 +3872,14 @@ msgstr "已選取"
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr "使用 Docker 自行託管"
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr "語意化 CSS 樣式表"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr "語義風格仍然活躍"
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr "發送訊息"
|
||||
@@ -4152,6 +4241,14 @@ msgstr "刪除線"
|
||||
msgid "Strong fit"
|
||||
msgstr "高度適配"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr "樣式表編輯器"
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr "樣式表存在錯誤"
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr "Subreddit"
|
||||
@@ -4308,6 +4405,10 @@ msgstr "您要尋找的頁面可能已被移動或已不存在。"
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr "您輸入的密碼不正確"
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr "履歷預覽無法更新,仍顯示上次有效的預覽版本。"
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr "您嘗試存取的履歷已啟用密碼保護"
|
||||
@@ -4381,6 +4482,10 @@ msgstr "此項目將永久刪除。此操作無法復原。"
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr "此功能需要連接人工智慧服務提供者。請在設定中進行設定。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr "此實例目前不支援語義化 CSS 編輯。"
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr "這是用於履歷的 URL 友善名稱。"
|
||||
@@ -4639,6 +4744,10 @@ msgstr "底線"
|
||||
msgid "Undo"
|
||||
msgstr "撤銷"
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr "撤銷樣式表編輯"
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr "無限履歷"
|
||||
@@ -5013,6 +5122,10 @@ msgstr "您的資料會被安全保存,且絕不會分享給第三方。您也
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr "您所做的最新變更未能儲存。"
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr "在您明確啟動此語意化 CSS 草稿之前,您的舊版樣式仍將保持有效。"
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr "您的密碼已成功重設。您現在可以使用新密碼登入。"
|
||||
|
||||
@@ -158,6 +158,10 @@ msgstr ""
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Activate Semantic CSS"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/builder/$resumeId/-components/dock.tsx
|
||||
msgid "Actual size (100%)"
|
||||
msgstr ""
|
||||
@@ -477,6 +481,7 @@ msgid "Applications sent per week (last 8 weeks)"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/table-view.tsx
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied"
|
||||
msgstr ""
|
||||
|
||||
@@ -488,6 +493,10 @@ msgstr ""
|
||||
msgid "Applied Rules"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Applied with warnings"
|
||||
msgstr ""
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
@@ -795,6 +804,14 @@ msgstr ""
|
||||
msgid "Check your email for a link to verify your account."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Checking draft"
|
||||
msgstr ""
|
||||
|
||||
#: src/libs/locale.ts
|
||||
msgid "Chinese (Simplified)"
|
||||
msgstr ""
|
||||
@@ -961,6 +978,10 @@ msgstr ""
|
||||
msgid "Conversation JSON copied."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Converted stylesheet draft"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-ai-copilot.tsx
|
||||
msgid "Copied to clipboard."
|
||||
msgstr ""
|
||||
@@ -984,6 +1005,10 @@ msgstr ""
|
||||
msgid "Copy JSON"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Copy stylesheet"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialogs/api-key/create.tsx
|
||||
msgid "Copy this secret key and use it in your applications to access your data."
|
||||
msgstr ""
|
||||
@@ -1540,6 +1565,11 @@ msgstr ""
|
||||
msgid "Edit application"
|
||||
msgstr ""
|
||||
|
||||
#. placeholder {0}: selectedColor.token.value
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Edit color {0}"
|
||||
msgstr ""
|
||||
|
||||
#. Screen reader description for the fullscreen rich-text editor dialog
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Edit content in fullscreen mode"
|
||||
@@ -1669,6 +1699,10 @@ msgstr ""
|
||||
msgid "Enter your password to disable two-factor authentication. Your account will be less secure without 2FA enabled."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
msgid "Every contribution, big or small, makes a huge difference to the project.<0/>Thank you for your support!"
|
||||
msgstr ""
|
||||
@@ -1677,6 +1711,10 @@ msgstr ""
|
||||
msgid "Everything you need to create, customize, and share professional resumes. Built with privacy in mind, powered by open source, and completely free forever."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Exit focus mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/input/rich-input.tsx
|
||||
msgid "Exit Fullscreen"
|
||||
msgstr ""
|
||||
@@ -1996,6 +2034,10 @@ msgctxt "Page Format (A4, Letter, Free-form)"
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Format stylesheet"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Free"
|
||||
msgstr ""
|
||||
@@ -2579,6 +2621,12 @@ msgstr ""
|
||||
msgid "Light theme"
|
||||
msgstr ""
|
||||
|
||||
#. placeholder {0}: diagnostic.range.start.line
|
||||
#. placeholder {1}: diagnostic.range.start.column
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Line {0}, column {1}"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/typography.tsx
|
||||
msgid "Line Height"
|
||||
msgstr ""
|
||||
@@ -2913,6 +2961,10 @@ msgstr ""
|
||||
msgid "Not connected"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Not sure what to write?"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
#: src/libs/resume/section.tsx
|
||||
msgid "Notes"
|
||||
@@ -2963,6 +3015,10 @@ msgstr ""
|
||||
msgid "Open Email Client"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Open focus mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/agent/-components/resume-pane.tsx
|
||||
msgid "Open in builder"
|
||||
msgstr ""
|
||||
@@ -2987,6 +3043,7 @@ msgstr ""
|
||||
msgid "OpenRouter"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
#: src/routes/_home/-sections/donate.tsx
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "opens in new tab"
|
||||
@@ -3262,6 +3319,10 @@ msgstr ""
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Preview and export use the last valid version."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/right/sections/design.tsx
|
||||
msgid "Primary Color"
|
||||
msgstr ""
|
||||
@@ -3369,10 +3430,22 @@ msgstr ""
|
||||
msgid "Reactive Resume v4 (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Read the Applying Custom Styles guide."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/applications/components/application-form-sheet.tsx
|
||||
msgid "Reading…"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Ready to activate with warnings"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialogs/resume/sections/cover-letter.tsx
|
||||
msgid "Recipient"
|
||||
msgstr ""
|
||||
@@ -3389,6 +3462,10 @@ msgstr ""
|
||||
msgid "Redo"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Redo stylesheet edit"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialogs/resume/sections/custom.tsx
|
||||
#: src/libs/resume/section-title.ts
|
||||
#: src/libs/resume/section.tsx
|
||||
@@ -3490,6 +3567,10 @@ msgstr ""
|
||||
msgid "Reset Style"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Reset to applied stylesheet"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Reset your password"
|
||||
msgstr ""
|
||||
@@ -3786,6 +3867,14 @@ msgstr ""
|
||||
msgid "Self-Host with Docker"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/editor.tsx
|
||||
msgid "Semantic CSS stylesheet"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Semantic styles remain active"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/agent/-components/agent-chat.tsx
|
||||
msgid "Send message"
|
||||
msgstr ""
|
||||
@@ -4147,6 +4236,14 @@ msgstr ""
|
||||
msgid "Strong fit"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Stylesheet editor"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/status.tsx
|
||||
msgid "Stylesheet has errors"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/_home/-sections/footer.tsx
|
||||
msgid "Subreddit"
|
||||
msgstr ""
|
||||
@@ -4303,6 +4400,10 @@ msgstr ""
|
||||
msgid "The password you entered is incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/preview/preview.browser.tsx
|
||||
msgid "The resume preview could not be updated. The last valid preview is still shown."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/auth/pages/resume-password.tsx
|
||||
msgid "The resume you are trying to access is password protected"
|
||||
msgstr ""
|
||||
@@ -4376,6 +4477,10 @@ msgstr ""
|
||||
msgid "This feature requires a connected AI provider. Please set one up in the settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "This instance does not currently allow Semantic CSS editing."
|
||||
msgstr ""
|
||||
|
||||
#: src/dialogs/resume/index.tsx
|
||||
msgid "This is a URL-friendly name for your resume."
|
||||
msgstr ""
|
||||
@@ -4634,6 +4739,10 @@ msgstr ""
|
||||
msgid "Undo"
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/toolbar.tsx
|
||||
msgid "Undo stylesheet edit"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/_home/-sections/features.tsx
|
||||
msgid "Unlimited Resumes"
|
||||
msgstr ""
|
||||
@@ -5008,6 +5117,10 @@ msgstr ""
|
||||
msgid "Your latest changes could not be saved."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/resume/stylesheet/legacy-banner.tsx
|
||||
msgid "Your legacy styles remain active until you explicitly activate this Semantic CSS draft."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/auth/pages/reset-password.tsx
|
||||
msgid "Your password has been reset successfully. You can now sign in with your new password."
|
||||
msgstr ""
|
||||
|
||||
+25
-15
@@ -16,20 +16,28 @@
|
||||
"lingui:extract": "lingui extract --clean --overwrite"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/react": "^4.0.40",
|
||||
"@ai-sdk/react": "^4.0.45",
|
||||
"@base-ui/react": "^1.6.0",
|
||||
"@better-auth/api-key": "^1.6.25",
|
||||
"@better-auth/infra": "^0.3.7",
|
||||
"@better-auth/oauth-provider": "^1.6.25",
|
||||
"@better-auth/passkey": "^1.6.25",
|
||||
"@codemirror/autocomplete": "^6.20.3",
|
||||
"@codemirror/commands": "^6.10.4",
|
||||
"@codemirror/lang-css": "^6.3.1",
|
||||
"@codemirror/language": "^6.12.4",
|
||||
"@codemirror/lint": "^6.9.7",
|
||||
"@codemirror/search": "^6.7.1",
|
||||
"@codemirror/state": "^6.7.1",
|
||||
"@codemirror/view": "^6.43.7",
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
"@dnd-kit/sortable": "^10.0.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
"@lingui/core": "^6.6.0",
|
||||
"@lingui/react": "^6.6.0",
|
||||
"@orpc/client": "^1.14.12",
|
||||
"@orpc/server": "^1.14.12",
|
||||
"@orpc/tanstack-query": "^1.14.12",
|
||||
"@orpc/client": "^1.14.13",
|
||||
"@orpc/server": "^1.14.13",
|
||||
"@orpc/tanstack-query": "^1.14.13",
|
||||
"@phosphor-icons/react": "^2.1.10",
|
||||
"@react-pdf/renderer": "^4.5.1",
|
||||
"@reactive-resume/ai": "workspace:*",
|
||||
@@ -48,27 +56,29 @@
|
||||
"@tanstack/react-hotkeys": "^0.10.0",
|
||||
"@tanstack/react-query": "^5.101.4",
|
||||
"@tanstack/react-router": "^1.170.18",
|
||||
"@tiptap/extension-color": "^3.29.1",
|
||||
"@tiptap/extension-highlight": "^3.29.1",
|
||||
"@tiptap/extension-text-align": "^3.29.1",
|
||||
"@tiptap/extension-text-style": "^3.29.1",
|
||||
"@tiptap/pm": "^3.29.1",
|
||||
"@tiptap/react": "^3.29.1",
|
||||
"@tiptap/starter-kit": "^3.29.1",
|
||||
"@tiptap/extension-color": "^3.29.2",
|
||||
"@tiptap/extension-highlight": "^3.29.2",
|
||||
"@tiptap/extension-text-align": "^3.29.2",
|
||||
"@tiptap/extension-text-style": "^3.29.2",
|
||||
"@tiptap/pm": "^3.29.2",
|
||||
"@tiptap/react": "^3.29.2",
|
||||
"@tiptap/starter-kit": "^3.29.2",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@uiw/color-convert": "^2.10.3",
|
||||
"@uiw/react-color-colorful": "^2.10.3",
|
||||
"ai": "^7.0.37",
|
||||
"ai": "^7.0.42",
|
||||
"better-auth": "1.6.25",
|
||||
"buffer": "^6.0.3",
|
||||
"cmdk": "^1.1.1",
|
||||
"drizzle-orm": "1.0.0-rc.4",
|
||||
"es-toolkit": "^1.50.0",
|
||||
"fuse.js": "^7.5.0",
|
||||
"immer": "^11.1.15",
|
||||
"js-cookie": "^3.0.8",
|
||||
"motion": "^12.42.2",
|
||||
"pdfjs-dist": "6.1.200",
|
||||
"motion": "^12.43.0",
|
||||
"pdfjs-dist": "6.2.108",
|
||||
"pg": "^8.22.0",
|
||||
"prettier": "^3.9.6",
|
||||
"qrcode.react": "^4.2.0",
|
||||
"react": "^19.2.8",
|
||||
"react-dom": "^19.2.8",
|
||||
@@ -102,7 +112,7 @@
|
||||
"@types/react": "^19.2.17",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
||||
"@vitejs/plugin-react": "^6.0.4",
|
||||
"@vitejs/plugin-react": "^6.0.5",
|
||||
"babel-plugin-macros": "^3.1.0",
|
||||
"babel-plugin-react-compiler": "^1.0.0",
|
||||
"rimraf": "^6.1.3",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
@@ -1,6 +1,33 @@
|
||||
// @vitest-environment happy-dom
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { Editor } from "@tiptap/react";
|
||||
import StarterKit from "@tiptap/starter-kit";
|
||||
import { resolveHighlightToolbarState } from "./rich-input.utils";
|
||||
|
||||
describe("Tiptap editing", () => {
|
||||
it("creates a new paragraph when Enter is pressed", () => {
|
||||
const editor = new Editor({ extensions: [StarterKit], content: "<p>First</p>" });
|
||||
|
||||
editor.commands.setTextSelection(editor.state.doc.content.size - 1);
|
||||
editor.commands.enter();
|
||||
|
||||
expect(editor.getHTML()).toBe("<p>First</p><p></p>");
|
||||
editor.destroy();
|
||||
});
|
||||
|
||||
it("creates and splits list items", () => {
|
||||
const editor = new Editor({ extensions: [StarterKit], content: "<p>First</p>" });
|
||||
|
||||
editor.commands.setTextSelection(editor.state.doc.content.size - 1);
|
||||
editor.commands.toggleBulletList();
|
||||
editor.commands.enter();
|
||||
|
||||
expect(editor.getHTML()).toBe("<ul><li><p>First</p></li><li><p></p></li></ul><p></p>");
|
||||
editor.destroy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveHighlightToolbarState", () => {
|
||||
it("shows legacy colorless highlights as default yellow and clearable", () => {
|
||||
expect(resolveHighlightToolbarState(true, null)).toEqual({
|
||||
|
||||
@@ -6,7 +6,12 @@ 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";
|
||||
import {
|
||||
isEditableElementFocused,
|
||||
useBuilderResumeUpdateSubscription,
|
||||
useResumeStore,
|
||||
useResumeUpdateSubscription,
|
||||
} from "./draft";
|
||||
|
||||
const orpcMocks = vi.hoisted(() => ({
|
||||
getResumeById: vi.fn(),
|
||||
@@ -30,6 +35,10 @@ const toastMocks = vi.hoisted(() => ({
|
||||
error: vi.fn(() => "sync-error-toast"),
|
||||
}));
|
||||
|
||||
const stylesheetMocks = vi.hoisted(() => ({
|
||||
refresh: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("@orpc/client", () => ({
|
||||
consumeEventIterator: consumeEventIteratorMock,
|
||||
}));
|
||||
@@ -72,6 +81,10 @@ vi.mock("sonner", () => ({
|
||||
toast: toastMocks,
|
||||
}));
|
||||
|
||||
vi.mock("@/features/resume/stylesheet/store", () => ({
|
||||
refreshStylesheetStore: stylesheetMocks.refresh,
|
||||
}));
|
||||
|
||||
function cloneResumeData(data: ResumeData): ResumeData {
|
||||
return structuredClone(data);
|
||||
}
|
||||
@@ -122,6 +135,7 @@ describe("builder resume autosave", () => {
|
||||
i18n.loadAndActivate({ locale: "en-US", messages: {} });
|
||||
toastMocks.dismiss.mockClear();
|
||||
toastMocks.error.mockClear();
|
||||
stylesheetMocks.refresh.mockReset();
|
||||
useResumeStore.getState().reset();
|
||||
});
|
||||
|
||||
@@ -251,6 +265,21 @@ describe("builder resume autosave", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("editable focus detection", () => {
|
||||
it("treats CodeMirror descendants as editable", () => {
|
||||
const editor = document.createElement("div");
|
||||
editor.className = "cm-editor";
|
||||
const content = document.createElement("div");
|
||||
content.tabIndex = 0;
|
||||
editor.append(content);
|
||||
document.body.append(editor);
|
||||
content.focus();
|
||||
|
||||
expect(isEditableElementFocused()).toBe(true);
|
||||
editor.remove();
|
||||
});
|
||||
});
|
||||
|
||||
describe("builder resume undo/redo", () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers();
|
||||
@@ -477,4 +506,37 @@ describe("resume update stream subscription", () => {
|
||||
expect(queryClientMock.setQueryData).toHaveBeenCalledWith(["resume", "getById", initial.id], remote);
|
||||
expect(useResumeStore.getState().resume?.data.basics.name).toBe("Local Name");
|
||||
});
|
||||
|
||||
it("refetches canonical stylesheet state for stylesheet SSE events", async () => {
|
||||
const initial = makeResume("resume-stylesheet");
|
||||
consumeEventIteratorMock.mockReturnValue(vi.fn().mockResolvedValue(undefined));
|
||||
routerParamsMock.value = { resumeId: initial.id };
|
||||
useResumeStore.getState().initialize(initial);
|
||||
|
||||
renderHook(() => useBuilderResumeUpdateSubscription());
|
||||
const handlers = consumeEventIteratorMock.mock.calls[0]?.[1] as {
|
||||
onEvent: (event: { mutation: string }) => Promise<void>;
|
||||
};
|
||||
await act(async () => handlers.onEvent({ mutation: "stylesheet" }));
|
||||
|
||||
expect(stylesheetMocks.refresh).toHaveBeenCalledWith(initial.id);
|
||||
expect(orpcMocks.getResumeById).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("refreshes the render-data version after content SSE events", async () => {
|
||||
const initial = makeResume("resume-content");
|
||||
const remote = withBasicsName(initial, "Remote");
|
||||
consumeEventIteratorMock.mockReturnValue(vi.fn().mockResolvedValue(undefined));
|
||||
orpcMocks.getResumeById.mockResolvedValue(remote);
|
||||
routerParamsMock.value = { resumeId: initial.id };
|
||||
useResumeStore.getState().initialize(initial);
|
||||
|
||||
renderHook(() => useBuilderResumeUpdateSubscription());
|
||||
const handlers = consumeEventIteratorMock.mock.calls[0]?.[1] as {
|
||||
onEvent: (event: { mutation: string }) => Promise<void>;
|
||||
};
|
||||
await act(async () => handlers.onEvent({ mutation: "update" }));
|
||||
|
||||
expect(stylesheetMocks.refresh).toHaveBeenCalledWith(initial.id, remote.data);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,6 +10,7 @@ import { useCallback, useEffect, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
import { immer } from "zustand/middleware/immer";
|
||||
import { create } from "zustand/react";
|
||||
import { refreshStylesheetStore } from "@/features/resume/stylesheet/store";
|
||||
import { orpc, streamClient } from "@/libs/orpc/client";
|
||||
|
||||
export type Resume = {
|
||||
@@ -25,7 +26,7 @@ export type Resume = {
|
||||
};
|
||||
|
||||
// Mirrors the server-side ResumeUpdatedEvent discriminator (packages/api resume/events.ts).
|
||||
type ResumeUpdateMutation = "sync" | "create" | "update" | "patch" | "lock" | "password" | "delete";
|
||||
type ResumeUpdateMutation = "sync" | "create" | "update" | "patch" | "lock" | "password" | "delete" | "stylesheet";
|
||||
type ResumeUpdateEvent = { mutation: ResumeUpdateMutation };
|
||||
|
||||
type SaveStatus = "idle" | "saving" | "saved" | "error";
|
||||
@@ -114,7 +115,8 @@ export function isEditableElementFocused(): boolean {
|
||||
element.tagName === "INPUT" ||
|
||||
element.tagName === "TEXTAREA" ||
|
||||
element.tagName === "SELECT" ||
|
||||
element.isContentEditable
|
||||
element.isContentEditable ||
|
||||
element.closest(".cm-editor") !== null
|
||||
);
|
||||
}
|
||||
|
||||
@@ -614,9 +616,14 @@ export function useBuilderResumeUpdateSubscription() {
|
||||
if (!resumeId) return;
|
||||
|
||||
bindRuntimeQueryClient(resumeId, queryClient);
|
||||
if (event.mutation === "stylesheet") {
|
||||
await refreshStylesheetStore(resumeId);
|
||||
return;
|
||||
}
|
||||
const resume = (await orpc.resume.getById.call({ id: resumeId })) as Resume;
|
||||
|
||||
queryClient.setQueryData(getResumeQueryKey(resumeId), resume);
|
||||
await refreshStylesheetStore(resumeId, resume.data);
|
||||
|
||||
if (hasPendingLocalChanges(resumeId)) {
|
||||
useResumeStore.getState().mergeResumeMetadata(resume);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import type { PublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { SemanticStylesheet, StylesheetSource } from "@reactive-resume/schema/resume/stylesheet";
|
||||
import type { Template } from "@reactive-resume/schema/templates";
|
||||
import { useMemo } from "react";
|
||||
import { createResumePdfBlob as createPdfBlob } from "@reactive-resume/pdf/browser";
|
||||
@@ -9,6 +11,22 @@ type ResumePdfRenderOptions = {
|
||||
includeCoverLetterHeader?: boolean;
|
||||
};
|
||||
|
||||
export type ResumePdfPresentation =
|
||||
| { stylesheet: Pick<SemanticStylesheet, "mode"> & { applied: StylesheetSource } }
|
||||
| { publicStyleProjection: PublicStyleProjection };
|
||||
|
||||
const withAppliedStylesheet = (data: ResumeData, presentation?: ResumePdfPresentation): ResumeData => {
|
||||
if (!presentation || !("stylesheet" in presentation)) return data;
|
||||
const { mode, applied } = presentation.stylesheet;
|
||||
return {
|
||||
...data,
|
||||
metadata: {
|
||||
...data.metadata,
|
||||
stylesheet: { mode, source: applied, applied },
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export const useLocalizedResumeDocument = (data?: ResumeData, template?: Template) => {
|
||||
const sectionTitleResolver = useSectionTitleResolver(data?.metadata.page.locale);
|
||||
|
||||
@@ -29,13 +47,17 @@ export const createResumePdfBlob = async (
|
||||
data: ResumeData,
|
||||
template?: Template,
|
||||
renderOptions?: ResumePdfRenderOptions,
|
||||
presentation?: ResumePdfPresentation,
|
||||
) => {
|
||||
const sectionTitleResolver = await createSectionTitleResolverForLocale(data.metadata.page.locale);
|
||||
|
||||
return createPdfBlob({
|
||||
data,
|
||||
data: withAppliedStylesheet(data, presentation),
|
||||
template,
|
||||
...(renderOptions ? { renderOptions } : {}),
|
||||
...(presentation && "publicStyleProjection" in presentation
|
||||
? { publicStyleProjection: presentation.publicStyleProjection }
|
||||
: {}),
|
||||
resolveSectionTitle: sectionTitleResolver,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
// @vitest-environment happy-dom
|
||||
|
||||
import { act, renderHook } from "@testing-library/react";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { i18n } from "@lingui/core";
|
||||
import { createPublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
|
||||
import { useResumeExport } from "./use-resume-export";
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
createResumePdfBlob: vi.fn(async () => new Blob(["local"], { type: "application/pdf" })),
|
||||
downloadWithAnchor: vi.fn(),
|
||||
fetch: vi.fn(async (_input: string | URL) => new Response(new Blob(["server"], { type: "application/pdf" }))),
|
||||
toastError: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("./pdf-document", () => ({
|
||||
createResumePdfBlob: mocks.createResumePdfBlob,
|
||||
}));
|
||||
vi.mock("@reactive-resume/utils/file", () => ({
|
||||
downloadWithAnchor: mocks.downloadWithAnchor,
|
||||
generateFilename: (name: string, extension: string) => `${name}.${extension}`,
|
||||
}));
|
||||
vi.mock("@/features/resume/stylesheet/store", () => ({
|
||||
useStylesheetStore: (selector: (state: object) => unknown) =>
|
||||
selector({
|
||||
resumeId: undefined,
|
||||
mode: "legacy",
|
||||
source: { languageVersion: 1, text: "@version 1;\n" },
|
||||
applied: { languageVersion: 1, text: "@version 1;\n" },
|
||||
}),
|
||||
}));
|
||||
vi.mock("sonner", () => ({
|
||||
toast: {
|
||||
loading: vi.fn(() => "toast"),
|
||||
error: mocks.toastError,
|
||||
dismiss: vi.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
beforeAll(() => i18n.loadAndActivate({ locale: "en", messages: {} }));
|
||||
|
||||
beforeEach(() => {
|
||||
mocks.createResumePdfBlob.mockClear();
|
||||
mocks.downloadWithAnchor.mockClear();
|
||||
mocks.fetch.mockClear();
|
||||
mocks.toastError.mockClear();
|
||||
vi.stubGlobal("fetch", mocks.fetch);
|
||||
});
|
||||
|
||||
describe("useResumeExport public PDF", () => {
|
||||
it("downloads the authorized server blob after one mismatched-projection refetch", async () => {
|
||||
const semanticData = structuredClone(sampleResumeData);
|
||||
const source = { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" };
|
||||
semanticData.metadata.stylesheet = { mode: "semantic", source, applied: source };
|
||||
const projection = await createPublicStyleProjection({ data: semanticData });
|
||||
const mismatchedProjection = { ...projection, renderDataHash: "0".repeat(64) };
|
||||
const refetchStyleProjection = vi.fn(async () => mismatchedProjection);
|
||||
const { result } = renderHook(() =>
|
||||
useResumeExport(
|
||||
{ name: "Sample", slug: "sample", data: sampleResumeData },
|
||||
{
|
||||
publicResumePdf: {
|
||||
stylesheetMode: "semantic",
|
||||
styleProjection: mismatchedProjection,
|
||||
refetchStyleProjection,
|
||||
publicResume: { username: "amruth", slug: "sample" },
|
||||
},
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
await act(() => result.current.onDownloadPDF());
|
||||
|
||||
expect(refetchStyleProjection).toHaveBeenCalledTimes(1);
|
||||
expect(mocks.fetch).toHaveBeenCalledTimes(1);
|
||||
expect(mocks.createResumePdfBlob).not.toHaveBeenCalled();
|
||||
const blob = mocks.downloadWithAnchor.mock.calls[0]?.[0] as Blob;
|
||||
expect(await blob.text()).toBe("server");
|
||||
});
|
||||
|
||||
it("does not download an unstyled PDF when semantic rendering rejects", async () => {
|
||||
mocks.createResumePdfBlob.mockRejectedValueOnce(
|
||||
new Error("The semantic stylesheet could not be rendered.", {
|
||||
cause: [{ code: "RESOURCE_LIMIT", severity: "error" }],
|
||||
}),
|
||||
);
|
||||
const { result } = renderHook(() => useResumeExport({ name: "Sample", slug: "sample", data: sampleResumeData }));
|
||||
|
||||
await act(() => result.current.onDownloadPDF());
|
||||
|
||||
expect(mocks.downloadWithAnchor).not.toHaveBeenCalled();
|
||||
expect(mocks.toastError).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
@@ -1,13 +1,18 @@
|
||||
import type { ResumeExportTarget } from "@reactive-resume/resume/export-sections";
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { SemanticStylesheet } from "@reactive-resume/schema/resume/stylesheet";
|
||||
import type { PublicResumePdfOptions } from "@/features/resume/public/public-pdf";
|
||||
import type { ResumePdfPresentation } from "./pdf-document";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { useCallback, useState } from "react";
|
||||
import { useCallback, useMemo, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
import { buildDocx } from "@reactive-resume/docx";
|
||||
import { getResumeSectionTitle } from "@reactive-resume/pdf/section-title";
|
||||
import { getResumeExportData, resumeHasCoverLetter } from "@reactive-resume/resume/export-sections";
|
||||
import { buildMarkdown } from "@reactive-resume/resume/markdown";
|
||||
import { downloadWithAnchor, generateFilename } from "@reactive-resume/utils/file";
|
||||
import { resolvePublicResumePdfBlob } from "@/features/resume/public/public-pdf";
|
||||
import { useStylesheetStore } from "@/features/resume/stylesheet/store";
|
||||
import { createSectionTitleResolverForLocale } from "@/libs/resume/section-title-locale";
|
||||
import { createResumePdfBlob } from "./pdf-document";
|
||||
|
||||
@@ -24,11 +29,16 @@ const createSectionTitleResolver = async (data: ResumeData) => {
|
||||
|
||||
// ponytail: loosened from Resume to Pick so public-resume (where name may be "" for non-owners) can reuse
|
||||
type ExportableResume = {
|
||||
id?: string;
|
||||
name: string;
|
||||
slug: string;
|
||||
data: ResumeData;
|
||||
};
|
||||
|
||||
type UseResumeExportOptions = {
|
||||
publicResumePdf?: PublicResumePdfOptions;
|
||||
};
|
||||
|
||||
const getExportName = (resume: ExportableResume) => resume.name || resume.data.basics.name || resume.slug;
|
||||
const getTargetExportName = (resume: ExportableResume, target: ResumeExportTarget) =>
|
||||
target === "cover-letter" ? `${getExportName(resume)} Cover Letter` : getExportName(resume);
|
||||
@@ -41,15 +51,46 @@ type DownloadPdfOptions = {
|
||||
* Single source of truth for resume export (PDF / DOCX / JSON / Print). Previously duplicated verbatim
|
||||
* between the builder dock and the right-panel Export section (#17).
|
||||
*/
|
||||
export function useResumeExport(resume: ExportableResume | undefined) {
|
||||
export function useResumeExport(resume: ExportableResume | undefined, exportOptions: UseResumeExportOptions = {}) {
|
||||
const [isExporting, setIsExporting] = useState(false);
|
||||
const hasCoverLetter = resume ? resumeHasCoverLetter(resume.data) : false;
|
||||
const stylesheetResumeId = useStylesheetStore((state) => state.resumeId);
|
||||
const stylesheetMode = useStylesheetStore((state) => state.mode);
|
||||
const stylesheetSource = useStylesheetStore((state) => state.source);
|
||||
const stylesheetApplied = useStylesheetStore((state) => state.applied);
|
||||
const canonicalStylesheet = useMemo<SemanticStylesheet | undefined>(
|
||||
() =>
|
||||
resume?.id && resume.id === stylesheetResumeId
|
||||
? {
|
||||
mode: stylesheetMode,
|
||||
source: stylesheetSource,
|
||||
applied: stylesheetApplied,
|
||||
}
|
||||
: undefined,
|
||||
[resume?.id, stylesheetApplied, stylesheetMode, stylesheetResumeId, stylesheetSource],
|
||||
);
|
||||
const pdfPresentation = useMemo<ResumePdfPresentation | undefined>(
|
||||
() =>
|
||||
canonicalStylesheet
|
||||
? { stylesheet: { mode: canonicalStylesheet.mode, applied: canonicalStylesheet.applied } }
|
||||
: undefined,
|
||||
[canonicalStylesheet],
|
||||
);
|
||||
|
||||
const onDownloadJSON = useCallback(() => {
|
||||
if (!resume) return;
|
||||
const blob = new Blob([JSON.stringify(resume.data, null, 2)], { type: "application/json" });
|
||||
const data = canonicalStylesheet
|
||||
? {
|
||||
...resume.data,
|
||||
metadata: {
|
||||
...resume.data.metadata,
|
||||
stylesheet: canonicalStylesheet,
|
||||
},
|
||||
}
|
||||
: resume.data;
|
||||
const blob = new Blob([JSON.stringify(data, null, 2)], { type: "application/json" });
|
||||
downloadWithAnchor(blob, generateFilename(getExportName(resume), "json"));
|
||||
}, [resume]);
|
||||
}, [canonicalStylesheet, resume]);
|
||||
|
||||
const onDownloadMarkdown = useCallback(
|
||||
async (target: ResumeExportTarget = "resume") => {
|
||||
@@ -80,18 +121,23 @@ export function useResumeExport(resume: ExportableResume | undefined) {
|
||||
);
|
||||
|
||||
const onDownloadPDF = useCallback(
|
||||
async (target: ResumeExportTarget = "resume", options?: DownloadPdfOptions) => {
|
||||
async (target: ResumeExportTarget = "resume", downloadOptions?: DownloadPdfOptions) => {
|
||||
if (!resume) return;
|
||||
if (target === "cover-letter" && !resumeHasCoverLetter(resume.data)) return;
|
||||
const toastId = toast.loading(t`Please wait while your PDF is being generated...`);
|
||||
setIsExporting(true);
|
||||
try {
|
||||
const data = getResumeExportData(resume.data, target);
|
||||
const blob = await createResumePdfBlob(
|
||||
data,
|
||||
undefined,
|
||||
target === "cover-letter" ? { includeCoverLetterHeader: options?.includeCoverLetterHeader } : undefined,
|
||||
);
|
||||
const data = exportOptions.publicResumePdf ? resume.data : getResumeExportData(resume.data, target);
|
||||
const blob = exportOptions.publicResumePdf
|
||||
? await resolvePublicResumePdfBlob({ data, ...exportOptions.publicResumePdf })
|
||||
: await createResumePdfBlob(
|
||||
data,
|
||||
undefined,
|
||||
target === "cover-letter"
|
||||
? { includeCoverLetterHeader: downloadOptions?.includeCoverLetterHeader }
|
||||
: undefined,
|
||||
pdfPresentation,
|
||||
);
|
||||
downloadWithAnchor(blob, generateFilename(getTargetExportName(resume, target), "pdf"));
|
||||
} catch {
|
||||
toast.error(t`There was a problem while generating the PDF, please try again.`);
|
||||
@@ -100,7 +146,7 @@ export function useResumeExport(resume: ExportableResume | undefined) {
|
||||
toast.dismiss(toastId);
|
||||
}
|
||||
},
|
||||
[resume],
|
||||
[exportOptions.publicResumePdf, pdfPresentation, resume],
|
||||
);
|
||||
|
||||
const onPrint = useCallback(async () => {
|
||||
@@ -108,7 +154,9 @@ export function useResumeExport(resume: ExportableResume | undefined) {
|
||||
const toastId = toast.loading(t`Preparing your resume for printing...`);
|
||||
setIsExporting(true);
|
||||
try {
|
||||
const blob = await createResumePdfBlob(resume.data);
|
||||
const blob = exportOptions.publicResumePdf
|
||||
? await resolvePublicResumePdfBlob({ data: resume.data, ...exportOptions.publicResumePdf })
|
||||
: await createResumePdfBlob(resume.data, undefined, undefined, pdfPresentation);
|
||||
const url = URL.createObjectURL(blob);
|
||||
// ponytail: print the generated PDF via a hidden iframe (reliable in Chromium). If the browser
|
||||
// blocks iframe printing, fall back to opening the PDF in a new tab so the user can print manually.
|
||||
@@ -134,7 +182,7 @@ export function useResumeExport(resume: ExportableResume | undefined) {
|
||||
setIsExporting(false);
|
||||
toast.dismiss(toastId);
|
||||
}
|
||||
}, [resume]);
|
||||
}, [exportOptions.publicResumePdf, pdfPresentation, resume]);
|
||||
|
||||
return { onDownloadJSON, onDownloadMarkdown, onDownloadDOCX, onDownloadPDF, onPrint, isExporting, hasCoverLetter };
|
||||
}
|
||||
|
||||
@@ -8,7 +8,15 @@ import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
|
||||
import { ResumePreviewClient } from "./preview.browser";
|
||||
|
||||
const previewMock = vi.hoisted(() => ({
|
||||
builderResumeId: undefined as string | undefined,
|
||||
builderResumeData: undefined as ResumeData | undefined,
|
||||
stylesheet: {
|
||||
resumeId: undefined as string | undefined,
|
||||
mode: "legacy" as "legacy" | "semantic",
|
||||
source: { languageVersion: 1, text: "@version 1;\n" },
|
||||
applied: { languageVersion: 1, text: "@version 1;\n" },
|
||||
},
|
||||
toastError: vi.fn(),
|
||||
toBlob: vi.fn(async () => new Blob(["%PDF"], { type: "application/pdf" })),
|
||||
}));
|
||||
|
||||
@@ -39,11 +47,28 @@ vi.mock("@/features/resume/export/pdf-document", () => ({
|
||||
createResumePdfBlob: previewMock.toBlob,
|
||||
}));
|
||||
|
||||
vi.mock("sonner", () => ({
|
||||
toast: { error: previewMock.toastError },
|
||||
}));
|
||||
|
||||
vi.mock("../builder/draft", () => ({
|
||||
useResumeData: () => previewMock.builderResumeData,
|
||||
useResumeStore: (selector: (state: { resumeId?: string }) => unknown) =>
|
||||
selector({ resumeId: previewMock.builderResumeId }),
|
||||
usePreviewPausedStore: (selector: (state: { paused: boolean }) => unknown) => selector({ paused: false }),
|
||||
}));
|
||||
|
||||
vi.mock("@/features/resume/stylesheet/store", () => ({
|
||||
useStylesheetStore: (
|
||||
selector: (state: {
|
||||
resumeId?: string;
|
||||
mode: "legacy" | "semantic";
|
||||
source: { languageVersion: number; text: string };
|
||||
applied: { languageVersion: number; text: string };
|
||||
}) => unknown,
|
||||
) => selector(previewMock.stylesheet),
|
||||
}));
|
||||
|
||||
vi.mock("./pdf-canvas", async () => {
|
||||
const React = await import("react");
|
||||
const pdfDocument = { numPages: 1 };
|
||||
@@ -52,7 +77,7 @@ vi.mock("./pdf-canvas", async () => {
|
||||
PdfCanvasDocument: ({ children, onLoadSuccess }: PdfCanvasDocumentProps) => {
|
||||
React.useEffect(() => {
|
||||
onLoadSuccess(pdfDocument);
|
||||
}, [onLoadSuccess]);
|
||||
}, []);
|
||||
|
||||
return React.createElement(React.Fragment, null, children(pdfDocument));
|
||||
},
|
||||
@@ -60,7 +85,7 @@ vi.mock("./pdf-canvas", async () => {
|
||||
React.useEffect(() => {
|
||||
onLoadSuccess(pageNumber, { height: 200, width: 100 });
|
||||
onRenderSuccess?.();
|
||||
}, [onLoadSuccess, onRenderSuccess, pageNumber]);
|
||||
}, [pageNumber]);
|
||||
|
||||
return React.createElement(
|
||||
"div",
|
||||
@@ -77,9 +102,17 @@ describe("ResumePreviewClient", () => {
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
previewMock.builderResumeId = undefined;
|
||||
previewMock.builderResumeData = undefined;
|
||||
previewMock.stylesheet = {
|
||||
resumeId: undefined,
|
||||
mode: "legacy",
|
||||
source: { languageVersion: 1, text: "@version 1;\n" },
|
||||
applied: { languageVersion: 1, text: "@version 1;\n" },
|
||||
};
|
||||
previewMock.toBlob.mockReset();
|
||||
previewMock.toBlob.mockImplementation(async () => new Blob(["%PDF"], { type: "application/pdf" }));
|
||||
previewMock.toastError.mockReset();
|
||||
});
|
||||
|
||||
it("renders a loading placeholder for each builder layout page while the PDF is generated", () => {
|
||||
@@ -102,6 +135,76 @@ describe("ResumePreviewClient", () => {
|
||||
expect(previewMock.toBlob).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
expect(previewMock.toBlob).toHaveBeenCalledWith(sampleResumeData);
|
||||
expect(previewMock.toBlob).toHaveBeenCalledWith(sampleResumeData, undefined, undefined, undefined);
|
||||
});
|
||||
|
||||
it("keeps the rendered template identity on the active layer while its replacement renders", async () => {
|
||||
const view = render(
|
||||
<ResumePreviewClient data={sampleResumeData} pageLayout="vertical" pageScale={1.25} showPageNumbers={false} />,
|
||||
);
|
||||
const page = await screen.findByRole("img", { name: "Resume page 1 of 1" });
|
||||
const activeLayer = page.closest('[aria-hidden="false"]');
|
||||
expect(activeLayer?.getAttribute("data-resume-preview-template")).toBe("azurill");
|
||||
|
||||
previewMock.toBlob.mockImplementationOnce(() => new Promise<Blob>(() => {}));
|
||||
const glalieData: ResumeData = {
|
||||
...sampleResumeData,
|
||||
metadata: { ...sampleResumeData.metadata, template: "glalie" },
|
||||
};
|
||||
view.rerender(
|
||||
<ResumePreviewClient data={glalieData} pageLayout="vertical" pageScale={1.25} showPageNumbers={false} />,
|
||||
);
|
||||
|
||||
await waitFor(() => expect(previewMock.toBlob).toHaveBeenCalledTimes(2));
|
||||
expect(activeLayer?.getAttribute("data-resume-preview-template")).toBe("azurill");
|
||||
});
|
||||
|
||||
it("renders the canonical applied stylesheet and ignores invalid editable source", async () => {
|
||||
const validApplied = { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" };
|
||||
previewMock.builderResumeId = "resume-1";
|
||||
previewMock.builderResumeData = sampleResumeData;
|
||||
previewMock.stylesheet = {
|
||||
resumeId: "resume-1",
|
||||
mode: "semantic",
|
||||
source: { languageVersion: 1, text: "section {" },
|
||||
applied: validApplied,
|
||||
};
|
||||
|
||||
render(<ResumePreviewClient pageLayout="vertical" pageScale={1.25} showPageNumbers={false} />);
|
||||
|
||||
await waitFor(() => expect(previewMock.toBlob).toHaveBeenCalledTimes(1));
|
||||
expect(previewMock.toBlob).toHaveBeenCalledWith(sampleResumeData, undefined, undefined, {
|
||||
stylesheet: { mode: "semantic", applied: validApplied },
|
||||
});
|
||||
|
||||
expect(previewMock.toBlob).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("keeps the active PDF visible and reports later semantic render diagnostics", async () => {
|
||||
previewMock.builderResumeId = "resume-1";
|
||||
previewMock.builderResumeData = sampleResumeData;
|
||||
previewMock.stylesheet = {
|
||||
resumeId: "resume-1",
|
||||
mode: "semantic",
|
||||
source: { languageVersion: 1, text: "@version 1;\n" },
|
||||
applied: { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" },
|
||||
};
|
||||
const view = render(<ResumePreviewClient pageLayout="vertical" pageScale={1.25} showPageNumbers={false} />);
|
||||
expect(await screen.findByRole("img", { name: "Resume page 1 of 1" })).toBeTruthy();
|
||||
|
||||
previewMock.toBlob.mockRejectedValueOnce(
|
||||
new Error("The semantic stylesheet could not be rendered.", {
|
||||
cause: [{ code: "RESOURCE_LIMIT", severity: "error" }],
|
||||
}),
|
||||
);
|
||||
previewMock.stylesheet.applied = {
|
||||
languageVersion: 1,
|
||||
text: "@version 1;\nname { color: #654321; }\n",
|
||||
};
|
||||
view.rerender(<ResumePreviewClient pageLayout="vertical" pageScale={1.25} showPageNumbers={false} />);
|
||||
|
||||
await waitFor(() => expect(previewMock.toBlob).toHaveBeenCalledTimes(2));
|
||||
await waitFor(() => expect(previewMock.toastError).toHaveBeenCalledTimes(1));
|
||||
expect(screen.getByRole("img", { name: "Resume page 1 of 1" })).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
import type { Template } from "@reactive-resume/schema/templates";
|
||||
import type { CSSProperties } from "react";
|
||||
import type { ResolvedResumePreviewProps } from "./preview.shared";
|
||||
import type { PreviewPageSize } from "./preview.shared.utils";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { AnimatePresence, m } from "motion/react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
import { isRTL } from "@reactive-resume/utils/locale";
|
||||
import { cn } from "@reactive-resume/utils/style";
|
||||
import { createResumePdfBlob } from "@/features/resume/export/pdf-document";
|
||||
import { usePreviewPausedStore, useResumeData } from "../builder/draft";
|
||||
import { useStylesheetStore } from "@/features/resume/stylesheet/store";
|
||||
import { usePreviewPausedStore, useResumeData, useResumeStore } from "../builder/draft";
|
||||
import { PdfCanvasDocument, PdfCanvasPage } from "./pdf-canvas";
|
||||
import { ResumePreviewLoader } from "./preview.shared";
|
||||
import { getResumePreviewGapValue, getResumePreviewPageCount } from "./preview.shared.utils";
|
||||
@@ -19,18 +23,20 @@ type PreviewPdf = {
|
||||
pageSizes: Record<number, PreviewPageSize>;
|
||||
phase: "active" | "exiting" | "staged";
|
||||
renderedPages: number[];
|
||||
template: Template;
|
||||
};
|
||||
|
||||
const UPDATE_DEBOUNCE_MS = 100;
|
||||
const CROSSFADE_DURATION_MS = 180;
|
||||
|
||||
const createPreviewPdf = (file: Blob, id: number, hasExistingPreview: boolean): PreviewPdf => ({
|
||||
const createPreviewPdf = (file: Blob, id: number, hasExistingPreview: boolean, template: Template): PreviewPdf => ({
|
||||
file,
|
||||
id,
|
||||
numPages: 0,
|
||||
pageSizes: {},
|
||||
phase: hasExistingPreview ? "staged" : "active",
|
||||
renderedPages: [],
|
||||
template,
|
||||
});
|
||||
|
||||
const addPreviewLayer = (layers: PreviewPdf[], nextPdf: PreviewPdf) => {
|
||||
@@ -96,6 +102,17 @@ export function ResumePreviewClient({
|
||||
}: ResolvedResumePreviewProps) {
|
||||
const builderResumeData = useResumeData();
|
||||
const resumeData = data ?? builderResumeData;
|
||||
const builderResumeId = useResumeStore((state) => state.resumeId);
|
||||
const stylesheetResumeId = useStylesheetStore((state) => state.resumeId);
|
||||
const mode = useStylesheetStore((state) => state.mode);
|
||||
const applied = useStylesheetStore((state) => state.applied);
|
||||
const presentation = useMemo(
|
||||
() =>
|
||||
data === undefined && builderResumeId !== undefined && stylesheetResumeId === builderResumeId
|
||||
? { stylesheet: { mode, applied } }
|
||||
: undefined,
|
||||
[applied, builderResumeId, data, mode, stylesheetResumeId],
|
||||
);
|
||||
const paused = usePreviewPausedStore((state) => state.paused);
|
||||
|
||||
const [previewLayers, setPreviewLayers] = useState<PreviewPdf[]>([]);
|
||||
@@ -116,15 +133,25 @@ export function ResumePreviewClient({
|
||||
const generatePdfPreview = async () => {
|
||||
try {
|
||||
if (cancelled || requestId !== requestIdRef.current) return;
|
||||
const blob = await createResumePdfBlob(resumeData);
|
||||
const blob = await createResumePdfBlob(resumeData, undefined, undefined, presentation);
|
||||
|
||||
if (!cancelled && requestId === requestIdRef.current) {
|
||||
const nextPdf = createPreviewPdf(blob, pdfIdRef.current++, hasPreviewRef.current);
|
||||
const nextPdf = createPreviewPdf(
|
||||
blob,
|
||||
pdfIdRef.current++,
|
||||
hasPreviewRef.current,
|
||||
resumeData.metadata.template,
|
||||
);
|
||||
|
||||
hasPreviewRef.current = true;
|
||||
setPreviewLayers((current) => addPreviewLayer(current, nextPdf));
|
||||
}
|
||||
} catch {}
|
||||
} catch {
|
||||
if (cancelled || requestId !== requestIdRef.current) return;
|
||||
toast.error(t`The resume preview could not be updated. The last valid preview is still shown.`, {
|
||||
id: "resume-preview-render-error",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const timeoutId = window.setTimeout(() => {
|
||||
@@ -135,7 +162,7 @@ export function ResumePreviewClient({
|
||||
cancelled = true;
|
||||
window.clearTimeout(timeoutId);
|
||||
};
|
||||
}, [resumeData, paused]);
|
||||
}, [paused, presentation, resumeData]);
|
||||
|
||||
if (!resumeData) return null;
|
||||
|
||||
@@ -166,6 +193,7 @@ export function ResumePreviewClient({
|
||||
<m.div
|
||||
key={visiblePdf.id}
|
||||
aria-hidden={visiblePdf.phase !== "active"}
|
||||
data-resume-preview-template={visiblePdf.template}
|
||||
style={{ "--resume-preview-page-gap": resolvedPageGap } as CSSProperties}
|
||||
className={cn("col-start-1 row-start-1", visiblePdf.phase !== "active" && "pointer-events-none")}
|
||||
initial={{ opacity: visiblePdf.phase === "active" ? 1 : 0 }}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { render, waitFor } from "@testing-library/react";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
|
||||
|
||||
const pdfViewerMock = vi.hoisted(() => {
|
||||
@@ -18,6 +19,9 @@ const pdfViewerMock = vi.hoisted(() => {
|
||||
constructorOptions: [] as Array<{ abortSignal?: AbortSignal; container: HTMLDivElement }>,
|
||||
createResumePdfBlob: vi.fn(async () => new Blob(["%PDF"], { type: "application/pdf" })),
|
||||
getDocument: vi.fn(() => loadingTask),
|
||||
fetch: vi.fn(
|
||||
async (_input: string | URL) => new Response(new Blob(["%PDF-fallback"], { type: "application/pdf" })),
|
||||
),
|
||||
instances: [] as Array<{
|
||||
abortSignal?: AbortSignal;
|
||||
setDocument: ReturnType<typeof vi.fn>;
|
||||
@@ -92,6 +96,8 @@ beforeEach(() => {
|
||||
pdfViewerMock.createResumePdfBlob.mockClear();
|
||||
pdfViewerMock.getDocument.mockClear();
|
||||
pdfViewerMock.loadingTask.destroy.mockClear();
|
||||
pdfViewerMock.fetch.mockClear();
|
||||
vi.stubGlobal("fetch", pdfViewerMock.fetch);
|
||||
});
|
||||
|
||||
describe("PdfViewer", () => {
|
||||
@@ -113,4 +119,68 @@ describe("PdfViewer", () => {
|
||||
expect(viewer.setDocument).toHaveBeenCalledWith(null);
|
||||
expect(pdfViewerMock.loadingTask.destroy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("renders a valid public projection through the shared PDF entrypoint", async () => {
|
||||
const semanticData = structuredClone(sampleResumeData);
|
||||
const applied = { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" };
|
||||
semanticData.metadata.stylesheet = { mode: "semantic", source: applied, applied };
|
||||
const projection = await createPublicStyleProjection({ data: semanticData });
|
||||
const refetchStyleProjection = vi.fn();
|
||||
|
||||
render(
|
||||
<PdfViewer
|
||||
data={sampleResumeData}
|
||||
stylesheetMode="semantic"
|
||||
styleProjection={projection}
|
||||
refetchStyleProjection={refetchStyleProjection}
|
||||
publicResume={{ username: "amruth", slug: "sample" }}
|
||||
/>,
|
||||
);
|
||||
|
||||
await waitFor(() =>
|
||||
expect(pdfViewerMock.createResumePdfBlob).toHaveBeenCalledWith(sampleResumeData, undefined, undefined, {
|
||||
publicStyleProjection: projection,
|
||||
}),
|
||||
);
|
||||
expect(refetchStyleProjection).not.toHaveBeenCalled();
|
||||
expect(pdfViewerMock.fetch).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("refetches a mismatched projection once before using the authorized PDF fallback", async () => {
|
||||
const semanticData = structuredClone(sampleResumeData);
|
||||
const applied = { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" };
|
||||
semanticData.metadata.stylesheet = { mode: "semantic", source: applied, applied };
|
||||
const projection = await createPublicStyleProjection({ data: semanticData });
|
||||
const mismatchedProjection = { ...projection, renderDataHash: "0".repeat(64) };
|
||||
const refetchStyleProjection = vi.fn(async () => mismatchedProjection);
|
||||
|
||||
const view = render(
|
||||
<PdfViewer
|
||||
data={sampleResumeData}
|
||||
stylesheetMode="semantic"
|
||||
styleProjection={mismatchedProjection}
|
||||
refetchStyleProjection={refetchStyleProjection}
|
||||
publicResume={{ username: "amruth", slug: "sample" }}
|
||||
/>,
|
||||
);
|
||||
|
||||
await waitFor(() => expect(refetchStyleProjection).toHaveBeenCalledTimes(1));
|
||||
await waitFor(() => expect(pdfViewerMock.fetch).toHaveBeenCalledTimes(1));
|
||||
expect(String(pdfViewerMock.fetch.mock.calls[0]?.[0])).toContain("/api/resumes/amruth/sample/pdf");
|
||||
expect(String(pdfViewerMock.fetch.mock.calls[0]?.[0])).toContain("reason=render-data-hash");
|
||||
expect(pdfViewerMock.createResumePdfBlob).not.toHaveBeenCalled();
|
||||
|
||||
view.rerender(
|
||||
<PdfViewer
|
||||
data={sampleResumeData}
|
||||
stylesheetMode="semantic"
|
||||
styleProjection={{ ...mismatchedProjection, renderDataHash: "1".repeat(64) }}
|
||||
refetchStyleProjection={refetchStyleProjection}
|
||||
publicResume={{ username: "amruth", slug: "sample" }}
|
||||
/>,
|
||||
);
|
||||
|
||||
await waitFor(() => expect(pdfViewerMock.fetch).toHaveBeenCalledTimes(2));
|
||||
expect(refetchStyleProjection).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import type { PublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { SemanticStylesheet } from "@reactive-resume/schema/resume/stylesheet";
|
||||
import type { PDFDocumentLoadingTask, PDFDocumentProxy } from "pdfjs-dist/legacy/build/pdf.mjs";
|
||||
import { AnnotationMode, GlobalWorkerOptions, getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
|
||||
import { EventBus, LinkTarget, PDFLinkService, PDFViewer } from "pdfjs-dist/legacy/web/pdf_viewer.mjs";
|
||||
@@ -6,6 +8,7 @@ import { useEffect, useReducer, useRef } from "react";
|
||||
import { Spinner } from "@reactive-resume/ui/components/spinner";
|
||||
import { cn } from "@reactive-resume/utils/style";
|
||||
import { createResumePdfBlob } from "@/features/resume/export/pdf-document";
|
||||
import { resolvePublicResumePdfBlob } from "./public-pdf";
|
||||
import "pdfjs-dist/legacy/web/pdf_viewer.css";
|
||||
import "./pdf-viewer.css";
|
||||
|
||||
@@ -14,6 +17,13 @@ GlobalWorkerOptions.workerSrc = new URL("pdfjs-dist/legacy/build/pdf.worker.min.
|
||||
type PdfViewerProps = {
|
||||
className?: string;
|
||||
data: ResumeData;
|
||||
stylesheetMode?: SemanticStylesheet["mode"];
|
||||
styleProjection?: PublicStyleProjection;
|
||||
refetchStyleProjection?: () => Promise<PublicStyleProjection | undefined>;
|
||||
publicResume?: {
|
||||
username: string;
|
||||
slug: string;
|
||||
};
|
||||
};
|
||||
|
||||
type PdfViewerOptions = ConstructorParameters<typeof PDFViewer>[0] & {
|
||||
@@ -67,11 +77,21 @@ function pdfViewerReducer(state: PdfViewerState, action: PdfViewerAction): PdfVi
|
||||
}
|
||||
}
|
||||
|
||||
export function PdfViewer({ className, data }: PdfViewerProps) {
|
||||
export function PdfViewer({
|
||||
className,
|
||||
data,
|
||||
stylesheetMode,
|
||||
styleProjection,
|
||||
refetchStyleProjection,
|
||||
publicResume,
|
||||
}: PdfViewerProps) {
|
||||
const rootRef = useRef<HTMLDivElement>(null);
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
const viewerRef = useRef<HTMLDivElement>(null);
|
||||
const fileRef = useRef<Blob | null>(null);
|
||||
const projectionRetryRef = useRef<{ data?: ResumeData; publicKey?: string; retried: boolean }>({
|
||||
retried: false,
|
||||
});
|
||||
const [{ error, fileVersion, isReady, viewerHeight }, dispatch] = useReducer(
|
||||
pdfViewerReducer,
|
||||
INITIAL_PDF_VIEWER_STATE,
|
||||
@@ -83,7 +103,29 @@ export function PdfViewer({ className, data }: PdfViewerProps) {
|
||||
fileRef.current = null;
|
||||
dispatch({ type: "resetForData" });
|
||||
|
||||
void createResumePdfBlob(data)
|
||||
const createPdf = () => {
|
||||
if (!stylesheetMode || !publicResume) return createResumePdfBlob(data);
|
||||
const publicKey = `${publicResume.username}/${publicResume.slug}`;
|
||||
if (projectionRetryRef.current.data !== data || projectionRetryRef.current.publicKey !== publicKey) {
|
||||
projectionRetryRef.current = { data, publicKey, retried: false };
|
||||
}
|
||||
const retryProjection =
|
||||
refetchStyleProjection && !projectionRetryRef.current.retried
|
||||
? () => {
|
||||
projectionRetryRef.current.retried = true;
|
||||
return refetchStyleProjection();
|
||||
}
|
||||
: undefined;
|
||||
return resolvePublicResumePdfBlob({
|
||||
data,
|
||||
stylesheetMode,
|
||||
publicResume,
|
||||
...(styleProjection ? { styleProjection } : {}),
|
||||
...(retryProjection ? { refetchStyleProjection: retryProjection } : {}),
|
||||
});
|
||||
};
|
||||
|
||||
void createPdf()
|
||||
.then((blob) => {
|
||||
if (isCancelled) return;
|
||||
|
||||
@@ -100,7 +142,7 @@ export function PdfViewer({ className, data }: PdfViewerProps) {
|
||||
return () => {
|
||||
isCancelled = true;
|
||||
};
|
||||
}, [data]);
|
||||
}, [data, publicResume, refetchStyleProjection, styleProjection, stylesheetMode]);
|
||||
|
||||
useEffect(() => {
|
||||
void fileVersion;
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
|
||||
import { resolvePublicResumePdfBlob } from "./public-pdf";
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
createResumePdfBlob: vi.fn(async () => new Blob(["local"], { type: "application/pdf" })),
|
||||
fetch: vi.fn(async (_input: string | URL) => new Response(new Blob(["server"], { type: "application/pdf" }))),
|
||||
}));
|
||||
|
||||
vi.mock("@/features/resume/export/pdf-document", () => ({
|
||||
createResumePdfBlob: mocks.createResumePdfBlob,
|
||||
}));
|
||||
|
||||
const publicResume = { username: "amruth", slug: "sample" };
|
||||
|
||||
beforeEach(() => {
|
||||
mocks.createResumePdfBlob.mockClear();
|
||||
mocks.fetch.mockClear();
|
||||
vi.stubGlobal("fetch", mocks.fetch);
|
||||
});
|
||||
|
||||
describe("resolvePublicResumePdfBlob", () => {
|
||||
it("keeps legitimate legacy resumes on the local PDF path", async () => {
|
||||
await resolvePublicResumePdfBlob({
|
||||
data: sampleResumeData,
|
||||
stylesheetMode: "legacy",
|
||||
publicResume,
|
||||
});
|
||||
|
||||
expect(mocks.createResumePdfBlob).toHaveBeenCalledWith(sampleResumeData);
|
||||
expect(mocks.fetch).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("uses the authorized server fallback when a semantic projection is unavailable", async () => {
|
||||
const refetchStyleProjection = vi.fn().mockRejectedValue(new Error("projection unavailable"));
|
||||
|
||||
await resolvePublicResumePdfBlob({
|
||||
data: sampleResumeData,
|
||||
stylesheetMode: "semantic",
|
||||
publicResume,
|
||||
refetchStyleProjection,
|
||||
});
|
||||
|
||||
expect(refetchStyleProjection).toHaveBeenCalledTimes(1);
|
||||
expect(String(mocks.fetch.mock.calls[0]?.[0])).toContain("/api/resumes/amruth/sample/pdf");
|
||||
expect(String(mocks.fetch.mock.calls[0]?.[0])).toContain("reason=missing-projection");
|
||||
expect(mocks.createResumePdfBlob).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("refetches a mismatched projection once before returning the authorized server blob", async () => {
|
||||
const semanticData = structuredClone(sampleResumeData);
|
||||
const source = { languageVersion: 1, text: "@version 1;\nname { color: #123456; }\n" };
|
||||
semanticData.metadata.stylesheet = { mode: "semantic", source, applied: source };
|
||||
const projection = await createPublicStyleProjection({ data: semanticData });
|
||||
const mismatchedProjection = { ...projection, renderDataHash: "0".repeat(64) };
|
||||
const refetchStyleProjection = vi.fn(async () => mismatchedProjection);
|
||||
|
||||
const blob = await resolvePublicResumePdfBlob({
|
||||
data: sampleResumeData,
|
||||
stylesheetMode: "semantic",
|
||||
styleProjection: mismatchedProjection,
|
||||
publicResume,
|
||||
refetchStyleProjection,
|
||||
});
|
||||
|
||||
expect(refetchStyleProjection).toHaveBeenCalledTimes(1);
|
||||
expect(mocks.fetch).toHaveBeenCalledTimes(1);
|
||||
expect(await blob.text()).toBe("server");
|
||||
expect(mocks.createResumePdfBlob).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,97 @@
|
||||
import type { PublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { SemanticStylesheet } from "@reactive-resume/schema/resume/stylesheet";
|
||||
import {
|
||||
getPublicStyleProjectionFingerprints,
|
||||
PUBLIC_STYLE_PROJECTION_FORMAT_VERSION,
|
||||
SEMANTIC_TREE_VERSION,
|
||||
validatePublicStyleProjection,
|
||||
} from "@reactive-resume/pdf/public-projection";
|
||||
import { createResumePdfBlob } from "@/features/resume/export/pdf-document";
|
||||
|
||||
export type PublicResumePdfOptions = {
|
||||
stylesheetMode: SemanticStylesheet["mode"];
|
||||
styleProjection?: PublicStyleProjection;
|
||||
refetchStyleProjection?: () => Promise<PublicStyleProjection | undefined>;
|
||||
publicResume: {
|
||||
username: string;
|
||||
slug: string;
|
||||
};
|
||||
};
|
||||
|
||||
type ProjectionMismatchReason =
|
||||
| "format-version"
|
||||
| "language-version"
|
||||
| "semantic-tree-version"
|
||||
| "registry-fingerprint"
|
||||
| "adapter-fingerprint"
|
||||
| "render-data-hash"
|
||||
| "invalid-projection";
|
||||
|
||||
const projectionMismatchReason = async (
|
||||
data: ResumeData,
|
||||
projection: PublicStyleProjection,
|
||||
): Promise<ProjectionMismatchReason | null> => {
|
||||
if (projection.formatVersion !== PUBLIC_STYLE_PROJECTION_FORMAT_VERSION) return "format-version";
|
||||
if (projection.languageVersion !== 1) return "language-version";
|
||||
if (projection.semanticTreeVersion !== SEMANTIC_TREE_VERSION) return "semantic-tree-version";
|
||||
const fingerprints = await getPublicStyleProjectionFingerprints();
|
||||
if (projection.registryFingerprint !== fingerprints.registryFingerprint) return "registry-fingerprint";
|
||||
if (projection.adapterFingerprint !== fingerprints.adapterFingerprint) return "adapter-fingerprint";
|
||||
return (await validatePublicStyleProjection(data, projection)) ? null : "render-data-hash";
|
||||
};
|
||||
|
||||
const fetchPublicResumePdf = async (
|
||||
publicResume: PublicResumePdfOptions["publicResume"],
|
||||
reason: ProjectionMismatchReason | "missing-projection",
|
||||
projection?: PublicStyleProjection,
|
||||
) => {
|
||||
const search = new URLSearchParams({
|
||||
reason,
|
||||
...(projection
|
||||
? {
|
||||
registryFingerprint: projection.registryFingerprint,
|
||||
adapterFingerprint: projection.adapterFingerprint,
|
||||
}
|
||||
: {}),
|
||||
});
|
||||
const response = await fetch(
|
||||
`/api/resumes/${encodeURIComponent(publicResume.username)}/${encodeURIComponent(publicResume.slug)}/pdf?${search}`,
|
||||
{ credentials: "include" },
|
||||
);
|
||||
if (!response.ok) throw new Error(`Public PDF fallback failed with ${response.status}`);
|
||||
return response.blob();
|
||||
};
|
||||
|
||||
export async function resolvePublicResumePdfBlob({
|
||||
data,
|
||||
...options
|
||||
}: PublicResumePdfOptions & { data: ResumeData }): Promise<Blob> {
|
||||
if (options.stylesheetMode === "legacy") return createResumePdfBlob(data);
|
||||
|
||||
let projection = options.styleProjection;
|
||||
let refetched = false;
|
||||
const refetch = async () => {
|
||||
if (!options.refetchStyleProjection || refetched) return;
|
||||
refetched = true;
|
||||
try {
|
||||
projection = await options.refetchStyleProjection();
|
||||
} catch {
|
||||
projection = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
if (!projection) await refetch();
|
||||
if (!projection) return fetchPublicResumePdf(options.publicResume, "missing-projection");
|
||||
|
||||
let reason = await projectionMismatchReason(data, projection).catch(() => "invalid-projection" as const);
|
||||
if (reason) {
|
||||
await refetch();
|
||||
if (!projection) return fetchPublicResumePdf(options.publicResume, "missing-projection");
|
||||
reason = await projectionMismatchReason(data, projection).catch(() => "invalid-projection" as const);
|
||||
}
|
||||
|
||||
return reason
|
||||
? fetchPublicResumePdf(options.publicResume, reason, projection)
|
||||
: createResumePdfBlob(data, undefined, undefined, { publicStyleProjection: projection });
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
// @vitest-environment happy-dom
|
||||
|
||||
import type { PublicStyleProjection } from "@reactive-resume/pdf/public-projection";
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { ReactNode } from "react";
|
||||
import { render, screen } from "@testing-library/react";
|
||||
@@ -11,24 +12,46 @@ import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
|
||||
type PdfViewerProps = {
|
||||
className?: string;
|
||||
data: ResumeData;
|
||||
stylesheetMode?: "legacy" | "semantic";
|
||||
styleProjection?: PublicStyleProjection;
|
||||
refetchStyleProjection?: () => Promise<PublicStyleProjection | undefined>;
|
||||
publicResume?: { username: string; slug: string };
|
||||
};
|
||||
|
||||
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}`),
|
||||
onDownloadPDF: vi.fn(),
|
||||
PdfViewer: vi.fn<(_props: PdfViewerProps) => ReactNode>(() => null),
|
||||
projection: {
|
||||
formatVersion: 1,
|
||||
languageVersion: 1,
|
||||
semanticTreeVersion: 1,
|
||||
registryFingerprint: "1".repeat(64),
|
||||
adapterFingerprint: "2".repeat(64),
|
||||
renderDataHash: "3".repeat(64),
|
||||
nodes: { resume: {} },
|
||||
} as PublicStyleProjection,
|
||||
refetchProjection: vi.fn(),
|
||||
projectionResult: {
|
||||
data: undefined as PublicStyleProjection | undefined,
|
||||
isError: false,
|
||||
isPending: false,
|
||||
},
|
||||
useResumeExport: vi.fn(),
|
||||
resume: undefined as
|
||||
| undefined
|
||||
| {
|
||||
data: ResumeData;
|
||||
name: string;
|
||||
slug: string;
|
||||
stylesheetMode: "legacy" | "semantic";
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock("@tanstack/react-query", () => ({
|
||||
useQuery: () => ({ data: publicResumeMock.resume }),
|
||||
useQuery: (options: { query: "resume" | "projection" }) =>
|
||||
options.query === "resume"
|
||||
? { data: publicResumeMock.resume }
|
||||
: { ...publicResumeMock.projectionResult, refetch: publicResumeMock.refetchProjection },
|
||||
}));
|
||||
|
||||
vi.mock("@tanstack/react-router", () => ({
|
||||
@@ -37,21 +60,21 @@ vi.mock("@tanstack/react-router", () => ({
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock("@reactive-resume/utils/file", () => ({
|
||||
downloadWithAnchor: publicResumeMock.downloadWithAnchor,
|
||||
generateFilename: publicResumeMock.generateFilename,
|
||||
}));
|
||||
|
||||
vi.mock("./pdf-viewer", () => ({
|
||||
PdfViewer: publicResumeMock.PdfViewer,
|
||||
}));
|
||||
|
||||
vi.mock("@/libs/orpc/client", () => ({
|
||||
orpc: { resume: { getBySlug: { queryOptions: () => ({}) } } },
|
||||
orpc: {
|
||||
resume: {
|
||||
getBySlug: { queryOptions: () => ({ query: "resume" }) },
|
||||
getStyleProjection: { queryOptions: () => ({ query: "projection" }) },
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock("@/features/resume/export/pdf-document", () => ({
|
||||
createResumePdfBlob: publicResumeMock.createResumePdfBlob,
|
||||
vi.mock("@/features/resume/export/use-resume-export", () => ({
|
||||
useResumeExport: publicResumeMock.useResumeExport,
|
||||
}));
|
||||
|
||||
const { PublicResumeRoute } = await import("./public-resume");
|
||||
@@ -65,8 +88,21 @@ beforeEach(() => {
|
||||
data: sampleResumeData,
|
||||
name: "Sample Resume",
|
||||
slug: "sample",
|
||||
stylesheetMode: "semantic",
|
||||
};
|
||||
publicResumeMock.projectionResult = {
|
||||
data: publicResumeMock.projection,
|
||||
isError: false,
|
||||
isPending: false,
|
||||
};
|
||||
publicResumeMock.PdfViewer.mockClear();
|
||||
publicResumeMock.refetchProjection.mockReset();
|
||||
publicResumeMock.refetchProjection.mockResolvedValue({ data: publicResumeMock.projection });
|
||||
publicResumeMock.useResumeExport.mockReset();
|
||||
publicResumeMock.useResumeExport.mockReturnValue({
|
||||
onDownloadPDF: publicResumeMock.onDownloadPDF,
|
||||
isExporting: false,
|
||||
});
|
||||
publicResumeMock.PdfViewer.mockImplementation(({ className }) => (
|
||||
<div className={className} data-testid="pdf-viewer" />
|
||||
));
|
||||
@@ -88,6 +124,62 @@ describe("PublicResumeRoute", () => {
|
||||
expect.objectContaining({ data: sampleResumeData }),
|
||||
undefined,
|
||||
);
|
||||
expect(publicResumeMock.useResumeExport).toHaveBeenCalledWith(publicResumeMock.resume, {
|
||||
publicResumePdf: expect.objectContaining({
|
||||
stylesheetMode: "semantic",
|
||||
styleProjection: publicResumeMock.projection,
|
||||
publicResume: { username: "amruth", slug: "sample" },
|
||||
}),
|
||||
});
|
||||
});
|
||||
|
||||
it("routes a missing semantic projection to the shared fallback seam", () => {
|
||||
publicResumeMock.projectionResult = { data: undefined, isError: true, isPending: false };
|
||||
|
||||
renderPublicResumeRoute();
|
||||
|
||||
expect(publicResumeMock.PdfViewer).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
stylesheetMode: "semantic",
|
||||
styleProjection: undefined,
|
||||
refetchStyleProjection: expect.any(Function),
|
||||
publicResume: { username: "amruth", slug: "sample" },
|
||||
}),
|
||||
undefined,
|
||||
);
|
||||
expect(publicResumeMock.useResumeExport).toHaveBeenCalledWith(
|
||||
publicResumeMock.resume,
|
||||
expect.objectContaining({
|
||||
publicResumePdf: expect.objectContaining({
|
||||
stylesheetMode: "semantic",
|
||||
}),
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps missing legacy projections on the local rendering path", () => {
|
||||
if (publicResumeMock.resume) publicResumeMock.resume.stylesheetMode = "legacy";
|
||||
publicResumeMock.projectionResult = { data: undefined, isError: false, isPending: false };
|
||||
|
||||
renderPublicResumeRoute();
|
||||
|
||||
expect(publicResumeMock.PdfViewer).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ stylesheetMode: "legacy", styleProjection: undefined }),
|
||||
undefined,
|
||||
);
|
||||
});
|
||||
|
||||
it("loads the public projection and passes it to the shared viewer", () => {
|
||||
renderPublicResumeRoute();
|
||||
|
||||
expect(publicResumeMock.PdfViewer).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
styleProjection: publicResumeMock.projection,
|
||||
refetchStyleProjection: expect.any(Function),
|
||||
publicResume: { username: "amruth", slug: "sample" },
|
||||
}),
|
||||
undefined,
|
||||
);
|
||||
});
|
||||
|
||||
it("lets the public resume page grow to the full PDF length", () => {
|
||||
|
||||
@@ -3,6 +3,7 @@ import { Trans } from "@lingui/react/macro";
|
||||
import { CircleNotchIcon, DownloadSimpleIcon } from "@phosphor-icons/react";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { getRouteApi } from "@tanstack/react-router";
|
||||
import { useCallback, useMemo } from "react";
|
||||
import { BrandIcon } from "@reactive-resume/ui/components/brand-icon";
|
||||
import { Button } from "@reactive-resume/ui/components/button";
|
||||
import { LoadingScreen } from "@/components/layout/loading-screen";
|
||||
@@ -16,9 +17,30 @@ export function PublicResumeRoute() {
|
||||
const { username, slug } = publicResumeRoute.useParams();
|
||||
|
||||
const { data: resume } = useQuery(orpc.resume.getBySlug.queryOptions({ input: { username, slug } }));
|
||||
const { onDownloadPDF, isExporting } = useResumeExport(resume);
|
||||
const projectionQuery = useQuery(
|
||||
orpc.resume.getStyleProjection.queryOptions({ input: { username, slug }, enabled: resume !== undefined }),
|
||||
);
|
||||
const styleProjection =
|
||||
projectionQuery.data && Object.keys(projectionQuery.data.nodes).length > 0 ? projectionQuery.data : undefined;
|
||||
const publicResume = useMemo(() => ({ username, slug }), [slug, username]);
|
||||
const refetchStyleProjection = useCallback(async () => {
|
||||
const result = await projectionQuery.refetch();
|
||||
return result.data;
|
||||
}, [projectionQuery.refetch]);
|
||||
const { onDownloadPDF, isExporting } = useResumeExport(resume, {
|
||||
...(resume
|
||||
? {
|
||||
publicResumePdf: {
|
||||
stylesheetMode: resume.stylesheetMode,
|
||||
publicResume,
|
||||
refetchStyleProjection,
|
||||
...(styleProjection ? { styleProjection } : {}),
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
});
|
||||
|
||||
if (!resume) return <LoadingScreen />;
|
||||
if (!resume || projectionQuery.isPending) return <LoadingScreen />;
|
||||
|
||||
const { basics, picture } = resume.data;
|
||||
|
||||
@@ -44,7 +66,14 @@ export function PublicResumeRoute() {
|
||||
</header>
|
||||
|
||||
<main className="w-full max-w-5xl bg-white print:max-w-full">
|
||||
<PdfViewer data={resume.data} className="block w-full" />
|
||||
<PdfViewer
|
||||
data={resume.data}
|
||||
className="block w-full"
|
||||
stylesheetMode={resume.stylesheetMode}
|
||||
styleProjection={styleProjection}
|
||||
publicResume={publicResume}
|
||||
refetchStyleProjection={refetchStyleProjection}
|
||||
/>
|
||||
</main>
|
||||
|
||||
<footer className="flex justify-center print:hidden">
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { StyleProgram } from "@reactive-resume/resume/stylesheet";
|
||||
import { PROPERTY_REGISTRY_V1 } from "@reactive-resume/resume/stylesheet";
|
||||
|
||||
export type SemanticCssColorToken = {
|
||||
from: number;
|
||||
to: number;
|
||||
value: string;
|
||||
};
|
||||
|
||||
const colorValue =
|
||||
/^(?:#[\da-f]{3,8}|(?:rgb|rgba|hsl|hsla)\([^)]*\)|(?:aqua|black|blue|currentcolor|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|transparent|white|yellow))$/i;
|
||||
|
||||
const isColorProperty = (property: string) =>
|
||||
PROPERTY_REGISTRY_V1[property] !== undefined &&
|
||||
(PROPERTY_REGISTRY_V1[property]?.category === "color" || property.endsWith("-color"));
|
||||
|
||||
export function collectCompiledColorTokens(
|
||||
source: string,
|
||||
program: StyleProgram | null,
|
||||
): readonly SemanticCssColorToken[] {
|
||||
if (!program) return [];
|
||||
const tokens = new Map<string, SemanticCssColorToken>();
|
||||
|
||||
for (const rule of program.rules) {
|
||||
for (const declaration of rule.declarations) {
|
||||
if (!isColorProperty(declaration.property) || !colorValue.test(declaration.value)) continue;
|
||||
const declarationSource = source.slice(declaration.range.start.offset, declaration.range.end.offset);
|
||||
const valueOffset = declarationSource.indexOf(declaration.value, declarationSource.indexOf(":") + 1);
|
||||
if (valueOffset < 0) continue;
|
||||
const from = declaration.range.start.offset + valueOffset;
|
||||
const token = { from, to: from + declaration.value.length, value: declaration.value };
|
||||
tokens.set(`${token.from}:${token.to}`, token);
|
||||
}
|
||||
}
|
||||
|
||||
return [...tokens.values()].sort((left, right) => left.from - right.from);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user