Compare commits

...

156 Commits

Author SHA1 Message Date
4a1c0079db Merge pull request #979 from AmruthPillai/feature/turbo
Implement Turbo Workspaces, add ARM64 support, fix Google OAuth etc.
2022-08-22 19:59:43 +02:00
5b6f6b7621 use nodemailer/smtp instead of sendgrid 2022-08-22 19:26:13 +02:00
02587255fe update version to 3.6.0 2022-08-22 15:24:30 +02:00
9ef2a84ac2 update examples for reaching client/server in .env 2022-08-22 12:44:50 +02:00
77b1c5b536 update Dockerfile 2022-08-22 12:17:41 +02:00
bf956fe18c use @react-oauth/google library for google auth 2022-08-22 11:26:30 +02:00
4114f1e1dd remove timeouts in CI 2022-08-22 09:34:35 +02:00
668d39fa87 change tagname of docker image 2022-08-22 09:17:32 +02:00
0d88a18757 remove husky, lint-staged 2022-08-21 22:18:27 +02:00
0630369087 Implement Turbo Workspaces, among other things 2022-08-21 22:18:12 +02:00
73af4a6859 chore(dependencies): updating dependencies to latest versions 2022-08-21 00:44:11 +02:00
99ddeb25a9 Merge pull request #972 from AmruthPillai/i18n_main
New Crowdin updates
2022-08-17 08:46:38 +02:00
685aa06778 Merge pull request #974 from kgotso/main
Removed Check on hard coded urls
2022-08-15 22:57:01 +02:00
460abc6f1d Removed Check on hard coded urls
This forces the backend to continuously call home and break if no response is received
2022-08-15 19:43:32 +02:00
04f02157ac New translations builder.json (Turkish) 2022-08-14 21:41:45 +02:00
828a4a8715 Merge pull request #970 from m-GDEV/patch-1
Fixed small formatting issue in README
2022-08-13 09:23:43 +02:00
5b3141cd49 Fixed small formatting issue in README 2022-08-12 17:06:55 -04:00
779d22101f chore(release): 3.5.3 2022-08-11 20:21:55 +02:00
ef240b2110 add Bulgarian language, update dependencies 2022-08-11 20:21:19 +02:00
32bb7354a4 Merge pull request #969 from AmruthPillai/i18n_main
New Crowdin updates
2022-08-11 20:12:06 +02:00
0dcbad1f8a New translations modals.json (Bulgarian) 2022-08-11 10:27:23 +02:00
a74921b27a New translations builder.json (Bulgarian) 2022-08-11 10:27:21 +02:00
d4f47423c9 New translations common.json (Bulgarian) 2022-08-11 10:27:20 +02:00
03f9a6543c New translations dashboard.json (Bulgarian) 2022-08-11 10:27:18 +02:00
eb89cfcf5d New translations landing.json (Bulgarian) 2022-08-11 10:27:17 +02:00
c52ef9ecb7 Merge pull request #965 from AmruthPillai/dependabot/github_actions/docker/build-push-action-3.1.1
chore(deps): bump docker/build-push-action from 3.1.0 to 3.1.1
2022-08-08 05:53:47 +02:00
c499abbb88 chore(deps): bump docker/build-push-action from 3.1.0 to 3.1.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 02:15:50 +00:00
1a7ee88ecd chore(release): 3.5.2 2022-08-04 16:15:29 +02:00
16d19eb70f feat(client): 💫 add Finnish language support 2022-08-04 16:13:49 +02:00
331346b99c chore(dependencies): ⬆️ upgrading dependencies to latest versions 2022-08-04 16:10:33 +02:00
95d265f672 Merge pull request #956 from AmruthPillai/i18n_main
New Crowdin updates
2022-08-04 16:09:46 +02:00
315c7d6328 New translations modals.json (Finnish) 2022-07-31 22:22:32 +02:00
490e174564 New translations common.json (Finnish) 2022-07-31 22:22:30 +02:00
b5cde79f8b New translations builder.json (Finnish) 2022-07-31 22:22:29 +02:00
d50f14bb78 New translations dashboard.json (Finnish) 2022-07-31 22:22:28 +02:00
c13a751c1a New translations landing.json (Finnish) 2022-07-31 22:22:26 +02:00
5c37fc55d5 New translations builder.json (Indonesian) 2022-07-30 17:08:34 +02:00
48a0f90597 chore(release): 3.5.1 2022-07-30 13:01:00 +02:00
05d3f1f06f fix(server): don't initialize sendgrid if the apikey is empty 2022-07-30 12:57:35 +02:00
4d43f6a642 feat(client): ask for confirmation when resetting a resume 2022-07-30 12:56:40 +02:00
f7363ccdd7 Merge branch 'main' of github.com:AmruthPillai/Reactive-Resume 2022-07-30 12:56:13 +02:00
07c91e9ac2 feat(docker): remove ports from postgres docker instance 2022-07-30 12:56:04 +02:00
cbe08f1d2c Merge pull request #950 from AmruthPillai/dependabot/github_actions/docker/build-push-action-3.1.0
chore(deps): bump docker/build-push-action from 3.0.0 to 3.1.0
2022-07-30 12:43:46 +02:00
c2617a8277 Merge pull request #944 from AmruthPillai/i18n_main
New Crowdin updates
2022-07-30 12:43:36 +02:00
fe72d2de41 chore(release): 3.5.0 2022-07-30 12:42:31 +02:00
23667e218f chore(deps): updating project dependencies to their latest versions 2022-07-30 12:41:37 +02:00
977fa72dde fix(client): 🐛 fix mui rendering of utc dates 2022-07-30 12:21:05 +02:00
5197f954c0 fix(client): 🐛 attempt to fix the one-off date issue
use utc functions from dayjs to correspond to the same date on the server
2022-07-31 02:13:08 -08:00
58341e4cd2 New translations builder.json (Serbian (Cyrillic)) 2022-07-28 13:44:38 +02:00
1559703567 chore(deps): bump docker/build-push-action from 3.0.0 to 3.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 02:24:03 +00:00
0a1fd50d07 New translations dashboard.json (Norwegian) 2022-07-17 03:00:38 +02:00
1c19062c63 chore(release): 3.4.8 2022-07-13 11:08:14 +02:00
25cf594eb9 feat(google): add toast to display error message from google 2022-07-13 11:05:27 +02:00
1c3beee6cd chore(deps): update dependencies 2022-07-13 09:40:29 +02:00
95c3d4c315 Merge pull request #937 from AmruthPillai/dependabot/gradle/app/org.jetbrains.kotlin.android-1.7.10
chore(deps): bump org.jetbrains.kotlin.android from 1.7.0 to 1.7.10 in /app
2022-07-12 15:33:31 +02:00
85df339e56 chore(deps): bump org.jetbrains.kotlin.android in /app
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 1.7.0 to 1.7.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.7.10/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.7.0...v1.7.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.android
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 02:40:56 +00:00
d61ad44ebc chore(release): 3.4.7 2022-07-01 01:04:52 +02:00
ccb1eff749 chore(mui): migrate from mui/lab to mui/x-date-pickers 2022-07-01 01:04:03 +02:00
bfb48e3aa7 fix(mui): update mui datepickers to newer package 2022-07-01 01:01:27 +02:00
e2e08ad390 Merge branch 'main' of github.com:AmruthPillai/Reactive-Resume 2022-07-01 00:50:17 +02:00
f0dda06af3 Merge pull request #932 from AmruthPillai/i18n_main
New Crowdin updates
2022-07-01 00:50:10 +02:00
4c4e77e21d New translations common.json (Portuguese) 2022-07-01 00:48:52 +02:00
f364ae8929 New translations common.json (Indonesian) 2022-07-01 00:48:49 +02:00
b52f292d89 New translations dashboard.json (Indonesian) 2022-07-01 00:48:32 +02:00
8cac7f907c New translations modals.json (Hebrew) 2022-07-01 00:48:25 +02:00
a18a60679f New translations builder.json (Hebrew) 2022-07-01 00:48:04 +02:00
5cc6a81b8c New translations landing.json (Hebrew) 2022-07-01 00:48:02 +02:00
6ff212b698 New translations dashboard.json (Hebrew) 2022-07-01 00:48:00 +02:00
56bcec5196 chore(deps): update dependencies across all projects 2022-07-01 00:46:41 +02:00
12019f90e9 Merge pull request #928 from ravindra3003/main
UpdateTutorial
2022-07-01 00:27:29 +02:00
7e6e69ed49 Update create-resume.mdx 2022-06-23 13:14:16 +05:30
a09a945e17 Update create-account.mdx 2022-06-23 13:12:21 +05:30
df714dc8de Update create-account.mdx 2022-06-22 15:47:01 +05:30
28b63ef0c7 Update create-account.mdx 2022-06-22 15:16:45 +05:30
1b594dac61 Update create-resume.mdx 2022-06-22 15:00:18 +05:30
dd34a30ee0 Update create-account.mdx 2022-06-22 12:09:18 +05:30
0af398ceed Update create-account.mdx 2022-06-22 11:45:45 +05:30
04abd2cacc Update create-account.mdx 2022-06-22 11:37:15 +05:30
a037a091e7 chore(release): 3.4.6 2022-06-19 20:55:23 +02:00
f3a4c17cb4 correct versions 2022-06-19 20:55:14 +02:00
f06f7ad2e5 chore(release): 3.6.2 2022-06-19 20:52:34 +02:00
aab2e5c8a9 correct versions 2022-06-19 20:52:24 +02:00
4318dbe762 add languages 2022-06-19 20:51:10 +02:00
ae3ff274ee updates to app 2022-06-19 20:44:28 +02:00
164403c495 chore(release): 3.4.6 2022-06-19 20:44:04 +02:00
8595c92fb7 Merge pull request #906 from dvd741-a/main
Add File based Storage toggle for Photos
2022-06-18 16:53:05 +02:00
8f75f32f88 Merge pull request #903 from AmruthPillai/i18n_main
New Crowdin updates
2022-06-18 16:52:54 +02:00
0d44189a5f Merge branch 'main' into i18n_main 2022-06-18 16:51:51 +02:00
cd16a6d360 Merge pull request #902 from Mhnramin/main
New translation for Bahasa (Indonesia)
2022-06-18 16:49:25 +02:00
7b795bfaa4 Merge pull request #914 from AmruthPillai/dependabot/gradle/app/org.jetbrains.kotlin.android-1.7.0
chore(deps): bump org.jetbrains.kotlin.android from 1.6.21 to 1.7.0 in /app
2022-06-18 16:49:08 +02:00
8f78d47661 Change Dockerfile to include Volume 2022-06-18 14:21:10 +02:00
0b5e5a2ece New translations common.json (Hebrew) 2022-06-14 03:09:35 +05:30
9eade9514c chore(deps): bump org.jetbrains.kotlin.android in /app
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 1.6.21 to 1.7.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.7.0/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.21...v1.7.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.android
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-13 02:22:25 +00:00
d744e06e96 New translations builder.json (Persian) 2022-06-07 23:23:40 +05:30
9657c199d2 New translations common.json (Persian) 2022-06-07 23:23:39 +05:30
2dbe737b73 New translations dashboard.json (Persian) 2022-06-07 23:23:38 +05:30
f624699efa New translations landing.json (Persian) 2022-06-07 23:23:37 +05:30
e46f473754 New translations modals.json (Persian) 2022-06-07 23:23:36 +05:30
767f4bf4bc Correction 2022-06-06 15:41:08 +02:00
1c5d025c15 Version 2022-06-06 15:26:37 +02:00
8de8d89290 File Storage toggle 2022-06-06 15:15:39 +02:00
83662122a5 Changes 2022-06-06 02:31:44 +02:00
126482a760 chore(release): 3.6.1 2022-06-06 01:36:29 +02:00
b04c22a27b Changes 2022-06-06 01:35:46 +02:00
63f88a3d1c Changes 2022-06-06 01:34:58 +02:00
bd519db14f chore(release): 3.6.0 2022-06-06 01:32:56 +02:00
a49aa42176 New translations modals.json (Indonesian) 2022-06-05 12:49:38 +05:30
1a382db4d9 New translations builder.json (Indonesian) 2022-06-05 12:49:36 +05:30
c68f75dc8c New translations common.json (Indonesian) 2022-06-05 12:49:35 +05:30
c12de0c013 New translations dashboard.json (Indonesian) 2022-06-05 12:49:34 +05:30
4cafaf306a New translations landing.json (Indonesian) 2022-06-05 12:49:33 +05:30
0238cf18a5 New translation for Bahasa (Indonesia) 2022-06-05 08:16:49 +08:00
2f6072a7ba Merge pull request #889 from AmruthPillai/i18n_main
New Crowdin updates
2022-05-24 08:25:16 +05:30
55dd2c5925 Merge pull request #879 from AmruthPillai/dependabot/github_actions/docker/build-push-action-3.0.0
chore(deps): bump docker/build-push-action from 2.10.0 to 3.0.0
2022-05-24 08:25:05 +05:30
a3e25f87fa Merge pull request #878 from AmruthPillai/dependabot/github_actions/docker/login-action-2.0.0
chore(deps): bump docker/login-action from 1.14.1 to 2.0.0
2022-05-24 08:24:56 +05:30
9e82ea11c3 chore(release): 3.4.5 2022-05-24 08:23:03 +05:30
62fd63e41f fix(i18n): fix language mismatch in exported pdf 2022-05-24 08:21:03 +05:30
b91c175352 New translations builder.json (Arabic) 2022-05-18 19:51:52 +05:30
898e2314fc New translations builder.json (Arabic) 2022-05-18 18:39:53 +05:30
bca2aa2fe5 chore(deps): bump docker/build-push-action from 2.10.0 to 3.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.10.0 to 3.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2.10.0...v3.0.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 02:51:05 +00:00
427fdb717a chore(deps): bump docker/login-action from 1.14.1 to 2.0.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.14.1 to 2.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1.14.1...v2.0.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 02:51:02 +00:00
ee5b0187e2 docs(i18n): add Hungarian language to docs readme 2022-05-02 09:01:50 +02:00
94d05f33b4 chore(release): v3.4.4 2022-05-02 08:59:36 +02:00
35fe4e2774 feat(i18n): add Hungrarian (Magyar) language 2022-05-02 08:58:25 +02:00
317901a4d2 Merge pull request #870 from AmruthPillai/i18n_main
New Crowdin updates
2022-05-02 08:50:01 +02:00
350ffcbc43 New translations builder.json (Odia) 2022-05-02 08:47:55 +02:00
2c074a96c8 New translations builder.json (Kannada) 2022-05-02 08:47:54 +02:00
79f140b2d0 New translations builder.json (Malayalam) 2022-05-02 08:47:53 +02:00
649c655ad5 New translations builder.json (Hindi) 2022-05-02 08:47:52 +02:00
d5284a90d1 New translations builder.json (Bengali) 2022-05-02 08:47:51 +02:00
bd18c53ab8 New translations builder.json (Tamil) 2022-05-02 08:47:50 +02:00
704c1ab7d4 New translations builder.json (Vietnamese) 2022-05-02 08:47:35 +02:00
1dbd7f221e New translations builder.json (Chinese Simplified) 2022-05-02 08:47:34 +02:00
e1a47ffbe2 New translations modals.json (Hungarian) 2022-05-02 08:47:33 +02:00
2add629970 New translations modals.json (Czech) 2022-05-02 08:47:31 +02:00
a48fcd9c97 New translations landing.json (Hungarian) 2022-05-02 08:47:29 +02:00
df7b00cb2c New translations builder.json (Turkish) 2022-05-02 08:47:28 +02:00
27fc939101 New translations builder.json (Portuguese) 2022-05-02 08:47:26 +02:00
7c574d17e4 New translations builder.json (Polish) 2022-05-02 08:47:25 +02:00
86a105f5a5 New translations builder.json (Dutch) 2022-05-02 08:47:25 +02:00
327bcc2b32 New translations builder.json (Italian) 2022-05-02 08:47:24 +02:00
a6cbd85010 New translations builder.json (Greek) 2022-05-02 08:47:23 +02:00
371b820923 New translations builder.json (German) 2022-05-02 08:47:22 +02:00
1d47fd0267 New translations builder.json (Danish) 2022-05-02 08:47:21 +02:00
276fc95bb0 New translations builder.json (Czech) 2022-05-02 08:47:20 +02:00
34c8861321 New translations builder.json (Arabic) 2022-05-02 08:47:19 +02:00
780b782579 New translations builder.json (French) 2022-05-02 08:47:18 +02:00
9daa99fd5b New translations builder.json (Spanish) 2022-05-02 08:47:16 +02:00
76b3aa29cf New translations landing.json (Czech) 2022-05-02 08:47:16 +02:00
25d4913fab New translations common.json (Hungarian) 2022-05-02 08:47:15 +02:00
0efeff3a4f New translations common.json (Czech) 2022-05-02 08:47:13 +02:00
f56089925e New translations builder.json (Swedish) 2022-05-02 08:47:12 +02:00
5afae08f20 New translations builder.json (Hungarian) 2022-05-02 08:47:11 +02:00
4bf114dfd6 New translations dashboard.json (Hungarian) 2022-05-02 08:47:09 +02:00
23a3c2e624 New translations dashboard.json (Czech) 2022-05-02 08:47:07 +02:00
71862f4354 New translations builder.json (Russian) 2022-05-01 15:42:24 +02:00
134 changed files with 9191 additions and 5205 deletions

View File

@ -1,13 +1,19 @@
# Build Artifacts
dist
.next
.turbo
# IDEs
.vscode
# Project Metadata
.crowdin.yml
# Documentation
README.md
SECURITY.md
CHANGELOG.md
CODE_OF_CONDUCT.md
# Project Dependencies
node_modules
@ -18,4 +24,4 @@ Dockerfile
docker-compose.yml
# Android App
/app
/app

View File

