diff --git a/package-lock.json b/package-lock.json index 7c3eadd..8852bb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,14 +6,18 @@ "packages": { "": { "name": "portfolio", - "version": "0.1.0", + "version": "0.1.1", "dependencies": { "@types/react-router-dom": "^5.3.3", + "i18next": "^24.2.2", + "i18next-browser-languagedetector": "^8.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^15.4.1", "react-router-dom": "^6.22.0", "react-scripts": "^5.0.1", "react-scroll": "^1.8.9", + "typescript": "^5.8.2", "web-vitals": "^2.1.4" }, "engines": { @@ -8774,6 +8778,15 @@ "node": ">=12" } }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, "node_modules/html-webpack-plugin": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", @@ -8927,6 +8940,46 @@ "node": ">=10.17.0" } }, + "node_modules/i18next": { + "version": "24.2.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-24.2.2.tgz", + "integrity": "sha512-NE6i86lBCKRYZa5TaUDkU5S4HFgLIEJRLr3Whf2psgaxBleQ2LC1YW1Vc+SCgkAW7VEzndT6al6+CzegSUHcTQ==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.4.tgz", + "integrity": "sha512-f3frU3pIxD50/Tz20zx9TD9HobKYg47fmAETb117GKGPrhwcSSPJDoCposXlVycVebQ9GQohC3Efbpq7/nnJ5w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -13635,6 +13688,28 @@ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", "license": "MIT" }, + "node_modules/react-i18next": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.4.1.tgz", + "integrity": "sha512-ahGab+IaSgZmNPYXdV1n+OYky95TGpFwnKRflX/16dY04DsYYKHtVLjeny7sBSCREEcoMbAgSkFiGLF5g5Oofw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -15988,17 +16063,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -16237,6 +16311,15 @@ "node": ">= 0.8" } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index a92b426..65bfa42 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,15 @@ }, "dependencies": { "@types/react-router-dom": "^5.3.3", + "i18next": "^24.2.2", + "i18next-browser-languagedetector": "^8.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^15.4.1", "react-router-dom": "^6.22.0", "react-scripts": "^5.0.1", "react-scroll": "^1.8.9", + "typescript": "^5.8.2", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/public/img/cinetour.png b/public/img/cinetour.png new file mode 100644 index 0000000..b65bff9 Binary files /dev/null and b/public/img/cinetour.png differ diff --git a/public/img/docker.png b/public/img/docker.png new file mode 100644 index 0000000..4fe4ed6 Binary files /dev/null and b/public/img/docker.png differ diff --git a/public/img/gauss.jpg b/public/img/gauss.jpg new file mode 100644 index 0000000..69cb465 Binary files /dev/null and b/public/img/gauss.jpg differ diff --git a/public/img/git.png b/public/img/git.png new file mode 100644 index 0000000..2ef3ff9 Binary files /dev/null and b/public/img/git.png differ diff --git a/public/img/kubernetes.png b/public/img/kubernetes.png new file mode 100644 index 0000000..efdc0d2 Binary files /dev/null and b/public/img/kubernetes.png differ diff --git a/src/App.js b/src/App.js index 2c7238b..e7b8e1d 100644 --- a/src/App.js +++ b/src/App.js @@ -3,6 +3,7 @@ import React from "react"; import { BrowserRouter as Router, Route, Routes } from "react-router-dom"; import Home from "./Pages/Home/Homescreen"; import Navbar from "./Pages/Home/Navbar"; +import "./i18n"; function App() { return ( diff --git a/src/Pages/Home/AboutMe.jsx b/src/Pages/Home/AboutMe.jsx index 917195b..b261809 100644 --- a/src/Pages/Home/AboutMe.jsx +++ b/src/Pages/Home/AboutMe.jsx @@ -1,4 +1,8 @@ +import { useTranslation } from "react-i18next"; + export default function AboutMe() { + const { t } = useTranslation(); + return (
@@ -6,13 +10,13 @@ export default function AboutMe() {
-

À propos

-

À propos de moi

+

{t('about.title')}

+

{t('about.heading')}

- Alternant en troisième année d'école d'ingénieur à Polytech Lyon en Informatique en alternance à WORLDLINE, occupant le poste d'ingénieur SRE/OPS. + {t('about.description1')}

- Passionné d’informatique, je suis à la recherche d’une mobilité à l'étranger pour développer mes compétences et contribuer à un projet d'entreprise qu’il soit orienté Infrastructure, Développement, OPS, Bases de Données ... + {t('about.description2')}

diff --git a/src/Pages/Home/ContactMe.jsx b/src/Pages/Home/ContactMe.jsx index 0310b52..8d24a04 100644 --- a/src/Pages/Home/ContactMe.jsx +++ b/src/Pages/Home/ContactMe.jsx @@ -1,16 +1,19 @@ +import { useTranslation } from "react-i18next"; + export default function ContactMe() { + const { t } = useTranslation(); + return (
-

Rentrer en Contact

-

Contactez Moi

+

{t('contact.title')}

+

{t('contact.heading')}

- Si vous voulez me contacter, vous pouvez m'envoyer un mail à l'adresse - email suivante : + {t('contact.description1')}

thibaut.alessi@free.fr

- Ou bien directement par LinkedIn en bas de page. + {t('contact.description2')}

diff --git a/src/Pages/Home/Footer.jsx b/src/Pages/Home/Footer.jsx index 43bc8ec..b409f7f 100644 --- a/src/Pages/Home/Footer.jsx +++ b/src/Pages/Home/Footer.jsx @@ -1,13 +1,25 @@ import { Link } from "react-scroll"; import React from "react"; +import { useTranslation } from "react-i18next"; function Footer() { + const { t } = useTranslation(); + return (