Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5eed1186ff | |||
| a87a9b3247 | |||
| 7f1c82cd91 | |||
| 048c1ed3ed | |||
| 9a2570d7e7 | |||
| 00b9c2156d | |||
| ff8b22274f | |||
| 786937f847 | |||
| c95efee8ec | |||
| 776d2f79a6 | |||
| 25a6b8cce6 | |||
| f6d7cae17b | |||
| 944a0b5fb1 | |||
| 7769653224 | |||
| ccdc5b5fae | |||
| 20158f573e | |||
| 87c60729b5 | |||
| a03a50b7c6 | |||
| fb85ccf501 | |||
| 3179442d8f | |||
| 33d3c52cd9 | |||
| 1d33e01a43 | |||
| 52ff221dd1 | |||
| 5afe178e23 | |||
| 9118b76084 | |||
| 5a62b527b9 | |||
| 2e9e14dc72 | |||
| 0a0b4893aa | |||
| 6277f81e26 | |||
| d550150787 | |||
| 7626b2153f | |||
| 6d17d1001d | |||
| 0273738d7a | |||
| 322df25ecc | |||
| ab3867d9a8 | |||
| 9bf8ec88f4 | |||
| 685f4d37a6 | |||
| f3b3fe8ac9 | |||
| d5fa49172a | |||
| b8303b9977 | |||
| 16d06c6356 | |||
| 79ddd887d9 | |||
| c394bc6725 | |||
| 9e6d7630f4 | |||
| e2fbdd3c2f | |||
| 849171af8f | |||
| 884975dda6 | |||
| 03cbf22c9b | |||
| a10cee2efa | |||
| 479c94a11d | |||
| c057f31e97 | |||
| d0bc9db6e5 | |||
| e2dd8dd1d7 | |||
| f2ff12faa6 | |||
| 50cc3d7da8 | |||
| 60b1f7a816 | |||
| 33d2bf043b | |||
| 86b20dcae6 | |||
| caf4936c9b | |||
| 7e864d2447 | |||
| ff324688f6 | |||
| efaeb1b341 | |||
| 488cb7f8a2 | |||
| 974fa08651 | |||
| 8f3312e8a8 | |||
| 57d5da0490 | |||
| daeb67319e | |||
| 213665bd1d | |||
| dfc48d6aa9 | |||
| d71d40453f | |||
| 635afbc892 | |||
| e90037e363 | |||
| a730359736 | |||
| 80acfe97c7 | |||
| b6267d07ba | |||
| 910f764823 | |||
| 7a8f302c21 | |||
| fb0c3b55c1 | |||
| f9579855a9 | |||
| 0dd1e2720a | |||
| 331d2d3d26 | |||
| f56554c2d4 | |||
| 98131b389c | |||
| 7cfe6288e1 | |||
| 84041ef2ff | |||
| 9a2af8079e | |||
| 633162d9af | |||
| 50baa0227d | |||
| 18da00f2e2 | |||
| f4f0b2c4b5 | |||
| b7d3007d31 | |||
| 67384981c1 | |||
| 4390bccfb9 | |||
| 8f5632c5ad | |||
| 1facd2ad11 |
5
.devcontainer/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
||||
ARG VARIANT="16-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
|
||||
27
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
28
.env.example
@ -1,30 +1,26 @@
|
||||
# App
|
||||
# Shared
|
||||
TZ=UTC
|
||||
PUBLIC_URL=http://localhost
|
||||
PUBLIC_SERVER_URL=http://localhost/api
|
||||
PUBLIC_GOOGLE_CLIENT_ID=
|
||||
|
||||
# Server
|
||||
SECRET_KEY=
|
||||
|
||||
# URLs
|
||||
PUBLIC_URL=http://<SERVER-IP>
|
||||
PUBLIC_SERVER_URL=http://<SERVER-IP>/api
|
||||
|
||||
# Database
|
||||
POSTGRES_HOST=localhost
|
||||
POSTGRES_HOST=postgres
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USERNAME=postgres
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=postgres
|
||||
POSTGRES_DATABASE=postgres
|
||||
POSTGRES_SSL_CERT=
|
||||
|
||||
# Auth
|
||||
JWT_SECRET=
|
||||
JWT_EXPIRY_TIME=604800
|
||||
|
||||
# Google
|
||||
PUBLIC_GOOGLE_CLIENT_ID=
|
||||
GOOGLE_CLIENT_SECRET=
|
||||
GOOGLE_API_KEY=
|
||||
|
||||
# SendGrid (Optional)
|
||||
SENDGRID_API_KEY=
|
||||
SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID=
|
||||
SENDGRID_FROM_NAME=
|
||||
SENDGRID_FROM_EMAIL=
|
||||
SENDGRID_FROM_EMAIL=
|
||||
|
||||
# Flags
|
||||
PUBLIC_FLAG_DISABLE_SIGNUPS=false
|
||||
16
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@ -8,29 +8,29 @@ assignees: ''
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
<!-- A clear and concise description of what the bug is. -->
|
||||
|
||||
**Product Flavor**
|
||||
- [ ] Managed (https://rxresu.me)
|
||||
- [ ] Self Hosted
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
<!-- Steps to reproduce the behavior: -->
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
- OS: <!--[e.g. iOS]-->
|
||||
- Browser <!--[e.g. chrome, safari]-->
|
||||
- Version <!--[e.g. 22]-->
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
<!-- Add any other context about the problem here. -->
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/feature-request.md
vendored
@ -8,13 +8,13 @@ assignees: ''
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
<!-- A clear and concise description of what you want to happen. -->
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
<!-- Add any other context or screenshots about the feature request here. -->
|
||||
|
||||
22
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: 'docker'
|
||||
directory: '/server'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
|
||||
- package-ecosystem: 'docker'
|
||||
directory: '/client'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
|
||||
- package-ecosystem: 'gradle'
|
||||
directory: '/app'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
|
||||
- package-ecosystem: 'github-actions'
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
2
.github/workflows/digitalocean-deploy.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Install DigitalOcean CLI
|
||||
uses: digitalocean/action-doctl@v2.1.0
|
||||
uses: digitalocean/action-doctl@v2.1.1
|
||||
with:
|
||||
token: ${{ secrets.DIGITALOCEAN_TOKEN }}
|
||||
|
||||
|
||||
8
.github/workflows/docker-build-push.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and Push Client Image
|
||||
uses: docker/build-push-action@v2.9.0
|
||||
uses: docker/build-push-action@v2.10.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@ -52,7 +52,7 @@ jobs:
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and Push Server Image
|
||||
uses: docker/build-push-action@v2.9.0
|
||||
uses: docker/build-push-action@v2.10.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@ -81,7 +81,7 @@ jobs:
|
||||
password: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
- name: Build and Push Client Image
|
||||
uses: docker/build-push-action@v2.9.0
|
||||
uses: docker/build-push-action@v2.10.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@ -110,7 +110,7 @@ jobs:
|
||||
password: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
- name: Build and Push Server Image
|
||||
uses: docker/build-push-action@v2.9.0
|
||||
uses: docker/build-push-action@v2.10.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
|
||||
29
CHANGELOG.md
@ -2,6 +2,35 @@
|
||||
|
||||
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.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)
|
||||
|
||||
|
||||
|
||||
11
README.md
@ -1,11 +1,12 @@
|
||||
<img src="https://i.imgur.com/pc8Ingg.png" alt="Reactive Resume" width="256px" height="256px" />
|
||||
<img src="https://github.com/AmruthPillai/Reactive-Resume/blob/main/docs/static/logo.svg" alt="Reactive Resume" width="256px" height="256px" />
|
||||
|
||||
# Reactive Resume
|
||||
|
||||

|
||||