@ -1,7 +1,11 @@
# Turbo Cache (Optional)
TURBO_TEAM=
TURBO_TOKEN=
# Server + Client
TZ=UTC
PUBLIC_URL=http://localhost:3000
PUBLIC_SERVER_URL=http://localhost:3000/api
PUBLIC_URL=http://client:3000
PUBLIC_SERVER_URL=http://server:3100
PUBLIC_GOOGLE_CLIENT_ID=
# Server + Database
@ -18,10 +22,12 @@ JWT_SECRET=
JWT_EXPIRY_TIME=604800
GOOGLE_CLIENT_SECRET=
GOOGLE_API_KEY=
SENDGRID_API_KEY=
SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID=
SENDGRID_FROM_NAME=
SENDGRID_FROM_EMAIL=
MAIL_FROM_NAME=
MAIL_FROM_EMAIL=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
STORAGE_BUCKET=
STORAGE_REGION=
STORAGE_ENDPOINT=

View File

@ -5,27 +5,27 @@
"extends": ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
"plugins": ["@typescript-eslint/eslint-plugin", "simple-import-sort", "unused-imports"],
"rules": {
// Unused Imports
"no-unused-vars": "off",
// Simple Import Sort
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"unused-imports/no-unused-vars": [
"warn",
{
"vars": "all",
"args": "none",
"varsIgnorePattern": "^_",
"argsIgnorePattern": "^_"
}
],
"unused-imports/no-unused-imports": "error",
// TypeScript ESLint
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/interface-name-prefix": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
// Simple Import Sort
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
// Unused Imports
"no-unused-vars": "off",
"unused-imports/no-unused-imports": "error",
"unused-imports/no-unused-vars": [
"warn",
{
"vars": "all",
"varsIgnorePattern": "^_",
"args": "none",
"argsIgnorePattern": "^_"
}
]
"@typescript-eslint/explicit-module-boundary-types": "off"
},
"overrides": [
{

View File

@ -1,36 +1,43 @@
---
name: Bug Report
about: Create a report to help improve
title: "[BUG] "
title: '[BUG] '
labels: bug
assignees: ''
---
**Describe the bug**
<!-- 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: -->
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. -->
**Screenshots**
<!-- 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. -->

View File

@ -1,20 +1,23 @@
---
name: Feature Request
about: Suggest an idea for this project
title: "[FEATURE] "
title: '[FEATURE] '
labels: enhancement
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 [...] -->
**Describe the solution you'd like**
<!-- 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. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->

View File

@ -9,29 +9,35 @@ jobs:
name: Client
runs-on: ubuntu-latest
env:
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
with:
fetch-depth: 2
- id: version
name: Get Version
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Login to Docker Hub
uses: docker/login-action@v1.14.1
uses: docker/login-action@v2.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.14.1
uses: docker/login-action@v2.0.0
with:
registry: ghcr.io
username: $GITHUB_REPOSITORY_OWNER
password: ${{ secrets.GH_TOKEN }}
- name: Build and Push Client Image
uses: docker/build-push-action@v2.10.0
uses: docker/build-push-action@v3.1.1
with:
context: .
push: true
@ -46,29 +52,35 @@ jobs:
name: Server
runs-on: ubuntu-latest
env:
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
with:
fetch-depth: 2
- id: version
name: Get Version
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Login to Docker Hub
uses: docker/login-action@v1.14.1
uses: docker/login-action@v2.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.14.1
uses: docker/login-action@v2.0.0
with:
registry: ghcr.io
username: $GITHUB_REPOSITORY_OWNER
password: ${{ secrets.GH_TOKEN }}
- name: Build and Push Server Image
uses: docker/build-push-action@v2.10.0
uses: docker/build-push-action@v3.1.1
with:
context: .
push: true

88
.github/workflows/docker-build.yml vendored Normal file
View File

@ -0,0 +1,88 @@
name: Build Docker Image
on: pull_request
jobs:
client:
name: Client
runs-on: ubuntu-latest
env:
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
with:
fetch-depth: 2
- id: vars
name: Get Short SHA
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0
- id: buildx
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.0.0
with:
install: true
- id: version
name: Get Version
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Build Client Image
uses: docker/build-push-action@v3.1.1
with:
context: .
push: false
file: client/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
amruthpillai/reactive-resume:client-latest
amruthpillai/reactive-resume:client-${{ steps.vars.outputs.sha_short }}
ghcr.io/amruthpillai/reactive-resume:client-latest
ghcr.io/amruthpillai/reactive-resume:client-${{ steps.vars.outputs.sha_short }}
server:
name: Server
runs-on: ubuntu-latest
env:
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
with:
fetch-depth: 2
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.0.0
- id: buildx
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.0.0
with:
install: true
- id: version
name: Get Version
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Build Server Image
uses: docker/build-push-action@v3.1.1
with:
context: .
push: false
file: server/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
amruthpillai/reactive-resume:server-latest
amruthpillai/reactive-resume:server-${{ steps.vars.outputs.sha_short }}
ghcr.io/amruthpillai/reactive-resume:server-latest
ghcr.io/amruthpillai/reactive-resume:server-${{ steps.vars.outputs.sha_short }}

5
.gitignore vendored
View File

@ -7,4 +7,7 @@
node_modules
# macOS
.DS_Store
.DS_Store
# Turbo
.turbo

View File

@ -1,6 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm install
pnpm run lint
pnpm run format

2
.npmrc Normal file
View File

@ -0,0 +1,2 @@
auto-install-peers=true
strict-peer-dependencies=false

View File

@ -18,6 +18,7 @@ CHANGELOG.md
# Project Dependencies
node_modules
pnpm-lock.yaml
# Docker
Dockerfile

View File

@ -1,3 +1,7 @@
{
"recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "lokalise.i18n-ally"]
}
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"lokalise.i18n-ally"
]
}

12
.vscode/launch.json vendored
View File

@ -3,12 +3,12 @@
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Debug: Server",
"port": 9229,
"request": "attach",
"restart": true,
"stopOnEntry": false,
"protocol": "inspector"
"protocol": "inspector",
"stopOnEntry": false
},
{
"name": "Debug: Client",
@ -17,10 +17,10 @@
"command": "pnpm run dev:client",
"console": "integratedTerminal",
"serverReadyAction": {
"action": "debugWithChrome",
"pattern": "started server on .+, url: (https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
"uriFormat": "%s"
}
}
]
}
}

25
.vscode/settings.json vendored
View File

@ -1,25 +1,22 @@
{
"css.validate": false,
"scss.validate": false,
"editor.wordWrap": "on",
"npm.packageManager": "pnpm",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.wordWrap": "on",
"eslint.workingDirectories": [
"schema",
"client",
"server"
],
"i18n-ally.enabledFrameworks": [
"react"
],
"i18n-ally.keystyle": "nested",
"i18n-ally.localesPaths": [
"client/public/locales"
],
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
"i18n-ally.sortKeys": true,
"scss.validate": false
"conventionalCommits.scopes": [
"client",
"server",
"docker",
"dependencies"
]
}

View File

