mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-10 04:22:27 +10:00
Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ff1ffb0b9 | |||
| 79d3ef1306 | |||
| f4a12285f5 | |||
| 120ad827ad | |||
| a129b2033f | |||
| 372e508936 | |||
| ce8ada2621 | |||
| d0563d2ec9 | |||
| dacd4e311c | |||
| d6d016ba5d | |||
| 407ac990ac | |||
| 895e9845fc | |||
| 859a44197d | |||
| 0b80f33d46 | |||
| f246a17038 | |||
| 10c13d54be | |||
| 66316b740b | |||
| ae94748abe | |||
| fe11be60d3 | |||
| 1d3e47adb2 | |||
| fdd5f373c4 | |||
| 0f99d6cdfb | |||
| 742865a66a | |||
| 12dcf04981 | |||
| c0d76eaf0e | |||
| 2f430a1d07 | |||
| 576b942027 | |||
| 7df777ad0c | |||
| e5e30f290a | |||
| dcb476c28b | |||
| e09f281461 | |||
| 293f008f0a | |||
| f9cd1c779f | |||
| d931590374 | |||
| 907ffacca0 | |||
| a263d54319 | |||
| 0d478e1286 | |||
| 08997a1728 | |||
| 688bb11844 | |||
| 0bf4e0b2ae | |||
| 60bbfb6703 | |||
| 706307b073 | |||
| 3be18636ff | |||
| b2ee2f9d09 | |||
| fe54a2388e | |||
| be170dd985 | |||
| 7fd26ad2c3 | |||
| ec30aff4d1 | |||
| 0b3023989b | |||
| 3b96348183 | |||
| 30080b23cd | |||
| b3ba1e5b56 | |||
| bf72b557ca | |||
| 344fcb1078 | |||
| ddd71567c1 | |||
| adc679a6e5 | |||
| 8f49536119 | |||
| 750fedbd74 | |||
| cd59ea7e9b | |||
| 5c1b44ddea | |||
| eb6450a9de | |||
| 0b620f41fc | |||
| 64e0e677d7 | |||
| 19ae1cf036 | |||
| c221cef77f | |||
| 77e3dc2b16 | |||
| 9c9368acd5 | |||
| 22b91d3f94 | |||
| d844092d0f | |||
| b3e118fb8b | |||
| fe37eb2791 | |||
| 7902f67f4f | |||
| 57dd110187 | |||
| 829375e87a | |||
| 0a15b4ebc9 | |||
| 2bff3fc20b |
@ -1,5 +0,0 @@
|
||||
ARG VARIANT="lts-bullseye"
|
||||
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}
|
||||
|
||||
RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
|
||||
@ -1,27 +0,0 @@
|
||||
{
|
||||
"name": "Node.js",
|
||||
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": { "VARIANT": "16-bullseye" }
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "lokalise.i18n-ally"],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
"forwardPorts": [80, 5432],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "pnpm install",
|
||||
|
||||
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "node",
|
||||
|
||||
"features": {
|
||||
"docker-from-docker": "latest"
|
||||
}
|
||||
}
|
||||
@ -1,15 +1,14 @@
|
||||
{
|
||||
"root": true,
|
||||
"ignorePatterns": ["/app"],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"extends": ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
|
||||
"extends": ["plugin:@typescript-eslint/recommended"],
|
||||
"plugins": ["@typescript-eslint/eslint-plugin", "simple-import-sort", "unused-imports"],
|
||||
"rules": {
|
||||
// Unused Imports
|
||||
// ESLint
|
||||
"no-unused-vars": "off",
|
||||
// Simple Import Sort
|
||||
"simple-import-sort/imports": "error",
|
||||
"simple-import-sort/exports": "error",
|
||||
|
||||
// Unused Imports
|
||||
"unused-imports/no-unused-imports": "error",
|
||||
"unused-imports/no-unused-vars": [
|
||||
"warn",
|
||||
{
|
||||
@ -19,7 +18,11 @@
|
||||
"argsIgnorePattern": "^_"
|
||||
}
|
||||
],
|
||||
"unused-imports/no-unused-imports": "error",
|
||||
|
||||
// Simple Import Sort
|
||||
"simple-import-sort/imports": "error",
|
||||
"simple-import-sort/exports": "error",
|
||||
|
||||
// TypeScript ESLint
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
|
||||
20
.github/workflows/docker-build-push.yml
vendored
20
.github/workflows/docker-build-push.yml
vendored
@ -23,6 +23,15 @@ jobs:
|
||||
name: Get Version
|
||||
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2.0.0
|
||||
|
||||
- id: buildx
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2.0.0
|
||||
with:
|
||||
install: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2.0.0
|
||||
with:
|
||||
@ -42,6 +51,7 @@ jobs:
|
||||
context: .
|
||||
push: true
|
||||
file: client/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
amruthpillai/reactive-resume:client-latest
|
||||
amruthpillai/reactive-resume:client-${{ steps.version.outputs.tag }}
|
||||
@ -66,6 +76,15 @@ jobs:
|
||||
name: Get Version
|
||||
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2.0.0
|
||||
|
||||
- id: buildx
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2.0.0
|
||||
with:
|
||||
install: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2.0.0
|
||||
with:
|
||||
@ -85,6 +104,7 @@ jobs:
|
||||
context: .
|
||||
push: true
|
||||
file: server/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
amruthpillai/reactive-resume:server-latest
|
||||
amruthpillai/reactive-resume:server-${{ steps.version.outputs.tag }}
|
||||
|
||||
24
.github/workflows/docker-build.yml
vendored
24
.github/workflows/docker-build.yml
vendored
@ -17,10 +17,6 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- id: vars
|
||||
name: Get Short SHA
|
||||
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2.0.0
|
||||
|
||||
@ -30,9 +26,9 @@ jobs:
|
||||
with:
|
||||
install: true
|
||||
|
||||
- id: version
|
||||
name: Get Version
|
||||
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
|
||||
- id: variables
|
||||
name: Get Short SHA
|
||||
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
|
||||
|
||||
- name: Build Client Image
|
||||
uses: docker/build-push-action@v3.1.1
|
||||
@ -43,9 +39,9 @@ jobs:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
amruthpillai/reactive-resume:client-latest
|
||||
amruthpillai/reactive-resume:client-${{ steps.vars.outputs.sha_short }}
|
||||
amruthpillai/reactive-resume:client-${{ steps.variables.outputs.sha_short }}
|
||||
ghcr.io/amruthpillai/reactive-resume:client-latest
|
||||
ghcr.io/amruthpillai/reactive-resume:client-${{ steps.vars.outputs.sha_short }}
|
||||
ghcr.io/amruthpillai/reactive-resume:client-${{ steps.variables.outputs.sha_short }}
|
||||
|
||||
server:
|
||||
name: Server
|
||||
@ -70,9 +66,9 @@ jobs:
|
||||
with:
|
||||
install: true
|
||||
|
||||
- id: version
|
||||
name: Get Version
|
||||
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
|
||||
- id: variables
|
||||
name: Get Short SHA
|
||||
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
|
||||
|
||||
- name: Build Server Image
|
||||
uses: docker/build-push-action@v3.1.1
|
||||
@ -83,6 +79,6 @@ jobs:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
amruthpillai/reactive-resume:server-latest
|
||||
amruthpillai/reactive-resume:server-${{ steps.vars.outputs.sha_short }}
|
||||
amruthpillai/reactive-resume:server-${{ steps.variables.outputs.sha_short }}
|
||||
ghcr.io/amruthpillai/reactive-resume:server-latest
|
||||
ghcr.io/amruthpillai/reactive-resume:server-${{ steps.vars.outputs.sha_short }}
|
||||
ghcr.io/amruthpillai/reactive-resume:server-${{ steps.variables.outputs.sha_short }}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
# Android App
|
||||
/app
|
||||
|
||||
# Schema
|
||||
schema/dist
|
||||
|
||||
@ -23,11 +26,4 @@ pnpm-lock.yaml
|
||||
# Docker
|
||||
Dockerfile
|
||||
.dockerignore
|
||||
docker-compose.yml
|
||||
|
||||
# Android App
|
||||
/app
|
||||
|
||||
# Docs
|
||||
docs/build
|
||||
docs/.docusaurus
|
||||
docker-compose.yml
|
||||
26
.vscode/launch.json
vendored
26
.vscode/launch.json
vendored
@ -1,26 +0,0 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node",
|
||||
"name": "Debug: Server",
|
||||
"port": 9229,
|
||||
"request": "attach",
|
||||
"restart": true,
|
||||
"protocol": "inspector",
|
||||
"stopOnEntry": false
|
||||
},
|
||||
{
|
||||
"name": "Debug: Client",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"command": "pnpm run dev:client",
|
||||
"console": "integratedTerminal",
|
||||
"serverReadyAction": {
|
||||
"action": "debugWithChrome",
|
||||
"pattern": "started server on .+, url: (https?://.+)",
|
||||
"uriFormat": "%s"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
323
CHANGELOG.md
323
CHANGELOG.md
@ -1,323 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
### [3.5.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.2...v3.5.3) (2022-08-11)
|
||||
|
||||
### [3.5.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.1...v3.5.2) (2022-08-04)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client:** :dizzy: add Finnish language support ([16d19eb](https://github.com/AmruthPillai/Reactive-Resume/commit/16d19eb70f64f768304f352d0f87102d328b57c1))
|
||||
|
||||
### [3.5.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.0...v3.5.1) (2022-07-30)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client:** :sparkles: ask for confirmation when resetting a resume ([4d43f6a](https://github.com/AmruthPillai/Reactive-Resume/commit/4d43f6a6427198e62e9fcb995f1a28c0ee4de71e))
|
||||
* **docker:** :zap: remove ports from postgres docker instance ([07c91e9](https://github.com/AmruthPillai/Reactive-Resume/commit/07c91e9ac21e8ef120d08ab92363d8e48a55aaba))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **server:** :zap: don't initialize sendgrid if the apikey is empty ([05d3f1f](https://github.com/AmruthPillai/Reactive-Resume/commit/05d3f1f06fbffd899269a5c4dea3c52cf408125f))
|
||||
|
||||
## [3.5.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.8...v3.5.0) (2022-07-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client:** :bug: attempt to fix the one-off date issue ([5197f95](https://github.com/AmruthPillai/Reactive-Resume/commit/5197f954c0baed3daf1c7e2c79b607354ef42024))
|
||||
* **client:** :bug: fix mui rendering of utc dates ([977fa72](https://github.com/AmruthPillai/Reactive-Resume/commit/977fa72ddeeeebf7463d43a820e85f783489a4dc))
|
||||
|
||||
### [3.4.8](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.7...v3.4.8) (2022-07-13)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **google:** add toast to display error message from google ([25cf594](https://github.com/AmruthPillai/Reactive-Resume/commit/25cf594eb948e1c2d6157028ee1fff2799df5f92))
|
||||
|
||||
### [3.4.7](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.6...v3.4.7) (2022-06-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **mui:** update mui datepickers to newer package ([bfb48e3](https://github.com/AmruthPillai/Reactive-Resume/commit/bfb48e3aa7e0575922841522edc1d38544d1884f))
|
||||
|
||||
### [3.4.6](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.5...v3.4.6) (2022-06-19)
|
||||
|
||||
## [3.6.0](https://github.com/dvd741-a/Reactive-Resume/compare/v3.3.4...v3.6.0) (2022-06-05)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **all:** upgrade to v3.4.0 ([87d381f](https://github.com/dvd741-a/Reactive-Resume/commit/87d381fe8eab9ca4624df5de6e8b9ab18a072b67))
|
||||
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/dvd741-a/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/dvd741-a/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
|
||||
* **typeorm:** update typeorm to latest 0.2.x for secpatch ([5bdb92b](https://github.com/dvd741-a/Reactive-Resume/commit/5bdb92b1cff9e56879f9bbf31801d6554a00a8d5))
|
||||
|
||||
## [3.5.0](https://github.com/dvd741-a/Reactive-Resume/compare/v3.3.4...v3.5.0) (2022-06-05)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **all:** upgrade to v3.4.0 ([87d381f](https://github.com/dvd741-a/Reactive-Resume/commit/87d381fe8eab9ca4624df5de6e8b9ab18a072b67))
|
||||
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/dvd741-a/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/dvd741-a/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
|
||||
* **typeorm:** update typeorm to latest 0.2.x for secpatch ([5bdb92b](https://github.com/dvd741-a/Reactive-Resume/commit/5bdb92b1cff9e56879f9bbf31801d6554a00a8d5))
|
||||
|
||||
### [3.4.5](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.4...v3.4.5) (2022-05-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/AmruthPillai/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
|
||||
|
||||
## [3.4.4](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.3...v3.4.4) (2022-05-02)
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/AmruthPillai/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
|
||||
|
||||
### [3.4.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.2...v3.4.3) (2022-05-01)
|
||||
|
||||
### [3.4.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.1...v3.4.2) (2022-04-30)
|
||||
|
||||
### [3.4.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.0...v3.4.1) (2022-04-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **typeorm:** update typeorm to latest 0.2.x for secpatch ([5bdb92b](https://github.com/AmruthPillai/Reactive-Resume/commit/5bdb92b1cff9e56879f9bbf31801d6554a00a8d5))
|
||||
|
||||
### [3.4.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.3.3...v3.4.0) (2022-04-30)
|
||||
|
||||
### [3.3.4](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.3.3...v3.3.4) (2022-04-09)
|
||||
|
||||
### [3.3.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.3.2...v3.3.3) (2022-04-09)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **profile:** add XING profile icon ([1e59f73](https://github.com/AmruthPillai/Reactive-Resume/commit/1e59f73f79a91d0264c0d2108906ee89d4eb27f8)), closes [#821](https://github.com/AmruthPillai/Reactive-Resume/issues/821)
|
||||
* **s3:** implement non-ephemeral storage through S3/DO Spaces ([feb911a](https://github.com/AmruthPillai/Reactive-Resume/commit/feb911aea06bacf58ea933d2803a2a89fe36e57b))
|
||||
|
||||
### [3.3.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.3.1...v3.3.2) (2022-04-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types/react:** downgrade to <18 ([fc77b54](https://github.com/AmruthPillai/Reactive-Resume/commit/fc77b548d8d61530b2d158ff83f088bed12d5080))
|
||||
|
||||
### [3.3.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.3.0...v3.3.1) (2022-04-08)
|
||||
|
||||
## [3.3.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.11...v3.3.0) (2022-04-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **upgrade:** changes to code to support new template ([1df7810](https://github.com/AmruthPillai/Reactive-Resume/commit/1df78100ca0667ce9b7834cf2c25384eb21c67c2))
|
||||
|
||||
### What's Changed
|
||||
* New Crowdin updates by @AmruthPillai in https://github.com/AmruthPillai/Reactive-Resume/pull/791
|
||||
* Bump org.jetbrains.kotlin.android from 1.6.10 to 1.6.20 in /app by @dependabot in https://github.com/AmruthPillai/Reactive-Resume/pull/812
|
||||
* New Crowdin updates by @AmruthPillai in https://github.com/AmruthPillai/Reactive-Resume/pull/806
|
||||
* A new template - Leafish by @klejejs in https://github.com/AmruthPillai/Reactive-Resume/pull/811
|
||||
* Automatic multi-platform Docker image build by @schklom in https://github.com/AmruthPillai/Reactive-Resume/pull/817
|
||||
|
||||
### New Contributors
|
||||
* @klejejs made their first contribution in https://github.com/AmruthPillai/Reactive-Resume/pull/811
|
||||
* @schklom made their first contribution in https://github.com/AmruthPillai/Reactive-Resume/pull/817
|
||||
|
||||
### [3.2.11](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.10...v3.2.11) (2022-03-28)
|
||||
|
||||
### [3.2.10](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.9...v3.2.10) (2022-03-24)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add portuguese (pt) language to i18n locales ([7f1c82c](https://github.com/AmruthPillai/Reactive-Resume/commit/7f1c82cd9185ebb44486a16132eb44d5c2fb747a))
|
||||
|
||||
### [3.2.9](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.8...v3.2.9) (2022-03-21)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add nl and ru i18n locales to app ([03cbf22](https://github.com/AmruthPillai/Reactive-Resume/commit/03cbf22c9bee96cac8f228830b67b44529b7ecee))
|
||||
|
||||
### [3.2.8](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.7...v3.2.8) (2022-03-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client/theme:** add theme switcher to landing page ([8f5632c](https://github.com/AmruthPillai/Reactive-Resume/commit/8f5632c5ad0bc8a4b3028c2806365717fedd78c9))
|
||||
* **flags:** introduce flags, disable_user_signups ([b6267d0](https://github.com/AmruthPillai/Reactive-Resume/commit/b6267d07ba2dcaed0da3946d136a0a9a01c441d5)), closes [#698](https://github.com/AmruthPillai/Reactive-Resume/issues/698)
|
||||
* **i18n:** add Vietnamese language to i18n locales ([4390bcc](https://github.com/AmruthPillai/Reactive-Resume/commit/4390bccfb9764f2d2730ec3a124b7befb6792e9a))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client/create-rename-slug:** fix slug accepting apostrophes and other special characters ([1facd2a](https://github.com/AmruthPillai/Reactive-Resume/commit/1facd2ad111cd9d990c808b3956d3915e8711acd)), closes [#706](https://github.com/AmruthPillai/Reactive-Resume/issues/706)
|
||||
* **disable_user_signups:** hide create account link under flag ([80acfe9](https://github.com/AmruthPillai/Reactive-Resume/commit/80acfe97c74bfa05b719285b19144144f3f7c5ba))
|
||||
|
||||
### [3.2.7](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.6...v3.2.7) (2022-03-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add Malayalam (മലയാളം) language to i18n locales ([3a2e62b](https://github.com/AmruthPillai/Reactive-Resume/commit/3a2e62be4c9acc14f17277c060cc9ea2c417a478))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **printer/i18n:** fix dates not showing up in resume language when printing ([90321e1](https://github.com/AmruthPillai/Reactive-Resume/commit/90321e1284409ab9442883c04a9b4c591d36f95d)), closes [#729](https://github.com/AmruthPillai/Reactive-Resume/issues/729)
|
||||
|
||||
### [3.2.6](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.5...v3.2.6) (2022-03-17)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client/auth/google:** disable google login/registration if GOOGLE_CLIENT_ID is not in ENV ([7f0ee40](https://github.com/AmruthPillai/Reactive-Resume/commit/7f0ee40af4acc7eb41514406ecee3218ace9e891)), closes [#724](https://github.com/AmruthPillai/Reactive-Resume/issues/724)
|
||||
* **i18n:** add arabic language to i18n locale ([39fa6da](https://github.com/AmruthPillai/Reactive-Resume/commit/39fa6da5dd77ce2e12e81530fa18c2eac722c1f2))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **i18n:** add missing languages to dayjs date wrapper locales ([9e6dafc](https://github.com/AmruthPillai/Reactive-Resume/commit/9e6dafc8cada5c01559894905996b81004bedaec)), closes [#719](https://github.com/AmruthPillai/Reactive-Resume/issues/719)
|
||||
* **json-export:** add mimeType and charset to JSON export ([b3ff780](https://github.com/AmruthPillai/Reactive-Resume/commit/b3ff7805cd856a52900d9acef0554867d8ce0b01)), closes [#726](https://github.com/AmruthPillai/Reactive-Resume/issues/726)
|
||||
* **linkedin:** fix skill modal crashing when importing from linkedin ([a02b85b](https://github.com/AmruthPillai/Reactive-Resume/commit/a02b85b4bb1c4a1499aacddeac7bc59bcb1f7adb)), closes [#718](https://github.com/AmruthPillai/Reactive-Resume/issues/718)
|
||||
|
||||
### [3.2.5](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.4...v3.2.5) (2022-03-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add danish, polish and turkish locales to i18n ([97e9432](https://github.com/AmruthPillai/Reactive-Resume/commit/97e9432d6bd887e666a3443fbfde9a92cef53965))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client/templates:** fix text veering off of artboard in most templates ([b2f1fb3](https://github.com/AmruthPillai/Reactive-Resume/commit/b2f1fb3a5502988a49c5cd3e496d9d165f5c1792)), closes [#702](https://github.com/AmruthPillai/Reactive-Resume/issues/702)
|
||||
|
||||
### [3.2.4](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.3...v3.2.4) (2022-03-14)
|
||||
|
||||
### [3.2.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.2...v3.2.3) (2022-03-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client/import:** implement import json from reactive resume v2 ([42408ce](https://github.com/AmruthPillai/Reactive-Resume/commit/42408ce8c5ce55904854f9f6e0481889a01edfb8))
|
||||
|
||||
### [3.2.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.1...v3.2.2) (2022-03-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client/skills:** make skill level optional ([02e396b](https://github.com/AmruthPillai/Reactive-Resume/commit/02e396bfdbf07ae75661f1e7e4e55060cacee7d0))
|
||||
|
||||
### [3.2.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.2.0...v3.2.1) (2022-03-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add Chinese (Simplified) language to locales ([549363b](https://github.com/AmruthPillai/Reactive-Resume/commit/549363bbe5bdd781699dea9506bd4baedf5740d1))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client/basics:** fix issue with overlapping photo filters on safari/webkit/iOS ([e6bda68](https://github.com/AmruthPillai/Reactive-Resume/commit/e6bda688ac3ba1c04e82721add92e755ea5386c3))
|
||||
* **docker:** fix docker-compose for production grade deployments ([57f7edc](https://github.com/AmruthPillai/Reactive-Resume/commit/57f7edc13432a038c907afc6cb74b5182a9b2333))
|
||||
|
||||
## [3.2.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.1.4...v3.2.0) (2022-03-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **i18n:** add Bengali, Italian and other languages ([21931bc](https://github.com/AmruthPillai/Reactive-Resume/commit/21931bc324b5e2440baaaaa2e52a93b4f2c766f8))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **app:** fix issue with external link redirection in android app ([b18120b](https://github.com/AmruthPillai/Reactive-Resume/commit/b18120b3f7223981e28c0441a6b7725787186edb))
|
||||
* **client:** fix issue with react-query cache ([ed75a85](https://github.com/AmruthPillai/Reactive-Resume/commit/ed75a858279047dfd43152e041c1a09a625417f5))
|
||||
|
||||
### [3.1.4](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.1.3...v3.1.4) (2022-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client:** exported pdf did not contain "Present" keyword with translations ([cf670af](https://github.com/AmruthPillai/Reactive-Resume/commit/cf670af4035dc9b462cf5b1aad06ca089cf1d40c))
|
||||
* **client:** fix issues raised through lgtm alerts ([dfccb31](https://github.com/AmruthPillai/Reactive-Resume/commit/dfccb3130f889934d31196226be3d33e772f323b))
|
||||
|
||||
### [3.1.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.1.2...v3.1.3) (2022-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **server:** reform url for pdf generation and download ([6d55f91](https://github.com/AmruthPillai/Reactive-Resume/commit/6d55f917eab3cb2f5f3a90c5a18f03b625d60021)), closes [#661](https://github.com/AmruthPillai/Reactive-Resume/issues/661)
|
||||
|
||||
### [3.1.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.1.1...v3.1.2) (2022-03-12)
|
||||
|
||||
|
||||
### CI
|
||||
|
||||
* **docker:**: include traefik routing and proxy to ensure server connections pass in local ([11cb066](https://github.com/AmruthPillai/Reactive-Resume/commit/11cb066573c6917857b79c028b97fcda1acaf90a))
|
||||
|
||||
### [3.1.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.1.0...v3.1.1) (2022-03-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client:** add product hunt announcement banner ([b515fc3](https://github.com/AmruthPillai/Reactive-Resume/commit/b515fc36e7f282db92e8eb509b6c5004a944fa95))
|
||||
|
||||
## [3.1.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.0.0...v3.1.0) (2022-03-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **client:** add "spanish (es)" language to i18n locales ([bf167f8](https://github.com/AmruthPillai/Reactive-Resume/commit/bf167f81a3659677dada55856f5eaf0fc469e697))
|
||||
* **client:** add mm/yyyy date option to date format options ([82bf44d](https://github.com/AmruthPillai/Reactive-Resume/commit/82bf44daa24422156779e9b38d3dc695176eaa09)), closes [#656](https://github.com/AmruthPillai/Reactive-Resume/issues/656)
|
||||
* **client:** add sitemap generation to next app ([2cbc582](https://github.com/AmruthPillai/Reactive-Resume/commit/2cbc582a12b72b3012246022d4b518ed657d4c08))
|
||||
* **client:** disable "Toggle Page Orientation" when there's only one page on the artboard ([01da1a0](https://github.com/AmruthPillai/Reactive-Resume/commit/01da1a06b802f1063a41d7a9a682e76b1daf9461)), closes [#655](https://github.com/AmruthPillai/Reactive-Resume/issues/655)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **client:** remove hard-coded "keywords:" in certain templates ([dda42b4](https://github.com/AmruthPillai/Reactive-Resume/commit/dda42b4c6b3bc359ac4f2bb91ca8118ddc84ec07)), closes [#650](https://github.com/AmruthPillai/Reactive-Resume/issues/650)
|
||||
* **client:** show "present" string if end date is not entered, also add to i18n locales ([b5cd6c4](https://github.com/AmruthPillai/Reactive-Resume/commit/b5cd6c412b5b6b6ca7bb43c3801762de451f06b4)), closes [#653](https://github.com/AmruthPillai/Reactive-Resume/issues/653)
|
||||
* **server:** photo uploads not working, fix save location and returned url ([799f208](https://github.com/AmruthPillai/Reactive-Resume/commit/799f20823e6d97a1ff0ba2c45c61d56304d0fa58)), closes [#658](https://github.com/AmruthPillai/Reactive-Resume/issues/658)
|
||||
|
||||
## [3.0.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.0.0-beta.6...v3.0.0) (2022-03-11)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **lang**: add German, Kannada and Tamil languages to the app ([3a524f9](https://github.com/AmruthPillai/Reactive-Resume/commit/3a524f9c9c7a0e446491265b2242ad3dfeae188c))
|
||||
* **docs:** add docusaurus workspace, initial setup of docs ([dc4aa0b](https://github.com/AmruthPillai/Reactive-Resume/commit/dc4aa0b496096bd59c45426bfcea6ba7db5f5c01))
|
||||
|
||||
## [3.0.0-beta.6](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.0.0-beta.5...v3.0.0-beta.6) (2022-03-11)
|
||||
|
||||
### Features
|
||||
|
||||
* **lang:** add language switcher on the landing page, in the footer ([8bc7d25](https://github.com/AmruthPillai/Reactive-Resume/commit/8bc7d2599ef6af7a07bfbe886c43844152b0d9f7))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **i18n:** add missing translation keys, update lang/locale logic ([7d8828a](https://github.com/AmruthPillai/Reactive-Resume/commit/7d8828a358d653bb162877a64c75028eb82678cd))
|
||||
* **webkit:** fix issue with webkit not supporting .at() ([2654cba](https://github.com/AmruthPillai/Reactive-Resume/commit/2654cba039eb73d33257c36fa90a52cabc9fda96))
|
||||
|
||||
## [3.0.0-beta.5](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.0.0-beta.4...v3.0.0-beta.5) (2022-03-10)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **app:** fix issue with using swipelayout ([972e8b1](https://github.com/AmruthPillai/Reactive-Resume/commit/972e8b1bcf9ad44d8915bf23d189711672937bc0))
|
||||
@ -18,7 +18,7 @@ You have complete control over what goes into your resume, how it looks, what co
|
||||
## Table of Contents
|
||||
|
||||
- [Reactive Resume](#reactive-resume)
|
||||
- [Go to App](https://rxresu.me) | [Docs](https://docs.rxresu.me)
|
||||
- [Go to App | [Docs](https://docs.rxresu.me)](#go-to-app--docs)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [Features](#features)
|
||||
- [Languages](#languages)
|
||||
|
||||
@ -1,9 +1,20 @@
|
||||
{
|
||||
"extends": ["../.eslintrc.json", "next/core-web-vitals"],
|
||||
"extends": ["../.eslintrc.json", "next/core-web-vitals", "plugin:tailwindcss/recommended"],
|
||||
"ignorePatterns": [".next", "__ENV.js"],
|
||||
"settings": {
|
||||
"next": {
|
||||
"rootDir": "client"
|
||||
}
|
||||
},
|
||||
"rules": {
|
||||
// Next.js
|
||||
"@next/next/no-img-element": "off",
|
||||
"@next/next/no-sync-scripts": "off",
|
||||
"@next/next/no-html-link-for-pages": ["error", "pages"]
|
||||
|
||||
// React Hooks
|
||||
"react-hooks/exhaustive-deps": "off",
|
||||
|
||||
// Tailwind CSS
|
||||
"tailwindcss/no-custom-classname": ["warn", { "whitelist": ["preview-mode", "printer-mode", "markdown"] }]
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,8 @@ import {
|
||||
FilterCenterFocus,
|
||||
InsertPageBreak,
|
||||
Link,
|
||||
RedoOutlined,
|
||||
UndoOutlined,
|
||||
ViewSidebar,
|
||||
ZoomIn,
|
||||
ZoomOut,
|
||||
@ -16,6 +18,7 @@ import { useTranslation } from 'next-i18next';
|
||||
import toast from 'react-hot-toast';
|
||||
import { useMutation } from 'react-query';
|
||||
import { ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';
|
||||
import { ActionCreators } from 'redux-undo';
|
||||
|
||||
import { ServerError } from '@/services/axios';
|
||||
import { printResumeAsPdf, PrintResumeAsPdfParams } from '@/services/printer';
|
||||
@ -31,14 +34,18 @@ const ArtboardController: React.FC<ReactZoomPanPinchRef> = ({ zoomIn, zoomOut, c
|
||||
const theme = useTheme();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const isDesktop = useMediaQuery(theme.breakpoints.up('sm'));
|
||||
const pages = useAppSelector((state) => state.resume.metadata.layout);
|
||||
|
||||
const { past, present: resume, future } = useAppSelector((state) => state.resume);
|
||||
const pages = get(resume, 'metadata.layout');
|
||||
const { left, right } = useAppSelector((state) => state.build.sidebar);
|
||||
const orientation = useAppSelector((state) => state.build.page.orientation);
|
||||
|
||||
const { mutateAsync, isLoading } = useMutation<string, ServerError, PrintResumeAsPdfParams>(printResumeAsPdf);
|
||||
|
||||
const handleUndo = () => dispatch(ActionCreators.undo());
|
||||
const handleRedo = () => dispatch(ActionCreators.redo());
|
||||
|
||||
const handleTogglePageBreakLine = () => dispatch(togglePageBreakLine());
|
||||
|
||||
const handleTogglePageOrientation = () => dispatch(togglePageOrientation());
|
||||
@ -75,6 +82,20 @@ const ArtboardController: React.FC<ReactZoomPanPinchRef> = ({ zoomIn, zoomOut, c
|
||||
})}
|
||||
>
|
||||
<div className={styles.controller}>
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.undo')}>
|
||||
<ButtonBase onClick={handleUndo} className={clsx({ 'pointer-events-none opacity-50': past.length < 2 })}>
|
||||
<UndoOutlined fontSize="medium" />
|
||||
</ButtonBase>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.redo')}>
|
||||
<ButtonBase onClick={handleRedo} className={clsx({ 'pointer-events-none opacity-50': future.length === 0 })}>
|
||||
<RedoOutlined fontSize="medium" />
|
||||
</ButtonBase>
|
||||
</Tooltip>
|
||||
|
||||
<Divider />
|
||||
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.zoom-in')}>
|
||||
<ButtonBase onClick={() => zoomIn(0.25)}>
|
||||
<ZoomIn fontSize="medium" />
|
||||
@ -97,17 +118,18 @@ const ArtboardController: React.FC<ReactZoomPanPinchRef> = ({ zoomIn, zoomOut, c
|
||||
|
||||
{isDesktop && (
|
||||
<>
|
||||
{pages.length > 1 && (
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.toggle-orientation')}>
|
||||
<ButtonBase onClick={handleTogglePageOrientation}>
|
||||
{orientation === 'vertical' ? (
|
||||
<AlignHorizontalCenter fontSize="medium" />
|
||||
) : (
|
||||
<AlignVerticalCenter fontSize="medium" />
|
||||
)}
|
||||
</ButtonBase>
|
||||
</Tooltip>
|
||||
)}
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.toggle-orientation')}>
|
||||
<ButtonBase
|
||||
onClick={handleTogglePageOrientation}
|
||||
className={clsx({ 'pointer-events-none opacity-50': pages.length === 1 })}
|
||||
>
|
||||
{orientation === 'vertical' ? (
|
||||
<AlignHorizontalCenter fontSize="medium" />
|
||||
) : (
|
||||
<AlignVerticalCenter fontSize="medium" />
|
||||
)}
|
||||
</ButtonBase>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip arrow placement="top" title={t<string>('builder.controller.tooltip.toggle-page-break-line')}>
|
||||
<ButtonBase onClick={handleTogglePageBreakLine}>
|
||||
|
||||
@ -13,7 +13,7 @@ import Page from './Page';
|
||||
const Center = () => {
|
||||
const orientation = useAppSelector((state) => state.build.page.orientation);
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
const layout: string[][][] = get(resume, 'metadata.layout');
|
||||
|
||||
if (isEmpty(resume)) return null;
|
||||
|
||||
@ -57,7 +57,7 @@ const Header = () => {
|
||||
|
||||
const { mutateAsync: deleteMutation } = useMutation<void, ServerError, DeleteResumeParams>(deleteResume);
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
const { left, right } = useAppSelector((state) => state.build.sidebar);
|
||||
|
||||
const name = useMemo(() => get(resume, 'name'), [resume]);
|
||||
|
||||
@ -27,6 +27,11 @@
|
||||
@apply hidden;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 1.5em;
|
||||
text-indent: -1.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.pageNumber {
|
||||
|
||||
@ -20,7 +20,7 @@ type Props = PageProps & {
|
||||
const Page: React.FC<Props> = ({ page, showPageNumbers = false }) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
const breakLine: boolean = useAppSelector((state) => state.build.page.breakLine);
|
||||
|
||||
const theme: Theme = get(resume, 'metadata.theme');
|
||||
|
||||
@ -25,7 +25,7 @@ const LeftSidebar = () => {
|
||||
|
||||
const isDesktop = useMediaQuery(theme.breakpoints.up('lg'));
|
||||
|
||||
const sections = useAppSelector((state) => state.resume.sections);
|
||||
const sections = useAppSelector((state) => state.resume.present.sections);
|
||||
const { open } = useAppSelector((state) => state.build.sidebar.left);
|
||||
|
||||
const customSections = useMemo(() => getCustomSections(sections), [sections]);
|
||||
@ -65,7 +65,7 @@ const LeftSidebar = () => {
|
||||
variant={isDesktop ? 'persistent' : 'temporary'}
|
||||
>
|
||||
<div className={styles.container}>
|
||||
<nav>
|
||||
<nav className="overflow-y-scroll">
|
||||
<div>
|
||||
<Link href="/dashboard">
|
||||
<a className="inline-flex">
|
||||
|
||||
@ -32,7 +32,7 @@ const Basics = () => {
|
||||
<PhotoUpload />
|
||||
</div>
|
||||
|
||||
<div className="grid gap-2 w-full sm:col-span-2">
|
||||
<div className="grid w-full gap-2 sm:col-span-2">
|
||||
<ResumeInput label={t<string>('builder.leftSidebar.sections.basics.name.label')} path="basics.name" />
|
||||
|
||||
<Button variant="outlined" startIcon={<PhotoFilter />} onClick={handleClick}>
|
||||
|
||||
@ -12,7 +12,7 @@ const PhotoFilters = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const photo: Photo = useAppSelector((state) => get(state.resume, 'basics.photo'));
|
||||
const photo: Photo = useAppSelector((state) => get(state.resume.present, 'basics.photo'));
|
||||
const size: number = get(photo, 'filters.size', 128);
|
||||
const shape: PhotoShape = get(photo, 'filters.shape', 'square');
|
||||
const grayscale: boolean = get(photo, 'filters.grayscale', false);
|
||||
|
||||
@ -21,8 +21,8 @@ const PhotoUpload: React.FC = () => {
|
||||
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const id: number = useAppSelector((state) => get(state.resume, 'id'));
|
||||
const photo: Photo = useAppSelector((state) => get(state.resume, 'basics.photo'));
|
||||
const id: number = useAppSelector((state) => get(state.resume.present, 'id'));
|
||||
const photo: Photo = useAppSelector((state) => get(state.resume.present, 'basics.photo'));
|
||||
|
||||
const { mutateAsync: uploadMutation, isLoading } = useMutation<Resume, ServerError, UploadPhotoParams>(uploadPhoto);
|
||||
|
||||
|
||||
@ -37,8 +37,8 @@ const Section: React.FC<Props> = ({
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector<string>((state) => get(state.resume, `${path}.name`, name));
|
||||
const visibility = useAppSelector<boolean>((state) => get(state.resume, `${path}.visible`, true));
|
||||
const heading = useAppSelector<string>((state) => get(state.resume.present, `${path}.name`, name));
|
||||
const visibility = useAppSelector<boolean>((state) => get(state.resume.present, `${path}.visible`, true));
|
||||
|
||||
const handleAdd = () => {
|
||||
const id = path.split('.')[1];
|
||||
|
||||
@ -18,7 +18,7 @@ const SectionSettings: React.FC<Props> = ({ path }) => {
|
||||
|
||||
const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);
|
||||
|
||||
const columns = useAppSelector<number>((state) => get(state.resume, `${path}.columns`, 2));
|
||||
const columns = useAppSelector<number>((state) => get(state.resume.present, `${path}.columns`, 2));
|
||||
|
||||
const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
||||
setAnchorEl(event.currentTarget);
|
||||
|
||||
@ -43,7 +43,7 @@ const RightSidebar = () => {
|
||||
variant={isDesktop ? 'persistent' : 'temporary'}
|
||||
>
|
||||
<div className={styles.container}>
|
||||
<nav>
|
||||
<nav className="overflow-y-scroll">
|
||||
<div>
|
||||
<Avatar size={40} />
|
||||
<Divider />
|
||||
|
||||
@ -17,7 +17,7 @@ const CustomCSS = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const customCSS: CustomCSSType = useAppSelector((state) => get(state.resume, 'metadata.css', {}));
|
||||
const customCSS: CustomCSSType = useAppSelector((state) => get(state.resume.present, 'metadata.css', {}));
|
||||
|
||||
const handleChange = (value: string | undefined) => {
|
||||
dispatch(setResumeState({ path: 'metadata.css.value', value }));
|
||||
|
||||
@ -13,7 +13,7 @@ import { useAppSelector } from '@/store/hooks';
|
||||
const Export = () => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
|
||||
const { mutateAsync, isLoading } = useMutation<string, ServerError, PrintResumeAsPdfParams>(printResumeAsPdf);
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { DragDropContext, Draggable, DraggableLocation, Droppable, DropResult } from '@hello-pangea/dnd';
|
||||
import { Add, Close, Restore } from '@mui/icons-material';
|
||||
import { Button, IconButton, Tooltip } from '@mui/material';
|
||||
import clsx from 'clsx';
|
||||
import cloneDeep from 'lodash/cloneDeep';
|
||||
import get from 'lodash/get';
|
||||
import { useTranslation } from 'next-i18next';
|
||||
import { DragDropContext, Draggable, DraggableLocation, Droppable, DropResult } from 'react-beautiful-dnd';
|
||||
|
||||
import Heading from '@/components/shared/Heading';
|
||||
import { useAppDispatch, useAppSelector } from '@/store/hooks';
|
||||
@ -23,8 +23,8 @@ const Layout = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const layout = useAppSelector((state) => state.resume.metadata.layout);
|
||||
const resumeSections = useAppSelector((state) => state.resume.sections);
|
||||
const layout = useAppSelector((state) => state.resume.present.metadata.layout);
|
||||
const resumeSections = useAppSelector((state) => state.resume.present.sections);
|
||||
|
||||
const onDragEnd = (dropResult: DropResult) => {
|
||||
const { source: srcLoc, destination: destLoc } = dropResult;
|
||||
|
||||
@ -38,9 +38,9 @@ const Settings = () => {
|
||||
|
||||
const [confirmReset, setConfirmReset] = useState(false);
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
const theme = useAppSelector((state) => state.build.theme);
|
||||
const pages = useAppSelector((state) => state.resume.metadata.layout);
|
||||
const pages = useAppSelector((state) => state.resume.present.metadata.layout);
|
||||
const breakLine = useAppSelector((state) => state.build.page.breakLine);
|
||||
const orientation = useAppSelector((state) => state.build.page.orientation);
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ const Sharing = () => {
|
||||
|
||||
const [showShortUrl, setShowShortUrl] = useState(false);
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
const isPublic = useMemo(() => get(resume, 'public'), [resume]);
|
||||
const url = useMemo(() => getResumeUrl(resume, { withHost: true }), [resume]);
|
||||
const shortUrl = useMemo(() => getResumeUrl(resume, { withHost: true, shortUrl: true }), [resume]);
|
||||
|
||||
@ -16,7 +16,7 @@ const Templates = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const currentTemplate: string = useAppSelector((state) => get(state.resume, 'metadata.template'));
|
||||
const currentTemplate: string = useAppSelector((state) => get(state.resume.present, 'metadata.template'));
|
||||
|
||||
const handleChange = (template: TemplateMeta) => {
|
||||
dispatch(setResumeState({ path: 'metadata.template', value: template.id }));
|
||||
@ -31,7 +31,7 @@ const Templates = () => {
|
||||
<div key={template.id} className={styles.template}>
|
||||
<div className={clsx(styles.preview, { [styles.selected]: template.id === currentTemplate })}>
|
||||
<ButtonBase onClick={() => handleChange(template)}>
|
||||
<Image src={template.preview} alt={template.name} className="rounded-sm" layout="fill" />
|
||||
<Image src={template.preview} alt={template.name} className="rounded-sm" layout="fill" priority />
|
||||
</ButtonBase>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
.container {
|
||||
@apply grid sm:grid-cols-2 gap-4;
|
||||
@apply grid gap-4 sm:grid-cols-2;
|
||||
}
|
||||
|
||||
.colorOptions {
|
||||
@apply col-span-2 mb-4;
|
||||
@apply grid grid-cols-8 gap-y-2 justify-items-center;
|
||||
@apply grid grid-cols-8 justify-items-center gap-y-2;
|
||||
}
|
||||
|
||||
@ -16,7 +16,9 @@ const Theme = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const { background, text, primary } = useAppSelector<ThemeType>((state) => get(state.resume, 'metadata.theme'));
|
||||
const { background, text, primary } = useAppSelector<ThemeType>((state) =>
|
||||
get(state.resume.present, 'metadata.theme')
|
||||
);
|
||||
|
||||
const handleChange = (property: string, color: string) => {
|
||||
dispatch(setResumeState({ path: `metadata.theme.${property}`, value: color[0] !== '#' ? `#${color}` : color }));
|
||||
|
||||
@ -33,7 +33,7 @@ const Widgets: React.FC<WidgetProps> = ({ label, category }) => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const { family, size } = useAppSelector<TypographyType>((state) => get(state.resume, 'metadata.typography'));
|
||||
const { family, size } = useAppSelector<TypographyType>((state) => get(state.resume.present, 'metadata.typography'));
|
||||
|
||||
const { data: fonts } = useQuery(FONTS_QUERY, fetchFonts, {
|
||||
select: (fonts) => fonts.sort((a, b) => a.category.localeCompare(b.category)),
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
.testimony {
|
||||
@apply grid gap-2;
|
||||
@apply border-2 rounded p-4 dark:border-neutral-800;
|
||||
@apply rounded border-2 p-4 dark:border-neutral-800;
|
||||
|
||||
blockquote {
|
||||
@apply text-xs leading-normal text-justify opacity-90;
|
||||
@apply text-justify text-xs leading-normal opacity-90;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
@apply sticky top-0 left-0 right-0 z-50 pt-6 bg-neutral-50 dark:bg-neutral-900;
|
||||
@apply sticky top-0 left-0 right-0 z-50 bg-neutral-50 pt-6 dark:bg-neutral-900;
|
||||
@apply flex items-center justify-between;
|
||||
@apply w-full border-b pb-5 dark:border-white/10;
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
}
|
||||
|
||||
.footer {
|
||||
@apply sticky bottom-0 left-0 right-0 z-50 pb-6 bg-neutral-50 dark:bg-neutral-900;
|
||||
@apply sticky bottom-0 left-0 right-0 z-50 bg-neutral-50 pb-6 dark:bg-neutral-900;
|
||||
@apply flex items-center justify-end gap-x-4;
|
||||
@apply w-full border-t pt-5 dark:border-white/10;
|
||||
}
|
||||
|
||||
@ -32,8 +32,8 @@ const Heading: React.FC<Props> = ({
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`, name));
|
||||
const visibility = useAppSelector((state) => get(state.resume, `${path}.visible`, true));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`, name));
|
||||
const visibility = useAppSelector((state) => get(state.resume.present, `${path}.visible`, true));
|
||||
|
||||
const [editMode, setEditMode] = useState(false);
|
||||
|
||||
|
||||
@ -9,5 +9,5 @@
|
||||
}
|
||||
|
||||
.language {
|
||||
@apply py-2 px-4 cursor-pointer text-center hover:underline;
|
||||
@apply cursor-pointer py-2 px-4 text-center hover:underline;
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ const List: React.FC<Props> = ({
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const list: Array<ListItemType> = useAppSelector((state) => get(state.resume, path, []));
|
||||
const list: Array<ListItemType> = useAppSelector((state) => get(state.resume.present, path, []));
|
||||
|
||||
const handleEdit = (item: ListItemType) => {
|
||||
isFunction(onEdit) && onEdit(item);
|
||||
|
||||
@ -5,6 +5,7 @@ import styles from './Loading.module.scss';
|
||||
|
||||
const Loading: React.FC = () => {
|
||||
const { isReady } = useRouter();
|
||||
|
||||
const isFetching = useIsFetching();
|
||||
const isMutating = useIsMutating();
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ interface Props {
|
||||
const ResumeInput: React.FC<Props> = ({ type = 'text', label, path, className, markdownSupported = false }) => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const stateValue = useAppSelector((state) => get(state.resume, path, ''));
|
||||
const stateValue = useAppSelector((state) => get(state.resume.present, path, ''));
|
||||
|
||||
useEffect(() => {
|
||||
setValue(stateValue);
|
||||
|
||||
@ -8,12 +8,14 @@ export const languages: Language[] = [
|
||||
{ code: 'ar', name: 'Arabic', localName: 'اَلْعَرَبِيَّةُ' },
|
||||
{ code: 'bg', name: 'Bulgarian', localName: 'български' },
|
||||
{ code: 'bn', name: 'Bengali', localName: 'বাংলা' },
|
||||
{ code: 'ca', name: 'Catalan', localName: 'Valencian' },
|
||||
{ code: 'cs', name: 'Czech', localName: 'čeština' },
|
||||
{ code: 'da', name: 'Danish', localName: 'Dansk' },
|
||||
{ code: 'de', name: 'German', localName: 'Deutsch' },
|
||||
{ code: 'el', name: 'Greek', localName: 'Ελληνικά' },
|
||||
{ code: 'en', name: 'English' },
|
||||
{ code: 'es', name: 'Spanish', localName: 'Español' },
|
||||
{ code: 'fa', name: 'Persian', localName: 'فارسی' },
|
||||
{ code: 'fi', name: 'Finnish', localName: 'Suomi' },
|
||||
{ code: 'fr', name: 'French', localName: 'Français' },
|
||||
{ code: 'he', name: 'Hebrew', localName: 'Ivrit' },
|
||||
@ -21,17 +23,23 @@ export const languages: Language[] = [
|
||||
{ code: 'hu', name: 'Hungarian', localName: 'Magyar' },
|
||||
{ code: 'id', name: 'Indonesian', localName: 'Bahasa Indonesia' },
|
||||
{ code: 'it', name: 'Italian', localName: 'Italiano' },
|
||||
{ code: 'ja', name: 'Japanese', localName: '日本語' },
|
||||
{ code: 'km', name: 'Khmer', localName: 'ភាសាខ្មែរ' },
|
||||
{ code: 'kn', name: 'Kannada', localName: 'ಕನ್ನಡ' },
|
||||
{ code: 'ml', name: 'Malayalam', localName: 'മലയാളം' },
|
||||
{ code: 'ne', name: 'Nepali', localName: 'नेपाली' },
|
||||
{ code: 'nl', name: 'Dutch', localName: 'Nederlands' },
|
||||
{ code: 'no', name: 'Norwegian', localName: 'Norsk' },
|
||||
{ code: 'or', name: 'Odia', localName: 'ଓଡ଼ିଆ' },
|
||||
{ code: 'fa', name: 'Persian', localName: 'Farsi' },
|
||||
{ code: 'pl', name: 'Polish', localName: 'Polski' },
|
||||
{ code: 'pt', name: 'Portuguese', localName: 'Português' },
|
||||
{ code: 'ro', name: 'Romanian', localName: 'limba română' },
|
||||
{ code: 'ru', name: 'Russian', localName: 'русский' },
|
||||
{ code: 'sr', name: 'Serbian', localName: 'српски језик' },
|
||||
{ code: 'sv', name: 'Swedish', localName: 'Svenska' },
|
||||
{ code: 'ta', name: 'Tamil', localName: 'தமிழ்' },
|
||||
{ code: 'tr', name: 'Turkish', localName: 'Türkçe' },
|
||||
{ code: 'uk', name: 'Ukranian', localName: 'Українська мова' },
|
||||
{ code: 'vi', name: 'Vietnamese', localName: 'Tiếng Việt' },
|
||||
{ code: 'zh', name: 'Chinese', localName: '中文' },
|
||||
].sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
@ -44,7 +44,7 @@ const AwardModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -44,7 +44,7 @@ const CertificateModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ const CustomModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal['builder.sections.custom']);
|
||||
|
||||
const path: string = get(payload, 'path', '');
|
||||
|
||||
@ -57,7 +57,7 @@ const EducationModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -35,7 +35,7 @@ const InterestModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -36,7 +36,7 @@ const LanguageModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -53,7 +53,7 @@ const ProjectModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -44,7 +44,7 @@ const PublicationModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -41,7 +41,7 @@ const ReferenceModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -39,7 +39,7 @@ const SkillModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -50,7 +50,7 @@ const VolunteerModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -50,7 +50,7 @@ const WorkModal: React.FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const heading = useAppSelector((state) => get(state.resume, `${path}.name`));
|
||||
const heading = useAppSelector((state) => get(state.resume.present, `${path}.name`));
|
||||
const { open: isOpen, payload } = useAppSelector((state) => state.modal[`builder.${path}`]);
|
||||
|
||||
const item: FormData = get(payload, 'item', null);
|
||||
|
||||
@ -69,7 +69,8 @@ const CreateResumeModal: React.FC = () => {
|
||||
try {
|
||||
await mutateAsync({ name, slug, public: isPublic });
|
||||
|
||||
queryClient.invalidateQueries(RESUMES_QUERY);
|
||||
await queryClient.invalidateQueries(RESUMES_QUERY);
|
||||
|
||||
handleClose();
|
||||
} catch (error: any) {
|
||||
toast.error(error.message);
|
||||
|
||||
@ -7,6 +7,7 @@ const i18nConfig = {
|
||||
'ar',
|
||||
'bg',
|
||||
'bn',
|
||||
'ca',
|
||||
'cs',
|
||||
'da',
|
||||
'de',
|
||||
@ -21,16 +22,23 @@ const i18nConfig = {
|
||||
'hu',
|
||||
'id',
|
||||
'it',
|
||||
'ja',
|
||||
'km',
|
||||
'kn',
|
||||
'ml',
|
||||
'ne',
|
||||
'nl',
|
||||
'no',
|
||||
'or',
|
||||
'pl',
|
||||
'pt',
|
||||
'ro',
|
||||
'ru',
|
||||
'sr',
|
||||
'sv',
|
||||
'ta',
|
||||
'tr',
|
||||
'uk',
|
||||
'vi',
|
||||
'zh',
|
||||
],
|
||||
|
||||
@ -13,13 +13,14 @@
|
||||
"@emotion/css": "^11.10.0",
|
||||
"@emotion/react": "^11.10.0",
|
||||
"@emotion/styled": "^11.10.0",
|
||||
"@hello-pangea/dnd": "^16.0.0",
|
||||
"@hookform/resolvers": "2.9.7",
|
||||
"@monaco-editor/react": "^4.4.5",
|
||||
"@mui/icons-material": "^5.8.4",
|
||||
"@mui/lab": "^5.0.0-alpha.95",
|
||||
"@mui/material": "^5.10.1",
|
||||
"@mui/system": "^5.10.1",
|
||||
"@mui/x-date-pickers": "5.0.0-beta.6",
|
||||
"@mui/icons-material": "^5.10.2",
|
||||
"@mui/lab": "^5.0.0-alpha.96",
|
||||
"@mui/material": "^5.10.2",
|
||||
"@mui/system": "^5.10.2",
|
||||
"@mui/x-date-pickers": "5.0.0-beta.7",
|
||||
"@next/env": "^12.2.5",
|
||||
"@react-oauth/google": "^0.2.6",
|
||||
"@reduxjs/toolkit": "^1.8.5",
|
||||
@ -34,12 +35,11 @@
|
||||
"nanoid": "^3.3.4",
|
||||
"next": "12.2.5",
|
||||
"next-i18next": "^12.0.0",
|
||||
"react": "18",
|
||||
"react-beautiful-dnd": "^13.1.0",
|
||||
"react": "^18.2.0",
|
||||
"react-colorful": "^5.6.1",
|
||||
"react-dnd": "16.0.1",
|
||||
"react-dnd-html5-backend": "16.0.1",
|
||||
"react-dom": "18",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-hook-form": "^7.34.2",
|
||||
"react-hot-toast": "2.3.0",
|
||||
"react-hotkeys-hook": "^3.4.7",
|
||||
@ -51,36 +51,33 @@
|
||||
"redux": "^4.2.0",
|
||||
"redux-persist": "^6.0.0",
|
||||
"redux-saga": "^1.2.1",
|
||||
"redux-undo": "^1.0.1",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"sharp": "^0.30.7",
|
||||
"uuid": "^8.3.2",
|
||||
"webfontloader": "^1.6.28"
|
||||
},
|
||||
"resolutions": {
|
||||
"@types/react": "18",
|
||||
"@types/react-dom": "18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.18.10",
|
||||
"@babel/core": "^7.18.13",
|
||||
"@reactive-resume/schema": "workspace:*",
|
||||
"@tailwindcss/typography": "^0.5.4",
|
||||
"@types/downloadjs": "^1.4.3",
|
||||
"@types/lodash": "^4.14.184",
|
||||
"@types/node": "18.7.9",
|
||||
"@types/react": "18",
|
||||
"@types/react-beautiful-dnd": "^13.1.2",
|
||||
"@types/react-dom": "18",
|
||||
"@types/node": "^18.7.13",
|
||||
"@types/react": "^18.0.17",
|
||||
"@types/react-dom": "^18.0.6",
|
||||
"@types/react-redux": "^7.1.24",
|
||||
"@types/tailwindcss": "^3.0.11",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@types/webfontloader": "^1.6.34",
|
||||
"autoprefixer": "^10.4.8",
|
||||
"csstype": "^3.1.0",
|
||||
"eslint-config-next": "12.2.5",
|
||||
"eslint-config-next": "^12.2.5",
|
||||
"eslint-plugin-tailwindcss": "^3.6.0",
|
||||
"next-sitemap": "^3.1.21",
|
||||
"postcss": "^8.4.16",
|
||||
"sass": "^1.54.5",
|
||||
"tailwindcss": "^3.1.8",
|
||||
"typescript": "^4.7.4"
|
||||
"typescript": "^4.8.2"
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ const Preview: NextPage<Props> = ({ username, slug, resume: initialData }) => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
|
||||
useEffect(() => {
|
||||
if (initialData && !isEmpty(initialData)) {
|
||||
|
||||
@ -56,7 +56,7 @@ export const getServerSideProps: GetServerSideProps<Props | Promise<Props>, Quer
|
||||
const Printer: NextPage<Props> = ({ resume: initialData, locale }) => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
const resume = useAppSelector((state) => state.resume.present);
|
||||
|
||||
useEffect(() => {
|
||||
if (initialData) dispatch(setResume(initialData));
|
||||
|
||||
@ -4,7 +4,9 @@ import Head from 'next/head';
|
||||
import Link from 'next/link';
|
||||
import { useTranslation } from 'next-i18next';
|
||||
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
|
||||
import { useEffect } from 'react';
|
||||
import { useQuery } from 'react-query';
|
||||
import { ActionCreators } from 'redux-undo';
|
||||
|
||||
import ResumeCard from '@/components/dashboard/ResumeCard';
|
||||
import ResumePreview from '@/components/dashboard/ResumePreview';
|
||||
@ -12,6 +14,7 @@ import Avatar from '@/components/shared/Avatar';
|
||||
import Logo from '@/components/shared/Logo';
|
||||
import { RESUMES_QUERY } from '@/constants/index';
|
||||
import { fetchResumes } from '@/services/resume';
|
||||
import { useAppDispatch } from '@/store/hooks';
|
||||
import styles from '@/styles/pages/Dashboard.module.scss';
|
||||
|
||||
export const getStaticProps: GetStaticProps = async ({ locale = 'en' }) => {
|
||||
@ -25,8 +28,14 @@ export const getStaticProps: GetStaticProps = async ({ locale = 'en' }) => {
|
||||
const Dashboard: NextPage = () => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const { data } = useQuery(RESUMES_QUERY, fetchResumes);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(ActionCreators.clearHistory());
|
||||
}, []);
|
||||
|
||||
if (!data) return null;
|
||||
|
||||
return (
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { NextPage } from 'next';
|
||||
|
||||
const PrivacyPolicy: NextPage = () => (
|
||||
<div className="mx-auto my-12 prose dark:prose-invert">
|
||||
<div className="prose mx-auto my-12 dark:prose-invert">
|
||||
<h1>Privacy Policy</h1>
|
||||
|
||||
<p>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { NextPage } from 'next';
|
||||
|
||||
const TermsOfService: NextPage = () => (
|
||||
<div className="mx-auto my-12 prose dark:prose-invert">
|
||||
<div className="prose mx-auto my-12 dark:prose-invert">
|
||||
<h1>Terms of Service</h1>
|
||||
|
||||
<p>
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "تبديل سطر الصفحة",
|
||||
"toggle-sidebars": "تبديل الشريط الجانبي",
|
||||
"zoom-in": "تكبير",
|
||||
"zoom-out": "تصغير"
|
||||
"zoom-out": "تصغير",
|
||||
"undo": "الغاء التحميل",
|
||||
"redo": "إعادة"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Линия за прекъсване на страницата",
|
||||
"toggle-sidebars": "Включване на страничната лента",
|
||||
"zoom-in": "Увеличи",
|
||||
"zoom-out": "Намали"
|
||||
"zoom-out": "Намали",
|
||||
"undo": "Отмяна на",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "পৃষ্ঠা বিরতি লাইন টগল করুন",
|
||||
"toggle-sidebars": "সাইডবার টগল করুন",
|
||||
"zoom-in": "বড় কর",
|
||||
"zoom-out": "ছোট করা"
|
||||
"zoom-out": "ছোট করা",
|
||||
"undo": "পূর্বাবস্থায় ফেরান",
|
||||
"redo": "আবার করুন"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
363
client/public/locales/ca/builder.json
Normal file
363
client/public/locales/ca/builder.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "Afegeix nou {{token}}",
|
||||
"delete": "Suprimeix {{token}}",
|
||||
"edit": "Edita {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "Columnes",
|
||||
"tooltip": "Canvia el nombre de columnes"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "Data"
|
||||
},
|
||||
"description": {
|
||||
"label": "Descripció"
|
||||
},
|
||||
"email": {
|
||||
"label": "Correu electrònic"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "Deixeu aquest camp en blanc, si encara està present",
|
||||
"label": "Data de finalització"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "Paraules clau"
|
||||
},
|
||||
"level": {
|
||||
"label": "Nivell"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "Nivell (nombre)"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nom"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Número de telèfon"
|
||||
},
|
||||
"position": {
|
||||
"label": "Posició"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "Data d'inici"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "Subtítol"
|
||||
},
|
||||
"summary": {
|
||||
"label": "Resum"
|
||||
},
|
||||
"title": {
|
||||
"label": "Títol"
|
||||
},
|
||||
"url": {
|
||||
"label": "Pàgina web"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "Pàgina"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "Elimina",
|
||||
"duplicate": "Duplica",
|
||||
"edit": "Edita"
|
||||
},
|
||||
"empty-text": "Aquesta llista està buida."
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "Estàs segur que vols esborrar aquest element? Aquesta acció és irreversible.",
|
||||
"delete-section": "Suprimeix una secció",
|
||||
"rename-section": "Canvia el nom de la secció",
|
||||
"toggle-visibility": "Commuta la visibilitat"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "Centrar tauler de dibuix",
|
||||
"copy-link": "Copia l'enllaç al currículum",
|
||||
"export-pdf": "Exporta com a PDF",
|
||||
"toggle-orientation": "Commuta l'orientació de la pàgina",
|
||||
"toggle-page-break-line": "Commuta la línia de salt de pàgina",
|
||||
"toggle-sidebars": "Mostra o oculta la barra lateral",
|
||||
"zoom-in": "Amplia",
|
||||
"zoom-out": "Allunya",
|
||||
"undo": "Desfer",
|
||||
"redo": "Refer"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "Elimina",
|
||||
"duplicate": "Duplica",
|
||||
"rename": "Canvia el nom",
|
||||
"share-link": "Comparteix l'enllaç",
|
||||
"tooltips": {
|
||||
"delete": "Estàs segur que vols esborrar aquest currículum? Aquesta acció és irreversible.",
|
||||
"share-link": "Heu de canviar la visibilitat del vostre currículum a pública per fer-lo visible per als altres."
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "Otorgat per"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "Filtres fotogràfics"
|
||||
},
|
||||
"heading": "Bàsics",
|
||||
"headline": {
|
||||
"label": "Títol"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nom complet"
|
||||
},
|
||||
"birthdate": {
|
||||
"label": "Data de naixement"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "Vora"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "Escala de grisos"
|
||||
},
|
||||
"heading": "Efectes"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "Forma"
|
||||
},
|
||||
"size": {
|
||||
"heading": "Mida (en px)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "Esborrar foto",
|
||||
"upload": "Pugeu la foto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "Emissor"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "Àrea d'estudi"
|
||||
},
|
||||
"courses": {
|
||||
"label": "Cursos"
|
||||
},
|
||||
"degree": {
|
||||
"label": "Graus"
|
||||
},
|
||||
"grade": {
|
||||
"label": "Qualificació"
|
||||
},
|
||||
"institution": {
|
||||
"label": "Institució"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "Adreça"
|
||||
},
|
||||
"city": {
|
||||
"label": "Ciutat"
|
||||
},
|
||||
"country": {
|
||||
"label": "País"
|
||||
},
|
||||
"heading": "Ubicació",
|
||||
"postal-code": {
|
||||
"label": "Codi Postal"
|
||||
},
|
||||
"region": {
|
||||
"label": "Regió"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "Xarxa"
|
||||
},
|
||||
"username": {
|
||||
"label": "Nom d'usuari"
|
||||
}
|
||||
},
|
||||
"heading": "Perfils",
|
||||
"heading_one": "Perfil"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "Editor"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "Relació"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "Secció"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "Organització"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "CSS personalitzat"
|
||||
},
|
||||
"export": {
|
||||
"heading": "Exporta",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "Baixeu una versió JSON del vostre currículum que es pot tornar a importar a Reactive Resume."
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "Generació de PDF",
|
||||
"secondary": "Si us plau, espereu mentre es generi el vostre PDF; això pot trigar fins a 15 segons."
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "Descarrega un PDF del teu currículum que pots imprimir i enviar a la feina dels teus somnis. Aquest fitxer no es pot tornar a importar per editar-lo més."
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "Disseny",
|
||||
"tooltip": {
|
||||
"reset-layout": "Restableix el disseny"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "Alguna cosa t'impedeix fer un currículum? O tens una idea sorprenent per afegir? Planteja un problema a GitHub per començar.",
|
||||
"button": "Problemes de GitHub",
|
||||
"heading": "Errors? Sol·licituds de funcions?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "Si us ha agradat utilitzar Reactive Resume, considereu donar tant com pugueu per mantenir l'aplicació en funcionament, sense anuncis i gratuïta per sempre.",
|
||||
"button": "Compra'm un cafè",
|
||||
"heading": "Dona a Reactive Curriculum vitae"
|
||||
},
|
||||
"github": "Codi font",
|
||||
"heading": "Enllaços"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "Data",
|
||||
"secondary": "Format de data per utilitzar a l'aplicació"
|
||||
},
|
||||
"heading": "Global",
|
||||
"language": {
|
||||
"primary": "Llenguatge",
|
||||
"secondary": "Mostra l'idioma per utilitzar a l'aplicació"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "Tema"
|
||||
}
|
||||
},
|
||||
"heading": "Configuració",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "Línia de trencament",
|
||||
"secondary": "Mostra una línia a totes les pàgines per marcar l'alçada d'una pàgina A4"
|
||||
},
|
||||
"heading": "Pàgina",
|
||||
"orientation": {
|
||||
"disabled": "No té efecte quan només hi ha una pàgina",
|
||||
"primary": "Orientació",
|
||||
"secondary": "Si voleu mostrar les pàgines horitzontalment o verticalment"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "Resum",
|
||||
"reset": {
|
||||
"primary": "Restablir-ho tot",
|
||||
"secondary": "S'ha equivocat massa? Feu clic aquí per restablir tots els canvis i començar des de zero. Aneu amb compte, aquesta acció no es pot revertir."
|
||||
},
|
||||
"sample": {
|
||||
"primary": "Carregueu dades de mostra",
|
||||
"secondary": "No saps per on començar? Feu clic aquí per carregar algunes dades de mostra per veure com es veu un currículum complet."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "Compartint",
|
||||
"short-url": {
|
||||
"label": "Prefereix URL curt"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "Permet que qualsevol persona amb un enllaç vegi el teu currículum",
|
||||
"title": "Públic"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "Plantilles"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "Fons"
|
||||
},
|
||||
"primary": {
|
||||
"label": "primària"
|
||||
},
|
||||
"text": {
|
||||
"label": "Text"
|
||||
}
|
||||
},
|
||||
"heading": "Tema"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "Família de lletres"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "Mida de la font"
|
||||
}
|
||||
},
|
||||
"heading": "Tipografia",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "Cos"
|
||||
},
|
||||
"headings": {
|
||||
"label": "Encapçalaments"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
client/public/locales/ca/common.json
Normal file
29
client/public/locales/ca/common.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"avatar": {
|
||||
"menu": {
|
||||
"greeting": "Hola",
|
||||
"logout": "Tancar sessió"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Un projecte de passió d'<1>Amruth Pillai</1>",
|
||||
"license": "Per la comunitat, per a la comunitat."
|
||||
},
|
||||
"markdown": {
|
||||
"help-text": "Aquesta secció admet <1>reducció</1> formatació."
|
||||
},
|
||||
"date": {
|
||||
"present": "Present"
|
||||
},
|
||||
"subtitle": "Un creador de currículums gratuït i de codi obert.",
|
||||
"title": "Currículum reactiu",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "Pengeu només fitxers de menys de 2 megabytes.",
|
||||
"upload-photo-size": "Pengeu només fotos de menys de 2 megabytes, preferiblement quadrades."
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "S'ha copiat un enllaç al vostre currículum al porta-retalls."
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/ca/dashboard.json
Normal file
25
client/public/locales/ca/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "Començar de zero",
|
||||
"title": "Crea un currículum nou"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn, currículum JSON, currículum reactiu",
|
||||
"title": "Importa des de fonts externes"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "Suprimeix",
|
||||
"duplicate": "Duplicat",
|
||||
"open": "Obert",
|
||||
"rename": "Canvia el nom",
|
||||
"share-link": "Compartir Enllaç",
|
||||
"tooltips": {
|
||||
"delete": "Esteu segur que voleu suprimir aquest currículum? Aquesta és una acció irreversible.",
|
||||
"share-link": "Heu de canviar la visibilitat del vostre currículum a pública per fer-lo visible per als altres."
|
||||
}
|
||||
},
|
||||
"timestamp": "Última actualització fa {{timestamp}}"
|
||||
},
|
||||
"title": "panell"
|
||||
}
|
||||
41
client/public/locales/ca/landing.json
Normal file
41
client/public/locales/ca/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "Vés a l'aplicació",
|
||||
"login": "iniciar Sessió",
|
||||
"logout": "Tancar sessió",
|
||||
"register": "Registra't"
|
||||
},
|
||||
"features": {
|
||||
"heading": "Característiques",
|
||||
"list": {
|
||||
"ads": "No hi ha publicitat",
|
||||
"export": "Exporteu el vostre currículum a format JSON o PDF",
|
||||
"free": "Lliure, per sempre",
|
||||
"import": "Importeu dades de LinkedIn, Currículum JSON",
|
||||
"languages": "Accessible en diversos idiomes",
|
||||
"more": "I moltes més funcions interessants, <1>llegiu-ne tot aquí</1>",
|
||||
"tracking": "Sense seguiment d'usuaris"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "Enllaços",
|
||||
"links": {
|
||||
"donate": "Donar",
|
||||
"github": "Codi font",
|
||||
"privacy": "Política de privacitat",
|
||||
"service": "Termes del servei"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "Captures de pantalla"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "Testimonis",
|
||||
"body": "Bo o dolent, m'encantaria saber la teva opinió sobre Reactive Curriculum vitae i com ha estat l'experiència per a tu.<br/>Aquests són alguns dels missatges enviats pels usuaris de tot el món.",
|
||||
"contact": "Podeu posar-vos en contacte amb mi mitjançant <1>el meu correu electrònic</1> o mitjançant el formulari de contacte al <3>el meu lloc web</3> ."
|
||||
},
|
||||
"summary": {
|
||||
"body": "Reactive Resume és un creador de currículums gratuït i de codi obert que s'ha creat per fer que les tasques mundanes de crear, actualitzar i compartir el vostre currículum siguin tan fàcils com 1, 2, 3. Amb aquesta aplicació, podeu crear diversos currículums, compartir-los amb reclutadors o amics. mitjançant un enllaç únic i imprimiu-lo com a PDF, tot de franc, sense anuncis, sense seguiment, sense perdre la integritat i la privadesa de les vostres dades.",
|
||||
"heading": "Resum"
|
||||
}
|
||||
}
|
||||
135
client/public/locales/ca/modals.json
Normal file
135
client/public/locales/ca/modals.json
Normal file
@ -0,0 +1,135 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "Envieu un correu electrònic de restabliment de la contrasenya"
|
||||
},
|
||||
"body": "Només cal que introduïu l'adreça de correu electrònic associada al compte que voleu recuperar.",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "Correu electrònic"
|
||||
}
|
||||
},
|
||||
"heading": "Has oblidat la teva contrasenya?",
|
||||
"help-text": "Si el compte existeix, rebràs un correu electrònic amb un enllaç per restablir la teva contrasenya."
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "iniciar Sessió"
|
||||
},
|
||||
"body": "Introduïu el vostre nom d'usuari i contrasenya associats al vostre compte per iniciar sessió i accedir, gestionar i compartir els vostres currículums.",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "Contrasenya"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "També podeu introduir la vostra adreça de correu electrònic",
|
||||
"label": "Nom d'usuari"
|
||||
}
|
||||
},
|
||||
"heading": "Inicieu sessió al vostre compte",
|
||||
"recover-text": "En cas que hagis oblidat la teva contrasenya, pots <1>recuperar el teu compte</1> aquí.",
|
||||
"register-text": "Si no en teniu cap, podeu <1>crear un compte</1> aquí."
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "Registra't",
|
||||
"google": "Registra't a Google"
|
||||
},
|
||||
"body": "Introduïu la vostra informació personal per crear un compte.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Confirma la contrassenya"
|
||||
},
|
||||
"email": {
|
||||
"label": "Correu electrònic"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nom complet"
|
||||
},
|
||||
"password": {
|
||||
"label": "Contrasenya"
|
||||
},
|
||||
"username": {
|
||||
"label": "Nom d'usuari"
|
||||
}
|
||||
},
|
||||
"heading": "Crear un compte",
|
||||
"loginText": "Si ja teniu un compte, podeu <1>iniciar sessió aquí</1> ."
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "Estableix una contrasenya nova"
|
||||
},
|
||||
"body": "Introduïu una contrasenya nova per al vostre compte.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Confirma la contrassenya"
|
||||
},
|
||||
"password": {
|
||||
"label": "Contrasenya"
|
||||
}
|
||||
},
|
||||
"heading": "Restablir la contrasenya"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "Crea un currículum"
|
||||
},
|
||||
"body": "Comenceu a crear el vostre currículum posant-li un nom. Pot ser en referència a la funció que esteu sol·licitant, o només al vostre berenar preferit.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Nom"
|
||||
},
|
||||
"public": {
|
||||
"label": "És accessible públicament?"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Llimac"
|
||||
}
|
||||
},
|
||||
"heading": "Crea un currículum nou"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "Importa des de fonts externes",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "Carregueu JSON"
|
||||
},
|
||||
"body": "Si teniu un currículum JSON <1>validat</1> a punt per començar, podeu utilitzar-lo per accelerar el vostre desenvolupament a Reactive Resume. Feu clic al botó següent i carregueu un fitxer JSON vàlid per començar.",
|
||||
"heading": "Importa des del currículum JSON"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "Carregueu l'arxiu ZIP"
|
||||
},
|
||||
"body": "Podeu estalviar temps exportant les vostres dades de LinkedIn i utilitzant-les per omplir automàticament els camps de Reactive Resume. Aneu a <1>Privadesa de dades</1> secció a LinkedIn i sol·liciteu un arxiu de les vostres dades. Un cop estigui disponible, carregueu el fitxer ZIP a continuació.",
|
||||
"heading": "Importa des de LinkedIn"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "Carregueu JSON",
|
||||
"upload-json-v2": "Carregueu JSON des de la v2"
|
||||
},
|
||||
"body": "Si teniu un JSON que s'ha exportat amb la versió actual de Reactive Resume, podeu tornar-lo a importar aquí per tornar a obtenir una versió editable.",
|
||||
"heading": "Importa des del currículum reactiu"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "Canvia el nom del currículum"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Nom"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Llimac"
|
||||
}
|
||||
},
|
||||
"heading": "Canvieu el nom del vostre currículum"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Přepnout řádek zalomení stránky",
|
||||
"toggle-sidebars": "Přepnout boční panely",
|
||||
"zoom-in": "Přiblížit",
|
||||
"zoom-out": "Oddálit"
|
||||
"zoom-out": "Oddálit",
|
||||
"undo": "Zrušit",
|
||||
"redo": "Přepracovat"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Skift sideskiftlinje",
|
||||
"toggle-sidebars": "Sidebjælke til/fra",
|
||||
"zoom-in": "Zoom ind",
|
||||
"zoom-out": "Zoom ud"
|
||||
"zoom-out": "Zoom ud",
|
||||
"undo": "Fortryd",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Pausenzeile umschalten",
|
||||
"toggle-sidebars": "Seitenleisten umschalten",
|
||||
"zoom-in": "Vergrößern",
|
||||
"zoom-out": "Verkleinern"
|
||||
"zoom-out": "Verkleinern",
|
||||
"undo": "Rückgängig machen",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Εναλλαγή γραμμής αλλαγής σελίδας",
|
||||
"toggle-sidebars": "Εναλλαγή πλευρικών γραμμών",
|
||||
"zoom-in": "Μεγέθυνση",
|
||||
"zoom-out": "Σμίκρυνση"
|
||||
"zoom-out": "Σμίκρυνση",
|
||||
"undo": "Αναίρεση",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Toggle Page Break Line",
|
||||
"toggle-sidebars": "Toggle Sidebars",
|
||||
"zoom-in": "Zoom In",
|
||||
"zoom-out": "Zoom Out"
|
||||
"zoom-out": "Zoom Out",
|
||||
"undo": "Undo",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Alternar línea de salto de página",
|
||||
"toggle-sidebars": "Ocultar/mostrar barra lateral",
|
||||
"zoom-in": "Acercar",
|
||||
"zoom-out": "Alejar"
|
||||
"zoom-out": "Alejar",
|
||||
"undo": "Deshacer",
|
||||
"redo": "Rehacer"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "تغییر وضعیت خط شکست صفحه",
|
||||
"toggle-sidebars": "باز/بسته کردن نوار کنار صفحه",
|
||||
"zoom-in": "بزرگنمایی",
|
||||
"zoom-out": "کوچکنمایی"
|
||||
"zoom-out": "کوچکنمایی",
|
||||
"undo": "واگرد",
|
||||
"redo": "دوباره انجام دهید"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Vaihda sivunvaihtoviivaa",
|
||||
"toggle-sidebars": "Vaihda Sivupalkkeja",
|
||||
"zoom-in": "Suurenna",
|
||||
"zoom-out": "Pienennä"
|
||||
"zoom-out": "Pienennä",
|
||||
"undo": "Kumoa",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Afficher/cacher l'indicateur de saut de page",
|
||||
"toggle-sidebars": "Afficher/cacher les barres latérales",
|
||||
"zoom-in": "Zoomer",
|
||||
"zoom-out": "Dézoomer"
|
||||
"zoom-out": "Dézoomer",
|
||||
"undo": "Défaire",
|
||||
"redo": "Refaire"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "החלף את קו מעבר עמוד",
|
||||
"toggle-sidebars": "החלף את סרגלי הצד",
|
||||
"zoom-in": "הגדל",
|
||||
"zoom-out": "הקטן"
|
||||
"zoom-out": "הקטן",
|
||||
"undo": "לבטל",
|
||||
"redo": "לַעֲשׂוֹת שׁוּב"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "टॉगल पेज ब्रेक लाइन",
|
||||
"toggle-sidebars": "साइडबार टॉगल करें",
|
||||
"zoom-in": "ज़ूम इन",
|
||||
"zoom-out": "ज़ूम आउट"
|
||||
"zoom-out": "ज़ूम आउट",
|
||||
"undo": "पूर्ववत",
|
||||
"redo": "फिर से करें"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Oldaltörés vonal váltása",
|
||||
"toggle-sidebars": "Az oldalsávok váltása",
|
||||
"zoom-in": "Nagyítás",
|
||||
"zoom-out": "Kicsinyítés"
|
||||
"zoom-out": "Kicsinyítés",
|
||||
"undo": "Undo",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Beralih Garis Pemisah Halaman",
|
||||
"toggle-sidebars": "Beralih Sidebar",
|
||||
"zoom-in": "Perbesar",
|
||||
"zoom-out": "Perkecil"
|
||||
"zoom-out": "Perkecil",
|
||||
"undo": "Batalkan",
|
||||
"redo": "Ulangi"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Mostra/Nascondi linea interruzione pagina",
|
||||
"toggle-sidebars": "Mostra/Nascondi barre laterali",
|
||||
"zoom-in": "Ingrandisci",
|
||||
"zoom-out": "Riduci"
|
||||
"zoom-out": "Riduci",
|
||||
"undo": "Annulla",
|
||||
"redo": "Rifare"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
363
client/public/locales/ja/builder.json
Normal file
363
client/public/locales/ja/builder.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "新規追加 {{token}}",
|
||||
"delete": "削除 {{token}}",
|
||||
"edit": "編集 {{token}}."
|
||||
},
|
||||
"columns": {
|
||||
"heading": "列",
|
||||
"tooltip": "列数の変更"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "日付"
|
||||
},
|
||||
"description": {
|
||||
"label": "概要"
|
||||
},
|
||||
"email": {
|
||||
"label": "メールアドレス"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "まだ存在する場合、このフィールドを空白のままにします。",
|
||||
"label": "終了日"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "キーワード"
|
||||
},
|
||||
"level": {
|
||||
"label": "レベル"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "レベル(数値)"
|
||||
},
|
||||
"name": {
|
||||
"label": "氏名"
|
||||
},
|
||||
"phone": {
|
||||
"label": "電話番号"
|
||||
},
|
||||
"position": {
|
||||
"label": "役職"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "開始日"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "サブタイトル"
|
||||
},
|
||||
"summary": {
|
||||
"label": "要約"
|
||||
},
|
||||
"title": {
|
||||
"label": "タイトル"
|
||||
},
|
||||
"url": {
|
||||
"label": "Webサイト"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "ページ"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "削除",
|
||||
"duplicate": "複製",
|
||||
"edit": "編集"
|
||||
},
|
||||
"empty-text": "このリストは空です。"
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "本当にこの項目を削除しますか?これは元に戻すことができない操作です。",
|
||||
"delete-section": "セクションを削除する",
|
||||
"rename-section": "セクションの名前を変更する",
|
||||
"toggle-visibility": "トグル・ビジビリティ"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "センターアートボード",
|
||||
"copy-link": "レジュメへのリンクをコピー",
|
||||
"export-pdf": "PDF形式でエクスポート",
|
||||
"toggle-orientation": "ページの向きを切り替える",
|
||||
"toggle-page-break-line": "改ページ線のトグル",
|
||||
"toggle-sidebars": "トグル・サイドバー",
|
||||
"zoom-in": "ズームイン",
|
||||
"zoom-out": "ズームアウト",
|
||||
"undo": "アンドゥ",
|
||||
"redo": "やり直し"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "削除",
|
||||
"duplicate": "デュプリケート",
|
||||
"rename": "リネーム",
|
||||
"share-link": "シェアリンク",
|
||||
"tooltips": {
|
||||
"delete": "本当にこのレジュメを削除しますか?これは不可逆的なアクションです。",
|
||||
"share-link": "レジュメを他の人に見てもらうためには、レジュメの表示方法を公開に変更する必要があります。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "賞罰"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "フォトフィルター"
|
||||
},
|
||||
"heading": "基本事項",
|
||||
"headline": {
|
||||
"label": "ヘッドライン"
|
||||
},
|
||||
"name": {
|
||||
"label": "フルネーム"
|
||||
},
|
||||
"birthdate": {
|
||||
"label": "生年月日"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "ボーダー"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "グレースケール"
|
||||
},
|
||||
"heading": "効果"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "形状"
|
||||
},
|
||||
"size": {
|
||||
"heading": "サイズ(単位:px)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "写真を削除する",
|
||||
"upload": "写真のアップロード"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "発行者"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "専攻分野"
|
||||
},
|
||||
"courses": {
|
||||
"label": "コース紹介"
|
||||
},
|
||||
"degree": {
|
||||
"label": "学位"
|
||||
},
|
||||
"grade": {
|
||||
"label": "グレード"
|
||||
},
|
||||
"institution": {
|
||||
"label": "インスティテューション"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "住所"
|
||||
},
|
||||
"city": {
|
||||
"label": "市区町村"
|
||||
},
|
||||
"country": {
|
||||
"label": "国"
|
||||
},
|
||||
"heading": "所在地",
|
||||
"postal-code": {
|
||||
"label": "郵便番号"
|
||||
},
|
||||
"region": {
|
||||
"label": "地域"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "ネットワーク"
|
||||
},
|
||||
"username": {
|
||||
"label": "ユーザー名"
|
||||
}
|
||||
},
|
||||
"heading": "プロフィール",
|
||||
"heading_one": "プロフィール"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "出版社"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "関係"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "セクション"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "組織"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "カスタムCSS"
|
||||
},
|
||||
"export": {
|
||||
"heading": "エクスポート",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "履歴書のJSONバージョンをダウンロードし、Reactive Resumeにインポートすることができます。"
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "PDF を生成中",
|
||||
"secondary": "PDFが生成されるまで、15秒程度かかる場合があります。"
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "履歴書のPDFをダウンロードして印刷し、憧れの職場に送りましょう。このファイルは、再度インポートして編集することはできません。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "レイアウト",
|
||||
"tooltip": {
|
||||
"reset-layout": "リセットレイアウト"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "レジュメを作るのを邪魔しているものがありますか?または、追加したい素晴らしいアイディアがありますか?GitHub で課題を出してください。",
|
||||
"button": "GitHubの課題",
|
||||
"heading": "バグ?機能要望?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "もしReactive Resumeを気に入って使っていただけたなら、このアプリを広告なしで、いつまでも無料で使い続けるために、できる限りの寄付をご検討ください。",
|
||||
"button": "コーヒーを買ってきて",
|
||||
"heading": "リアクティブ・レジュメに寄付をする"
|
||||
},
|
||||
"github": "ソースコード",
|
||||
"heading": "リンク集"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "日付",
|
||||
"secondary": "アプリ全体で使用する日付フォーマット"
|
||||
},
|
||||
"heading": "グローバル",
|
||||
"language": {
|
||||
"primary": "言語",
|
||||
"secondary": "アプリ全体で使用する表示言語"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "テーマ"
|
||||
}
|
||||
},
|
||||
"heading": "設定",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "ブレイクライン",
|
||||
"secondary": "A4ページの高さを示す線を全ページに表示する。"
|
||||
},
|
||||
"heading": "ページ",
|
||||
"orientation": {
|
||||
"disabled": "ページが1つしかない場合は効果がありません",
|
||||
"primary": "オリエンテーション",
|
||||
"secondary": "ページを水平に表示するか垂直に表示するか"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "レジュメ",
|
||||
"reset": {
|
||||
"primary": "すべてをリセットする",
|
||||
"secondary": "間違いが多いですか?ここをクリックすると、すべての変更がリセットされ、最初からやり直すことができます。この操作は元に戻せませんのでご注意ください。"
|
||||
},
|
||||
"sample": {
|
||||
"primary": "サンプルデータの読み込み",
|
||||
"secondary": "どこから始めればいいのかわからない?ここをクリックしてサンプルデータをロードし、完全な履歴書がどのように見えるかを確認してください。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "シェアリング",
|
||||
"short-url": {
|
||||
"label": "短いURLを希望"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "リンクで誰でもレジュメを閲覧できるようにする",
|
||||
"title": "公共"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "テンプレート"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "背景"
|
||||
},
|
||||
"primary": {
|
||||
"label": "プライマリー"
|
||||
},
|
||||
"text": {
|
||||
"label": "テキスト"
|
||||
}
|
||||
},
|
||||
"heading": "テーマ"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "フォントファミリー"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "文字サイズ"
|
||||
}
|
||||
},
|
||||
"heading": "タイポグラフィ",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "本体"
|
||||
},
|
||||
"headings": {
|
||||
"label": "見出し"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
client/public/locales/ja/common.json
Normal file
29
client/public/locales/ja/common.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"avatar": {
|
||||
"menu": {
|
||||
"greeting": "こんにちは",
|
||||
"logout": "ログアウト"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>アムルース・ピライの</1>情熱のプロジェクト",
|
||||
"license": "コミュニティによる、コミュニティのための。"
|
||||
},
|
||||
"markdown": {
|
||||
"help-text": "<1>マークダウンフォーマットに</1>対応しています。"
|
||||
},
|
||||
"date": {
|
||||
"present": "現在"
|
||||
},
|
||||
"subtitle": "フリーでオープンソースの履歴書作成ツール。",
|
||||
"title": "リアクティブ・レジュメ",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "2メガバイト以下のファイルのみアップロードしてください。",
|
||||
"upload-photo-size": "アップロードする写真は2メガバイト以下、正方形が望ましいです。"
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "あなたの履歴書へのリンクがクリップボードにコピーされました。"
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/ja/dashboard.json
Normal file
25
client/public/locales/ja/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "ゼロからのスタート",
|
||||
"title": "新しいレジュメの作成"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn、JSON Resume、Reactive Resume",
|
||||
"title": "外部からの取り込み"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "削除",
|
||||
"duplicate": "複製",
|
||||
"open": "開く",
|
||||
"rename": "名前を変更",
|
||||
"share-link": "リンクを共有",
|
||||
"tooltips": {
|
||||
"delete": "本当にこのレジュメを削除しますか?これは不可逆的な行為です。",
|
||||
"share-link": "レジュメを他の人に見てもらうためには、レジュメの表示方法を公開に変更する必要があります。"
|
||||
}
|
||||
},
|
||||
"timestamp": "最終更新 {{timestamp}} 前"
|
||||
},
|
||||
"title": "ダッシュボード"
|
||||
}
|
||||
41
client/public/locales/ja/landing.json
Normal file
41
client/public/locales/ja/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "アプリに移動する",
|
||||
"login": "ログイン",
|
||||
"logout": "ログアウト",
|
||||
"register": "登録"
|
||||
},
|
||||
"features": {
|
||||
"heading": "特徴",
|
||||
"list": {
|
||||
"ads": "広告なし",
|
||||
"export": "履歴書をJSONまたはPDF形式で書き出し",
|
||||
"free": "無料、永久",
|
||||
"import": "LinkedInからのデータインポート、JSON履歴書",
|
||||
"languages": "多言語でアクセス可能",
|
||||
"more": "さらに多くのエキサイティングな機能については、<1>こちらを</1>ご覧ください。",
|
||||
"tracking": "ユーザートラッキングなし"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "リンク集",
|
||||
"links": {
|
||||
"donate": "寄付",
|
||||
"github": "ソースコード",
|
||||
"privacy": "プライバシーポリシー",
|
||||
"service": "利用規約"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "スクリーンショット"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "お客様の声",
|
||||
"body": "良いことも悪いことも、Reactive Resumeを使用してみてどうだったか、あなたのご意見をお聞かせください。<br/>世界中のユーザーから寄せられたメッセージの一部をご紹介します。",
|
||||
"contact": "<1>私のメールや</1> <3>ホームページの</3>お問い合わせフォームからご連絡ください。"
|
||||
},
|
||||
"summary": {
|
||||
"body": "リアクティブ・レジュメは、履歴書の作成、更新、共有というありふれた作業を1、2、3のように簡単にするために作られた、無料かつオープンソースの履歴書作成ツールです。このアプリを使えば、複数の履歴書を作成し、ユニークなリンクを通じて採用担当者や友人と共有し、PDFとして印刷することができます。すべて無料、広告なし、トラッキングなし、データの整合性とプライバシーを失うことなく、履歴書を作成できます。",
|
||||
"heading": "要約"
|
||||
}
|
||||
}
|
||||
135
client/public/locales/ja/modals.json
Normal file
135
client/public/locales/ja/modals.json
Normal file
@ -0,0 +1,135 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "パスワードリセットメールを送信する"
|
||||
},
|
||||
"body": "復元したいアカウントに関連付けられているメールアドレスを入力してください",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "メールアドレス"
|
||||
}
|
||||
},
|
||||
"heading": "パスワードを忘れましたか?",
|
||||
"help-text": "アカウントが存在する場合、パスワードをリセットするためのリンクが記載されたメールが送信されます。"
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "ログイン"
|
||||
},
|
||||
"body": "アカウントに関連付けられたユーザー名とパスワードを入力してログインし、レジュメにアクセス、管理、共有することができます。",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "パスワード"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "また、メールアドレスを入力することもできます",
|
||||
"label": "ユーザー名"
|
||||
}
|
||||
},
|
||||
"heading": "ログイン",
|
||||
"recover-text": "パスワードをお忘れの場合は、こちらで<1>復旧</1>できます。",
|
||||
"register-text": "お持ちでない方は、こちらから<1>アカウントを作成して</1>ください。"
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "登録",
|
||||
"google": "Googleアカウントで登録"
|
||||
},
|
||||
"body": "個人情報を入力し、アカウントを作成してください。",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "パスワードの確認"
|
||||
},
|
||||
"email": {
|
||||
"label": "メールアドレス"
|
||||
},
|
||||
"name": {
|
||||
"label": "フルネーム"
|
||||
},
|
||||
"password": {
|
||||
"label": "パスワード"
|
||||
},
|
||||
"username": {
|
||||
"label": "ユーザー名"
|
||||
}
|
||||
},
|
||||
"heading": "アカウントを作成",
|
||||
"loginText": "すでにアカウントをお持ちの方は、<1>こちらからログイン</1>できます。"
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "新しいパスワードの設定"
|
||||
},
|
||||
"body": "アカウントの新しいパスワードを入力します。",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "パスワードの確認"
|
||||
},
|
||||
"password": {
|
||||
"label": "パスワード"
|
||||
}
|
||||
},
|
||||
"heading": "パスワードのリセット"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "履歴書の作成"
|
||||
},
|
||||
"body": "履歴書の作成は、名前をつけることから始めましょう。応募している職務にちなんだものでも、好きなお菓子にちなんだものでもよいでしょう。",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "名称"
|
||||
},
|
||||
"public": {
|
||||
"label": "一般に公開されているか?"
|
||||
},
|
||||
"slug": {
|
||||
"label": "スラッグ"
|
||||
}
|
||||
},
|
||||
"heading": "新しいレジュメを作成する"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "外部からの取り込み",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSONのアップロード"
|
||||
},
|
||||
"body": "<1>検証済みのJSON Resumeが</1>あれば、それを使ってReactive Resumeでの開発を迅速に進めることができます。下のボタンをクリックし、有効なJSONファイルをアップロードして開始してください。",
|
||||
"heading": "JSON履歴書からのインポート"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "ZIPアーカイブのアップロード"
|
||||
},
|
||||
"body": "LinkedInからデータをエクスポートして、Reactive Resumeのフィールドの自動入力に使用すると、時間を節約することができます。LinkedInの<1>データプライバシーセクションに</1>移動して、データのアーカイブをリクエストしてください。アーカイブが利用可能になったら、以下のZIPファイルをアップロードしてください。",
|
||||
"heading": "LinkedInからインポートする"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSONのアップロード",
|
||||
"upload-json-v2": "v2からのJSONのアップロード"
|
||||
},
|
||||
"body": "もし、現在のバージョンのReactive ResumeでエクスポートされたJSONがあれば、ここにインポートして、再び編集可能なバージョンを入手することができます。",
|
||||
"heading": "リアクティブレジュームからのインポート"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "リネーム・レジューム"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "名称"
|
||||
},
|
||||
"slug": {
|
||||
"label": "スラッグ"
|
||||
}
|
||||
},
|
||||
"heading": "履歴書の名前を変更する"
|
||||
}
|
||||
}
|
||||
}
|
||||
363
client/public/locales/km/builder.json
Normal file
363
client/public/locales/km/builder.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "បន្ថែមថ្មី {{token}}",
|
||||
"delete": "លុប {{token}}",
|
||||
"edit": "កែសម្រួល {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "ជួរឈរ",
|
||||
"tooltip": "ផ្លាស់ប្តូរចំនួនជួរឈរ"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "កាលបរិច្ឆេទ"
|
||||
},
|
||||
"description": {
|
||||
"label": "ការពិពណ៌នា"
|
||||
},
|
||||
"email": {
|
||||
"label": "អាស័យដ្ឋានអ៊ីម៉េល"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "មិនចាំបាច់បំពេញ ប្រសិនបើនៅធ្វើការ",
|
||||
"label": "ថ្ងៃឈប់"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "ពាក្យគន្លឹះ"
|
||||
},
|
||||
"level": {
|
||||
"label": "កម្រិត"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "កម្រិត (ជាលេខ)"
|
||||
},
|
||||
"name": {
|
||||
"label": "ឈ្មោះ"
|
||||
},
|
||||
"phone": {
|
||||
"label": "លេខទូរស័ព្ទ"
|
||||
},
|
||||
"position": {
|
||||
"label": "តំណែង/មុខងារ"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "ថ្ងៃចាប់ផ្តើម"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "ចំណងជើងតូច"
|
||||
},
|
||||
"summary": {
|
||||
"label": "សង្ខេប"
|
||||
},
|
||||
"title": {
|
||||
"label": "ចំណងជើង"
|
||||
},
|
||||
"url": {
|
||||
"label": "គេហទំព័រ"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "ទំព័រ"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "លុប",
|
||||
"duplicate": "ស្ទួន",
|
||||
"edit": "កែសម្រួល"
|
||||
},
|
||||
"empty-text": "បញ្ជីនេះគឺទទេ។"
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "តើអ្នកប្រាកដទេដែលចង់លុបវាចេញ? បញ្ជាក់ៈ ក្រោយពីលុបហើយ មិនអាចទាញយកមកវិញបានទេ។",
|
||||
"delete-section": "ផ្នែកត្រូវលុប",
|
||||
"rename-section": "ផ្នែកត្រូវប្តូរឈ្មោះ",
|
||||
"toggle-visibility": "ឃើញ/មិនឃើញ"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "ផ្ទាំងឧបករណ៍ (កណ្តាល)",
|
||||
"copy-link": "ចម្លងតំណទៅកាន់ប្រវត្តិរូប",
|
||||
"export-pdf": "រក្សារទុកជា PDF",
|
||||
"toggle-orientation": "បិទបើកការតំរង់ទិសទំព័រ",
|
||||
"toggle-page-break-line": "បិទ/បើក បន្ទាត់បំបែកទំព័រ",
|
||||
"toggle-sidebars": "បិទ/បើករបារចំហៀង",
|
||||
"zoom-in": "ពង្រីក",
|
||||
"zoom-out": "បង្រួម",
|
||||
"undo": "មិនធ្វើវិញ",
|
||||
"redo": "ធ្វើឡើងវិញ"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "លុប",
|
||||
"duplicate": "ស្ទួន",
|
||||
"rename": "ប្តូរឈ្មោះ",
|
||||
"share-link": "ចែករំលែកតំណ",
|
||||
"tooltips": {
|
||||
"delete": "តើអ្នកប្រាកដថាចង់លុបប្រវត្តិរូបនេះទេ? នេះជាសកម្មភាពដែលមិនអាចត្រឡប់វិញបាន។",
|
||||
"share-link": "អ្នកត្រូវផ្លាស់ប្តូរការមើលឃើញនៃប្រវត្តិរូបរបស់អ្នកជាសាធារណៈ ដើម្បីឱ្យអ្នកដទៃមើលឃើញ។"
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "អ្នកផ្តល់រង្វាន់"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "តម្រងរូបថត"
|
||||
},
|
||||
"heading": "មូលដ្ឋាន",
|
||||
"headline": {
|
||||
"label": "ចំណងជើង"
|
||||
},
|
||||
"name": {
|
||||
"label": "ឈ្មោះពេញ"
|
||||
},
|
||||
"birthdate": {
|
||||
"label": "ថ្ងៃខែឆ្នាំកំណើត"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "ព្រំដែន"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "មាត្រដ្ឋានប្រផេះ"
|
||||
},
|
||||
"heading": "ផលប៉ះពាល់"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "រាង"
|
||||
},
|
||||
"size": {
|
||||
"heading": "ទំហំ (គិតជាភីកសែល)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "លុបរូបថត",
|
||||
"upload": "បង្ហោះរូបថត"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "អ្នកចេញ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "តំបន់សិក្សា"
|
||||
},
|
||||
"courses": {
|
||||
"label": "វគ្គសិក្សា"
|
||||
},
|
||||
"degree": {
|
||||
"label": "សញ្ញាបត្រ"
|
||||
},
|
||||
"grade": {
|
||||
"label": "ថ្នាក់"
|
||||
},
|
||||
"institution": {
|
||||
"label": "ស្ថាប័ន"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "អាស័យដ្ឋាន"
|
||||
},
|
||||
"city": {
|
||||
"label": "ទីក្រុង"
|
||||
},
|
||||
"country": {
|
||||
"label": "ប្រទេស"
|
||||
},
|
||||
"heading": "ទីតាំង",
|
||||
"postal-code": {
|
||||
"label": "លេខកូដប្រៃសណីយ"
|
||||
},
|
||||
"region": {
|
||||
"label": "តំបន់"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "បណ្តាញ"
|
||||
},
|
||||
"username": {
|
||||
"label": "ឈ្មោះអ្នកប្រើប្រាស់"
|
||||
}
|
||||
},
|
||||
"heading": "ប្រវត្តិរូប",
|
||||
"heading_one": "ប្រវត្តិរូប"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "អ្នកបោះពុម្ពផ្សាយ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "ទំនាក់ទំនង"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "ផ្នែក"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "អង្គការ"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "CSS ផ្ទាល់ខ្លួន"
|
||||
},
|
||||
"export": {
|
||||
"heading": "នាំចេញ",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "ទាញយកកំណែ JSON នៃប្រវត្តិរូបសង្ខេបរបស់អ្នក ដែលអាចត្រូវបាននាំចូលត្រឡប់ទៅក្នុង Reactive Resume វិញ។"
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "ការបង្កើត PDF",
|
||||
"secondary": "សូមរង់ចាំនៅពេលដែល PDF របស់អ្នកត្រូវបានបង្កើត វាអាចចំណាយពេលរហូតដល់ 15 វិនាទី។"
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "ទាញយកឯកសារ PDF នៃប្រវត្តិរូបសង្ខេបរបស់អ្នក ដែលអ្នកអាចបោះពុម្ព និងផ្ញើទៅកាន់ការងារក្នុងក្តីស្រមៃរបស់អ្នក។ ឯកសារនេះមិនអាចត្រូវបាននាំចូលមកវិញសម្រាប់ការកែសម្រួលបន្ថែមទៀតទេ។"
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "ប្លង់",
|
||||
"tooltip": {
|
||||
"reset-layout": "កំណត់ប្លង់ឡើងវិញ"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "មានអ្វីមួយរារាំងអ្នកមិនឱ្យបង្កើតប្រវត្តិរូប? ឬតើអ្នកមានគំនិតអស្ចារ្យដើម្បីបន្ថែមទេ? លើកបញ្ហានៅលើ GitHub ដើម្បីចាប់ផ្តើម។",
|
||||
"button": "បញ្ហា GitHub",
|
||||
"heading": "កំហុស? សំណើលក្ខណៈពិសេស?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "ប្រសិនបើអ្នកចូលចិត្តប្រើ Reactive Resume សូមពិចារណាបរិច្ចាគឱ្យបានច្រើនតាមដែលអ្នកអាចធ្វើបាន ដើម្បីបុព្វហេតុធ្វើឱ្យកម្មវិធីដំណើរការ និងដំណើរការដោយគ្មានការផ្សាយពាណិជ្ជកម្ម និងឥតគិតថ្លៃជារៀងរហូត។",
|
||||
"button": "ទិញកាហ្វេឱ្យខ្ញុំ",
|
||||
"heading": "បរិច្ចាគទៅប្រវត្តិរូបសង្ខេបដែលមានប្រតិកម្ម"
|
||||
},
|
||||
"github": "ប្រភពកូដ",
|
||||
"heading": "តំណភ្ជាប់"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "កាលបរិច្ឆេទ",
|
||||
"secondary": "ទម្រង់កាលបរិច្ឆេទដែលត្រូវប្រើនៅលើកម្មវិធី"
|
||||
},
|
||||
"heading": "សកល",
|
||||
"language": {
|
||||
"primary": "ភាសា",
|
||||
"secondary": "បង្ហាញភាសាដែលត្រូវប្រើនៅលើកម្មវិធី"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "ប្រធានបទ"
|
||||
}
|
||||
},
|
||||
"heading": "ការកំណត់",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "បំបែកបន្ទាត់",
|
||||
"secondary": "បង្ហាញបន្ទាត់នៅលើទំព័រទាំងអស់ដើម្បីសម្គាល់កម្ពស់នៃទំព័រ A4"
|
||||
},
|
||||
"heading": "ទំព័រ",
|
||||
"orientation": {
|
||||
"disabled": "មិនមានប្រសិទ្ធភាពទេពេលមានតែមួយទំព័រ",
|
||||
"primary": "ការតំរង់ទិស",
|
||||
"secondary": "ថាតើត្រូវបង្ហាញទំព័រផ្ដេក ឬបញ្ឈរ"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "ប្រវត្តិរូប",
|
||||
"reset": {
|
||||
"primary": "កំណត់អ្វីៗគ្រប់យ៉ាងឡើងវិញ",
|
||||
"secondary": "ធ្វើខុសច្រើនពេក? សូមចុចទីនេះដើម្បីកំណត់ការផ្លាស់ប្តូរទាំងអស់ឡើងវិញ ហើយចាប់ផ្តើមពីដំបូង។ សូមប្រយ័ត្ន សកម្មភាពនេះមិនអាចត្រឡប់វិញបានទេ។"
|
||||
},
|
||||
"sample": {
|
||||
"primary": "ផ្ទុកទិន្នន័យគំរូ",
|
||||
"secondary": "មិនប្រាកដថាត្រូវចាប់ផ្តើមពីណា? ចុចទីនេះដើម្បីផ្ទុកទិន្នន័យគំរូមួយចំនួន ដើម្បីមើលពីរបៀបដែលប្រវត្តិរូបសង្ខេបពេញលេញ។"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "ការចែករំលែក",
|
||||
"short-url": {
|
||||
"label": "ចូលចិត្ត URL ខ្លី"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "អនុញ្ញាតឱ្យនរណាម្នាក់ដែលមានតំណមើលប្រវត្តិរូបសង្ខេបរបស់អ្នក។",
|
||||
"title": "សាធារណៈ"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "គំរូ"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "ផ្ទៃខាងក្រោយ"
|
||||
},
|
||||
"primary": {
|
||||
"label": "បឋមសិក្សា"
|
||||
},
|
||||
"text": {
|
||||
"label": "អត្ថបទ"
|
||||
}
|
||||
},
|
||||
"heading": "ប្រធានបទ"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "គ្រួសារពុម្ពអក្សរ"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "ទំហំអក្សរ"
|
||||
}
|
||||
},
|
||||
"heading": "វាយអក្សរ",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "រាងកាយ"
|
||||
},
|
||||
"headings": {
|
||||
"label": "ក្បាល"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
client/public/locales/km/common.json
Normal file
29
client/public/locales/km/common.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"avatar": {
|
||||
"menu": {
|
||||
"greeting": "សួស្តី",
|
||||
"logout": "ចាកចេញ"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"credit": "គម្រោងបង្កើតឡើងដោយលោក <1> Amruth Pillai</1>",
|
||||
"license": "ដោយសហគមន៍ ដើម្បីសហគមន៍។"
|
||||
},
|
||||
"markdown": {
|
||||
"help-text": "ផ្នែកនេះគាំទ្រទម្រង់ <1> markdown</1> ។"
|
||||
},
|
||||
"date": {
|
||||
"present": "បច្ចុប្បន្ន"
|
||||
},
|
||||
"subtitle": "បង្កើតជីវត្តប្រវត្តិដោយចំហ និងមិនគិតថ្លៃ។",
|
||||
"title": "Reactive Resume",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "សូមបញ្ចូលតែឯកសារណាដែលមានទំហំមិនលើសពី២មេហ្គាបៃ។",
|
||||
"upload-photo-size": "សូមបញ្ចូលតែឯកសារណាដែលមានទំហំមិនលើសពី២មេហ្គាបៃ កាន់តែល្អប្រសិនបើរូបរាងជាការ៉េ។"
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "តំណភ្ជាប់ទៅកាន់ប្រវត្តិរូបរបស់អ្នកត្រូវបានចម្លងរួចរាល់។"
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/km/dashboard.json
Normal file
25
client/public/locales/km/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "ចាប់ផ្តើមពីដំបូង",
|
||||
"title": "បង្កើតប្រវត្តិរូបសង្ខេបថ្មី។"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn, JSON Resume, Reactive Resume",
|
||||
"title": "នាំចូលពីប្រភពខាងក្រៅ"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "លុប",
|
||||
"duplicate": "ស្ទួន",
|
||||
"open": "បើក",
|
||||
"rename": "ប្ដូរឈ្មោះ",
|
||||
"share-link": "ចែករំលែកតំណ",
|
||||
"tooltips": {
|
||||
"delete": "តើអ្នកប្រាកដទេដែលចង់លុបវាចេញ? បញ្ជាក់ៈ ក្រោយពីលុបហើយ មិនអាចទាញយកមកវិញបានទេ។",
|
||||
"share-link": "អ្នកត្រូវផ្លាស់ប្តូរការមើលឃើញនៃប្រវត្តិរូបរបស់អ្នកជាសាធារណៈ ដើម្បីឱ្យអ្នកដទៃមើលឃើញ។"
|
||||
}
|
||||
},
|
||||
"timestamp": "បានធ្វើបច្ចុប្បន្នភាពចុងក្រោយ {{timestamp}} មុន។"
|
||||
},
|
||||
"title": "ផ្ទាំងគ្រប់គ្រង"
|
||||
}
|
||||
41
client/public/locales/km/landing.json
Normal file
41
client/public/locales/km/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "ចូលទៅកាន់កម្មវិធី",
|
||||
"login": "ចូល",
|
||||
"logout": "ចាកចេញ",
|
||||
"register": "ចុះឈ្មោះ"
|
||||
},
|
||||
"features": {
|
||||
"heading": "មុខងារ",
|
||||
"list": {
|
||||
"ads": "គ្មានការផ្សាយពាណិជ្ជកម្ម",
|
||||
"export": "នាំចេញប្រវត្តិរូបសង្ខេបរបស់អ្នកទៅជាទម្រង់ JSON ឬ PDF",
|
||||
"free": "ឥតគិតថ្លៃជារៀងរហូត",
|
||||
"import": "នាំចូលទិន្នន័យពី LinkedIn, JSON Resume",
|
||||
"languages": "អាចចូលប្រើបានច្រើនភាសា",
|
||||
"more": "និងមុខងារពិសេសៗជាច្រើនទៀត <1>អានបន្ថែមនៅទីនេះ</1>",
|
||||
"tracking": "គ្មានការតាមដានអ្នកប្រើប្រាស់"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "តំណ",
|
||||
"links": {
|
||||
"donate": "បរិច្ចាគ",
|
||||
"github": "ប្រភពកូដ",
|
||||
"privacy": "គោលការណ៍ភាពឯកជន",
|
||||
"service": "លក្ខខណ្ឌនៃសេវាកម្ម"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "រូបថតអេក្រង់"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "សក្ខីកម្ម",
|
||||
"body": "ល្អ ឬមិនល្អ ខ្ញុំចង់រីករាយនឹងទទួលមតិរបស់អ្នកលើ Reactive Resume និងបទពិសោធន៍ដែលអ្នកទទួលបាន។ <br/> នេះគឺជាមតិតដែលយើងទទួលបានពីអ្នកប្រើប្រាស់ពីជុំវិញពិភពលោក។",
|
||||
"contact": "អ្នកអាចទាក់ទងមកខ្ញុំតាមរយៈ <1>អ៊ីមែលរបស់ខ្ញុំ</1> ឬតាមរយៈទម្រង់ទំនាក់ទំនងនៅលើ <3>គេហទំព័ររបស់ខ្ញុំ</3> ."
|
||||
},
|
||||
"summary": {
|
||||
"body": "Reactive Resume គឺជាកម្មវិធីបង្កើតប្រវត្តិរូបសង្ខេបដោយឥតគិតថ្លៃ និងបើកចំហ ដែលត្រូវបានបង្កើតឡើងដើម្បីឲ្យលោកអ្នកអាចបង្កើត កែប្រែ ក៏ដូចជាចែករំលែកនូវប្រវត្តិរូបសង្ខេបរបស់អ្នកបានយ៉ាងងាយស្រួលដូចជា 1,2,3។ អ្នកអាចបង្កើតប្រវត្តិរូបបានច្រើន ចែករំលែកទៅកាន់អ្នកដែលកំពុងស្វែងរកបុគ្គលិក ឬមិត្តភក្តិតាមរយៈតំណភ្ជាប់ ហើយក៏អាចព្រីនជា PDF, មិនគិតថ្លៃ គ្មានការផ្សាយណាណិជ្ជកម្ម គ្មានការតាមដានឬលួចទិន្នន័យ ត្រឹមត្រូវ និងរក្សារបាននូវឯកជនភាព។",
|
||||
"heading": "សង្ខេប"
|
||||
}
|
||||
}
|
||||
135
client/public/locales/km/modals.json
Normal file
135
client/public/locales/km/modals.json
Normal file
@ -0,0 +1,135 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "ផ្ញើអ៊ីមែលកំណត់ពាក្យសម្ងាត់ឡើងវិញ"
|
||||
},
|
||||
"body": "បញ្ចូលអ៉ីម៉ែលដែលអ្នកនឹងប្រើដើម្បីទាញយកគណនីមកវិញនៅពេលភ្លេចលេខកូដ",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "អាស័យដ្ឋានអ៊ីម៉េល"
|
||||
}
|
||||
},
|
||||
"heading": "ភ្លេចលេខសំងាត់របស់អ្នក?",
|
||||
"help-text": "ប្រសិនបើបង្កើតគណនីជាមួយនឹងអ៉ីម៉ែលនេះរួចហើយ នោះលោកអ្នកនឹងទទួលបានសារពីយើងខ្ញុំដើម្បីកំណត់ពាក្យសម្ងាត់ឡើងវិញ។"
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "ចូល"
|
||||
},
|
||||
"body": "សូមបញ្ចូលឈ្មោះអ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់ដែលភ្ជាប់ជាមួយគណនីរបស់អ្នក ដើម្បីចូល និងចូលប្រើប្រាស់ គ្រប់គ្រង និងចែករំលែកប្រវត្តិរូបសង្ខេបរបស់អ្នក។",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "ពាក្យសម្ងាត់"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "អ្នកក៏អាចបញ្ចូលអាសយដ្ឋានអ៊ីមែលរបស់អ្នកផងដែរ។",
|
||||
"label": "ឈ្មោះអ្នកប្រើ"
|
||||
}
|
||||
},
|
||||
"heading": "ចូលទៅគណនីរបស់អ្នក។",
|
||||
"recover-text": "ក្នុងករណីដែលអ្នកភ្លេចពាក្យសម្ងាត់របស់អ្នក អ្នកអាច <1>សង្គ្រោះគណនីរបស់អ្នក។</1> នៅទីនេះ",
|
||||
"register-text": "ប្រសិនបើអ្នកមិនមានទេ អ្នកអាច <1>បង្កើតគណនីមួយ</1> នៅទីនេះ"
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "ចុះឈ្មោះ",
|
||||
"google": "ចូលជាមួយ Google"
|
||||
},
|
||||
"body": "សូមធ្វើបំពេញអាស័យដ្ឋាន អ៊ីម៉េល របស់អ្នកដើម្បីធ្វើការបង្កើតគណនីថ្មី។",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "បញ្ជាក់ពាក្យសម្ងាត់"
|
||||
},
|
||||
"email": {
|
||||
"label": "អាស័យដ្ឋានអ៊ីម៉េល"
|
||||
},
|
||||
"name": {
|
||||
"label": "ឈ្មោះពេញ"
|
||||
},
|
||||
"password": {
|
||||
"label": "ពាក្យសម្ងាត់"
|
||||
},
|
||||
"username": {
|
||||
"label": "ឈ្មោះអ្នកប្រើប្រាស់"
|
||||
}
|
||||
},
|
||||
"heading": "បង្កើតគណនី",
|
||||
"loginText": "ប្រសិនបើអ្នកមានគណនីរួចហើយ អ្នកអាច <1>ចូលនៅទីនេះ</1> "
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "កំណត់ពាក្យសម្ងាត់ថ្មី។"
|
||||
},
|
||||
"body": "បញ្ចូលពាក្យសម្ងាត់ថ្មីសម្រាប់គណនីរបស់អ្នក។",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "បញ្ជាក់ពាក្យសម្ងាត់"
|
||||
},
|
||||
"password": {
|
||||
"label": "ពាក្យសម្ងាត់"
|
||||
}
|
||||
},
|
||||
"heading": "កំណត់លេខសម្ងាត់របស់អ្នក"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "បង្កើតប្រវត្តិរូបសង្ខេប"
|
||||
},
|
||||
"body": "បង្កើតប្រវត្តិរូបរបស់អ្នកដោយដាក់ឈ្មោះណាមួយ។ វាអាចជាឈ្មោះតំណាងឲ្យមុខដំណែងដែលអ្នកចង់ដាក់ពាក្យ ឬឈ្មោះអ្វីម្យ៉ាងដែលអ្នកពេញចិត្ត។",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "ឈ្មោះ"
|
||||
},
|
||||
"public": {
|
||||
"label": "តើអាចចូលប្រើជាសាធារណៈបានទេ?"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Slug"
|
||||
}
|
||||
},
|
||||
"heading": "បង្កើតប្រវត្តិរូបសង្ខេបថ្មី។"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "នាំចូលពីប្រភពខាងក្រៅ",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "បញ្ចូល JSON"
|
||||
},
|
||||
"body": "ប្រសិនបើអ្នកមាន <1>ប្រវត្តិរូបសង្ខេប JSON ដែលមានសុពលភាព</1> រួចរាល់ហើយ អ្នកអាចប្រើវាដើម្បីតាមដានការអភិវឌ្ឍន៍របស់អ្នកយ៉ាងរហ័សនៅលើ Reactive Resume។ ចុចប៊ូតុងខាងក្រោម ហើយបង្ហោះឯកសារ JSON ដែលមានសុពលភាព ដើម្បីចាប់ផ្តើម។",
|
||||
"heading": "នាំចូលពីប្រវត្តិរូប JSON"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "ផ្ទុកឡើងប័ណ្ណសារហ្ស៊ីប"
|
||||
},
|
||||
"body": "អ្នកអាចសន្សំសំចៃពេលវេលាដោយការនាំចេញទិន្នន័យរបស់អ្នកពី LinkedIn ហើយប្រើវាដើម្បីបំពេញវាលដោយស្វ័យប្រវត្តិនៅលើ Reactive Resume។ ទៅកាន់ <1>ឯកជនភាពទិន្នន័យ</1> ផ្នែកនៅលើ LinkedIn និងស្នើសុំបណ្ណសារទិន្នន័យរបស់អ្នក។ នៅពេលដែលវាអាចប្រើបាន សូមបង្ហោះឯកសារ ZIP ខាងក្រោម។",
|
||||
"heading": "នាំចូលពី LinkedIn"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "បង្ហោះ JSON",
|
||||
"upload-json-v2": "បង្ហោះ JSON ពី v2"
|
||||
},
|
||||
"body": "ប្រសិនបើអ្នកមាន JSON ដែលត្រូវបាននាំចេញជាមួយនឹងកំណែបច្ចុប្បន្ននៃ Reactive Resume អ្នកអាចនាំចូលវាមកវិញនៅទីនេះ ដើម្បីទទួលបានកំណែដែលអាចកែសម្រួលបានម្តងទៀត។",
|
||||
"heading": "នាំចូលពីប្រវត្តិរូបដែលមានប្រតិកម្ម"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "ប្តូរឈ្មោះប្រវត្តិរូប"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "ឈ្មោះ"
|
||||
},
|
||||
"slug": {
|
||||
"label": "ស្លក"
|
||||
}
|
||||
},
|
||||
"heading": "ប្តូរឈ្មោះប្រវត្តិរូបរបស់អ្នក។"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "ಪುಟ ಬ್ರೇಕ್ ಲೈನ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ",
|
||||
"toggle-sidebars": "ಅಡ್ಡಪಟ್ಟಿಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ",
|
||||
"zoom-in": "ಗಾತ್ರ ಹಿಗ್ಗಿಸಿ",
|
||||
"zoom-out": "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ"
|
||||
"zoom-out": "ಗಾತ್ರ ಕುಗ್ಗಿಸಿ",
|
||||
"undo": "ರದ್ದುಮಾಡು",
|
||||
"redo": "ಮತ್ತೆಮಾಡು"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "പേജ് ബ്രേക്ക് ലൈൻ ടോഗിൾ ചെയ്യുക",
|
||||
"toggle-sidebars": "സൈഡ്ബാറുകൾ ടോഗിൾ ചെയ്യുക",
|
||||
"zoom-in": "വലുതാക്കുക",
|
||||
"zoom-out": "ചെറുതാക്കുക"
|
||||
"zoom-out": "ചെറുതാക്കുക",
|
||||
"undo": "പഴയപടിയാക്കുക",
|
||||
"redo": "വീണ്ടും ചെയ്യുക"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
363
client/public/locales/ne/builder.json
Normal file
363
client/public/locales/ne/builder.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "नयाँ {{token}}",
|
||||
"delete": "मेटाउनु {{token}}",
|
||||
"edit": "सम्पादन {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "स्तम्भहरू",
|
||||
"tooltip": "स्तम्भहरूको संख्या परिवर्तन"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "मिति"
|
||||
},
|
||||
"description": {
|
||||
"label": "विवरण"
|
||||
},
|
||||
"email": {
|
||||
"label": "इमेल ठेगाना"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "यो क्षेत्र खाली छोड्नु, यदि अझै अवस्थित छ",
|
||||
"label": "समाप्ति मिति"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "कीवर्ड"
|
||||
},
|
||||
"level": {
|
||||
"label": "स्तर"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "स्तर (संख्या)"
|
||||
},
|
||||
"name": {
|
||||
"label": "नाम"
|
||||
},
|
||||
"phone": {
|
||||
"label": "मोबाइल नम्बर"
|
||||
},
|
||||
"position": {
|
||||
"label": "स्थिति"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "सुरू मिति"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "उपशीर्षक"
|
||||
},
|
||||
"summary": {
|
||||
"label": "सारांश लेख"
|
||||
},
|
||||
"title": {
|
||||
"label": "शीर्षक"
|
||||
},
|
||||
"url": {
|
||||
"label": "वेबसाइट"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "पृष्ठ"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "मेटाउन",
|
||||
"duplicate": "नक्कल",
|
||||
"edit": "सम्पादन गर्नुहोस्"
|
||||
},
|
||||
"empty-text": "यो सूची खाली छ।."
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "के तपाइँ यो वस्तु मेटाउन निश्चित हुनुहुन्छ? यो अपरिवर्तनीय कार्य हो।.",
|
||||
"delete-section": "खण्ड मेटाउनुहोस्",
|
||||
"rename-section": "नामाकरण गर्नुहोस्",
|
||||
"toggle-visibility": "दृश्यता टगल गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "केन्द्र आर्टबोर्ड",
|
||||
"copy-link": "पुन: सुरु गर्न लिङ्क प्रतिलिपि गर्नुहोस्",
|
||||
"export-pdf": "PDF निर्यात गर्नुहोस्",
|
||||
"toggle-orientation": "पृष्ठ अभिमुखीकरण टगल गर्नुहोस्",
|
||||
"toggle-page-break-line": "पृष्ठ ब्रेक लाइन टगल गर्नुहोस्",
|
||||
"toggle-sidebars": "साइडबारहरू टगल गर्नुहोस्",
|
||||
"zoom-in": "जुम इन गर्नुहोस्",
|
||||
"zoom-out": "जुम आउट गर्नुहोस्",
|
||||
"undo": "पूर्ववत गर्नुहोस्",
|
||||
"redo": "पुन: गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "मेटाउन",
|
||||
"duplicate": "नक्कल",
|
||||
"rename": "पुन: नामाकरण गर्नुहोस्",
|
||||
"share-link": "लिङ्क साझा गर्नुहोस्",
|
||||
"tooltips": {
|
||||
"delete": "के तपाइँ यो बायोडाटा मेटाउन निश्चित हुनुहुन्छ? यो अपरिवर्तनीय कार्य हो।",
|
||||
"share-link": "तपाईंले आफ्नो बायोडाटाको दृश्यतालाई अरूले देख्नको लागि सार्वजनिक रूपमा परिवर्तन गर्न आवश्यक छ।"
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "पुरस्कार दिने"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "फोटो फिल्टरहरू"
|
||||
},
|
||||
"heading": "आधारभूत",
|
||||
"headline": {
|
||||
"label": "हेडलाइन"
|
||||
},
|
||||
"name": {
|
||||
"label": "पुरा नाम"
|
||||
},
|
||||
"birthdate": {
|
||||
"label": "जन्म मिति"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "सीमा"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "ग्रेस्केल"
|
||||
},
|
||||
"heading": "प्रभावहरू"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "आकार"
|
||||
},
|
||||
"size": {
|
||||
"heading": "आकार (px मा)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "फोटो हटाउनुहोस्",
|
||||
"upload": "फोटो अपलोड गर्नुहोस्"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "जारीकर्ता"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "अध्ययन क्षेत्र"
|
||||
},
|
||||
"courses": {
|
||||
"label": "पाठ्यक्रमहरू"
|
||||
},
|
||||
"degree": {
|
||||
"label": "डिग्री"
|
||||
},
|
||||
"grade": {
|
||||
"label": "ग्रेड"
|
||||
},
|
||||
"institution": {
|
||||
"label": "संस्था"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "ठेगाना"
|
||||
},
|
||||
"city": {
|
||||
"label": "सहर"
|
||||
},
|
||||
"country": {
|
||||
"label": "राष्ट्र"
|
||||
},
|
||||
"heading": "स्थान",
|
||||
"postal-code": {
|
||||
"label": "हुलाक कोड"
|
||||
},
|
||||
"region": {
|
||||
"label": "क्षेत्र"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "नेटवर्क"
|
||||
},
|
||||
"username": {
|
||||
"label": "प्रयोगकर्ता नाम"
|
||||
}
|
||||
},
|
||||
"heading": "प्रोफाइलहरू",
|
||||
"heading_one": "प्रोफाइल"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "प्रकाशक"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "सम्बन्ध"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "खण्ड"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "सङ्गठन"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "अनुकूलन CSS"
|
||||
},
|
||||
"export": {
|
||||
"heading": "निर्यात गर्नुहोस्",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "Reactive Resume मा फिर्ता आयात गर्न सकिने आफ्नो रिज्युमको JSON संस्करण डाउनलोड गर्नुहोस्।"
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "PDF उत्पन्न गर्दै",
|
||||
"secondary": "कृपया तपाईंको पीडीएफ उत्पन्न हुँदा पर्खनुहोस्, यसले 15 सेकेन्डसम्म लिन सक्छ।"
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "तपाइँको रिजुमेको PDF डाउनलोड गर्नुहोस् जुन तपाइँ प्रिन्ट गर्न सक्नुहुन्छ र तपाइँको सपनाको काममा पठाउन सक्नुहुन्छ। थप सम्पादनको लागि यो फाइल फिर्ता आयात गर्न सकिँदैन।"
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "लेआउट",
|
||||
"tooltip": {
|
||||
"reset-layout": "लेआउट रिसेट गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "केहि चीजले तपाईंलाई पुन: सुरु गर्नबाट रोक्छ? वा तपाइँसँग थप्नको लागि एक अद्भुत विचार छ? सुरु गर्न GitHub मा मुद्दा उठाउनुहोस्।",
|
||||
"button": "GitHub मुद्दाहरू",
|
||||
"heading": "बगहरू? सुविधा अनुरोधहरू?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "यदि तपाइँ प्रतिक्रियात्मक पुन: प्रयोग गर्न मन पराउनुहुन्छ भने, कृपया एपलाई जारी राख्न र चलाउनको लागि, विज्ञापनहरू बिना र सदाको लागि निःशुल्क राख्नको लागि सकेसम्म दान गर्ने विचार गर्नुहोस्।",
|
||||
"button": "मलाई एक कफी किन्नुहोस्",
|
||||
"heading": "प्रतिक्रियात्मक पुन: सुरुमा दान गर्नुहोस्"
|
||||
},
|
||||
"github": "स्रोत कोड",
|
||||
"heading": "लिङ्कहरू"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "मिति",
|
||||
"secondary": "एप भरि प्रयोग गर्न मिति ढाँचा"
|
||||
},
|
||||
"heading": "विश्वव्यापी",
|
||||
"language": {
|
||||
"primary": "भाषा",
|
||||
"secondary": "एप भरि प्रयोग गर्न भाषा प्रदर्शन गर्नुहोस्"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "विषयवस्तु"
|
||||
}
|
||||
},
|
||||
"heading": "सेटिङहरू",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "ब्रेक लाइन",
|
||||
"secondary": "A4 पृष्ठको उचाइ चिन्ह लगाउन सबै पृष्ठहरूमा रेखा देखाउनुहोस्"
|
||||
},
|
||||
"heading": "पृष्ठ",
|
||||
"orientation": {
|
||||
"disabled": "केवल एक पृष्ठ हुँदा कुनै प्रभाव छैन",
|
||||
"primary": "अभिमुखीकरण",
|
||||
"secondary": "पृष्ठहरू तेर्सो वा ठाडो रूपमा प्रदर्शन गर्ने कि नगर्ने"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "पुन: सुरु गर्नुहोस्",
|
||||
"reset": {
|
||||
"primary": "सबै कुरा रिसेट गर्नुहोस्",
|
||||
"secondary": "धेरै गल्ती गर्नुभयो? सबै परिवर्तनहरू रिसेट गर्न र स्क्र्याचबाट सुरु गर्न यहाँ क्लिक गर्नुहोस्। सावधान रहनुहोस्, यो कार्य उल्टाउन सकिँदैन।"
|
||||
},
|
||||
"sample": {
|
||||
"primary": "नमूना डेटा लोड गर्नुहोस्",
|
||||
"secondary": "कहाँ सुरु गर्ने निश्चित छैन? पूर्ण रिजुमे कस्तो देखिन्छ भनेर हेर्नको लागि केही नमूना डेटा लोड गर्न यहाँ क्लिक गर्नुहोस्।"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "बाढ्नु",
|
||||
"short-url": {
|
||||
"label": "छोटो URL लाई प्राथमिकता दिनुहोस्"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "लिङ्क भएको कसैलाई पनि आफ्नो बायोडाटा हेर्न अनुमति दिनुहोस्",
|
||||
"title": "सार्वजनिक"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "टेम्प्लेटहरू"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "पृष्ठभूमि"
|
||||
},
|
||||
"primary": {
|
||||
"label": "प्राथमिक"
|
||||
},
|
||||
"text": {
|
||||
"label": "पाठ"
|
||||
}
|
||||
},
|
||||
"heading": "विषयवस्तु"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "फन्ट परिवार"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "फन्ट साइज"
|
||||
}
|
||||
},
|
||||
"heading": "टाइपोग्राफी",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "जीउ"
|
||||
},
|
||||
"headings": {
|
||||
"label": "शीर्षकहरू"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
client/public/locales/ne/common.json
Normal file
29
client/public/locales/ne/common.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"avatar": {
|
||||
"menu": {
|
||||
"greeting": "नमस्ते",
|
||||
"logout": "बाहिर निस्कनु"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1> अमृत पिल्लै द्वारा एक जोश परियोजना</1>",
|
||||
"license": "समुदाय द्वारा, समुदाय को लागी।"
|
||||
},
|
||||
"markdown": {
|
||||
"help-text": "यो खण्डले <1>मार्कडाउनलाई समर्थन गर्दछ</1> ढाँचा।"
|
||||
},
|
||||
"date": {
|
||||
"present": "उपस्थित"
|
||||
},
|
||||
"subtitle": "एक नि: शुल्क र खुला स्रोत पुनःसुरु बिल्डर।",
|
||||
"title": "प्रतिक्रियात्मक पुन: सुरु",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "कृपया २ मेगाबाइट मुनिका फाइलहरू मात्र अपलोड गर्नुहोस्।",
|
||||
"upload-photo-size": "कृपया २ मेगाबाइट मुनिका तस्बिरहरू मात्र अपलोड गर्नुहोस्, प्राथमिकता वर्गाकार।"
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "तपाईंको रिजुमेको लिङ्क तपाईंको क्लिपबोर्डमा प्रतिलिपि गरिएको छ।"
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/ne/dashboard.json
Normal file
25
client/public/locales/ne/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "स्क्र्याचबाट सुरु गर्नुहोस्",
|
||||
"title": "नयाँ रिजुमे सिर्जना गर्नुहोस्"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn, JSON पुनःसुरु, प्रतिक्रियात्मक पुनःसुरु",
|
||||
"title": "बाह्य स्रोतहरूबाट आयात गर्नुहोस्"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "मेटाउन",
|
||||
"duplicate": "नक्कल",
|
||||
"open": "खोल्नुहोस्",
|
||||
"rename": "पुन: नामाकरण गर्नुहोस्",
|
||||
"share-link": "लिङ्क साझा गर्नुहोस्",
|
||||
"tooltips": {
|
||||
"delete": "के तपाइँ यो बायोडाटा मेटाउन निश्चित हुनुहुन्छ? यो अपरिवर्तनीय कार्य हो।",
|
||||
"share-link": "तपाईंले आफ्नो बायोडाटाको दृश्यतालाई अरूले देख्नको लागि सार्वजनिक रूपमा परिवर्तन गर्न आवश्यक छ।"
|
||||
}
|
||||
},
|
||||
"timestamp": "अन्तिम अपडेट {{timestamp}} पहिले"
|
||||
},
|
||||
"title": "ड्यासबोर्ड"
|
||||
}
|
||||
41
client/public/locales/ne/landing.json
Normal file
41
client/public/locales/ne/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "एपमा जानुहोस्",
|
||||
"login": "लग - इन",
|
||||
"logout": "बाहिर निस्कनु",
|
||||
"register": "दर्ता गर्नुहोस्"
|
||||
},
|
||||
"features": {
|
||||
"heading": "विशेषताहरु",
|
||||
"list": {
|
||||
"ads": "कुनै विज्ञापन छैन",
|
||||
"export": "JSON वा PDF ढाँचामा आफ्नो रिजुमे निर्यात गर्नुहोस्",
|
||||
"free": "नि: शुल्क, सधैंभरि",
|
||||
"import": "LinkedIn, JSON रिज्युमबाट डाटा आयात गर्नुहोस्",
|
||||
"languages": "धेरै भाषाहरूमा पहुँचयोग्य",
|
||||
"more": "र धेरै रोमाञ्चक सुविधाहरू, <1>यसको बारेमा सबै यहाँ पढ्नुहोस्</1>",
|
||||
"tracking": "कुनै प्रयोगकर्ता ट्र्याकिङ छैन"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "लिङ्कहरू",
|
||||
"links": {
|
||||
"donate": "दान गर्नुहोस्",
|
||||
"github": "स्रोत कोड",
|
||||
"privacy": "गोपनीयता नीति",
|
||||
"service": "सेवाका सर्तहरु"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "स्क्रिनसटहरू"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "प्रशंसापत्रहरू",
|
||||
"body": "राम्रो वा नराम्रो, म प्रतिक्रियाशील पुन: सुरुमा तपाईंको राय सुन्न चाहन्छु र अनुभव तपाईंको लागि कस्तो छ।<br/>विश्वभरका प्रयोगकर्ताहरूले पठाएको सन्देशहरू यहाँ छन्।",
|
||||
"contact": "तपाईंले <1>मेरो इमेल मार्फत मलाई सम्पर्क गर्न सक्नुहुन्छ</1> वा <3>मेरो वेबसाइटमा सम्पर्क फारम मार्फत</3> ।"
|
||||
},
|
||||
"summary": {
|
||||
"body": "Reactive Resume एउटा नि:शुल्क र खुला स्रोत रिजुमे निर्माणकर्ता हो जुन तपाइँको रिज्युम 1, 2, 3 को रूपमा सजिलो बनाउन, अद्यावधिक गर्ने र साझेदारी गर्ने सांसारिक कार्यहरू बनाउनको लागि बनाइएको हो। यस एपको साथ, तपाइँ धेरै रिजुमेहरू सिर्जना गर्न सक्नुहुन्छ, तिनीहरूलाई भर्तीकर्ता वा साथीहरूसँग साझा गर्न सक्नुहुन्छ। एक अद्वितीय लिङ्क मार्फत र यसलाई PDF को रूपमा प्रिन्ट गर्नुहोस्, सबै नि: शुल्क, कुनै विज्ञापनहरू, कुनै ट्र्याकिङ बिना, तपाईंको डाटाको अखण्डता र गोपनीयता गुमाए बिना।",
|
||||
"heading": "सारांश"
|
||||
}
|
||||
}
|
||||
135
client/public/locales/ne/modals.json
Normal file
135
client/public/locales/ne/modals.json
Normal file
@ -0,0 +1,135 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "रिसेट पासवर्ड इमेल पठाउनुहोस्"
|
||||
},
|
||||
"body": "तपाईले रिकभर गर्न चाहनु भएको खातासँग सम्बन्धित इमेल ठेगाना मात्र प्रविष्ट गर्नुहोस्।",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "इ - मेल ठेगाना"
|
||||
}
|
||||
},
|
||||
"heading": "आफ्नो पासवर्ड बिर्सनुभयो?",
|
||||
"help-text": "यदि खाता अवस्थित छ भने, तपाईंले आफ्नो पासवर्ड रिसेट गर्न लिङ्क भएको इमेल प्राप्त गर्नुहुनेछ।"
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "लग - इन"
|
||||
},
|
||||
"body": "कृपया लगइन गर्न र पहुँच गर्न, व्यवस्थापन गर्न र आफ्नो बायोडाटा साझेदारी गर्न आफ्नो खातासँग सम्बन्धित प्रयोगकर्ता नाम र पासवर्ड प्रविष्ट गर्नुहोस्।",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "पासवर्ड"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "तपाईं आफ्नो इमेल ठेगाना पनि प्रविष्ट गर्न सक्नुहुन्छ",
|
||||
"label": "प्रयोगकर्ता नाम"
|
||||
}
|
||||
},
|
||||
"heading": "आफ्नो खातामा लगइन गर्नुहोस्",
|
||||
"recover-text": "यदि तपाईंले आफ्नो पासवर्ड बिर्सनुभएको छ भने, तपाईं <1>आफ्नो खाता पुन: प्राप्त गर्न सक्नुहुन्छ</1> यहाँ।",
|
||||
"register-text": "यदि तपाईंसँग छैन भने, तपाईं <1>खाता सिर्जना गर्न सक्नुहुन्छ</1> यहाँ।"
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "दर्ता गर्नुहोस्",
|
||||
"google": "Google मा दर्ता गर्नुहोस्"
|
||||
},
|
||||
"body": "खाता बनाउनको लागि कृपया आफ्नो व्यक्तिगत जानकारी प्रविष्ट गर्नुहोस्।",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "पासवर्ड सुनिश्चित गर्नुहोस"
|
||||
},
|
||||
"email": {
|
||||
"label": "इ - मेल ठेगाना"
|
||||
},
|
||||
"name": {
|
||||
"label": "पुरा नाम"
|
||||
},
|
||||
"password": {
|
||||
"label": "पासवर्ड"
|
||||
},
|
||||
"username": {
|
||||
"label": "प्रयोगकर्ता नाम"
|
||||
}
|
||||
},
|
||||
"heading": "खाता खोल्नुहोस्",
|
||||
"loginText": "यदि तपाइँसँग पहिले नै खाता छ भने, तपाइँ यहाँ <1> लगइन गर्न सक्नुहुन्छ</1> ।"
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "नयाँ पासवर्ड सेट गर्नुहोस्"
|
||||
},
|
||||
"body": "आफ्नो खाताको लागि नयाँ पासवर्ड प्रविष्ट गर्नुहोस्।",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "पासवर्ड सुनिश्चित गर्नुहोस"
|
||||
},
|
||||
"password": {
|
||||
"label": "पासवर्ड"
|
||||
}
|
||||
},
|
||||
"heading": "आफ्नो पासवर्ड रिसेट गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "रिजुमे सिर्जना गर्नुहोस्"
|
||||
},
|
||||
"body": "यसलाई नाम दिएर आफ्नो रिजुमे निर्माण सुरु गर्नुहोस्। यो तपाईंले आवेदन गरिरहनुभएको भूमिका वा तपाईंको मनपर्ने खाजाको सन्दर्भमा हुन सक्छ।",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "नाम"
|
||||
},
|
||||
"public": {
|
||||
"label": "के सार्वजनिक रूपमा पहुँचयोग्य छ?"
|
||||
},
|
||||
"slug": {
|
||||
"label": "स्लग"
|
||||
}
|
||||
},
|
||||
"heading": "नयाँ रिजुमे सिर्जना गर्नुहोस्"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "बाह्य स्रोतहरूबाट आयात गर्नुहोस्",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSON अपलोड गर्नुहोस्"
|
||||
},
|
||||
"body": "यदि तपाईंसँग <1>प्रमाणित JSON रिजुमे छ भने</1> जान तयार छ, तपाइँ यसलाई प्रतिक्रियाशील पुन: सुरुमा तपाइँको विकासलाई द्रुत ट्र्याक गर्न प्रयोग गर्न सक्नुहुन्छ। तलको बटनमा क्लिक गर्नुहोस् र सुरु गर्नको लागि मान्य JSON फाइल अपलोड गर्नुहोस्।",
|
||||
"heading": "JSON पुनःसुरुबाट आयात गर्नुहोस्"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "ZIP अभिलेख अपलोड गर्नुहोस्"
|
||||
},
|
||||
"body": "तपाईंले LinkedIn बाट आफ्नो डाटा निर्यात गरेर र Reactive Resume मा फिल्डहरू स्वत: भर्न प्रयोग गरेर समय बचत गर्न सक्नुहुन्छ। <1>डेटा गोपनीयतामा जानुहोस्</1> LinkedIn मा खण्ड र आफ्नो डाटा को एक संग्रह अनुरोध। यो उपलब्ध भएपछि, तलको ZIP फाइल अपलोड गर्नुहोस्।",
|
||||
"heading": "LinkedIn बाट आयात गर्नुहोस्"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSON अपलोड गर्नुहोस्",
|
||||
"upload-json-v2": "v2 बाट JSON अपलोड गर्नुहोस्"
|
||||
},
|
||||
"body": "यदि तपाइँसँग JSON छ जुन Reactive Resume को हालको संस्करणको साथ निर्यात गरिएको थियो, तपाइँ यसलाई फेरि सम्पादन योग्य संस्करण प्राप्त गर्न यहाँ आयात गर्न सक्नुहुन्छ।",
|
||||
"heading": "प्रतिक्रियात्मक पुन: सुरुबाट आयात गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "पुन: नामकरण गर्नुहोस्"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "नाम"
|
||||
},
|
||||
"slug": {
|
||||
"label": "स्लग"
|
||||
}
|
||||
},
|
||||
"heading": "आफ्नो रिजुमे पुन: नामाकरण गर्नुहोस्"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -84,7 +84,9 @@
|
||||
"toggle-page-break-line": "Regel voor pagina-einde in-/uitschakelen",
|
||||
"toggle-sidebars": "Zijbalk tonen/verbergen",
|
||||
"zoom-in": "Inzoomen",
|
||||
"zoom-out": "Uitzoomen"
|
||||
"zoom-out": "Uitzoomen",
|
||||
"undo": "Ongedaan maken",
|
||||
"redo": "Redo"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
||||
363
client/public/locales/no/builder.json
Normal file
363
client/public/locales/no/builder.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "Legg til ny {{token}}",
|
||||
"delete": "Slett {{token}}",
|
||||
"edit": "Rediger {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "Kolonner",
|
||||
"tooltip": "Endre antall kolonner"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "Dato"
|
||||
},
|
||||
"description": {
|
||||
"label": "Beskrivelse"
|
||||
},
|
||||
"email": {
|
||||
"label": "E-postadresse"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "La feltet stå tomt hvis det fremdeles finnes",
|
||||
"label": "Sluttdato"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "Nøkkelord"
|
||||
},
|
||||
"level": {
|
||||
"label": "Nivå"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "Nivå (Nummer)"
|
||||
},
|
||||
"name": {
|
||||
"label": "Navn"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Telefonnummer"
|
||||
},
|
||||
"position": {
|
||||
"label": "Stilling"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "Startdato"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "Teksting"
|
||||
},
|
||||
"summary": {
|
||||
"label": "Sammendrag"
|
||||
},
|
||||
"title": {
|
||||
"label": "Tittel"
|
||||
},
|
||||
"url": {
|
||||
"label": "Hjemmeside"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "Side"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "Slett",
|
||||
"duplicate": "Dupliser",
|
||||
"edit": "Rediger"
|
||||
},
|
||||
"empty-text": "Denne listen er tom."
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "Er du sikker på at du vil slette dette elementet? Handlingen kan ikke angres.",
|
||||
"delete-section": "Slett seksjon",
|
||||
"rename-section": "Gi nytt navn til seksjon",
|
||||
"toggle-visibility": "Slå på synlighet"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "Center Artboard",
|
||||
"copy-link": "Kopier lenke til CV",
|
||||
"export-pdf": "Eksporter PDF",
|
||||
"toggle-orientation": "Bytt sideorientering",
|
||||
"toggle-page-break-line": "Veksle på sideskiftlinje",
|
||||
"toggle-sidebars": "Slå av sidefelt",
|
||||
"zoom-in": "Zoom inn",
|
||||
"zoom-out": "Zoome ut",
|
||||
"undo": "Angre",
|
||||
"redo": "Gjøre om"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "Slett",
|
||||
"duplicate": "Duplisere",
|
||||
"rename": "Gi nytt navn",
|
||||
"share-link": "Del lenke",
|
||||
"tooltips": {
|
||||
"delete": "Er du sikker på at du vil slette denne CV-en? Dette er en irreversibel handling.",
|
||||
"share-link": "Du må endre synligheten til CV-en til offentlig for å gjøre den synlig for andre."
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "Priser"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "Fotofiltre"
|
||||
},
|
||||
"heading": "Grunnleggende",
|
||||
"headline": {
|
||||
"label": "Overskrift"
|
||||
},
|
||||
"name": {
|
||||
"label": "Fullt navn"
|
||||
},
|
||||
"birthdate": {
|
||||
"label": "Fødselsdato"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "Grense"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "Gråtoner"
|
||||
},
|
||||
"heading": "Effekter"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "Form"
|
||||
},
|
||||
"size": {
|
||||
"heading": "Størrelse (i px)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "Fjern bilde",
|
||||
"upload": "Last opp bilde"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "Utsteder"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "Studieområde"
|
||||
},
|
||||
"courses": {
|
||||
"label": "Kurs"
|
||||
},
|
||||
"degree": {
|
||||
"label": "Grad"
|
||||
},
|
||||
"grade": {
|
||||
"label": "Karakter"
|
||||
},
|
||||
"institution": {
|
||||
"label": "Institusjon"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "Adresse"
|
||||
},
|
||||
"city": {
|
||||
"label": "By"
|
||||
},
|
||||
"country": {
|
||||
"label": "Land"
|
||||
},
|
||||
"heading": "plassering",
|
||||
"postal-code": {
|
||||
"label": "postnummer"
|
||||
},
|
||||
"region": {
|
||||
"label": "Region"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "Nettverk"
|
||||
},
|
||||
"username": {
|
||||
"label": "Brukernavn"
|
||||
}
|
||||
},
|
||||
"heading": "Profiler",
|
||||
"heading_one": "Profil"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "Forlegger"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "Forhold"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "Seksjon"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "Organisasjon"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "Tilpasset CSS"
|
||||
},
|
||||
"export": {
|
||||
"heading": "Eksport",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "Last ned en JSON-versjon av CV-en din som kan importeres tilbake til Reactive CV."
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "Generer PDF-fil",
|
||||
"secondary": "Vennligst vent mens PDF-en din blir generert, dette kan ta opptil 15 sekunder."
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "Last ned en PDF av CV-en din som du kan skrive ut og sende ut til drømmejobben. Denne filen kan ikke importeres tilbake for videre redigering."
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "Oppsett",
|
||||
"tooltip": {
|
||||
"reset-layout": "Tilbakestill layout"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "Noe som hindrer deg i å lage en CV? Eller har du en fantastisk idé å legge til? Ta opp et problem på GitHub for å komme i gang.",
|
||||
"button": "GitHub-problemer",
|
||||
"heading": "Bugs? Funksjonsforespørsler?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "Hvis du likte å bruke Reactive Resume, kan du vurdere å donere så mye du kan for å holde appen oppe og kjøre, uten annonser og gratis for alltid.",
|
||||
"button": "Kjøp meg en kaffe",
|
||||
"heading": "Doner til Reactive CV"
|
||||
},
|
||||
"github": "Kildekode",
|
||||
"heading": "Linker"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "Dato",
|
||||
"secondary": "Datoformat for bruk på tvers av appen"
|
||||
},
|
||||
"heading": "Global",
|
||||
"language": {
|
||||
"primary": "Språk",
|
||||
"secondary": "Visningsspråk for bruk på tvers av appen"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "Tema"
|
||||
}
|
||||
},
|
||||
"heading": "Innstillinger",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "Break Line",
|
||||
"secondary": "Vis en linje på alle sider for å markere høyden på en A4-side"
|
||||
},
|
||||
"heading": "Side",
|
||||
"orientation": {
|
||||
"disabled": "Har ingen effekt når det bare er én side",
|
||||
"primary": "Orientering",
|
||||
"secondary": "Om sider skal vises horisontalt eller vertikalt"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "Gjenoppta",
|
||||
"reset": {
|
||||
"primary": "Tilbakestill alt",
|
||||
"secondary": "Gjorde for mange feil? Klikk her for å tilbakestille alle endringer og starte fra bunnen av. Vær forsiktig, denne handlingen kan ikke reverseres."
|
||||
},
|
||||
"sample": {
|
||||
"primary": "Last inn prøvedata",
|
||||
"secondary": "Ikke sikker på hvor du skal begynne? Klikk her for å laste inn noen eksempeldata for å se hvordan en fullstendig CV ser ut."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "Deling",
|
||||
"short-url": {
|
||||
"label": "Foretrekker kort URL"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "Tillat alle med en lenke å se CV-en din",
|
||||
"title": "Offentlig"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "Maler"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "Bakgrunn"
|
||||
},
|
||||
"primary": {
|
||||
"label": "Hoved"
|
||||
},
|
||||
"text": {
|
||||
"label": "Tekst"
|
||||
}
|
||||
},
|
||||
"heading": "Tema"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "Fontfamilie"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "Skriftstørrelse"
|
||||
}
|
||||
},
|
||||
"heading": "Typografi",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "Kropp"
|
||||
},
|
||||
"headings": {
|
||||
"label": "Overskrifter"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user