|
||||
[](https://github.com/AmruthPillai/Reactive-Resume/releases)
|
||||
[](https://github.com/AmruthPillai/Reactive-Resume/blob/main/LICENSE)
|
||||
[](https://translate.rxresu.me)
|
||||
[](https://hub.docker.com/r/amruthpillai/reactive-resume)
|
||||

|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2FAmruthPillai%2FReactive-Resume?ref=badge_shield)
|
||||
|
||||
## [Go to App](https://rxresu.me) | [Docs](https://docs.rxresu.me)
|
||||
@ -40,6 +41,7 @@ You have complete control over what goes into your resume, how it looks, what co
|
||||
- Bengali (বাংলা)
|
||||
- Chinese (中文)
|
||||
- Danish (Dansk)
|
||||
- Dutch (Nederlands)
|
||||
- English
|
||||
- French (Français)
|
||||
- German (Deutsch)
|
||||
@ -48,9 +50,12 @@ You have complete control over what goes into your resume, how it looks, what co
|
||||
- Kannada (ಕನ್ನಡ)
|
||||
- Malayalam (മലയാളം)
|
||||
- Polish (Polski)
|
||||
- Portuguese (Português)
|
||||
- Russian (русский)
|
||||
- Spanish (Español)
|
||||
- Tamil (தமிழ்)
|
||||
- Turkish (Türkçe)
|
||||
- Vietnamese (Tiếng Việt)
|
||||
|
||||
Help by [translating Reactive Resume](https://translate.rxresu.me) to your language!
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
FROM node:16-alpine as dependencies
|
||||
FROM node:17-alpine as dependencies
|
||||
|
||||
RUN apk add --no-cache curl g++ make python3 \
|
||||
&& curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
|
||||
@ -11,7 +11,7 @@ COPY ./client/package.json ./client/package.json
|
||||
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
FROM node:16-alpine as builder
|
||||
FROM node:17-alpine as builder
|
||||
|
||||
RUN apk add --no-cache curl g++ make python3 \
|
||||
&& curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
|
||||
@ -27,7 +27,7 @@ COPY --from=dependencies /app/client/node_modules ./client/node_modules
|
||||
RUN pnpm run build:schema
|
||||
RUN pnpm run build:client
|
||||
|
||||
FROM node:16-alpine as production
|
||||
FROM node:17-alpine as production
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@ -49,4 +49,7 @@ EXPOSE 3000
|
||||
|
||||
ENV PORT 3000
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=20s --retries=3 --start-period=15s \
|
||||
CMD curl -fSs 127.0.0.1:3000 || exit 1
|
||||
|
||||
CMD [ "pnpm", "run", "start:client" ]
|
||||
@ -1,70 +1,51 @@
|
||||
import { Language } from '@mui/icons-material';
|
||||
import { IconButton, Popover } from '@mui/material';
|
||||
import { IconButton, Menu, MenuItem } from '@mui/material';
|
||||
import { useRouter } from 'next/router';
|
||||
import { useTranslation } from 'next-i18next';
|
||||
import { MouseEvent, useState } from 'react';
|
||||
|
||||
import { languages } from '@/config/languages';
|
||||
import { useAppDispatch } from '@/store/hooks';
|
||||
import { setResumeState } from '@/store/resume/resumeSlice';
|
||||
|
||||
import styles from './LanguageSwitcher.module.scss';
|
||||
import { TRANSLATE_URL } from '@/constants/index';
|
||||
|
||||
const LanguageSwitcher = () => {
|
||||
const router = useRouter();
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);
|
||||
|
||||
const handleClick = (event: MouseEvent<HTMLButtonElement>) => setAnchorEl(event.currentTarget);
|
||||
|
||||
const handleClose = () => setAnchorEl(null);
|
||||
|
||||
const handleChangeLanguage = (locale: string) => {
|
||||
const handleChange = (locale: string) => {
|
||||
const { pathname, asPath, query } = router;
|
||||
|
||||
handleClose();
|
||||
|
||||
document.cookie = `NEXT_LOCALE=${locale}; path=/; expires=2147483647`;
|
||||
dispatch(setResumeState({ path: 'metadata.locale', value: locale }));
|
||||
|
||||
router.push({ pathname, query }, asPath, { locale });
|
||||
};
|
||||
|
||||
const handleAddLanguage = () => window.open(TRANSLATE_URL, '_blank');
|
||||
|
||||
return (
|
||||
<div>
|
||||
<IconButton onClick={handleClick}>
|
||||
<Language />
|
||||
</IconButton>
|
||||
|
||||
<Popover
|
||||
anchorEl={anchorEl}
|
||||
open={Boolean(anchorEl)}
|
||||
onClose={handleClose}
|
||||
anchorOrigin={{
|
||||
vertical: 'top',
|
||||
horizontal: 'right',
|
||||
}}
|
||||
transformOrigin={{
|
||||
vertical: 'bottom',
|
||||
horizontal: 'right',
|
||||
}}
|
||||
>
|
||||
<div className={styles.popover}>
|
||||
<div className={styles.container}>
|
||||
{languages.map(({ code, name, localName }) => (
|
||||
<p key={code} className={styles.language} onClick={() => handleChangeLanguage(code)}>
|
||||
{name} {localName && `(${localName})`}
|
||||
</p>
|
||||
))}
|
||||
<Menu anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={handleClose}>
|
||||
{languages.map(({ code, name, localName }) => (
|
||||
<MenuItem key={code} onClick={() => handleChange(code)}>
|
||||
{name} {localName && `(${localName})`}
|
||||
</MenuItem>
|
||||
))}
|
||||
|
||||
<a href="https://translate.rxresu.me" target="_blank" rel="noreferrer" className={styles.language}>
|
||||
{t('common.footer.language.missing')}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</Popover>
|
||||
<MenuItem>
|
||||
<span className="font-bold" onClick={handleAddLanguage}>
|
||||
Add your language
|
||||
</span>
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -16,9 +16,13 @@ export const languages: Language[] = [
|
||||
{ code: 'it', name: 'Italian', localName: 'Italiano' },
|
||||
{ code: 'kn', name: 'Kannada', localName: 'ಕನ್ನಡ' },
|
||||
{ code: 'ml', name: 'Malayalam', localName: 'മലയാളം' },
|
||||
{ code: 'nl', name: 'Dutch', localName: 'Nederlands' },
|
||||
{ code: 'pl', name: 'Polish', localName: 'Polski' },
|
||||
{ code: 'pt', name: 'Portuguese', localName: 'Português' },
|
||||
{ code: 'ru', name: 'Russian', localName: 'русский' },
|
||||
{ code: 'ta', name: 'Tamil', localName: 'தமிழ்' },
|
||||
{ code: 'tr', name: 'Turkish', localName: 'Türkçe' },
|
||||
{ code: 'vi', name: 'Vietnamese', localName: 'Tiếng Việt' },
|
||||
{ code: 'zh', name: 'Chinese', localName: '中文' },
|
||||
].sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
|
||||
3
client/constants/flags.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import env from '@beam-australia/react-env';
|
||||
|
||||
export const FLAG_DISABLE_SIGNUPS = env('FLAG_DISABLE_SIGNUPS') === 'true';
|
||||
@ -10,6 +10,8 @@ export const FILENAME_TIMESTAMP = 'DDMMYYYYHHmmss';
|
||||
|
||||
// Links
|
||||
export const DONATION_URL = 'https://paypal.me/RajaRajanA';
|
||||
export const TRANSLATE_URL = 'https://translate.rxresu.me/';
|
||||
export const DIGITALOCEAN_URL = 'https://pillai.xyz/digitalocean';
|
||||
export const GITHUB_URL = 'https://github.com/AmruthPillai/Reactive-Resume';
|
||||
export const PRODUCT_HUNT_URL = 'https://www.producthunt.com/posts/reactive-resume-v3';
|
||||
export const GITHUB_ISSUES_URL = 'https://github.com/AmruthPillai/Reactive-Resume/issues/new/choose';
|
||||
|
||||
@ -12,6 +12,7 @@ import toast from 'react-hot-toast';
|
||||
import { useIsMutating, useMutation } from 'react-query';
|
||||
|
||||
import BaseModal from '@/components/shared/BaseModal';
|
||||
import { FLAG_DISABLE_SIGNUPS } from '@/constants/flags';
|
||||
import { login, LoginParams, loginWithGoogle, LoginWithGoogleParams } from '@/services/auth';
|
||||
import { ServerError } from '@/services/axios';
|
||||
import { useAppDispatch, useAppSelector } from '@/store/hooks';
|
||||
@ -167,11 +168,13 @@ const LoginModal: React.FC = () => {
|
||||
/>
|
||||
</form>
|
||||
|
||||
<p className="text-xs">
|
||||
<Trans t={t} i18nKey="modals.auth.login.register-text">
|
||||
If you don't have one, you can <a onClick={handleCreateAccount}>create an account</a> here.
|
||||
</Trans>
|
||||
</p>
|
||||
{!FLAG_DISABLE_SIGNUPS && (
|
||||
<p className="text-xs">
|
||||
<Trans t={t} i18nKey="modals.auth.login.register-text">
|
||||
If you don't have one, you can <a onClick={handleCreateAccount}>create an account</a> here.
|
||||
</Trans>
|
||||
</p>
|
||||
)}
|
||||
|
||||
<p className="text-xs">
|
||||
<Trans t={t} i18nKey="modals.auth.login.recover-text">
|
||||
|
||||
@ -58,7 +58,7 @@ const CreateResumeModal: React.FC = () => {
|
||||
const slug = name
|
||||
? name
|
||||
.toLowerCase()
|
||||
.replace(/[`~!@#$%^&*()_|+=?;:'",.<>{}[]\\\/]/gi, '')
|
||||
.replace(/[^\w\s]/gi, '')
|
||||
.replace(/[ ]/gi, '-')
|
||||
: '';
|
||||
|
||||
|
||||
@ -56,7 +56,7 @@ const RenameResumeModal: React.FC = () => {
|
||||
const slug = name
|
||||
? name
|
||||
.toLowerCase()
|
||||
.replace(/[`~!@#$%^&*()_|+=?;:'",.<>{}[]\\\/]/gi, '')
|
||||
.replace(/[^\w\s]/gi, '')
|
||||
.replace(/[ ]/gi, '-')
|
||||
: '';
|
||||
|
||||
|
||||
@ -3,7 +3,27 @@ const path = require('path');
|
||||
const i18nConfig = {
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['ar', 'bn', 'da', 'de', 'en', 'es', 'fr', 'hi', 'it', 'kn', 'ml', 'pl', 'ta', 'tr', 'zh'],
|
||||
locales: [
|
||||
'ar',
|
||||
'bn',
|
||||
'da',
|
||||
'de',
|
||||
'en',
|
||||
'es',
|
||||
'fr',
|
||||
'hi',
|
||||
'it',
|
||||
'kn',
|
||||
'ml',
|
||||
'nl',
|
||||
'pl',
|
||||
'pt',
|
||||
'ru',
|
||||
'ta',
|
||||
'tr',
|
||||
'vi',
|
||||
'zh',
|
||||
],
|
||||
},
|
||||
nsSeparator: '.',
|
||||
localePath: path.resolve('./public/locales'),
|
||||
|
||||
@ -15,8 +15,8 @@
|
||||
"@hookform/resolvers": "2.8.8",
|
||||
"@monaco-editor/react": "^4.3.1",
|
||||
"@mui/icons-material": "^5.5.1",
|
||||
"@mui/lab": "^5.0.0-alpha.73",
|
||||
"@mui/material": "^5.5.1",
|
||||
"@mui/lab": "^5.0.0-alpha.74",
|
||||
"@mui/material": "^5.5.2",
|
||||
"@reduxjs/toolkit": "^1.8.0",
|
||||
"axios": "^0.26.1",
|
||||
"clsx": "^1.1.1",
|
||||
@ -36,7 +36,7 @@
|
||||
"react-dnd-html5-backend": "^15.1.2",
|
||||
"react-dom": ">=17",
|
||||
"react-google-login": "^5.2.2",
|
||||
"react-hook-form": "^7.28.0",
|
||||
"react-hook-form": "^7.28.1",
|
||||
"react-hot-toast": "2.2.0",
|
||||
"react-hotkeys-hook": "^3.4.4",
|
||||
"react-icons": "^4.3.1",
|
||||
@ -53,23 +53,23 @@
|
||||
"webfontloader": "^1.6.28"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.17.7",
|
||||
"@babel/core": "^7.17.8",
|
||||
"@reactive-resume/schema": "workspace:*",
|
||||
"@tailwindcss/typography": "^0.5.2",
|
||||
"@types/downloadjs": "^1.4.3",
|
||||
"@types/lodash": "^4.14.180",
|
||||
"@types/node": "17.0.21",
|
||||
"@types/react": "17.0.40",
|
||||
"@types/node": "17.0.23",
|
||||
"@types/react": "17.0.42",
|
||||
"@types/react-beautiful-dnd": "^13.1.2",
|
||||
"@types/react-redux": "^7.1.23",
|
||||
"@types/tailwindcss": "^3.0.9",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@types/webfontloader": "^1.6.34",
|
||||
"autoprefixer": "^10.4.3",
|
||||
"autoprefixer": "^10.4.4",
|
||||
"eslint": "^8.11.0",
|
||||
"eslint-config-next": "12.1.0",
|
||||
"next-sitemap": "^2.5.10",
|
||||
"postcss": "^8.4.11",
|
||||
"next-sitemap": "^2.5.13",
|
||||
"postcss": "^8.4.12",
|
||||
"prettier": "^2.6.0",
|
||||
"sass": "^1.49.9",
|
||||
"tailwindcss": "^3.0.23",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Link as LinkIcon } from '@mui/icons-material';
|
||||
import { DarkMode, LightMode, Link as LinkIcon } from '@mui/icons-material';
|
||||
import { Masonry } from '@mui/lab';
|
||||
import { Button } from '@mui/material';
|
||||
import { Button, IconButton } from '@mui/material';
|
||||
import type { GetStaticProps, NextPage } from 'next';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
@ -13,13 +13,15 @@ import LanguageSwitcher from '@/components/shared/LanguageSwitcher';
|
||||
import Logo from '@/components/shared/Logo';
|
||||
import NoSSR from '@/components/shared/NoSSR';
|
||||
import { screenshots } from '@/config/screenshots';
|
||||
import { FLAG_DISABLE_SIGNUPS } from '@/constants/flags';
|
||||
import testimonials from '@/data/testimonials';
|
||||
import { logout } from '@/store/auth/authSlice';
|
||||
import { setTheme } from '@/store/build/buildSlice';
|
||||
import { useAppDispatch, useAppSelector } from '@/store/hooks';
|
||||
import { setModalState } from '@/store/modal/modalSlice';
|
||||
import styles from '@/styles/pages/Home.module.scss';
|
||||
|
||||
import { DONATION_URL, GITHUB_URL } from '../constants';
|
||||
import { DIGITALOCEAN_URL, DONATION_URL, GITHUB_URL } from '../constants';
|
||||
|
||||
export const getStaticProps: GetStaticProps = async ({ locale = 'en' }) => {
|
||||
return {
|
||||
@ -34,12 +36,15 @@ const Home: NextPage = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const theme = useAppSelector((state) => state.build.theme);
|
||||
const isLoggedIn = useAppSelector((state) => state.auth.isLoggedIn);
|
||||
|
||||
const handleLogin = () => dispatch(setModalState({ modal: 'auth.login', state: { open: true } }));
|
||||
|
||||
const handleRegister = () => dispatch(setModalState({ modal: 'auth.register', state: { open: true } }));
|
||||
|
||||
const handleToggle = () => dispatch(setTheme({ theme: theme === 'light' ? 'dark' : 'light' }));
|
||||
|
||||
const handleLogout = () => dispatch(logout());
|
||||
|
||||
return (
|
||||
@ -70,7 +75,7 @@ const Home: NextPage = () => {
|
||||
<>
|
||||
<Button onClick={handleLogin}>{t('landing.actions.login')}</Button>
|
||||
|
||||
<Button variant="outlined" onClick={handleRegister}>
|
||||
<Button variant="outlined" onClick={handleRegister} disabled={FLAG_DISABLE_SIGNUPS}>
|
||||
{t('landing.actions.register')}
|
||||
</Button>
|
||||
</>
|
||||
@ -175,7 +180,7 @@ const Home: NextPage = () => {
|
||||
</section>
|
||||
|
||||
<section className={styles.section}>
|
||||
<a href="https://pillai.xyz/digitalocean" target="_blank" rel="noreferrer">
|
||||
<a href={DIGITALOCEAN_URL} target="_blank" rel="noreferrer">
|
||||
<Image src="/images/sponsors/digitalocean.svg" alt="Powered By DigitalOcean" width={200} height={40} />
|
||||
</a>
|
||||
</section>
|
||||
@ -187,7 +192,11 @@ const Home: NextPage = () => {
|
||||
<div>v{process.env.appVersion}</div>
|
||||
</div>
|
||||
|
||||
<LanguageSwitcher />
|
||||
<div className={styles.actions}>
|
||||
<IconButton onClick={handleToggle}>{theme === 'dark' ? <DarkMode /> : <LightMode />}</IconButton>
|
||||
|
||||
<LanguageSwitcher />
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
);
|
||||
|
||||
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 215 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 319 KiB After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 329 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 267 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 255 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 382 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 311 KiB After Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 103 KiB |
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "مشروع عاطفي من تأليف <1> أمروث بيلاي</1>",
|
||||
"language": {
|
||||
"missing": "هل تفتقد لغتك؟"
|
||||
},
|
||||
"license": "من قبل المجتمع للمجتمع."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>অমরুথ পিল্লাই</1>-এর একটি প্যাশন প্রোজেক্ট",
|
||||
"language": {
|
||||
"missing": "আপনার ভাষা অনুপস্থিত?"
|
||||
},
|
||||
"license": "সম্প্রদায়ের দ্বারা, সম্প্রদায়ের জন্য।"
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Et passionsprojekt af <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Mangler du dit sprog?"
|
||||
},
|
||||
"license": "Af fællesskabet, for fællesskabet."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Ein Herzensprojekt von <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Ihre Sprache fehlt?"
|
||||
},
|
||||
"license": "Von der Gemeinschaft, für die Gemeinschaft."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "A passion project by <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Missing your language?"
|
||||
},
|
||||
"license": "By the community, for the community."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Un proyecto apasionante de <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Idioma ausente?"
|
||||
},
|
||||
"license": "Por la comunidad, para la comunidad."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Un projet passionné de <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Il manque votre langue ?"
|
||||
},
|
||||
"license": "Par la communauté, pour la communauté."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>अमृत पिल्लै</1> . का एक जुनूनी प्रोजेक्ट",
|
||||
"language": {
|
||||
"missing": "आपकी भाषा याद आ रही है?"
|
||||
},
|
||||
"license": "समाज के लिए, समाज के लिए।"
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Un progetto nato dalla passione di <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Non trovi la tua lingua?"
|
||||
},
|
||||
"license": "Dalla community, per la community."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>ಅಮೃತ್ ಪಿಳ್ಳೈ</1> ಅವರು ಉತ್ಸಾಹದಿಂದ ಮಾಡಿರುವ ಪ್ರಾಜೆಕ್ಟ್",
|
||||
"language": {
|
||||
"missing": "ನಿಮ್ಮ ಭಾಷೆ ಕಾಣೆಯಾಗಿದೆಯೇ?"
|
||||
},
|
||||
"license": "ಸಮುದಾಯದಿಂದ, ಸಮುದಾಯಕ್ಕಾಗಿ."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>അമൃത് പിള്ളയുടെ</1> ഒരു പാഷൻ പ്രോജക്റ്റ്",
|
||||
"language": {
|
||||
"missing": "നിങ്ങളുടെ ഭാഷ കാണുന്നില്ലേ?"
|
||||
},
|
||||
"license": "സമൂഹത്താൽ, സമൂഹത്തിന് വേണ്ടി."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
358
client/public/locales/nl/builder.json
Normal file
@ -0,0 +1,358 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "Nieuw {{token}} toevoegen",
|
||||
"delete": "{{token}} verwijderen",
|
||||
"edit": "Bewerk {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "Kolommen",
|
||||
"tooltip": "Aantal kolommen wijzigen"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "Datum"
|
||||
},
|
||||
"description": {
|
||||
"label": "Beschrijving"
|
||||
},
|
||||
"email": {
|
||||
"label": "E-mailadres"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "Laat dit veld leeg, indien nog aanwezig",
|
||||
"label": "Einddatum"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "Trefwoorden"
|
||||
},
|
||||
"level": {
|
||||
"label": "Niveau"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "Niveau (nummer)"
|
||||
},
|
||||
"name": {
|
||||
"label": "Naam"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Telefoonnummer"
|
||||
},
|
||||
"position": {
|
||||
"label": "Functie"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "Startdatum"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "Ondertitel"
|
||||
},
|
||||
"summary": {
|
||||
"label": "Samenvatting"
|
||||
},
|
||||
"title": {
|
||||
"label": "Titel"
|
||||
},
|
||||
"url": {
|
||||
"label": "Website"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "Pagina"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "Verwijderen",
|
||||
"duplicate": "Dupliceren",
|
||||
"edit": "Bewerken"
|
||||
},
|
||||
"empty-text": "Deze lijst is leeg."
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "Weet je zeker dat je dit item wilt verwijderen? Dit is onomkeerbaar.",
|
||||
"delete-section": "Sectie verwijderen",
|
||||
"rename-section": "Sectie hernoemen",
|
||||
"toggle-visibility": "Zichtbaarheid aan/uit"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "Tekengebied Centreren",
|
||||
"copy-link": "Link naar CV Kopiëren",
|
||||
"export-pdf": "Exporteer PDF",
|
||||
"toggle-orientation": "Oriëntatie van pagina wijzigen",
|
||||
"toggle-page-break-line": "Regel voor pagina-einde in-/uitschakelen",
|
||||
"toggle-sidebars": "Zijbalk tonen/verbergen",
|
||||
"zoom-in": "Inzoomen",
|
||||
"zoom-out": "Uitzoomen"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "Verwijderen",
|
||||
"duplicate": "Dupliceren",
|
||||
"rename": "Hernoemen",
|
||||
"share-link": "Link delen",
|
||||
"tooltips": {
|
||||
"delete": "Weet je zeker dat je dit cv wilt verwijderen? Dit is onomkeerbaar.",
|
||||
"share-link": "Je moet de zichtbaarheid van jouw cv veranderen in openbaar om het zichtbaar te maken voor anderen."
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "Onderscheidingen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "Foto Filters"
|
||||
},
|
||||
"heading": "Basis",
|
||||
"headline": {
|
||||
"label": "Koptekst"
|
||||
},
|
||||
"name": {
|
||||
"label": "Volledige naam"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "Rand"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "Grijswaarden"
|
||||
},
|
||||
"heading": "Effecten"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "Vorm"
|
||||
},
|
||||
"size": {
|
||||
"heading": "Grootte (in px)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "Foto Verwijderen",
|
||||
"upload": "Foto Uploaden"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "Verstrekker"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "Studiegebied"
|
||||
},
|
||||
"courses": {
|
||||
"label": "Cursussen"
|
||||
},
|
||||
"degree": {
|
||||
"label": "Graad"
|
||||
},
|
||||
"grade": {
|
||||
"label": "Cijfer"
|
||||
},
|
||||
"institution": {
|
||||
"label": "Instelling"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "Adres"
|
||||
},
|
||||
"city": {
|
||||
"label": "Stad"
|
||||
},
|
||||
"country": {
|
||||
"label": "Land"
|
||||
},
|
||||
"heading": "Locatie",
|
||||
"postal-code": {
|
||||
"label": "Postcode"
|
||||
},
|
||||
"region": {
|
||||
"label": "Regio"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "Netwerk"
|
||||
},
|
||||
"username": {
|
||||
"label": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"heading": "Profielen",
|
||||
"heading_one": "Profiel"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "Uitgever"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "Relatie"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "Sectie"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "Organisatie"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "Aangepaste CSS"
|
||||
},
|
||||
"export": {
|
||||
"heading": "Exporteren",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "Download een JSON-versie van je cv die weer kan worden geïmporteerd in deze CV maker."
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "PDF genereren",
|
||||
"secondary": "Een ogenblik geduld s.v.p. terwijl uw PDF wordt gegenereerd, dit kan tot 15 seconden duren."
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "Download een pdf van je cv die je kunt printen en gebruiken om je droombaan te bekomen. Dit bestand kan niet opnieuw worden geïmporteerd voor verdere bewerking."
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "Opmaak",
|
||||
"tooltip": {
|
||||
"reset-layout": "Opmaak Resetten"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "Houdt iets je tegen om een cv te maken? Of heb je een geweldig idee om toe te voegen? Plaats een issue op GitHub om aan de slag te gaan.",
|
||||
"button": "GitHub problemen",
|
||||
"heading": "Bugs? Functieverzoeken?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "Als Je Reactive Resume graag gebruikt, kun je overwegen zoveel mogelijk te doneren om de app in de lucht te houden, zonder advertenties en voor altijd gratis.",
|
||||
"button": "Betaal me een koffie",
|
||||
"heading": "Doneer aan Reactiv Resume"
|
||||
},
|
||||
"github": "Broncode",
|
||||
"heading": "Links"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "Datum",
|
||||
"secondary": "Datumformaat die gebruikt moet worden in de hele app"
|
||||
},
|
||||
"heading": "Globaal",
|
||||
"language": {
|
||||
"primary": "Taal",
|
||||
"secondary": "Toon de te gebruiken taal in de app"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "Thema"
|
||||
}
|
||||
},
|
||||
"heading": "Instellingen",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "Breek Lijn",
|
||||
"secondary": "Toon een lijn op alle pagina's om de hoogte van een A4-pagina te markeren"
|
||||
},
|
||||
"heading": "Pagina",
|
||||
"orientation": {
|
||||
"disabled": "Heeft geen effect als er maar één pagina is",
|
||||
"primary": "Oriëntatie",
|
||||
"secondary": "Pagina's horizontaal of verticaal weergeven"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "Hervatten",
|
||||
"reset": {
|
||||
"primary": "Alles Resetten",
|
||||
"secondary": "Te veel fouten gemaakt? Klik hier om alle wijzigingen te resetten en helemaal opnieuw te beginnen. Wees voorzichtig, deze actie kan niet worden teruggedraaid."
|
||||
},
|
||||
"sample": {
|
||||
"primary": "Laad voorbeeldgegevens",
|
||||
"secondary": "Weet je niet waar je moet beginnen? Klik hier om enkele voorbeeldgegevens te laden om te zien hoe een compleet cv eruitziet."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "Delen",
|
||||
"short-url": {
|
||||
"label": "Liever korte URL"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "Laat iedereen met een link je cv bekijken",
|
||||
"title": "Openbaar"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "Sjablonen"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "Achtergrond"
|
||||
},
|
||||
"primary": {
|
||||
"label": "Voornaamste"
|
||||
},
|
||||
"text": {
|
||||
"label": "Tekst"
|
||||
}
|
||||
},
|
||||
"heading": "Thema"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "Lettertype"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "Lettertypegrootte"
|
||||
}
|
||||
},
|
||||
"heading": "Typografie",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "Berichttekst"
|
||||
},
|
||||
"headings": {
|
||||
"label": "Koppen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
29
client/public/locales/nl/common.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"avatar": {
|
||||
"menu": {
|
||||
"greeting": "Hallo",
|
||||
"logout": "Afmelden"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Een passieproject van <1>Amruth Pillai</1>",
|
||||
"license": "Door de gemeenschap, voor de gemeenschap."
|
||||
},
|
||||
"markdown": {
|
||||
"help-text": "Deze sectie ondersteunt <1>html</1> opmaak."
|
||||
},
|
||||
"date": {
|
||||
"present": "Heden"
|
||||
},
|
||||
"subtitle": "Een gratis en open source cv maker.",
|
||||
"title": "Reactive Resume",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "Upload alleen bestanden onder de 2 megabytes.",
|
||||
"upload-photo-size": "Upload alleen foto's onder de 2 megabytes, bij voorkeur vierkante."
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "Een link naar jouw CV is naar het klembord gekopieerd."
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/nl/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "Begin vanaf nul",
|
||||
"title": "Nieuw CV maken"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn, JSON CV, Reactive CV",
|
||||
"title": "Importeren uit Externe Bronnen"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "Verwijderen",
|
||||
"duplicate": "Dupliceren",
|
||||
"open": "Openen",
|
||||
"rename": "Hernoemen",
|
||||
"share-link": "Link delen",
|
||||
"tooltips": {
|
||||
"delete": "Weet je zeker dat je dit cv wilt verwijderen? Dit is onomkeerbaar.",
|
||||
"share-link": "Je moet de zichtbaarheid van jouw cv veranderen in openbaar om het zichtbaar te maken voor anderen."
|
||||
}
|
||||
},
|
||||
"timestamp": "Laatst bijgewerkt op {{timestamp}}"
|
||||
},
|
||||
"title": "Dashboard"
|
||||
}
|
||||
41
client/public/locales/nl/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "Ga naar de App",
|
||||
"login": "Inloggen",
|
||||
"logout": "Afmelden",
|
||||
"register": "Registreren"
|
||||
},
|
||||
"features": {
|
||||
"heading": "Functies",
|
||||
"list": {
|
||||
"ads": "Geen Advertenties",
|
||||
"export": "Exporteer je cv naar JSON- of PDF-formaat",
|
||||
"free": "Gratis, voor altijd",
|
||||
"import": "Gegevens importeren uit LinkedIn, JSON CV",
|
||||
"languages": "Toegankelijk in meerdere talen",
|
||||
"more": "En nog veel meer spannende functies, <1>lees er hier alles over</1>",
|
||||
"tracking": "Geen Gebruikerstracking"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "Links",
|
||||
"links": {
|
||||
"donate": "Doneren",
|
||||
"github": "Broncode",
|
||||
"privacy": "Privacybeleid",
|
||||
"service": "Gebruiksvoorwaarden"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "Schermafbeeldingen"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "Klantengetuigenissen",
|
||||
"body": "Goed of slecht, ik zou graag jouw mening horen over Reactive Resume en hoe de ervaring voor jou is geweest.<br/>Hier zijn enkele van de berichten die door gebruikers over de hele wereld zijn verzonden.",
|
||||
"contact": "Je kunt contact met mij opnemen via <1>mijn e-mail</1> of via het contactformulier op <3>mijn website</3> ."
|
||||
},
|
||||
"summary": {
|
||||
"body": "Reactive CV is een gratis en open source cv-builder die is gebouwd om de alledaagse taken van het maken, bijwerken en delen van jouw cv zo eenvoudig te maken als 1, 2, 3. Met deze app kun je meerdere cv's maken en deze delen met recruiters of vrienden via een unieke link en print het als een PDF, helemaal gratis, geen advertenties, geen tracking, zonder de integriteit en privacy van jouw gegevens te verliezen.",
|
||||
"heading": "Samenvatting"
|
||||
}
|
||||
}
|
||||
136
client/public/locales/nl/modals.json
Normal file
@ -0,0 +1,136 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "Stuur Herstel Wachtwoord E-mail"
|
||||
},
|
||||
"body": "Voer gewoon het e-mailadres in dat is gekoppeld aan het account dat je wilt herstellen.",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "E-mailadres"
|
||||
}
|
||||
},
|
||||
"heading": "Wachtwoord vergeten?",
|
||||
"help-text": "Als er een account is gekoppeld aan %1, ontvang je een e-mail met een link om jouw wachtwoord opnieuw in te stellen."
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "Inloggen",
|
||||
"google": "Inloggen met Google"
|
||||
},
|
||||
"body": "Voer jouw gebruikersnaam en wachtwoord in die bij jouw account horen om in te loggen en jouw cv's te openen, beheren en delen.",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "Wachtwoord"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "Je kunt ook jouw e-mailadres invoeren",
|
||||
"label": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"heading": "Log in op jouw account",
|
||||
"recover-text": "Als je jouw wachtwoord bent vergeten, kun je <1>hier jouw account</1> herstellen.",
|
||||
"register-text": "Als je er geen hebt, kun je hier <1>een account maken</1>."
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "Registreren",
|
||||
"google": "Registreren met Google"
|
||||
},
|
||||
"body": "Vul jouw persoonlijke gegevens in om een account aan te maken.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Bevestig wachtwoord"
|
||||
},
|
||||
"email": {
|
||||
"label": "E-mailadres"
|
||||
},
|
||||
"name": {
|
||||
"label": "Voor- en achternaam"
|
||||
},
|
||||
"password": {
|
||||
"label": "Wachtwoord"
|
||||
},
|
||||
"username": {
|
||||
"label": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"heading": "Account aanmaken",
|
||||
"loginText": "Als je al een account hebt, kun je <1>hier inloggen</1> ."
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "Nieuw wachtwoord instellen"
|
||||
},
|
||||
"body": "Voer een nieuw wachtwoord in voor jouw account.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Wachtwoord Bevestigen"
|
||||
},
|
||||
"password": {
|
||||
"label": "Wachtwoord"
|
||||
}
|
||||
},
|
||||
"heading": "Je wachtwoord opnieuw instellen"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "CV Aanmaken"
|
||||
},
|
||||
"body": "Begin met het maken van je cv door het een naam te geven. Het kan betrekking hebben op de functie waarop je solliciteert, of gewoon jouw favoriete snack.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Naam"
|
||||
},
|
||||
"public": {
|
||||
"label": "Openbaar Toegankelijk"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Slug"
|
||||
}
|
||||
},
|
||||
"heading": "Nieuw CV maken"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "Importeren uit Externe Bronnen",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSON Uploaden"
|
||||
},
|
||||
"body": "Als je een <1>gevalideerde JSON CV</1> klaar hebt, kun je die gebruiken om versneld je nieuwe cv te bouwen. Klik op de onderstaande knop en upload een geldig JSON-bestand om te beginnen.",
|
||||
"heading": "Importeren uit JSON CV"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "ZIP-archief Uploaden"
|
||||
},
|
||||
"body": "Je kunt tijd besparen door jouw gegevens uit LinkedIn te exporteren en deze te gebruiken om velden hier automatisch in te vullen. Ga naar de <1>Gegevensprivacy</1> sectie op LinkedIn en vraag een archief van jouw gegevens aan. Zodra het beschikbaar is, upload je het ZIP-bestand hieronder.",
|
||||
"heading": "Importeren Vanuit LinkedIn"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSON Uploaden",
|
||||
"upload-json-v2": "JSON uploaden van v2"
|
||||
},
|
||||
"body": "Als je een JSON hebt die is geëxporteerd met de huidige versie van deze CV maker, kun je die hier terug importeren om weer een bewerkbare versie te krijgen.",
|
||||
"heading": "Importeren van Bestaand CV"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "CV Hernoemen"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Naam"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Slug"
|
||||
}
|
||||
},
|
||||
"heading": "Hernoem je cv"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Projekt pasji od <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Brakuje Twojego języka?"
|
||||
},
|
||||
"license": "Przez społeczność dla społeczności."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
358
client/public/locales/pt/builder.json
Normal file
@ -0,0 +1,358 @@
|
||||
{
|
||||
"common": {
|
||||
"actions": {
|
||||
"add": "Adicionar {{token}}",
|
||||
"delete": "Remover {{token}}",
|
||||
"edit": "Editar {{token}}"
|
||||
},
|
||||
"columns": {
|
||||
"heading": "Colunas",
|
||||
"tooltip": "Alterar o número de colunas"
|
||||
},
|
||||
"form": {
|
||||
"date": {
|
||||
"label": "Data"
|
||||
},
|
||||
"description": {
|
||||
"label": "Descrição"
|
||||
},
|
||||
"email": {
|
||||
"label": "Endereço de e-mail"
|
||||
},
|
||||
"end-date": {
|
||||
"help-text": "Deixe este campo em branco se for até o presente",
|
||||
"label": "Data de Término"
|
||||
},
|
||||
"keywords": {
|
||||
"label": "Palavras-chave"
|
||||
},
|
||||
"level": {
|
||||
"label": "Nível"
|
||||
},
|
||||
"levelNum": {
|
||||
"label": "Nível (Número)"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nome"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Número de telefone"
|
||||
},
|
||||
"position": {
|
||||
"label": "Cargo"
|
||||
},
|
||||
"start-date": {
|
||||
"label": "Data de Início"
|
||||
},
|
||||
"subtitle": {
|
||||
"label": "Subtítulo"
|
||||
},
|
||||
"summary": {
|
||||
"label": "Resumo"
|
||||
},
|
||||
"title": {
|
||||
"label": "Título"
|
||||
},
|
||||
"url": {
|
||||
"label": "Site"
|
||||
}
|
||||
},
|
||||
"glossary": {
|
||||
"page": "Página"
|
||||
},
|
||||
"list": {
|
||||
"actions": {
|
||||
"delete": "Excluir",
|
||||
"duplicate": "Duplicar",
|
||||
"edit": "Editar"
|
||||
},
|
||||
"empty-text": "Essa lista está vazia."
|
||||
},
|
||||
"tooltip": {
|
||||
"delete-item": "Tem certeza de que deseja excluir este item? Esta ação é irreversível.",
|
||||
"delete-section": "Excluir Seção",
|
||||
"rename-section": "Renomear Seção",
|
||||
"toggle-visibility": "Alternar Visibilidade"
|
||||
}
|
||||
},
|
||||
"controller": {
|
||||
"tooltip": {
|
||||
"center-artboard": "Prancheta central",
|
||||
"copy-link": "Copiar link do currículo",
|
||||
"export-pdf": "Exportar PDF",
|
||||
"toggle-orientation": "Alternar orientação da página",
|
||||
"toggle-page-break-line": "Alternar linha de quebra de página",
|
||||
"toggle-sidebars": "Alternar barra lateral",
|
||||
"zoom-in": "Mais Zoom",
|
||||
"zoom-out": "Menos Zoom"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"menu": {
|
||||
"delete": "Deletar",
|
||||
"duplicate": "Duplicar",
|
||||
"rename": "Renomear",
|
||||
"share-link": "Compartilhar Link",
|
||||
"tooltips": {
|
||||
"delete": "Tem certeza de que deseja excluir este currículo? Esta ação é irreversível.",
|
||||
"share-link": "Você precisa alterar a visibilidade do seu currículo para público para torná-lo visível para outras pessoas."
|
||||
}
|
||||
}
|
||||
},
|
||||
"leftSidebar": {
|
||||
"sections": {
|
||||
"awards": {
|
||||
"form": {
|
||||
"awarder": {
|
||||
"label": "Concedente"
|
||||
}
|
||||
}
|
||||
},
|
||||
"basics": {
|
||||
"actions": {
|
||||
"photo-filters": "Filtros da foto"
|
||||
},
|
||||
"heading": "Informações básicas",
|
||||
"headline": {
|
||||
"label": "Título"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nome Completo"
|
||||
},
|
||||
"photo-filters": {
|
||||
"effects": {
|
||||
"border": {
|
||||
"label": "Borda"
|
||||
},
|
||||
"grayscale": {
|
||||
"label": "Escala de cinza"
|
||||
},
|
||||
"heading": "Efeitos"
|
||||
},
|
||||
"shape": {
|
||||
"heading": "Forma"
|
||||
},
|
||||
"size": {
|
||||
"heading": "Tamanho (em px)"
|
||||
}
|
||||
},
|
||||
"photo-upload": {
|
||||
"tooltip": {
|
||||
"remove": "Excluir Foto",
|
||||
"upload": "Enviar Foto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"certifications": {
|
||||
"form": {
|
||||
"issuer": {
|
||||
"label": "Emissor"
|
||||
}
|
||||
}
|
||||
},
|
||||
"education": {
|
||||
"form": {
|
||||
"area-study": {
|
||||
"label": "Área de estudo"
|
||||
},
|
||||
"courses": {
|
||||
"label": "Cursos"
|
||||
},
|
||||
"degree": {
|
||||
"label": "Grau"
|
||||
},
|
||||
"grade": {
|
||||
"label": "Nota"
|
||||
},
|
||||
"institution": {
|
||||
"label": "Instituição"
|
||||
}
|
||||
}
|
||||
},
|
||||
"location": {
|
||||
"address": {
|
||||
"label": "Endereço"
|
||||
},
|
||||
"city": {
|
||||
"label": "Cidade"
|
||||
},
|
||||
"country": {
|
||||
"label": "País"
|
||||
},
|
||||
"heading": "Localização",
|
||||
"postal-code": {
|
||||
"label": "Código Postal"
|
||||
},
|
||||
"region": {
|
||||
"label": "Região"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"form": {
|
||||
"network": {
|
||||
"label": "Rede Social"
|
||||
},
|
||||
"username": {
|
||||
"label": "Nome de Usuário"
|
||||
}
|
||||
},
|
||||
"heading": "Perfis",
|
||||
"heading_one": "Perfil"
|
||||
},
|
||||
"publications": {
|
||||
"form": {
|
||||
"publisher": {
|
||||
"label": "Editor"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"form": {
|
||||
"relationship": {
|
||||
"label": "Relação"
|
||||
}
|
||||
}
|
||||
},
|
||||
"section": {
|
||||
"heading": "Seção"
|
||||
},
|
||||
"volunteer": {
|
||||
"form": {
|
||||
"organization": {
|
||||
"label": "Organização"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rightSidebar": {
|
||||
"sections": {
|
||||
"css": {
|
||||
"heading": "CSS Personalizado"
|
||||
},
|
||||
"export": {
|
||||
"heading": "Exportar",
|
||||
"json": {
|
||||
"primary": "JSON",
|
||||
"secondary": "Baixe uma versão JSON do seu currículo que poderá ser importada de volta ao Reactive Resume."
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "Gerando PDF",
|
||||
"secondary": "Por favor aguarde enquanto o seu PDF é gerado, isso pode levar até 15 segundos."
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "Baixe um PDF do seu currículo que você pode imprimir e enviar para o emprego dos seus sonhos. Este arquivo não pode ser importado de volta para edição posterior."
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "Layout",
|
||||
"tooltip": {
|
||||
"reset-layout": "Redefinir Layout"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "Alguma coisa te impede de fazer um currículo? Ou você tem uma ideia incrível para adicionar? Crie uma issue no GitHub para começar.",
|
||||
"button": "GitHub Issues",
|
||||
"heading": "Bugs? Sugestões de recursos?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "Se você gostou de usar o Reactive Resume, considere doar o máximo possível para manter o aplicativo em funcionamento, sem anúncios e gratuito para sempre.",
|
||||
"button": "Pague-me um café",
|
||||
"heading": "Faça uma doação ao Reactive Resume"
|
||||
},
|
||||
"github": "Código Fonte",
|
||||
"heading": "Links"
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"date": {
|
||||
"primary": "Data",
|
||||
"secondary": "Formato de data usado em todo o aplicativo"
|
||||
},
|
||||
"heading": "Global",
|
||||
"language": {
|
||||
"primary": "Idioma",
|
||||
"secondary": "Idioma de exibição usado em todo o aplicativo"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "Tema"
|
||||
}
|
||||
},
|
||||
"heading": "Configurações",
|
||||
"page": {
|
||||
"break-line": {
|
||||
"primary": "Linha de quebra",
|
||||
"secondary": "Mostrar uma linha em todas as páginas para marcar a altura de uma página A4"
|
||||
},
|
||||
"heading": "Página",
|
||||
"orientation": {
|
||||
"disabled": "Não tem efeito quando há somente uma página",
|
||||
"primary": "Orientação",
|
||||
"secondary": "Se as páginas devem ser exibidas horizontalmente ou verticalmente"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"heading": "Currículo",
|
||||
"reset": {
|
||||
"primary": "Limpar Tudo",
|
||||
"secondary": "Cometeu muitos erros? Clique aqui para redefinir todas as alterações e começar do zero. Tenha cuidado, esta ação não pode ser revertida."
|
||||
},
|
||||
"sample": {
|
||||
"primary": "Carregar dados de exemplo",
|
||||
"secondary": "Não sabe por onde começar? Clique aqui para carregar alguns dados de exemplo para ver como é um currículo completo."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"heading": "Compartilhamento",
|
||||
"short-url": {
|
||||
"label": "Prefiro um URL curto"
|
||||
},
|
||||
"visibility": {
|
||||
"subtitle": "Permitir que qualquer um com um link veja seu currículo",
|
||||
"title": "Público"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"heading": "Modelos"
|
||||
},
|
||||
"theme": {
|
||||
"form": {
|
||||
"background": {
|
||||
"label": "Plano de fundo"
|
||||
},
|
||||
"primary": {
|
||||
"label": "Primário"
|
||||
},
|
||||
"text": {
|
||||
"label": "Texto"
|
||||
}
|
||||
},
|
||||
"heading": "Tema"
|
||||
},
|
||||
"typography": {
|
||||
"form": {
|
||||
"font-family": {
|
||||
"label": "Família da fonte"
|
||||
},
|
||||
"font-size": {
|
||||
"label": "Tamanho da fonte"
|
||||
}
|
||||
},
|
||||
"heading": "Tipografia",
|
||||
"widgets": {
|
||||
"body": {
|
||||
"label": "Corpo"
|
||||
},
|
||||
"headings": {
|
||||
"label": "Cabeçalho"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Um projeto apaixonado de <1>Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Falta o seu idioma?"
|
||||
},
|
||||
"license": "Pela comunidade, para a comunidade."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
25
client/public/locales/pt/dashboard.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"create-resume": {
|
||||
"subtitle": "Começar do zero",
|
||||
"title": "Criar Novo Currículo"
|
||||
},
|
||||
"import-external": {
|
||||
"subtitle": "LinkedIn, currículo em JSON, Reactive Resume",
|
||||
"title": "Importar de fontes externas"
|
||||
},
|
||||
"resume": {
|
||||
"menu": {
|
||||
"delete": "Deletar",
|
||||
"duplicate": "Duplicar",
|
||||
"open": "Abrir",
|
||||
"rename": "Renomear",
|
||||
"share-link": "Compartilhar Link",
|
||||
"tooltips": {
|
||||
"delete": "Tem certeza de que deseja excluir este currículo? Esta ação é irreversível.",
|
||||
"share-link": "Você precisa alterar a visibilidade do seu currículo para público para torná-lo visível para outras pessoas."
|
||||
}
|
||||
},
|
||||
"timestamp": "Última atualização há {{timestamp}}"
|
||||
},
|
||||
"title": "Painel de Controle"
|
||||
}
|
||||
41
client/public/locales/pt/landing.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"actions": {
|
||||
"app": "Ir para o App",
|
||||
"login": "Entrar",
|
||||
"logout": "Sair",
|
||||
"register": "Registrar-se"
|
||||
},
|
||||
"features": {
|
||||
"heading": "Características",
|
||||
"list": {
|
||||
"ads": "Sem publicidade",
|
||||
"export": "Exporte seu currículo para o formato JSON ou PDF",
|
||||
"free": "Gratuito, para sempre",
|
||||
"import": "Importe dados do LinkedIn, ou de um currículo em JSON",
|
||||
"languages": "Acessível em vários idiomas",
|
||||
"more": "E muito mais recursos interessantes, <1>leia tudo sobre isso aqui</1>",
|
||||
"tracking": "Sem rastreamento de usuários"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"heading": "Links",
|
||||
"links": {
|
||||
"donate": "Doar",
|
||||
"github": "Código Fonte",
|
||||
"privacy": "Política de privacidade",
|
||||
"service": "Termos de serviço"
|
||||
}
|
||||
},
|
||||
"screenshots": {
|
||||
"heading": "Capturas de tela"
|
||||
},
|
||||
"testimonials": {
|
||||
"heading": "Depoimentos",
|
||||
"body": "Boa ou ruim, eu adoraria saber sua opinião sobre o Reactive Resume e como tem sido a experiência para você.<br/>Aqui estão algumas das mensagens enviadas por usuários em todo o mundo.",
|
||||
"contact": "Você pode entrar em contato comigo pelo <1>meu e-mail</1> ou por meio do formulário de contato no <3>meu site</3>."
|
||||
},
|
||||
"summary": {
|
||||
"body": "O Reactive Resume é um construtor de currículos gratuito e de código aberto criado para tornar as tarefas mundanas de criar, atualizar e compartilhar seu currículo tão fáceis quanto 1, 2, 3. Com este aplicativo, você pode criar vários currículos, compartilhá-los com recrutadores ou amigos através de um link exclusivo e imprimi-los como PDF, tudo de graça, sem anúncios, sem rastreamento, sem perder a integridade e privacidade dos seus dados.",
|
||||
"heading": "Resumo"
|
||||
}
|
||||
}
|
||||
136
client/public/locales/pt/modals.json
Normal file
@ -0,0 +1,136 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "Enviar e-mail de redefinição de senha"
|
||||
},
|
||||
"body": "Basta inserir o endereço de e-mail associado à conta que você gostaria de recuperar.",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "Endereço de e-mail"
|
||||
}
|
||||
},
|
||||
"heading": "Esqueceu sua senha?",
|
||||
"help-text": "Se a conta existir, você receberá um e-mail com um link para redefinir sua senha."
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "Entrar",
|
||||
"google": "Entrar com o Google"
|
||||
},
|
||||
"body": "Por favor, digite seu nome de usuário e senha associados à sua conta para fazer login e acessar, gerenciar e compartilhar seus currículos.",
|
||||
"form": {
|
||||
"password": {
|
||||
"label": "Senha"
|
||||
},
|
||||
"username": {
|
||||
"help-text": "Você também pode inserir seu endereço de e-mail",
|
||||
"label": "Nome de Usuário"
|
||||
}
|
||||
},
|
||||
"heading": "Acesse a sua conta",
|
||||
"recover-text": "Caso tenha esquecido sua senha, você pode <1>recuperar sua conta</1> aqui.",
|
||||
"register-text": "Se não tiver, você pode <1>criar uma conta</1> aqui."
|
||||
},
|
||||
"register": {
|
||||
"actions": {
|
||||
"register": "Registre-se",
|
||||
"google": "Registre-se com o Google"
|
||||
},
|
||||
"body": "Por favor, insira suas informações pessoais para criar uma conta.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Confirme a senha"
|
||||
},
|
||||
"email": {
|
||||
"label": "Endereço de e-mail"
|
||||
},
|
||||
"name": {
|
||||
"label": "Nome completo"
|
||||
},
|
||||
"password": {
|
||||
"label": "Senha"
|
||||
},
|
||||
"username": {
|
||||
"label": "Nome de usuário"
|
||||
}
|
||||
},
|
||||
"heading": "Criar uma conta",
|
||||
"loginText": "Se já tem uma conta, você pode <1>entrar aqui</1>."
|
||||
},
|
||||
"reset-password": {
|
||||
"actions": {
|
||||
"set-password": "Definir nova senha"
|
||||
},
|
||||
"body": "Digite uma nova senha para sua conta.",
|
||||
"form": {
|
||||
"confirm-password": {
|
||||
"label": "Confirme a senha"
|
||||
},
|
||||
"password": {
|
||||
"label": "Senha"
|
||||
}
|
||||
},
|
||||
"heading": "Redefinir sua senha"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"create-resume": {
|
||||
"actions": {
|
||||
"create-resume": "Criar Currículo"
|
||||
},
|
||||
"body": "Comece a construir seu currículo dando-lhe um nome. Pode ser em referência ao cargo para o qual você está se candidatando ou apenas ao seu lanche favorito.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Nome"
|
||||
},
|
||||
"public": {
|
||||
"label": "É publicamente acessível?"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Endereço amigável"
|
||||
}
|
||||
},
|
||||
"heading": "Criar um novo currículo"
|
||||
},
|
||||
"import-external": {
|
||||
"heading": "Importar de fontes externas",
|
||||
"json-resume": {
|
||||
"actions": {
|
||||
"upload-json": "Carregar JSON"
|
||||
},
|
||||
"body": "Se você possui um <1>currículo JSON válido</1>, poderá usá-lo para acelerar seu desenvolvimento no Reactive Resume. Clique no botão abaixo e carregue um arquivo JSON válido para começar.",
|
||||
"heading": "Importar de um currículo JSON"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "Carregar arquivo ZIP"
|
||||
},
|
||||
"body": "Você pode economizar tempo exportando seus dados do LinkedIn e usando-os para preencher automaticamente os campos no Reactive Resume. Vá para a seção <1>Privacidade dos Dados</1> no LinkedIn e solicite um arquivo com seus dados. Assim que estiver disponível, faça upload do arquivo ZIP abaixo.",
|
||||
"heading": "Importar do LinkedIn"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "Carregar JSON",
|
||||
"upload-json-v2": "Carregar JSON do v2"
|
||||
},
|
||||
"body": "Se você possuir um JSON que foi exportado com a versão atual do Reactive Resume, poderá importá-lo de volta aqui para obter uma versão editável novamente.",
|
||||
"heading": "Importe do Reactive Resume"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "Renomear currículo"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Nome"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Endereço amigável"
|
||||
}
|
||||
},
|
||||
"heading": "Renomear o seu currículo"
|
||||
}
|
||||
}
|
||||
}
|
||||
358
client/public/locales/ru/builder.json
Normal file
@ -0,0 +1,358 @@
|
||||
{
|
||||
"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": "Отдалить"
|
||||
}
|
||||
},
|
||||
"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": "ФИО"
|
||||
},
|
||||
"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": "Что-то мешает вам составить резюме? Или у вас есть отличная идея для нас? Откройте новый issue на GitHub.",
|
||||
"button": "GitHub Issues",
|
||||
"heading": "Нашли ошибку? Есть предложения?"
|
||||
},
|
||||
"donate": {
|
||||
"body": "Если вам понравилось использовать Reactive Resume, пожалуйста, подумайте о том, чтобы пожертвовать как можно больше на поддержание приложения в рабочем состоянии, без рекламы и бесплатно навсегда.",
|
||||
"button": "Купить мне кофе",
|
||||
"heading": "Поддержать Reactive Resume"
|
||||
},
|
||||
"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": "Public"
|
||||
}
|
||||
},
|
||||
"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/ru/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": "Бесплатный open source конструктор резюме.",
|
||||
"title": "Reactive Resume",
|
||||
"toast": {
|
||||
"error": {
|
||||
"upload-file-size": "Пожалуйста, загружайте файлы размером не более 2 мегабайт.",
|
||||
"upload-photo-size": "Пожалуйста, загружайте фотографии размером не более 2 мегабайт, желательно квадратные."
|
||||
},
|
||||
"success": {
|
||||
"resume-link-copied": "Ссылка на ваше резюме скопирована в буфер обмена."
|
||||
}
|
||||
}
|
||||
}
|
||||
25
client/public/locales/ru/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/ru/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 - это бесплатный open source конструктор резюме, созданный для того, чтобы сделать рутинные задачи по созданию, обновлению и распространению резюме такими же простыми, как 1, 2, 3. С помощью этого приложения вы можете создать несколько резюме, поделиться ими с рекрутерами или друзьями через уникальную ссылку и распечатать их в формате PDF, и все это бесплатно, без рекламы, без отслеживания, без потери целостности и конфиденциальности ваших данных.",
|
||||
"heading": "Описание"
|
||||
}
|
||||
}
|
||||