@ -2,6 +2,93 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [3.5.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.2...v3.5.3) (2022-08-11)
### [3.5.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.1...v3.5.2) (2022-08-04)
### Features
* **client:** :dizzy: add Finnish language support ([16d19eb](https://github.com/AmruthPillai/Reactive-Resume/commit/16d19eb70f64f768304f352d0f87102d328b57c1))
### [3.5.1](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.5.0...v3.5.1) (2022-07-30)
### Features
* **client:** :sparkles: ask for confirmation when resetting a resume ([4d43f6a](https://github.com/AmruthPillai/Reactive-Resume/commit/4d43f6a6427198e62e9fcb995f1a28c0ee4de71e))
* **docker:** :zap: remove ports from postgres docker instance ([07c91e9](https://github.com/AmruthPillai/Reactive-Resume/commit/07c91e9ac21e8ef120d08ab92363d8e48a55aaba))
### Bug Fixes
* **server:** :zap: don't initialize sendgrid if the apikey is empty ([05d3f1f](https://github.com/AmruthPillai/Reactive-Resume/commit/05d3f1f06fbffd899269a5c4dea3c52cf408125f))
## [3.5.0](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.8...v3.5.0) (2022-07-30)
### Bug Fixes
* **client:** :bug: attempt to fix the one-off date issue ([5197f95](https://github.com/AmruthPillai/Reactive-Resume/commit/5197f954c0baed3daf1c7e2c79b607354ef42024))
* **client:** :bug: fix mui rendering of utc dates ([977fa72](https://github.com/AmruthPillai/Reactive-Resume/commit/977fa72ddeeeebf7463d43a820e85f783489a4dc))
### [3.4.8](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.7...v3.4.8) (2022-07-13)
### Features
* **google:** add toast to display error message from google ([25cf594](https://github.com/AmruthPillai/Reactive-Resume/commit/25cf594eb948e1c2d6157028ee1fff2799df5f92))
### [3.4.7](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.6...v3.4.7) (2022-06-30)
### Bug Fixes
* **mui:** update mui datepickers to newer package ([bfb48e3](https://github.com/AmruthPillai/Reactive-Resume/commit/bfb48e3aa7e0575922841522edc1d38544d1884f))
### [3.4.6](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.5...v3.4.6) (2022-06-19)
## [3.6.0](https://github.com/dvd741-a/Reactive-Resume/compare/v3.3.4...v3.6.0) (2022-06-05)
### Features
* **all:** upgrade to v3.4.0 ([87d381f](https://github.com/dvd741-a/Reactive-Resume/commit/87d381fe8eab9ca4624df5de6e8b9ab18a072b67))
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/dvd741-a/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
### Bug Fixes
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/dvd741-a/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
* **typeorm:** update typeorm to latest 0.2.x for secpatch ([5bdb92b](https://github.com/dvd741-a/Reactive-Resume/commit/5bdb92b1cff9e56879f9bbf31801d6554a00a8d5))
## [3.5.0](https://github.com/dvd741-a/Reactive-Resume/compare/v3.3.4...v3.5.0) (2022-06-05)
### Features
* **all:** upgrade to v3.4.0 ([87d381f](https://github.com/dvd741-a/Reactive-Resume/commit/87d381fe8eab9ca4624df5de6e8b9ab18a072b67))
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/dvd741-a/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
### Bug Fixes
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/dvd741-a/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
* **typeorm:** update typeorm to latest 0.2.x for secpatch ([5bdb92b](https://github.com/dvd741-a/Reactive-Resume/commit/5bdb92b1cff9e56879f9bbf31801d6554a00a8d5))
### [3.4.5](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.4...v3.4.5) (2022-05-24)
### Bug Fixes
* **i18n:** fix language mismatch in exported pdf ([62fd63e](https://github.com/AmruthPillai/Reactive-Resume/commit/62fd63e41fe10fba843a40fb08191f5944f2b2fc))
## [3.4.4](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.3...v3.4.4) (2022-05-02)
### Features
* **i18n:** add Hungrarian (Magyar) language ([35fe4e2](https://github.com/AmruthPillai/Reactive-Resume/commit/35fe4e27744b6f7325b25db2cf3b626ed8598623))
### [3.4.3](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.2...v3.4.3) (2022-05-01)
### [3.4.2](https://github.com/AmruthPillai/Reactive-Resume/compare/v3.4.1...v3.4.2) (2022-04-30)

View File

@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within

View File

@ -18,7 +18,7 @@ You have complete control over what goes into your resume, how it looks, what co
## Table of Contents
- [Reactive Resume](#reactive-resume)
- [Go to App | [Docs](https://docs.rxresu.me)](#go-to-app--docs)
- [Go to App](https://rxresu.me) | [Docs](https://docs.rxresu.me)
- [Table of Contents](#table-of-contents)
- [Features](#features)
- [Languages](#languages)
@ -56,19 +56,25 @@ You have complete control over what goes into your resume, how it looks, what co
- Arabic (اَلْعَرَبِيَّةُ)
- Bengali (বাংলা)
- Bulgarian (български)
- Chinese (中文)
- Czech (čeština)
- Danish (Dansk)
- Dutch (Nederlands)
- English
- Finnish (Suomi)
- French (Français)
- German (Deutsch)
- Greek (Ελληνικά)
- Hebrew (Ivrit)
- Hindi (हिन्दी)
- Hungarian (Magyar)
- Indonesian (Bahasa Indonesia)
- Italian (Italiano)
- Kannada (ಕನ್ನಡ)
- Malayalam (മലയാളം)
- Odia (ଓଡ଼ିଆ)
- Persian (Farsi)
- Polish (Polski)
- Portuguese (Português)
- Russian (русский)

View File

@ -1,7 +1,7 @@
plugins {
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}
task clean(type: Delete) {

5
client/.gitignore vendored
View File

@ -36,4 +36,7 @@ yarn-error.log*
*.tsbuildinfo
# react-env
__ENV.js
__ENV.js
# next-sitemap
sitemap*.xml

View File

@ -1,22 +1,19 @@
FROM node:lts-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
FROM node:lts-alpine AS base
WORKDIR /app
COPY package.json pnpm-*.yaml ./
RUN apk add --no-cache g++ git curl make python3 \
&& curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
FROM base as dependencies
COPY package.json pnpm-*.yaml turbo.json ./
COPY ./schema/package.json ./schema/package.json
COPY ./client/package.json ./client/package.json
RUN pnpm install --frozen-lockfile
FROM node:lts-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
WORKDIR /app
FROM base as builder
COPY . .
@ -24,21 +21,20 @@ COPY --from=dependencies /app/node_modules ./node_modules
COPY --from=dependencies /app/schema/node_modules ./schema/node_modules
COPY --from=dependencies /app/client/node_modules ./client/node_modules
RUN pnpm run build:schema
RUN pnpm run build:client
ARG TURBO_TEAM
ARG TURBO_TOKEN
FROM node:lts-alpine as production
ENV TURBO_TEAM $TURBO_TEAM
ENV TURBO_TOKEN $TURBO_TOKEN
WORKDIR /app
RUN pnpm run build --filter client
RUN apk add --no-cache curl \
&& curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
FROM base as production
COPY --from=builder /app/pnpm-*.yaml ./
COPY --from=builder /app/package.json ./
COPY --from=builder /app/package.json /app/pnpm-*.yaml /app/turbo.json ./
COPY --from=builder /app/client/package.json ./client/package.json
RUN pnpm install -F client --frozen-lockfile --prod
RUN pnpm install --filter client --prod --frozen-lockfile --workspace-root
COPY --from=builder /app/client/.next ./client/.next
COPY --from=builder /app/client/public ./client/public
@ -52,4 +48,4 @@ 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" ]
CMD [ "pnpm", "run", "start", "--filter", "client" ]

View File

@ -15,7 +15,7 @@ import dayjs from 'dayjs';
import get from 'lodash/get';
import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
import { useMemo } from 'react';
import { useMemo, useState } from 'react';
import { useMutation } from 'react-query';
import Heading from '@/components/shared/Heading';
@ -36,6 +36,8 @@ const Settings = () => {
const { locale, ...router } = useRouter();
const [confirmReset, setConfirmReset] = useState(false);
const resume = useAppSelector((state) => state.resume);
const theme = useAppSelector((state) => state.build.theme);
const pages = useAppSelector((state) => state.resume.metadata.layout);
@ -48,7 +50,7 @@ const Settings = () => {
const dateConfig: DateConfig = useMemo(() => get(resume, 'metadata.date'), [resume]);
const isDarkMode = useMemo(() => theme === 'dark', [theme]);
const exampleString = useMemo(() => `Eg. ${dayjs().format(dateConfig.format)}`, [dateConfig.format]);
const exampleString = useMemo(() => `Eg. ${dayjs().utc().format(dateConfig.format)}`, [dateConfig.format]);
const themeString = useMemo(() => (isDarkMode ? 'Matte Black Everything' : 'As bright as your future'), [isDarkMode]);
const { mutateAsync: loadSampleDataMutation } = useMutation<Resume, ServerError, LoadSampleDataParams>(
@ -78,9 +80,14 @@ const Settings = () => {
};
const handleResetResume = async () => {
await resetResumeMutation({ id });
if (!confirmReset) {
return setConfirmReset(true);
}
queryClient.invalidateQueries(`resume/${username}/${slug}`);
await resetResumeMutation({ id });
await queryClient.invalidateQueries(`resume/${username}/${slug}`);
setConfirmReset(false);
};
return (
@ -90,7 +97,7 @@ const Settings = () => {
<List sx={{ padding: 0 }}>
{/* Global Settings */}
<>
<ListSubheader className="rounded">
<ListSubheader disableSticky className="rounded">
{t<string>('builder.rightSidebar.sections.settings.global.heading')}
</ListSubheader>
@ -148,7 +155,7 @@ const Settings = () => {
{/* Page Settings */}
<>
<ListSubheader className="rounded">
<ListSubheader disableSticky className="rounded">
{t<string>('builder.rightSidebar.sections.settings.page.heading')}
</ListSubheader>
@ -180,7 +187,7 @@ const Settings = () => {
{/* Resume Settings */}
<>
<ListSubheader className="rounded">
<ListSubheader disableSticky className="rounded">
{t<string>('builder.rightSidebar.sections.settings.resume.heading')}
</ListSubheader>
@ -202,7 +209,11 @@ const Settings = () => {
<DeleteForever />
</ListItemIcon>
<ListItemText
primary={t<string>('builder.rightSidebar.sections.settings.resume.reset.primary')}
primary={
confirmReset
? 'Are you sure?'
: t<string>('builder.rightSidebar.sections.settings.resume.reset.primary')
}
secondary={t<string>('builder.rightSidebar.sections.settings.resume.reset.secondary')}
/>
</ListItemButton>

View File

@ -1,5 +1,5 @@
import { DatePicker } from '@mui/lab';
import { TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import dayjs from 'dayjs';
import { isEmpty } from 'lodash';
import get from 'lodash/get';
@ -63,7 +63,7 @@ const ResumeInput: React.FC<Props> = ({ type = 'text', label, path, className, m
renderInput={(params) => <TextField {...params} error={false} className={className} />}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && onChangeValue('');
date && dayjs(date).isValid() && onChangeValue(date.toISOString());
date && dayjs(date).utc().isValid() && onChangeValue(dayjs(date).utc().toISOString());
}}
/>
);

View File

@ -6,6 +6,7 @@ export type Language = {
export const languages: Language[] = [
{ code: 'ar', name: 'Arabic', localName: 'اَلْعَرَبِيَّةُ' },
{ code: 'bg', name: 'Bulgarian', localName: 'български' },
{ code: 'bn', name: 'Bengali', localName: 'বাংলা' },
{ code: 'cs', name: 'Czech', localName: 'čeština' },
{ code: 'da', name: 'Danish', localName: 'Dansk' },
@ -13,13 +14,18 @@ export const languages: Language[] = [
{ code: 'el', name: 'Greek', localName: 'Ελληνικά' },
{ code: 'en', name: 'English' },
{ code: 'es', name: 'Spanish', localName: 'Español' },
{ code: 'fi', name: 'Finnish', localName: 'Suomi' },
{ code: 'fr', name: 'French', localName: 'Français' },
{ code: 'he', name: 'Hebrew', localName: 'Ivrit' },
{ code: 'hi', name: 'Hindi', localName: 'हिन्दी' },
{ code: 'hu', name: 'Hungarian', localName: 'Magyar' },
{ code: 'id', name: 'Indonesian', localName: 'Bahasa Indonesia' },
{ code: 'it', name: 'Italian', localName: 'Italiano' },
{ code: 'kn', name: 'Kannada', localName: 'ಕನ್ನಡ' },
{ code: 'ml', name: 'Malayalam', localName: 'മലയാളം' },
{ code: 'nl', name: 'Dutch', localName: 'Nederlands' },
{ code: 'or', name: 'Odia', localName: 'ଓଡ଼ିଆ' },
{ code: 'fa', name: 'Persian', localName: 'Farsi' },
{ code: 'pl', name: 'Polish', localName: 'Polski' },
{ code: 'pt', name: 'Portuguese', localName: 'Português' },
{ code: 'ru', name: 'Russian', localName: 'русский' },

View File

@ -1,6 +1,6 @@
import { createTheme } from '@mui/material';
import { createTheme, ThemeOptions } from '@mui/material/styles';
const theme = createTheme({
const theme: ThemeOptions = {
typography: {
fontSize: 12,
fontFamily: 'Inter, sans-serif',
@ -49,7 +49,7 @@ const theme = createTheme({
},
},
},
});
};
export const lightTheme = createTheme({
...theme,

View File

@ -1,7 +1,8 @@
import env from '@beam-australia/react-env';
import { joiResolver } from '@hookform/resolvers/joi';
import { Google, Login, Visibility, VisibilityOff } from '@mui/icons-material';
import { Login, Visibility, VisibilityOff } from '@mui/icons-material';
import { Button, IconButton, InputAdornment, TextField } from '@mui/material';
import { CredentialResponse, GoogleLogin } from '@react-oauth/google';
import Joi from 'joi';
import { isEmpty } from 'lodash';
import { Trans, useTranslation } from 'next-i18next';
@ -17,8 +18,6 @@ import { ServerError } from '@/services/axios';
import { useAppDispatch, useAppSelector } from '@/store/hooks';
import { setModalState } from '@/store/modal/modalSlice';
declare const google: any;
type FormData = {
identifier: string;
password: string;
@ -85,18 +84,16 @@ const LoginModal: React.FC = () => {
dispatch(setModalState({ modal: 'auth.forgot', state: { open: true } }));
};
const handleLoginWithGoogle = async () => {
google.accounts.id.initialize({
client_id: env('GOOGLE_CLIENT_ID'),
callback: async (response: any) => {
await loginWithGoogleMutation({ credential: response.credential });
const handleLoginWithGoogle = async (response: CredentialResponse) => {
if (response.credential) {
await loginWithGoogleMutation({ credential: response.credential }, { onError: handleLoginWithGoogleError });
handleClose();
},
auto_select: false,
});
handleClose();
}
};
google.accounts.id.prompt();
const handleLoginWithGoogleError = () => {
toast("Please try logging in using email/password, or use another browser that supports Google's One Tap API.");
};
const PasswordVisibility = (): React.ReactElement => {
@ -120,15 +117,7 @@ const LoginModal: React.FC = () => {
footerChildren={
<div className="flex gap-4">
{!isEmpty(env('GOOGLE_CLIENT_ID')) && (
<Button
type="submit"
variant="outlined"
disabled={isLoading}
startIcon={<Google />}
onClick={handleLoginWithGoogle}
>
{t<string>('modals.auth.login.actions.google')}
</Button>
<GoogleLogin onSuccess={handleLoginWithGoogle} onError={handleLoginWithGoogleError} />
)}
<Button type="submit" onClick={handleSubmit(onSubmit)} disabled={isLoading}>

View File

@ -1,11 +1,13 @@
import env from '@beam-australia/react-env';
import { joiResolver } from '@hookform/resolvers/joi';
import { Google, HowToReg } from '@mui/icons-material';
import { HowToReg } from '@mui/icons-material';
import { Button, TextField } from '@mui/material';
import { CredentialResponse, GoogleLogin } from '@react-oauth/google';
import Joi from 'joi';
import { isEmpty } from 'lodash';
import { Trans, useTranslation } from 'next-i18next';
import { Controller, useForm } from 'react-hook-form';
import toast from 'react-hot-toast';
import { useMutation } from 'react-query';
import BaseModal from '@/components/shared/BaseModal';
@ -14,8 +16,6 @@ import { ServerError } from '@/services/axios';
import { useAppDispatch, useAppSelector } from '@/store/hooks';
import { setModalState } from '@/store/modal/modalSlice';
declare const google: any;
type FormData = {
name: string;
username: string;
@ -79,18 +79,16 @@ const RegisterModal: React.FC = () => {
dispatch(setModalState({ modal: 'auth.login', state: { open: true } }));
};
const handleLoginWithGoogle = async () => {
google.accounts.id.initialize({
client_id: env('GOOGLE_CLIENT_ID'),
callback: async (response: any) => {
await loginWithGoogleMutation({ credential: response.credential });
const handleLoginWithGoogle = async (response: CredentialResponse) => {
if (response.credential) {
await loginWithGoogleMutation({ credential: response.credential }, { onError: handleLoginWithGoogleError });
handleClose();
},
auto_select: false,
});
handleClose();
}
};
google.accounts.id.prompt();
const handleLoginWithGoogleError = () => {
toast("Please try logging in using email/password, or use another browser that supports Google's One Tap API.");
};
return (
@ -102,15 +100,7 @@ const RegisterModal: React.FC = () => {
footerChildren={
<div className="flex gap-4">
{!isEmpty(env('GOOGLE_CLIENT_ID')) && (
<Button
type="submit"
variant="outlined"
disabled={isLoading}
startIcon={<Google />}
onClick={handleLoginWithGoogle}
>
{t<string>('modals.auth.register.actions.google')}
</Button>
<GoogleLogin onSuccess={handleLoginWithGoogle} onError={handleLoginWithGoogleError} />
)}
<Button type="submit" onClick={handleSubmit(onSubmit)} disabled={isLoading}>

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Award, SectionPath } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -134,7 +134,7 @@ const AwardModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Certificate, SectionPath } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -134,7 +134,7 @@ const CertificateModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, Slider, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Custom } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -150,7 +150,7 @@ const CustomModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField
@ -174,7 +174,7 @@ const CustomModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Education, SectionPath } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -173,7 +173,7 @@ const EducationModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField
@ -197,7 +197,7 @@ const EducationModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Project, SectionPath } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -143,7 +143,7 @@ const ProjectModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField
@ -167,7 +167,7 @@ const ProjectModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { Publication, SectionPath } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -134,7 +134,7 @@ const PublicationModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { SectionPath, Volunteer } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -140,7 +140,7 @@ const VolunteerModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField
@ -164,7 +164,7 @@ const VolunteerModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -1,7 +1,7 @@
import { joiResolver } from '@hookform/resolvers/joi';
import { Add, DriveFileRenameOutline } from '@mui/icons-material';
import DatePicker from '@mui/lab/DatePicker';
import { Button, TextField } from '@mui/material';
import { DatePicker } from '@mui/x-date-pickers';
import { SectionPath, WorkExperience } from '@reactive-resume/schema';
import dayjs from 'dayjs';
import Joi from 'joi';
@ -140,7 +140,7 @@ const WorkModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField
@ -164,7 +164,7 @@ const WorkModal: React.FC = () => {
views={['year', 'month', 'day']}
onChange={(date: Date | null, keyboardInputValue: string | undefined) => {
isEmpty(keyboardInputValue) && field.onChange('');
date && dayjs(date).isValid() && field.onChange(date.toISOString());
date && dayjs(date).utc().isValid() && field.onChange(dayjs(date).utc().toISOString());
}}
renderInput={(params) => (
<TextField

View File

@ -5,20 +5,30 @@ const i18nConfig = {
defaultLocale: 'en',
locales: [
'ar',
'bg',
'bn',
'cs',
'da',
'de',
'el',
'en',
'es',
'fa',
'fi',
'fr',
'he',
'hi',
'hu',
'id',
'it',
'kn',
'ml',
'nl',
'or',
'pl',
'pt',
'ru',
'sv',
'ta',
'tr',
'vi',

View File

@ -2,77 +2,85 @@
"name": "@reactive-resume/client",
"scripts": {
"dev": "react-env --prefix PUBLIC -- next dev",
"lint": "next lint --fix",
"build": "next build && npm run sitemap",
"start": "react-env --prefix PUBLIC -- next start",
"lint": "next lint --fix",
"sitemap": "next-sitemap --config next-sitemap.config.js"
},
"dependencies": {
"@beam-australia/react-env": "^3.1.1",
"@emotion/css": "^11.9.0",
"@emotion/react": "^11.9.0",
"@emotion/styled": "^11.8.1",
"@hookform/resolvers": "2.8.8",
"@monaco-editor/react": "^4.4.4",
"@mui/icons-material": "^5.6.2",
"@mui/lab": "^5.0.0-alpha.79",
"@mui/material": "^5.6.3",
"@reduxjs/toolkit": "^1.8.1",
"@date-io/dayjs": "^2.15.0",
"@emotion/css": "^11.10.0",
"@emotion/react": "^11.10.0",
"@emotion/styled": "^11.10.0",
"@hookform/resolvers": "2.9.7",
"@monaco-editor/react": "^4.4.5",
"@mui/icons-material": "^5.8.4",
"@mui/lab": "^5.0.0-alpha.95",
"@mui/material": "^5.10.1",
"@mui/system": "^5.10.1",
"@mui/x-date-pickers": "5.0.0-beta.6",
"@next/env": "^12.2.5",
"@react-oauth/google": "^0.2.6",
"@reduxjs/toolkit": "^1.8.5",
"axios": "^0.27.2",
"clsx": "^1.1.1",
"dayjs": "^1.11.1",
"clsx": "^1.2.1",
"dayjs": "^1.11.5",
"downloadjs": "^1.4.7",
"joi": "^17.6.0",
"lodash": "^4.17.21",
"md5-hex": "^4.0.0",
"monaco-editor": "^0.33.0",
"nanoid": "^3.3.3",
"next": "12.1.5",
"next-i18next": "^11.0.0",
"react": "17.0.2",
"monaco-editor": "^0.34.0",
"nanoid": "^3.3.4",
"next": "12.2.5",
"next-i18next": "^12.0.0",
"react": "18",
"react-beautiful-dnd": "^13.1.0",
"react-colorful": "^5.5.1",
"react-dnd": "15.1.2",
"react-dnd-html5-backend": "15.1.3",
"react-dom": "17.0.2",
"react-hook-form": "^7.30.0",
"react-hot-toast": "2.2.0",
"react-hotkeys-hook": "^3.4.4",
"react-icons": "^4.3.1",
"react-colorful": "^5.6.1",
"react-dnd": "16.0.1",
"react-dnd-html5-backend": "16.0.1",
"react-dom": "18",
"react-hook-form": "^7.34.2",
"react-hot-toast": "2.3.0",
"react-hotkeys-hook": "^3.4.7",
"react-icons": "^4.4.0",
"react-markdown": "^8.0.3",
"react-query": "^3.38.0",
"react-redux": "^8.0.1",
"react-query": "^3.39.2",
"react-redux": "^8.0.2",
"react-zoom-pan-pinch": "^2.1.3",
"redux": "^4.2.0",
"redux-persist": "^6.0.0",
"redux-saga": "^1.1.3",
"redux-saga": "^1.2.1",
"remark-gfm": "^3.0.1",
"sharp": "^0.30.4",
"sharp": "^0.30.7",
"uuid": "^8.3.2",
"webfontloader": "^1.6.28"
},
"resolutions": {
"@types/react": "18",
"@types/react-dom": "18"
},
"devDependencies": {
"@babel/core": "^7.17.10",
"@babel/core": "^7.18.10",
"@reactive-resume/schema": "workspace:*",
"@tailwindcss/typography": "^0.5.2",
"@tailwindcss/typography": "^0.5.4",
"@types/downloadjs": "^1.4.3",
"@types/lodash": "^4.14.182",
"@types/node": "17.0.30",
"@types/react": "17.0.2",
"@types/lodash": "^4.14.184",
"@types/node": "18.7.9",
"@types/react": "18",
"@types/react-beautiful-dnd": "^13.1.2",
"@types/react-dom": "18",
"@types/react-redux": "^7.1.24",
"@types/tailwindcss": "^3.0.10",
"@types/tailwindcss": "^3.0.11",
"@types/uuid": "^8.3.4",
"@types/webfontloader": "^1.6.34",
"autoprefixer": "^10.4.5",
"csstype": "^3.0.11",
"eslint": "^8.14.0",
"eslint-config-next": "12.1.5",
"next-sitemap": "^2.5.20",
"postcss": "^8.4.13",
"prettier": "^2.6.2",
"sass": "^1.51.0",
"tailwindcss": "^3.0.24",
"typescript": "^4.6.4"
"autoprefixer": "^10.4.8",
"csstype": "^3.1.0",
"eslint-config-next": "12.2.5",
"next-sitemap": "^3.1.21",
"postcss": "^8.4.16",
"sass": "^1.54.5",
"tailwindcss": "^3.1.8",
"typescript": "^4.7.4"
}
}

View File

@ -59,6 +59,14 @@ const Preview: NextPage<Props> = ({ username, slug, resume: initialData }) => {
}
}, [dispatch, initialData]);
useEffect(() => {
if (!isEmpty(resume) && router.locale !== resume.metadata.locale) {
const { pathname, asPath, query } = router;
router.push({ pathname, query }, asPath, { locale: resume.metadata.locale });
}
}, [resume, router]);
useQuery<Resume>(`resume/${username}/${slug}`, () => fetchResumeByIdentifier({ username, slug }), {
initialData,
retry: false,

View File

@ -3,7 +3,6 @@ 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';
@ -55,8 +54,6 @@ export const getServerSideProps: GetServerSideProps<Props | Promise<Props>, Quer
};
const Printer: NextPage<Props> = ({ resume: initialData, locale }) => {
const router = useRouter();
const dispatch = useAppDispatch();
const resume = useAppSelector((state) => state.resume);
@ -65,12 +62,6 @@ const Printer: NextPage<Props> = ({ resume: initialData, locale }) => {
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', []);

View File

@ -1,10 +1,11 @@
import '@/styles/globals.scss';
import DateAdapter from '@mui/lab/AdapterDayjs';
import LocalizationProvider from '@mui/lab/LocalizationProvider';
import env from '@beam-australia/react-env';
import DayjsAdapter from '@date-io/dayjs';
import { LocalizationProvider } from '@mui/x-date-pickers';
import { GoogleOAuthProvider } from '@react-oauth/google';
import type { AppProps } from 'next/app';
import Head from 'next/head';
import Script from 'next/script';
import { appWithTranslation } from 'next-i18next';
import { Toaster } from 'react-hot-toast';
import { QueryClientProvider } from 'react-query';
@ -32,29 +33,29 @@ const App: React.FC<AppProps> = ({ Component, pageProps }) => {
</Head>
<ReduxProvider store={store}>
<LocalizationProvider dateAdapter={DateAdapter}>
<LocalizationProvider dateAdapter={DayjsAdapter}>
<PersistGate loading={null} persistor={persistor}>
<QueryClientProvider client={queryClient}>
<WrapperRegistry>
<Loading />
<GoogleOAuthProvider clientId={env('GOOGLE_CLIENT_ID')}>
<QueryClientProvider client={queryClient}>
<WrapperRegistry>
<Loading />
<Component {...pageProps} />
<Component {...pageProps} />
<ModalWrapper />
<Toaster
position="bottom-right"
toastOptions={{
duration: 4000,
className: 'toast',
}}
/>
</WrapperRegistry>
</QueryClientProvider>
<ModalWrapper />
<Toaster
position="bottom-right"
toastOptions={{
duration: 4000,
className: 'toast',
}}
/>
</WrapperRegistry>
</QueryClientProvider>
</GoogleOAuthProvider>
</PersistGate>
</LocalizationProvider>
</ReduxProvider>
<Script src="https://accounts.google.com/gsi/client" />
</>
);
};

View File

@ -7,6 +7,7 @@ import get from 'lodash/get';
import isEmpty from 'lodash/isEmpty';
import { GetServerSideProps, NextPage } from 'next';
import Link from 'next/link';
import { useRouter } from 'next/router';
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
import { useEffect } from 'react';
import toast from 'react-hot-toast';
@ -35,6 +36,8 @@ export const getServerSideProps: GetServerSideProps<Props> = async ({ query, loc
};
const Preview: NextPage<Props> = ({ shortId }) => {
const router = useRouter();
const dispatch = useAppDispatch();
const { data: resume } = useQuery<Resume>(`resume/${shortId}`, () => fetchResumeByShortId({ shortId }), {
@ -52,6 +55,14 @@ const Preview: NextPage<Props> = ({ shortId }) => {
if (resume) dispatch(setResume(resume));
}, [resume, dispatch]);
useEffect(() => {
if (resume && !isEmpty(resume) && router.locale !== resume.metadata.locale) {
const { pathname, asPath, query } = router;
router.push({ pathname, query }, asPath, { locale: resume.metadata.locale });
}
}, [resume, router]);
if (!resume || isEmpty(resume)) return null;
const layout: string[][][] = get(resume, 'metadata.layout', []);

View File

@ -1,9 +1,9 @@
{
"common": {
"actions": {
"add": "إضافة {{فقرة}} جديدة",
"delete": "حذة {{الفقرة}}",
"edit": "تحرير {{الفقرة}}"
"add": "إضافة {{token}} جديدة",
"delete": "حذف {{token}}",
"edit": "تحرير {{token}}"
},
"columns": {
"heading": "الأعمدة",
@ -24,13 +24,13 @@
"label": "تاريخ الانتهاء"
},
"keywords": {
"label": "الكلمات الرئيسية"
"label": "الكلمات الدالة"
},
"level": {
"label": "مستوى"
},
"levelNum": {
"label": "المستوى (Number)"
"label": "المستوى (العدد)"
},
"name": {
"label": "الاسم"
@ -42,7 +42,7 @@
"label": "المنصب"
},
"start-date": {
"label": "تاريخ البداية"
"label": "تاريخ البدء"
},
"subtitle": {
"label": "العنوان الفرعي"
@ -119,6 +119,9 @@
"name": {
"label": "الاسم الكامل"
},
"birthdate": {
"label": "تاريخ الميلاد"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,361 @@
{
"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": "Наистина ли искате да изтриете това CV? Това действие не може да бъде отменено.",
"share-link": "Трябва да промените видимостта на CV-то си на публична, за да я направите видима за другите."
}
}
},
"leftSidebar": {
"sections": {
"awards": {
"form": {
"awarder": {
"label": "Награждаващ"
}
}
},
"basics": {
"actions": {
"photo-filters": "Филтри за снимата"
},
"heading": "Основни",
"headline": {
"label": "Заглавие"
},
"name": {
"label": "Пълно име"
},
"birthdate": {
"label": "Дата на раждане"
},
"photo-filters": {
"effects": {
"border": {
"label": "Рамка"
},
"grayscale": {
"label": "Нива на сивото"
},
"heading": "Ефекти"
},
"shape": {
"heading": "Форма"
},
"size": {
"heading": "Размер (в px)"
}
},
"photo-upload": {
"tooltip": {
"remove": "Премахване на снимка",
"upload": "Качи снимка"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "Издател"
}
}
},
"education": {
"form": {
"area-study": {
"label": "Специалност"
},
"courses": {
"label": "Курсове"
},
"degree": {
"label": "Степен"
},
"grade": {
"label": "Клас"
},
"institution": {
"label": "Институция"
}
}
},
"location": {
"address": {
"label": "Адрес"
},
"city": {
"label": "Град"
},
"country": {
"label": "Държава"
},
"heading": "Местоположение",
"postal-code": {
"label": "Пощенски код"
},
"region": {
"label": "Регион"
}
},
"profiles": {
"form": {
"network": {
"label": "Социална мрежа"
},
"username": {
"label": "Потребителско име"
}
},
"heading": "Профили",
"heading_one": "Профил"
},
"publications": {
"form": {
"publisher": {
"label": "Издател"
}
}
},
"references": {
"form": {
"relationship": {
"label": "Връзка"
}
}
},
"section": {
"heading": "Раздел"
},
"volunteer": {
"form": {
"organization": {
"label": "Организация"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "Персонализиран CSS"
},
"export": {
"heading": "Експортиране",
"json": {
"primary": "JSON",
"secondary": "Изтеглете JSON версия на вашата автобиография, която може да бъде импортирана обратно в Reactive Resume."
},
"pdf": {
"loading": {
"primary": "Генериране на PDF",
"secondary": "Моля, изчакайте, докато вашият PDF се генерира, това може да отнеме до 15 секунди."
},
"normal": {
"primary": "РDF",
"secondary": "Изтеглете PDF файл на вашата автобиография, който можете да отпечатате и изпратите до мечтаната работа. Този файл не може да бъде импортиран обратно за по-нататъшно редактиране."
}
}
},
"layout": {
"heading": "Оформление",
"tooltip": {
"reset-layout": "Рестартирай оформлението"
}
},
"links": {
"bugs-features": {
"body": "Нещо ви пречи да си направите автобиография? Или имате невероятна идея, която да добавите? Повдигнете въпрос в GitHub, за да започнете.",
"button": "GitHub общност",
"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": "Позволете на всеки с връзка да види това CV",
"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": "Заглавия"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "Здравейте",
"logout": "Изход"
}
},
"footer": {
"credit": "Проект от <1>Амрут Пилай</1>",
"license": "От общността, за общността."
},
"markdown": {
"help-text": "Този раздел поддържа <1>markdown</1> форматиране."
},
"date": {
"present": "Настояще"
},
"subtitle": "Безплатен инструмент за създаване на автобиография с отворен код.",
"title": "Reactive Resume",
"toast": {
"error": {
"upload-file-size": "Моля, качвайте само файлове с размер под 2 мегабайта.",
"upload-photo-size": "Моля, качвайте само снимки под 2 мегабайта, за предпочитане квадратни."
},
"success": {
"resume-link-copied": "Връзката към автобиографията ви е копирана в клипборда."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Започване отначало",
"title": "Създаване на ново CV"
},
"import-external": {
"subtitle": "LinkedIn, JSON резюме, Reactive Resume",
"title": "Импортиране от външни източници"
},
"resume": {
"menu": {
"delete": "Изтрии",
"duplicate": "Дубликирай",
"open": "Отвори",
"rename": "Преименувай",
"share-link": "Споделяне на връзка",
"tooltips": {
"delete": "Наистина ли искате да изтриете това CV? Това действие не може да бъде отменено.",
"share-link": "Трябва да промените видимостта на CV-то си на публична, за да я направите видима за другите."
}
},
"timestamp": "Последната промяна е преди {{timestamp}}"
},
"title": "Контролен панел"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "Към приложението",
"login": "Вход",
"logout": "Изход",
"register": "Регистрация"
},
"features": {
"heading": "Функции",
"list": {
"ads": "Без реклами.",
"export": "Експортирайте автобиографията си в JSON или PDF формат",
"free": "Безплатно завинаги",
"import": "Импортиране на данни от LinkedIn, JSON резюме",
"languages": "Достъпно на множество езици",
"more": "И още много вълнуващи функции, <1>прочетете всичко за тях тук</1>",
"tracking": "Без проследяване на потребители"
}
},
"links": {
"heading": "Връзки",
"links": {
"donate": "Дарение",
"github": "Програмен код",
"privacy": "Политика за поверителност",
"service": "Условия на ползване"
}
},
"screenshots": {
"heading": "Екранни снимки"
},
"testimonials": {
"heading": "Препоръки",
"body": "Позитивно или негативно, ще се радвам да чуя мнението ви за Reactive Resume и какъв е вашия опитът.<br/>Ето някои от съобщенията, изпратени от потребители по целия свят.",
"contact": "Можете да се свържете с мен чрез <1>моя имейл</1> или чрез формата за контакт на <3>моя уебсайт</3> ."
},
"summary": {
"body": "Reactive Resume е безплатен инструмент за създаване на автобиография/CV с отворен код, който е създаден, за да улесни обикновените задачи за създаване, актуализиране и споделяне на вашата автобиография като 1, 2, 3. С това приложение можете да създавате множество автобиографии, да ги споделяте директно със специалистите по подбор на персонал или приятели чрез уникална връзка, както и ги отпечатате като PDF. Всичко е безплатно, без реклами, без проследяване, без да губите целостта и поверителността на вашите данни.",
"heading": "Обобщение"
}
}

View 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": "Създай CV/Резюме"
},
"body": "Започнете да създавате автобиографията си, като й дадете име. Може да е във връзка с позицията, за която кандидатствате, или просто любимата ви закуска.",
"form": {
"name": {
"label": "Име"
},
"public": {
"label": "Публично достъпна ли е?"
},
"slug": {
"label": "Слъг"
}
},
"heading": "Създаване на ново CV"
},
"import-external": {
"heading": "Импортиране от външни източници",
"json-resume": {
"actions": {
"upload-json": "Качване на JSON"
},
"body": "Ако имате готова <1>валидирана JSON автобиография</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": "Слъг"
}
},
"heading": "Преименувайте автобиографията си"
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "পূর্ণ নাম"
},
"birthdate": {
"label": "জন্ম তারিখ"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Celé jméno"
},
"birthdate": {
"label": "Datum narození"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "Dobrý den",
"logout": "Odhlásit se"
}
},
"footer": {
"credit": "Vášnivý projekt <1>Amrutha Pillaie</1>",
"license": "Od komunity, pro komunitu."
},
"markdown": {
"help-text": "Tato sekce podporuje <1>markdown</1> formátování."
},
"date": {
"present": "Současnost"
},
"subtitle": "Bezplatný a open source tvůrce životopisů.",
"title": "Reactive Resume",
"toast": {
"error": {
"upload-file-size": "Prosím nahrajte pouze soubory pod 2 megabajty.",
"upload-photo-size": "Nahrávejte prosím pouze fotografie o velikosti do 2 megabajtů, nejlépe čtvercové."
},
"success": {
"resume-link-copied": "Odkaz na váš životopis byl zkopírován do schránky."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Začít od začátku",
"title": "Vytvořit nový životopis"
},
"import-external": {
"subtitle": "LinkedIn, JSON Resume, Reactive Resume",
"title": "Importovat z externích zdrojů"
},
"resume": {
"menu": {
"delete": "Smazat",
"duplicate": "Duplikovat",
"open": "Otevřít",
"rename": "Přejmenovat",
"share-link": "Sdílet odkaz",
"tooltips": {
"delete": "Opravdu chcete smazat tento životopis? Toto je nevratná akce.",
"share-link": "Musíte změnit viditelnost svého životopisu na veřejnou, aby byl viditelný pro ostatní."
}
},
"timestamp": "Naposledy aktualizováno před {{timestamp}}"
},
"title": "Přístrojová deska"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "Přejděte do aplikace",
"login": "Přihlásit se",
"logout": "Odhlásit se",
"register": "Registrovat"
},
"features": {
"heading": "Funkce",
"list": {
"ads": "Žádná reklama",
"export": "Exportujte svůj životopis do formátu JSON nebo PDF",
"free": "Zdarma, navždy",
"import": "Import dat z LinkedIn, JSON Resume",
"languages": "Dostupné ve více jazycích",
"more": "A mnohem více vzrušujících funkcí, <1>o tom si vše přečtěte zde</1>",
"tracking": "Žádné sledování uživatelů"
}
},
"links": {
"heading": "Odkazy",
"links": {
"donate": "Darovat",
"github": "Zdrojový kód",
"privacy": "Zásady ochrany osobních údajů",
"service": "Podmínky služby"
}
},
"screenshots": {
"heading": "Snímky obrazovky"
},
"testimonials": {
"heading": "Posudky",
"body": "Ať je to dobře nebo špatně, rád bych slyšel váš názor na Reactive Resume a jaké to bylo pro vás.<br/>Zde jsou některé zprávy zaslané uživateli z celého světa.",
"contact": "Můžete mě kontaktovat prostřednictvím <1>mého e-mailu</1> nebo prostřednictvím kontaktního formuláře na <3>mých webových stránkách</3> ."
},
"summary": {
"body": "Reactive Resume je bezplatný a open source tvůrce životopisů, který je vytvořen tak, aby zjednodušil každodenní úkoly vytváření, aktualizace a sdílení vašeho životopisu jako 1, 2, 3. Pomocí této aplikace můžete vytvořit více životopisů a sdílet je s náboráři nebo přáteli. prostřednictvím jedinečného odkazu a vytiskněte si jej jako PDF, vše zdarma, bez reklam, bez sledování, bez ztráty integrity a soukromí vašich dat.",
"heading": "souhrn"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "Odeslat e-mail pro obnovení hesla"
},
"body": "Stačí zadat e-mailovou adresu spojenou s účtem, který chcete obnovit.",
"form": {
"email": {
"label": "Emailová adresa"
}
},
"heading": "Zapomněli jste heslo?",
"help-text": "Pokud účet existuje, obdržíte e-mail s odkazem na resetování hesla."
},
"login": {
"actions": {
"login": "Přihlásit se",
"google": "Přihlaste se pomocí Google"
},
"body": "Zadejte prosím své uživatelské jméno a heslo spojené s vaším účtem, abyste se mohli přihlásit a získat přístup, spravovat a sdílet své životopisy.",
"form": {
"password": {
"label": "Heslo"
},
"username": {
"help-text": "Můžete také zadat svou e-mailovou adresu",
"label": "uživatelské jméno"
}
},
"heading": "Přihlaste se ke svému účtu",
"recover-text": "V případě, že jste zapomněli své heslo, můžete <1>obnovit svůj účet</1> tady.",
"register-text": "Pokud jej nemáte, můžete si <1>vytvořit účet</1> tady."
},
"register": {
"actions": {
"register": "Registrovat",
"google": "Zaregistrujte se u Google"
},
"body": "Chcete-li vytvořit účet, zadejte své osobní údaje.",
"form": {
"confirm-password": {
"label": "Potvrďte heslo"
},
"email": {
"label": "Emailová adresa"
},
"name": {
"label": "Celé jméno"
},
"password": {
"label": "Heslo"
},
"username": {
"label": "uživatelské jméno"
}
},
"heading": "Vytvořit účet",
"loginText": "Pokud již máte účet, můžete se <1>přihlásit zde</1> ."
},
"reset-password": {
"actions": {
"set-password": "Nastavit nové heslo"
},
"body": "Zadejte nové heslo ke svému účtu.",
"form": {
"confirm-password": {
"label": "Potvrďte heslo"
},
"password": {
"label": "Heslo"
}
},
"heading": "Obnovit heslo"
}
},
"dashboard": {
"create-resume": {
"actions": {
"create-resume": "Vytvořit životopis"
},
"body": "Začněte budovat svůj životopis tím, že mu dáte jméno. Může to být odkaz na roli, o kterou se ucházíte, nebo jen na vaši oblíbenou svačinu.",
"form": {
"name": {
"label": "název"
},
"public": {
"label": "Je veřejně přístupný?"
},
"slug": {
"label": "Slimák"
}
},
"heading": "Vytvořte nový životopis"
},
"import-external": {
"heading": "Import z externích zdrojů",
"json-resume": {
"actions": {
"upload-json": "Nahrajte JSON"
},
"body": "Pokud máte <1>ověřený životopis JSON</1> připraven k použití, můžete jej použít k rychlému sledování svého vývoje na Reactive Resume. Začněte kliknutím na tlačítko níže a nahráním platného souboru JSON.",
"heading": "Import z obnovení JSON"
},
"linkedin": {
"actions": {
"upload-archive": "Nahrát archiv ZIP"
},
"body": "Můžete ušetřit čas tím, že exportujete svá data z LinkedIn a použijete je k automatickému vyplňování polí na Reactive Resume. Přejděte na <1>Ochrana osobních údajů</1> sekce na LinkedIn a vyžádejte si archiv vašich dat. Jakmile bude k dispozici, nahrajte níže uvedený soubor ZIP.",
"heading": "Import z LinkedIn"
},
"reactive-resume": {
"actions": {
"upload-json": "Nahrajte JSON",
"upload-json-v2": "Nahrajte JSON z v2"
},
"body": "Pokud máte JSON, který byl exportován s aktuální verzí Reactive Resume, můžete jej sem importovat zpět a znovu získat upravitelnou verzi.",
"heading": "Import z reaktivního obnovení"
}
},
"rename-resume": {
"actions": {
"rename-resume": "Přejmenovat Resume"
},
"form": {
"name": {
"label": "název"
},
"slug": {
"label": "Slimák"
}
},
"heading": "Přejmenujte svůj životopis"
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "Fulde navn"
},
"birthdate": {
"label": "Fødselsdato"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Voller Name"
},
"birthdate": {
"label": "Geburtsdatum"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Ονοματεπώνυμο"
},
"birthdate": {
"label": "Ημερομηνια γεννησης"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -15,8 +15,7 @@
},
"login": {
"actions": {
"login": "Login",
"google": "Login with Google"
"login": "Login"
},
"body": "Please enter your username and password associated with your account to login and access, manage and share your resumes.",
"form": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Nombre Completo"
},
"birthdate": {
"label": "Fecha de cumpleaños"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,361 @@
{
"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": "نام کامل"
},
"birthdate": {
"label": "تاریخ تولد"
},
"photo-filters": {
"effects": {
"border": {
"label": "لبه"
},
"grayscale": {
"label": "سیاه و سفید"
},
"heading": "افکت‌ها"
},
"shape": {
"heading": "شکل"
},
"size": {
"heading": "اندازه (بر حسب پیکسل)"
}
},
"photo-upload": {
"tooltip": {
"remove": "حذف تصویر",
"upload": "آپلود تصویر"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "صادرکننده"
}
}
},
"education": {
"form": {
"area-study": {
"label": "رشته تحصیلی"
},
"courses": {
"label": "دوره‌ها"
},
"degree": {
"label": "مدرک تحصیلی"
},
"grade": {
"label": "نمره"
},
"institution": {
"label": "مؤسسه"
}
}
},
"location": {
"address": {
"label": "نشانی"
},
"city": {
"label": "شهر"
},
"country": {
"label": "كشور"
},
"heading": "موقعیت مکانی",
"postal-code": {
"label": "کد پستی"
},
"region": {
"label": "منطقه"
}
},
"profiles": {
"form": {
"network": {
"label": "شبکه اجتماعی"
},
"username": {
"label": "نام کاربری"
}
},
"heading": "پروفایل‌ها",
"heading_one": "پروفایل"
},
"publications": {
"form": {
"publisher": {
"label": "ناشر"
}
}
},
"references": {
"form": {
"relationship": {
"label": "نسبت"
}
}
},
"section": {
"heading": "بخش"
},
"volunteer": {
"form": {
"organization": {
"label": "سازمان"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "CSS سفارشی"
},
"export": {
"heading": "خروجی",
"json": {
"primary": "JSON",
"secondary": "یک نسخه JSON از رزومه خود را دانلود کنید که می‌تواند دوباره در Reactive Resume بارگذاری شود."
},
"pdf": {
"loading": {
"primary": "در حال تولید PDF",
"secondary": "لطفاً منتظر بمانید تا PDF شما تولید شود، ممکن است تا ۱۵ ثانیه طول بکشد."
},
"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": "عمومی"
}
},
"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": "سرصفحه‌ها"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "سلام",
"logout": "خروج"
}
},
"footer": {
"credit": "پروژه‌ای پرشور توسط <1>Amruth Pillai</1>",
"license": "ساخته‌شده توسط جامعه، برای جامعه."
},
"markdown": {
"help-text": "این بخش از <1>markdown</1> پشتیبانی می‌کند."
},
"date": {
"present": "امروز"
},
"subtitle": "یک رزومه‌ساز رایگان و متن‌باز.",
"title": "Reactive Resume",
"toast": {
"error": {
"upload-file-size": "لطفا تنها فایل‌هایی با حجم کمتر از ۲ مگابایت آپلود کنید.",
"upload-photo-size": "لطفا تنها عکس هایی با حجم کمتر از 2 مگابایت و ترجیحا مربع آپلود کنید."
},
"success": {
"resume-link-copied": "لینک رزومه شما در کلیپ‌بورد کپی شد."
}
}
}

View 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": "داشبورد"
}

View 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 یک رزومه ساز رایگان و متن‌باز است که برای ایجاد، به روز رسانی و به اشتراک گذاری رزومه شما به آسانی شمردن ۱، ۲، ۳ ساخته شده است. با این برنامه، می توانید چندین رزومه ایجاد کنید و آنها را با کارفرماها یا دوستان از طریق یک لینک منحصر به فرد و چاپ آن به صورت PDF، همه به صورت رایگان، بدون تبلیغات، بدون ردیابی، بدون از دست دادن امنیت و حریم خصوصی داده های شما، به اشتراک بگذارید.",
"heading": "درباره من"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "ارسال ایمیل بازنشانی رمز عبور"
},
"body": "آدرس ایمیل حسابی را که می خواهید بازیابی کنید، وارد کنید.",
"form": {
"email": {
"label": "آدرس ایمیل"
}
},
"heading": "رمز عبور خود را فراموش کرده‌اید؟",
"help-text": "اگر حساب مورد نظر موجود باشد، یک ایمیل با لینک بازنشانی رمز عبور خود دریافت می‌کنید."
},
"login": {
"actions": {
"login": "ورود",
"google": "ورود با گوگل"
},
"body": "لطفا نام کاربری و رمز عبور مرتبط با حساب کاربری خود را وارد کنید تا وارد شوید و به رزومه خود دسترسی پیدا کنید، آن را مدیریت کنید و به اشتراک بگذارید.",
"form": {
"password": {
"label": "رمز عبور"
},
"username": {
"help-text": "همچنین می توانید آدرس ایمیل خود را وارد کنید",
"label": "نام کاربری"
}
},
"heading": "ورود به حساب کابری",
"recover-text": "در صورتی که رمز عبور خود را فراموش کرده‌اید، می توانید از اینجا <1>حساب خود را بازیابی کنید</1>.",
"register-text": "اگر حسابی ندارید، می‌توانید از اینجا <1>یک حساب ایجاد کنید</1>."
},
"register": {
"actions": {
"register": "ثبت نام",
"google": "ثبت نام با گوگل"
},
"body": "لطفا برای ایجاد حساب کاربری، اطلاعات شخصی خود را وارد کنید.",
"form": {
"confirm-password": {
"label": "تکرار رمز عبور"
},
"email": {
"label": "آدرس ایمیل"
},
"name": {
"label": "نام کامل"
},
"password": {
"label": "رمز عبور"
},
"username": {
"label": "نام کاربری"
}
},
"heading": "ایجاد حساب کاربری",
"loginText": "اکر حساب کاربری دارید، می‌توانید از <1>اینجا</1> وارد شوید."
},
"reset-password": {
"actions": {
"set-password": "تعیین رمز عبور جدید"
},
"body": "یک رمز عبور جدید برای حساب خود وارد کنید.",
"form": {
"confirm-password": {
"label": "تکرار رمز عبور"
},
"password": {
"label": "رمز عبور"
}
},
"heading": "بازنشانی رمز عبور"
}
},
"dashboard": {
"create-resume": {
"actions": {
"create-resume": "ایجاد رزومه"
},
"body": "ساخت رزومه خود را با نام‌گذاری آن شروع کنید. این نام می‌تواند به سمتی که برای آن درخواست می‌کنید مرتبط باشد، یا میان‌وعده مورد علاقه شما باشد.",
"form": {
"name": {
"label": "نام"
},
"public": {
"label": "آیا به صورت عمومی قابل دسترسی است؟"
},
"slug": {
"label": "نام یکتا"
}
},
"heading": "ایجاد یک رزومه جدید"
},
"import-external": {
"heading": "وارد کردن از منابع خارجی",
"json-resume": {
"actions": {
"upload-json": "آپلود JSON"
},
"body": "اگر یک <1>JSON Resume معتبر</1> که آماده کار است، می توانید از آن برای پیگیری سریع توسعه خود در Reactive Resume استفاده کنید. روی دکمه زیر کلیک کنید و برای شروع یک فایل JSON معتبر آپلود کنید.",
"heading": "بارگذاری از JSON Resume"
},
"linkedin": {
"actions": {
"upload-archive": "آپلود آرشیو ZIP"
},
"body": "می‌توانید با خروجی گرفتن از داده‌های خود در LinkedIn و استفاده از آن برای پر کردن خودکار فیلدهای Reactive Resume در زمانصرفه‌جویی کنید. به بخش <1>Data Privacy</1> در LinkedIn بروید و یک آرشیو از داده‌های خود را درخواست کنید. پس از در دسترس قرار گرفتن، فایل ZIP را در زیر آپلود کنید.",
"heading": "بارگذاری از LinkedIn"
},
"reactive-resume": {
"actions": {
"upload-json": "آپلود JSON",
"upload-json-v2": "آپلود JSON از ورژن ۲"
},
"body": "اگر یک فایل JSON دارید که با نسخه فعلی Reactive Resume خروجی گرفته‌شده است، می‌توانید آن را اینجا بارگذاری کنید تا دوباره نسخه قابل ویرایش دریافت کنید.",
"heading": "بارگذاری از Reactive Resume"
}
},
"rename-resume": {
"actions": {
"rename-resume": "تغییر نام رزومه"
},
"form": {
"name": {
"label": "نام"
},
"slug": {
"label": "نام یکتا"
}
},
"heading": "نام رزومه خود را تغییر دهید"
}
}
}

View File

@ -0,0 +1,361 @@
{
"common": {
"actions": {
"add": "Lisää uusi",
"delete": "Poista",
"edit": "Muokkaa"
},
"columns": {
"heading": "Palstat",
"tooltip": "Muut palstojen määrää"
},
"form": {
"date": {
"label": "Päivämäärä"
},
"description": {
"label": "Kuvaus"
},
"email": {
"label": "Sähköposti"
},
"end-date": {
"help-text": "Jätä tämä kenttä tyhjäksi, jos se on vielä esillä",
"label": "Päättymispäivä"
},
"keywords": {
"label": "Avainsanat"
},
"level": {
"label": "Taso"
},
"levelNum": {
"label": "Taso (numero)"
},
"name": {
"label": "Nimi"
},
"phone": {
"label": "Puhelinnumero"
},
"position": {
"label": "Sijainti"
},
"start-date": {
"label": "Alkamispäivä"
},
"subtitle": {
"label": "Alaotsikko"
},
"summary": {
"label": "Yhteenveto"
},
"title": {
"label": "Otsikko"
},
"url": {
"label": "Verkkosivusto"
}
},
"glossary": {
"page": "Sivu"
},
"list": {
"actions": {
"delete": "Poista",
"duplicate": "Monista",
"edit": "Muokkaa"
},
"empty-text": "Tämä luettelo on tyhjä."
},
"tooltip": {
"delete-item": "Haluatko varmasti poistaa tämän kohteen? Tämä on peruuttamaton toimenpide.",
"delete-section": "Poista osio",
"rename-section": "Nimeä osio uudelleen",
"toggle-visibility": "Näkyvyys päälle/pois"
}
},
"controller": {
"tooltip": {
"center-artboard": "Keskitä Kuvataulu",
"copy-link": "Kopioi linkki ansioluetteloon",
"export-pdf": "Vie PDF",
"toggle-orientation": "Vaihda sivun suunta",
"toggle-page-break-line": "Vaihda sivunvaihtoviivaa",
"toggle-sidebars": "Vaihda Sivupalkkeja",
"zoom-in": "Suurenna",
"zoom-out": "Pienennä"
}
},
"header": {
"menu": {
"delete": "Poista",
"duplicate": "Kopioi",
"rename": "Nimeä uudelleen",
"share-link": "Jaa linkki",
"tooltips": {
"delete": "Haluatko varmasti poistaa tämän ansioluettelon? Tämä on peruuttamaton toimenpide.",
"share-link": "Sinun on muutettava ansioluettelosi näkyvyys julkiseksi, jotta se näkyisi muille."
}
}
},
"leftSidebar": {
"sections": {
"awards": {
"form": {
"awarder": {
"label": "Tunnustuksen antaja"
}
}
},
"basics": {
"actions": {
"photo-filters": "Valokuvasuodattimet"
},
"heading": "Perustiedot",
"headline": {
"label": "Otsikko"
},
"name": {
"label": "Koko nimi"
},
"birthdate": {
"label": "Syntymäaika"
},
"photo-filters": {
"effects": {
"border": {
"label": "Kehys"
},
"grayscale": {
"label": "Harmaasävy"
},
"heading": "Efektit"
},
"shape": {
"heading": "Muoto"
},
"size": {
"heading": "Koko (px)"
}
},
"photo-upload": {
"tooltip": {
"remove": "Poista kuva",
"upload": "Lataa valokuva"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "Myöntäjä"
}
}
},
"education": {
"form": {
"area-study": {
"label": "Opintojen alue"
},
"courses": {
"label": "Kurssit"
},
"degree": {
"label": "Tutkinto"
},
"grade": {
"label": "Arvosana"
},
"institution": {
"label": "Oppilaitos"
}
}
},
"location": {
"address": {
"label": "Osoite"
},
"city": {
"label": "Kaupunki"
},
"country": {
"label": "Maa"
},
"heading": "Sijainti",
"postal-code": {
"label": "Postinumero"
},
"region": {
"label": "Paikkakunta"
}
},
"profiles": {
"form": {
"network": {
"label": "Verkosto"
},
"username": {
"label": "Käyttäjätunnus"
}
},
"heading": "Profiilit",
"heading_one": "Profiili"
},
"publications": {
"form": {
"publisher": {
"label": "Julkaisija"
}
}
},
"references": {
"form": {
"relationship": {
"label": "Suhde suosittelijaan"
}
}
},
"section": {
"heading": "Osio"
},
"volunteer": {
"form": {
"organization": {
"label": "Organisaatio"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "Mukautettu CSS"
},
"export": {
"heading": "Vie",
"json": {
"primary": "JSON",
"secondary": "Lataa JSON-versio ansioluettelostasi, jonka voit tuoda takaisin Reactive Resumeen."
},
"pdf": {
"loading": {
"primary": "Luodaan PDF-tiedostoa",
"secondary": "Odota, että PDF-tiedostosi luodaan. Tämä voi kestää jopa 15 sekuntia."
},
"normal": {
"primary": "PDF",
"secondary": "Lataa PDF-tiedosto ansioluettelostasi, jonka voit tulostaa ja lähettää unelmiesi työpaikkaan. Tätä tiedostoa ei voi tuoda takaisin muokattavaksi."
}
}
},
"layout": {
"heading": "Asettelu",
"tooltip": {
"reset-layout": "Nollaa asettelu"
}
},
"links": {
"bugs-features": {
"body": "Estääkö jokin sinua tekemästä ansioluetteloa? Vai onko sinulla mahtava idea lisättäväksi? Nosta ongelma GitHubissa päästäksesi alkuun.",
"button": "GitHub Issues",
"heading": "Bugeja? Ominaisuuspyyntöjä?"
},
"donate": {
"body": "Jos pidit Reactive Resume -sovelluksen käytöstä, harkitse lahjoitusta niin paljon kuin voit, jotta sovellus pysyy toiminnassa ilman mainoksia ja ikuisesti ilmaisena.",
"button": "Osta minulle kahvi",
"heading": "Lahjoita Reaktiiviselle ansioluettelolle"
},
"github": "Lähdekoodi",
"heading": "Linkit"
},
"settings": {
"global": {
"date": {
"primary": "Päivämäärä",
"secondary": "Sovelluksessa käytettävä päivämäärämuoto"
},
"heading": "Yleinen",
"language": {
"primary": "Kieli",
"secondary": "Koko sovelluksessa käytettävä näyttökieli"
},
"theme": {
"primary": "Teema"
}
},
"heading": "Asetukset",
"page": {
"break-line": {
"primary": "Katkoviiva",
"secondary": "Näytä viiva kaikilla sivuilla A4-sivun korkeuden merkitsemiseksi"
},
"heading": "Sivu",
"orientation": {
"disabled": "Ei vaikuta, kun sivuja on vain yksi",
"primary": "Suunta",
"secondary": "Näytetäänkö sivut vaaka- vai pystysuunnassa"
}
},
"resume": {
"heading": "Ansioluettelo",
"reset": {
"primary": "Tyhjennä Kaikki",
"secondary": "Oletko tehnyt liikaa virheitä? Napsauta tätä nollataksesi kaikki muutokset ja aloittaaksesi alusta. Ole varovainen, tätä toimintoa ei voi peruuttaa."
},
"sample": {
"primary": "Lataa näytetiedot",
"secondary": "Etkö ole varma mistä aloittaa? Napsauta tätä ladataksesi näytetietoja nähdäksesi, miltä täydellinen ansioluettelo näyttää."
}
}
},
"sharing": {
"heading": "Jakaminen",
"short-url": {
"label": "Valitse lyhyt URL-osoite"
},
"visibility": {
"subtitle": "Salli kenelle tahansa linkin avulla mahdollisuus tarkastella ansioluetteloasi.",
"title": "Julkinen"
}
},
"templates": {
"heading": "Mallipohjat"
},
"theme": {
"form": {
"background": {
"label": "Taustakuva"
},
"primary": {
"label": "Ensisijainen"
},
"text": {
"label": "Teksti"
}
},
"heading": "Teema"
},
"typography": {
"form": {
"font-family": {
"label": "Kirjasintyyli"
},
"font-size": {
"label": "Fontin koko"
}
},
"heading": "Painatus",
"widgets": {
"body": {
"label": "Runko"
},
"headings": {
"label": "Otsikot"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "Hei",
"logout": "Kirjaudu ulos"
}
},
"footer": {
"credit": "<1>Amruth Pillain</1> intohimoprojekti",
"license": "Yhteisön toimesta yhteisöä varten."
},
"markdown": {
"help-text": "Tämä osio tukee <1>markdown-muotoilua</1>."
},
"date": {
"present": "Tänään"
},
"subtitle": "Ilmainen ja avoimeen lähdekoodiin pohjautuva ansioluettelo.",
"title": "Reactive Resume",
"toast": {
"error": {
"upload-file-size": "Lataa vain alle 2 megatavun tiedostoja.",
"upload-photo-size": "Lataa vain alle 2 megatavun kuvia, mieluiten neliönmuotoisia."
},
"success": {
"resume-link-copied": "Linkki ansioluetteloosi on kopioitu leikepöydällesi."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Aloita tyhjästä",
"title": "Luo uusi ansioluettelo"
},
"import-external": {
"subtitle": "LinkedIn, JSON Resume, Reactive Resume",
"title": "Tuo ulkoisista lähteistä"
},
"resume": {
"menu": {
"delete": "Poista",
"duplicate": "Monista",
"open": "Avaa",
"rename": "Nimeä uudelleen",
"share-link": "Jaa linkki",
"tooltips": {
"delete": "Haluatko varmasti poistaa tämän ansioluettelon? Tämä on peruuttamaton toimenpide.",
"share-link": "Sinun on muutettava ansioluettelosi näkyvyys julkiseksi, jotta se näkyisi muille."
}
},
"timestamp": "Viimeksi päivitetty: {{timestamp}}"
},
"title": "Hallintapaneeli"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "Siirry sovellukseen",
"login": "Kirjaudu sisään",
"logout": "Kirjaudu ulos",
"register": "Rekisteröidy"
},
"features": {
"heading": "Ominaisuudet",
"list": {
"ads": "Ei mainoksia",
"export": "Vie ansioluettelosi JSON- tai PDF-muotoon",
"free": "Ilmainen ikuisesti",
"import": "Tuo tietoja LinkedInistä tai JSON tiedostosta",
"languages": "Käytettävissä useilla kielillä",
"more": "Ja paljon muita jännittäviä ominaisuuksia, <1>lue kaikki tästä</1>",
"tracking": "Ei käyttäjän seurantaa"
}
},
"links": {
"heading": "Linkit",
"links": {
"donate": "Lahjoita",
"github": "Lähdekoodi",
"privacy": "Tietosuojakäytäntö",
"service": "Käyttöehdot"
}
},
"screenshots": {
"heading": "Kuvakaappaukset"
},
"testimonials": {
"heading": "Asiakaskokemuksia",
"body": "Hyvä tai huono, haluaisin kuulla mielipiteesi Reactive Resume -ohjelmasta ja siitä, millainen kokemus sinulla on ollut.<br/>Seuraavassa on muutamia käyttäjien eri puolilta maailmaa lähettämiä viestejä.",
"contact": "Voit ottaa minuun yhteyttä <1>sähköpostitse</1> tai <3>verkkosivustoni</3> yhteydenottolomakkeen kautta."
},
"summary": {
"body": "Reactive Resume on ilmainen ja avoimen lähdekoodin ansioluettelon rakentaja, jonka tarkoituksena on tehdä ansioluettelon luomisesta, päivittämisestä ja jakamisesta helppoa kuin 1, 2, 3. Tämän sovelluksen avulla voit luoda useita ansioluetteloita, jakaa ne rekrytoijien tai ystävien kanssa yksilöllisen linkin kautta ja tulostaa ne PDF-muodossa, ja kaikki tämä ilmaiseksi, ilman mainoksia, ilman seurantaa ja menettämättä tietojesi eheyttä ja yksityisyyttä.",
"heading": "Yhteenveto"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "Lähetä salasanan palautussähköposti"
},
"body": "Kirjoita vain palautettavaan tiliin liitetty sähköpostiosoite.",
"form": {
"email": {
"label": "Sähköpostiosoite"
}
},
"heading": "Unohditko salasanasi?",
"help-text": "Jos sähköpostiosoitteesi on olemassa, saat sähköpostiviestissä linkin salasanasi palautukseen."
},
"login": {
"actions": {
"login": "Kirjaudu sisään",
"google": "Kirjaudu Google-tilillä"
},
"body": "Anna tiliisi liitetty käyttäjätunnuksesi ja salasanasi kirjautuaksesi sisään ja käyttääksesi, hallitaksesi ja jakaaksesi ansioluettelosi.",
"form": {
"password": {
"label": "Salasana"
},
"username": {
"help-text": "Voit myös syöttää sähköpostiosoitteesi",
"label": "Käyttäjänimi"
}
},
"heading": "Kirjaudu tilillesi",
"recover-text": "Jos olet unohtanut salasanasi, voit <1>palauttaa tilisi</1> täällä.",
"register-text": "Jos sinulla ei ole tiliä, voit <1>luoda tilin</1> täällä."
},
"register": {
"actions": {
"register": "Rekisteröidy",
"google": "Rekisteröidy Google-tilillä"
},
"body": "Anna tietosi luodaksesi uuden käyttäjätilin.",
"form": {
"confirm-password": {
"label": "Vahvista Salasana"
},
"email": {
"label": "Sähköpostiosoite"
},
"name": {
"label": "Koko nimi"
},
"password": {
"label": "Salasana"
},
"username": {
"label": "Käyttäjänimi"
}
},
"heading": "Luo käyttäjätili",
"loginText": "Jos sinulla on jo tili, voit <1>kirjautua sisään täällä</1>."
},
"reset-password": {
"actions": {
"set-password": "Aseta uusi salasana"
},
"body": "Anna uusi salasana tilillesi.",
"form": {
"confirm-password": {
"label": "Vahvista Salasana"
},
"password": {
"label": "Salasana"
}
},
"heading": "Palauta salasanasi"
}
},
"dashboard": {
"create-resume": {
"actions": {
"create-resume": "Luo ansioluettelo"
},
"body": "Aloita ansioluettelosi rakentaminen antamalla sille nimi. Se voi viitata rooliin, johon haet, tai vaikka suosikkivälipalaasi.",
"form": {
"name": {
"label": "Nimi"
},
"public": {
"label": "Onko julkisesti saatavilla?"
},
"slug": {
"label": "Tunniste"
}
},
"heading": "Luo uusi ansioluettelo"
},
"import-external": {
"heading": "Tuo ulkoisista lähteistä",
"json-resume": {
"actions": {
"upload-json": "Lataa JSON"
},
"body": "Jos sinulla on valmiiksi <1>validoitu JSON-ansioluettelo</1>, voit käyttää sitä Reactive Resume -ansioluettelon laatimisen nopeuttamiseen. Napsauta alla olevaa painiketta ja lataa validoitu JSON-tiedosto aloittaaksesi.",
"heading": "Tuo JSON-muotoisesta ansioluettelosta"
},
"linkedin": {
"actions": {
"upload-archive": "Lataa ZIP-tiedosto"
},
"body": "Voit säästää aikaa tuomalla tietosi LinkedInistä ja käyttämällä niitä Reactive Resumen kenttien automaattiseen täyttämiseen. Siirry LinkedInin <1>tietosuojaosioon</1> ja pyydä tietojesi arkistointia. Kun se on saatavilla, lataa alla oleva ZIP-tiedosto.",
"heading": "Tuo LinkedInistä"
},
"reactive-resume": {
"actions": {
"upload-json": "Lataa JSON",
"upload-json-v2": "Lataa JSON v2:sta"
},
"body": "Jos sinulla on JSON, joka on viety Reactive Resume -ohjelman nykyisellä versiolla, voit tuoda sen takaisin tänne saadaksesi muokattavan version uudelleen.",
"heading": "Tuo Reactive Resume -ohjelmalla tehdystä"
}
},
"rename-resume": {
"actions": {
"rename-resume": "Nimeä ansioluettelo uudelleen"
},
"form": {
"name": {
"label": "Nimi"
},
"slug": {
"label": "Tunniste"
}
},
"heading": "Nimeä ansioluettelosi uudelleen"
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "Nom complet"
},
"birthdate": {
"label": "Date de naissance"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,361 @@
{
"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": "שם מלא"
},
"birthdate": {
"label": "תאריך לידה"
},
"photo-filters": {
"effects": {
"border": {
"label": "גבול"
},
"grayscale": {
"label": "גווני אפור"
},
"heading": "אפקטים"
},
"shape": {
"heading": "צוּרָה"
},
"size": {
"heading": "גודל (בפיקסלים)"
}
},
"photo-upload": {
"tooltip": {
"remove": "הסר תמונה",
"upload": "העלה תמונה"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "מנפיק"
}
}
},
"education": {
"form": {
"area-study": {
"label": "תחום לימוד"
},
"courses": {
"label": "קורסים"
},
"degree": {
"label": "תוֹאַר"
},
"grade": {
"label": "כיתה"
},
"institution": {
"label": "מוֹסָד"
}
}
},
"location": {
"address": {
"label": "כתובת"
},
"city": {
"label": "עִיר"
},
"country": {
"label": "מדינה"
},
"heading": "מקום",
"postal-code": {
"label": "מיקוד"
},
"region": {
"label": "אזור"
}
},
"profiles": {
"form": {
"network": {
"label": "רֶשֶׁת"
},
"username": {
"label": "שם משתמש"
}
},
"heading": "פרופילים",
"heading_one": "פּרוֹפִיל"
},
"publications": {
"form": {
"publisher": {
"label": "מוֹצִיא לָאוֹר"
}
}
},
"references": {
"form": {
"relationship": {
"label": "מערכת יחסים"
}
}
},
"section": {
"heading": "סָעִיף"
},
"volunteer": {
"form": {
"organization": {
"label": "אִרגוּן"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "CSS מותאם אישית"
},
"export": {
"heading": "יְצוּא",
"json": {
"primary": "JSON",
"secondary": "הורד גירסת JSON של קורות החיים שלך שניתן לייבא חזרה אל קורות חיים ריאקטיביים."
},
"pdf": {
"loading": {
"primary": "יצירת PDF",
"secondary": "המתן עם יצירת ה-PDF שלך, זה עשוי להימשך עד 15 שניות."
},
"normal": {
"primary": "PDF",
"secondary": "הורד קובץ PDF של קורות החיים שלך שתוכל להדפיס ולשלוח לעבודת החלומות שלך. לא ניתן לייבא קובץ זה בחזרה לעריכה נוספת."
}
}
},
"layout": {
"heading": "מַעֲרָך",
"tooltip": {
"reset-layout": "אפס פריסה"
}
},
"links": {
"bugs-features": {
"body": "משהו מונע ממך לעשות קורות חיים? או שיש לכם רעיון מדהים להוסיף? העלה בעיה ב-GitHub כדי להתחיל.",
"button": "בעיות GitHub",
"heading": "באגים? בקשות לתכונה?"
},
"donate": {
"body": "אם אהבתם להשתמש בקורות חיים ריאקטיביים, אנא שקול לתרום ככל שתוכל למען שמירה על האפליקציה ופועלת, ללא פרסומות ובחינם לנצח.",
"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": "כותרת"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "שלום",
"logout": "התנתק/י"
}
},
"footer": {
"credit": "פרויקט תשוקה מאת <1>אמרות פילאי</1>",
"license": "על ידי הקהילה, עבור הקהילה."
},
"markdown": {
"help-text": "סעיף זה תומך ב-<1>markdown</1> עיצוב."
},
"date": {
"present": "הווה"
},
"subtitle": "בונה קורות חיים חינמי ובקוד פתוח.",
"title": "קורות חיים תגובתיים",
"toast": {
"error": {
"upload-file-size": "נא להעלות רק קבצים מתחת ל-2 מגה בייט.",
"upload-photo-size": "נא להעלות רק תמונות מתחת ל-2 מגה בייט, רצוי מרובע."
},
"success": {
"resume-link-copied": "קישור לקורות החיים שלך הועתק ללוח."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "להתחיל מאפס",
"title": "צור קורות חיים חדשים"
},
"import-external": {
"subtitle": "לינקדאין, קורות חיים של JSON, קורות חיים ריאקטיביים",
"title": "ייבוא ממקורות חיצוניים"
},
"resume": {
"menu": {
"delete": "מחיקה",
"duplicate": "שכפל",
"open": "פתוח",
"rename": "שנה שם",
"share-link": "שתף קישור",
"tooltips": {
"delete": "האם אתה בטוח שברצונך להסיר תכונה זו? זה בלתי הפיך.",
"share-link": "עליך לשנות את החשיפה של קורות החיים שלך לציבורי כדי להפוך אותם לגלויים לאחרים."
}
},
"timestamp": "עודכן לאחרונה {{timestamp}}"
},
"title": "לוּחַ מַחווָנִים"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "עבור לאפליקציה",
"login": "התחברות",
"logout": "להתנתק",
"register": "הירשם"
},
"features": {
"heading": "תכונות",
"list": {
"ads": "אין פרסום",
"export": "ייצא את קורות החיים שלך לפורמט JSON או PDF",
"free": "חופשי לנצח",
"import": "יבא נתונים מ-LinkedIn, קורות חיים של JSON",
"languages": "נגיש במספר שפות",
"more": "ותכונות מרגשות הרבה יותר, <1>קרא הכל כאן</1>",
"tracking": "אין מעקב אחר משתמשים"
}
},
"links": {
"heading": "קישורים",
"links": {
"donate": "לִתְרוֹם",
"github": "קוד מקור",
"privacy": "מדיניות פרטיות",
"service": "תנאי השירות"
}
},
"screenshots": {
"heading": "צילומי מסך"
},
"testimonials": {
"heading": "המלצות",
"body": "טוב או רע, אשמח לשמוע את דעתכם על קורות חיים ריאקטיביים ואיך הייתה החוויה עבורכם.<br/>הנה כמה מההודעות שנשלחו על ידי משתמשים ברחבי העולם.",
"contact": "אתה יכול ליצור איתי קשר דרך <1>המייל שלי</1> או דרך טופס יצירת הקשר ב<3>אתר האינטרנט שלי</3> ."
},
"summary": {
"body": "Reactive Resume הוא בונה קורות חיים חינמי וקוד פתוח שנבנה כדי להפוך את המשימות השגרתיות של יצירה, עדכון ושיתוף של קורות החיים שלך לקלות כמו 1, 2, 3. עם האפליקציה הזו, אתה יכול ליצור מספר קורות חיים, לשתף אותם עם מגייסים או חברים דרך קישור ייחודי והדפיס אותו כקובץ PDF, הכל בחינם, ללא פרסומות, ללא מעקב, מבלי לאבד את השלמות והפרטיות של הנתונים שלך.",
"heading": "סיכום"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "שלח אימייל איפוס סיסמה"
},
"body": "פשוט הזן את כתובת האימייל המשויכת לחשבון שברצונך לשחזר.",
"form": {
"email": {
"label": "כתובת דוא\"ל"
}
},
"heading": "שכחת ססמה?",
"help-text": "אם החשבון קיים, תקבל אימייל עם קישור לאיפוס הסיסמה שלך."
},
"login": {
"actions": {
"login": "התחברות",
"google": "התחבר עם גוגל"
},
"body": "אנא הזן את שם המשתמש והסיסמה המשויכים לחשבונך כדי להתחבר ולגשת, לנהל ולשתף את קורות החיים שלך.",
"form": {
"password": {
"label": "סיסמה"
},
"username": {
"help-text": "אתה יכול גם להזין את כתובת הדוא\"ל שלך",
"label": "שם משתמש"
}
},
"heading": "התחבר לחשבונך",
"recover-text": "במקרה ששכחת את הסיסמה שלך, תוכל <1>לשחזר את חשבונך</1> כאן.",
"register-text": "אם אין לך אחד, אתה יכול <1>ליצור חשבון</1> כאן."
},
"register": {
"actions": {
"register": "הירשם",
"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": "העלה JSON מגרסה 2"
},
"body": "אם יש לך JSON שיוצא עם הגרסה הנוכחית של Reactive Resume, תוכל לייבא אותו בחזרה לכאן כדי לקבל שוב גרסה הניתנת לעריכה.",
"heading": "ייבא מ- Reactive Resume"
}
},
"rename-resume": {
"actions": {
"rename-resume": "שנה את שם קורות החיים"
},
"form": {
"name": {
"label": "שם"
},
"slug": {
"label": "סלאג"
}
},
"heading": "שנה את שם קורות החיים שלך"
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "पूरा नाम"
},
"birthdate": {
"label": "जन्म की तारीख"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,361 @@
{
"common": {
"actions": {
"add": "Új hozzáadása {{token}}",
"delete": "{{token}} törlése",
"edit": "{{token}} szerkesztése"
},
"columns": {
"heading": "Oszlopok",
"tooltip": "Az oszlopok számának módosítása"
},
"form": {
"date": {
"label": "Dátum"
},
"description": {
"label": "Leírás"
},
"email": {
"label": "E-mail cím"
},
"end-date": {
"help-text": "Hagyja üresen ezt a mezőt, ha még mindig tart van",
"label": "Befejezés dátuma"
},
"keywords": {
"label": "Kulcsszavak"
},
"level": {
"label": "Szint"
},
"levelNum": {
"label": "Szint (szám)"
},
"name": {
"label": "Név"
},
"phone": {
"label": "Telefonszám"
},
"position": {
"label": "Pozíció"
},
"start-date": {
"label": "Kezdés dátuma"
},
"subtitle": {
"label": "Felirat"
},
"summary": {
"label": "Összegzés"
},
"title": {
"label": "Cím"
},
"url": {
"label": "Honlap"
}
},
"glossary": {
"page": "Oldal"
},
"list": {
"actions": {
"delete": "Törlés",
"duplicate": "Duplikálás",
"edit": "Szerkesztés"
},
"empty-text": "Ez a lista üres."
},
"tooltip": {
"delete-item": "Biztosan törli ezt az elemet? Ez egy visszafordíthatatlan művelet.",
"delete-section": "Szakasz törlése",
"rename-section": "Szakasz átnevezése",
"toggle-visibility": "Láthatóság váltása"
}
},
"controller": {
"tooltip": {
"center-artboard": "Központi rajztábla",
"copy-link": "Link másolása az önéletrajzba",
"export-pdf": "Exportálás PDF-be",
"toggle-orientation": "Oldaltájolás váltása",
"toggle-page-break-line": "Oldaltörés vonal váltása",
"toggle-sidebars": "Az oldalsávok váltása",
"zoom-in": "Nagyítás",
"zoom-out": "Kicsinyítés"
}
},
"header": {
"menu": {
"delete": "Törlés",
"duplicate": "Másolat",
"rename": "Átnevezés",
"share-link": "Link megosztása",
"tooltips": {
"delete": "Biztos, hogy törölni szeretné ezt az önéletrajzot? Ez egy visszafordíthatatlan művelet.",
"share-link": "Az önéletrajz láthatóságát nyilvánosra kell változtatnia, hogy mások számára is látható legyen."
}
}
},
"leftSidebar": {
"sections": {
"awards": {
"form": {
"awarder": {
"label": "Díjazó"
}
}
},
"basics": {
"actions": {
"photo-filters": "Fotószűrők"
},
"heading": "Alapok",
"headline": {
"label": "Címsor"
},
"name": {
"label": "Teljes név"
},
"birthdate": {
"label": "Születési dátum"
},
"photo-filters": {
"effects": {
"border": {
"label": "Határ"
},
"grayscale": {
"label": "Szürkeárnyalatos"
},
"heading": "Hatások"
},
"shape": {
"heading": "Alak"
},
"size": {
"heading": "Méret (px-ben)"
}
},
"photo-upload": {
"tooltip": {
"remove": "Fotó eltávolítása",
"upload": "Fénykép feltöltése"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "Kibocsátó"
}
}
},
"education": {
"form": {
"area-study": {
"label": "Tanulmányi terület"
},
"courses": {
"label": "Kurzusok"
},
"degree": {
"label": "Diploma"
},
"grade": {
"label": "Osztályzat"
},
"institution": {
"label": "Intézmény"
}
}
},
"location": {
"address": {
"label": "Cím"
},
"city": {
"label": "Település"
},
"country": {
"label": "Ország"
},
"heading": "Helyszín",
"postal-code": {
"label": "Irányítószám"
},
"region": {
"label": "Vidék"
}
},
"profiles": {
"form": {
"network": {
"label": "Hálózat"
},
"username": {
"label": "Felhasználónév"
}
},
"heading": "Profilok",
"heading_one": "Profil"
},
"publications": {
"form": {
"publisher": {
"label": "Kiadó"
}
}
},
"references": {
"form": {
"relationship": {
"label": "Kapcsolat"
}
}
},
"section": {
"heading": "Szakasz"
},
"volunteer": {
"form": {
"organization": {
"label": "Szervezet"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "Egyedi CSS"
},
"export": {
"heading": "Exportálás",
"json": {
"primary": "JSON",
"secondary": "Töltse le önéletrajzának JSON-verzióját, amelyet vissza lehet importálni a Reactive Resume alkalmazásba."
},
"pdf": {
"loading": {
"primary": "PDF generálása",
"secondary": "Kérjük, várjon, amíg a PDF generálódik, ez akár 15 másodpercig is eltarthat."
},
"normal": {
"primary": "PDF",
"secondary": "Töltse le önéletrajzának PDF formátumát, amelyet kinyomtathat és elküldhet álmai munkahelyére. Ez a fájl nem importálható vissza további szerkesztéshez."
}
}
},
"layout": {
"heading": "Elrendezés",
"tooltip": {
"reset-layout": "Elrendezés visszaállítása"
}
},
"links": {
"bugs-features": {
"body": "Valami akadályozza az önéletrajz elkészítésében? Vagy van egy elképesztő ötlete az alkalmazáshoz? Hozzon létre egy Issue-t a GitHubon, hogy elkezdhessük.",
"button": "GitHub problémák",
"heading": "Hibák? Funkciókérés?"
},
"donate": {
"body": "Ha tetszett a Reactive Resume, kérjük, fontolja meg, hogy amennyit csak tud, adományozzon arra, hogy az alkalmazás folyamatosan működjön, hirdetések nélkül és örökké ingyenesen.",
"button": "Vegyél nekem egy kávét",
"heading": "Adományozzon a Reactive Resume-nak"
},
"github": "Forráskód",
"heading": "Linkek"
},
"settings": {
"global": {
"date": {
"primary": "Dátum",
"secondary": "Az alkalmazásban használható dátumformátum"
},
"heading": "Globális",
"language": {
"primary": "Nyelv",
"secondary": "Az alkalmazásban használható megjelenítési nyelv"
},
"theme": {
"primary": "Téma"
}
},
"heading": "Beállítások",
"page": {
"break-line": {
"primary": "Törésvonal",
"secondary": "Mutasson egy vonalat az összes oldalon, hogy megjelölje egy A4-es oldal magasságát"
},
"heading": "oldal",
"orientation": {
"disabled": "Nincs hatása, ha csak egy oldal van",
"primary": "Irányultság",
"secondary": "Az oldalak vízszintes vagy függőleges megjelenítése"
}
},
"resume": {
"heading": "Önéletrajz",
"reset": {
"primary": "Mindent visszaállít",
"secondary": "Túl sok hibát követett el? Kattintson ide az összes módosítás visszaállításához és a nulláról kezdéshez. Legyen óvatos, ezt a műveletet nem lehet visszafordítani."
},
"sample": {
"primary": "Példa adat betöltése",
"secondary": "Nem tudja hol kezdje? Kattintson ide néhány minta adat betöltéséhez, hogy megtudja, hogyan néz ki a teljes önéletrajz."
}
}
},
"sharing": {
"heading": "Megosztás",
"short-url": {
"label": "Rövid URL-t részesítsen előnyben"
},
"visibility": {
"subtitle": "A link birtokában bárki megtekintheti önéletrajzát",
"title": "Nyilvános"
}
},
"templates": {
"heading": "Sablonok"
},
"theme": {
"form": {
"background": {
"label": "Háttér"
},
"primary": {
"label": "Elsődleges"
},
"text": {
"label": "Szöveg"
}
},
"heading": "Téma"
},
"typography": {
"form": {
"font-family": {
"label": "Betűkészlet"
},
"font-size": {
"label": "Betűméret"
}
},
"heading": "Tipográfia",
"widgets": {
"body": {
"label": "Test"
},
"headings": {
"label": "Címsorok"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "Helló",
"logout": "Kijelentkezés"
}
},
"footer": {
"credit": "<1>Amruth Pillai szenvedélyes projektje</1>",
"license": "A közösség által, a közösségért."
},
"markdown": {
"help-text": "Ez a szakasz támogatja a <1>markdown</1> formázást."
},
"date": {
"present": "Ajándék"
},
"subtitle": "Ingyenes és nyílt forráskódú önéletrajzkészítő.",
"title": "Reactive Resume",
"toast": {
"error": {
"upload-file-size": "Kérjük, csak 2 megabájtnál kisebb fájlokat töltsön fel.",
"upload-photo-size": "Kérjük, csak 2 megabájt alatti, lehetőleg négyzet alakú képeket töltsön fel."
},
"success": {
"resume-link-copied": "Az önéletrajzának linkjét a vágólapra másoltuk."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Kezdjük a legelejéről",
"title": "Új önéletrajz létrehozása"
},
"import-external": {
"subtitle": "LinkedIn, JSON önéletrajz, reaktív önéletrajz",
"title": "Importálás külső forrásokból"
},
"resume": {
"menu": {
"delete": "Törlés",
"duplicate": "Másolat",
"open": "Nyisd ki",
"rename": "Átnevezés",
"share-link": "Link megosztása",
"tooltips": {
"delete": "Biztos, hogy törölni szeretné ezt az önéletrajzot? Ez egy visszafordíthatatlan művelet.",
"share-link": "Az önéletrajz láthatóságát nyilvánosra kell változtatnia, hogy mások számára is látható legyen."
}
},
"timestamp": "Utoljára frissítve {{timestamp}} ezelőtt"
},
"title": "Irányítópult"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "Lépjen az App",
"login": "Belépés",
"logout": "Kijelentkezés",
"register": "Regisztráció"
},
"features": {
"heading": "Jellemzők",
"list": {
"ads": "Nincs reklám",
"export": "Exportálja önéletrajzát JSON vagy PDF formátumba",
"free": "Ingyenes, örökre",
"import": "Adatok importálása a LinkedInből, JSON Resume",
"languages": "Több nyelven is elérhető",
"more": "És még sok izgalmas funkció, <1>erről itt olvashat</1>",
"tracking": "Nincs felhasználói követés"
}
},
"links": {
"heading": "Linkek",
"links": {
"donate": "Adományoz",
"github": "Forráskód",
"privacy": "Adatvédelmi irányelvek",
"service": "Szolgáltatási feltételek"
}
},
"screenshots": {
"heading": "Képernyőképek"
},
"testimonials": {
"heading": "Beszámolók",
"body": "Jó vagy rossz, szeretném hallani a véleményét a Reactive Resume-ról, és arról, hogy milyen élményben volt része az Ön számára.<br/>Íme néhány üzenet a felhasználók által a világ minden tájáról küldött üzenetei közül.",
"contact": "Az <1>e-mail címemen keresztül elérhetsz</1> vagy a <3>webhelyemen található kapcsolatfelvételi űrlapon keresztül</3> ."
},
"summary": {
"body": "A Reactive Resume egy ingyenes és nyílt forráskódú önéletrajz-készítő, amely az önéletrajz létrehozásának, frissítésének és megosztásának hétköznapi feladatait olyan egyszerűvé teszi, mint 1, 2, 3. Ezzel az alkalmazással több önéletrajzot hozhat létre, és megoszthatja azokat toborzókkal vagy barátaival. egy egyedi hivatkozáson keresztül, és nyomtassa ki PDF formátumban, mindezt ingyenesen, hirdetések nélkül, nyomon követés nélkül, anélkül, hogy elveszítené adatai sértetlenségét és magánéletét.",
"heading": "Összegzés"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "Jelszó visszaállítása e-mail küldése"
},
"body": "Csak adja meg a helyreállítani kívánt fiókhoz társított e-mail címet.",
"form": {
"email": {
"label": "Email cím"
}
},
"heading": "Elfelejtette a jelszavát?",
"help-text": "Ha a fiók létezik, kap egy e-mailt a jelszó visszaállításához szükséges linkkel."
},
"login": {
"actions": {
"login": "Belépés",
"google": "Jelentkezzen be a Google-lal"
},
"body": "Kérjük, adja meg a fiókjához tartozó felhasználónevét és jelszavát a bejelentkezéshez, valamint önéletrajzainak eléréséhez, kezeléséhez és megosztásához.",
"form": {
"password": {
"label": "Jelszó"
},
"username": {
"help-text": "E-mail címét is megadhatja",
"label": "Felhasználónév"
}
},
"heading": "Jelentkezz be a fiókodba",
"recover-text": "Ha elfelejtette jelszavát, <1>visszaállíthatja fiókját</1> itt.",
"register-text": "Ha nem rendelkezik fiókkal, <1>létrehozhat egy fiókot</1> itt."
},
"register": {
"actions": {
"register": "Regisztráció",
"google": "Regisztráljon a Google-nál"
},
"body": "Kérjük, adja meg személyes adatait fiók létrehozásához.",
"form": {
"confirm-password": {
"label": "Jelszó megerősítése"
},
"email": {
"label": "E-mail cím"
},
"name": {
"label": "Teljes név"
},
"password": {
"label": "Jelszó"
},
"username": {
"label": "Felhasználónév"
}
},
"heading": "Fiók létrehozása",
"loginText": "Ha már van fiókja, <1>itt bejelentkezhet</1> ."
},
"reset-password": {
"actions": {
"set-password": "Új jelszó beállítása"
},
"body": "Adjon meg egy új jelszót a fiókjához.",
"form": {
"confirm-password": {
"label": "Jelszó megerősítése"
},
"password": {
"label": "Jelszó"
}
},
"heading": "Jelszó visszaállítása"
}
},
"dashboard": {
"create-resume": {
"actions": {
"create-resume": "Önéletrajz létrehozása"
},
"body": "Kezdje el az önéletrajz felépítését azzal, hogy nevet ad neki. Ez utalhat a megpályázott szerepre, vagy egyszerűen csak a kedvenc nassolnivalójára.",
"form": {
"name": {
"label": "Név"
},
"public": {
"label": "Nyilvánosan elérhető?"
},
"slug": {
"label": "Meztelen csiga"
}
},
"heading": "Új önéletrajz létrehozása"
},
"import-external": {
"heading": "Importálás külső forrásokból",
"json-resume": {
"actions": {
"upload-json": "JSON feltöltése"
},
"body": "Ha <1>ellenőrzött JSON-önéletrajza van</1> használatra kész, segítségével felgyorsíthatja a Reactive Resume fejlesztését. Kattintson az alábbi gombra, és töltsön fel egy érvényes JSON-fájlt a kezdéshez.",
"heading": "Importálás a JSON-ból Folytatás"
},
"linkedin": {
"actions": {
"upload-archive": "Töltse fel a ZIP-archívumot"
},
"body": "Időt takaríthat meg, ha exportálja adatait a LinkedInből, és automatikusan kitölti a Reactive Resume mezőit. Nyissa meg az <1>Adatvédelem oldalt</1> szakaszt a LinkedIn-en, és kérje adatainak archiválását. Amint elérhető, töltse fel az alábbi ZIP-fájlt.",
"heading": "Importálás a LinkedIn-ből"
},
"reactive-resume": {
"actions": {
"upload-json": "JSON feltöltése",
"upload-json-v2": "JSON feltöltése v2-ből"
},
"body": "Ha van olyan JSON-ja, amelyet a Reactive Resume jelenlegi verziójával exportált, akkor ide visszaimportálhatja, hogy újra szerkeszthető változatot kapjon.",
"heading": "Importálás a Reactive Resume alkalmazásból"
}
},
"rename-resume": {
"actions": {
"rename-resume": "Önéletrajz átnevezése"
},
"form": {
"name": {
"label": "Név"
},
"slug": {
"label": "Meztelen csiga"
}
},
"heading": "Nevezze át önéletrajzát"
}
}
}

View File

@ -0,0 +1,361 @@
{
"common": {
"actions": {
"add": "Tambahkan {{token}} Baru",
"delete": "Hapus {{token}}",
"edit": "Ubah {{token}}"
},
"columns": {
"heading": "Kolom",
"tooltip": "Ubah nomor kolom"
},
"form": {
"date": {
"label": "Tanggal"
},
"description": {
"label": "Keterangan"
},
"email": {
"label": "Alamat Email"
},
"end-date": {
"help-text": "Biarkan kosong, Jika masih terbaru",
"label": "Tanggal Akhir"
},
"keywords": {
"label": "Kata Kunci"
},
"level": {
"label": "Tingkat"
},
"levelNum": {
"label": "Tingkat (Angka)"
},
"name": {
"label": "Nama"
},
"phone": {
"label": "Nomor Telepon"
},
"position": {
"label": "Jabatan"
},
"start-date": {
"label": "Tanggal Mulai"
},
"subtitle": {
"label": "Sub Judul"
},
"summary": {
"label": "Ringkasan"
},
"title": {
"label": "Judul"
},
"url": {
"label": "Situs web"
}
},
"glossary": {
"page": "Halaman"
},
"list": {
"actions": {
"delete": "Hapus",
"duplicate": "Duplikat",
"edit": "Ubah"
},
"empty-text": "Daftar ini kosong."
},
"tooltip": {
"delete-item": "Anda yakin ingin menghapus item ini? Tindakan ini tidak dapat dibatalkan.",
"delete-section": "Hapus Bagian",
"rename-section": "Ganti Nama Bagian",
"toggle-visibility": "Beralih Visibilitas"
}
},
"controller": {
"tooltip": {
"center-artboard": "Tengahkan Artboard",
"copy-link": "Salin Tautan ke Resume",
"export-pdf": "Ekspor PDF",
"toggle-orientation": "Beralih Orientasi Halaman",
"toggle-page-break-line": "Beralih Garis Pemisah Halaman",
"toggle-sidebars": "Beralih Sidebar",
"zoom-in": "Perbesar",
"zoom-out": "Perkecil"
}
},
"header": {
"menu": {
"delete": "Hapus",
"duplicate": "Duplikat",
"rename": "Ganti nama",
"share-link": "Bagikan tautan",
"tooltips": {
"delete": "Anda yakin ingin menghapus Resume ini? Tindakan ini tidak dapat dibatalkan.",
"share-link": "Anda perlu mengubah visibilitas resume Anda ke publik agar terlihat oleh orang lain."
}
}
},
"leftSidebar": {
"sections": {
"awards": {
"form": {
"awarder": {
"label": "Penghargaan"
}
}
},
"basics": {
"actions": {
"photo-filters": "Filter Foto"
},
"heading": "Dasar",
"headline": {
"label": "Judul"
},
"name": {
"label": "Nama Lengkap"
},
"birthdate": {
"label": "Tanggal Lahir"
},
"photo-filters": {
"effects": {
"border": {
"label": "Batas"
},
"grayscale": {
"label": "Grayscale"
},
"heading": "Efek"
},
"shape": {
"heading": "Bentuk"
},
"size": {
"heading": "Besar (dalam px)"
}
},
"photo-upload": {
"tooltip": {
"remove": "Hapus Foto",
"upload": "Unggah Foto"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "Penerbit"
}
}
},
"education": {
"form": {
"area-study": {
"label": "Area belajar"
},
"courses": {
"label": "Kursus"
},
"degree": {
"label": "Gelar"
},
"grade": {
"label": "Tingkatan"
},
"institution": {
"label": "Lembaga"
}
}
},
"location": {
"address": {
"label": "Alamat"
},
"city": {
"label": "Kota"
},
"country": {
"label": "Negara"
},
"heading": "Lokasi",
"postal-code": {
"label": "Kode Pos"
},
"region": {
"label": "Wilayah"
}
},
"profiles": {
"form": {
"network": {
"label": "Social Media"
},
"username": {
"label": "Nama Panggilan"
}
},
"heading": "Profil",
"heading_one": "Profil"
},
"publications": {
"form": {
"publisher": {
"label": "Penerbit"
}
}
},
"references": {
"form": {
"relationship": {
"label": "Hubungan"
}
}
},
"section": {
"heading": "Bagian"
},
"volunteer": {
"form": {
"organization": {
"label": "Organisasi"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "Kostumisasi CSS"
},
"export": {
"heading": "Ekspor",
"json": {
"primary": "JSON",
"secondary": "Unduh versi JSON dari resume Anda yang dapat diimpor kembali ke Reactive Resume."
},
"pdf": {
"loading": {
"primary": "Membuat PDF",
"secondary": "Harap tunggu saat ini PDF Anda sedang dibuat, mungkin memerlukan waktu hingga 15 detik."
},
"normal": {
"primary": "PDF",
"secondary": "Unduh PDF dari resume Anda yang dapat Anda cetak dan kirimkan ke pekerjaan impian Anda. File ini tidak dapat diimpor kembali untuk pengeditan lanjutan."
}
}
},
"layout": {
"heading": "Tata Letak",
"tooltip": {
"reset-layout": "Atur ulang Layout"
}
},
"links": {
"bugs-features": {
"body": "Sesuatu menghentikan Anda dari membuat resume? Atau apakah Anda memiliki ide luar biasa untuk ditambahkan? Buat Issues di GitHub untuk memulai.",
"button": "Masalah GitHub",
"heading": "Bugs? Request Fitur?"
},
"donate": {
"body": "Jika Anda suka menggunakan Reactive Resume, harap pertimbangkan untuk donasi sebanyak mungkin untuk menjaga aplikasi tetap berjalan, tanpa iklan dan gratis selamanya.",
"button": "Belikan Saya Kopi",
"heading": "Donasi ke Reactive Resume"
},
"github": "Kode sumber",
"heading": "Link"
},
"settings": {
"global": {
"date": {
"primary": "Tanggal",
"secondary": "Format tanggal untuk digunakan di seluruh aplikasi"
},
"heading": "Global",
"language": {
"primary": "Bahasa",
"secondary": "Tampilkan bahasa untuk digunakan di seluruh aplikasi"
},
"theme": {
"primary": "Tema"
}
},
"heading": "Pengaturan",
"page": {
"break-line": {
"primary": "Break Line",
"secondary": "Tampilkan garis di semua halaman untuk menandai ketinggian halaman A4"
},
"heading": "Halaman",
"orientation": {
"disabled": "Tidak berpengaruh ketika hanya ada satu halaman",
"primary": "Orientasi",
"secondary": "Menampilkan halaman secara horizontal atau vertikal"
}
},
"resume": {
"heading": "Resume",
"reset": {
"primary": "Atur ulang Semuanya",
"secondary": "Membuat terlalu banyak kesalahan? Klik di sini untuk mengatur ulang semua perubahan dan memulai dari awal. Hati-hati, tindakan ini tidak dapat dibatalkan."
},
"sample": {
"primary": "Muat Data Sampel",
"secondary": "Tidak yakin harus mulai dari mana? Klik di sini untuk memuat beberapa contoh data untuk melihat bagaimana resume lengkap terlihat."
}
}
},
"sharing": {
"heading": "Bagikan",
"short-url": {
"label": "Gunakan URL pendek"
},
"visibility": {
"subtitle": "Izinkan siapa pun yang memiliki tautan untuk melihat resume Anda",
"title": "Publik"
}
},
"templates": {
"heading": "Template"
},
"theme": {
"form": {
"background": {
"label": "Latar Belakang"
},
"primary": {
"label": "Utama"
},
"text": {
"label": "Teks"
}
},
"heading": "Tema"
},
"typography": {
"form": {
"font-family": {
"label": "Font Family"
},
"font-size": {
"label": "Besar Font"
}
},
"heading": "Tipografi",
"widgets": {
"body": {
"label": "Tubuh"
},
"headings": {
"label": "Judul"
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
{
"avatar": {
"menu": {
"greeting": "Halo",
"logout": "Keluar"
}
},
"footer": {
"credit": "Sebuah passion project dari <1>Amruth Pillai</1>",
"license": "Dari komunitas, untuk komunitas."
},
"markdown": {
"help-text": "Bagian ini mendukung format <1>markdown</1>."
},
"date": {
"present": "Sekarang"
},
"subtitle": "Pembuat resume open source dan gratis.",
"title": "\"Reactive Resume\"",
"toast": {
"error": {
"upload-file-size": "Harap unggah hanya file di bawah 2 megabytes.",
"upload-photo-size": "Harap unggah hanya foto di bawah 2 megabytes, lebih baik jika persegi."
},
"success": {
"resume-link-copied": "Tautan ke resume Anda telah disalin ke papan klip Anda."
}
}
}

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Mulai dari Awal",
"title": "Buat Resume Baru"
},
"import-external": {
"subtitle": "LinkedIn, Resume JSON, Reactive Resume",
"title": "Impor dari sumber luar"
},
"resume": {
"menu": {
"delete": "Hapus",
"duplicate": "Duplikasi",
"open": "Buka",
"rename": "Ganti Nama",
"share-link": "Bagikan link",
"tooltips": {
"delete": "Anda yakin ingin menghapus resume ini? Ini adalah tindakan yang tidak dapat dibatalkan.",
"share-link": "Anda perlu mengubah visibilitas resume Anda ke publik agar terlihat oleh orang lain."
}
},
"timestamp": "Terakhir diubah {{timestamp}} lalu"
},
"title": "Dasbor"
}

View File

@ -0,0 +1,41 @@
{
"actions": {
"app": "Buka Aplikasi",
"login": "Masuk",
"logout": "Keluar",
"register": "Registrasi"
},
"features": {
"heading": "Fitur",
"list": {
"ads": "Tanpa Iklan",
"export": "Ekspor resume Anda ke JSON atau format PDF",
"free": "Gratis, selamanya",
"import": "Impor data dari LinkedIn, JSON Resume",
"languages": "Dapat diakses dari berbagai bahasa",
"more": "Dan masih banyak lagi fitur menarik lainnya, <1>baca semuanya disini</1>",
"tracking": "Tanpa Pelacakan Pengguna"
}
},
"links": {
"heading": "Link",
"links": {
"donate": "Donasi",
"github": "Kode Sumber",
"privacy": "Kebijakan Pribadi",
"service": "Persyaratan Layanan"
}
},
"screenshots": {
"heading": "Screenshot"
},
"testimonials": {
"heading": "Testimoni",
"body": "Baik atau buruk, saya akan senang mendengar pendapat Anda tentang Reactive Resume dan bagaimana pengalamannya bagi Anda.<br/>Berikut adalah beberapa pesan yang dikirim oleh pengguna di seluruh dunia.",
"contact": "Anda dapat menghubungi saya melalui <1>email saya</1> atau melalui formulir kontak di <3>situs web saya</3>."
},
"summary": {
"body": "Reactive Resume adalah pembuat resume gratis dan open source yang dibuat untuk membuat tugas-tugas lebih mudah seperti membuat, memperbarui, dan membagikan resume Anda semudah 1, 2, 3. Dengan aplikasi ini, Anda dapat membuat beberapa resume, membaginya dengan perekrut atau teman melalui tautan unik dan cetak sebagai PDF, semuanya gratis, tanpa iklan, tanpa pelacakan, tanpa kehilangan integritas dan privasi data Anda.",
"heading": "Ringkasan"
}
}

View File

@ -0,0 +1,136 @@
{
"auth": {
"forgot-password": {
"actions": {
"send-email": "Kirim Reset Kata Sandi Email"
},
"body": "Cukup masukkan alamat email yang terkait dengan akun yang ingin Anda pulihkan.",
"form": {
"email": {
"label": "Alamat Email"
}
},
"heading": "Lupa Kata Sandi?",
"help-text": "Jika akun ada, Anda akan menerima email dengan tautan untuk mengatur ulang kata sandi Anda."
},
"login": {
"actions": {
"login": "Masuk",
"google": "Masuk dengan Google"
},
"body": "Silakan masukkan nama pengguna dan kata sandi Anda yang terkait dengan akun Anda untuk masuk dan mengakses, mengelola, dan membagikan resume Anda.",
"form": {
"password": {
"label": "kata Sandi"
},
"username": {
"help-text": "Anda juga dapat memasukkan alamat email Anda",
"label": "Nama Pengguna"
}
},
"heading": "Masuk ke akun Anda",
"recover-text": "Jika Anda lupa sandi, Anda dapat <1>memulihkan akun</1> di sini.",
"register-text": "Jika Anda tidak memilikinya, Anda dapat <1>membuat akun</1> di sini."
},
"register": {
"actions": {
"register": "Daftar",
"google": "Daftar dengan Google"
},
"body": "Silakan masukkan informasi pribadi Anda untuk membuat akun.",
"form": {
"confirm-password": {
"label": "Konfirmasi Sandi"
},
"email": {
"label": "Alamat Email"
},
"name": {
"label": "Nama Lengkap"
},
"password": {
"label": "Kata Sandi"
},
"username": {
"label": "Nama Panggilan"
}
},
"heading": "Buat akun",
"loginText": "Jika Anda sudah memiliki akun, Anda dapat <1>masuk di sini</1>."
},
"reset-password": {
"actions": {
"set-password": "Ubah Kata Sandi Baru"
},
"body": "Masukkan kata sandi baru untuk akun Anda.",
"form": {
"confirm-password": {
"label": "Konfirmasi Sandi"
},
"password": {
"label": "Kata Sandi"
}
},
"heading": "Atur ulang kata sandi"
}
},
"dashboard": {
"create-resume": {
"actions": {
"create-resume": "Buat Resume"
},
"body": "Mulailah membangun resume Anda dengan memberinya nama. Bisa jadi mengacu pada peran yang Anda lamar, atau hanya cemilan favorit Anda.",
"form": {
"name": {
"label": "Nama"
},
"public": {
"label": "Apakah Dapat Diakses Publik?"
},
"slug": {
"label": "Slug"
}
},
"heading": "Buat resume baru"
},
"import-external": {
"heading": "Impor dari Sumber luar",
"json-resume": {
"actions": {
"upload-json": "Unggah JSON"
},
"body": "Jika Anda memiliki <1>JSON Resume yang divalidasi</1> yang siap digunakan, Anda dapat menggunakannya untuk mempercepat pengembangan Anda di Reactive Resume. Klik tombol di bawah dan unggah file JSON yang valid untuk memulai.",
"heading": "Impor dari JSON Resume"
},
"linkedin": {
"actions": {
"upload-archive": "Unggah berkas ZIP"
},
"body": "Anda dapat menghemat waktu dengan mengekspor data Anda dari LinkedIn dan menggunakannya untuk mengisi kolom secara otomatis di Reactive Resume. Buka bagian <1>Privasi Data</1> di LinkedIn dan minta arsip data Anda. Setelah tersedia, unggah file ZIP di bawah ini.",
"heading": "Impor dari LinkedIn"
},
"reactive-resume": {
"actions": {
"upload-json": "Unggah JSON",
"upload-json-v2": "Unggah JSON dari v2"
},
"body": "Jika Anda memiliki JSON yang diekspor dengan versi Reactive Resume saat ini, Anda dapat mengimpornya kembali ke sini untuk mendapatkan versi yang dapat diedit lagi.",
"heading": "Impor dari Reactive Resume"
}
},
"rename-resume": {
"actions": {
"rename-resume": "Ubah nama Resume"
},
"form": {
"name": {
"label": "Nama"
},
"slug": {
"label": "Slug"
}
},
"heading": "Ubah nama resume Anda"
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "Nome e cognome"
},
"birthdate": {
"label": "Data di nascita"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "ಪೂರ್ಣ ಹೆಸರು"
},
"birthdate": {
"label": "ಹುಟ್ತಿದ ದಿನ"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "പൂർണ്ണമായ പേര്"
},
"birthdate": {
"label": "ജനിച്ച ദിവസം"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Volledige naam"
},
"birthdate": {
"label": "Geboortedatum"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,25 @@
{
"create-resume": {
"subtitle": "Start fra begynnelsen",
"title": "Opprett ny CV"
},
"import-external": {
"subtitle": "LinkedIn, JSON Resume, Reactive Resume",
"title": "Importer fra eksterne kilder"
},
"resume": {
"menu": {
"delete": "Slett",
"duplicate": "Dupliser",
"open": "Åpen",
"rename": "Endre navn",
"share-link": "Del lenke",
"tooltips": {
"delete": "Er du sikker på at du vil slette dette resymeet? Dette er en irreversibel handling.",
"share-link": "Du må endre synligheten til resymeet ditt til offentlig for å gjøre det synlig for andre."
}
},
"timestamp": "Sist oppdatert for {{timestamp}} siden"
},
"title": "Oversikt"
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "ପୁରା ନାମ"
},
"birthdate": {
"label": "ଜନ୍ମଦିନ"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Imię i nazwisko"
},
"birthdate": {
"label": "Data urodzenia"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Nome Completo"
},
"birthdate": {
"label": "Data de nascimento"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -13,7 +13,7 @@
"help-text": "Esta seção suporta formatação <1>markdown</1>."
},
"date": {
"present": "presente"
"present": "Presente"
},
"subtitle": "Gerador de currículos gratuito e de código aberto.",
"title": "Reactive Resume",

View File

@ -119,6 +119,9 @@
"name": {
"label": "ФИО"
},
"birthdate": {
"label": "Дата рождения"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -0,0 +1,361 @@
{
"common": {
"actions": {
"add": "Dodaj Novi {{token}}",
"delete": "Obriši {{token}}",
"edit": "Ažuriraj {{token}}"
},
"columns": {
"heading": "Kolone",
"tooltip": "Promeni broj kolona"
},
"form": {
"date": {
"label": "Datum"
},
"description": {
"label": "Opis"
},
"email": {
"label": "Imejl Adresa"
},
"end-date": {
"help-text": "Ostavi ovo polje prazno, ukoliko još postoji",
"label": "Datum kraja"
},
"keywords": {
"label": "Ključne reči"
},
"level": {
"label": "Nivo"
},
"levelNum": {
"label": "Nivo (Broj)"
},
"name": {
"label": "Ime"
},
"phone": {
"label": "Broj Telefona"
},
"position": {
"label": "Pozicija"
},
"start-date": {
"label": "Datum Početka"
},
"subtitle": {
"label": "Podnaslov"
},
"summary": {
"label": "Rezime"
},
"title": {
"label": "Naslov"
},
"url": {
"label": "Veb Sajt"
}
},
"glossary": {
"page": "Stranica"
},
"list": {
"actions": {
"delete": "Obriši",
"duplicate": "Dupliraj",
"edit": "Edituj"
},
"empty-text": "Ova lista je prazna."
},
"tooltip": {
"delete-item": "Da li sigurno želiš da izbrišeš ovu stavku? Ovo je nepovratna akcija.",
"delete-section": "Obriši Sekciju",
"rename-section": "Preimenuj Sekciju",
"toggle-visibility": "Prebaci Vidljivost"
}
},
"controller": {
"tooltip": {
"center-artboard": "Centriraj Kanvas",
"copy-link": "Kopiraj link u rezime",
"export-pdf": "Eksportuj PDF",
"toggle-orientation": "Uključi/Isključi Orijentaciju Stranice",
"toggle-page-break-line": "Uključi/Isključi liniju preloma stranice",
"toggle-sidebars": "Uključi/Isključi Sidebar",
"zoom-in": "Zumiraj",
"zoom-out": "Odzumiraj"
}
},
"header": {
"menu": {
"delete": "Obriši",
"duplicate": "Dupliraj",
"rename": "Preimenuj",
"share-link": "Podeli Link",
"tooltips": {
"delete": "Da li sigurno želiš da obrišeš ovaj rezime? Ovo je nepovratna akcija.",
"share-link": "Moraš da promeniš vidljivost rezimea na javno kako bi bio vidljiv drugima."
}
}
},
"leftSidebar": {
"sections": {
"awards": {
"form": {
"awarder": {
"label": "Dodelio nagradu"
}
}
},
"basics": {
"actions": {
"photo-filters": "Filteri za Slike"
},
"heading": "Osnovno",
"headline": {
"label": "Naslov"
},
"name": {
"label": "Puno Ime"
},
"birthdate": {
"label": "Datum Rođenja"
},
"photo-filters": {
"effects": {
"border": {
"label": "Okvir"
},
"grayscale": {
"label": "Sivi Ton"
},
"heading": "Efekti"
},
"shape": {
"heading": "Oblik"
},
"size": {
"heading": "Veličina (u pikselima)"
}
},
"photo-upload": {
"tooltip": {
"remove": "Obriši Sliku",
"upload": "Učitaj Sliku"
}
}
},
"certifications": {
"form": {
"issuer": {
"label": "Izdavač"
}
}
},
"education": {
"form": {
"area-study": {
"label": "Oblast Edukacije"
},
"courses": {
"label": "Kursevi"
},
"degree": {
"label": "Stepen"
},
"grade": {
"label": "Ocena"
},
"institution": {
"label": "Institucija"
}
}
},
"location": {
"address": {
"label": "Adresa"
},
"city": {
"label": "Grad"
},
"country": {
"label": "Zemlja"
},
"heading": "Lokacija",
"postal-code": {
"label": "Poštanski Broj"
},
"region": {
"label": "Region"
}
},
"profiles": {
"form": {
"network": {
"label": "Mreža"
},
"username": {
"label": "Korisničko ime"
}
},
"heading": "Profili",
"heading_one": "Profil"
},
"publications": {
"form": {
"publisher": {
"label": "Izdavač"
}
}
},
"references": {
"form": {
"relationship": {
"label": "Veza"
}
}
},
"section": {
"heading": "Sekcija"
},
"volunteer": {
"form": {
"organization": {
"label": "Organizacija"
}
}
}
}
},
"rightSidebar": {
"sections": {
"css": {
"heading": "Prilagodi CSS"
},
"export": {
"heading": "Eksportuj",
"json": {
"primary": "JSON",
"secondary": "Preuzmi JSON verziju tvog rezimea koja se može importovati nazad u Reactive Resume."
},
"pdf": {
"loading": {
"primary": "Generišem PDF",
"secondary": "Sačekaj dok se tvoj PDF generiše, ovo može da potraje do 15 sekundi."
},
"normal": {
"primary": "PDF",
"secondary": "Preuzmi PDF verziju rezimea koju možeš da štampaš i pošalješ za svoj posao iz snova. Ovaj fajl se ne može importovati ponovo kako bi se ponovo ažurirao."
}
}
},
"layout": {
"heading": "Izgled",
"tooltip": {
"reset-layout": "Resetuj izgled"
}
},
"links": {
"bugs-features": {
"body": "Nešto de sprečava da napraviš svoj rezime? Ili imaš neku super ideju kao predlog? Kreiraj task na GitHub-u za početak.",
"button": "GitHub Problemi",
"heading": "Bagovi? Zahtevi za novu funkcionalnost?"
},
"donate": {
"body": "Ako ti se sviđa Reactive Resume, razmotri o donaciji kako bi aplikacija nastavila da funkcioniše i bude dostupna, bez reklama i besplatna zauvek.",
"button": "Kupi mi kafu",
"heading": "Doniraj za Reactive Resume"
},
"github": "Izvorni Kod",
"heading": "Linkovi"
},
"settings": {
"global": {
"date": {
"primary": "Datum",
"secondary": "Format datuma koji se koristi u aplikaciji"
},
"heading": "Globalno",
"language": {
"primary": "Jezik",
"secondary": "Jezika prikaza za korišćenje u celoj aplikaciji"
},
"theme": {
"primary": "Tema"
}
},
"heading": "Podešavanja",
"page": {
"break-line": {
"primary": "Prelomi Redova",
"secondary": "Pokaži liniju na svakoj stranici kako bi se obeležila visina A4 stranice"
},
"heading": "Strana",
"orientation": {
"disabled": "Nema efekat kada postoji samo jedna stranica",
"primary": "Orijentacija",
"secondary": "Da li prikazujem stranice horizontalno ili vertikalno"
}
},
"resume": {
"heading": "Rezime",
"reset": {
"primary": "Resetuje sve",
"secondary": "Previše grešaka? Klikni ovde da resetuješ sve izmene i počneš izpočetka. Vodi računa, ova akcija se ne može promeniti."
},
"sample": {
"primary": "Učitaj podatke kao primer",
"secondary": "Ne znaš gde da počneš? Klikni ovde da učitaš podatke kao primer i vidiš kako ceo rezime može da izgleda."
}
}
},
"sharing": {
"heading": "Deljenje",
"short-url": {
"label": "Kao Kratak URL"
},
"visibility": {
"subtitle": "Dozvoli svakom sa linkom da pogleda tvoj rezime",
"title": "Javno"
}
},
"templates": {
"heading": "Šabloni"
},
"theme": {
"form": {
"background": {
"label": "Pozadina"
},
"primary": {
"label": "Glavni"
},
"text": {
"label": "Tekst"
}
},
"heading": "Tema"
},
"typography": {
"form": {
"font-family": {
"label": "Porodica Fontova"
},
"font-size": {
"label": "Veličina Fonta"
}
},
"heading": "Tipografija",
"widgets": {
"body": {
"label": "Sadržaj"
},
"headings": {
"label": "Naslovi"
}
}
}
}
}
}

View File

@ -119,6 +119,9 @@
"name": {
"label": "Fullständigt namn"
},
"birthdate": {
"label": "Födelsedatum"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "முழு பெயர்"
},
"birthdate": {
"label": "பிறந்த தேதி"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -95,7 +95,7 @@
"share-link": "Bağlantıyı Paylaş",
"tooltips": {
"delete": "Bu özgeçmişi silmek istediğinizden emin misiniz? Bu geri dönüşü olmayan bir eylemdir.",
"share-link": "Başkalarına görünür kılmak için özgeçmişinizin görünürlüğünü herkese açık olarak değiştirmeniz gerekir."
"share-link": "Özgeçmişinizin herkese açık bir şekilde görüntülenebilmesi için, görünürlük ayarını değiştirmeniz gerekmektedir."
}
}
},
@ -119,6 +119,9 @@
"name": {
"label": "Ad Soyad"
},
"birthdate": {
"label": "Doğum tarihi"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "Họ và tên"
},
"birthdate": {
"label": "Ngày sinh"
},
"photo-filters": {
"effects": {
"border": {

View File

@ -119,6 +119,9 @@
"name": {
"label": "全名"
},
"birthdate": {
"label": "出生日期"
},
"photo-filters": {
"effects": {
"border": {

Some files were not shown because too many files have changed in this diff Show More