mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-10 04:22:27 +10:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| 0e1e2bbe4e | |||
| 3a2e62be4c | |||
| 697ceef8f2 | |||
| c8e81a456d | |||
| 2b334e5c5a | |||
| 90321e1284 | |||
| 9bcddb4b5c | |||
| 72fdc05f69 | |||
| e1d6540500 | |||
| 4b17719c69 | |||
| da056307dd | |||
| e4950728d8 | |||
| dac4e862b8 |
@ -27,4 +27,7 @@ GOOGLE_API_KEY=
|
||||
SENDGRID_API_KEY=
|
||||
SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID=
|
||||
SENDGRID_FROM_NAME=
|
||||
SENDGRID_FROM_EMAIL=
|
||||
SENDGRID_FROM_EMAIL=
|
||||
|
||||
# Flags (Optional)
|
||||
PUBLIC_FLAG_DISABLE_SIGNUPS=false
|
||||
16
.github/ISSUE_TEMPLATE/bug-report.md
vendored
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
.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. -->
|
||||
|
||||
34
CHANGELOG.md
34
CHANGELOG.md
@ -2,6 +2,40 @@
|
||||
|
||||
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.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)
|
||||
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
# 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)
|
||||
@ -40,16 +40,20 @@ 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)
|
||||
- Hindi (हिन्दी)
|
||||
- Italian (Italiano)
|
||||
- Kannada (ಕನ್ನಡ)
|
||||
- Malayalam (മലയാളം)
|
||||
- Polish (Polski)
|
||||
- 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!
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ const Theme = () => {
|
||||
const { background, text, primary } = useAppSelector<ThemeType>((state) => get(state.resume, 'metadata.theme'));
|
||||
|
||||
const handleChange = (property: string, color: string) => {
|
||||
dispatch(setResumeState({ path: `metadata.theme.${property}`, value: color }));
|
||||
dispatch(setResumeState({ path: `metadata.theme.${property}`, value: color[0] !== '#' ? `#${color}` : color }));
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
@ -15,9 +15,13 @@ export const languages: Language[] = [
|
||||
{ code: 'hi', name: 'Hindi', localName: 'हिन्दी' },
|
||||
{ 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: '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
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,26 @@ const path = require('path');
|
||||
const i18nConfig = {
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['ar', 'bn', 'da', 'de', 'en', 'es', 'fr', 'hi', 'it', 'kn', 'pl', 'ta', 'tr', 'zh'],
|
||||
locales: [
|
||||
'ar',
|
||||
'bn',
|
||||
'da',
|
||||
'de',
|
||||
'en',
|
||||
'es',
|
||||
'fr',
|
||||
'hi',
|
||||
'it',
|
||||
'kn',
|
||||
'ml',
|
||||
'nl',
|
||||
'pl',
|
||||
'ru',
|
||||
'ta',
|
||||
'tr',
|
||||
'vi',
|
||||
'zh',
|
||||
],
|
||||
},
|
||||
nsSeparator: '.',
|
||||
localePath: path.resolve('./public/locales'),
|
||||
|
||||
@ -3,6 +3,7 @@ import clsx from 'clsx';
|
||||
import get from 'lodash/get';
|
||||
import isEmpty from 'lodash/isEmpty';
|
||||
import { GetServerSideProps, NextPage } from 'next';
|
||||
import { useRouter } from 'next/router';
|
||||
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
@ -20,6 +21,7 @@ type QueryParams = {
|
||||
|
||||
type Props = {
|
||||
resume?: Resume;
|
||||
locale: string;
|
||||
redirect?: any;
|
||||
};
|
||||
|
||||
@ -35,7 +37,13 @@ export const getServerSideProps: GetServerSideProps<Props | Promise<Props>, Quer
|
||||
const resume = await fetchResumeByIdentifier({ username, slug, options: { secretKey } });
|
||||
const displayLocale = resume.metadata.locale || locale || 'en';
|
||||
|
||||
return { props: { resume, ...(await serverSideTranslations(displayLocale, ['common'])) } };
|
||||
return {
|
||||
props: {
|
||||
resume,
|
||||
locale: displayLocale,
|
||||
...(await serverSideTranslations(displayLocale, ['common'])),
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
redirect: {
|
||||
@ -46,7 +54,9 @@ export const getServerSideProps: GetServerSideProps<Props | Promise<Props>, Quer
|
||||
}
|
||||
};
|
||||
|
||||
const Printer: NextPage<Props> = ({ resume: initialData }) => {
|
||||
const Printer: NextPage<Props> = ({ resume: initialData, locale }) => {
|
||||
const router = useRouter();
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const resume = useAppSelector((state) => state.resume);
|
||||
@ -55,6 +65,12 @@ const Printer: NextPage<Props> = ({ resume: initialData }) => {
|
||||
if (initialData) dispatch(setResume(initialData));
|
||||
}, [dispatch, initialData]);
|
||||
|
||||
useEffect(() => {
|
||||
const { pathname, asPath, query } = router;
|
||||
|
||||
router.push({ pathname, query }, asPath, { locale });
|
||||
}, [router, locale]);
|
||||
|
||||
if (!resume || isEmpty(resume)) return null;
|
||||
|
||||
const layout: string[][][] = get(resume, 'metadata.layout', []);
|
||||
|
||||
@ -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>
|
||||
);
|
||||
|
||||
@ -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": {
|
||||
|
||||
358
client/public/locales/ml/builder.json
Normal file
358
client/public/locales/ml/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": "വലിപ്പം (പിക്സലിൽ)"
|
||||
}
|
||||
},
|
||||
"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 പതിപ്പ് ഡൗൺലോഡ് ചെയ്യുക."
|
||||
},
|
||||
"pdf": {
|
||||
"loading": {
|
||||
"primary": "PDF സൃഷ്ടിക്കുന്നു",
|
||||
"secondary": "നിങ്ങളുടെ PDF ജനറേറ്റുചെയ്യുന്നത് പോലെ കാത്തിരിക്കുക, ഇതിന് 15 സെക്കൻഡ് വരെ എടുത്തേക്കാം."
|
||||
},
|
||||
"normal": {
|
||||
"primary": "PDF",
|
||||
"secondary": "നിങ്ങളുടെ സ്വപ്ന ജോലിയിലേക്ക് പ്രിന്റ് ചെയ്ത് അയയ്ക്കാൻ കഴിയുന്ന നിങ്ങളുടെ റെസ്യൂമെയുടെ PDF ഡൗൺലോഡ് ചെയ്യുക. കൂടുതൽ എഡിറ്റിംഗിനായി ഈ ഫയൽ തിരികെ ഇറക്കുമതി ചെയ്യാൻ കഴിയില്ല."
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"heading": "ലേഔട്ട്",
|
||||
"tooltip": {
|
||||
"reset-layout": "ലേഔട്ട് പുനഃസജ്ജമാക്കുക"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"bugs-features": {
|
||||
"body": "ഒരു റെസ്യൂമെ ഉണ്ടാക്കുന്നതിൽ നിന്ന് നിങ്ങളെ എന്തെങ്കിലും തടസ്സപ്പെടുത്തുന്നുണ്ടോ? അല്ലെങ്കിൽ നിങ്ങൾക്ക് ചേർക്കാൻ അതിശയകരമായ ഒരു ആശയമുണ്ടോ? ആരംഭിക്കുന്നതിന് ഒരു ഗിറ്റ്ഹബ് ഇസ്സു ഉന്നയിക്കുക.",
|
||||
"button": "ഗിറ്റ്ഹബ് ഇസ്സുസ്",
|
||||
"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/ml/common.json
Normal file
29
client/public/locales/ml/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/ml/dashboard.json
Normal file
25
client/public/locales/ml/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/ml/landing.json
Normal file
41
client/public/locales/ml/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": "1, 2, 3 എന്നിവ പോലെ നിങ്ങളുടെ റെസ്യൂമെ സൃഷ്ടിക്കാനും അപ്ഡേറ്റ് ചെയ്യാനും പങ്കിടാനുമുള്ള ലൗകിക ജോലികൾ എളുപ്പമാക്കുന്നതിന് നിർമ്മിച്ച ഒരു സൗജന്യമായ ഓപ്പൺ സോഴ്സ് റെസ്യൂമെ ബിൽഡറാണ് റിയാക്ടീവ് റെസ്യൂമെ. ഈ ആപ്പ് ഉപയോഗിച്ച്, നിങ്ങൾക്ക് ഒന്നിലധികം റെസ്യൂമെകൾ സൃഷ്ടിക്കാനും റിക്രൂട്ടർമാരുമായോ സുഹൃത്തുക്കളുമായോ പങ്കിടാനും കഴിയും. നിങ്ങളുടെ ഡാറ്റയുടെ സമഗ്രതയും സ്വകാര്യതയും നഷ്ടപ്പെടാതെ, ഒരു അദ്വിതീയ ലിങ്കിലൂടെ അത് ഒരു PDF ആയി പ്രിന്റ് ചെയ്യുക, എല്ലാം സൗജന്യമായി, പരസ്യങ്ങളൊന്നുമില്ല, ട്രാക്കിംഗില്ല.",
|
||||
"heading": "സംഗ്രഹം"
|
||||
}
|
||||
}
|
||||
136
client/public/locales/ml/modals.json
Normal file
136
client/public/locales/ml/modals.json
Normal file
@ -0,0 +1,136 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "പാസ്വേഡ് പുനഃസജ്ജമാക്കാൻ ഇമെയിൽ അയയ്ക്കുക"
|
||||
},
|
||||
"body": "നിങ്ങൾ വീണ്ടെടുക്കാൻ ആഗ്രഹിക്കുന്ന അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഇമെയിൽ വിലാസം നൽകുക.",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "ഇമെയിൽ വിലാസം"
|
||||
}
|
||||
},
|
||||
"heading": "നിങ്ങളുടെ പാസ്സ്വേർഡ് മറന്നോ?",
|
||||
"help-text": "അക്കൗണ്ട് നിലവിലുണ്ടെങ്കിൽ, നിങ്ങളുടെ പാസ്വേഡ് പുനഃസജ്ജമാക്കുന്നതിനുള്ള ലിങ്കുള്ള ഒരു ഇമെയിൽ നിങ്ങൾക്ക് ലഭിക്കും."
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "ലോഗിൻ",
|
||||
"google": "Google ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക"
|
||||
},
|
||||
"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-ലെ <1>ഡാറ്റ സ്വകാര്യത</1> വിഭാഗത്തിലേക്ക് പോയി നിങ്ങളുടെ ഡാറ്റയുടെ ആർക്കൈവ് അഭ്യർത്ഥിക്കുക. അത് ലഭ്യമായിക്കഴിഞ്ഞാൽ, താഴെയുള്ള ZIP ഫയൽ അപ്ലോഡ് ചെയ്യുക.",
|
||||
"heading": "LinkedIn-ൽ നിന്ന് ഇറക്കുമതി ചെയ്യുക"
|
||||
},
|
||||
"reactive-resume": {
|
||||
"actions": {
|
||||
"upload-json": "JSON അപ്ലോഡ് ചെയ്യുക",
|
||||
"upload-json-v2": "V2-ൽ നിന്ന് JSON അപ്ലോഡ് ചെയ്യുക"
|
||||
},
|
||||
"body": "റിയാക്ടീവ് റെസ്യൂമെയുടെ നിലവിലെ പതിപ്പിനൊപ്പം എക്സ്പോർട്ട് ചെയ്ത ഒരു JSON നിങ്ങളുടെ പക്കലുണ്ടെങ്കിൽ, എഡിറ്റ് ചെയ്യാവുന്ന ഒരു പതിപ്പ് വീണ്ടും ലഭിക്കാൻ നിങ്ങൾക്കത് ഇവിടെ തിരികെ ഇറക്കുമതി ചെയ്യാം.",
|
||||
"heading": "റിയാക്ടീവ് റെസ്യൂമെയിൽ നിന്ന് ഇറക്കുമതി ചെയ്യുക"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "റെസ്യൂമെ പുനർനാമകരണം ചെയ്യുക"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "പേര്"
|
||||
},
|
||||
"slug": {
|
||||
"label": "സ്ലഗ്"
|
||||
}
|
||||
},
|
||||
"heading": "നിങ്ങളുടെ റെസ്യൂമെ പുനർനാമകരണം ചെയ്യുക"
|
||||
}
|
||||
}
|
||||
}
|
||||
358
client/public/locales/nl/builder.json
Normal file
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
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
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
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
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": {
|
||||
|
||||
@ -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": {
|
||||
|
||||
358
client/public/locales/ru/builder.json
Normal file
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
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
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
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": "Описание"
|
||||
}
|
||||
}
|
||||
136
client/public/locales/ru/modals.json
Normal file
136
client/public/locales/ru/modals.json
Normal file
@ -0,0 +1,136 @@
|
||||
{
|
||||
"auth": {
|
||||
"forgot-password": {
|
||||
"actions": {
|
||||
"send-email": "Восстановить пароль"
|
||||
},
|
||||
"body": "Просто введите адрес электронной почты, связанный с учетной записью, которую вы хотите восстановить.",
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "Адрес эл. почты"
|
||||
}
|
||||
},
|
||||
"heading": "Забыли пароль?",
|
||||
"help-text": "Если учетная запись существует, вы получите письмо со ссылкой для сброса пароля."
|
||||
},
|
||||
"login": {
|
||||
"actions": {
|
||||
"login": "Войти",
|
||||
"google": "Войти через Google"
|
||||
},
|
||||
"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 Resume</1>, вы можете использовать его для ускорения разработки Reactive Resume. Нажмите кнопку ниже и загрузите файл JSON, чтобы начать.",
|
||||
"heading": "Импорт из JSON Resume"
|
||||
},
|
||||
"linkedin": {
|
||||
"actions": {
|
||||
"upload-archive": "Загрузить ZIP-архив"
|
||||
},
|
||||
"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": "Импорт из Reactive Resume"
|
||||
}
|
||||
},
|
||||
"rename-resume": {
|
||||
"actions": {
|
||||
"rename-resume": "Переименовать резюме"
|
||||
},
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Название"
|
||||
},
|
||||
"slug": {
|
||||
"label": "Slug (окончание ссылки на резюме)"
|
||||
}
|
||||
},
|
||||
"heading": "Переименование резюме"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>அம்ருத் பிள்ளை</1>யின் திட்டம்",
|
||||
"language": {
|
||||
"missing": "உங்கள் மொழியைக் காணவில்லையா?"
|
||||
},
|
||||
"license": "சமூகத்தால், சமூகத்திற்காக."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "<1>Amruth Pillai</1>'nin bir tutku projesidir",
|
||||
"language": {
|
||||
"missing": "Dilinizi bulamadınız mı?"
|
||||
},
|
||||
"license": "Topluluk tarafından, topluluk için."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "Một dự án làm với đam mê của <1> Amruth Pillai</1>",
|
||||
"language": {
|
||||
"missing": "Thiếu ngôn ngữ của bạn?"
|
||||
},
|
||||
"license": "Vì cộng đồng, cho cộng đồng."
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -7,9 +7,6 @@
|
||||
},
|
||||
"footer": {
|
||||
"credit": "一个由<1>Amruth Pillai</1>开发的项目",
|
||||
"language": {
|
||||
"missing": "缺少您的语言?"
|
||||
},
|
||||
"license": "由社区驱动。"
|
||||
},
|
||||
"markdown": {
|
||||
|
||||
@ -2,7 +2,11 @@
|
||||
@apply m-6 grid gap-8 text-center md:m-8 md:text-left;
|
||||
|
||||
footer {
|
||||
@apply flex items-end justify-between;
|
||||
@apply flex flex-col gap-8 items-center sm:items-end justify-between sm:flex-row sm:gap-0;
|
||||
|
||||
.actions {
|
||||
@apply flex gap-2;
|
||||
}
|
||||
|
||||
.version > div {
|
||||
@apply text-xs font-medium opacity-50 mt-3;
|
||||
|
||||
@ -56,7 +56,7 @@ export const MastheadSidebar: React.FC = () => {
|
||||
</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url} className="!gap-2 text-xs">
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)} className="!gap-2 text-xs">
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -57,7 +57,7 @@ export const MastheadSidebar: React.FC = () => {
|
||||
</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url} className="!gap-2 text-xs">
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)} className="!gap-2 text-xs">
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -49,7 +49,7 @@ export const MastheadSidebar: React.FC = () => {
|
||||
</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url} className="text-xs">
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)} className="text-xs">
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -47,7 +47,7 @@ const Masthead = () => {
|
||||
<DataDisplay icon={<Room />}>{formatLocation(location)}</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url}>
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)}>
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -50,7 +50,7 @@ const Masthead: React.FC = () => {
|
||||
</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url} className="text-xs">
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)} className="text-xs">
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -44,7 +44,7 @@ export const MastheadSidebar: React.FC = () => {
|
||||
</DataDisplay>
|
||||
|
||||
{profiles.map(({ id, username, network, url }) => (
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url} className="text-xs">
|
||||
<DataDisplay key={id} icon={getProfileIcon(network)} link={url && addHttp(url)} className="text-xs">
|
||||
{username}
|
||||
</DataDisplay>
|
||||
))}
|
||||
|
||||
@ -20,9 +20,13 @@ const DateWrapper: React.FC = ({ children }) => {
|
||||
require('dayjs/locale/hi');
|
||||
require('dayjs/locale/it');
|
||||
require('dayjs/locale/kn');
|
||||
require('dayjs/locale/ml');
|
||||
require('dayjs/locale/nl');
|
||||
require('dayjs/locale/pl');
|
||||
require('dayjs/locale/ru');
|
||||
require('dayjs/locale/ta');
|
||||
require('dayjs/locale/tr');
|
||||
require('dayjs/locale/vi');
|
||||
require('dayjs/locale/zh');
|
||||
|
||||
locale && dayjs.locale(locale);
|
||||
|
||||
@ -8,13 +8,13 @@ import TOCInline from '@theme/TOCInline';
|
||||
|
||||
# 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)
|
||||
## [Go to App](https://rxresu.me) | [GitHub Repo](https://github.com/AmruthPillai/Reactive-Resume)
|
||||
|
||||
## Summary
|
||||
|
||||
@ -48,16 +48,20 @@ 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)
|
||||
- Hindi (हिन्दी)
|
||||
- Italian (Italiano)
|
||||
- Kannada (ಕನ್ನಡ)
|
||||
- Malayalam (മലയാളം)
|
||||
- Polish (Polski)
|
||||
- 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!
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
"swizzle": "docusaurus swizzle",
|
||||
"deploy": "docusaurus deploy",
|
||||
"clear": "docusaurus clear",
|
||||
"serve": "docusaurus serve",
|
||||
"serve": "docusaurus serve --port 3200",
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids"
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "reactive-resume",
|
||||
"version": "3.2.6",
|
||||
"version": "3.2.9",
|
||||
"private": true,
|
||||
"workspaces": [
|
||||
"schema",
|
||||
|
||||
Reference in New Issue
Block a user