From e8b735e1cba012ae3977df286de1dfc04be80798 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Sat, 25 Jul 2020 20:23:10 +0530 Subject: [PATCH 1/6] - adding Japanese language --- README.md | 1 + src/i18n/index.js | 4 ++++ src/i18n/locales/index.js | 2 ++ 3 files changed, 7 insertions(+) diff --git a/README.md b/README.md index 690bd1e1..e299df68 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ For those of you familiar with the Crowdin Platform, you could do that too and j - Finnish (Suomalainen) (by Ari Pikkarainen) - French (Français) (by [MeisterLLD](https://github.com/MeisterLLD)) - German (Deutsche) (by [Kryptand](https://crowdin.com/profile/Kryptand)) +- Japanese (日本人) (by [a-thug](https://crowdin.com/profile/a-thug)) - Kannada (ಕನ್ನಡ) - Portuguese (Brazilian) (by [Felipe CG](https://github.com/felcg)) - Spanish (Español) (by [jrgonzalezrios](https://github.com/jrgonzalezrios)) diff --git a/src/i18n/index.js b/src/i18n/index.js index 63bd3ef5..860c6cbb 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -27,6 +27,10 @@ const languages = [ code: 'de', name: 'German (Deutsche)', }, + { + code: 'ja', + name: 'Japanese (日本人)', + }, { code: 'kn', name: 'Kannada (ಕನ್ನಡ)', diff --git a/src/i18n/locales/index.js b/src/i18n/locales/index.js index 40e79a81..3fa404c1 100644 --- a/src/i18n/locales/index.js +++ b/src/i18n/locales/index.js @@ -4,6 +4,7 @@ import en from './en.json'; import es from './es.json'; import fi from './fi.json'; import fr from './fr.json'; +import ja from './ja.json'; import kn from './kn.json'; import nl from './nl.json'; import ptBr from './pt-br.json'; @@ -16,6 +17,7 @@ export default { es: { translation: es }, fi: { translation: fi }, fr: { translation: fr }, + ja: { translation: ja }, kn: { translation: kn }, nl: { translation: nl }, ptBr: { translation: ptBr }, From ba0ee5fdf954251222f458c8d996eed3d2410376 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 28 Jul 2020 09:18:41 +0530 Subject: [PATCH 2/6] upddate dependencies, cache buster --- gatsby-config.js | 4 +- package-lock.json | 319 +++------------------------------------------- package.json | 8 +- 3 files changed, 22 insertions(+), 309 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 46c192f0..211fdc3a 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -5,7 +5,7 @@ module.exports = { title: 'Reactive Resume', siteUrl: 'https://rxresu.me', description: 'A free and open source resume builder.', - version: '2.1.0', + version: '2.1.1', }, plugins: [ 'gatsby-plugin-react-helmet', @@ -34,7 +34,7 @@ module.exports = { display: 'standalone', }, }, - 'gatsby-plugin-offline', + 'gatsby-plugin-remove-serviceworker', { resolve: 'gatsby-plugin-prefetch-google-fonts', options: { diff --git a/package-lock.json b/package-lock.json index 8863053a..555b09b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3146,14 +3146,6 @@ "resolve": "^1.12.0" } }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - } - }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -3242,20 +3234,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.15.tgz", "integrity": "sha512-cGNEEOO32kKcI+ZZBcCIliPOvyd7/Dp8zyJ/ZD1lXKuH1frzdbWG2nbxm+iil8OIxWaeHfxf083IHvb868TY9A==" }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, "babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", @@ -3303,11 +3281,6 @@ } } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -4403,43 +4376,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - }, - "dependencies": { - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "requires": { - "@types/node": "*" - } - } - } - }, "chokidar": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", @@ -7171,9 +7107,9 @@ } }, "eslint-plugin-react": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz", - "integrity": "sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg==", + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.4.tgz", + "integrity": "sha512-y4DOQ0LrzuDQFEAnYFGjJMRHQQqfTco02qiWI00eGQYikHTzC15S5aRHGWSffnThv8sBpsmFBLky3K5keniAJg==", "requires": { "array-includes": "^3.1.1", "array.prototype.flatmap": "^1.2.3", @@ -8691,20 +8627,6 @@ "postcss": "^7.0.17" } }, - "gatsby-plugin-offline": { - "version": "3.2.21", - "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.2.21.tgz", - "integrity": "sha512-MvkWmieiXIlm70xawJgIQFUnGlMUWhrRk6jGoVCiiZ8xrViiluZONttCm/tiDdiZTFOwvOPN7RQj/zB+50grMg==", - "requires": { - "@babel/runtime": "^7.10.3", - "cheerio": "^1.0.0-rc.3", - "gatsby-core-utils": "^1.3.14", - "glob": "^7.1.6", - "idb-keyval": "^3.2.0", - "lodash": "^4.17.15", - "workbox-build": "^4.3.1" - } - }, "gatsby-plugin-page-creator": { "version": "2.3.19", "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.19.tgz", @@ -8840,6 +8762,11 @@ "@babel/runtime": "^7.10.3" } }, + "gatsby-plugin-remove-serviceworker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-remove-serviceworker/-/gatsby-plugin-remove-serviceworker-1.0.0.tgz", + "integrity": "sha1-n7QzvIvXZuFOHTcRxKxvBR4d/3w=" + }, "gatsby-plugin-sharp": { "version": "2.6.22", "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.6.22.tgz", @@ -9583,11 +9510,6 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", @@ -10622,11 +10544,6 @@ "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" }, - "idb-keyval": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.2.0.tgz", - "integrity": "sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ==" - }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -11716,11 +11633,6 @@ "has-symbols": "^1.0.1" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -12396,11 +12308,6 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -12451,23 +12358,6 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -18291,23 +18181,6 @@ "is-hexadecimal": "^1.0.0" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -18333,15 +18206,6 @@ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -19817,9 +19681,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.2.0.tgz", - "integrity": "sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" }, "v8-compile-cache": { "version": "1.1.2", @@ -20502,157 +20366,6 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, - "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", - "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", - "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" - } - }, - "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -20971,16 +20684,16 @@ } }, "yup": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.29.1.tgz", - "integrity": "sha512-U7mPIbgfQWI6M3hZCJdGFrr+U0laG28FxMAKIgNvgl7OtyYuUoc4uy9qCWYHZjh49b8T7Ug8NNDdiMIEytcXrQ==", + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.29.2.tgz", + "integrity": "sha512-FbAAeopli+TnpZ8Lzv2M72wltLw58iWBT7wW8FuAPFPb3CelXmSKCXQbV1o4keywpIK1BZ0ULTLv2s3w1CfOwA==", "requires": { - "@babel/runtime": "^7.9.6", + "@babel/runtime": "^7.10.5", "fn-name": "~3.0.0", "lodash": "^4.17.15", "lodash-es": "^4.17.11", "property-expr": "^2.0.2", - "synchronous-promise": "^2.0.10", + "synchronous-promise": "^2.0.13", "toposort": "^2.0.2" } }, diff --git a/package.json b/package.json index 740c7dbc..c713a247 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,10 @@ "gatsby-plugin-firebase": "^0.2.0-beta.4", "gatsby-plugin-manifest": "^2.4.21", "gatsby-plugin-material-ui": "^2.1.9", - "gatsby-plugin-offline": "^3.2.21", "gatsby-plugin-postcss": "^2.3.11", "gatsby-plugin-prefetch-google-fonts": "^1.4.3", "gatsby-plugin-react-helmet": "^3.3.10", + "gatsby-plugin-remove-serviceworker": "^1.0.0", "gatsby-plugin-sharp": "^2.6.22", "gatsby-plugin-sitemap": "^2.4.11", "gatsby-source-filesystem": "^2.3.23", @@ -56,8 +56,8 @@ "react-scroll": "^1.8.0", "react-toastify": "^6.0.8", "short-unique-id": "^3.0.4", - "uuid": "^8.2.0", - "yup": "^0.29.1" + "uuid": "^8.3.0", + "yup": "^0.29.2" }, "devDependencies": { "autoprefixer": "^9.8.5", @@ -67,7 +67,7 @@ "eslint-loader": "^4.0.2", "eslint-plugin-jsx-a11y": "^6.3.1", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react": "^7.20.4", "gatsby-plugin-eslint": "^2.0.8", "prettier": "2.0.5", "tailwindcss": "^1.5.2" From a1d345dfb242f2009a912fa51cd23ac452f05000 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 28 Jul 2020 09:24:44 +0530 Subject: [PATCH 3/6] fix website link --- src/templates/blocks/Contact/ContactA.js | 2 +- src/templates/blocks/Contact/ContactB.js | 2 +- src/templates/blocks/Contact/ContactC.js | 2 +- src/templates/blocks/Contact/ContactD.js | 2 +- src/templates/blocks/Contact/ContactE.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/templates/blocks/Contact/ContactA.js b/src/templates/blocks/Contact/ContactA.js index 68692ac1..c640d60b 100644 --- a/src/templates/blocks/Contact/ContactA.js +++ b/src/templates/blocks/Contact/ContactA.js @@ -40,7 +40,7 @@ const ContactA = () => { { { { { Date: Tue, 28 Jul 2020 10:09:05 +0530 Subject: [PATCH 4/6] - fix language issue when printing --- database.rules.json | 1 + gatsby-browser.js | 1 - gatsby-ssr.js | 1 - src/contexts/ResumeContext.js | 3 ++- src/templates/blocks/Awards/AwardsA.js | 13 ++++--------- .../blocks/Certifications/CertificationsA.js | 17 ++++++++--------- src/templates/blocks/Education/EducationA.js | 12 +++++++----- src/templates/blocks/Projects/ProjectsA.js | 13 ++++--------- src/templates/blocks/Work/WorkA.js | 8 +++----- src/utils/dayjs.js | 1 + src/utils/index.js | 6 +++++- 11 files changed, 35 insertions(+), 41 deletions(-) diff --git a/database.rules.json b/database.rules.json index 8c1c0a8d..bd6f82b1 100644 --- a/database.rules.json +++ b/database.rules.json @@ -9,6 +9,7 @@ } }, "users": { + ".indexOn": "isAnonymous", "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" diff --git a/gatsby-browser.js b/gatsby-browser.js index 1626bd79..f998b2f6 100644 --- a/gatsby-browser.js +++ b/gatsby-browser.js @@ -4,7 +4,6 @@ import 'firebase/analytics'; import 'firebase/auth'; import 'firebase/database'; import 'firebase/functions'; -import 'firebase/storage'; import React from 'react'; import { DatabaseProvider } from './src/contexts/DatabaseContext'; import { ModalProvider } from './src/contexts/ModalContext'; diff --git a/gatsby-ssr.js b/gatsby-ssr.js index 75f5bb39..b8679def 100644 --- a/gatsby-ssr.js +++ b/gatsby-ssr.js @@ -2,4 +2,3 @@ import 'firebase/analytics'; import 'firebase/auth'; import 'firebase/database'; import 'firebase/functions'; -import 'firebase/storage'; diff --git a/src/contexts/ResumeContext.js b/src/contexts/ResumeContext.js index 92f083c1..1136c2cf 100644 --- a/src/contexts/ResumeContext.js +++ b/src/contexts/ResumeContext.js @@ -85,7 +85,7 @@ const ResumeProvider = ({ children }) => { return newState; case 'change_language': - newState = clone(state); + newState = set(clone(state), 'metadata.language', payload); items = get( i18next.getDataByLanguage(payload), 'translation.builder.sections', @@ -94,6 +94,7 @@ const ResumeProvider = ({ children }) => { has(newState, `${key}.heading`) && set(newState, `${key}.heading`, items[key]); }); + debouncedUpdateResume(newState); return newState; case 'reset_layout': diff --git a/src/templates/blocks/Awards/AwardsA.js b/src/templates/blocks/Awards/AwardsA.js index e98fb601..cecd24b8 100644 --- a/src/templates/blocks/Awards/AwardsA.js +++ b/src/templates/blocks/Awards/AwardsA.js @@ -1,11 +1,9 @@ -import dayjs from 'dayjs'; import React, { memo, useContext } from 'react'; -import { useTranslation } from 'react-i18next'; import ReactMarkdown from 'react-markdown'; import PageContext from '../../../contexts/PageContext'; -import { safetyCheck } from '../../../utils'; +import { formatDate, safetyCheck } from '../../../utils'; -const AwardItem = ({ item, i18n }) => ( +const AwardItem = ({ item, language }) => (
@@ -14,9 +12,7 @@ const AwardItem = ({ item, i18n }) => (
{item.date && (
- {dayjs(item.date) - .locale(i18n.language.substr(0, 2)) - .format('MMMM YYYY')} + {formatDate({ date: item.date, language })}
)}
@@ -27,7 +23,6 @@ const AwardItem = ({ item, i18n }) => ( ); const AwardsA = () => { - const { i18n } = useTranslation(); const { data, heading: Heading } = useContext(PageContext); return safetyCheck(data.awards) ? ( @@ -35,7 +30,7 @@ const AwardsA = () => { {data.awards.heading}
{data.awards.items.map((x) => ( - + ))}
diff --git a/src/templates/blocks/Certifications/CertificationsA.js b/src/templates/blocks/Certifications/CertificationsA.js index 607c1285..45a22a5e 100644 --- a/src/templates/blocks/Certifications/CertificationsA.js +++ b/src/templates/blocks/Certifications/CertificationsA.js @@ -1,11 +1,9 @@ -import dayjs from 'dayjs'; import React, { memo, useContext } from 'react'; -import { useTranslation } from 'react-i18next'; import ReactMarkdown from 'react-markdown'; import PageContext from '../../../contexts/PageContext'; -import { safetyCheck } from '../../../utils'; +import { formatDate, safetyCheck } from '../../../utils'; -const CertificationItem = ({ item, i18n }) => ( +const CertificationItem = ({ item, language }) => (
@@ -14,9 +12,7 @@ const CertificationItem = ({ item, i18n }) => (
{item.date && (
- {dayjs(item.date) - .locale(i18n.language.substr(0, 2)) - .format('MMMM YYYY')} + {formatDate({ date: item.date, language })}
)}
@@ -27,7 +23,6 @@ const CertificationItem = ({ item, i18n }) => ( ); const CertificationsA = () => { - const { i18n } = useTranslation(); const { data, heading: Heading } = useContext(PageContext); return safetyCheck(data.certifications) ? ( @@ -35,7 +30,11 @@ const CertificationsA = () => { {data.certifications.heading}
{data.certifications.items.map((x) => ( - + ))}
diff --git a/src/templates/blocks/Education/EducationA.js b/src/templates/blocks/Education/EducationA.js index 284bacf8..2ac50d87 100644 --- a/src/templates/blocks/Education/EducationA.js +++ b/src/templates/blocks/Education/EducationA.js @@ -1,10 +1,9 @@ import React, { memo, useContext } from 'react'; -import { useTranslation } from 'react-i18next'; import ReactMarkdown from 'react-markdown'; import PageContext from '../../../contexts/PageContext'; import { formatDateRange, safetyCheck } from '../../../utils'; -const EducationItem = ({ item, i18n }) => ( +const EducationItem = ({ item, language }) => (
@@ -20,7 +19,7 @@ const EducationItem = ({ item, i18n }) => ( {formatDateRange({ startDate: item.startDate, endDate: item.endDate, - language: i18n.language, + language, })} ) @@ -35,7 +34,6 @@ const EducationItem = ({ item, i18n }) => ( ); const EducationA = () => { - const { i18n } = useTranslation(); const { data, heading: Heading } = useContext(PageContext); return safetyCheck(data.education) ? ( @@ -43,7 +41,11 @@ const EducationA = () => { {data.education.heading}
{data.education.items.map((x) => ( - + ))}
diff --git a/src/templates/blocks/Projects/ProjectsA.js b/src/templates/blocks/Projects/ProjectsA.js index 06b824f9..017166e1 100644 --- a/src/templates/blocks/Projects/ProjectsA.js +++ b/src/templates/blocks/Projects/ProjectsA.js @@ -1,11 +1,9 @@ -import dayjs from 'dayjs'; import React, { memo, useContext } from 'react'; -import { useTranslation } from 'react-i18next'; import ReactMarkdown from 'react-markdown'; import PageContext from '../../../contexts/PageContext'; -import { safetyCheck } from '../../../utils'; +import { formatDate, safetyCheck } from '../../../utils'; -const ProjectItem = ({ item, i18n }) => ( +const ProjectItem = ({ item, language }) => (
@@ -18,9 +16,7 @@ const ProjectItem = ({ item, i18n }) => (
{item.date && (
- {dayjs(item.date) - .locale(i18n.language.substr(0, 2)) - .format('MMMM YYYY')} + {formatDate({ date: item.date, language })}
)}
@@ -31,7 +27,6 @@ const ProjectItem = ({ item, i18n }) => ( ); const ProjectsA = () => { - const { i18n } = useTranslation(); const { data, heading: Heading } = useContext(PageContext); return safetyCheck(data.projects) ? ( @@ -39,7 +34,7 @@ const ProjectsA = () => { {data.projects.heading}
{data.projects.items.map((x) => ( - + ))}
diff --git a/src/templates/blocks/Work/WorkA.js b/src/templates/blocks/Work/WorkA.js index ab0da695..35be6948 100644 --- a/src/templates/blocks/Work/WorkA.js +++ b/src/templates/blocks/Work/WorkA.js @@ -1,10 +1,9 @@ import React, { memo, useContext } from 'react'; -import { useTranslation } from 'react-i18next'; import ReactMarkdown from 'react-markdown'; import PageContext from '../../../contexts/PageContext'; import { formatDateRange, safetyCheck } from '../../../utils'; -const WorkItem = ({ item, i18n }) => ( +const WorkItem = ({ item, language }) => (
@@ -17,7 +16,7 @@ const WorkItem = ({ item, i18n }) => ( {formatDateRange({ startDate: item.startDate, endDate: item.endDate, - language: i18n.language, + language, })} ) @@ -30,7 +29,6 @@ const WorkItem = ({ item, i18n }) => ( ); const WorkA = () => { - const { i18n } = useTranslation(); const { data, heading: Heading } = useContext(PageContext); return safetyCheck(data.work) ? ( @@ -38,7 +36,7 @@ const WorkA = () => { {data.work.heading}
{data.work.items.map((x) => ( - + ))}
diff --git a/src/utils/dayjs.js b/src/utils/dayjs.js index 00751724..60fca335 100644 --- a/src/utils/dayjs.js +++ b/src/utils/dayjs.js @@ -5,6 +5,7 @@ import 'dayjs/locale/en'; import 'dayjs/locale/es'; import 'dayjs/locale/fi'; import 'dayjs/locale/fr'; +import 'dayjs/locale/ja'; import 'dayjs/locale/kn'; import 'dayjs/locale/nl'; import 'dayjs/locale/pt'; diff --git a/src/utils/index.js b/src/utils/index.js index 1440bc03..286a0a2f 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -22,7 +22,11 @@ export const isFileImage = (file) => { return file && acceptedImageTypes.includes(file.type); }; -export const formatDateRange = ({ startDate, endDate, language }) => { +export const formatDate = ({ date, language = 'en' }) => { + return dayjs(date).locale(language.substr(0, 2)).format('MMMM YYYY'); +}; + +export const formatDateRange = ({ startDate, endDate, language = 'en' }) => { const start = `${dayjs(startDate) .locale(language.substr(0, 2)) .format('MMMM YYYY')}`; From 56616183f14d017218f70d486d3ff74c6f04fc7e Mon Sep 17 00:00:00 2001 From: RiderExMachina Date: Wed, 29 Jul 2020 17:37:50 -0700 Subject: [PATCH 5/6] Fix typo on the index page Change "convinient" => "convenient" --- src/pages/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/index.js b/src/pages/index.js index d88e131e..26a9883d 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -77,7 +77,7 @@ const Home = () => { Well, this is the exception. Your data is your own, as stated in the ridiculously simple{' '} Privacy Policy, I don't do anything with - the data, it just exists on a database for the convinient features + the data, it just exists on a database for the convenient features provided by Reactive Resume.
From 63b3c4d1ddc7a87876a1bdd4818337581b246aa8 Mon Sep 17 00:00:00 2001 From: A7madXatab Date: Thu, 30 Jul 2020 04:28:32 -0700 Subject: [PATCH 6/6] adding support for arabic language --- src/i18n/locales/ar.json | 249 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 src/i18n/locales/ar.json diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json new file mode 100644 index 00000000..de5604da --- /dev/null +++ b/src/i18n/locales/ar.json @@ -0,0 +1,249 @@ +{ + "shared": { + "appName": "Reactive Resume", + "shortDescription": "سيرة ذاتية مجانية ومفتوحة المصدر.", + "forms": { + "name": "اسم", + "title": "عنوان", + "subtitle": "العنوان الفرعي", + "required": "مطلوب", + "website": "موقع الكتروني", + "date": "تاريخ", + "position": "منصب", + "startDate": "تاريخ البدء", + "endDate": "تاريخ الانتهاء", + "address": "عنوان", + "phone": "رقم الهاتف", + "email": "عنوان البريد الالكترونى", + "summary": "ملخص", + "markdown": "This text block supports <1>markdown.", + "validation": { + "min": "الرجاء إدخال {{number}} أحرف على الأقل.", + "dateRange": "يجب أن يكون تاريخ الانتهاء بعد تاريخ البدء.", + "email": "يجب أن يكون عنوان بريد إلكتروني صالح.", + "required": "هذا مطلوب.", + "url": "يجب أن يكون عنوان URL صالحًا." + } + }, + "buttons": { + "add": "أضف", + "edit": "تعديل", + "cancel": "إلغاء", + "delete": "حذف", + "loading": "جار التحميل...", + "confirmation": "هل أنت واثق؟", + "login": "تسجيل الدخول", + "logout": "تسجيل خروج" + } + }, + "landing": { + "hero": { + "goToApp": "انتقل إلى التطبيق" + } + }, + "dashboard": { + "title": "لوحة", + "createResume": "إنشاء سيرة ذاتية", + "editResume": "تحرير السيرة الذاتية", + "lastUpdated": "آخر تحديث في {{timestamp}}", + "toasts": { + "deleted": "تم حذف {{name}} بنجاح" + }, + "buttons": { + "duplicate": "كرر", + "rename": "إعادة تسمية" + }, + "helpText": "ستقوم بإنشاء سيرة ذاتية جديدة من البداية ، ولكن أولاً ، دعنا نطلق عليها اسمًا. يمكن أن يكون هذا اسم الدور الذي تريد التقدم له ، أو إذا كنت تقوم بعمل سيرة ذاتية لصديق ، يمكنك تسميته سيرة Alex. " + }, + "builder": { + "toasts": { + "formErrors": "قد تحتاج إلى ملء جميع الحقول المطلوبة قبل إرسال هذا النموذج.", + "doesNotExist": "السيرة الذاتية التي تبحث عنها لم تعد موجودة ... أو ربما لم تكن موجودة؟", + "loadDemoData": "لست متأكدًا من أين تبدأ؟ حاول تحميل البيانات التجريبية لمعرفة ما تقدمه السيرة الذاتية التفاعلية." + }, + "sections": { + "heading": "عنوان", + "profile": "الملف الشخصي", + "social": "شبكة اجتماعية", + "objective": "هدف", + "work": "خبرة العمل", + "education": "التعليم", + "project": "مشروع", + "projects": "المشاريع", + "award": "جائزة", + "awards": "الجوائز", + "certification": "شهادة", + "certifications": "الشهادات", + "skill": "مهارة", + "skills": "المهارات", + "hobby": "هواية", + "hobbies": "الهوايات", + "language": "لغة", + "languages": "اللغات", + "reference": "مرجع", + "references": "المراجع", + "templates": "قوالب", + "layout": "التصاميم", + "colors": "الألوان", + "fonts": "الخطوط", + "actions": "أجراءات", + "settings": "الإعدادات", + "about": "حول" + }, + "profile": { + "photograph": "صورة فوتوغرافية", + "firstName": "الاسم الاول", + "lastName": "اسم العائلة", + "address": { + "line1": "العنوان الأول", + "line2": "العنوان الثاني", + "city": "مدينة", + "pincode": "الرمز البريدي" + } + }, + "social": { + "network": "الشبكات الاجتماعية", + "username": "اسم المستخدم", + "url": "رابط الموقع" + }, + "work": { + "company": "شركة" + }, + "education": { + "institution": "المعهد", + "field": "مجال الدراسة", + "degree": "نوع الدراسة", + "gpa": "المعدل" + }, + "awards": { + "awarder": "مقدم الجائزة" + }, + "certifications": { + "issuer": "جهة الإصدار" + }, + "skills": { + "level": "مستوى" + }, + "languages": { + "fluency": "إتقان" + }, + "layout": { + "block": "مجموعة", + "reset": "إعادة تعيين التصميم", + "text": "يدعم هذا التصميم {{count}} من الكتل." + }, + "colors": { + "primary": "اللون الأساسى", + "text": "لون الخط", + "background": "لون الخلفية" + }, + "actions": { + "import": { + "heading": "استيراد سيرتك الذاتية", + "text": "يمكنك استيراد معلوماتك من مصادر متنوعة مثل JSON أو LinkedIn الخاص بك لملء معظم البيانات لسيرتك الذاتية. ", + "button": "استيراد" + }, + "export": { + "heading": "تصدير سيرتك الذاتية", + "text": "قم بتصدير سيرتك الذاتية بتنسيق PDF لمشاركتها مع جهات التوظيف أو JSON التي ستتمكن من استيرادها مرة أخرى إلى هذا التطبيق على جهاز كمبيوتر آخر.", + "button": "Export" + }, + "share": { + "heading": "شارك سيرتك الذاتية", + "text": "يمكن الوصول إلى الرابط أدناه بشكل عام إذا اخترت مشاركته ، وسيرى المشاهدون أحدث إصدار من سيرتك الذاتية في أي وقت." + }, + "loadDemoData": { + "text": "غير واضح بشأن ما يجب القيام به مع صفحة فارغة جديدة؟ قم بتحميل بعض البيانات التجريبية لمعرفة كيف يجب أن تبدو السيرة الذاتية ويمكنك البدء في التحرير من هناك.", + "button": "تحميل البيانات التجريبية" + }, + "resetEverything": { + "text": "تشعر وكأنك ارتكبت الكثير من الأخطاء؟ لا تقلق ، امسح كل شيء بنقرة واحدة فقط ، ولكن كن حذرًا إذا لم تكن هناك نسخ احتياطية.", + "button": "إعادة تعيين كل شيء" + } + }, + "settings": { + "theme": "موضوع", + "language": "اللغة", + "translate": "إذا كنت ترغب في المساهمة بتقديم ترجمات بلغتك <1>please visit this link.", + "dangerZone": { + "heading": "منطقة الخطر", + "text": "إذا كنت ترغب في حذف حسابك ومسح جميع سيرتك الذاتية ، فبمجرد زر واحد. يرجى توخي الحذر لأن هذه عملية لا رجعة فيها.", + "button": "حذف الحساب" + } + }, + "about": { + "donate": { + "heading": "تبرع الى Reactive Resume", + "text": "أحاول أن أفعل ما بوسعي ، ولكن إذا وجدت التطبيق مفيدًا ، أو إذا كنت في وضع أفضل من الآخرين الذين يعتمدون على هذا المشروع في وظيفتهم الأولى <1>please consider donating as little as $5 to help keep the project alive :)", + "button": "اشتري لي قهوة!" + }, + "bugFeature": { + "heading": "خلل برمجي؟ طلب المواصفات؟", + "text": "شيء يوقف تقدمك من جعل السيرة الذاتية؟ هل وجدت خللًا مزعجًا لن يستقيل؟ تحدث عنه في قسم مشكلات GitHub باستخدام الإجراءات أدناه.", + "button": "رفع مشكلة" + }, + "appreciate": { + "heading": "اعجبت ب Reactive Resume?", + "text": "لا أتعب أبدًا من سماع القصص حول كيف ساعد هذا التطبيق الأشخاص ، وإذا كان قد ساعدك ، أو إذا وجدت للتو Resactive Resume أداة رائعة ، فأخبرني بذلك. يمكنك التواصل معي على موقع الويب الخاص بي." + }, + "sourceCode": { + "heading": "مصدر الرمز", + "text": "هل تريد تشغيل المشروع من مصدره؟ هل أنت مطور على استعداد للمساهمة في تطوير هذا المشروع مفتوح المصدر؟ انقر فوق الزر أدناه.", + "button": "Github مال المصدر" + }, + "footer": "مصنوع بالحب من قبل <1>Amruth Pillai" + }, + "tooltips": { + "uploadPhotograph": "تحميل صورة", + "backToDashboard": "ارجع إلى لوحة المعلومات" + }, + "emptyList": "هذه القائمة فارغة." + }, + "modals": { + "auth": { + "whoAreYou": "من أنت؟", + "welcome": "مرحبًا {{name}}!", + "loggedOutText": "يحتاج Reactive Resume رد الفعل إلى معرفة من أنت حتى يتمكن من مصادقتك بأمان في التطبيق ويظهر لك معلوماتك فقط. بمجرد دخولك ، يمكنك البدء في بناء سيرتك الذاتية ، وتحريرها لإضافة مهارات جديدة أو مشاركتها مع العالم! ", + "loggedInText": "ممتاز. الآن بعد أن قمت بمصادقة نفسك ، يمكننا متابعة السبب الحقيقي لوجودك هنا. انقر فوق الزر Go to App لبدء إنشاء سيرتك الذاتية!", + "buttons": { + "google": "الدخول مع جوجل", + "anonymous": "الدخول بتخفي" + } + }, + "import": { + "button": "حدد ملف", + "reactiveResume": { + "heading": "استيراد من Reactive Resume", + "text": "Reactive Resume لها تنسيق مخطط خاص بها لتحقيق أقصى استفادة من جميع الإمكانات القابلة للتخصيص التي تقدمها. إذا كنت ترغب في استيراد نسخة احتياطية من سيرتك الذاتية المصممة باستخدام هذا التطبيق ، فما عليك سوى تحميل الملف باستخدام الزر أدناه. " + }, + "jsonResume": { + "heading": "استيراد من JSON", + "text": "JSON Resume هو معيار مفتوح لبنية مخطط السيرة الذاتية. إذا كنت واحدًا من العديد من المتحمسين الذين لديهم سيرتهم الذاتية جاهزة بهذا التنسيق ، فكل ما يتطلبه الأمر هو نقرة واحدة فقط لبدء Reactive Resume" + }, + "linkedIn": { + "heading": "استيراد من LinkedIn", + "text": "يمكنك استيراد ملف JSON الذي تم تصديره من Reactive Resume من خلال النقر على الزر أدناه وتحديد الملف المناسب." + } + }, + "export": { + "printDialog": { + "heading": "استخدم مربع حوار الطباعة الخاص بالمتصفح", + "text": "بالنسبة لأولئك منكم الذين يريدون حلاً سريعًا ، لا تحتاج إلى البحث أكثر من متصفحك. كل ما عليك فعله هو الضغط على Ctrl / Cmd + P وفتح مربع حوار الطباعة على متصفحك وطباعة سيرتك الذاتية على الفور.", + "button": "طباعة سيرتي الذاتية" + }, + "downloadPDF": { + "heading": "تحميل PDF", + "text": "تتيح لك هذه الخيارات طباعة صفحة واحدة ، نسخة غير مقيدة من سيرتك الذاتية ، مثالية لأولئك الذين لديهم الكثير من المحتوى. وبدلاً من ذلك ، يمكنك تنزيل نسخة متعددة الصفحات من سيرتك الذاتية أيضًا بنقرة واحدة فقط.", + "buttons": { + "single": "صفحة واحدة من سيرتي الذاتية", + "multi": "صفحة متعددة من سيرتي الذاتية" + } + }, + "jsonFormat": { + "heading": "تصدير إلى تنسيق JSON", + "text": "يمكنك أيضًا تصدير بياناتك إلى تنسيق JSON للاحتفاظ بها بشكل آمن بحيث يمكنك استيرادها بسهولة مرة أخرى إلى السيرة الذاتية التفاعلية متى أردت تعديل السيرة الذاتية أو إنشائها.", + "button": "تصدير JSON" + } + } + } +}